/* ============================================================
   Meridian design system — Federal IDRE Portal
   Three-tier tokens (see idre-design-system/meridian.tokens.json).
   All class names consumed by js/views.js + js/crm-views.js are
   preserved; this file is presentation-only.
   ============================================================ */

/* ---------- Tier 1 primitives ---------- */
:root{
  --brand-300:#2E6B52; --brand-500:#123B2F; --brand-700:#0C2A21; --brand-900:#071A14;
  --brass-500:#B08D3E; --brass-700:#8A6B2B;
  --n0:#FFFFFF; --n50:#F7F5EF; --n100:#EDEAE0; --n200:#D9D4C6; --n300:#BDB7A7;
  --n500:#6E6A5E; --n700:#3B3931; --n900:#191813;
  --green-50:#E9F2EC; --green-700:#1E5B3C;
  --amber-50:#FBF3DF; --amber-700:#8A5E10;
  --red-50:#FAECEA;   --red-700:#9C2B1F;
  --blue-50:#EAF1F8;  --blue-700:#1D4E7E;
  --violet-50:#F1EDF7;--violet-700:#5B3E8C;
}
/* ---------- Tier 2 semantic (light set) ---------- */
:root{
  --surface-canvas:var(--n50); --surface-raised:var(--n0); --surface-sunken:var(--n100);
  --surface-overlay:var(--n0); --surface-scrim:#19181366;
  --text-primary:var(--n900); --text-secondary:var(--n700); --text-tertiary:var(--n500);
  --text-inverse:var(--n0); --text-on-accent:var(--n0);
  --border-subtle:var(--n200); --border-default:var(--n300); --border-strong:var(--n500);
  --focus-ring:var(--brand-300);
  --action-primary-bg:var(--brand-500); --action-primary-bg-hover:var(--brand-700);
  --action-primary-fg:var(--text-on-accent);
  --accent-bg:var(--brass-500); --accent-fg:var(--brass-700);
  --success-bg:var(--green-50); --success-fg:var(--green-700);
  --warning-bg:var(--amber-50); --warning-fg:var(--amber-700);
  --danger-bg:var(--red-50);   --danger-fg:var(--red-700);
  --info-bg:var(--blue-50);    --info-fg:var(--blue-700);
  --attention-bg:var(--violet-50); --attention-fg:var(--violet-700);
  --sealed-bg:var(--n100); --sealed-fg:var(--n700);
  /* Tier 3 component */
  --radius-input:8px; --radius-card:12px; --radius-chip:999px;
  --row-h:44px; --rail-w:224px; --rail-wc:60px;
  --shadow-1:0 1px 2px #19181314; --shadow-2:0 4px 12px #1918131F; --shadow-3:0 8px 28px #19181329;
  --font-sans:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,"SF Mono",monospace;
}
/* ---------- Tier 2 dark set (not a naive inversion) ---------- */
[data-theme="dark"]{
  --surface-canvas:var(--n900); --surface-raised:#211F19; --surface-sunken:#12110D;
  --surface-overlay:#262420; --surface-scrim:#00000099;
  --text-primary:var(--n50); --text-secondary:var(--n200); --text-tertiary:var(--n300);
  --text-on-accent:var(--n900);
  --border-subtle:#3B3931; --border-default:#4A4840; --border-strong:#6E6A5E;
  --action-primary-bg:var(--brand-300); --action-primary-bg-hover:#3D8266;
  --action-primary-fg:var(--n900);
  --accent-fg:#D9B566; --focus-ring:var(--brass-500);
  --success-bg:#1E5B3C26; --success-fg:#9FD3B4;
  --warning-bg:#8A5E1026; --warning-fg:#E5C46B;
  --danger-bg:#9C2B1F26;   --danger-fg:#F2B8B0;
  --info-bg:#1D4E7E26;    --info-fg:#A9C8E8;
  --attention-bg:#5B3E8C26; --attention-fg:#C6B4E8;
  --sealed-bg:#2B2922; --sealed-fg:var(--n200);
  --shadow-1:0 1px 2px #00000040; --shadow-2:0 4px 12px #00000059; --shadow-3:0 8px 28px #00000073;
}

