/* SW Prospect Intelligence — v0.3.10.6.109 Admin Design System
   Light is the specified production theme. Dark is token-level parity.
   Implementable as plain CSS in a server-rendered PHP admin. */

:root{
  --font-sans:"Geist",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-mono:"Geist Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace;

  --fs-3xl:26px;--fs-2xl:20px;--fs-xl:17px;--fs-lg:15px;--fs-md:13px;--fs-sm:12px;--fs-xs:11px;--fs-2xs:10px;
  --lh-tight:1.25;--lh-base:1.45;--lh-loose:1.6;

  --sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;
  --r-sm:4px;--r:6px;--r-md:8px;--r-lg:10px;--r-full:999px;

  --row-h:36px;--ctl-h:28px;--ctl-h-sm:24px;--chip-h:19px;
  --sidebar-w:236px;--sidebar-w-collapsed:56px;--topbar-h:48px;--measure:78ch;--read-max:900px;

  --bg:#f5f6f8;--surface:#fff;--surface-2:#fafbfc;--surface-3:#f1f2f5;--surface-hover:#f5f6f8;--surface-sunken:#eef0f3;
  --border:#e6e8ec;--border-strong:#d6dae0;--border-focus:#1f6feb;
  --text:#0d1116;--text-muted:#5c6573;--text-subtle:#8a909c;--text-faint:#afb4be;

  --accent:#1f6feb;--accent-hover:#1858c5;--accent-fg:#fff;--accent-bg:#eaf1fe;--accent-bg-strong:#d4e2fc;
  --success:#1a7f37;--success-bg:#dafbe1;--success-bg-strong:#bbf7d0;
  --warning:#9a5700;--warning-bg:#fff1c4;--warning-bg-strong:#ffe18b;
  --danger:#c0362c;--danger-bg:#ffebe8;--danger-bg-strong:#ffcdc8;
  --info:#0b62a4;--info-bg:#ddf0fb;
  --neutral-bg:#eef0f3;--neutral-fg:#5c6573;
  --purple:#6e3acb;--purple-bg:#f1ebfc;
  --teal:#0d7c87;--teal-bg:#d5f4f7;
  --historical:#8a909c;--historical-bg:#f1f2f5;

  --shadow-1:0 1px 0 rgba(15,17,22,.04),0 1px 2px rgba(15,17,22,.06);
  --shadow-2:0 4px 10px rgba(15,17,22,.06),0 1px 3px rgba(15,17,22,.05);
  --shadow-pop:0 8px 30px rgba(15,17,22,.12),0 2px 6px rgba(15,17,22,.08);
  --shadow-drawer:-8px 0 30px rgba(15,17,22,.10);

  --dur-fast:120ms;--dur:180ms;--ease:cubic-bezier(.3,.7,.4,1);
  --z-sticky:10;--z-drawer:40;--z-modal:50;--z-toast:60;--z-tooltip:70;
}
[data-theme="dark"]{
  --bg:#0a0c10;--surface:#141820;--surface-2:#11151c;--surface-3:#1a1f28;--surface-hover:#1c2230;--surface-sunken:#0e1218;
  --border:#232934;--border-strong:#303743;--border-focus:#4d8df6;
  --text:#e6e9ef;--text-muted:#8b94a3;--text-subtle:#646b78;--text-faint:#4a505b;
  --accent:#4d8df6;--accent-hover:#6ba1ff;--accent-bg:#16263f;--accent-bg-strong:#1e3459;
  --success:#4ec96d;--success-bg:#0f2c1a;--success-bg-strong:#164227;
  --warning:#e0a64a;--warning-bg:#332508;--warning-bg-strong:#4a370f;
  --danger:#ef5350;--danger-bg:#3a1614;--danger-bg-strong:#54211d;
  --info:#5ab0e8;--info-bg:#0e2536;
  --neutral-bg:#1e242e;--neutral-fg:#9aa3b1;
  --purple:#a479ed;--purple-bg:#241a3a;--teal:#44b8c6;--teal-bg:#0c2a2e;
  --historical:#646b78;--historical-bg:#181d25;
  --shadow-1:0 1px 0 rgba(0,0,0,.3),0 1px 2px rgba(0,0,0,.4);
  --shadow-2:0 4px 10px rgba(0,0,0,.4),0 1px 3px rgba(0,0,0,.5);
  --shadow-pop:0 8px 30px rgba(0,0,0,.5),0 2px 6px rgba(0,0,0,.4);
  --shadow-drawer:-8px 0 30px rgba(0,0,0,.5);
}
[data-density="compact"]{--row-h:30px;--fs-md:12px;--fs-sm:11px;--fs-xs:10px}
[data-density="comfortable"]{--row-h:42px;--fs-md:14px;--fs-sm:13px}

*{box-sizing:border-box}
html,body,#root{height:100%}
body{margin:0;font:400 var(--fs-md)/var(--lh-base) var(--font-sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-feature-settings:"cv11","ss01"}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:var(--accent);text-decoration:none}
a:hover{color:var(--accent-hover);text-decoration:underline}
:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px;border-radius:var(--r-sm)}
.mono{font-family:var(--font-mono);font-feature-settings:"tnum"}
.tnum{font-variant-numeric:tabular-nums}
.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.012em;line-height:var(--lh-tight)}

/* ── shell ─────────────────────────────────────────── */
.app{display:grid;grid-template-columns:var(--sidebar-w) 1fr;grid-template-rows:var(--topbar-h) 1fr;height:100vh;overflow:hidden}
.app[data-nav="collapsed"]{grid-template-columns:var(--sidebar-w-collapsed) 1fr}
.sidebar{grid-row:1/3;background:var(--surface-2);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}
.topbar{background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:var(--sp-3);padding:0 var(--sp-4)}
.main{overflow:auto;background:var(--bg)}
/* Decision 27 — the canvas is fluid at every width. A global max-width produced
   empty side gutters on 1920-2048px screens, so width is governed per content
   class instead: dense surfaces use all of it, prose is measure-limited. */
.main-inner{padding:var(--sp-5);max-width:none;margin:0}
.main-inner.wide{max-width:none}
/* reading pages: the COLUMN is capped, the page is not */
.read{max-width:var(--read-max)}
/* paragraph text inside any fluid card */
.prose,.card p,.scope dd,.alert>div{max-width:var(--measure)}
/* extra width becomes more columns, never gutters */
.autogrid{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}
.autogrid.narrow{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
/* dense tables keep column minimums and scroll rather than compress */
.tbl-wrap{overflow-x:auto}.tbl{min-width:820px}
@media (min-width:1800px){.main-inner{padding:var(--sp-5) var(--sp-6)}}

.sb-brand{display:flex;align-items:center;gap:9px;height:var(--topbar-h);padding:0 var(--sp-4);border-bottom:1px solid var(--border);flex-shrink:0}
.sb-mark{width:24px;height:24px;border-radius:var(--r-sm);background:var(--text);color:var(--surface);display:grid;place-items:center;font-size:10px;font-weight:700;letter-spacing:-.02em;flex-shrink:0}
.sb-name{font-size:var(--fs-md);font-weight:600;white-space:nowrap;overflow:hidden}
.sb-scroll{flex:1;overflow-y:auto;padding:var(--sp-3) var(--sp-2) var(--sp-4)}
.sb-group{margin-bottom:var(--sp-4)}
.sb-glabel{font-size:var(--fs-2xs);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-subtle);padding:0 var(--sp-3) var(--sp-1)}
.sb-item{display:flex;align-items:center;gap:9px;padding:5px var(--sp-3);margin:1px 0;border-radius:5px;font-size:var(--fs-md);color:var(--text-muted);border:1px solid transparent;cursor:pointer;width:100%;background:none;text-align:left}
.sb-item:hover{background:var(--surface-hover);color:var(--text)}
.sb-item[aria-current="page"]{background:var(--surface);color:var(--text);border-color:var(--border);box-shadow:var(--shadow-1);font-weight:500}
.sb-item svg{width:14px;height:14px;flex-shrink:0;opacity:.7}
.sb-item[aria-current="page"] svg{opacity:1;color:var(--accent)}
.sb-item .label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sb-count{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-subtle);background:var(--surface-3);padding:1px 5px;border-radius:3px;font-variant-numeric:tabular-nums}
.sb-item[aria-current="page"] .sb-count{background:var(--accent-bg);color:var(--accent)}
.sb-count.attn{background:var(--warning-bg);color:var(--warning)}
.sb-count.crit{background:var(--danger-bg);color:var(--danger)}
.sb-foot{border-top:1px solid var(--border);padding:var(--sp-3) var(--sp-4);display:flex;align-items:center;gap:9px;flex-shrink:0}
.sb-build{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-faint);padding:0 var(--sp-4) var(--sp-2)}
.app[data-nav="collapsed"] .sb-name,.app[data-nav="collapsed"] .sb-glabel,.app[data-nav="collapsed"] .label,.app[data-nav="collapsed"] .sb-count,.app[data-nav="collapsed"] .sb-build,.app[data-nav="collapsed"] .sb-foot-text{display:none}
.app[data-nav="collapsed"] .sb-item{justify-content:center;padding:7px 0}

