/* ATLAS Rails production foundation */

@font-face { font-family:"JetBrains Mono"; src:url("/fonts/JetBrainsMono-Variable.woff2") format("woff2-variations"), url("/fonts/JetBrainsMono-Variable.woff2") format("woff2"); font-weight:100 800; font-style:normal; font-display:swap; }

:root { --bg:#0d1211; --font:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace; --panel:#141b19; --panel-2:#19221f; --line:#2b3834; --text:#edf2ef; --muted:#91a19b; --accent:#f5c531; --amber:#e0b352; }
*{box-sizing:border-box} button,input,select,textarea{font:inherit;color:inherit} body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font)} a{color:var(--accent)}.app-shell{display:grid;grid-template-columns:280px 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;background:#0a0f0e;border-right:1px solid var(--line);padding:24px 16px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px}.brand-mark{display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--accent);border-radius:10px;color:var(--accent);font-family:var(--font);font-size:22px}.brand strong,.brand small{display:block}.brand small{color:var(--muted);font-size:11px}.sidebar nav{margin-top:34px;display:grid;gap:5px;flex:1;min-height:0;overflow-y:auto}.nav-label{margin:22px 12px 8px;color:#60706a;font-size:10px;letter-spacing:.15em;text-transform:uppercase}.nav-item{display:flex;align-items:center;gap:12px;padding:10px 12px;color:var(--muted);text-decoration:none;border-radius:9px}.nav-item:hover,.nav-item.active{background:var(--panel-2);color:var(--text)}.nav-item.active{box-shadow:inset 2px 0 var(--accent)}.nav-icon{width:20px;color:var(--accent)}.sidebar-footer{margin-top:auto;display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px;padding:12px}.secure-dot,.pulse,.status-dot{width:8px;height:8px;border-radius:99px;background:#79c98d;box-shadow:0 0 12px #79c98d88}.main-content{min-width:0}.topbar{height:72px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 30px;position:sticky;top:0;background:#0d1211e8;backdrop-filter:blur(14px);z-index:4}.assistant-state{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:0 10px;text-decoration:none;color:inherit}.assistant-state .pulse{grid-row:1/3}.assistant-state small{color:var(--muted)}.pulse.warning{background:var(--amber);box-shadow:0 0 12px #d9ba7888}.pulse.critical{background:#d37878;box-shadow:0 0 12px #d3787888}.top-actions{display:flex;align-items:center;gap:16px;color:var(--muted)}.top-actions .secondary-link{font-size:13px;gap:5px}.top-actions .secondary-link small{display:block;color:var(--muted);font-size:11px;font-weight:400}.text-button{background:none;border:0;color:var(--accent);cursor:pointer;font-size:13px;font-weight:700}.menu-button{display:none;background:none;border:0;color:var(--text);font-size:20px;min-width:44px;min-height:44px}.back-button{display:none;background:none;border:0;color:var(--text);font-size:26px;line-height:1;min-width:44px;min-height:44px}.back-button:not(.is-hidden){display:flex;align-items:center;justify-content:center}.back-button.is-hidden{display:none!important}.sidebar-close{display:none;background:none;border:0;color:var(--muted);font-size:24px;min-width:44px;min-height:44px;margin-left:auto;cursor:pointer}.hero-panel,.module-header{margin:30px;padding:32px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(135deg,#17201d,#111715)}.hero-panel{display:flex;justify-content:space-between;gap:24px;align-items:end}.hero-panel h1,.module-header h1{font:400 clamp(28px,4vw,48px)/1.1 var(--font);margin:8px 0}.hero-panel p,.module-header p{color:var(--muted);max-width:720px}.holiday-notice{color:var(--accent);font-size:13px;margin-top:8px}.holiday-notice strong{color:var(--text)}.eyebrow{font-size:11px!important;letter-spacing:.18em;color:var(--accent)!important;margin:0;text-transform:uppercase}.ask-atlas{display:flex;align-items:center;gap:8px;background:#0c1110;border:1px solid var(--line);border-radius:12px;padding:8px 10px}.ask-atlas span{font-size:11px;color:var(--accent);white-space:nowrap}.ask-atlas input{min-width:260px;background:transparent;border:0;color:var(--text);outline:none}.ask-atlas button{border:0;background:var(--accent);border-radius:8px;width:32px;height:32px}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:0 30px 20px}.metric-card,.panel,.data-card,.memory-card,.security-card,.recommendation{border:1px solid var(--line);background:var(--panel);border-radius:14px;padding:20px;min-width:0}.metric-card span,.metric-card small{display:block;color:var(--muted)}.metric-card strong{font:400 27px var(--font);font-size:clamp(19px,5.2vw,27px);display:block;margin:10px 0;overflow-wrap:break-word}.dashboard-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:0 30px 40px}.span-2{grid-column:span 2}.span-3{grid-column:span 3}.panel-heading{display:flex;justify-content:space-between;align-items:start;flex-wrap:wrap;gap:10px 16px;margin-bottom:14px}.panel-heading h2{margin:5px 0;font:400 23px var(--font)}.panel-heading a{color:var(--accent)}.list-row,.integration-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-top:1px solid var(--line)}.list-row small,.integration-row small{display:block;color:var(--muted);margin-top:4px}.score,.large-score{font:400 25px var(--font);color:var(--accent)}.alert-row{border-left:2px solid var(--accent);padding:12px 14px;margin:10px 0;background:#111816;border-radius:0 10px 10px 0}.alert-row.warning{border-color:var(--amber)}.alert-row.high{border-color:#d37878}.alert-row.urgent{border-color:#8a5555;background:#1a1414}.alert-row.high .badge,.alert-row.urgent .badge{color:#f0b8b8;border-color:#8a5555}.alert-row.completed{opacity:.55}.completed-alerts{grid-column:1/-1;border:1px solid var(--line);border-radius:12px;padding:16px;margin-top:10px}.completed-alerts summary{cursor:pointer;color:var(--muted);font-size:13px}.completed-alerts[open] summary{color:var(--text);margin-bottom:10px}.completed-alerts .alert-row:first-of-type{margin-top:10px}.alert-row p{color:var(--muted);margin:6px 0}.goal-row{margin:16px 0}.goal-row>div:first-child{display:flex;justify-content:space-between}.goal-row small{color:var(--muted)}.progress{height:7px;background:#26312e;border-radius:99px;overflow:hidden;margin:9px 0}.progress i{display:block;height:100%;background:var(--accent);border-radius:99px}.connection-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.connection{display:flex;align-items:center;gap:10px;padding:12px;border:1px solid var(--line);border-radius:10px}.connection small{display:block;color:var(--muted)}.status-dot.disconnected{background:#68746f;box-shadow:none}.status-dot.attention{background:var(--amber);box-shadow:0 0 12px #d9ba7888}.status-dot.unavailable{background:#d37878;box-shadow:none}.module-content{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:0 30px 40px}.module-content>.list-row,.module-content>.integration-row,.module-content>.alert-row,.module-content>.recommendation,.module-content>.notice-box{grid-column:1/-1}.data-card dl:not(.detail-list){display:grid;grid-template-columns:1fr auto;gap:10px;margin:18px 0 0}.data-card dt{color:var(--muted)}.data-card dd{margin:0}.badge{display:inline-block;padding:4px 8px;border:1px solid var(--line);border-radius:99px;color:var(--accent);font-size:10px;text-transform:uppercase;letter-spacing:.1em}.badge[hidden]{display:none}.memory-card p,.recommendation p{line-height:1.6}.memory-card small{color:var(--muted)}.notice-box{padding:16px;border:1px solid #5f5135;background:#1b1811;color:#d9caa6;border-radius:12px}.security-grid{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.security-card p{color:var(--muted)}.security-card span{float:right;color:var(--accent)}.flash{margin:14px 30px;padding:12px 16px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.flash.alert{border-color:#8a5555}.auth-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at top,#1b2823,#0b100f 55%)}.auth-card{width:min(440px,100%);padding:34px;border:1px solid var(--line);background:#111715;border-radius:18px}.auth-brand{margin-bottom:30px}.auth-card h1{font:400 34px var(--font);margin-bottom:8px}.auth-card>p{color:var(--muted)}.auth-form{display:grid;gap:12px;margin-top:24px}.auth-form input{width:100%;background:#0b100f;border:1px solid var(--line);border-radius:10px;padding:14px;color:var(--text)}.primary-button{border:0;border-radius:10px;padding:14px;background:var(--accent);color:#0c120f;font-weight:700;cursor:pointer}.auth-link{text-align:center;font-size:13px}.auth-link a{color:var(--accent)}.form-errors{padding:12px;background:#251515;border:1px solid #733;border-radius:10px;color:#eabbbb}.form-warning{padding:12px;background:#1b1811;border:1px solid #5f5135;border-radius:10px;color:#d9caa6;margin-bottom:10px}.quick-add-row-duplicate{border-left:3px solid var(--amber);padding-left:12px}.empty-state{color:var(--muted)}
@media(min-width:1001px){.metric-grid.cols-5{grid-template-columns:repeat(5,1fr)}.metric-grid.cols-6{grid-template-columns:repeat(6,1fr)}}
@media(max-width:1000px){.metric-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid,.module-content{grid-template-columns:1fr 1fr}.span-2{grid-column:span 2}.span-3{grid-column:1/-1}.connection-grid{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.app-shell{display:block}.sidebar{position:fixed;left:-270px;z-index:20;width:250px;transition:left .2s}.sidebar.open{left:0}.menu-button{display:flex;align-items:center;justify-content:center}.sidebar-close{display:flex;align-items:center;justify-content:center}.topbar{padding:0 18px}.top-actions{gap:8px}.assistant-state strong,.assistant-state small{display:none}.notification-indicator span,.notification-indicator small{display:none}.top-actions .secondary-link small{display:none}.top-actions .secondary-link span{display:block;max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hero-panel{margin:18px;display:block;padding:22px}.ask-atlas{margin-top:22px}.ask-atlas input{min-width:0;width:100%}.metric-grid,.dashboard-grid,.module-content{margin-left:18px;margin-right:18px;grid-template-columns:1fr}.span-2,.span-3{grid-column:auto}.metric-grid{grid-template-columns:1fr 1fr}.metric-grid .metric-card:last-child:nth-child(odd){grid-column:1/-1}.connection-grid,.security-grid{grid-template-columns:1fr}.module-header{margin:18px;padding:22px}.stretch-list-row{display:block}.stretch-item-actions{margin-top:10px;padding-top:0}}

.module-header{display:flex;justify-content:space-between;align-items:end;gap:20px}.primary-link,.secondary-link{display:inline-flex;align-items:center;justify-content:center;border-radius:10px;padding:11px 14px;text-decoration:none;font-weight:700}.primary-link{background:var(--accent);color:#0c120f}.secondary-link{border:1px solid var(--line);color:var(--accent);background:#0c1110}.header-actions,.card-actions,.form-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.providentia-grid{align-items:start}.goal-card h3 a{color:var(--text);text-decoration:none}.goal-card h3 a:hover{color:var(--accent)}.goal-card p{color:var(--muted);line-height:1.5}.goal-card.completed-goal{border-color:var(--accent)}.card-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.card-actions{border-top:1px solid var(--line);margin-top:18px;padding-top:14px}.card-actions a:not(.primary-link){color:var(--accent)}.status-pill{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:99px;padding:4px 8px;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.08em}.status-pill.on-track,.status-pill.ahead-of-schedule,.status-pill.completed{border-color:var(--accent);color:var(--accent)}.status-pill.behind-schedule,.status-pill.overdue,.status-pill.failed{border-color:#8a5555;color:#f0b8b8}.status-pill.cancelled,.status-pill.partial{border-color:var(--amber);color:var(--amber)}.status-pill.no-target-date{border-color:var(--amber);color:var(--amber)}.status-pill.healthy{border-color:#79c98d;color:#79c98d}.status-pill.warning{border-color:var(--amber);color:var(--amber)}.status-pill.critical{border-color:#8a5555;color:#f0b8b8}.big-progress{height:12px;margin:0 0 22px}.detail-list{display:grid;grid-template-columns:minmax(170px,1fr) auto;gap:14px 20px;margin:0}.detail-list dt{color:var(--muted)}.detail-list dd{margin:0;text-align:right}.negative-amount{color:#f0b8b8}.notes-body,.recommendation-copy{color:var(--muted);line-height:1.7;white-space:pre-wrap}.danger-panel{border-color:#5d3333}.danger-button{width:100%;border:1px solid #8a5555;background:#2a1515;color:#f0b8b8;border-radius:10px;padding:12px;font-weight:700;cursor:pointer}.link-button{display:inline-flex;align-items:center;justify-content:center;border:1px solid #8a5555;background:#2a1515;color:#f0b8b8;border-radius:10px;padding:11px 14px;font-weight:700;font:inherit;cursor:pointer}.link-button:hover{background:#3a1a1a}.form-shell{margin:0 30px 40px}.atlas-form{border:1px solid var(--line);background:var(--panel);border-radius:14px;padding:22px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.field{display:grid;gap:7px}.field.span-2{grid-column:span 2}.field label{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.field input,.field select,.field textarea{width:100%;background:#0b100f;border:1px solid var(--line);border-radius:10px;padding:12px;color:var(--text);font:inherit}.field textarea{resize:vertical}.atlas-form .form-errors{margin-bottom:18px}.atlas-form .form-errors ul{margin:8px 0 0;padding-left:20px}.form-actions{margin-top:18px}.form-actions .primary-button{width:auto}.button_to{margin:0}.bulk-account-bar{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;margin-bottom:22px}.bulk-account-bar .field{flex:0 1 280px}
@media(max-width:760px){.module-header{display:block}.module-header .primary-link,.module-header .secondary-link{margin-top:18px}.form-shell{margin:0 18px 32px}.form-grid{grid-template-columns:1fr}.field.span-2{grid-column:auto}.detail-list{grid-template-columns:1fr}.detail-list dd{text-align:left}.recovery-code-list{grid-template-columns:1fr}}
.inline-filter{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.inline-filter input,.compact-form input,.compact-form select{background:#0b100f;border:1px solid var(--line);border-radius:10px;padding:10px;color:var(--text)}.checkbox-field{align-content:end}.checkbox-field input{width:auto}
.module-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:-16px 30px 24px}.module-tabs a{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#0c1110;color:var(--accent);text-decoration:none;font-weight:700}.module-tabs a:hover{border-color:var(--accent);color:var(--text)}.filter-bar{margin:0 30px 24px}.compact-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.field select[multiple]{min-height:118px}
.status-dot.not_connected,.status-dot.disabled,.status-dot.revoked{background:#68746f;box-shadow:none}.status-dot.pending,.status-dot.degraded{background:var(--amber);box-shadow:0 0 12px #d9ba7888}.status-dot.failed{background:#d37878;box-shadow:none}.status-dot.syncing{background:#9ab7d7;box-shadow:0 0 12px #9ab7d788}
.notification-indicator{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:99px;padding:7px 10px;color:var(--accent);text-decoration:none;background:#0c1110;font-size:13px}.notification-indicator span{font-weight:700}.notification-indicator strong{font:700 13px/1 var(--font)}.notification-indicator small{color:var(--muted);font-size:11px;font-weight:400}.notification-indicator.urgent{border-color:#8a5555;color:#f0b8b8}.print-friendly{break-inside:auto}@media print{.sidebar,.topbar,.module-header .header-actions,.form-shell{display:none}.app-shell{display:block}.module-content,.dashboard-grid,.metric-grid{display:block;margin:0}.data-card,.panel{break-inside:avoid;margin:0 0 14px;border-color:#bbb;color:#111;background:#fff}}
.topbar-search{display:flex;align-items:center;gap:8px;min-width:min(360px,32vw);background:#0b100f;border:1px solid var(--line);border-radius:12px;padding:7px}.topbar-search input[type=search]{min-width:0;width:100%;background:transparent;border:0;color:var(--text);outline:none}.topbar-search input[type=submit]{width:auto;border:0;background:var(--accent);color:#0c120f;border-radius:8px;padding:8px 10px;font-weight:700;cursor:pointer}.checkbox-row{display:flex;align-items:center;gap:8px;color:var(--muted)}.checkbox-row input{width:auto}.search-layout{align-items:start}.search-sidebar{grid-column:span 1}.search-result{padding:16px 0;border-top:1px solid var(--line)}.search-result h3{margin:8px 0 4px}.search-result h3 a{color:var(--text);text-decoration:none}.search-result h3 a:hover{color:var(--accent)}.search-result p{color:var(--muted);line-height:1.6}.search-result-heading{display:flex;align-items:start;justify-content:space-between;gap:16px}.compact-stack{display:grid;gap:10px;margin:12px 0 18px}.compact-stack input[type=text]{background:#0b100f;border:1px solid var(--line);border-radius:10px;padding:10px;color:var(--text)}.saved-search-row{border-top:1px solid var(--line);padding:12px 0}.saved-search-row a,.suggestion-link,.context-links a{color:var(--accent);text-decoration:none}.saved-search-row small{display:block;color:var(--muted);margin:4px 0}.suggestion-link{display:block;padding:8px 0}.context-links{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.context-links a{border:1px solid var(--line);border-radius:99px;padding:4px 8px;font-size:12px}.search-filter .checkbox-row{align-self:center}@media(max-width:900px){.topbar-search{display:none}.search-result-heading{display:block}}
@media(max-width:1300px){.topbar-search{min-width:0;flex:0 1 220px}.assistant-state small{display:none}.top-actions{gap:10px}.top-actions .secondary-link small{display:none}}
.activity-layout{align-items:start}.activity-group{border-top:1px solid var(--line);padding-top:14px;margin-top:14px}.activity-group h3{font:400 20px var(--font);margin:0 0 10px}.activity-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}.activity-item{display:flex;justify-content:space-between;gap:16px;border:1px solid var(--line);border-radius:12px;padding:14px;background:#101614}.activity-item.unviewed{box-shadow:inset 3px 0 var(--accent)}.activity-item.critical{border-color:#8a5555}.activity-title{display:block;color:var(--text);font-weight:700;margin:8px 0 4px;text-decoration:none}.activity-title:hover{color:var(--accent)}.activity-item p{color:var(--muted);margin:6px 0;line-height:1.5}.activity-actions{display:flex;align-items:start;gap:8px;flex-wrap:wrap;justify-content:end}.activity-filter .checkbox-row{align-self:center}@media(max-width:760px){.activity-item{display:block}.activity-actions{justify-content:start;margin-top:12px}}
.review-grid{align-items:start}.review-grid .data-card h2 a{color:var(--text);text-decoration:none}.review-grid .data-card h2 a:hover{color:var(--accent)}.review-grid .data-card>p{color:var(--muted);line-height:1.6}.review-grid .compact-form{margin-top:14px}.review-grid .compact-form textarea{background:#0b100f;border:1px solid var(--line);border-radius:10px;padding:12px;color:var(--text);font:inherit;resize:vertical}.review-grid .compact-form input[type=number],.review-grid .compact-form input[type=text]{background:#0b100f;border:1px solid var(--line);border-radius:10px;padding:12px;color:var(--text)}
.exchange-grid{align-items:start}.exchange-grid .data-card h2 a,.module-content .data-card h2 a{color:var(--text);text-decoration:none}.exchange-grid .data-card h2 a:hover,.module-content .data-card h2 a:hover{color:var(--accent)}.exchange-grid .data-card>p,.module-content .data-card>p{color:var(--muted);line-height:1.6}.data-card small{color:var(--muted)}.data-card .list-row span:not(.badge){color:var(--muted);text-align:right}.atlas-form input[type=file]{padding:10px}.header-actions form{display:inline-flex}.secondary-link[type=submit]{cursor:pointer}
.conversation-history{align-items:start}
.main-content.chat-layout{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden}
.chat-shell{flex:1;min-height:0;display:flex;overflow:hidden}
.chat-history{flex:0 0 280px;width:280px;border-right:1px solid var(--line);background:#0a0f0e;display:flex;flex-direction:column;overflow:hidden}
.chat-history-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px;border-bottom:1px solid var(--line)}
.chat-new-btn{flex:1;min-width:0;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:10px;padding:10px;color:var(--accent);text-decoration:none;font-size:13px;background:#0c1110}
.chat-history-close{display:none;background:none;border:0;color:var(--muted);font-size:22px;min-width:32px;min-height:32px;cursor:pointer}
.chat-history-list{flex:1;min-height:0;overflow-y:auto;padding:8px;display:grid;align-content:start;gap:3px}
.chat-history-item{display:grid;align-content:start;gap:2px;padding:10px 12px;border-radius:10px;color:var(--text);text-decoration:none;overflow:hidden}
.chat-history-item:hover,.chat-history-item.active{background:var(--panel-2)}
.chat-history-title{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-history-meta{font-size:11px;color:var(--muted)}
.chat-history-all{margin:6px 14px 14px;font-size:12px;color:var(--accent);text-decoration:none}
.chat-main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}
.chat-header{display:flex;align-items:center;gap:10px;padding:12px 20px;border-bottom:1px solid var(--line);flex:0 0 auto}
.chat-history-toggle{display:none;background:none;border:0;color:var(--text);font-size:18px;min-width:36px;min-height:36px;cursor:pointer}
.chat-header-title{flex:1;min-width:0;display:grid;gap:1px}
.chat-header-title strong{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-header-title small{color:var(--muted);font-size:11px}
.chat-menu{position:relative}
.chat-menu summary{list-style:none;cursor:pointer;width:36px;height:36px;display:grid;place-items:center;border-radius:8px;color:var(--muted);font-size:18px}
.chat-menu summary::-webkit-details-marker{display:none}
.chat-menu[open] summary{background:var(--panel-2);color:var(--text)}
.chat-menu-panel{position:absolute;right:0;top:44px;width:min(340px,88vw);border:1px solid var(--line);background:var(--panel);border-radius:14px;padding:16px;display:grid;grid-template-columns:minmax(0,1fr);gap:16px;z-index:6;max-height:70vh;overflow-y:auto;overflow-x:hidden;box-shadow:0 12px 30px rgba(0,0,0,.4)}
.chat-menu-section{display:grid;gap:8px;min-width:0;border-top:1px solid var(--line);padding-top:14px}
.chat-menu-section:first-child{border-top:0;padding-top:0}
.chat-menu-section h3{margin:0;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.chat-menu-section .card-actions{border-top:0;margin-top:0;padding-top:0}
.chat-menu-section .compact-form{grid-template-columns:minmax(0,1fr);margin-top:0}
.chat-menu-section .compact-form input{width:100%;min-width:0}
.chat-menu-section .detail-list{grid-template-columns:1fr;gap:0;font-size:12px}
.chat-menu-section .detail-list dt{margin-top:8px;color:var(--muted)}
.chat-menu-section .detail-list dt:first-child{margin-top:0}
.chat-menu-section .detail-list dd{text-align:left;overflow-wrap:anywhere}
.chat-messages{flex:1;min-height:0;overflow-y:auto;padding:20px}
.chat-messages-inner{max-width:820px;margin:0 auto;display:grid;gap:22px}
.chat-message{display:flex}
.chat-message.user{justify-content:flex-end}
.chat-message.assistant{justify-content:flex-start}
.chat-bubble{min-width:0}
.chat-message.user .chat-bubble{max-width:75%;background:var(--panel-2);border:1px solid var(--line);border-radius:16px;padding:12px 16px}
.chat-message.assistant .chat-bubble{width:100%;padding:2px 0}
.chat-bubble-label{display:flex;align-items:center;gap:7px;margin-bottom:8px;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.chat-bubble-label .accent-dot{width:6px;height:6px;border-radius:99px;background:var(--accent);flex:0 0 auto}
.chat-bubble-content{line-height:1.7;overflow-wrap:anywhere}
.chat-bubble-content p{margin:0 0 12px}
.chat-bubble-content p:last-child{margin-bottom:0}
.chat-bubble-content pre{overflow:auto;border:1px solid var(--line);border-radius:10px;padding:12px;background:#0b100f;margin:12px 0}
.chat-bubble-content code{background:#0b100f;border:1px solid var(--line);border-radius:6px;padding:2px 5px}
.chat-bubble-content ul,.chat-bubble-content ol{margin:0 0 12px;padding-left:22px}
.chat-bubble-content blockquote{margin:0 0 12px;padding-left:14px;border-left:2px solid var(--line);color:var(--muted)}
.chat-message[data-status="queued"] .chat-bubble-content,.chat-message[data-status="processing"] .chat-bubble-content{color:var(--muted);animation:chat-pulse 1.4s ease-in-out infinite}
@keyframes chat-pulse{0%,100%{opacity:.5}50%{opacity:1}}
.chat-bubble-meta{margin-top:10px}
.chat-error{margin-top:10px;padding:10px 12px;border:1px solid #8a5555;background:#241414;border-radius:10px;color:#f0b8b8;font-size:13px}
.chat-details,.chat-sources{margin-top:10px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#101614}
.chat-details summary,.chat-sources summary{cursor:pointer;font-size:12px;color:var(--muted)}
.chat-details[open] summary,.chat-sources[open] summary{color:var(--text);margin-bottom:10px}
.chat-details p{margin:6px 0;color:var(--muted);line-height:1.5}
.chat-source-item{padding:10px 0;border-top:1px solid var(--line)}
.chat-source-item:first-child{border-top:0;padding-top:0}
.chat-source-item strong{display:block;font-size:13px}
.chat-source-item small{color:var(--muted);display:block;margin:2px 0 6px}
.chat-source-item p{color:var(--muted);line-height:1.5;margin:0 0 6px}
.chat-bubble-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:10px}
.chat-bubble-actions button,.chat-bubble-actions a{background:none;border:0;padding:0;margin:0;color:var(--muted);font-size:12px;cursor:pointer;text-decoration:none}
.chat-bubble-actions button:hover,.chat-bubble-actions a:hover{color:var(--accent)}
.chat-composer{flex:0 0 auto;border-top:1px solid var(--line);padding:14px 20px 18px;background:var(--bg)}
.chat-composer-inner{max-width:820px;margin:0 auto}
.chat-options{margin-bottom:10px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#101614}
.chat-options summary{cursor:pointer;font-size:12px;color:var(--muted)}
.chat-options[open] summary{color:var(--text);margin-bottom:10px}
.chat-input-row{display:flex;align-items:flex-end;gap:10px;border:1px solid var(--line);border-radius:18px;background:#0b100f;padding:8px 8px 8px 16px}
.chat-input-row textarea{flex:1;min-width:0;background:none;border:0;color:var(--text);font:inherit;resize:none;max-height:200px;overflow-y:auto;line-height:1.5;padding:8px 0}
.chat-input-row textarea:focus{outline:0}
.chat-send-btn{flex:0 0 auto;width:38px;height:38px;border-radius:99px;border:0;background:var(--accent);color:#0c120f;font-weight:700;font-size:16px;cursor:pointer;display:grid;place-items:center}
.chat-disclosure{margin:10px 2px 0;font-size:11px;color:var(--muted);text-align:center}
.chat-layout .module-tabs{margin:16px 30px 0;flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px}
.chat-layout .module-tabs a{flex:0 0 auto}
.chat-history-search{padding:12px 14px;border-bottom:1px solid var(--line)}
.chat-history-search input[type="search"]{width:100%;background:#0b100f;border:1px solid var(--line);border-radius:10px;padding:10px;color:var(--text);font:inherit}
.chat-history-filters{margin-top:8px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:#101614}
.chat-history-filters summary{cursor:pointer;font-size:12px;color:var(--muted)}
.chat-history-filters[open] summary{color:var(--text);margin-bottom:8px}
.chat-history-filters .form-grid{grid-template-columns:1fr;gap:8px;margin-bottom:8px}
.chat-history-list .empty-state{padding:14px}
.chat-landing{flex:1;min-height:0;overflow-y:auto;display:flex;align-items:safe center;justify-content:center;padding:40px 20px}
.chat-landing-inner{max-width:680px;width:100%}
.chat-landing-inner h1{font:400 clamp(24px,3vw,34px)/1.2 var(--font);margin:0 0 20px;text-align:center}
.chat-landing-inner .chat-options{margin-bottom:10px}
.chat-suggestions{margin-top:28px;display:grid;gap:20px}
.chat-suggestion-group h3{margin:0 0 8px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.chat-suggestion-chip{display:block;width:100%;text-align:left;background:#101614;border:1px solid var(--line);border-radius:10px;padding:12px 14px;color:var(--text);cursor:pointer;margin-bottom:6px;font:inherit;font-size:13px}
.chat-suggestion-chip:hover{border-color:var(--accent);color:var(--accent)}
@media(max-width:760px){
.chat-landing{padding:24px 16px}
}
@media(max-width:1000px){
.chat-history{position:fixed;top:0;left:-300px;bottom:0;width:280px;z-index:20;transition:left .2s}
.chat-history.open{left:0}
.chat-history-toggle{display:flex;align-items:center;justify-content:center}
.chat-history-close{display:flex;align-items:center;justify-content:center}
}
@media(max-width:760px){
.chat-layout .module-tabs{margin:12px 14px 0}
.chat-header{padding:10px 14px}
.chat-messages{padding:14px}
.chat-composer{padding:10px 14px 14px}
.chat-message.user .chat-bubble{max-width:88%}
}
.property-listing-grid .data-card h2 a{color:var(--text);text-decoration:none}.property-listing-grid .data-card h2 a:hover{color:var(--accent)}.comparison-card{overflow:auto}.comparison-table{width:100%;border-collapse:collapse;min-width:720px}.comparison-table th,.comparison-table td{border-top:1px solid var(--line);padding:12px;text-align:left;vertical-align:top}.comparison-table th{color:var(--muted);font-weight:600}.comparison-table a{color:var(--accent)}.qr-code{background:#fff;padding:14px;border-radius:10px;width:fit-content;margin:12px 0}.recovery-code-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;list-style:none;padding:0;margin:0 0 18px}.recovery-code-list code{display:block;background:#0b100f;border:1px solid var(--line);border-radius:8px;padding:10px;text-align:center;letter-spacing:.05em}
.pagination{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 0 0;margin-top:6px;border-top:1px solid var(--line)}.pagination-count{color:var(--muted);font-size:12px}.pagination-links{display:flex;gap:10px}
.table-shell,.table-wrap,.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 0 14px}.table-shell table,.table-wrap table,.table-scroll table,table.data-table{width:100%;border-collapse:collapse;min-width:480px}.table-shell th,.table-shell td,.table-wrap th,.table-wrap td,.table-scroll th,.table-scroll td,table.data-table th,table.data-table td{border-top:1px solid var(--line);padding:10px 12px;text-align:left;vertical-align:top}.table-shell th,.table-wrap th,.table-scroll th,table.data-table th{color:var(--muted);font-weight:600}
.session-exercise .card-heading{align-items:center}.prior-performance{color:var(--accent);font-size:13px;line-height:1.5;margin:4px 0 16px}.set-list{display:grid;gap:8px;margin-bottom:14px}.set-row{display:grid;grid-template-columns:26px 112px 1fr 1fr auto auto;gap:8px;align-items:center;padding:8px;border:1px solid var(--line);border-radius:10px;background:#0f1513}.set-row-completed{opacity:.62;background:#0d1211}.set-number{color:var(--muted);text-align:center;font-size:12px}.set-tag,.set-weight,.set-reps{background:#0b100f;border:1px solid var(--line);border-radius:8px;padding:10px;color:var(--text);font:inherit;min-width:0;min-height:44px}.set-complete-button{min-width:56px;min-height:44px;border:0;border-radius:8px;background:var(--accent);color:#0c120f;font-weight:700;cursor:pointer}.set-row-completed .set-complete-button{background:transparent;border:1px solid var(--accent);color:var(--accent)}.set-delete-button{min-width:44px;min-height:44px;border:1px solid var(--line);background:transparent;color:var(--muted);border-radius:8px;cursor:pointer;font-size:16px}
.rest-timer-bar{display:flex;align-items:center;gap:14px;justify-content:center;position:sticky;bottom:0;padding:14px;margin:0 30px 20px;border:1px solid var(--accent);border-radius:14px;background:#101815;z-index:5}.rest-timer-bar[hidden]{display:none}.rest-timer-bar strong{font:400 24px var(--font);color:var(--accent);min-width:64px;text-align:center}.rest-timer-overlay{display:grid;place-items:center;gap:22px;position:fixed;inset:0;background:#0a0f0ef2;z-index:30;text-align:center}.rest-timer-overlay[hidden]{display:none}.rest-timer-display-large{font:400 min(22vw,120px) var(--font);color:var(--accent)}.rest-timer-overlay-actions{display:flex;gap:12px}
@media(max-width:760px){.set-row{grid-template-columns:22px 96px 1fr 1fr auto auto;gap:6px}.rest-timer-bar{margin:0 0 14px;border-radius:0}}
#sync-status{white-space:nowrap}
.sidebar nav{scrollbar-width:thin;scrollbar-color:#2b3834 transparent}.sidebar nav::-webkit-scrollbar{width:6px}.sidebar nav::-webkit-scrollbar-track{background:transparent}.sidebar nav::-webkit-scrollbar-thumb{background:#2b3834;border-radius:99px}.sidebar nav::-webkit-scrollbar-thumb:hover{background:#3a4844}
.habit-color-gold{--habit-color:var(--accent);--habit-color-soft:#f5c53129}.habit-color-amber{--habit-color:var(--amber);--habit-color-soft:#e0b35229}.habit-color-green{--habit-color:#79c98d;--habit-color-soft:#79c98d29}.habit-color-blue{--habit-color:#9ab7d7;--habit-color-soft:#9ab7d729}.habit-color-teal{--habit-color:#6dd0c4;--habit-color-soft:#6dd0c429}.habit-color-violet{--habit-color:#a98fd6;--habit-color-soft:#a98fd629}.habit-color-rose{--habit-color:#d37878;--habit-color-soft:#d3787829}.habit-color-gray{--habit-color:#91a19b;--habit-color-soft:#91a19b29}
.habit-card-title{display:flex;align-items:center;gap:12px}.habit-icon{width:40px;height:40px;min-width:40px;border-radius:10px;display:grid;place-items:center;font-size:19px;background:var(--habit-color-soft);border:1px solid var(--habit-color)}.habit-progress-label{color:var(--muted);font-size:13px}
.habit-heatmap{display:grid;grid-template-columns:repeat(auto-fill,minmax(13px,1fr));gap:4px;margin:16px 0}.habit-dot{aspect-ratio:1;border-radius:4px;background:#1c2622;border:1px solid var(--line)}.habit-dot-partial{background:var(--habit-color);opacity:max(.2,var(--cell-ratio,.45));border-color:var(--habit-color)}.habit-dot-done{background:var(--habit-color);opacity:1;border-color:var(--habit-color)}.habit-dot-today{box-shadow:0 0 0 2px var(--text) inset}
.habit-widget-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}.habit-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:10px}.habit-row-complete{background:var(--habit-color-soft);border-color:var(--habit-color)}.habit-row-icon{width:34px;height:34px;min-width:34px;border-radius:9px;display:grid;place-items:center;font-size:16px;background:var(--habit-color-soft);border:1px solid var(--habit-color)}.habit-row-info{flex:1;min-width:0}.habit-row-info strong{display:block;font-size:14px}.habit-row-info .habit-progress-label{display:block;margin-top:2px}.habit-progress-label.is-complete{color:var(--habit-color);font-weight:600}
.habit-mini-heatmap{display:flex;gap:3px;margin-top:5px}.habit-mini-heatmap span{width:10px;height:10px;border-radius:3px;background:#1c2622;border:1px solid var(--line)}.habit-mini-heatmap span.habit-dot-partial{background:var(--habit-color);opacity:max(.2,var(--cell-ratio,.45));border-color:var(--habit-color)}.habit-mini-heatmap span.habit-dot-done{background:var(--habit-color);opacity:1;border-color:var(--habit-color)}
.habit-log-button{min-width:40px;min-height:40px;border-radius:99px;border:1px solid var(--habit-color);background:rgba(0,0,0,var(--habit-progress,0));color:var(--habit-color);font-weight:700;cursor:pointer;flex-shrink:0;transition:background .2s ease}.habit-log-button-done{background:var(--habit-color);color:#0c120f}.habit-log-button:disabled{cursor:default;opacity:1}
@media(max-width:760px){.habit-heatmap{grid-template-columns:repeat(auto-fill,minmax(11px,1fr))}}
.chip-row{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-block;padding:8px 14px;border:1px solid var(--line);border-radius:99px;color:var(--muted);text-decoration:none;font-size:13px}.chip.active{border-color:var(--accent);color:var(--accent);background:#f5c53114}
.stretch-player{text-align:center;padding:48px 24px}.stretch-player-progress{color:var(--muted);font-size:13px;text-transform:uppercase;letter-spacing:.1em;margin:0}.stretch-player-name{font:400 clamp(28px,5vw,44px)/1.2 var(--font);margin:14px 0 4px}.stretch-player-side{color:var(--accent);min-height:1.2em;margin:0 0 20px}.stretch-player-timer{font:400 min(20vw,96px) var(--font);color:var(--accent);margin:10px 0}.stretch-player .progress{max-width:420px;margin:16px auto}.stretch-player-actions{display:flex;gap:12px;justify-content:center;margin-top:24px}.stretch-player-next{color:var(--muted);margin-top:20px;font-size:13px}
.stretch-player-done{text-align:center;padding:48px 24px}.stretch-player-done .card-actions{justify-content:center;margin-top:18px}
.stretch-player-icon{width:96px;height:96px;margin:6px auto 0;display:block}.stretch-player-cue{color:var(--muted);max-width:480px;margin:0 auto;font-size:14px;line-height:1.5;min-height:1.4em}
.stretch-list-row{align-items:flex-start}.stretch-list-left{display:flex;align-items:center;gap:14px;min-width:0;flex:1}.stretch-icon{width:44px;height:44px;min-width:44px;border:1px solid var(--line);border-radius:10px;background:#0f1513;padding:4px}.stretch-list-info{min-width:0}.stretch-cue{color:var(--muted);font-size:13px;margin:4px 0 0;line-height:1.4}.stretch-item-actions{display:flex;align-items:center;gap:8px;flex-shrink:0;padding-top:2px}.stretch-item-actions .text-button{border:1px solid var(--line);border-radius:8px;width:28px;height:28px}.stretch-item-actions .secondary-link{margin-left:6px}
.list-row-actions{display:flex;align-items:center;gap:8px;flex-shrink:0;flex-wrap:wrap}
.data-card>details>summary{cursor:pointer;font-weight:700;font-size:1.17em;margin:0;color:var(--text)}.data-card>details[open]>summary{margin-bottom:14px}.data-card>details>summary::marker{color:var(--accent)}
.calendar-note{border-top:1px solid var(--line);margin-top:16px;padding-top:14px;color:var(--muted);font-size:13px;line-height:1.6}.calendar-note strong{color:var(--text)}
.cashflow-chart{border:1px solid var(--line);border-radius:14px;padding:20px;background:var(--panel)}.cashflow-chart-bars{display:flex;align-items:flex-end;gap:10px;min-height:220px}.cashflow-bar-col{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:6px}.cashflow-bar-track{width:100%;height:160px;display:flex;align-items:flex-end;background:#0f1513;border-radius:6px}.cashflow-bar{width:100%;background:var(--accent);border-radius:6px 6px 0 0}.cashflow-bar.negative{background:#d37878}.cashflow-bar-col small{color:var(--muted);font-size:11px;white-space:nowrap}.cashflow-bar-col span{color:var(--muted);font-size:11px}.cashflow-chart-line{padding-bottom:10px}.cashflow-svg{width:100%;height:220px}.cashflow-labels{display:flex;justify-content:space-between;margin-top:8px;color:var(--muted);font-size:11px}
@media(max-width:760px){.cashflow-chart-bars{overflow-x:auto}.cashflow-bar-col{min-width:44px}}
.panel-heading.secondary{margin-top:22px}.payment-row{flex-wrap:wrap}.payment-row-value{display:flex;align-items:center;gap:10px}.payment-row-value .badge{color:var(--amber);border-color:var(--amber)}.mark-paid-form{display:flex;align-items:center;gap:8px;flex-basis:100%;justify-content:flex-end}.mark-paid-form select{background:#0b100f;border:1px solid var(--line);border-radius:10px;padding:8px 10px;color:var(--text);accent-color:var(--accent)}.mark-paid-form select:focus{outline:1px solid var(--accent)}.spending-limit-track{flex-basis:100%}.spending-limit-track .progress{margin:6px 0 4px}.spending-limit-track .progress i.over-limit{background:#d37878}.spending-limit-track small{color:var(--muted)}.spending-limit-track small.negative-amount{color:#f0b8b8}.cycle-countdown{color:var(--accent)!important}.debt-plan-actions{display:flex;flex-direction:column;gap:10px;padding:10px 0}

/* --- UI audit 2026-08-06 -------------------------------------------------
   Shared class names that were referenced across views with no rule at all.
   Without a rule, .secondary-button fell through to native UA button chrome
   (a light box under inherited light text, ~1:1 contrast) and .muted/.metric-value
   rendered as plain body text, so intended visual hierarchy was silently lost.
   test/views/css_class_coverage_test.rb fails the build if a new class name is
   used in a view without either a rule here or an entry in its allowlist. */
.secondary-button{display:inline-flex;align-items:center;justify-content:center;appearance:none;-webkit-appearance:none;border:1px solid var(--line);background:#0c1110;color:var(--accent);border-radius:10px;padding:11px 14px;font:inherit;font-weight:700;text-decoration:none;cursor:pointer}
.secondary-button:hover{background:var(--panel-2)}
.form-actions .secondary-button{width:auto}
.muted{color:var(--muted)}
.metric-value{font:400 27px var(--font);font-size:clamp(19px,5.2vw,27px);display:block;margin:10px 0 4px}
.error-box{padding:12px;background:#251515;border:1px solid #733;border-radius:10px;color:#eabbbb;margin:0 0 14px}
.score-badge{display:inline-block;padding:4px 10px;border:1px solid var(--accent);border-radius:99px;color:var(--accent);font-weight:700;font-size:12px}

/* Native submit/button elements need appearance:none or the UA background can
   win over ours -- see the sign-in button rendering with OS chrome previously. */
.primary-button,.danger-button,.link-button{appearance:none;-webkit-appearance:none}

/* Keyboard focus. The app had no :focus-visible rules at all, so focus fell back
   to Chrome's system-blue outline, and the two elements that set outline:none
   (topbar search, chat composer) showed nothing at all. */
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.topbar-search input[type=search]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.chat-input-row textarea:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.ask-atlas input:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}

/* Long unbroken values (env var values, git SHAs, URLs, file paths) must wrap
   inside their container rather than widening the page. */
.detail-list dd,.data-card dd,.panel dd,code{overflow-wrap:anywhere}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}

/* Flex rows (.list-row/.integration-row) and inline-flex pills default their items
   to min-width:auto, so one long unbroken token -- a job class name, an OAuth scope
   URL, a CSV header sample -- pushed the whole page wider than the phone viewport.
   overflow-wrap:anywhere (unlike break-word) also shrinks intrinsic min-content,
   which is what actually lets the flex item narrow. */
.list-row>*,.integration-row>*{min-width:0}
.list-row strong,.list-row small,.integration-row strong,.integration-row small{overflow-wrap:anywhere}
/* The trailing bare <strong> in a .list-row (an amount, a status word, a gram count --
   never wrapped in its own <div>) is a short atomic figure that should never break
   mid-character just because a long label next to it triggered the rule above. Give
   it back a fixed width so the label shrinks/wraps first instead. */
.list-row>strong:last-child,.integration-row>strong:last-child{white-space:nowrap;flex-shrink:0;overflow-wrap:normal}
.primary-link,.secondary-link{max-width:100%;overflow-wrap:anywhere}
pre{white-space:pre-wrap;overflow-wrap:anywhere}
@media(max-width:760px){
  .list-row,.integration-row{flex-wrap:wrap}
  /* A row with a fixed-width trailing amount never needs the fallback above --
     the label alone can always shrink (it wraps its own text via overflow-wrap:anywhere),
     so keeping the row on one line lets the amount stay pinned to the right instead of
     dropping to a line of its own underneath the label. */
  .list-row:has(>strong:last-child),.integration-row:has(>strong:last-child){flex-wrap:nowrap}
}

/* Metric cards are two-up on phones, leaving ~115px for a value that can be a
   ¥-million figure. Trimming card padding and the caption size buys the value
   enough room to stay on one line without collapsing the label/value hierarchy. */
@media(max-width:760px){
  .metric-card{padding:16px}
  .metric-card span,.metric-card small{font-size:12px}
}
/* Below ~380px (iPhone SE and small Androids) two metric columns leave too little
   room for a ¥-million figure, so fall back to one column rather than wrap a number
   mid-digit. At 390px and up, two-up still fits values through 11 characters. */
@media(max-width:379px){
  .metric-grid{grid-template-columns:1fr}
}
/* A source URL cell that was tagged .truncate but never had a rule to truncate with. */
.truncate{max-width:22ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* --- Command Center quick actions --------------------------------------- */
.quick-actions{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0 0}
.quick-action{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:10px;padding:10px 14px;background:#0c1110;color:var(--accent);text-decoration:none;font-weight:700;font-size:13px}
.quick-action:hover{border-color:var(--accent);color:var(--text)}

/* --- Command Center calendar clock -------------------------------------- */
.panel-clock{margin:0;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}

/* --- Mobile density ------------------------------------------------------
   Measured before this change: real content started 1.2-2.1 screens down on
   every module page at 390x844 (/talos was 380px of header plus an 808px
   wrapping tab grid). The header keeps its eyebrow, title and actions; the
   description collapses to two lines with a toggle (added by application.js)
   rather than being removed, and the tab strip scrolls sideways in one row --
   the same treatment .chat-layout .module-tabs already uses. */
/* Hidden by default; only the narrow-viewport rules below reveal it. Declared
   before the media query so the media query wins rather than being overridden. */
.about-toggle{display:none}

@media(max-width:760px){
  .module-header{margin:14px;padding:16px}
  .hero-panel{margin:14px;padding:20px}
  .hero-panel h1,.module-header h1{font-size:clamp(21px,5.6vw,32px);margin:4px 0}
  .module-header .primary-link,.module-header .secondary-link{margin-top:12px;margin-right:8px}
  .module-header .header-actions{display:flex;flex-wrap:wrap;gap:8px}
  .module-header .header-actions .primary-link,.module-header .header-actions .secondary-link{margin-top:12px;margin-right:0}

  .module-tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:-8px 14px 18px;padding-bottom:4px}
  .module-tabs a{flex:0 0 auto;padding:9px 12px;font-size:13px}

  .module-header p.is-collapsible{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .module-header p.is-collapsible.is-expanded{display:block;-webkit-line-clamp:none}
  .about-toggle{display:inline-flex;align-items:center;gap:4px;margin:6px 0 0;padding:0;border:0;background:none;color:var(--accent);font:inherit;font-size:12px;font-weight:700;cursor:pointer}
}