/* ---------- base ---------- */
*{box-sizing:border-box}
html{font-size:16px}
body{margin:0;font:14px/1.5 var(--font-sans);color:var(--text-primary);background:var(--surface-canvas);-webkit-font-smoothing:antialiased}
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:4px}
h1{font-size:22px;font-weight:700;letter-spacing:-0.01em;margin:0 0 6px}
h2{font-size:15px;font-weight:650;margin:22px 0 8px}
h3{font-size:13px;font-weight:650}
.muted{color:var(--text-tertiary);font-size:12.5px}
.error{color:var(--danger-fg)}
pre{background:var(--n900);color:#d6e2ff;padding:12px;border-radius:10px;overflow:auto;font:12px/1.5 var(--font-mono)}
[data-theme="dark"] pre{background:#0C0B09}

/* ---------- app shell: rail + topbar ---------- */
#app{display:flex;height:100vh;overflow:hidden}
#rail{width:var(--rail-w);flex-shrink:0;background:var(--brand-900);color:#EDEAE0;display:flex;flex-direction:column;padding:12px 8px;transition:width .2s cubic-bezier(0,0,.2,1)}
#rail .rail-brand{display:flex;align-items:center;gap:10px;padding:6px 10px 16px}
#rail .rail-mark{width:32px;height:32px;border-radius:9px;background:var(--accent-bg);color:#191813;font-weight:700;display:grid;place-items:center;font-size:15px;flex-shrink:0}
#rail .rail-word{font-weight:700;font-size:13.5px;letter-spacing:.01em;color:#F7F5EF;white-space:nowrap}
#rail nav{flex:1;display:flex;flex-direction:column;gap:2px;overflow-y:auto}
#rail a{display:flex;align-items:center;gap:11px;padding:8px 11px;border-radius:8px;color:#BDB7A7;text-decoration:none;font-size:13.5px;transition:background .12s,color .12s;white-space:nowrap}
#rail a:hover{background:#ffffff14;color:#F7F5EF}
#rail a.active{background:#ffffff1F;color:#fff;font-weight:600}
#rail a .ri{width:19px;text-align:center;font-size:15px;flex-shrink:0}
#rail .rail-foot{border-top:1px solid #ffffff1A;padding:6px 0 0;font-size:11px;color:#8a857a;white-space:nowrap}
#rail .rail-foot a{display:flex;align-items:center;gap:11px;padding:8px 11px;border-radius:8px;color:#BDB7A7;text-decoration:none;font-size:13.5px}
#rail .rail-foot a:hover{background:#ffffff14;color:#F7F5EF}
#rail .rail-foot .ri{width:19px;text-align:center;font-size:15px;flex-shrink:0}
#rail-toggle{display:none;background:none;border:0;color:inherit;font-size:19px;padding:4px 8px;cursor:pointer;border-radius:8px}
#rail-toggle:hover{background:var(--n100)}
#rail-backdrop{display:none}

#body{flex:1;display:flex;flex-direction:column;min-width:0}
#topbar{height:56px;flex-shrink:0;display:flex;align-items:center;gap:14px;padding:0 18px;background:var(--surface-raised);border-bottom:1px solid var(--border-subtle);z-index:10}
#tenant-chip{display:flex;align-items:center;gap:10px;padding-right:14px;border-right:1px solid var(--border-subtle);align-self:stretch;border-bottom:2px solid var(--accent-bg)}
#tenant-chip .t-avatar{width:29px;height:29px;border-radius:8px;background:var(--brand-500);color:#fff;display:grid;place-items:center;font-size:11.5px;font-weight:700}
[data-theme="dark"] #tenant-chip .t-avatar{background:var(--brand-300);color:#191813}
#tenant-chip .t-name{font-weight:650;font-size:13px}
#gq{flex:1;max-width:460px;height:35px;padding:0 13px;border:1px solid var(--border-subtle);border-radius:var(--radius-input);background:var(--surface-sunken);color:var(--text-primary);font:inherit;font-size:13px}
#gq::placeholder{color:var(--text-tertiary)}
#topbar .spacer{flex:1}
#theme-toggle{width:35px;height:35px;border-radius:8px;border:1px solid transparent;background:none;color:var(--text-secondary);font-size:15px;cursor:pointer}
#theme-toggle:hover{background:var(--surface-sunken)}
#whoami{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--text-secondary)}
#whoami .avatar{width:30px;height:30px;border-radius:50%;background:#2E6B8E;color:#fff;display:grid;place-items:center;font-size:11px;font-weight:650;cursor:pointer}
#whoami a{color:var(--info-fg);text-decoration:none}
.bell{position:relative;width:35px;height:35px;border-radius:8px;border:1px solid transparent;background:none;color:var(--text-secondary);font-size:15px;cursor:pointer}
.bell:hover{background:var(--surface-sunken)}
.bell-n{display:none;position:absolute;top:2px;right:2px;min-width:15px;height:15px;border-radius:8px;background:var(--danger-fg);color:#fff;font-size:9px;font-weight:700;place-items:center;padding:0 3px;line-height:15px;text-align:center}
#view{flex:1;overflow-y:auto;padding:22px 26px;outline:none}
#view > *{max-width:1160px}

/* ---------- status chips (was .badge) ---------- */
.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 10px;border-radius:var(--radius-chip);font-size:11.5px;font-weight:600;background:var(--surface-sunken);color:var(--text-secondary);white-space:nowrap}
.s-closed-paid,.s-determined,.s-active,.s-analyzed,.s-ok,.s-approved,.s-completed,.s-settled-in-negotiation{background:var(--success-bg);color:var(--success-fg)}
.s-rejected,.s-rejected-auto,.s-error,.s-expired,.s-closed-dismissed{background:var(--danger-bg);color:var(--danger-fg)}
.s-payment-pending,.s-pending-approval,.s-pending-docs,.s-analyzed-with-findings,.s-queued,.s-received{background:var(--warning-bg);color:var(--warning-fg)}
.s-initiated,.s-offer-window-open,.s-open,.s-new,.s-in-progress{background:var(--info-bg);color:var(--info-fg)}
.s-in-review,.s-negotiation-tracked,.s-converted,.s-unassigned{background:var(--attention-bg);color:var(--attention-fg)}
.s-offers-sealed,.s-sealed,.s-offers-revealed{background:var(--sealed-bg);color:var(--sealed-fg)}

/* ---------- KPI cards ---------- */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px;margin:14px 0}
.card{background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:var(--radius-card);padding:14px 16px;box-shadow:var(--shadow-1)}
.card .num{font:600 24px/1.2 var(--font-mono);font-variant-numeric:tabular-nums;margin-bottom:6px}
.card .lbl{display:block;margin-bottom:4px}

/* ---------- data tables ---------- */
table{width:100%;border-collapse:collapse;background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:var(--radius-card);overflow:hidden;font-size:13px;box-shadow:var(--shadow-1)}
th{position:sticky;top:0;text-align:left;padding:9px 14px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-secondary);background:var(--surface-sunken);border-bottom:1px solid var(--border-default)}
td{padding:0 14px;height:var(--row-h);border-bottom:1px solid var(--border-subtle);vertical-align:middle;text-align:left}
tbody tr:last-child td{border-bottom:none}
tr.click{cursor:pointer}
tr.click:hover{background:var(--surface-sunken)}
td a{color:var(--info-fg);text-decoration:none}