.tb-crumb{display:flex;align-items:center;gap:6px;font-size:var(--fs-md);color:var(--text-muted);min-width:0}
.tb-crumb b{color:var(--text);font-weight:500}
.tb-sep{color:var(--text-faint)}
.tb-search{display:flex;align-items:center;gap:8px;height:var(--ctl-h);padding:0 10px;background:var(--surface-3);border:1px solid transparent;border-radius:var(--r);width:300px;color:var(--text-muted);font-size:var(--fs-sm)}
.tb-search:hover,.tb-search:focus-within{border-color:var(--border-strong);background:var(--surface)}
.tb-search input{flex:1;border:0;background:none;outline:none;font-size:var(--fs-sm);min-width:0}
.tb-search kbd{font-family:var(--font-mono);font-size:var(--fs-2xs);background:var(--surface);border:1px solid var(--border);padding:1px 5px;border-radius:3px}

/* ── page header ───────────────────────────────────── */
.page-h{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-4);flex-wrap:wrap}
.page-h h1{font-size:var(--fs-2xl)}
.page-h .desc{font-size:var(--fs-sm);color:var(--text-muted);margin-top:4px;max-width:76ch}
.page-h .meta{display:flex;align-items:center;gap:var(--sp-2);margin-top:8px;flex-wrap:wrap}
.page-h-actions{display:flex;gap:var(--sp-2);align-items:center;flex-shrink:0}

/* ── cards / panels ────────────────────────────────── */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden}
.card-h{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:10px var(--sp-4);border-bottom:1px solid var(--border)}
.card-h h2,.card-h h3{font-size:var(--fs-md);font-weight:600;display:flex;align-items:center;gap:8px}
.card-h .meta{font-size:var(--fs-xs);color:var(--text-muted)}
.card-b{padding:var(--sp-4)}
.card-b.flush{padding:0}
.card-f{padding:10px var(--sp-4);border-top:1px solid var(--border);background:var(--surface-2);display:flex;align-items:center;gap:var(--sp-2)}
.sect{margin-bottom:var(--sp-6)}
.sect-h{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-3)}
.sect-h h2{font-size:var(--fs-md);font-weight:600}
.sect-h .hint{font-size:var(--fs-xs);color:var(--text-muted)}

.grid{display:grid;gap:var(--sp-3)}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g5{grid-template-columns:repeat(5,minmax(0,1fr))}
.row{display:flex;gap:var(--sp-3);align-items:center}
.col{display:flex;flex-direction:column;gap:var(--sp-3)}
.spacer{flex:1}

/* ── status vocabulary ─────────────────────────────── */
.chip{display:inline-flex;align-items:center;gap:5px;height:var(--chip-h);padding:0 7px;border-radius:var(--r-sm);font-size:var(--fs-xs);font-weight:500;line-height:1;white-space:nowrap;background:var(--neutral-bg);color:var(--neutral-fg);font-variant-numeric:tabular-nums}
.chip>.pip{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}
.chip.lg{height:22px;padding:0 9px;font-size:var(--fs-sm)}
.chip.outline{background:transparent;border:1px solid var(--border-strong)}
.chip.healthy,.chip.current,.chip.active-ok,.chip.caught_up,.chip.passed{background:var(--success-bg);color:var(--success)}
.chip.moving,.chip.running,.chip.info{background:var(--info-bg);color:var(--info)}
.chip.waiting,.chip.window,.chip.capped,.chip.pending{background:var(--accent-bg);color:var(--accent)}
.chip.attention,.chip.stale,.chip.paused,.chip.degraded{background:var(--warning-bg);color:var(--warning)}
.chip.blocked,.chip.failed{background:var(--danger-bg);color:var(--danger)}
.chip.unchecked,.chip.unconfigured,.chip.disabled{background:var(--neutral-bg);color:var(--neutral-fg)}
.chip.historical{background:var(--historical-bg);color:var(--historical)}
.chip.purple{background:var(--purple-bg);color:var(--purple)}

.dot{width:7px;height:7px;border-radius:50%;display:inline-block;flex-shrink:0;background:var(--text-faint)}
.dot.healthy{background:var(--success);box-shadow:0 0 0 3px color-mix(in oklab,var(--success) 18%,transparent)}
.dot.moving{background:var(--info);box-shadow:0 0 0 3px color-mix(in oklab,var(--info) 18%,transparent)}
.dot.waiting{background:var(--accent);box-shadow:0 0 0 3px color-mix(in oklab,var(--accent) 16%,transparent)}
.dot.attention{background:var(--warning);box-shadow:0 0 0 3px color-mix(in oklab,var(--warning) 20%,transparent)}
.dot.blocked,.dot.failed{background:var(--danger);box-shadow:0 0 0 3px color-mix(in oklab,var(--danger) 20%,transparent)}
.dot.unchecked,.dot.disabled{background:var(--text-faint)}