/* ---------- buttons & actions ---------- */
.actions{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}
button,.button{display:inline-flex;align-items:center;gap:7px;min-height:32px;padding:5px 14px;border-radius:var(--radius-input);border:1px solid transparent;background:var(--action-primary-bg);color:var(--action-primary-fg);font:inherit;font-size:13px;font-weight:600;cursor:pointer;text-decoration:none;transition:background .12s}
button:hover,.button:hover{background:var(--action-primary-bg-hover)}
button.danger{background:var(--danger-fg);color:#fff}
button.mini{min-height:26px;padding:2px 10px;font-size:11.5px;background:var(--surface-raised);color:var(--text-primary);border:1px solid var(--border-default)}
button.mini:hover{background:var(--surface-sunken)}

/* ---------- forms ---------- */
.form,.upload{background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:var(--radius-card);padding:16px 18px;max-width:560px;display:grid;gap:12px;box-shadow:var(--shadow-1);margin:10px 0}
.form label{display:grid;gap:5px;font-size:12.5px;font-weight:550;color:var(--text-secondary)}
input,select{height:36px;padding:0 12px;border:1px solid var(--border-default);border-radius:var(--radius-input);font:inherit;font-size:13px;background:var(--surface-raised);color:var(--text-primary)}
input[type="checkbox"]{height:auto}
input:focus,select:focus{outline:2px solid var(--focus-ring);outline-offset:1px;border-color:transparent}
.upload{align-items:start}

/* ---------- checklists ---------- */
.checklist{list-style:none;border:1px solid var(--border-subtle);border-radius:var(--radius-card);padding:6px 16px;background:var(--surface-raised);margin:6px 0 14px;max-width:640px}
.checklist li{display:flex;align-items:center;gap:9px;padding:8px 0;border-bottom:1px solid var(--border-subtle);font-size:13.5px}
.checklist li:last-child{border-bottom:none}

/* ---------- kanban (pipeline) ---------- */
.pipe-toggle{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-secondary);cursor:pointer;margin:0 0 10px}
.kanban{display:flex;gap:14px;align-items:start;overflow-x:auto;padding-bottom:10px}
.kanban-col{display:flex;flex-direction:column;background:var(--surface-sunken);border-radius:var(--radius-card);padding:12px;min-height:80px;max-height:calc(100vh - 280px);flex:0 0 230px;width:230px}
.kanban-col h3{flex-shrink:0;margin:2px 2px 10px;font-size:12.5px;font-weight:650;display:flex;align-items:center;gap:7px}
.kanban-col-body{overflow-y:auto;min-height:0}
.kanban-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--surface-raised);border:1px solid var(--border-subtle);color:var(--text-secondary);font-size:10.5px;font-weight:700}
.kanban-col.is-terminal{opacity:.72}
.kanban-col.is-terminal h3{color:var(--text-secondary)}
.kanban.hide-empty .kanban-col.is-empty{display:none}
.kanban-card{display:flex;flex-direction:column;gap:3px;background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:9px;padding:9px 11px;margin-bottom:8px;cursor:pointer;font-size:12.5px;box-shadow:var(--shadow-1)}
.kanban-card:hover{border-color:var(--brand-300)}

/* ---------- calendar ---------- */
.cal-group{display:flex;gap:16px;padding:16px 4px;border-bottom:1px solid var(--border-subtle)}
.cal-group:last-child{border-bottom:none}
.cal-date{flex-shrink:0;width:56px;height:56px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--radius-card);background:var(--surface-raised);border:1px solid var(--border-subtle)}
.cal-date .dow{font-size:10px;font-weight:700;letter-spacing:.05em;color:var(--text-tertiary)}
.cal-date .dom{font-size:20px;font-weight:700;color:var(--text-primary);line-height:1.15}
.cal-group.is-today .cal-date{background:var(--accent-bg);border-color:var(--accent-bg)}
.cal-group.is-today .cal-date .dow,.cal-group.is-today .cal-date .dom{color:#191813}
.cal-group.is-overdue .cal-date{background:var(--danger-bg);border-color:var(--danger-fg)}
.cal-group.is-overdue .cal-date .dow,.cal-group.is-overdue .cal-date .dom{color:var(--danger-fg)}
.cal-col{flex:1;min-width:0}
.cal-heading{font-size:13px;font-weight:700;margin-bottom:8px;display:flex;align-items:center;gap:8px;color:var(--text-primary)}
.cal-group.is-overdue .cal-heading{color:var(--danger-fg)}
.cal-rows{display:flex;flex-direction:column;gap:6px}
.cal-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--border-subtle);border-radius:10px;background:var(--surface-raised)}
.cal-item.link{cursor:pointer}
.cal-item.link:hover{background:var(--surface-sunken);border-color:var(--border-default)}
.cal-item .cal-label{flex:1;min-width:0;font-size:13px;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-kind{flex-shrink:0;width:26px;height:26px;border-radius:7px;display:grid;place-items:center;font-size:12px}
.cal-kind.k-task{background:var(--surface-sunken);color:var(--text-secondary)}
.cal-kind.k-offer{background:var(--attention-bg);color:var(--attention-fg)}
.viewbar{display:flex;gap:8px;align-items:center;margin:6px 0 14px}
.viewbar select{height:32px;font-size:12.5px}

/* ---------- tabs (view toggle, e.g. My tasks / All tasks) ---------- */
.tabs{display:flex;gap:4px;margin:0 0 14px;border-bottom:1px solid var(--border-subtle)}
.tab{display:inline-block;padding:8px 14px;font-size:13px;font-weight:600;color:var(--text-secondary);text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-1px}
.tab:hover{color:var(--text-primary)}
.tab.active{color:var(--accent-fg);border-bottom-color:var(--accent-bg)}

/* ---------- notifications ---------- */
.notif-panel{position:fixed;top:60px;right:14px;width:min(420px,92vw);max-height:70vh;overflow:auto;background:var(--surface-overlay);border:1px solid var(--border-subtle);border-radius:var(--radius-card);box-shadow:var(--shadow-3);padding:12px 16px;z-index:50;color:var(--text-primary)}
.notif-panel h3{margin:0 0 8px;font-size:13.5px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.notif-markall{font-size:11.5px;font-weight:500;color:var(--info-fg);text-decoration:none;white-space:nowrap}
.notif-markall:hover{text-decoration:underline}
.notif{padding:8px 6px;border-bottom:1px solid var(--border-subtle);cursor:pointer;font-size:13px}
.notif:last-child{border-bottom:none}
.notif.unread{background:var(--info-bg);border-radius:8px}

/* ---------- demo banner ---------- */
.demo-bar{background:var(--warning-bg);color:var(--warning-fg);font-size:12.5px;padding:6px 18px;display:flex;gap:10px;align-items:center;flex-shrink:0}

/* ---------- responsive ---------- */
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media (max-width:860px){
  #rail{width:var(--rail-wc)}
  #rail .rl,#rail .rail-word{display:none}
  #rail .rail-foot .rl{display:none}
  #view{padding:14px}
  td,th{padding-left:8px;padding-right:8px}
  #whoami .who-txt{display:none}
  #rail-toggle{display:flex;align-items:center}

  /* Expanded state: slides over the content instead of pushing it, since
     there's no room to spare at this width. Closed by the backdrop, by
     picking a nav link, or by the toggle itself. */
  #rail.rail-open{
    width:var(--rail-w);position:fixed;inset:0 auto 0 0;z-index:40;
    box-shadow:2px 0 24px #00000040;
  }
  #rail.rail-open .rl,#rail.rail-open .rail-word,#rail.rail-open .rail-foot .rl{display:inline}
  #rail-backdrop.show{
    display:block;position:fixed;inset:0;background:#00000066;z-index:39;
  }
}