/* freshness */
.fresh{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-xs);color:var(--text-muted);white-space:nowrap}
.fresh .tag{font-size:var(--fs-2xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:1px 5px;border-radius:3px;background:var(--neutral-bg);color:var(--neutral-fg)}
.fresh[data-f="current"] .tag{background:var(--success-bg);color:var(--success)}
.fresh[data-f="cached"] .tag{background:var(--accent-bg);color:var(--accent)}
.fresh[data-f="stale"] .tag{background:var(--warning-bg);color:var(--warning)}
.fresh[data-f="unchecked"] .tag{background:var(--neutral-bg);color:var(--neutral-fg)}
.fresh[data-f="historical"] .tag{background:var(--historical-bg);color:var(--historical)}

/* ── buttons ───────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--ctl-h);padding:0 10px;border-radius:var(--r);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:var(--fs-sm);font-weight:500;white-space:nowrap;box-shadow:var(--shadow-1);transition:background var(--dur-fast)}
.btn:hover{background:var(--surface-hover)}
.btn svg{width:13px;height:13px;flex-shrink:0}
.btn[disabled],.btn[aria-disabled="true"]{opacity:.5;cursor:not-allowed;box-shadow:none}
.btn.primary{background:var(--accent);color:var(--accent-fg);border-color:color-mix(in oklab,var(--accent) 78%,#000)}
.btn.primary:hover{background:var(--accent-hover)}
.btn.danger{color:var(--danger);border-color:var(--danger-bg-strong)}
.btn.danger:hover{background:var(--danger-bg)}
.btn.danger.solid{background:var(--danger);color:#fff;border-color:color-mix(in oklab,var(--danger) 78%,#000)}
.btn.ghost{border-color:transparent;background:none;box-shadow:none;color:var(--text-muted)}
.btn.ghost:hover{background:var(--surface-3);color:var(--text)}
.btn.sm{height:var(--ctl-h-sm);padding:0 8px;font-size:var(--fs-xs)}
.btn.icon{width:var(--ctl-h);padding:0}
.btn.icon.sm{width:var(--ctl-h-sm)}
.btn-group{display:inline-flex;border:1px solid var(--border-strong);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow-1);overflow:hidden}
.btn-group .btn{border:0;border-radius:0;box-shadow:none;border-right:1px solid var(--border)}
.btn-group .btn:last-child{border-right:0}
.btn-group .btn[aria-pressed="true"]{background:var(--surface-3);color:var(--text)}

/* ── tables ────────────────────────────────────────── */
.tbl-wrap{overflow:auto}
table.tbl{width:100%;border-collapse:collapse;font-size:var(--fs-md)}
.tbl th{text-align:left;font-weight:500;font-size:var(--fs-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;padding:8px var(--sp-3);background:var(--surface-2);border-bottom:1px solid var(--border);white-space:nowrap;position:sticky;top:0;z-index:var(--z-sticky)}
.tbl th[aria-sort]{cursor:pointer}
.tbl th[aria-sort]:hover{color:var(--text)}
.tbl th[aria-sort="ascending"]::after{content:" ↑";color:var(--accent)}
.tbl th[aria-sort="descending"]::after{content:" ↓";color:var(--accent)}
.tbl{min-width:860px}
.tbl td{padding:0 var(--sp-3);height:var(--row-h);border-bottom:1px solid var(--border);vertical-align:middle}
.tbl td.mono,.tbl td.num,.tbl th{white-space:nowrap}
.tbl td .stack small,.tbl td.muted{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:22ch}
.tbl tbody tr:last-child td{border-bottom:0}
.tbl tbody tr[data-clickable]{cursor:pointer}
.tbl tbody tr[data-clickable]:hover{background:var(--surface-2)}
.tbl tbody tr[aria-selected="true"]{background:var(--accent-bg)}
.tbl td.muted{color:var(--text-muted)}
.tbl td.num{text-align:right;font-variant-numeric:tabular-nums}
.tbl td.mono{font-family:var(--font-mono);font-size:var(--fs-sm)}
.tbl .id{font-weight:500;color:var(--text)}
.tbl tbody tr:hover .id{color:var(--accent)}
.tbl .c-sel{width:34px;padding-right:0}
.tbl .c-act{width:40px;text-align:right}
.tbl .stack{display:flex;flex-direction:column;gap:1px;line-height:1.3;padding:5px 0}
.tbl .stack small{font-size:var(--fs-xs);color:var(--text-muted)}
.tbl.sticky-id td:nth-child(2),.tbl.sticky-id th:nth-child(2){position:sticky;left:34px;background:var(--surface);z-index:1}
.tbl.sticky-id tbody tr:hover td:nth-child(2){background:var(--surface-2)}

/* ── filter + bulk bars ────────────────────────────── */
.filterbar{display:flex;align-items:center;gap:var(--sp-2);padding:9px var(--sp-3);border-bottom:1px solid var(--border);flex-wrap:wrap;background:var(--surface);position:sticky;top:0;z-index:var(--z-sticky)}
.field{display:flex;align-items:center;gap:6px;height:26px;padding:0 8px;border:1px solid var(--border-strong);border-radius:var(--r);background:var(--surface)}
.field input,.field select{flex:1;border:0;background:none;outline:none;font-size:var(--fs-sm);min-width:0}
.field.search{width:240px}
.fchip{height:24px;padding:0 8px;border-radius:var(--r-sm);background:var(--surface-3);font-size:var(--fs-xs);font-weight:500;color:var(--text-muted);border:1px solid transparent;display:inline-flex;align-items:center;gap:5px;cursor:pointer}
.fchip:hover{color:var(--text)}
.fchip[aria-pressed="true"]{background:var(--accent-bg);color:var(--accent);border-color:var(--accent-bg-strong)}
.fchip .n{font-family:var(--font-mono);font-size:var(--fs-2xs);opacity:.8}
.bulkbar{display:flex;align-items:center;gap:var(--sp-2);padding:8px var(--sp-3);background:var(--accent-bg);border-bottom:1px solid var(--accent-bg-strong);font-size:var(--fs-sm);position:sticky;top:44px;z-index:var(--z-sticky)}
.bulkbar b{font-weight:600}

/* ── contact review workbench (§8 responsive) ──────── */
.wb{display:grid;grid-template-columns:270px minmax(380px,1fr) 340px;gap:var(--sp-3);height:calc(100vh - var(--topbar-h) - 150px);min-height:520px}
.wb-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);display:flex;flex-direction:column;min-height:0;overflow:hidden}
.wb-body{flex:1;overflow-y:auto;min-height:0}
.wb-evidence-open{display:none}
@media (max-width:1279px){.wb{grid-template-columns:230px minmax(360px,1fr) 300px}}
@media (max-width:1023px){
  .wb{grid-template-columns:230px minmax(360px,1fr)}
  .wb-panel.wb-evidence{position:fixed;top:0;right:0;bottom:0;width:min(420px,92vw);z-index:var(--z-drawer);border-radius:0;border-left:1px solid var(--border);box-shadow:var(--shadow-drawer);transform:translateX(100%);transition:transform var(--dur) var(--ease)}
  .wb-panel.wb-evidence[data-open="1"]{transform:none}
  .wb-evidence-open{display:inline-flex}
}
@media (max-width:767px){
  .wb{grid-template-columns:1fr;grid-auto-rows:minmax(280px,auto);height:auto;min-height:0}
  .wb-panel{max-height:70vh}
  .wb-panel.wb-evidence{width:100%}
}

/* ── tabs ──────────────────────────────────────────── */
.tabs{display:flex;gap:0;border-bottom:1px solid var(--border);padding:0 var(--sp-4);background:var(--surface);overflow-x:auto}
.tab{padding:9px var(--sp-3);font-size:var(--fs-md);color:var(--text-muted);font-weight:500;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;display:flex;align-items:center;gap:6px;white-space:nowrap;background:none;border-top:0;border-left:0;border-right:0}
.tab:hover{color:var(--text)}
.tab[aria-selected="true"]{color:var(--text);border-bottom-color:var(--accent)}
.tab .chip{background:var(--surface-3);color:var(--text-muted)}
.tab[aria-selected="true"] .chip{background:var(--accent-bg);color:var(--accent)}

/* ── KPI / metric ──────────────────────────────────── */
.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:11px var(--sp-4);min-width:0;display:flex;flex-direction:column;gap:3px}
.kpi .k-l{font-size:var(--fs-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-weight:500;display:flex;align-items:center;gap:5px}
.kpi .k-v{font-size:var(--fs-2xl);font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.15}
.kpi .k-v.sm{font-size:var(--fs-xl)}
.kpi .k-s{font-size:var(--fs-xs);color:var(--text-muted)}
.kpi.link{cursor:pointer}
.kpi.link:hover{border-color:var(--border-strong);background:var(--surface-2)}
.kpi .k-v.unchecked{color:var(--text-faint);font-size:var(--fs-lg);font-weight:500}

/* ── attention item ────────────────────────────────── */
.attn{display:flex;align-items:flex-start;gap:var(--sp-3);padding:11px var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md)}
.attn[data-sev="attention"]{border-left:3px solid var(--warning)}
.attn[data-sev="blocked"],.attn[data-sev="failed"]{border-left:3px solid var(--danger)}
.attn[data-sev="info"]{border-left:3px solid var(--accent)}
.attn-ico{width:28px;height:28px;border-radius:var(--r);display:grid;place-items:center;flex-shrink:0;background:var(--warning-bg);color:var(--warning)}
.attn[data-sev="blocked"] .attn-ico,.attn[data-sev="failed"] .attn-ico{background:var(--danger-bg);color:var(--danger)}
.attn[data-sev="info"] .attn-ico{background:var(--accent-bg);color:var(--accent)}
.attn-b{flex:1;min-width:0}
.attn-t{font-size:var(--fs-md);font-weight:500}
.attn-s{font-size:var(--fs-sm);color:var(--text-muted);margin-top:2px}
.attn-m{font-size:var(--fs-xs);color:var(--text-subtle);margin-top:5px;display:flex;gap:var(--sp-2);flex-wrap:wrap}

/* ── lane row ──────────────────────────────────────── */
.lane{display:grid;grid-template-columns:14px minmax(160px,1.4fr) repeat(5,minmax(56px,.5fr)) minmax(120px,1fr) auto;gap:var(--sp-3);align-items:center;padding:9px var(--sp-4);border-bottom:1px solid var(--border);font-size:var(--fs-sm)}
.lane:last-child{border-bottom:0}
.lane:hover{background:var(--surface-2)}
.lane-n{font-weight:500;color:var(--text)}
.lane-n small{display:block;font-size:var(--fs-xs);color:var(--text-muted);font-weight:400}
.lane-m{display:flex;flex-direction:column;align-items:flex-end;gap:0;font-variant-numeric:tabular-nums}
.lane-m b{font-size:var(--fs-md);font-weight:600}
.lane-m span{font-size:var(--fs-2xs);color:var(--text-subtle);text-transform:uppercase;letter-spacing:.03em}
.lane-m b.zero{color:var(--text-faint)}
.lane-m b.unchecked{color:var(--text-faint);font-size:var(--fs-sm);font-weight:500}
.lane-next{font-size:var(--fs-xs);color:var(--text-muted)}
.lane-head{display:grid;grid-template-columns:14px minmax(160px,1.4fr) repeat(5,minmax(56px,.5fr)) minmax(120px,1fr) auto;gap:var(--sp-3);padding:8px var(--sp-4);background:var(--surface-2);border-bottom:1px solid var(--border);font-size:var(--fs-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;font-weight:500}
.lane-head .r{text-align:right}

/* ── readiness gates ───────────────────────────────── */
.gate{display:grid;grid-template-columns:18px 1fr auto;gap:10px;padding:8px var(--sp-4);border-bottom:1px solid var(--border);align-items:start;font-size:var(--fs-sm)}
.gate:last-child{border-bottom:0}
.gate:hover{background:var(--surface-2)}
.gate-i{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-size:10px;font-weight:700;flex-shrink:0;margin-top:1px}
.gate[data-s="passed"] .gate-i{background:var(--success-bg);color:var(--success)}
.gate[data-s="failed"] .gate-i{background:var(--danger-bg);color:var(--danger)}
.gate[data-s="pending"] .gate-i{background:var(--neutral-bg);color:var(--text-subtle)}
.gate[data-s="blocked"] .gate-i{background:var(--warning-bg);color:var(--warning)}
.gate[data-s="running"] .gate-i{background:var(--accent-bg);color:var(--accent)}
.gate-t{font-weight:500}
.gate[data-s="pending"] .gate-t{color:var(--text-muted);font-weight:400}
.gate-s{font-size:var(--fs-xs);color:var(--text-muted);margin-top:2px}
.gate-r{display:flex;align-items:center;gap:8px;flex-shrink:0}
.gate-num{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-faint);width:20px;text-align:right}

/* ── integration card ──────────────────────────────── */
.intg{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-4);display:flex;flex-direction:column;gap:10px;cursor:pointer}
.intg:hover{border-color:var(--border-strong);box-shadow:var(--shadow-1)}
.intg-h{display:flex;align-items:flex-start;gap:10px}
.intg-mark{width:30px;height:30px;border-radius:var(--r);background:var(--surface-3);display:grid;place-items:center;font-weight:600;font-size:var(--fs-sm);flex-shrink:0;color:var(--text-muted)}
.intg-t{font-size:var(--fs-md);font-weight:600}
.intg-p{font-size:var(--fs-xs);color:var(--text-muted);margin-top:1px}
.intg-steps{display:flex;gap:3px;align-items:center}
.intg-steps i{height:4px;flex:1;border-radius:2px;background:var(--surface-3)}
.intg-steps i.done{background:var(--success)}
.intg-steps i.curr{background:var(--accent)}
.intg-steps i.blocked{background:var(--warning)}
.intg-f{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:var(--fs-xs);color:var(--text-muted)}

/* ── evidence rows ─────────────────────────────────── */
.ev{display:grid;grid-template-columns:22px minmax(180px,1.6fr) 90px 96px minmax(120px,1fr) minmax(110px,.9fr) auto;gap:var(--sp-3);align-items:center;padding:9px var(--sp-4);border-bottom:1px solid var(--border);font-size:var(--fs-sm)}
.ev:last-child{border-bottom:0}
.ev:hover{background:var(--surface-2)}
.ev-i{width:22px;height:22px;border-radius:var(--r-sm);display:grid;place-items:center;background:var(--surface-3);color:var(--text-muted);flex-shrink:0}
.ev-t{font-weight:500}
.ev-t small{display:block;font-size:var(--fs-xs);color:var(--text-muted);font-weight:400}
.ev[data-hist="1"]{background:var(--surface-2)}
.ev[data-hist="1"] .ev-t{color:var(--text-muted)}

/* ── code / evidence viewer ────────────────────────── */
.code{background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--r);padding:10px 12px;font-family:var(--font-mono);font-size:var(--fs-xs);line-height:1.6;color:var(--text-muted);white-space:pre-wrap;word-break:break-word;max-height:340px;overflow:auto}
.code .k{color:var(--purple)}
.code .s{color:var(--success)}
.code .n{color:var(--accent)}

/* ── kv list ───────────────────────────────────────── */
.kv{display:grid;grid-template-columns:minmax(120px,180px) 1fr;gap:7px var(--sp-4);font-size:var(--fs-md);margin:0}
.kv dt{color:var(--text-muted)}
.kv dd{margin:0;display:flex;align-items:center;gap:6px;flex-wrap:wrap}

/* ── inline alert ──────────────────────────────────── */
.alert{display:flex;gap:10px;padding:10px 12px;border-radius:var(--r);font-size:var(--fs-sm);align-items:flex-start;border:1px solid transparent}
.alert svg{flex-shrink:0;margin-top:1px;width:14px;height:14px}
.alert b{font-weight:600}
.alert.info{background:var(--accent-bg);color:var(--accent);border-color:var(--accent-bg-strong)}
.alert.success{background:var(--success-bg);color:var(--success);border-color:var(--success-bg-strong)}
.alert.warning{background:var(--warning-bg);color:var(--warning);border-color:var(--warning-bg-strong)}
.alert.danger{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-bg-strong)}
.alert.neutral{background:var(--surface-2);color:var(--text-muted);border-color:var(--border)}

/* ── progress ──────────────────────────────────────── */
.bar{height:4px;background:var(--surface-3);border-radius:var(--r-full);overflow:hidden}
.bar>i{display:block;height:100%;background:var(--accent);border-radius:var(--r-full)}
.bar.success>i{background:var(--success)}
.bar.warning>i{background:var(--warning)}
.bar.danger>i{background:var(--danger)}
.bar.lg{height:7px}

/* ── empty / loading ───────────────────────────────── */
.empty{padding:44px var(--sp-4);text-align:center;color:var(--text-muted);font-size:var(--fs-sm)}
.empty .gl{font-size:20px;opacity:.45;margin-bottom:8px;display:block}
.empty h3{font-size:var(--fs-md);color:var(--text);margin-bottom:4px}
.empty .btn{margin-top:var(--sp-3)}
.skel{background:linear-gradient(90deg,var(--surface-3) 25%,var(--surface-hover) 37%,var(--surface-3) 63%);background-size:400% 100%;animation:sk 1.4s ease infinite;border-radius:var(--r-sm)}
@keyframes sk{0%{background-position:100% 50%}100%{background-position:0 50%}}
.skel-row{height:var(--row-h);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 var(--sp-3);gap:var(--sp-3)}
@media (prefers-reduced-motion:reduce){.skel{animation:none}*{transition:none!important}}