/* ---------- engine-upgrade components ---------- */
/* view head + attention rows + mono/num cells */
.view-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}
td.num{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.att-id{font-family:var(--font-mono);font-size:12.5px;color:var(--text-secondary)}
.panel{background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:var(--radius-card);box-shadow:var(--shadow-1);overflow:hidden}
.att-item{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--border-subtle);cursor:pointer;font-size:13px}
.att-item:last-child{border-bottom:none}
.att-item:hover{background:var(--surface-sunken)}
.att-title{flex:1;min-width:0;font-weight:550;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.err-box{background:var(--danger-bg);color:var(--danger-fg);border-radius:10px;padding:12px 16px;font-size:13px;margin:10px 0}

/* SLA clock chips + cluster */
.sla{display:inline-flex;align-items:center;gap:5px;font:600 12px var(--font-mono);white-space:nowrap}
.sla.ok{color:var(--success-fg)} .sla.watch{color:var(--attention-fg)}
.sla.risk{color:var(--warning-fg)} .sla.breach{color:var(--danger-fg)}
.sla-cluster{display:flex;gap:10px;margin:14px 0;flex-wrap:wrap}
.sla-card{display:flex;flex-direction:column;gap:3px;padding:10px 14px;border:1px solid var(--border-subtle);border-radius:10px;background:var(--surface-raised);min-width:190px;box-shadow:var(--shadow-1)}
.sla-card .lbl{font-size:11.5px;color:var(--text-secondary)}
.sla-card .cite{font-size:10.5px;color:var(--text-tertiary)}

/* density */
body.density-compact{--row-h:32px}
body.density-compact td,body.density-compact th{font-size:12.5px}

/* bulk action bar */
.bulk-bar{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);display:flex;gap:10px;align-items:center;background:var(--surface-overlay);border:1px solid var(--border-default);border-radius:12px;box-shadow:var(--shadow-3);padding:8px 16px;z-index:60;font-size:13px}

/* peek panel (L4) */
.peek-panel{position:fixed;top:56px;right:0;bottom:0;width:min(400px,92vw);background:var(--surface-overlay);border-left:1px solid var(--border-subtle);box-shadow:var(--shadow-3);z-index:55;display:flex;flex-direction:column}
.peek-h{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border-subtle)}
.peek-b{padding:16px;overflow-y:auto;display:flex;flex-direction:column;gap:10px}
.peek-b h3{font-size:15px}

/* selection column */
.selcol{width:36px}
.dg-wrap{overflow-x:auto}