/* ── drawer / modal ────────────────────────────────── */
.scrim{position:fixed;inset:0;background:rgba(13,17,22,.35);z-index:var(--z-drawer);backdrop-filter:blur(1px)}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,92vw);background:var(--surface);border-left:1px solid var(--border);box-shadow:var(--shadow-drawer);z-index:var(--z-drawer);display:flex;flex-direction:column}
.drawer-h{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);flex-shrink:0}
.drawer-h h2{font-size:var(--fs-lg);flex:1}
.drawer-b{flex:1;overflow-y:auto;padding:var(--sp-4)}
.drawer-f{padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--border);background:var(--surface-2);display:flex;gap:var(--sp-2);align-items:center;flex-shrink:0}
.modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(520px,92vw);max-height:86vh;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-pop);z-index:var(--z-modal);display:flex;flex-direction:column}
.modal-h{padding:var(--sp-4) var(--sp-4) var(--sp-3);border-bottom:1px solid var(--border)}
.modal-h h2{font-size:var(--fs-lg)}
.modal-h p{margin:6px 0 0;font-size:var(--fs-sm);color:var(--text-muted)}
.modal-b{padding:var(--sp-4);overflow-y:auto;flex:1}
.modal-f{padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--border);background:var(--surface-2);display:flex;gap:var(--sp-2);justify-content:flex-end;border-radius:0 0 var(--r-lg) var(--r-lg)}
.scope{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r);padding:var(--sp-3);font-size:var(--fs-sm)}
.scope dl{display:grid;grid-template-columns:auto 1fr;gap:5px var(--sp-3);margin:0}
.scope dt{color:var(--text-muted)}
.scope dd{margin:0;font-weight:500}

/* ── toast ─────────────────────────────────────────── */
.toasts{position:fixed;bottom:var(--sp-5);left:50%;transform:translateX(-50%);z-index:var(--z-toast);display:flex;flex-direction:column;gap:8px;align-items:center}
.toast{display:flex;align-items:center;gap:10px;background:var(--text);color:var(--bg);padding:9px 14px;border-radius:var(--r);font-size:var(--fs-sm);box-shadow:var(--shadow-pop);max-width:min(520px,92vw)}
.toast .btn{background:transparent;border-color:rgba(255,255,255,.25);color:inherit;box-shadow:none}

/* ── tooltip ───────────────────────────────────────── */
[data-tt]{position:relative}
[data-tt]::after{content:attr(data-tt);position:absolute;bottom:100%;left:50%;transform:translate(-50%,-5px);background:#1a1f2a;color:#f0f2f5;font-size:var(--fs-xs);font-weight:400;padding:5px 8px;border-radius:5px;pointer-events:none;opacity:0;transition:opacity var(--dur-fast);z-index:var(--z-tooltip);width:max-content;max-width:260px;text-align:center;line-height:1.4}
[data-tt]:hover::after,[data-tt]:focus-visible::after,[data-tt][data-open]::after{opacity:1}
.info-i{display:inline-grid;place-items:center;width:13px;height:13px;border-radius:50%;color:var(--text-faint);font:italic 700 10px/1 serif;cursor:help;user-select:none;background:none;border:0;padding:0}
.info-i:hover{color:var(--text-muted)}

/* ── misc ──────────────────────────────────────────── */
.cbx{appearance:none;width:14px;height:14px;border:1px solid var(--border-strong);border-radius:3px;background:var(--surface);position:relative;cursor:pointer;vertical-align:middle;flex-shrink:0;margin:0}
.cbx:checked{background:var(--accent);border-color:var(--accent)}
.cbx:checked::after{content:"";position:absolute;left:4px;top:1px;width:4px;height:8px;border:solid #fff;border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}
.cbx[data-ind="1"]{background:var(--accent);border-color:var(--accent)}
.cbx[data-ind="1"]::after{content:"";position:absolute;left:2px;right:2px;top:5px;height:2px;background:#fff;border:0;transform:none;border-radius:1px;width:auto}
.avatar{width:24px;height:24px;border-radius:50%;background:var(--surface-3);display:inline-grid;place-items:center;font-size:9px;font-weight:600;color:var(--text-muted);flex-shrink:0}
.secret{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-muted);background:var(--surface-3);padding:2px 7px;border-radius:var(--r-sm);letter-spacing:.06em}
.pagination{display:flex;align-items:center;gap:var(--sp-3);padding:9px var(--sp-3);border-top:1px solid var(--border);font-size:var(--fs-sm);color:var(--text-muted)}
.timeline{position:relative;padding-left:18px}
.timeline::before{content:"";position:absolute;left:4px;top:6px;bottom:6px;width:1px;background:var(--border)}
.tl-item{position:relative;padding:5px 0 9px}
.tl-item::before{content:"";position:absolute;left:-17px;top:10px;width:7px;height:7px;border-radius:50%;background:var(--border-strong);outline:2px solid var(--surface)}
.tl-item[data-s="ok"]::before{background:var(--success)}
.tl-item[data-s="fail"]::before{background:var(--danger)}
.tl-item[data-s="warn"]::before{background:var(--warning)}
.tl-t{font-size:var(--fs-sm);font-weight:500}
.tl-m{font-size:var(--fs-xs);color:var(--text-muted);margin-top:1px}

/* ── auth / public surfaces ────────────────────────── */
.auth{min-height:100vh;display:grid;place-items:center;background:var(--bg);padding:var(--sp-5)}
.auth-card{width:min(400px,100%);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-6);box-shadow:var(--shadow-2)}
.auth-brand{display:flex;align-items:center;gap:9px;margin-bottom:var(--sp-5)}
.auth-f{display:flex;flex-direction:column;gap:5px;margin-bottom:var(--sp-3)}
.auth-f label{font-size:var(--fs-sm);font-weight:500}
.auth-f input{height:34px;padding:0 10px;border:1px solid var(--border-strong);border-radius:var(--r);background:var(--surface);outline:none}
.auth-f input:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--accent-bg)}
.auth-f .err{font-size:var(--fs-xs);color:var(--danger)}
.state-page{min-height:100vh;display:grid;place-items:center;text-align:center;padding:var(--sp-6)}
.state-page .code-n{font-family:var(--font-mono);font-size:44px;font-weight:600;color:var(--text-faint);letter-spacing:-.03em}

/* ── maintenance on small screens (§4.12) ──────────── */
/* Server renders data-maintenance-mobile="allow|block" on <html> from the
   effective maintenance.maintenanceMobile setting. */
.maint-mobile-notice{display:none}
@media (max-width:767px){
  [data-maintenance-mobile="block"] .maint-danger{display:none}
  [data-maintenance-mobile="block"] .maint-mobile-notice{display:block;margin-bottom:var(--sp-4)}
}

/* ── responsive ────────────────────────────────────── */
@media (max-width:1280px){.g5{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:1024px){
  .app{grid-template-columns:var(--sidebar-w-collapsed) 1fr}
  .sb-name,.sb-glabel,.sb-item .label,.sb-count,.sb-build,.sb-foot-text{display:none}
  .sb-item{justify-content:center;padding:7px 0}
  .tb-search{width:200px}
  .g3,.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .lane,.lane-head{grid-template-columns:14px minmax(140px,1.4fr) repeat(3,minmax(52px,.5fr)) auto}
  .lane .m-hide,.lane-head .m-hide{display:none}
  .ev{grid-template-columns:22px 1fr 96px auto}
  .ev .m-hide{display:none}
}
@media (max-width:767px){
  .app{grid-template-columns:1fr;grid-template-rows:var(--topbar-h) 1fr}
  .sidebar{position:fixed;top:0;bottom:0;left:0;width:270px;z-index:var(--z-modal);transform:translateX(-100%);transition:transform var(--dur) var(--ease)}
  .sidebar[data-open="1"]{transform:none;box-shadow:var(--shadow-pop)}
  .sb-name,.sb-glabel,.sb-item .label,.sb-count,.sb-build,.sb-foot-text{display:block}
  .sb-item{justify-content:flex-start;padding:7px var(--sp-3)}
  .main-inner{padding:var(--sp-3)}
  .g2,.g3,.g4,.g5{grid-template-columns:1fr}
  .tb-search{width:auto;flex:1}
  .tb-crumb{display:none}
  .page-h{flex-direction:column;align-items:stretch}
  .page-h-actions{flex-wrap:wrap}
  .lane,.lane-head{grid-template-columns:14px 1fr auto;gap:8px}
  .lane .m-hide,.lane-head .m-hide,.lane .t-hide{display:none}
  .drawer{width:100%}
  .kv{grid-template-columns:1fr;gap:2px}
  .kv dt{font-size:var(--fs-xs);margin-top:8px}
  .card-mobile-scroll{overflow-x:auto}
}

/* Production compatibility layer for v0.3.10.6.132.
   Revision 10 tokens above are authoritative. These aliases let the existing
   server-rendered PHP surfaces consume them while old release styles are
   removed route by route. */
:root{
  --panel:var(--surface);--line:var(--border);--muted:var(--text-muted);
  --blue:var(--accent);--blue-2:var(--accent-bg);--green:var(--success);
  --green-bg:var(--success-bg);--amber:var(--warning);--amber-bg:var(--warning-bg);
  --red:var(--danger);--red-bg:var(--danger-bg);--shadow:var(--shadow-1);
  --radius:var(--r-md);--panel-radius:var(--r-md);--control-radius:var(--r);
  --v109-bg:var(--bg);--v109-surface:var(--surface);--v109-surface-2:var(--surface-2);
  --v109-border:var(--border);--v109-text:var(--text);--v109-muted:var(--text-muted);
  --v109-faint:var(--text-faint);--v109-accent:var(--accent);--v109-accent-soft:var(--accent-bg);
  --v109-good:var(--success);--v109-good-soft:var(--success-bg);
  --v109-warn:var(--warning);--v109-warn-soft:var(--warning-bg);--v109-bad:var(--danger);
  --swpi-surface:var(--surface);--swpi-surface-2:var(--surface-2);
  --swpi-border:var(--border);--swpi-border-soft:var(--border);
  --swpi-text:var(--text);--swpi-muted:var(--text-muted);--swpi-subtle:var(--text-subtle);
  --swpi-primary:var(--accent);--swpi-blue:var(--accent);--swpi-blue-bg:var(--accent-bg);
  --swpi-green:var(--success);--swpi-green-bg:var(--success-bg);
  --swpi-amber:var(--warning);--swpi-amber-bg:var(--warning-bg);--swpi-red-bg:var(--danger-bg);
  color-scheme:light;
}
[data-theme="dark"]{color-scheme:dark}

html,body{font-family:var(--font-sans)!important;font-size:var(--fs-md)!important;line-height:var(--lh-base)!important;background:var(--bg)!important;color:var(--text)!important}
body.app{display:grid!important;grid-template-columns:var(--sidebar-w) minmax(0,1fr)!important;grid-template-rows:var(--topbar-h) minmax(0,1fr)!important;height:100vh!important;min-height:0!important;overflow:hidden!important}
body.app.nav-collapsed{grid-template-columns:var(--sidebar-w-collapsed) minmax(0,1fr)!important}
.sidebar{position:relative!important;inset:auto!important;grid-row:1/3!important;width:auto!important;min-width:0!important;height:auto!important;padding:0!important;background:var(--surface-2)!important;color:var(--text)!important;border-right:1px solid var(--border)!important;box-shadow:none!important;overflow:hidden!important}
.main{grid-column:2!important;grid-row:1/3!important;margin:0!important;padding:0!important;max-width:none!important;min-width:0!important;min-height:0!important;overflow:auto!important;background:var(--bg)!important}
.topbar{position:sticky!important;top:0!important;z-index:var(--z-sticky)!important;height:var(--topbar-h)!important;min-height:var(--topbar-h)!important;margin:0!important;padding:0 var(--sp-4)!important;background:var(--surface)!important;border-bottom:1px solid var(--border)!important;box-shadow:none!important;align-items:center!important}
.main-inner,.shell-v129.route-settings .main-inner{width:100%!important;max-width:none!important;margin:0!important;padding:var(--sp-5)!important}
.sb-brand{background:var(--surface-2)!important}.sb-mark{background:var(--text)!important;color:var(--surface)!important}.sb-name,.sb-user strong{color:var(--text)!important}
.sb-scroll{scrollbar-color:var(--border-strong) transparent}
.nav-link,.sb-item{color:var(--text-muted)!important;background:transparent!important;border:1px solid transparent!important;box-shadow:none!important}
.nav-link:hover,.sb-item:hover{color:var(--text)!important;background:var(--surface-hover)!important;text-decoration:none!important}
.nav-link.active,.sb-item[aria-current="page"]{color:var(--text)!important;background:var(--surface)!important;border-color:var(--border)!important;box-shadow:var(--shadow-1)!important}

h1,h2,h3,h4{color:var(--text)!important}.page-h h1{font-size:var(--fs-2xl)!important}.page-h .desc,.hero p,.panel-head p{color:var(--text-muted)!important}
.panel,.hero,.detail-hero,.setting-card,.stat-card,.kpi-card,.diag-health-card,.readiness-card{background:var(--surface)!important;color:var(--text)!important;border:1px solid var(--border)!important;border-radius:var(--r-md)!important;box-shadow:none!important}
.panel{padding:var(--sp-4)!important;margin:0 0 var(--sp-3)!important;overflow:visible}
.panel.flush,.card.flush{padding:0!important}.panel-head{margin:0 0 var(--sp-3)!important;gap:var(--sp-3)!important}.panel-head h2{font-size:var(--fs-md)!important;margin:0!important}
.hero,.detail-hero{padding:var(--sp-4)!important;margin-bottom:var(--sp-4)!important;background:var(--surface)!important}
.hero h2,.detail-hero h2{font-size:var(--fs-xl)!important;letter-spacing:-.012em!important}
.stat-grid,.kpi-grid,.diag-health-grid,.offer-readiness-grid{gap:var(--sp-3)!important;margin-bottom:var(--sp-4)!important;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))!important}
.stat-card,.kpi-card,.diag-health-card,.readiness-card{padding:var(--sp-3)!important;min-height:78px!important}
.stat-card:before{display:none!important}.stat-card strong,.kpi-card strong,.diag-health-card strong,.readiness-card strong{font-family:var(--font-mono)!important;font-size:var(--fs-xl)!important;line-height:1.2!important;margin:4px 0!important;letter-spacing:-.02em!important}.stat-card span,.kpi-card span,.diag-health-card span,.readiness-card span{font-size:var(--fs-xs)!important;color:var(--text-muted)!important}

.btn,button{min-height:var(--ctl-h)!important;height:var(--ctl-h)!important;padding:0 10px!important;border:1px solid var(--border-strong)!important;border-radius:var(--r)!important;background:var(--surface)!important;color:var(--text)!important;font-size:var(--fs-sm)!important;font-weight:500!important;box-shadow:var(--shadow-1)!important;filter:none!important}
.btn:hover,button:hover{background:var(--surface-hover)!important;color:var(--text)!important;filter:none!important;text-decoration:none!important}
.btn.primary,button.primary,.btn:not(.secondary):not(.ghost):not(.danger)[type="submit"]{background:var(--accent)!important;color:var(--accent-fg)!important;border-color:var(--accent)!important}
.btn.primary:hover,button.primary:hover,.btn:not(.secondary):not(.ghost):not(.danger)[type="submit"]:hover{background:var(--accent-hover)!important;color:var(--accent-fg)!important}
.btn.secondary,button.secondary,.btn.ghost{background:var(--surface)!important;color:var(--text)!important;border-color:var(--border-strong)!important;box-shadow:var(--shadow-1)!important}
.btn.ghost{background:transparent!important;border-color:transparent!important;box-shadow:none!important;color:var(--text-muted)!important}
.btn.danger,button.danger,.danger button{color:var(--danger)!important;background:var(--surface)!important;border-color:var(--danger-bg-strong)!important}.btn.danger:hover,button.danger:hover{background:var(--danger-bg)!important}
.btn.small,button.small,.btn.sm,button.sm{height:var(--ctl-h-sm)!important;min-height:var(--ctl-h-sm)!important;padding:0 8px!important;border-radius:var(--r-sm)!important;font-size:var(--fs-xs)!important}.btn.icon{padding:0!important}
.btn[disabled],button[disabled],[aria-disabled="true"]{opacity:.5!important;cursor:not-allowed!important;box-shadow:none!important}