/* modal */
.modal-scrim{position:fixed;inset:0;background:var(--surface-scrim);display:grid;place-items:center;z-index:100;padding:16px}
.modal{background:var(--surface-overlay);border:1px solid var(--border-subtle);border-radius:16px;box-shadow:var(--shadow-3);width:min(480px,94vw);max-height:88vh;display:flex;flex-direction:column}
.modal-wide{width:min(720px,94vw)}
.modal-h{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border-subtle)}
.modal-h h2{margin:0;font-size:15px}
.modal-b{padding:16px 18px;overflow-y:auto;display:grid;gap:13px}
.modal-body{font-size:13px;color:var(--text-secondary);margin:0}
.mfield{display:grid;gap:5px;font-size:12.5px;font-weight:550;color:var(--text-secondary)}
.mfield .req{color:var(--danger-fg)}
.mhint{font-size:11.5px;color:var(--text-tertiary);font-weight:400}
.mfield textarea{padding:9px 12px;border:1px solid var(--border-default);border-radius:var(--radius-input);font:inherit;font-size:13px;background:var(--surface-raised);color:var(--text-primary);resize:vertical}
.modal-f{display:flex;justify-content:flex-end;gap:8px;padding-top:4px}
.icon-btn{width:32px;height:32px;border-radius:8px;border:1px solid transparent;background:none;color:var(--text-secondary);cursor:pointer;font-size:14px}
.icon-btn:hover{background:var(--surface-sunken)}
.btn-secondary{background:var(--surface-raised);color:var(--text-primary);border:1px solid var(--border-default)}
.btn-secondary:hover{background:var(--surface-sunken)}
.btn-danger{background:var(--danger-fg);color:#fff}

/* toasts — iconed, animated, hover-pausable */
.toast-region{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:8px;z-index:200}
.toast{background:var(--n900);color:var(--n50);padding:11px 14px;border-radius:10px;font-size:13px;box-shadow:var(--shadow-3);display:flex;gap:10px;align-items:center;max-width:min(420px,92vw);border-left:3px solid var(--brass-500)}
[data-theme="dark"] .toast{background:#F7F5EF;color:#191813}
.toast-icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;font-size:12px;font-weight:800;flex-shrink:0}
.toast.t-success{border-left-color:#3F9E63}.toast.t-success .toast-icon{background:#3F9E63;color:#fff}
.toast.t-info{border-left-color:var(--info-fg,#4A7FB5)}.toast.t-info .toast-icon{background:var(--info-fg,#4A7FB5);color:#fff}
.toast.t-warn{border-left-color:var(--warning-fg)}.toast.t-warn .toast-icon{background:var(--warning-fg);color:#fff}
.toast.t-error{border-left-color:var(--danger-fg)}.toast.t-error .toast-icon{background:var(--danger-fg);color:#fff}
.toast-msg{flex:1}
.toast button{background:none;border:none;color:var(--brass-500);font:inherit;font-weight:700;cursor:pointer}
.toast .toast-x{color:inherit;opacity:.55;font-weight:400;padding:0 2px}
.toast .toast-x:hover{opacity:1}
@keyframes toastIn{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}
@keyframes toastOut{to{opacity:0;transform:translateX(24px)}}
.toast-in{animation:toastIn .22s cubic-bezier(0,0,.2,1)}
.toast-out{animation:toastOut .2s ease forwards}

/* busy state — inline spinner on any control while its action runs */
@keyframes spin{to{transform:rotate(360deg)}}
.spin{display:inline-block;width:13px;height:13px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}
button.is-busy,.button.is-busy{opacity:.75;cursor:progress;pointer-events:none}
button:disabled,.button:disabled,select:disabled{opacity:.55;cursor:not-allowed}

/* change confirmation flash (rows, fields after a successful mutation) */
@keyframes flashOk{0%{background:var(--success-bg)}100%{background:transparent}}
.flash-ok{animation:flashOk 1.4s ease-out}

/* view transitions — every route render fades/slides in */
@keyframes viewIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
#view.view-in{animation:viewIn .22s cubic-bezier(0,0,.2,1)}

/* skeleton loading placeholders */
@keyframes skelShimmer{from{background-position:-200px 0}to{background-position:200px 0}}
.skel{border-radius:8px;min-height:14px;background:linear-gradient(90deg,var(--surface-sunken) 25%,var(--surface-raised) 50%,var(--surface-sunken) 75%);background-size:400px 100%;animation:skelShimmer 1.2s infinite}
.skel-row{height:38px;margin:6px 0}
.skel-block{height:120px;margin:12px 0}

/* subtle press feedback on all buttons */
button:active,.button:active{transform:translateY(1px)}

/* command palette */
.palette-scrim{position:fixed;inset:0;background:var(--surface-scrim);z-index:110;display:flex;justify-content:center;align-items:flex-start;padding-top:12vh}
.palette{width:min(560px,94vw);background:var(--surface-overlay);border:1px solid var(--border-subtle);border-radius:14px;box-shadow:var(--shadow-3);overflow:hidden}
.palette-in{width:100%;height:48px;border:none;border-bottom:1px solid var(--border-subtle);border-radius:0;padding:0 18px;font-size:15px;background:var(--surface-overlay)}
.palette-in:focus{outline:none}
.palette-list{max-height:46vh;overflow-y:auto;padding:6px}
.palette-sec{font-size:10.5px;font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--text-tertiary);padding:10px 12px 4px}
.palette-item{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:8px;cursor:pointer;font-size:13.5px}
.palette-item.sel{background:var(--surface-sunken)}
.palette-item .ri{width:18px;text-align:center;color:var(--text-tertiary)}
.palette-item .pl{font-weight:550}
.palette-item .pd{margin-left:auto;font-size:11.5px;color:var(--text-tertiary);max-width:45%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.palette-item .kbd{font-size:10.5px;color:var(--text-tertiary);border:1px solid var(--border-default);border-radius:4px;padding:0 5px}
.palette-empty{padding:20px;font-size:13px;color:var(--text-tertiary);text-align:center}

/* health bands on account 360 */
.health-healthy{border-left:4px solid var(--success-fg)}
.health-watch{border-left:4px solid var(--attention-fg)}
.health-at-risk{border-left:4px solid var(--danger-fg)}

/* graph intelligence: KGQA ask view + GNN link scores */
.kgqa-bar{display:flex;gap:10px;margin:14px 0}
.kgqa-bar input{flex:1;height:44px;padding:0 16px;font-size:14.5px;border:1px solid var(--border-default);border-radius:10px;background:var(--surface-raised);color:var(--text-primary)}
.kgqa-bar input:focus{outline:2px solid var(--accent-primary);outline-offset:1px}
.kgqa-hints{display:flex;flex-wrap:wrap;gap:8px}
.kgqa-hint{font-size:12.5px;padding:7px 12px;border-radius:999px;border:1px solid var(--border-subtle);background:var(--surface-raised);color:var(--text-secondary);cursor:pointer}
.kgqa-hint:hover{border-color:var(--accent-primary);color:var(--text-primary)}
.kgqa-answer{background:var(--surface-raised);border:1px solid var(--border-subtle);border-left:4px solid var(--accent-primary);border-radius:12px;padding:16px 18px;margin:16px 0;font-size:14px;line-height:1.55}
.kgqa-head{display:flex;align-items:center;gap:12px;margin-bottom:8px;font-size:12.5px;color:var(--text-tertiary)}
.kgqa-fb{margin-left:auto;display:flex;gap:6px}
.kgqa-ents{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 16px}
.kgqa-ent{display:inline-flex;gap:8px;align-items:baseline;padding:6px 12px;border-radius:8px;background:var(--surface-sunken);font-size:12.5px}
.kgqa-paths{font-size:12px;line-height:1.7;color:var(--text-secondary);background:var(--surface-sunken);border-radius:10px;padding:12px 12px 12px 32px}
.gnn-score{position:relative;display:inline-block;min-width:52px;padding:2px 8px;border-radius:6px;font-size:12px;font-weight:650;color:var(--accent-brass-fg,var(--text-primary));background:linear-gradient(90deg,var(--surface-sunken) calc(var(--s)*100%),transparent 0);border:1px solid var(--border-subtle)}
@media (max-width:720px){.kgqa-bar{flex-direction:column}.kgqa-bar input{height:48px}}

/* tenant switcher (cross-tenant roles) */
.t-select{appearance:none;border:none;background:transparent;color:inherit;font:inherit;font-weight:600;cursor:pointer;padding:2px 14px 2px 2px;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 10px) 55%,calc(100% - 6px) 55%;background-size:4px 4px;background-repeat:no-repeat}
.t-select:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px;border-radius:4px}
.t-select option{color:#1a1a1a;background:#fff}
.badge.s-audit{background:var(--surface-sunken);color:var(--text-secondary);border:1px dashed var(--border-default);font-size:10.5px;margin-left:8px}

/* program rules panels (G1-G15 surfaces) */
.prog-sec{border:1px solid var(--border-default);border-radius:10px;margin:10px 0;background:var(--surface-raised)}
.prog-sec>summary{cursor:pointer;padding:10px 14px;font-weight:600}
.prog-sec>summary:hover{color:var(--accent-primary)}
.inline-form{display:flex;flex-wrap:wrap;gap:8px;padding:0 14px 14px;align-items:center}
.inline-form input,.inline-form select,.inline-form textarea{padding:7px 10px;border:1px solid var(--border-default);border-radius:8px;background:var(--surface-base);color:inherit;font:inherit;min-width:140px}
.inline-form textarea{flex-basis:100%}
.inline-form button{padding:8px 14px}
/* Overrides the bare pre{} rule above (line 73): that one is styled for a
   dark code-block background (color:#d6e2ff on var(--n900)) -- .qa-body
   overrode the background to the light surface but never its own color,
   so the draft text rendered light-on-light, readable only by selecting
   it. Confirmed live on a real QA draft. */
.qa-body{white-space:pre-wrap;background:var(--surface-sunken);color:var(--text-primary);border-radius:8px;padding:12px;font-size:13px;margin:10px 0}

/* financial dashboard */
.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:14px 0}
.kpi{border:1px solid var(--border-default);border-radius:12px;padding:14px 16px;background:var(--surface-raised)}
.kpi-n{display:block;font-size:22px;font-weight:700}
.kpi-l{display:block;font-size:12px;color:var(--text-secondary);margin-top:2px}
.aging-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin:10px 0}
.aging-cell{border:1px solid var(--border-default);border-radius:12px;padding:12px 14px;background:var(--surface-raised)}
.aging-cell.warn{border-color:#b7791f}
.aging-cell.bad{border-color:#c53030}
.aging-cell.bad .kpi-n{color:#c53030}
.badge.s-paid{background:#d1fae5;color:#065f46}
.badge.s-pending,.badge.s-open{background:#fef3c7;color:#92400e}
.badge.s-refunded,.badge.s-void{background:#fee2e2;color:#991b1b}

/* docket folders */
.doc-folder{margin:18px 0 6px;font-size:14px}
select.mini{padding:3px 6px;font-size:12px;border:1px solid var(--border-default);border-radius:6px;background:var(--surface-base);color:inherit}

/* sortable column headers + pager footer */
th.sortable{cursor:pointer;user-select:none;white-space:nowrap}
th.sortable:hover{color:var(--accent-fg)}
th.sorted{color:var(--accent-fg);font-weight:700}
.pager{display:flex;align-items:center;gap:12px;margin:10px 2px;font-size:12.5px}
.s-analyzed-with-findings,.s-failed{background:var(--warning-bg,#fdf3e0);color:var(--warning-fg)}

/* ---------- case facts + warn badge (FL lifecycle) ---------- */
.badge.warn{background:#fef3c7;color:#92400e;border:1px solid #f59e0b55}
.chip{display:inline-flex;align-items:center;padding:2px 10px;border-radius:var(--radius-chip);font-size:11.5px;font-weight:600;background:#e0e7ff;color:#3730a3;white-space:nowrap}
.fact-row{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 10px}

/* ---------- rules admin ---------- */
.rule-card{border:1px solid var(--border-default);border-radius:var(--radius-card);padding:12px 14px;margin:10px 0;background:var(--surface-raised,#fff)}
.rule-card.rule-off{opacity:.55}
.rule-head{display:flex;align-items:center;gap:10px}
.rule-toggle{font-size:12px;color:var(--text-secondary);display:flex;align-items:center;gap:4px}
.rule-basis{margin:6px 0 0;font-size:12px}
.rule-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:8px}
.rule-cols h4{margin:0 0 4px;font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary)}
.rule-cols ul{margin:0;padding-left:16px;font-size:12.5px}
/* Same bare-pre color leak as .qa-body above -- background overridden to
   the light surface, color never redeclared, so it inherited the light
   text meant for the dark code-block background instead. */
.rule-diff{max-height:300px;overflow:auto;font-size:11px;background:var(--surface-sunken);color:var(--text-primary);padding:8px;border-radius:8px}
button.mini.danger{color:#991b1b;border-color:#fecaca}
@media(max-width:720px){.rule-cols{grid-template-columns:1fr}}

/* ---------- Ops dashboard charts ---------- */
.chart-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:14px;margin:14px 0}
.chart-card{border:1px solid var(--border-default);border-radius:12px;padding:14px 16px;background:var(--surface-raised)}
.chart-card h2{margin:0 0 10px;font-size:14px}
.chart-foot{margin:8px 0 0;font-size:12px}
.chart-empty{padding:24px;text-align:center}
.donut-wrap{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.donut-n{font-size:26px;font-weight:700;fill:var(--text-primary)}
.donut-l{font-size:11px;fill:var(--text-tertiary)}
.legend{display:flex;flex-direction:column;gap:4px;font-size:12px}
.legend-item i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px}
.hbars{display:flex;flex-direction:column;gap:7px}
.hbar-row{display:grid;grid-template-columns:130px 1fr 90px;gap:10px;align-items:center;font-size:12.5px}
.hbar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hbar-track{position:relative;height:14px;background:var(--surface-sunken);border-radius:7px;overflow:hidden}
.hbar-fill{position:absolute;left:0;top:0;bottom:0;background:var(--brand-300);border-radius:7px}
.hbar-fill.bad{background:var(--red-700);opacity:.85}
.hbar-val{color:var(--text-secondary)}
.bad-t{color:var(--red-700)}
.area-chart{width:100%;height:auto}
.axis{font-size:10px;fill:var(--text-tertiary)}
.axis-line{stroke:var(--border-default);stroke-width:1}
.presence-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#2f9e44;box-shadow:0 0 0 3px #2f9e4433}
.ops-alerts{display:flex;gap:10px;flex-wrap:wrap;margin:6px 0 4px}
.ops-alert{display:inline-flex;gap:6px;align-items:center;padding:6px 12px;border-radius:10px;background:var(--amber-50);color:var(--amber-700);border:1px solid #e8d9b0;text-decoration:none;font-size:12.5px}
.ops-alert b{font-size:14px}

/* ---- Reports (auto-loading tabs + KPI strip) ---- */
.rpt-kpi-strip{margin:14px 0 18px}
.kpi.kpi-danger .kpi-n{color:var(--danger-fg)}
/* One report shown at a time, full page width -- a wide table (SLA's
   detail column) or a 3-chart trend row no longer has to fight siblings
   for space inside a ~340px grid column, which is what was forcing those
   tiles to scroll horizontally. */
.rpt-tabs{display:flex;gap:4px;margin:12px 0 0;border-bottom:1px solid var(--border-subtle);overflow-x:auto}
.rpt-tab{flex-shrink:0;padding:9px 16px;border:none;border-bottom:2px solid transparent;background:none;color:var(--text-muted);font-size:14px;cursor:pointer;white-space:nowrap}
.rpt-tab:hover{color:var(--text-default)}
.rpt-tab.active{color:var(--text-default);font-weight:600}
.rpt-tab.rpt-accent-1.active{border-bottom-color:#2E6B52}
.rpt-tab.rpt-accent-2.active{border-bottom-color:#9C2B1F}
.rpt-tab.rpt-accent-3.active{border-bottom-color:#B08D3E}
.rpt-tab.rpt-accent-4.active{border-bottom-color:#1D4E7E}
.rpt-panel{position:relative;border:1px solid var(--border-subtle);border-left:3px solid var(--border-subtle);border-radius:var(--radius-card);padding:16px 20px;background:var(--surface-raised);margin:14px 0}
.rpt-panel.rpt-accent-1{border-left-color:#2E6B52}
.rpt-panel.rpt-accent-2{border-left-color:#9C2B1F}
.rpt-panel.rpt-accent-3{border-left-color:#B08D3E}
.rpt-panel.rpt-accent-4{border-left-color:#1D4E7E}
.rpt-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.rpt-card-head h2{margin:0;font-size:16px}
.rpt-card-actions{display:flex;gap:6px;flex-shrink:0}
.rpt-card-actions .mini{padding:3px 9px}
.rpt-panel>p.muted{margin:4px 0 0}
.rpt-panel table{margin-top:10px}
/* Safety net, not the fix -- even at full panel width a case-heavy SLA
   table should scroll itself rather than ever push the page sideways. */
.rpt-panel>div{overflow-x:auto}

/* ---- Deliverables (contract delivery cards) ---- */
.deliv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin:12px 0}
.deliv-card{border:1px solid var(--border-subtle);border-radius:var(--radius-card);padding:12px 16px;background:var(--surface-raised);display:flex;flex-direction:column;gap:6px}
.deliv-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
.deliv-meta{font-size:13px}
.deliv-card>button{align-self:flex-start}

/* ---- Calendar month grid ---- */
.cal-nav{display:flex;align-items:center;gap:10px;margin:10px 0}
.cal-nav b{min-width:150px;text-align:center}
.cal-legend{margin-left:auto;display:flex;gap:6px}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:14px}
.cal-dow{text-align:center;font-size:12px;font-weight:600;color:var(--ink-muted);padding:4px 0;text-transform:uppercase;letter-spacing:.04em}
.cal-cell{min-height:86px;border:1px solid var(--border-subtle);border-radius:8px;padding:4px 6px;background:var(--surface-raised);overflow:hidden}
.cal-cell.empty{border:none;background:transparent}
.cal-cell.today{border-color:var(--brand,#2E6B52);box-shadow:inset 0 0 0 1px var(--brand,#2E6B52)}
.cal-cell.has-items{background:var(--surface)}
.cal-num{font-size:12px;font-weight:600;color:var(--ink-muted)}
.cal-cell.today .cal-num{color:var(--brand,#2E6B52)}
.cal-chip{display:block;font-size:11.5px;border-radius:5px;padding:1px 6px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-chip a{color:inherit;text-decoration:none}
.cal-chip-stat{background:#B08D3E22;color:#7A5C2E;border-left:3px solid #B08D3E}
.cal-chip-clock{background:#1D4E7E18;color:#1D4E7E;border-left:3px solid #1D4E7E}
.cal-chip-task{background:#2E6B5218;color:#2E6B52;border-left:3px solid #2E6B52}
.cal-more{font-size:11px}
@media (max-width:900px){.cal-cell{min-height:60px}.cal-chip{font-size:10px}}

/* Global-search live dropdown — positions under #gq, reuses palette items. */
.gq-wrap{position:relative;flex:1;max-width:460px;display:flex}
.gq-wrap #gq{max-width:none;width:100%}
.gq-drop{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:60;background:var(--surface-raised,#fff);border:1px solid var(--border-subtle);border-radius:10px;box-shadow:0 12px 32px rgba(0,0,0,.18);padding:6px;max-height:min(420px,60vh);overflow-y:auto}
.gq-drop .palette-empty{padding:10px 12px;font-size:12.5px;color:var(--text-tertiary)}

/* Assistant (conversational surface) */
.asst-panel{background:var(--surface-raised);border:1px solid var(--border-subtle);border-radius:var(--radius-card);box-shadow:var(--shadow-1);padding:14px;max-width:760px}
.asst-thread{border:1px solid var(--border-subtle);border-radius:12px;background:var(--surface-sunken);min-height:220px;max-height:55vh;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:12px}
.asst-empty{margin:auto;text-align:center;color:var(--text-tertiary);padding:24px 16px;display:flex;flex-direction:column;gap:6px;align-items:center}
.asst-empty .asst-empty-icon{font-size:22px;opacity:.6}
.asst-turn{max-width:82%;padding:10px 14px;border-radius:14px;line-height:1.5;font-size:13.5px;box-shadow:var(--shadow-1)}
.asst-turn .asst-who{font-size:10.5px;color:var(--text-tertiary);margin-bottom:4px;text-transform:uppercase;letter-spacing:.05em;font-weight:600}
.asst-turn .asst-body{white-space:pre-wrap}
.asst-ai{align-self:flex-start;background:var(--surface-raised);border:1px solid var(--border-subtle);border-bottom-left-radius:4px}
.asst-user{align-self:flex-end;background:var(--action-primary-bg);color:var(--action-primary-fg);border-bottom-right-radius:4px}
.asst-user .asst-who{color:var(--action-primary-fg);opacity:.75}
.asst-turn.asst-thinking{display:inline-flex;align-items:center;gap:8px}
.asst-dots{display:inline-flex;gap:3px}
.asst-dots span{width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.4;animation:asstPulse 1.1s infinite ease-in-out}
.asst-dots span:nth-child(2){animation-delay:.15s}.asst-dots span:nth-child(3){animation-delay:.3s}
@keyframes asstPulse{0%,60%,100%{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-2px)}}
.asst-wait-hint{font-size:11px;color:var(--text-tertiary)}
.asst-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.asst-chips .mini{border-radius:var(--radius-chip);padding:4px 13px}
.asst-form{display:flex;gap:8px;margin-top:12px}
.asst-form input{flex:1;height:38px;padding:0 13px;border:1px solid var(--border-subtle);border-radius:var(--radius-input);background:var(--surface-sunken);color:var(--text-primary);font:inherit}
.asst-form input:focus{outline:2px solid var(--focus-ring);outline-offset:1px}
.asst-foot{margin-top:8px;font-size:11.5px;color:var(--text-tertiary)}

/* Floating assistant launcher — available on every screen, not just #/assistant */
.asst-fab{position:fixed;right:20px;bottom:20px;width:52px;height:52px;border-radius:50%;background:var(--action-primary-bg);color:var(--action-primary-fg);display:flex;align-items:center;justify-content:center;font-size:21px;border:none;box-shadow:var(--shadow-3);cursor:pointer;z-index:90;transition:transform .15s,background .12s}
.asst-fab:hover{background:var(--action-primary-bg-hover);transform:translateY(-2px)}
.asst-fab[data-open="1"]{transform:scale(.92)}
.asst-fab .asst-fab-badge{position:absolute;top:-2px;right:-2px;width:10px;height:10px;border-radius:50%;background:var(--brass-500);border:2px solid var(--surface-canvas)}
.asst-fab-panel{position:fixed;right:20px;bottom:84px;width:min(380px,calc(100vw - 40px));max-height:min(560px,calc(100vh - 120px));background:var(--surface-overlay);border:1px solid var(--border-subtle);border-radius:var(--radius-card);box-shadow:var(--shadow-3);z-index:90;display:none;flex-direction:column;overflow:hidden}
.asst-fab-panel[data-open="1"]{display:flex;animation:asstPanelIn .16s cubic-bezier(0,0,.2,1)}
@keyframes asstPanelIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.asst-fab-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:11px 14px;border-bottom:1px solid var(--border-subtle);background:var(--surface-raised);flex-shrink:0}
.asst-fab-head .asst-fab-title{font-size:13px;font-weight:650;display:flex;flex-direction:column;gap:1px}
.asst-fab-head .asst-fab-case{font-size:11px;color:var(--text-tertiary);font-weight:400}
.asst-fab-close{background:none;border:none;color:var(--text-tertiary);font-size:16px;cursor:pointer;padding:2px 6px;min-height:auto}
.asst-fab-close:hover{color:var(--text-primary);background:none}
.asst-fab-body{flex:1;overflow-y:auto;padding:10px 12px;display:flex;flex-direction:column;gap:10px;min-height:160px}
.asst-fab-body .asst-turn{max-width:94%}
.asst-fab-pick{padding:4px 2px;display:flex;flex-direction:column;gap:8px}
.asst-fab-pick input{height:34px;padding:0 11px;border:1px solid var(--border-subtle);border-radius:var(--radius-input);background:var(--surface-sunken);color:var(--text-primary);font:inherit;font-size:12.5px}
.asst-fab-pick-row{display:flex;justify-content:space-between;align-items:center;padding:7px 9px;border-radius:8px;cursor:pointer;font-size:12.5px}
.asst-fab-pick-row:hover{background:var(--surface-sunken)}
.asst-fab-quick{display:flex;flex-wrap:wrap;gap:6px;padding:2px 2px 4px}
.asst-fab-quick button{border-radius:var(--radius-chip);padding:4px 11px;font-size:11.5px}
.asst-fab-list{display:flex;flex-direction:column;gap:5px}
.asst-fab-list-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:7px 9px;border-radius:8px;background:var(--surface-sunken);font-size:12px;text-decoration:none;color:inherit}
.asst-fab-list-row:hover{background:var(--border-subtle)}
.asst-fab-list-row .afr-main{display:flex;flex-direction:column;gap:1px;overflow:hidden}
.asst-fab-list-row .afr-sub{color:var(--text-tertiary);font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.asst-fab-foot{flex-shrink:0;padding:9px 12px;border-top:1px solid var(--border-subtle);background:var(--surface-raised)}
.asst-fab-foot .asst-chips{margin-top:0;margin-bottom:8px}
.asst-fab-foot .asst-form{margin-top:0}
.asst-fab-attach{display:inline-flex;align-items:center;justify-content:center;width:34px;height:38px;flex-shrink:0;cursor:pointer;font-size:15px}
.asst-fab-attach.has-file{background:var(--warning-bg);border-color:var(--warning-fg)}
@media (max-width:640px){.asst-fab{right:14px;bottom:14px}.asst-fab-panel{left:14px;right:14px;width:auto;bottom:76px}}
.asst-qa-card textarea{font:inherit;font-size:13px}
.chip-stat{background:var(--surface-raised,#fff);border:1px solid var(--border-subtle);border-radius:999px;padding:3px 10px;font-size:12px;color:var(--text-secondary)}
.chip-stat b{color:var(--text-primary)}
.sla-hot{color:var(--danger,#c92a2a);font-weight:600}