input,select,textarea{width:100%;min-height:var(--ctl-h);padding:0 9px!important;border:1px solid var(--border-strong)!important;border-radius:var(--r)!important;background:var(--surface)!important;color:var(--text)!important;box-shadow:none!important;font:inherit!important}
textarea{height:auto!important;min-height:80px;padding:8px 9px!important}select[multiple]{height:auto!important;padding:6px!important}
input:focus,select:focus,textarea:focus{outline:2px solid var(--border-focus)!important;outline-offset:1px!important;border-color:var(--border-focus)!important;box-shadow:none!important}
input[type="checkbox"]{width:15px!important;height:15px!important;min-height:15px!important;padding:0!important;accent-color:var(--accent)}

.table-scroll,.tbl-wrap{width:100%;max-width:100%;overflow:auto!important;border-radius:var(--r-md)}
.data-table,.tbl{width:100%!important;min-width:820px!important;border-collapse:collapse!important;border-spacing:0!important;background:var(--surface)!important;font-size:var(--fs-md)!important}
.data-table th,.tbl th{height:32px!important;padding:0 var(--sp-3)!important;background:var(--surface-2)!important;color:var(--text-muted)!important;border-bottom:1px solid var(--border)!important;font-size:var(--fs-xs)!important;font-weight:500!important;letter-spacing:.03em!important;text-transform:uppercase!important;white-space:nowrap!important}
.data-table td,.tbl td{height:var(--row-h)!important;padding:5px var(--sp-3)!important;background:transparent!important;color:var(--text)!important;border-bottom:1px solid var(--border)!important;vertical-align:middle!important}
.data-table tbody tr:hover,.tbl tbody tr:hover{background:var(--surface-hover)!important}.data-table small,.tbl small{color:var(--text-muted)!important}

.badge,.chip{height:var(--chip-h)!important;min-height:var(--chip-h)!important;padding:0 7px!important;border-radius:var(--r-sm)!important;background:var(--neutral-bg)!important;color:var(--neutral-fg)!important;border:0!important;box-shadow:none!important;font-size:var(--fs-xs)!important;font-weight:500!important}
.badge.success,.badge-success,.chip.healthy,.chip.current,.chip.success{background:var(--success-bg)!important;color:var(--success)!important}.badge.warning,.badge.warm,.chip.attention,.chip.warning,.chip.stale{background:var(--warning-bg)!important;color:var(--warning)!important}.badge.danger,.badge-hot,.chip.blocked,.chip.failed{background:var(--danger-bg)!important;color:var(--danger)!important}.badge.info,.badge-info,.chip.info,.chip.moving,.chip.waiting{background:var(--info-bg)!important;color:var(--info)!important}
.notice,.alert{border-radius:var(--r)!important;padding:10px 12px!important;margin:0 0 var(--sp-3)!important;box-shadow:none!important;font-size:var(--fs-sm)!important;font-weight:400!important}.notice.info,.alert.info{background:var(--info-bg)!important;color:var(--info)!important;border-color:color-mix(in srgb,var(--info) 25%,var(--border))!important}.notice.success,.alert.success{background:var(--success-bg)!important;color:var(--success)!important;border-color:var(--success-bg-strong)!important}.notice.warning,.alert.warning{background:var(--warning-bg)!important;color:var(--warning)!important;border-color:var(--warning-bg-strong)!important}.notice.error,.notice.danger,.alert.error,.alert.danger{background:var(--danger-bg)!important;color:var(--danger)!important;border-color:var(--danger-bg-strong)!important}.notice.neutral,.alert.neutral{background:var(--surface-2)!important;color:var(--text-muted)!important;border-color:var(--border)!important}
.info-grid div,.metric-row div,.action-list a,.action-list>div,.offer-box,.empty-state,.scope,.codebox,.json-box{background:var(--surface-2)!important;color:var(--text)!important;border:1px solid var(--border)!important;border-radius:var(--r)!important;box-shadow:none!important}
.json-box,.codebox{background:var(--surface-sunken)!important;color:var(--text-muted)!important;font-family:var(--font-mono)!important}

details>summary{color:var(--text)!important;background:var(--surface-2)!important;border:1px solid var(--border)!important;border-radius:var(--r)!important;padding:8px 10px!important;list-style:none!important;cursor:pointer!important}
details>summary::-webkit-details-marker{display:none}.advanced-box[open]>summary,.v113-advanced[open]>summary{border-color:var(--border-strong)!important;background:var(--surface-3)!important}
.v113-row-menu>summary,.v113-page-menu>summary{background:var(--surface)!important}.v113-menu-panel,.v113-saved-panel,.v132-row-menu-portal{background:var(--surface)!important;color:var(--text)!important;border:1px solid var(--border)!important;border-radius:var(--r-md)!important;box-shadow:var(--shadow-pop)!important}
.v132-row-menu-portal{position:fixed!important;z-index:var(--z-tooltip)!important;min-width:220px!important;max-width:min(360px,calc(100vw - 24px))!important;padding:6px!important;overflow:auto!important}
.v132-row-menu-portal a,.v132-row-menu-portal button{display:flex!important;width:100%!important;justify-content:flex-start!important;height:30px!important;min-height:30px!important;padding:0 9px!important;border:0!important;background:transparent!important;box-shadow:none!important;color:var(--text)!important}.v132-row-menu-portal a:hover,.v132-row-menu-portal button:hover{background:var(--surface-hover)!important;text-decoration:none!important}.v132-row-menu-portal .danger{color:var(--danger)!important}

/* List drawers and durable action receipts. */
.v132-drawer-scrim{position:fixed;inset:0;z-index:var(--z-modal);background:color-mix(in srgb,var(--text) 18%,transparent);backdrop-filter:blur(1px)}
.v132-list-drawer{position:fixed;z-index:calc(var(--z-modal) + 1);top:0;right:0;bottom:0;width:min(720px,calc(100vw - 48px));padding:var(--sp-4);background:var(--surface);border-left:1px solid var(--border);box-shadow:var(--shadow-pop);overflow:auto}
.v132-list-drawer>header{position:sticky;top:calc(-1*var(--sp-4));z-index:1;display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-4);margin:calc(-1*var(--sp-4)) calc(-1*var(--sp-4)) var(--sp-4);padding:var(--sp-4);background:var(--surface);border-bottom:1px solid var(--border)}
.v132-list-drawer>header span,.v132-action-result>header span{display:block;margin-bottom:3px;color:var(--text-muted);font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.v132-list-drawer>header h2,.v132-action-result>header h3{margin:0;font-size:var(--fs-lg)!important}.v132-list-drawer>header p,.v132-action-result>header p{margin:3px 0 0;color:var(--text-muted)}
.v132-list-drawer .tbl{min-width:640px!important}
.v132-action-result{margin-top:var(--sp-4);padding:var(--sp-4);background:var(--surface-2);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--r-md)}
.v132-action-result.success{border-left-color:var(--success)}.v132-action-result.danger{border-left-color:var(--danger)}
.v132-action-result>header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-3)}
.v132-action-result dl{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:7px var(--sp-4);margin:0 0 var(--sp-3);padding:var(--sp-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--r)}
.v132-action-result dt{color:var(--text-muted)}.v132-action-result dd{margin:0;color:var(--text);font-weight:500}

/* Public authentication surfaces follow the same default-light contract. */
body.login{min-height:100vh;margin:0;display:grid;place-items:center;padding:var(--sp-5);background:var(--bg)!important;color:var(--text)!important}
body.login .login-box{width:min(420px,100%);margin:0;padding:var(--sp-6);background:var(--surface)!important;color:var(--text)!important;border:1px solid var(--border)!important;border-radius:var(--r-lg)!important;box-shadow:var(--shadow-2)!important}
body.login .login-box h1{font-size:var(--fs-2xl)!important;margin:var(--sp-3) 0 var(--sp-2)!important}body.login .login-box p{color:var(--text-muted)!important}body.login .login-box label{display:grid;gap:6px;margin-top:var(--sp-3);color:var(--text-muted);font-size:var(--fs-sm)}body.login .login-box button{width:100%;margin-top:var(--sp-4)}
body.login .brand-mark{display:grid;place-items:center;width:40px;height:40px;background:var(--text)!important;color:var(--surface)!important;border-radius:var(--r)!important;font-weight:700}

/* Settings: fluid page, readable sticky category rail, and dense two-column
   controls. Light and dark both use token surfaces; no white accordion wells. */
.shell-v132.route-settings .v124-settings-form{display:grid!important;grid-template-columns:clamp(210px,15vw,250px) minmax(0,1fr)!important;gap:var(--sp-5)!important;align-items:start!important;width:100%!important}
.shell-v132.route-settings .v124-settings-nav{position:sticky!important;top:calc(var(--topbar-h) + var(--sp-5))!important;max-height:calc(100vh - var(--topbar-h) - 2*var(--sp-5))!important;padding:var(--sp-2)!important;background:var(--surface)!important;border:1px solid var(--border)!important;border-radius:var(--r-md)!important;overflow:auto!important}
.shell-v132.route-settings .v124-settings-nav>a{min-height:30px!important;padding:6px 8px!important;border-radius:var(--r-sm)!important;color:var(--text-muted)!important}.shell-v132.route-settings .v124-settings-nav>a:hover,.shell-v132.route-settings .v124-settings-nav>a.active{background:var(--surface-hover)!important;color:var(--text)!important;text-decoration:none!important}
.shell-v132.route-settings .settings-grid{display:flex!important;flex-direction:column!important;gap:var(--sp-3)!important;min-width:0!important;width:100%!important}
.shell-v132.route-settings .setting-card{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:0 var(--sp-5)!important;padding:0 var(--sp-4) var(--sp-4)!important;margin:0!important;scroll-margin-top:calc(var(--topbar-h) + var(--sp-4))!important;overflow:visible!important}
.shell-v132.route-settings .setting-card>.panel-head{grid-column:1/-1!important;margin:0 calc(-1*var(--sp-4)) var(--sp-3)!important;padding:10px var(--sp-4)!important;background:var(--surface-2)!important;border-bottom:1px solid var(--border)!important;border-radius:var(--r-md) var(--r-md) 0 0!important}
.shell-v132.route-settings .setting-card>.notice,.shell-v132.route-settings .setting-card>details,.shell-v132.route-settings .setting-card>.setting-pair,.shell-v132.route-settings .setting-card>.choice-grid,.shell-v132.route-settings .setting-card>dl,.shell-v132.route-settings .setting-card>.setting-subsection,.shell-v132.route-settings .v127-settings-maintenance-grid{grid-column:1/-1!important}
.shell-v132.route-settings .setting-row,.shell-v132.route-settings .switch-row{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:7px!important;align-content:start!important;min-height:72px!important;margin:0!important;padding:10px 0!important;border-bottom:1px solid var(--border)!important}
.shell-v132.route-settings .switch-row{grid-template-columns:minmax(0,1fr) auto!important;align-items:center!important}.shell-v132.route-settings .switch-row>input{justify-self:end!important}
.shell-v132.route-settings .setting-row label,.shell-v132.route-settings .switch-row strong{font-size:var(--fs-sm)!important;font-weight:500!important;color:var(--text)!important}.shell-v132.route-settings .setting-row label>span,.shell-v132.route-settings .switch-row small{display:block!important;margin-top:2px!important;color:var(--text-muted)!important;font-size:var(--fs-xs)!important;font-weight:400!important;line-height:1.4!important}
.shell-v132.route-settings .setting-pair{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:0 var(--sp-5)!important}.shell-v132.route-settings .setting-row.wide{grid-column:1/-1!important;grid-template-columns:minmax(260px,.9fr) minmax(240px,1.1fr)!important;align-items:center!important}
.shell-v132.route-settings .setting-subsection{background:var(--surface-2)!important;border-color:var(--border)!important}.shell-v132.route-settings .setting-subsection-emphasis{background:var(--accent-bg)!important;border-color:var(--accent-bg-strong)!important}.shell-v132.route-settings .scan-capacity-flow>div,.shell-v132.route-settings .settings-contract-overview>div{background:var(--surface)!important;border-color:var(--border)!important}.shell-v132.route-settings .settings-contract-overview{background:var(--surface-2)!important;border-color:var(--border)!important}
.shell-v132.route-settings .advanced-box>summary{background:var(--surface-2)!important;color:var(--text-muted)!important}.shell-v132.route-settings .advanced-box[open]>summary{background:var(--surface-3)!important;color:var(--text)!important}.shell-v132.route-settings .advanced-box[open]{background:var(--surface)!important}
.shell-v132.route-settings .settings-savebar{position:sticky!important;bottom:0!important;z-index:var(--z-sticky)!important;grid-column:1/-1!important;margin:0!important;padding:10px var(--sp-3)!important;background:color-mix(in srgb,var(--surface) 94%,transparent)!important;border:1px solid var(--border)!important;border-radius:var(--r-md)!important;box-shadow:var(--shadow-2)!important;backdrop-filter:blur(8px)!important}

/* Revision 10 width policy: dense operational surfaces fill the canvas;
   prose alone is measure-limited and left aligned. */
.route-prospects .main-inner,.route-contact-review .main-inner,.route-queues .main-inner,.route-quality .main-inner,.route-offer-intelligence .main-inner,.route-websites .main-inner,.route-vendors .main-inner,.route-financials .main-inner,.route-discovery .main-inner,.route-worker .main-inner,.route-imports .main-inner,.route-audit .main-inner,.route-diagnostics .main-inner,.route-users .main-inner{max-width:none!important}
.prose,.panel p,.card p{max-width:var(--measure)}

@media print{
  :root,[data-theme="dark"]{--bg:#fff;--surface:#fff;--surface-2:#fafbfc;--surface-3:#f1f2f5;--text:#0d1116;--text-muted:#5c6573;--border:#e6e8ec;color-scheme:light}
  .sidebar,.topbar,.settings-savebar,.v113-row-menu,.v113-page-menu{display:none!important}
  body.app{display:block!important;height:auto!important;overflow:visible!important}.main{display:block!important;overflow:visible!important}.main-inner{padding:0!important}
}

@media(max-width:1024px){
  body.app{grid-template-columns:var(--sidebar-w-collapsed) minmax(0,1fr)!important}
  .shell-v132.route-settings .v124-settings-form{grid-template-columns:1fr!important}.shell-v132.route-settings .v124-settings-nav{top:var(--topbar-h)!important;display:flex!important;gap:4px!important;max-height:none!important;overflow-x:auto!important;overflow-y:hidden!important;white-space:nowrap!important;z-index:calc(var(--z-sticky) - 1)!important}.shell-v132.route-settings .v124-settings-nav>a{flex:0 0 auto!important}
}
@media(max-width:767px){
  body.app{grid-template-columns:1fr!important}.main{grid-column:1!important}.main-inner,.shell-v129.route-settings .main-inner{padding:var(--sp-3)!important}
  .sidebar{position:fixed!important;inset:0 auto 0 0!important;width:270px!important;z-index:var(--z-modal)!important;transform:translateX(-100%)!important}.nav-open .sidebar,.sidebar[data-open="1"]{transform:none!important}
  .shell-v132.route-settings .setting-card,.shell-v132.route-settings .setting-pair{grid-template-columns:1fr!important}.shell-v132.route-settings .setting-row.wide{grid-template-columns:1fr!important}.shell-v132.route-settings .settings-contract-overview,.shell-v132.route-settings .scan-capacity-flow{grid-template-columns:1fr!important}
  .v132-list-drawer{width:100%;padding:var(--sp-3)}.v132-list-drawer>header{top:calc(-1*var(--sp-3));margin:calc(-1*var(--sp-3)) calc(-1*var(--sp-3)) var(--sp-3);padding:var(--sp-3)}.v132-action-result>header{display:grid}
}
