/* Firmviz theme — phase 2. One stylesheet for the whole shell: tokens, glass, panes, the left strip,
   the right rail and side panel, dialogs, tooltip, toasts, the Command Center, the Jarvis bar, the
   boot overlay, pages. The recipes follow the reference terminal's live futuristic pages, recoloured
   to Firmviz's gold; see docs/REUSE.md for the exact origin of each block. */
/* the two fonts, self-hosted under static/fonts (phase 7): no request ever goes to Google Fonts */
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400 700;font-display:swap;src:url('/static/fonts/JetBrainsMono-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400 700;font-display:swap;src:url('/static/fonts/JetBrainsMono-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:400 800;font-display:swap;src:url('/static/fonts/PlusJakartaSans-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:400 800;font-display:swap;src:url('/static/fonts/PlusJakartaSans-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF}

/* ── TOKENS ─────────────────────────────────────────────────────────── */
:root{
  --txt:#e8eaf0; --txt2:#c3c9d6; --txt3:#8b93a7; --txt4:#5b6275;
  --gold:#d4a24c; --gold2:#f1c76b; --gold-rgb:212,162,76; --gold2-rgb:241,199,107;
  --gold-dim:rgba(212,162,76,.14); --gold-line:rgba(212,162,76,.45); --gold-glow:rgba(212,162,76,.28);
  --green:#2ecc8f; --red:#ff5c6c; --amber:#ffb547; --blue:#4d9fff; --purple:#9b7bff;
  --green-rgb:46,204,143; --red-rgb:255,92,108; --amber-rgb:255,181,71; --blue-rgb:77,159,255; --purple-rgb:155,123,255;
  --bg0:#05070d; --bg1:#0d1117; --bg2:#141925; --bg3:#1b2030;
  --bg:radial-gradient(1250px 780px at 24% -14%, #141a2b 0%, #0b0f1a 45%, #05070d 100%);
  --glass-bg:rgba(12,16,24,.62); --glass-border:rgba(140,160,190,.16); --glass-shadow:0 10px 30px rgba(0,0,0,.42);
  --hair:rgba(255,255,255,.06); --hair2:rgba(255,255,255,.12); --hair3:rgba(255,255,255,.16);
  --rail-ink:#8e98ab; --rail-hover:rgba(255,255,255,.08); --rail-on-bg:rgba(212,162,76,.16); --rail-on:#f1c76b;
  --pill-hover:rgba(77,159,255,.2);  /* the soft blue pill behind hovered links and keyboard focus */
  --sans:'Plus Jakarta Sans',system-ui,sans-serif; --mono:'JetBrains Mono',ui-monospace,monospace;
  --radius:10px; --strip-w:40px; --topbar-h:52px; --page-x:28px;
  --scroll:#24385f;  /* the scrollbar: navy (his 2026-11-04 note) */
  /* the strip's squares and icons follow its width (36–72 px, dragged at the edge) */
  --strip-sq:calc(var(--strip-w) - 8px); --strip-ico:calc((var(--strip-w) - 8px) * .5625);
}
html.light{
  --txt:#0d1120; --txt2:#2a3140; --txt3:#5b6275; --txt4:#8b93a7;
  --gold:#a8782a; --gold2:#b8862b; --gold-dim:rgba(168,120,42,.12); --gold-line:rgba(168,120,42,.5); --gold-glow:rgba(168,120,42,.18);
  --bg0:#ffffff; --bg1:#ffffff; --bg2:#f1f3f6; --bg3:#e6e9ef;
  --bg:radial-gradient(1250px 780px at 24% -14%, #ffffff 0%, #f1f3f6 55%, #e6e9ef 100%);
  --glass-bg:rgba(255,255,255,.74); --glass-border:rgba(0,0,0,.12); --glass-shadow:0 12px 40px rgba(0,0,0,.08);
  --hair:rgba(0,0,0,.06); --hair2:rgba(0,0,0,.10); --hair3:rgba(0,0,0,.14);
  --rail-ink:#5b6275; --rail-hover:rgba(0,0,0,.06); --rail-on-bg:rgba(168,120,42,.14); --rail-on:#8a6420;
  --pill-hover:rgba(42,120,220,.16);
  --scroll:#2c4a86;
}
html.light #ol-mark-grad .ol-mark-stop0{stop-color:#8a6420} html.light #ol-mark-grad .ol-mark-stop1{stop-color:#b8862b}
html.light .ol-mark-end{fill:#8a6420} html.light .ol-mark-fulcrum{fill:#b8862b}

/* ── BASE ───────────────────────────────────────────────────────────── */
*{margin:0;padding:0;box-sizing:border-box}
html{min-height:100%;color-scheme:dark;scrollbar-width:thin;scrollbar-color:var(--scroll) transparent}  /* color-scheme: the browser draws its own scrollbar and form widgets dark, never white */
html.light{color-scheme:light}
::-webkit-scrollbar{width:6px;height:6px} ::-webkit-scrollbar-thumb{background:var(--scroll);border-radius:3px} ::-webkit-scrollbar-thumb:hover{background:#3558a0} ::-webkit-scrollbar-track{background:transparent}
body{min-height:100vh;background:var(--bg) fixed;color:var(--txt);font:14px/1.5 var(--sans);display:flex;flex-direction:column}
/* links and clickable text: never an underline; a soft blue pill behind the hovered or keyboard-focused one (his 3b review) */
a{color:var(--gold2);text-decoration:none;border-radius:6px;transition:background .12s,box-shadow .12s}
a:hover,a:focus,a:focus-visible,.link:hover,.link:focus-visible,summary:hover,summary:focus-visible{text-decoration:none}
a:not(.btn):not(.pt-btn):not(.cs-tab):not(.chip):not(.cc-tile):not(.cc-row):not(.d):not(.brand):not(.cpm-item):hover,
a:not(.btn):not(.pt-btn):not(.cs-tab):not(.chip):not(.cc-tile):not(.cc-row):not(.d):not(.brand):not(.cpm-item):focus-visible,
.link:hover,.link:focus-visible,summary:hover,summary:focus-visible,[data-names]:hover{background:var(--pill-hover);box-shadow:0 0 0 4px var(--pill-hover);outline:none}
:focus-visible{outline:none}
button:focus-visible,[role=button]:focus-visible,[tabindex]:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible,.cs-tab:focus-visible,.pt-btn:focus-visible{box-shadow:0 0 0 3px var(--pill-hover)}
h1,h2,h3{font-family:var(--sans);font-weight:600;letter-spacing:-.2px}
h1{font-size:28px;line-height:1.15;margin-bottom:4px} h2{font-size:18px;margin-bottom:10px} h3{font-size:14px}
.sub{color:var(--txt3);font-size:11px;letter-spacing:1.4px;text-transform:uppercase;font-family:var(--mono)}
code,.mono,kbd{font-family:var(--mono);font-size:12px}
.num{font-family:var(--mono);font-variant-numeric:tabular-nums}
.muted{color:var(--txt3)} .ok{color:var(--green)} .bad{color:var(--red)} .up{color:var(--green)} .dn{color:var(--red)} .am{color:var(--amber)}
.hidden,[hidden]{display:none!important}

/* ── GLASS + PANES (the terminal's neutral glass: one hairline, radius 10, soft shadow) ── */
.glass{background:var(--glass-bg);backdrop-filter:blur(14px) saturate(1.3);-webkit-backdrop-filter:blur(14px) saturate(1.3);border:1px solid var(--glass-border);border-radius:var(--radius);box-shadow:var(--glass-shadow);position:relative;isolation:isolate}
.pane{overflow:hidden;display:flex;flex-direction:column;margin-bottom:18px}
.pane-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border-bottom:1px solid var(--hair);flex-shrink:0}
.pane-name{font-size:11px;font-weight:700;letter-spacing:1.6px;text-transform:uppercase;color:var(--txt);white-space:nowrap;font-family:var(--mono)}
.pane-counts{display:flex;gap:9px;font-size:11px;color:var(--txt2);letter-spacing:.5px;white-space:nowrap;flex-shrink:0;font-family:var(--mono)}
.pane-tools{display:flex;gap:5px;align-items:center}
.pane-body{flex:1;min-height:0;padding:12px 14px}
.pane-body.flush{padding:0}
.card{padding:22px 24px;margin-bottom:18px}
.grid{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.grid-2{display:grid;gap:18px;grid-template-columns:1.3fr 1fr;align-items:start}
.grid-3{display:grid;gap:18px;grid-template-columns:repeat(3,1fr);align-items:start}
@media (max-width:1100px){.grid-2,.grid-3{grid-template-columns:1fr}}
/* balanced columns (his 2026-11-04 ask, columns.js): each panel goes to the column that is shortest at that moment, so both end at
   about the same height; an emptied column takes no room; a long list scrolls inside its panel instead of stretching one column */
.grid-2>[data-col]:empty,.grid-3>[data-col]:empty{display:none}
.grid-2 .pane>.pane-body.flush,.grid-3 .pane>.pane-body.flush,.grid-2 .pane>.pane-body:has(>table),.grid-2 .pane>.pane-body:has(>.list),.grid-2 .pane>.pane-body:has(>ul.list){max-height:min(62vh,640px);overflow:auto;overscroll-behavior:contain}
.grid-2 .pane>.pane-body.flush{scrollbar-gutter:auto}

/* pill buttons and pick-one bars (the terminal's .pt-btn and sliced seg-bar: the container owns the border) */
.pt-btn{font:700 10px/1 var(--mono);padding:7px 12px;background:rgba(255,255,255,.03);border:1px solid var(--hair3);color:var(--txt2);letter-spacing:1px;cursor:pointer;border-radius:8px;box-shadow:none;text-transform:uppercase}
.pt-btn:hover{color:var(--txt);background:rgba(255,255,255,.07)}
.pt-btn.on{color:var(--gold2);border-color:var(--hair3);background:var(--rail-on-bg);box-shadow:none}
.seg-bar{display:inline-flex;align-items:stretch;gap:0!important;border:1px solid var(--hair3);border-radius:10px;overflow:hidden;background:rgba(255,255,255,.03);padding:0}
.seg-bar .pt-btn{border-radius:0;border:none;border-left:1px solid var(--hair2);background:transparent;padding:7px 12px}
.seg-bar .pt-btn:first-child{border-left:none}
.seg-bar .pt-btn.on{background:var(--rail-on-bg);color:var(--gold2)}

/* ── PILLS, BUTTONS, FORMS, TABLES ─────────────────────────────────── */
.pill{display:inline-block;border:1px solid var(--hair2);border-radius:999px;padding:2px 10px;font-size:11px;font-family:var(--mono);letter-spacing:.6px;color:var(--txt2);white-space:nowrap}
.pill.gold{color:var(--gold2);border-color:var(--gold-line);background:var(--gold-dim)}
.pill.green{color:var(--green);border-color:rgba(var(--green-rgb),.4);background:rgba(var(--green-rgb),.1)}
.pill.red{color:var(--red);border-color:rgba(var(--red-rgb),.4);background:rgba(var(--red-rgb),.1)}
.pill.amber{color:var(--amber);border-color:rgba(var(--amber-rgb),.4);background:rgba(var(--amber-rgb),.1)}
.pill.blue{color:var(--blue);border-color:rgba(var(--blue-rgb),.4);background:rgba(var(--blue-rgb),.1)}
.pill.warn{color:#05070d;background:var(--gold2);border-color:var(--gold2);font-weight:700}
.btn{font:600 12px var(--sans);letter-spacing:.4px;color:#05070d;background:linear-gradient(135deg,var(--gold),var(--gold2));border:none;border-radius:10px;padding:9px 16px;cursor:pointer;box-shadow:0 0 18px var(--gold-glow);display:inline-flex;align-items:center;gap:8px}
.btn:hover{filter:brightness(1.06);text-decoration:none}
.btn.ghost{background:transparent;color:var(--gold2);border:1px solid var(--gold-line);box-shadow:none}
.btn.ghost:hover{background:var(--gold-dim)}
.btn.danger{background:transparent;color:var(--red);border:1px solid rgba(var(--red-rgb),.45);box-shadow:none}
.btn.sm{padding:5px 10px;font-size:11px}
.link{background:none;border:none;color:var(--txt2);cursor:pointer;font:inherit;padding:0}
.link:hover{color:var(--gold2)}
form.inline{display:inline}
label{display:block;color:var(--txt3);font-size:10.5px;letter-spacing:1.2px;text-transform:uppercase;font-family:var(--mono);margin:12px 0 5px}
input,select,textarea{width:100%;background:rgba(255,255,255,.04);border:1px solid var(--hair2);border-radius:9px;color:var(--txt);padding:9px 12px;font:14px var(--sans);outline:none;transition:border-color .15s,box-shadow .15s}
html.light input,html.light select,html.light textarea{background:#fff}
/* native dropdown lists in the theme (his 2026-11-04 note): dark glass with readable text, gold on the chosen row; white in the light theme */
select{color-scheme:dark} html.light select{color-scheme:light}
select option,select optgroup{background:var(--bg2);color:var(--txt);padding:6px 10px;font:14px var(--sans)}
select option:checked{background:var(--bg3);color:var(--gold2)} select option:disabled{color:var(--txt4)}
html.light select option,html.light select optgroup{background:#fff;color:var(--txt)} html.light select option:checked{background:var(--bg2);color:var(--gold)}
input:focus,select:focus,textarea:focus{border-color:rgba(var(--blue-rgb),.55);box-shadow:0 0 0 3px var(--pill-hover)}
/* Dropdown lists in the theme (2026-11-05). Chrome 135+ lets a select be styled like any element (appearance:
   base-select), the list itself (::picker) and its rows included: rounded glass, the house font, gold on the chosen
   row, a chevron that turns. Other browsers keep their native list with the colours above. */
@supports (appearance:base-select){
  select,::picker(select){appearance:base-select}
  select{display:flex;align-items:center;gap:10px;min-height:38px;cursor:pointer}
  select:hover{border-color:rgba(255,255,255,.22)} html.light select:hover{border-color:rgba(11,16,32,.3)}
  select:disabled{opacity:.5;cursor:not-allowed} select:disabled:hover{border-color:var(--hair2)} select:disabled::picker-icon{opacity:.35}
  select::picker-icon{content:"";flex:0 0 auto;width:14px;height:14px;margin-left:auto;background:currentColor;opacity:.7;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") center/contain no-repeat;transition:transform .15s}
  select:open::picker-icon{transform:rotate(180deg)}
  ::picker(select){position-try-order:normal;margin:6px 0;padding:6px;border:1px solid var(--glass-border,var(--hair2));border-radius:12px;background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.015)),rgba(12,16,24,.55);backdrop-filter:blur(22px) saturate(1.4) brightness(1.12);-webkit-backdrop-filter:blur(22px) saturate(1.4) brightness(1.12);box-shadow:0 18px 44px -12px rgba(0,0,0,.6),0 0 0 1px rgba(0,0,0,.25),inset 0 1px 0 rgba(255,255,255,.08);color:var(--txt);font:14px var(--sans);max-height:min(320px,60vh);overflow:auto;scrollbar-width:thin;opacity:0;transform:translateY(-4px);transition:opacity .12s,transform .12s,display .12s allow-discrete,overlay .12s allow-discrete}
  ::picker(select):popover-open{opacity:1;transform:none}
  @starting-style{::picker(select):popover-open{opacity:0;transform:translateY(-4px)}}
  select option{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;background:transparent;color:var(--txt);font:14px var(--sans);cursor:pointer}
  select option:hover,select option:focus-visible{background:rgba(255,255,255,.07);outline:none}
  select option:checked{background:var(--bg3);color:var(--gold2);font-weight:600}
  select option:disabled{color:var(--txt4);cursor:default}
  select option::checkmark{order:2;margin-left:auto;color:var(--gold2);font-size:12px}
  select optgroup{font:600 11px var(--mono);letter-spacing:1px;text-transform:uppercase;color:var(--txt3);padding:6px 10px 2px}
  html.light ::picker(select){background:#fff;border-color:var(--hair2);box-shadow:0 18px 44px -12px rgba(11,16,32,.3),0 0 0 1px rgba(11,16,32,.06)}
  html.light select option:hover,html.light select option:focus-visible{background:rgba(11,16,32,.06)}
  html.light select option:checked{background:var(--bg2);color:var(--gold)} html.light select option::checkmark{color:var(--gold)}
}
input.sm{width:auto;padding:5px 9px;font-size:12px}
.row{display:flex;gap:12px;align-items:end;flex-wrap:wrap} .row>*{flex:1;min-width:160px}
table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;color:var(--txt3);font:500 10.5px var(--mono);letter-spacing:1.2px;text-transform:uppercase;padding:8px 10px;border-bottom:1px solid var(--hair2)}
td{padding:9px 10px;border-bottom:1px solid var(--hair);vertical-align:top}
tr:hover td{background:rgba(var(--gold-rgb),.04)}
.flash{padding:10px 14px;border-radius:10px;margin-bottom:14px;font-size:13px;border:1px solid}
.flash.ok{border-color:rgba(var(--green-rgb),.4);background:rgba(var(--green-rgb),.08);color:var(--green)}
.flash.error{border-color:rgba(var(--red-rgb),.4);background:rgba(var(--red-rgb),.08);color:var(--red)}
.banner{padding:10px 14px;border-radius:10px;margin-bottom:18px;background:var(--gold-dim);border:1px solid var(--gold-line);color:var(--gold2);font-size:13px;display:flex;justify-content:space-between;align-items:center;gap:12px}
.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.check{display:flex;align-items:flex-start;gap:9px;margin:14px 0 0;font:13px/1.45 var(--sans);letter-spacing:0;text-transform:none;color:var(--txt);cursor:pointer} .check input{width:auto;margin:3px 0 0;accent-color:var(--gold2);flex:0 0 auto} .check a{color:var(--gold2)}
.tm-body{display:flex;flex-direction:column;align-items:center;gap:12px}
.tm-rate{width:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 14px;font-size:13px;color:var(--txt3)} .tm-rate b{color:var(--txt)}
.tm-rate-edit summary{cursor:pointer;color:var(--gold2);font-weight:700;list-style:none;font-size:12.5px} .tm-rate-edit summary::-webkit-details-marker{display:none} .tm-rate-edit[open]{flex:1 1 100%}
.tm-face{position:relative;width:272px;height:272px;margin:2px auto 0}
.tm-ring{width:272px;height:272px;transform:rotate(-90deg)} .tm-track{fill:none;stroke:var(--hair2);stroke-width:6} .tm-prog{fill:none;stroke:var(--gold2);stroke-width:6;stroke-linecap:round;transition:stroke-dashoffset .25s linear}
.tm-digits{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 24px}
.tm-clock{font:700 30px/1 var(--mono);letter-spacing:.5px;color:var(--txt);font-variant-numeric:tabular-nums;white-space:nowrap} .tm-hund{font-size:17px;color:var(--txt3);margin-left:1px} .tm-bill{margin-top:8px;font-size:12.5px;color:var(--gold2);min-height:15px} .tm-what{margin-top:6px;font-size:11.5px;color:var(--txt3);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rates-text td b{font:600 14px var(--mono)} .rates-pane:not([data-editing="1"]) .rate-input{display:none!important} .rates-pane[data-editing="1"] .rate-view{display:none!important} .actions-end{justify-content:flex-end}
.tm-note{width:100%;text-align:center;font-size:12.5px;color:var(--green);min-height:0} .tm-note.err{color:var(--red)}
#timer[data-state="idle"] .tm-when-active,#timer[data-state="idle"] .tm-when-running,#timer[data-state="idle"] .tm-when-paused{display:none}
#timer[data-state="running"] .tm-when-idle,#timer[data-state="running"] .tm-when-paused{display:none}
#timer[data-state="paused"] .tm-when-idle,#timer[data-state="paused"] .tm-when-running{display:none}
.tm-buttons{display:flex;gap:18px;justify-content:center;align-items:center;margin-top:2px}
.tm-btn{width:76px;height:76px;border-radius:50%;border:2px solid transparent;background:rgba(255,255,255,.06);color:var(--txt);font:700 13.5px var(--sans);cursor:pointer;box-shadow:inset 0 0 0 3px var(--bg2);transition:transform .12s,filter .12s} .tm-btn:hover{filter:brightness(1.18)} .tm-btn:active{transform:scale(.95)}
.tm-green{background:rgba(70,200,120,.2);color:var(--green);border-color:rgba(70,200,120,.55)} .tm-amber{background:rgba(212,162,76,.2);color:var(--gold2);border-color:rgba(212,162,76,.55)} .tm-red{background:rgba(224,82,82,.2);color:var(--red);border-color:rgba(224,82,82,.55)} .tm-gray{background:rgba(255,255,255,.06);color:var(--txt3);border-color:var(--hair2)}
.tm-start{width:100%} .tm-stop{width:100%;margin-top:2px;padding-top:12px;border-top:1px solid var(--hair2)}
body.portal-body{min-height:100vh} .portal-wrap{max-width:1040px;margin:0 auto;padding:18px 20px 60px}
.portal-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0 16px;border-bottom:1px solid var(--hair2);margin-bottom:22px}
.portal-brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--txt);font:700 17px var(--sans)} .portal-brand svg{width:30px;height:30px;filter:drop-shadow(0 0 10px var(--gold-glow))} .portal-brand small{color:var(--txt3);font:600 10.5px var(--mono);letter-spacing:1.2px;text-transform:uppercase;margin-left:4px}
.portal-who{display:flex;align-items:center;gap:12px;color:var(--txt3);font-size:13px}
.portal-foot{margin-top:36px;padding-top:16px;border-top:1px solid var(--hair2);color:var(--txt3);font-size:12.5px;line-height:1.5}
.steps{list-style:none;margin:0;padding:0} .steps li{display:flex;gap:14px;align-items:center;padding:13px 16px;border-bottom:1px solid var(--hair2)} .steps li:last-child{border-bottom:0} .steps li>div:nth-child(2){flex:1;min-width:0}
.step-mark{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font:700 12px var(--mono);border:1px solid var(--hair2);color:var(--txt3);flex:0 0 auto}
.steps li.done .step-mark{background:rgba(70,200,120,.14);color:var(--green);border-color:transparent} .steps li.done>div:nth-child(2) b{color:var(--txt3);text-decoration:line-through;text-decoration-color:var(--hair2)} .step-act{display:flex;gap:6px;flex:0 0 auto}
.hint{color:var(--txt3);font-size:12px;margin-top:14px;line-height:1.5}
.empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:34px 20px;text-align:center;color:var(--txt3);font-size:13.5px;line-height:1.5} .empty b{color:var(--txt);font-size:15px} .empty .btn{margin-top:6px}
table.kv th{width:110px;vertical-align:top;padding-top:11px} table.kv td{color:var(--txt2);line-height:1.55} table.kv tr:last-child td,table.kv tr:last-child th{border-bottom:0}
.err{color:var(--red);font-size:12px;margin-top:10px}

/* ── SHELL LAYOUT: topbar across the top, the strip under it on the left, the page beside it ── */
html.with-shell body{padding:var(--topbar-h) 0 0 var(--strip-w)}
.topbar{position:fixed;top:0;left:0;right:0;height:var(--topbar-h);z-index:100;display:flex;align-items:center;gap:16px;padding:0 16px;background:var(--glass-bg);backdrop-filter:blur(14px) saturate(1.3);-webkit-backdrop-filter:blur(14px) saturate(1.3);border-bottom:1px solid var(--glass-border)}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;letter-spacing:.2px;color:var(--txt);font-size:20px;text-transform:none;white-space:nowrap}
.brand,.brand:hover{text-decoration:none;color:var(--txt)}
.brand b{color:var(--gold2);font-weight:700}
.brand svg{width:30px;height:30px;filter:drop-shadow(0 0 8px var(--gold-glow))}
/* the search trigger: one icon in the bar (the terminal's rail squares: 32 px, radius 8), the Command Center is the box */
.tb-search{width:32px;height:32px;flex:none;border:0;border-radius:8px;background:transparent;color:var(--rail-ink);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:background .13s,color .13s}
.tb-search:hover{background:var(--rail-hover);color:var(--txt)}
.tb-search svg{width:18px;height:18px}
.topbar .spc{flex:1}
.avatar{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font:700 11px var(--mono);color:#05070d;background:linear-gradient(140deg,var(--gold),var(--gold2));border:1.5px solid rgba(255,255,255,.18);box-shadow:0 0 12px var(--gold-glow);letter-spacing:.4px;cursor:pointer}
/* the person at the strip's foot (the terminal's profile wrap moved into the strip): a small gold avatar in the square; the menu flies out to the right */
.ol-strip .cs-profile{position:relative;display:flex;flex:none}
.ol-strip .cs-user .avatar{width:calc(var(--strip-sq) - 8px);height:calc(var(--strip-sq) - 8px);font-size:calc(var(--strip-sq) * .3);box-shadow:0 0 10px var(--gold-glow);pointer-events:none}
.ol-strip .cs-user.on{background:var(--rail-on-bg)}
.ol-strip.menu-open{z-index:9400}
.page{flex:1;width:100%;min-width:0;margin:0;padding:24px var(--page-x) 96px}  /* full width from the strip to the rail (his 3b review) */
.foot{display:none}

/* ── THE LEFT STRIP (the terminal's rail: 40 px, 32 px squares, radius 8; names on hover-expand; drag to reorder) ── */
.ol-strip{position:fixed;left:0;top:var(--topbar-h);bottom:0;width:var(--strip-w);z-index:95;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0;background:var(--glass-bg);backdrop-filter:blur(14px) saturate(1.3);-webkit-backdrop-filter:blur(14px) saturate(1.3);border-right:1px solid var(--glass-border);transition:width .18s ease}
.ol-strip.still,.ol-strip.still *{transition:none!important}
.ol-strip .cs-tabs{flex:none;display:flex;flex-direction:column;align-items:center;gap:3px}
.ol-strip .cs-foot{margin-top:auto;flex:none;display:flex;flex-direction:column;align-items:center;gap:3px}
.ol-strip .cs-sep{width:22px;height:1px;background:rgba(140,160,190,.2);margin:4px 0;flex:none}
.ol-strip .cs-tab,.ol-strip .cs-btn{position:relative;width:var(--strip-sq);height:var(--strip-sq);flex:none;border:0;border-radius:8px;background:transparent;color:var(--rail-ink);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;margin:0;text-decoration:none;transition:background .13s,color .13s;font-family:inherit}
/* every icon can be dragged to a new place (the terminal's strip): the browser's own link drag is off so the pointer drag is never cut short */
.ol-strip .cs-tab,.ol-strip .cs-btn,.ol-strip .cs-profile,.ol-strip .cs-tab svg{-webkit-user-drag:none;user-select:none;-webkit-user-select:none;touch-action:none}
.ol-strip .cs-tab:hover,.ol-strip .cs-btn:hover{background:var(--rail-hover);color:var(--txt);text-decoration:none}
.ol-strip .cs-tab.on,.ol-strip .cs-btn.on,.ol-strip.open .cs-x{background:var(--rail-on-bg);color:var(--rail-on)}
.ol-strip .cs-tab svg,.ol-strip .cs-btn svg{width:var(--strip-ico);height:var(--strip-ico);display:block}
.ol-strip .cs-tab.soon{opacity:.45}
.ol-strip .cs-tab.drag,.ol-strip .cs-btn.drag{opacity:.35}
.ol-strip [data-lbl]::before{content:attr(data-lbl);position:absolute;left:var(--strip-w);top:50%;transform:translateY(-50%);font:700 10px/1 var(--mono);letter-spacing:1.6px;text-transform:uppercase;color:var(--rail-ink);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .12s}
.ol-strip.open{width:calc(var(--strip-w) + 192px);align-items:flex-start;padding-left:4px;box-shadow:14px 0 36px rgba(0,0,0,.5);z-index:650}
.ol-strip.open .cs-tabs,.ol-strip.open .cs-foot{align-items:flex-start}
.ol-strip.open .cs-tab,.ol-strip.open .cs-btn{width:calc(var(--strip-w) + 180px);justify-content:flex-start;padding-left:7px}
/* the resize edge (the side panel's grab, mirrored): 7 px wide, navy on hover and while dragging like the scrollbar
   (his 2026-11-04 note; --scroll is navy in both modes), the scrollbar's lit navy while it drags; hidden on the open strip */
.ol-strip .cs-grab{position:absolute;right:-4px;top:0;bottom:0;width:7px;cursor:ew-resize;z-index:3;border-radius:2px;transition:background .12s}
.ol-strip .cs-grab::before{display:none}
.ol-strip .cs-grab:hover{background:var(--scroll)}
.ol-strip .cs-grab.on,.ol-strip .cs-grab.on:hover{background:#3558a0}
.ol-strip.open .cs-grab{display:none}
html.strip-resizing,html.strip-resizing *{cursor:ew-resize!important;user-select:none!important}
.ol-strip.open [data-lbl]::before{opacity:1;max-width:calc(100% - 56px);overflow:hidden;text-overflow:ellipsis;padding:3px 0}
.ol-strip.open [data-lbl]:hover::before{color:var(--txt)}
.ol-strip.open .cs-tab.on::before,.ol-strip.open .cs-btn.on::before,.ol-strip.open .cs-x::before{color:var(--rail-on)}
.ol-strip .cs-x svg{transition:transform .18s} .ol-strip.open .cs-x svg{transform:rotate(180deg)}
.ol-strip .cs-badge{position:absolute;top:1px;right:0;min-width:14px;height:14px;padding:0 4px;border-radius:7px;background:var(--gold2);color:#05070d;font:800 8.5px/14px var(--mono);text-align:center;pointer-events:none}
.ol-strip.open .cs-badge{top:50%;right:10px;transform:translateY(-50%)}
.ol-strip .cs-soon::after{content:attr(data-soon);position:absolute;right:8px;top:50%;transform:translateY(-50%);font:700 8px var(--mono);letter-spacing:1px;color:var(--txt4);opacity:0}
.ol-strip.open .cs-soon::after{opacity:1}
.chip-ghost-host{position:fixed!important;left:0!important;top:0!important;width:0!important;height:0!important;overflow:visible!important;z-index:2147483000!important;pointer-events:none!important}
.chip-ghost-host .drag-ghost{filter:drop-shadow(0 4px 10px rgba(0,0,0,.55));will-change:transform}
.chip-ghost-host.cstrip > *{width:var(--strip-sq);height:var(--strip-sq);border-radius:8px;border:0;background:rgba(var(--gold-rgb),.22);color:var(--gold2);display:flex;align-items:center;justify-content:center;padding:0;font-size:0}
.chip-ghost-host.cstrip svg{width:var(--strip-ico);height:var(--strip-ico);display:block}
.chip-ghost-host.cstrip [data-lbl]::before{display:none}
html.chip-dragging,html.chip-dragging *{cursor:grabbing!important;user-select:none!important}
.cs-menu{position:fixed;z-index:2147483600;background:var(--bg3);border:1px solid rgba(140,160,190,.22);border-radius:9px;padding:5px;box-shadow:0 12px 30px rgba(0,0,0,.55);font:500 13px/1 var(--sans)}
.cs-menu .cap{padding:7px 10px 5px;color:var(--txt3);font:600 10px/1 var(--mono);letter-spacing:.5px}
.cs-menu button{display:block;width:100%;text-align:left;border:0;background:transparent;color:var(--txt);padding:8px 10px;border-radius:6px;cursor:pointer;font:inherit}
.cs-menu button:hover{background:rgba(255,255,255,.07)}

/* ── NOTIFICATION PANEL (slides out from behind the strip, full height, no borders) ── */
.ol-npanel{position:fixed;top:var(--topbar-h);bottom:0;left:var(--np-left,var(--strip-w));width:340px;max-width:calc(100vw - 40px);display:flex;flex-direction:column;z-index:649;background:var(--bg1);border-radius:0 12px 12px 0;box-shadow:0 18px 50px rgba(0,0,0,.6);color:var(--txt);overflow:hidden;transform:translateX(calc(-100% - var(--np-left,var(--strip-w))));visibility:hidden;transition:transform .24s cubic-bezier(.2,.8,.2,1),visibility 0s linear .24s}
.ol-npanel.open{transform:none;visibility:visible;transition:transform .24s cubic-bezier(.2,.8,.2,1),visibility 0s}
@media (prefers-reduced-motion:reduce){.ol-npanel,.ol-npanel.open,.ol-strip{transition:none}}
.ol-npanel .np-head{flex:none;display:flex;align-items:center;gap:6px;padding:8px 8px 8px 12px;border-bottom:1px solid rgba(140,160,190,.14)}
.ol-npanel .np-title{margin-right:auto;font:700 11px var(--mono);letter-spacing:1px}
.np-b{flex:none;padding:3px 7px;border:0;border-radius:4px;background:rgba(159,176,195,.14);color:#9fb0c3;font:700 9px var(--mono);letter-spacing:.8px;cursor:pointer}
.np-b:hover{background:rgba(159,176,195,.28)} .np-b.on{background:var(--rail-on-bg);color:var(--gold2)}
.np-x{flex:none;width:18px;height:18px;border:0;border-radius:5px;background:transparent;color:var(--txt3);font-size:14px;line-height:18px;cursor:pointer}
.np-x:hover{color:var(--txt);background:rgba(255,255,255,.1)}
.ol-npanel .np-body{flex:1;min-height:0;overflow-y:auto;scrollbar-width:none} .ol-npanel .np-body::-webkit-scrollbar{display:none}
.ol-npanel .np-row{padding:8px 12px;border-bottom:1px solid rgba(140,160,190,.10)}
.ol-npanel .np-row.np-go{cursor:pointer} .ol-npanel .np-row.np-go:hover{background:rgba(255,255,255,.04)}
.ol-npanel .np-r1{display:flex;align-items:baseline;gap:8px;min-width:0}
.ol-npanel .np-h{min-width:0;font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ol-npanel .np-chip{flex:none;padding:2px 6px;border-radius:4px;font:700 8px var(--mono);letter-spacing:.8px}
.ol-npanel .np-muted{flex:none;font:700 7.5px var(--mono);letter-spacing:.8px;color:var(--txt4)}
.ol-npanel .np-when{margin-left:auto;flex:none;font:400 9px var(--mono);color:var(--txt2);white-space:nowrap}
.ol-npanel .np-t{margin-top:4px;font-size:11px;line-height:1.45;color:var(--txt2);word-break:break-word}
.ol-npanel .np-empty{padding:24px 12px;font-size:11px;color:var(--txt3);text-align:center}
.ol-npanel .np-foot{flex:none;display:flex;align-items:center;gap:8px;padding:7px 8px 7px 12px;border-top:1px solid rgba(140,160,190,.14);font-size:10px;color:var(--txt3)}
.ol-npanel .np-foot .np-b{margin-left:auto}
.ol-npanel .np-kind{display:flex;align-items:center;gap:12px;padding:9px 12px;border-bottom:1px solid rgba(140,160,190,.10)}
.ol-npanel .np-kt{min-width:0;flex:1} .ol-npanel .np-kn{font-size:12px;font-weight:600} .ol-npanel .np-kw{margin-top:3px;font-size:10.5px;line-height:1.4;color:var(--txt3)}
.ol-npanel .np-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:7px;vertical-align:1px}
.np-sw{position:relative;flex:none;width:30px;height:16px;border-radius:999px;border:1px solid var(--hair3);background:rgba(255,255,255,.06);cursor:pointer;padding:0;transition:background .15s,border-color .15s}
.np-sw.on{background:rgba(var(--green-rgb),.22);border-color:rgba(var(--green-rgb),.5)}
.np-knob{position:absolute;top:1px;left:1px;width:12px;height:12px;border-radius:50%;background:rgba(232,234,240,.7);transition:transform .15s,background .15s}
.np-sw.on .np-knob{transform:translateX(14px);background:var(--green)}


/* ── THEMED DIALOG (confirm / alert / prompt) ──────────────────────── */
.old-overlay{position:fixed;inset:0;z-index:100000;display:none;align-items:center;justify-content:center;padding:20px;background:rgba(3,5,9,.74);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.old-overlay.show{display:flex}
.old-card{width:min(440px,93vw);background:var(--bg1);border:1px solid var(--gold-line);border-radius:12px;box-shadow:0 24px 64px rgba(0,0,0,.6);overflow:hidden;animation:oldIn .14s ease}
@keyframes oldIn{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}
.old-title{padding:13px 18px;border-bottom:1px solid var(--hair);font:700 10px var(--mono);letter-spacing:2px;text-transform:uppercase;color:var(--gold2)}
.old-body{padding:20px 18px} .old-msg{font-size:13.5px;line-height:1.55;color:var(--txt)} .old-line.old-gap{height:8px}
.old-input{margin-top:14px;width:100%;background:rgba(0,0,0,.30);border:1px solid var(--gold-line);border-radius:7px;color:var(--txt);font:14px var(--sans);padding:9px 11px;outline:none}
.old-btns{display:flex;justify-content:flex-end;gap:9px;padding:12px 14px;background:rgba(0,0,0,.22);border-top:1px solid var(--hair)}
.old-btn{font:700 10.5px var(--mono);letter-spacing:1px;text-transform:uppercase;padding:8px 16px;border-radius:7px;cursor:pointer;border:1px solid var(--hair3);transition:.12s}
.old-no{background:transparent;color:var(--txt2)} .old-no:hover{background:rgba(255,255,255,.07);color:var(--txt)}
.old-ok{background:var(--gold-dim);color:var(--gold2);border-color:var(--gold-line)} .old-ok:hover{background:rgba(var(--gold-rgb),.28)}
.old-ok.danger{background:rgba(var(--red-rgb),.16);color:var(--red);border-color:rgba(var(--red-rgb),.5)} .old-ok.danger:hover{background:rgba(var(--red-rgb),.28)}

/* ── TOOLTIP (flat, dark, quiet) ───────────────────────────────────── */
#ol-tip{position:fixed;z-index:100001;display:none;max-width:300px;padding:9px 13px;border-radius:10px;pointer-events:none;font:12px/1.4 var(--sans);letter-spacing:.2px;white-space:pre-wrap;color:var(--txt);background:rgba(14,18,30,.97);border:1px solid rgba(140,160,190,.28);box-shadow:0 16px 40px rgba(0,0,0,.85);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
html.light #ol-tip{background:rgba(255,255,255,.98)}
#ol-tip.show{display:block}

/* ── TOAST DECK (bottom right: a bar over the cards, the newest in front) ── */
#olToasts{position:fixed;right:18px;bottom:84px;z-index:9000;display:flex;flex-direction:column;gap:10px;align-items:flex-end;pointer-events:none;font-family:var(--sans)}
#olToasts .cn-bar{display:none;pointer-events:auto;align-items:center;gap:6px;width:320px;max-width:calc(100vw - 36px);padding:6px 8px 6px 11px;background:var(--bg1);border:1px solid var(--gold-line);border-radius:6px;box-shadow:0 18px 50px rgba(0,0,0,.6),0 0 0 1px rgba(var(--gold-rgb),.08)}
#olToasts.deck .cn-bar{display:flex}
#olToasts .cn-n{margin-right:auto;font:700 11px var(--mono);letter-spacing:.3px;color:var(--txt)}
#olToasts .cn-b{flex:none;padding:2px 6px;border:0;border-radius:4px;background:var(--gold-dim);color:var(--gold2);font:700 8px var(--mono);letter-spacing:.8px;line-height:1.4;cursor:pointer}
#olToasts .cn-b:hover{background:rgba(var(--gold-rgb),.28)}
#olToasts .cn-b.cn-clr{background:rgba(159,176,195,.14);color:#9fb0c3} #olToasts .cn-b.cn-clr:hover{background:rgba(159,176,195,.28)}
#olToasts .cn-b.cn-act{margin-left:6px}
#olToasts .cn-x{flex:none;align-self:center;margin-left:6px;width:18px;height:18px;padding:0;border:0;border-radius:5px;background:transparent;color:var(--txt3);font-size:14px;line-height:18px;cursor:pointer}
#olToasts .cn-x:hover{color:var(--txt);background:rgba(255,255,255,.12)}
#olToasts .cn-cards{display:flex;flex-direction:column;gap:10px;align-items:flex-end}
#olToasts .cn-card{pointer-events:auto;width:320px;min-height:56px;max-width:calc(100vw - 36px);background:var(--bg1);border:1px solid rgba(var(--tone-rgb,var(--gold-rgb)),.45);border-radius:6px;box-shadow:0 18px 50px rgba(0,0,0,.6),0 0 0 1px rgba(var(--tone-rgb,var(--gold-rgb)),.10);padding:11px 13px;cursor:pointer;transition:opacity .25s,transform .25s;opacity:0;transform:translateX(16px);display:flex;flex-direction:column;justify-content:center}
#olToasts .cn-card.in{opacity:1;transform:none}
#olToasts .cn-r1{display:flex;align-items:center;gap:8px}
#olToasts .cn-head{font-size:12.5px;font-weight:600;color:var(--txt);line-height:1.3;min-width:0}
#olToasts .cn-tag{font:700 8px var(--mono);letter-spacing:.8px;padding:2px 6px;border-radius:4px;background:rgba(var(--tone-rgb,var(--gold-rgb)),.14);color:rgb(var(--tone-rgb,var(--gold2-rgb)))}
#olToasts .cn-when{margin-left:auto;font:400 9px var(--mono);color:var(--txt3);white-space:nowrap}
#olToasts .cn-sub{font-size:11px;color:var(--txt2);line-height:1.45;margin-top:4px;padding-right:24px}
#olToasts.deck:not(.open) .cn-cards{position:relative;padding-top:12px}
#olToasts.deck:not(.open) .cn-cards>[data-stk="0"]{position:relative;z-index:3}
#olToasts.deck:not(.open) .cn-cards>[data-stk="1"],#olToasts.deck:not(.open) .cn-cards>[data-stk="2"],#olToasts.deck:not(.open) .cn-cards>[data-stk="x"]{position:absolute;right:0;bottom:0;height:var(--stkH,64px);width:var(--stkW,320px)!important;overflow:hidden;pointer-events:none!important;transform-origin:50% 0}
#olToasts.deck:not(.open) .cn-cards>[data-stk="1"]{z-index:2;transform:translateY(-6px) scale(.96)!important;opacity:.9!important;filter:brightness(1.9)}
#olToasts.deck:not(.open) .cn-cards>[data-stk="2"]{z-index:1;transform:translateY(-12px) scale(.92)!important;opacity:.7!important;filter:brightness(1.6)}
#olToasts.deck:not(.open) .cn-cards>[data-stk="x"]{visibility:hidden}
#olToasts.open .cn-cards{max-height:calc(100vh - 170px);overflow-y:auto;scrollbar-width:none;padding:6px 18px 30px 40px;margin:-6px -18px -30px -40px}
#olToasts.open .cn-cards::-webkit-scrollbar{display:none}

/* ── THE COMMAND CENTER (the search modal's shape: one size whatever it holds) ── */
.ol-cc{position:fixed;inset:0;background:rgba(3,5,10,.72);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:none;align-items:center;justify-content:center;z-index:600;padding:20px}
.ol-cc.open{display:flex;animation:ccIn .18s ease-out}
@keyframes ccIn{from{opacity:0}to{opacity:1}}
.ol-cc-box{width:860px;max-width:96vw;height:min(80vh,720px);display:flex;flex-direction:column;padding:22px 22px 12px;border-radius:24px;animation:ccPop .22s cubic-bezier(.2,.9,.3,1.05);background:rgba(13,17,26,.96)}
html.light .ol-cc-box{background:rgba(255,255,255,.97)}
@keyframes ccPop{from{transform:translateY(-12px) scale(.98);opacity:0}to{transform:none;opacity:1}}
.cc-head{display:flex;align-items:center;gap:14px;margin-bottom:16px;flex-shrink:0}
.cc-head svg.cc-mark{width:44px;height:44px;flex:none;filter:drop-shadow(0 0 10px var(--gold-glow))}
.cc-greet{flex:1;min-width:0} .cc-greet h2{font-size:24px;margin:0;font-weight:600} .cc-greet p{color:var(--txt3);font-size:14px}
.cc-kbd{display:flex;align-items:center;gap:5px;font:600 11px var(--mono);color:var(--gold2);background:var(--gold-dim);border:1px solid var(--gold-line);border-radius:8px;padding:5px 9px}
.cc-close{font-size:20px;background:transparent;border:none;color:var(--txt3);cursor:pointer;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;line-height:1}
.cc-close:hover{color:var(--txt);background:rgba(255,255,255,.06)}
.cc-input-wrap{display:flex;align-items:center;gap:12px;height:52px;padding:0 18px;border-radius:16px;background:rgba(255,255,255,.04);border:1px solid var(--hair2);margin-bottom:14px;flex-shrink:0;transition:border-color .15s,box-shadow .15s}
.cc-input-wrap.focus{border-color:var(--gold-line);box-shadow:0 0 24px var(--gold-glow)}
.cc-input-wrap svg{width:18px;height:18px;color:var(--txt3);flex:none}
#ccInput{flex:1;min-width:0;background:transparent!important;border:none!important;outline:none!important;box-shadow:none!important;color:var(--txt);font:15px var(--sans);padding:0}
#ccInput::placeholder{color:var(--txt3)}
.cc-go{flex:none;width:34px;height:34px;border-radius:10px;border:0;background:linear-gradient(135deg,var(--gold),var(--gold2));color:#05070d;cursor:pointer;display:flex;align-items:center;justify-content:center}
.cc-cats{margin-bottom:12px;flex-shrink:0;align-self:flex-start}  /* hug the buttons: the bar ends after Actions, not at the box edge */
.cc-cats .pt-btn{padding:7px 14px}
.cc-list{flex:1;overflow-y:auto;min-height:0;margin:0 -4px;padding:0 4px;scrollbar-width:none} .cc-list::-webkit-scrollbar{display:none}
.cc-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}
.cc-tile{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:14px;background:rgba(255,255,255,.035);border:1px solid var(--hair);cursor:pointer;text-align:left;color:var(--txt);font:inherit}
.cc-tile:hover,.cc-tile.top{background:rgba(var(--gold-rgb),.08);border-color:var(--gold-line)}
.cc-tile .ti{width:36px;height:36px;border-radius:10px;background:var(--gold-dim);border:1px solid var(--gold-line);color:var(--gold2);display:flex;align-items:center;justify-content:center;flex:none}
.cc-tile .ti svg{width:18px;height:18px}
.cc-tile b{display:block;font-size:14px;font-weight:600} .cc-tile small{color:var(--txt3);font-size:12px}
.cc-tile .chev{margin-left:auto;color:var(--txt3)}
.cc-tile.soon{opacity:.55}
.cc-rhead{display:flex;align-items:center;justify-content:space-between;padding:6px 10px 8px;font-size:15px;font-weight:600}
.cc-rhead a{font-size:12px;font-weight:500}
.cc-row{display:grid;grid-template-columns:34px 1fr auto;gap:12px;align-items:center;padding:10px 14px;border-radius:12px;cursor:pointer;border:1px solid transparent;margin-bottom:2px}
.cc-row:hover{background:rgba(255,255,255,.035)}
.cc-row.top{background:rgba(var(--gold-rgb),.10);border-color:var(--gold-line)}
.cc-row .ri{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.05);color:var(--txt2)}
.cc-row .ri svg{width:16px;height:16px}
.cc-row .rt{min-width:0;font-size:14px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .cc-row .rt .num{color:var(--gold2);margin-right:8px;font-size:12px}
.cc-row.top .rt{color:var(--gold2)} .cc-row .rk{font:500 10px var(--mono);letter-spacing:1px;text-transform:uppercase;color:var(--txt3)}
.cc-empty{padding:30px 10px;text-align:center;color:var(--txt3);font-size:13px}
.cc-foot{flex-shrink:0;display:flex;align-items:center;gap:8px;padding:10px 6px 0;border-top:1px solid var(--hair);font-size:12px;color:var(--txt3)}
.cc-foot kbd{background:rgba(255,255,255,.06);border:1px solid var(--hair2);border-radius:4px;padding:1px 6px;font-size:10px;color:var(--txt2)}

/* ── JARVIS: the bubble and the bar beside it (the terminal's Kemi ball, recoloured gold). Off, only the strip's slot shows;
   on, the 56 px liquid-glass sphere floats where it was last dropped and the command bar sits beside it, the reply above. ── */
#jarvisDock{position:static;pointer-events:none}
.jv-ball{position:fixed;z-index:9000;left:0;top:0;width:56px;height:56px;border-radius:50%;cursor:grab;touch-action:none;outline:none;pointer-events:none;transform:translate3d(-200px,-200px,0);will-change:transform;transition:none;display:none;
  --kc:var(--gold-rgb);--kl:var(--gold2-rgb);--kd:122,80,22;--kbz:1}
html.jarvis-on .jv-ball{display:block}
html.jarvis-docking .jv-ball{--kbz:.46}
.jv-ball.glide{transition:transform .3s cubic-bezier(.2,.9,.3,1.25),opacity .25s ease}
.jv-ball[data-drag="1"]{cursor:grabbing}
.jv-ball:focus-visible .jb-dot{box-shadow:0 0 0 3px var(--pill-hover),inset 0 1px 1px rgba(255,255,255,.35),inset 0 -10px 18px rgba(0,0,0,.35),0 8px 22px rgba(0,0,0,.5)}
.jv-ball .jb-dot{position:absolute;inset:0;border-radius:50%;overflow:visible;pointer-events:auto;transform:scale(var(--kbz,.46));transition:transform .3s cubic-bezier(.2,.9,.3,1.25);background:radial-gradient(circle at 50% 118%,rgba(var(--kc),.18),rgba(255,255,255,.04) 62%);backdrop-filter:blur(10px) saturate(1.5);-webkit-backdrop-filter:blur(10px) saturate(1.5);border:1px solid rgba(255,255,255,.22);box-shadow:inset 0 1px 1px rgba(255,255,255,.35),inset 0 -10px 18px rgba(0,0,0,.35),0 8px 22px rgba(0,0,0,.5),0 0 16px rgba(var(--kc),.26)}
.jv-ball .jb-dot::before{content:"";position:absolute;left:15%;top:7%;width:54%;height:30%;border-radius:50%;background:radial-gradient(ellipse at 50% 40%,rgba(255,255,255,.62),rgba(255,255,255,0) 72%);transform:rotate(-22deg);pointer-events:none;z-index:3}
.jv-ball .jb-dot::after{content:"";position:absolute;inset:0;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(255,255,255,.10),inset 0 -6px 12px rgba(var(--kc),.30),inset 0 4px 10px rgba(255,255,255,.06);pointer-events:none;z-index:3}
.jv-ball .jb-goo{position:absolute;inset:-18px;filter:url(#jarvisGoo);pointer-events:none;z-index:1}
.jv-ball .jb-amp{position:absolute;inset:0;transform:translate3d(0,0,0) scale(1)}
.jv-ball .jb-blob{position:absolute;left:22px;top:22px;width:48px;height:48px;background:radial-gradient(circle at 40% 30%,rgba(var(--kl),.95) 0,rgba(var(--kc),.92) 32%,rgba(var(--kd),.95) 100%);border-radius:52% 48% 46% 54% / 47% 53% 47% 53%;animation:jbWobble 2.2s ease-in-out infinite;transition:opacity .4s}
.jv-ball .jb-bead{position:absolute;left:40px;top:40px;width:12px;height:12px;border-radius:50%;background:rgba(var(--kc),.92);animation:jbBead 1.6s ease-in-out infinite;transition:opacity .3s}
.jv-ball .jb-bead.b2{left:42px;top:42px;width:8px;height:8px;animation-duration:2.1s;animation-delay:-.7s}
.jv-ball .jb-bead.b3{left:43px;top:43px;width:6px;height:6px;animation-name:jbBead3;animation-duration:2.6s;animation-delay:-1.3s}
@keyframes jbWobble{0%,100%{border-radius:52% 48% 46% 54% / 47% 53% 47% 53%;transform:rotate(0deg) scale(1)}25%{border-radius:46% 54% 55% 45% / 55% 44% 56% 45%;transform:rotate(3deg) scale(1.03,.97)}50%{border-radius:55% 45% 48% 52% / 44% 56% 44% 56%;transform:rotate(-2deg) scale(.97,1.03)}75%{border-radius:47% 53% 52% 48% / 53% 47% 53% 47%;transform:rotate(2deg) scale(1.02,.98)}}
@keyframes jbBead{0%,100%{transform:translate(-23px,-17px) scale(1)}50%{transform:translate(20px,14px) scale(.7)}}
@keyframes jbBead3{0%,100%{transform:translate(21px,-18px) scale(.9)}50%{transform:translate(-19px,19px) scale(.6)}}
@media (prefers-reduced-motion:reduce){.jv-ball .jb-blob,.jv-ball .jb-bead{animation:none}.jv-ball,.jv-ball .jb-dot{transition:none}}
.jv-ball .jb-ic{position:absolute;left:50%;top:50%;width:24px;height:24px;margin:-12px 0 0 -12px;z-index:2;pointer-events:none;filter:drop-shadow(0 1px 2px rgba(0,0,0,.45))}
.jv-ball .jb-ic svg{display:block;width:100%;height:100%}
html.light .jv-ball{--kd:140,96,30}
.jv{display:none;position:fixed;z-index:9001;left:var(--bx,-9999px);top:var(--by,-9999px);width:min(560px,calc(100vw - var(--strip-w) - 120px));pointer-events:auto}
html.jarvis-on .jv{display:block}
html.jarvis-docking .jv{display:none}
.jv-reply{display:none;position:absolute;left:0;right:0;bottom:calc(100% + 8px);margin:0;padding:9px 14px;border-radius:12px;background:var(--bg1);border:1px solid var(--hair2);box-shadow:0 10px 30px rgba(0,0,0,.45);font-size:13px;line-height:1.45;color:var(--txt);animation:jvIn .16s ease}
.jv.reply-below .jv-reply{bottom:auto;top:calc(100% + 8px)}
/* the slot in the strip's foot: lit while the bubble is out */
.ol-strip .cs-jarvis.on{background:var(--rail-on-bg);color:var(--rail-on)}
.jv-reply.show{display:block}
.jv-reply.ok{border-color:rgba(var(--green-rgb),.5)} .jv-reply.bad{border-color:rgba(var(--red-rgb),.5)} .jv-reply.wait{border-color:var(--gold-line)} .jv-reply.info{border-color:var(--hair3)} .jv-reply.dim{opacity:.7}
.jv-reply .jv-main{font-weight:600} .jv-reply .jv-sub{color:var(--txt2);font-size:12px;margin-top:2px}
.jv-reply .jv-opts{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.jv-reply .jv-lines{margin-top:6px;font-size:12px;color:var(--txt2);max-height:46vh;overflow:auto} .jv-reply .jv-lines>div{padding:2px 0;border-top:1px solid var(--hair)} .jv-reply .jv-lines b{color:var(--gold2);font-family:var(--mono);font-size:10.5px;letter-spacing:1px;text-transform:uppercase;margin-right:6px}
/* the mic badge on the Jarvis ball (voice commands, when the firm and the person allow them); red and pulsing while it records */
.jv-ball .jb-mic{position:absolute;right:-7px;bottom:-7px;width:24px;height:24px;border-radius:50%;border:1px solid var(--gold-line);background:var(--bg1);color:var(--gold2);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;pointer-events:auto;z-index:5;box-shadow:0 2px 8px rgba(0,0,0,.5)}
.jv-ball .jb-mic svg{width:13px;height:13px;display:block} .jv-ball .jb-mic:hover{background:var(--bg3)}
.jv-ball .jb-mic.rec{background:var(--red);border-color:var(--red);color:#fff;animation:jvPulse 1s ease-out infinite}
html.jarvis-recording .jv-bar{border-color:rgba(var(--red-rgb),.7);box-shadow:0 14px 40px rgba(0,0,0,.5),0 0 24px rgba(var(--red-rgb),.35)}
html.jarvis-recording .jv-reply.wait{border-color:rgba(var(--red-rgb),.7)} html.jarvis-recording .jv-reply .jv-main{color:var(--red)}
@keyframes jvPulse{0%{box-shadow:0 0 0 0 rgba(var(--red-rgb),.7)}100%{box-shadow:0 0 0 12px rgba(var(--red-rgb),0)}}
html:not(.jarvis-on) .jv-ball .jb-mic{display:none}
@keyframes jvIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.jv-bar{display:flex;align-items:center;gap:10px;height:46px;padding:0 10px 0 12px;border-radius:14px;background:var(--glass-bg);backdrop-filter:blur(16px) saturate(1.3);-webkit-backdrop-filter:blur(16px) saturate(1.3);border:1px solid var(--gold-line);box-shadow:0 14px 40px rgba(0,0,0,.5),0 0 24px var(--gold-glow)}
.jv-bar svg.jv-mark{width:22px;height:22px;flex:none;filter:drop-shadow(0 0 6px var(--gold-glow))}
.jv-bar .jv-name{font:700 11px var(--mono);letter-spacing:1.6px;color:var(--gold2);flex:none}
#jarvisInput{flex:1;min-width:0;background:transparent!important;border:none!important;outline:none!important;box-shadow:none!important;color:var(--txt);font:14px var(--sans);padding:0}
#jarvisInput::placeholder{color:var(--txt3)}
.jv-bar kbd{font:600 10px var(--mono);background:rgba(255,255,255,.06);border:1px solid var(--hair2);border-radius:4px;padding:2px 6px;color:var(--txt3);flex:none}
.jv-bar .jv-send{flex:none;width:30px;height:30px;border-radius:9px;border:0;background:linear-gradient(135deg,var(--gold),var(--gold2));color:#05070d;cursor:pointer;display:flex;align-items:center;justify-content:center}
.jv-bar .jv-send svg{width:15px;height:15px}

/* ── BOOT OVERLAY (the mark while the first page of the session loads) ── */
#ol-boot{position:fixed;inset:0;z-index:9999;background:var(--bg);display:flex;align-items:center;justify-content:center;transition:opacity .55s ease-out}
#ol-boot.gone{opacity:0;pointer-events:none}
#ol-boot::before,#ol-boot::after{content:'';position:absolute;border-radius:50%;filter:blur(80px);opacity:.45;pointer-events:none}
#ol-boot::before{width:560px;height:560px;background:radial-gradient(circle,#8a6420 0%,transparent 70%);top:-160px;left:-100px;animation:obOrb1 14s ease-in-out infinite}
#ol-boot::after{width:480px;height:480px;background:radial-gradient(circle,#f1c76b 0%,transparent 70%);bottom:-180px;right:-120px;animation:obOrb2 18s ease-in-out infinite;opacity:.25}
@keyframes obOrb1{0%,100%{transform:translate(0,0)}50%{transform:translate(60px,40px)}}
@keyframes obOrb2{0%,100%{transform:translate(0,0)}50%{transform:translate(-50px,-30px)}}
.ob-card{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:16px;padding:42px 60px}
.ob-mark{width:110px;height:110px;filter:drop-shadow(0 0 22px var(--gold-glow));animation:obPulse 1.8s ease-in-out infinite}
@keyframes obPulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.06);opacity:.8}}
.ob-brand{font:700 22px var(--sans);letter-spacing:.3px;color:var(--txt);text-transform:none}
.ob-brand b{color:var(--gold2)}
.ob-sub{font:600 10px var(--mono);letter-spacing:3px;color:var(--txt3);text-transform:uppercase;margin-top:-8px}
.ob-bar{width:280px;height:3px;border-radius:99px;background:rgba(255,255,255,.06);overflow:hidden;position:relative;margin-top:6px}
.ob-bar::before{content:'';position:absolute;top:0;bottom:0;left:-40%;width:40%;background:linear-gradient(90deg,transparent,var(--gold2),var(--gold),transparent);animation:obBar 1.3s ease-in-out infinite;box-shadow:0 0 14px var(--gold-glow)}
@keyframes obBar{0%{left:-40%}100%{left:100%}}

/* ── PROFILE MENU ──────────────────────────────────────────────────── */
#ol-profile{position:relative}
#ol-profile-menu{position:absolute;top:auto;bottom:0;left:calc(var(--strip-w) + 4px);right:auto;width:270px;background:rgba(14,18,30,.97);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid var(--hair2);border-radius:18px;padding:10px;box-shadow:0 24px 60px rgba(0,0,0,.72),0 0 32px var(--gold-glow);display:none;z-index:9500;color:var(--txt)}
html.light #ol-profile-menu{background:rgba(255,255,255,.98)}
.ol-strip.open #ol-profile-menu{left:calc(var(--strip-w) + 184px)}
#ol-profile-menu.open{display:block}
#ol-profile-menu .cpm-head{display:flex;align-items:center;gap:11px;padding:8px 10px 12px}
#ol-profile-menu .cpm-name{font-size:13px;font-weight:600} #ol-profile-menu .cpm-sub{font-size:11px;color:var(--txt3);margin-top:2px}
#ol-profile-menu .cpm-sep{height:1px;background:var(--hair);margin:4px 4px}
#ol-profile-menu .cpm-section{font:700 8.5px var(--mono);color:var(--txt3);letter-spacing:1.4px;text-transform:uppercase;padding:8px 12px 6px}
#ol-profile-menu .cpm-themes{display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:0 6px 4px}
#ol-profile-menu .cpm-theme{display:flex;align-items:center;gap:7px;padding:7px 9px;background:transparent;border:1px solid var(--hair2);color:var(--txt);font:600 11px var(--sans);border-radius:9px;cursor:pointer;text-align:left}
#ol-profile-menu .cpm-theme.on{color:var(--gold2);border-color:var(--gold-line);background:var(--gold-dim)}
#ol-profile-menu .cpt-sw{width:14px;height:14px;border-radius:5px;border:1px solid var(--hair3);flex-shrink:0}
#ol-profile-menu .cpm-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:9px;color:var(--txt);background:transparent;border:0;width:100%;text-align:left;text-decoration:none;font:500 13px var(--sans);cursor:pointer}
#ol-profile-menu .cpm-item:hover{background:rgba(255,255,255,.05);text-decoration:none}
#ol-profile-menu .cpm-item.cpm-out{color:var(--red)}

/* ── KPI TILES + DASHBOARD (the mock's stat cards) ─────────────────── */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}
@media (max-width:1000px){.kpis{grid-template-columns:repeat(2,1fr)}}
.kpi{padding:16px 18px;display:flex;gap:14px;align-items:flex-start;position:relative;overflow:hidden}
.kpi .ki{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;flex:none;border:1px solid}
.kpi .ki svg{width:19px;height:19px}
.kpi .ki.gold{background:var(--gold-dim);border-color:var(--gold-line);color:var(--gold2)}
.kpi .ki.purple{background:rgba(var(--purple-rgb),.14);border-color:rgba(var(--purple-rgb),.45);color:var(--purple)}
.kpi .ki.blue{background:rgba(var(--blue-rgb),.14);border-color:rgba(var(--blue-rgb),.45);color:var(--blue)}
.kpi .ki.green{background:rgba(var(--green-rgb),.14);border-color:rgba(var(--green-rgb),.45);color:var(--green)}
.kpi .kn{font:600 28px/1.1 var(--mono);color:var(--txt)} .kpi .kl{color:var(--txt3);font-size:12px;margin-top:3px} .kpi .kd{font:500 11px var(--mono);margin-top:6px}
.kpi svg.spark{position:absolute;right:12px;bottom:10px;width:90px;height:34px;opacity:.9}
.hello{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:18px;gap:16px;padding-left:14px;border-left:3px solid var(--gold)}
.hello p{color:var(--txt3);font-size:14px}
.datepill{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:12px;font:500 13px var(--sans)}
.week{display:flex;gap:6px;margin-bottom:12px}
.week .d{flex:1;text-align:center;padding:8px 4px;border-radius:10px;border:1px solid transparent;color:var(--txt3);font-size:11px}
.week .d b{display:block;font:600 16px var(--mono);color:var(--txt2)}
.week .d.today{border-color:var(--gold-line);background:var(--gold-dim);color:var(--gold2)} .week .d.today b{color:var(--gold2)}
a.week-d,.week a.d{text-decoration:none} .week a.d:hover{border-color:var(--hair3);text-decoration:none} .week .d small{display:block;font:600 8.5px var(--mono);letter-spacing:.3px;color:var(--txt4);min-height:11px;margin-top:2px}
.week .d.has small{color:var(--gold2)} .week .d.has{border-color:var(--hair2)}
.kpi .kd.am{color:var(--amber)}
.list{list-style:none} .list li{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--hair)} .list li:last-child{border-bottom:0}
.list .li{width:32px;height:32px;border-radius:9px;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.05);color:var(--txt2);flex:none} .list .li svg{width:15px;height:15px}
.list .lt{flex:1;min-width:0;font-size:13.5px} .list .lt small{display:block;color:var(--txt3);font-size:11.5px}
.list .lr{font:400 11px var(--mono);color:var(--txt3);white-space:nowrap}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{display:inline-flex;align-items:center;gap:8px;padding:9px 12px;border-radius:10px;background:rgba(255,255,255,.04);border:1px solid var(--hair2);color:var(--txt);font:500 13px var(--sans);cursor:pointer;text-align:left}
.chip:hover{border-color:var(--gold-line);background:var(--gold-dim)}
.chip svg{width:15px;height:15px;color:var(--gold2)}
.soon-note{color:var(--txt4);font-size:12px;padding:14px 0 4px}
.spark-ph{height:60px;border-radius:10px;background:repeating-linear-gradient(135deg,rgba(255,255,255,.03) 0 8px,transparent 8px 16px)}

/* ── THE MATTER BOX (the terminal's stock box: its head and big print, the key-stat rows, the earnings countdown, the news card) ── */
.crumb{color:var(--txt3);font:500 11.5px var(--mono);letter-spacing:.4px;margin-bottom:12px} .crumb a{color:var(--txt2)}
.mbox{padding:18px 20px;margin-bottom:18px}
.mb-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px;padding-bottom:14px;border-bottom:1px solid var(--hair)}
.mb-head .mi{width:44px;height:44px;border-radius:12px;background:var(--gold-dim);border:1px solid var(--gold-line);color:var(--gold2);display:flex;align-items:center;justify-content:center;flex:none;box-shadow:0 0 14px var(--gold-glow)}
.mb-head .mt{flex:1;min-width:240px} .mb-head .mt h1{font-size:22px;margin:0;line-height:1.2} .mb-head .mm{color:var(--txt3);font-size:12.5px;margin-top:3px}
.mb-head .ma{display:flex;gap:8px;flex-wrap:wrap}
.mb-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);gap:24px}
@media (max-width:980px){.mb-grid{grid-template-columns:1fr}}
.mb-t{display:flex;align-items:center;gap:8px;margin-bottom:8px;font:700 12px/1 var(--sans);color:var(--txt)} .mb-t .sp{flex:1} .mb-t .tag{font:500 10px/1.3 var(--sans);color:var(--txt3);text-align:right}
.mb-big{font:700 28px/1.15 var(--sans);letter-spacing:-.4px;margin:4px 0 8px}
.mb-rule{font-size:13px;line-height:1.55;color:var(--txt2)} .mb-rule b{color:var(--txt)}
.mb-kv{display:flex;align-items:baseline;gap:10px;padding:6px 0;font:500 12.5px/1.3 var(--sans);border-bottom:1px solid var(--hair)} .mb-kv:last-of-type{border-bottom:0}
.mb-kv .k{flex:1;min-width:0;color:var(--txt2)} .mb-kv .k small{font-size:11px}
.mb-kv .v{font-weight:600;color:var(--txt);white-space:nowrap;display:flex;align-items:center;gap:6px;font-variant-numeric:tabular-nums} .mb-kv .v.soon{color:var(--txt4);font-weight:500;font-size:11.5px}
.mb-src{font-size:11.5px;margin-top:10px;line-height:1.5}
.mb-cd{padding:14px 16px;border-radius:12px;background:rgba(255,255,255,.025);border:1px solid var(--hair);margin-bottom:12px}
.mb-cd .l{font:700 9.5px var(--mono);letter-spacing:1.4px;color:var(--txt3);text-transform:uppercase}
.mb-cd .n{font:700 30px/1.1 var(--mono);color:var(--gold2);margin:8px 0 6px;display:flex;align-items:center;gap:10px}
.mb-cd .s{font-size:12px;color:var(--txt3);line-height:1.45}
.mb-nwc{position:relative;display:grid;grid-template-columns:15px minmax(0,1fr);column-gap:9px;background:rgba(255,255,255,.025);border-radius:12px;padding:12px 14px;min-width:0}
.mb-nwc::before{content:'';position:absolute;inset:0;border-radius:inherit;padding:1px;background:linear-gradient(120deg,rgba(var(--gold-rgb),.6),rgba(var(--amber-rgb),.35));-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.mb-nwc .i{grid-column:1;grid-row:1;width:15px;height:15px;align-self:center;color:var(--gold2)}
.mb-nwc .t{grid-column:2;display:flex;align-items:center;gap:8px;min-width:0;margin-bottom:7px;font:700 12px/15px var(--sans);color:var(--txt)} .mb-nwc .t .w{flex:1;min-width:0} .mb-nwc .t .as{flex:none;font:500 10.5px/15px var(--sans);color:var(--txt3);white-space:nowrap}
.mb-nwc .h{grid-column:2;font:500 13px/1.45 var(--sans);color:var(--txt2)}
.mb-nwc .f{grid-column:2;display:flex;align-items:center;gap:10px;margin-top:8px;font:500 11px/1.2 var(--sans);color:var(--txt3)}
/* conflict checks, parties, details */
.cf-meta{font-size:12px;color:var(--txt3);margin-bottom:10px;line-height:1.5} .cf-meta b{color:var(--txt2)}
.cf-hits td small{display:block;color:var(--txt3);font-size:11px}
.cf-notes{font-size:13px;margin-top:10px;color:var(--txt2)}
.cf-form{margin-top:12px;padding-top:12px;border-top:1px solid var(--hair)} .cf-form label{margin-top:0}
table.kv th{width:140px;text-transform:none;letter-spacing:0;font:500 12px var(--sans);color:var(--txt3)}
.desc{font-size:13px;line-height:1.55;color:var(--txt2);margin-top:12px;white-space:pre-line}
.seg-bar a.pt-btn,.seg-bar a.pt-btn:hover{text-decoration:none} .pt-btn .cnt{opacity:.6;font-weight:500;margin-left:4px}
.pane-head .seg-bar{margin:-4px 0}
.soon-pane .pane-body{min-height:56px}
.mb-cd .n.ok{color:var(--green)} .mb-cd .n.late{color:var(--red)} .mb-cd .n small{font:600 12px var(--sans);color:var(--txt3)}
.mb-cd form{margin-top:10px} .mb-cd .row>*{min-width:120px}
.pill.verify{color:var(--amber);border-color:rgba(var(--amber-rgb),.5);background:rgba(var(--amber-rgb),.12);font-weight:700}
.names-form{padding:10px 14px 12px;border-top:1px solid var(--hair);background:rgba(255,255,255,.015)} .names-form label{margin-top:6px}
.names-form .row>*{min-width:200px}
.pn-names{display:block;color:var(--txt3);font-size:11px;margin-top:2px}
details.ol-fold>summary{cursor:pointer;color:var(--txt3);font-size:12px;list-style:none;padding:6px 0} details.ol-fold>summary::before{content:'▸ ';font-size:10px} details.ol-fold[open]>summary::before{content:'▾ '}
.dl-row td.title small{display:block;color:var(--txt3);font-size:11px}
.dl-row.done td{opacity:.55}
.dl-acts{display:flex;gap:6px;flex-wrap:wrap} .dl-acts form{display:inline}
.tm-total{font:700 20px var(--mono);color:var(--gold2)} .tm-sub{font-size:11.5px;color:var(--txt3)}
.doc-body{white-space:pre-wrap;font:400 14px/1.65 var(--sans);color:var(--txt);background:rgba(255,255,255,.025);border:1px solid var(--hair);border-radius:12px;padding:18px 22px;max-height:60vh;overflow:auto}
/* settings rows; the communications log */
.st-row{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(220px,1fr);gap:16px;align-items:start;padding:10px 0;border-bottom:1px solid var(--hair)}
.st-row label{margin-top:0;display:inline-block} .st-l .pill{margin-left:8px;vertical-align:1px} .st-help{color:var(--txt3);font-size:12px;line-height:1.5;margin-top:4px}
.st-switch{display:flex;align-items:center;gap:8px;text-transform:none;letter-spacing:0;font:500 13px var(--sans);color:var(--txt2)} .st-switch input{width:auto}
.cm-item{padding:12px 14px;border-bottom:1px solid var(--hair)} .cm-item.corrected{border-left:3px solid var(--amber)}
.cm-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px} .cm-head .sp{flex:1}
.cm-subj{font-weight:600;margin-top:6px} .cm-sum{font-size:13px;line-height:1.55;color:var(--txt2);margin-top:4px;white-space:pre-line}
.cm-foot{display:flex;gap:10px;align-items:center;margin-top:6px;font-size:12px;color:var(--txt3)}
html.light .doc-body{background:#fff}

/* ── THE CALENDAR (the terminal's calendar page: month grid, TODAY badge, hover card, day modal, month summary) ── */
.cal-main{display:grid;grid-template-columns:minmax(0,1fr) 326px;gap:18px;align-items:stretch;height:calc(100vh - var(--topbar-h) - 24px - 96px);min-height:540px}
.cal-main>.pane{height:100%;min-height:0;display:flex;flex-direction:column}
.cal-main .pane-body.cal-pane-body{flex:1;min-height:0;overflow:hidden}
.cal-main .stats-pane{flex:1;min-height:0;overflow:auto}
@media (max-width:1100px){.cal-main{grid-template-columns:1fr;height:auto}.cal-main>.pane{height:auto}}
.cal-main .pane-head{gap:14px;flex-wrap:wrap}
.cal-title-block{display:flex;flex-direction:column;min-width:0;flex:1 1 220px}
.cal-tools{flex:none}
.cal-month{font:700 18px var(--mono);letter-spacing:1px;color:var(--txt);display:flex;align-items:center;gap:10px}
.cal-meta{font:500 9.5px var(--mono);color:var(--txt3);letter-spacing:1px;margin-top:3px;text-transform:uppercase}
.cal-tools{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.cal-pane-body{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column;gap:8px;padding:14px}
.cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;padding:0 2px}
.cal-weekdays span{font:700 8px var(--mono);color:var(--txt3);letter-spacing:1.5px;text-align:center;text-transform:uppercase}
.cal-grid{flex:1;min-height:0;display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:minmax(0,1fr);gap:6px}
.cal-grid.loading{opacity:.6}
.cal-day{border-radius:10px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.022);padding:8px 10px;display:flex;flex-direction:column;gap:6px;position:relative;cursor:pointer;transition:transform .15s,border-color .15s,box-shadow .15s;min-height:0;outline:none;overflow:visible}
.cal-day .cd-items{overflow:hidden;min-height:0}
.cal-day:hover:not(.empty),.cal-day:focus-visible{border-color:rgba(140,160,190,.28);transform:translateY(-2px);box-shadow:0 10px 28px rgba(0,0,0,.55);z-index:30}
.cal-day.empty{background:transparent;border-color:transparent;cursor:default}
.cal-day.weekend{background:rgba(255,255,255,.012);border-color:rgba(255,255,255,.04)} .cal-day.weekend .cd-num{color:var(--txt4)}
.cal-day.today{box-shadow:0 0 0 1.5px var(--gold-line)}
.cal-day.has-limitation,.cal-day.has-deadline{background:linear-gradient(155deg,rgba(var(--red-rgb),.14),rgba(var(--red-rgb),.03));border-color:rgba(var(--red-rgb),.35)}
.cal-day.has-hearing{background:linear-gradient(155deg,rgba(var(--purple-rgb),.16),rgba(var(--purple-rgb),.03));border-color:rgba(var(--purple-rgb),.4)}
.cal-day.has-task{background:linear-gradient(155deg,rgba(var(--amber-rgb),.14),rgba(var(--amber-rgb),.03));border-color:rgba(var(--amber-rgb),.35)}
.cal-day.has-meeting{background:linear-gradient(155deg,rgba(var(--blue-rgb),.14),rgba(var(--blue-rgb),.03));border-color:rgba(var(--blue-rgb),.35)}
.cal-day.has-personal{background:linear-gradient(155deg,rgba(var(--gold-rgb),.14),rgba(var(--gold-rgb),.03));border-color:var(--gold-line)}
.cd-r1{display:flex;align-items:center;justify-content:space-between;gap:6px}
.cd-numwrap{display:inline-flex;align-items:center;gap:5px}
.cd-num{font:700 11px var(--mono);color:var(--txt2);letter-spacing:.3px}
.cd-today-badge{display:inline-flex;align-items:center;font:700 7.5px/1.2 var(--mono);letter-spacing:1px;background:var(--gold-dim);border:1px solid var(--gold-line);color:var(--gold2);padding:1px 5px;border-radius:3px}
.cd-flag{font:700 8px/1 var(--mono);letter-spacing:1px;padding:2px 5px;border-radius:2px;background:rgba(255,255,255,.06);color:var(--txt2)}
.cd-items{display:flex;flex-direction:column;gap:3px;min-width:0}
.cd-it{display:flex;align-items:center;gap:5px;font:500 10.5px/1.25 var(--sans);color:var(--txt);min-width:0}
.cd-it i{width:6px;height:6px;border-radius:50%;flex:none;background:var(--txt3)}
.cd-it .t{font:600 9.5px var(--mono);color:var(--txt3);flex:none} .cd-it .w{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cd-it .v{font:700 7.5px var(--mono);letter-spacing:.8px;color:var(--amber);flex:none}
.cd-it.done{opacity:.5;text-decoration:line-through}
.k-limitation i,.k-deadline i{background:var(--red)} .k-hearing i{background:var(--purple)} .k-meeting i{background:var(--blue)} .k-task i{background:var(--amber)} .k-personal i{background:var(--gold2)}
.cd-more{font:600 9.5px var(--mono);color:var(--txt3);letter-spacing:.5px}
.cd-pop{position:absolute;top:calc(100% + 6px);left:50%;transform:translateX(-50%);width:280px;background:rgba(14,18,30,.96);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid rgba(140,160,190,.16);padding:10px 12px;display:none;z-index:200;box-shadow:0 16px 50px rgba(0,0,0,.85);border-radius:10px;cursor:default}
html.light .cd-pop{background:rgba(255,255,255,.98)}
.cal-day:hover .cd-pop{display:block}
.cal-day:nth-child(7n+1) .cd-pop,.cal-day:nth-child(7n+2) .cd-pop{left:0;transform:none}
.cal-day:nth-child(7n) .cd-pop,.cal-day:nth-child(7n+6) .cd-pop{left:auto;right:0;transform:none}
.cal-day:nth-child(n+22) .cd-pop{top:auto;bottom:calc(100% + 6px)}
.cdp-h{display:flex;justify-content:space-between;align-items:baseline;padding-bottom:7px;border-bottom:1px solid rgba(255,255,255,.10);margin-bottom:7px}
.cdp-date{font:700 9px var(--mono);color:var(--txt2);letter-spacing:1.5px} .cdp-n{font:700 14px var(--mono);color:var(--gold2)}
.cdp-list{display:flex;flex-direction:column;gap:1px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);border-radius:6px;overflow:hidden}
.cdp-row{display:grid;grid-template-columns:40px 1fr auto auto;gap:6px;padding:5px 8px;background:rgba(14,18,30,.55);align-items:center;font:500 10.5px var(--sans)}
html.light .cdp-row{background:rgba(0,0,0,.03)}
.cdp-row .t{font:600 9.5px var(--mono);color:var(--txt3)} .cdp-row .w{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .cdp-row .m{font:600 9px var(--mono);color:var(--txt3)}
.cal-legend{display:flex;gap:12px;padding:10px 16px;border-top:1px solid rgba(255,255,255,.06);font:500 8.5px var(--mono);color:var(--txt3);letter-spacing:.5px;align-items:center;flex-wrap:wrap;text-transform:uppercase}
.legend-item{display:flex;align-items:center;gap:6px} .legend-swatch{width:14px;height:9px;border-radius:3px;border:1px solid rgba(255,255,255,.10)}
.legend-axis{margin-left:auto;color:var(--txt4);letter-spacing:.9px;text-transform:none}
.stats-pane{padding:14px 16px;font-family:var(--mono)}
.stat-block{margin-bottom:14px}
.stat-l{font:700 8px var(--mono);color:var(--txt3);letter-spacing:1.5px;text-transform:uppercase;margin-bottom:4px}
.stat-v{font:700 22px/1 var(--mono);letter-spacing:-.5px;color:var(--txt)} .stat-v.am{color:var(--amber)} .stat-v.up{color:var(--green)}
.stat-s{font:500 9.5px/1.45 var(--mono);color:var(--txt2);margin-top:5px;letter-spacing:.3px}
.stat-divider{height:1px;background:rgba(255,255,255,.08);margin:12px 0}
.stat-row{display:grid;grid-template-columns:8px 42px 1fr auto;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--hair);font:500 11px var(--sans);cursor:pointer}
.stat-row:hover{background:rgba(255,255,255,.03)} .stat-row i{width:6px;height:6px;border-radius:50%;background:var(--txt3)}
.stat-row .d{font:600 10px var(--mono);color:var(--txt3)} .stat-row .w{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--txt)} .stat-row .m{font:600 9px var(--mono);color:var(--txt3)}
/* the day modal */
.cal-modal{display:none;position:fixed;inset:0;background:rgba(0,0,0,.72);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:700;align-items:center;justify-content:center;overflow-y:auto;padding:18px}
.cal-modal.open{display:flex}
.cm-card{background:rgba(14,18,30,.97);border:1px solid rgba(140,160,190,.16);border-radius:12px;box-shadow:0 24px 80px rgba(0,0,0,.8);width:min(820px,calc(100vw - 36px));max-height:calc(100vh - 56px);overflow:auto;color:var(--txt)}
html.light .cm-card{background:rgba(255,255,255,.98)}
.cm-head{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid rgba(255,255,255,.08);position:sticky;top:0;background:inherit;z-index:2}
.cm-date{font:700 14px var(--mono);color:var(--txt);letter-spacing:1px;min-width:260px;text-align:center} .cm-date.today{color:var(--gold2)}
.cm-nav,.cm-close{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.14);color:var(--txt2);padding:7px 12px;font:700 9px/1 var(--mono);cursor:pointer;border-radius:8px;letter-spacing:1px}
.cm-nav:hover,.cm-close:hover{color:var(--txt);background:rgba(255,255,255,.07)} .cm-fill{flex:1}
.cm-sect{padding:12px 18px;border-bottom:1px solid rgba(255,255,255,.06)}
.cm-sect-h{font:700 9px var(--mono);color:var(--txt3);letter-spacing:1.5px;text-transform:uppercase;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between} .cm-sect-h .cnt{color:var(--txt2);font-weight:400;letter-spacing:0}
.cm-empty{font-size:11px;color:var(--txt3);font-style:italic;padding:6px 0}
.cdm-rows{display:flex;flex-direction:column;gap:1px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);border-radius:6px;overflow:hidden}
.cdm-row{display:grid;grid-template-columns:52px minmax(0,1.4fr) minmax(0,1fr) auto auto;gap:10px;padding:8px 10px;background:rgba(14,18,30,.5);align-items:center;font:500 12.5px var(--sans);border-left:2px solid var(--txt4)}
html.light .cdm-row{background:rgba(0,0,0,.03)}
.cdm-row.k-limitation,.cdm-row.k-deadline{border-left-color:var(--red)} .cdm-row.k-hearing{border-left-color:var(--purple)} .cdm-row.k-meeting{border-left-color:var(--blue)} .cdm-row.k-task{border-left-color:var(--amber)} .cdm-row.k-personal{border-left-color:var(--gold2)}
.cdm-row.done .name{text-decoration:line-through;opacity:.6}
.cdm-row .time{font:600 10px var(--mono);color:var(--txt3)} .cdm-row .name{color:var(--txt);font-weight:600;min-width:0} .cdm-row .name small{display:block;font-weight:500;color:var(--txt3);font-size:10.5px}
.cdm-row .mt{min-width:0;font-size:12px} .cdm-row .mt small{display:block;color:var(--txt3);font-size:10.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cdm-row .bd{display:flex;gap:4px;flex-wrap:wrap} .cdm-row .acts{display:flex;gap:4px} .cdm-row .acts form{display:inline}
.cm-add{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:12px 18px 16px}
@media (max-width:760px){.cm-add{grid-template-columns:1fr}.cdm-row{grid-template-columns:52px 1fr;grid-auto-rows:auto}}
.cm-add h4{font:700 9px var(--mono);color:var(--txt3);letter-spacing:1.5px;text-transform:uppercase;margin-bottom:4px}
.cm-add label{margin-top:8px} .cm-add .row>*{min-width:120px}

/* ── LOGIN ─────────────────────────────────────────────────────────── */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.login{width:min(400px,100%);padding:36px 36px 30px;text-align:center}
.login .mark{width:64px;height:64px;margin:0 auto 14px;filter:drop-shadow(0 0 14px var(--gold-glow))}
.login h1{font-size:28px;letter-spacing:0;text-transform:none;font-weight:700} .login h1 b{color:var(--gold2)}
.login .sub{margin-bottom:22px} .login form{text-align:left} .login .btn{width:100%;margin-top:16px;justify-content:center}
.login-back{display:inline-block;margin-top:18px;font-size:12.5px;font-weight:600;color:var(--txt3);text-decoration:none} .login-back:hover{color:var(--gold2)}
.login-links{display:flex;flex-direction:column;align-items:center;gap:9px;margin-top:18px} .login-links a{font-size:13px;font-weight:600;color:var(--txt3);text-decoration:none} .login-links a:hover{color:var(--gold2)}
/* ── billing (phase 3f): the invoice document, the aging table, the rates form, the home overview ── */
.inv-doc{padding:26px 28px 20px;margin-bottom:18px}
.inv-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;padding-bottom:16px;border-bottom:1px solid var(--hair2)}
.inv-firm{font:700 20px/1.2 var(--sans);letter-spacing:-.2px;color:var(--txt)}
.inv-title{text-align:right} .inv-word{font:700 11px var(--mono);letter-spacing:3px;color:var(--txt3)} .inv-no{font:700 22px/1.2 var(--mono);color:var(--gold2);margin:2px 0 6px}
.inv-meta{display:grid;grid-template-columns:1.6fr 1.4fr 1fr 1fr 1fr;gap:14px;padding:14px 0;border-bottom:1px solid var(--hair)}
.inv-meta .k{font:700 9px var(--mono);letter-spacing:1.5px;text-transform:uppercase;color:var(--txt3);margin-bottom:4px} .inv-meta .v{font-size:13px;color:var(--txt)}
.inv-lines{width:100%;margin-top:6px} .inv-lines td,.inv-lines th{padding:8px 6px} .inv-lines td:first-child,.inv-lines th:first-child{padding-left:0}
.inv-totals{margin:12px 0 0 auto;width:min(360px,100%);border-top:1px solid var(--hair2);padding-top:10px}
.inv-totals>div{display:flex;justify-content:space-between;gap:12px;padding:4px 0;font-size:13px;color:var(--txt2)}
.inv-totals>div.tot{border-top:1px solid var(--hair);margin-top:4px;padding-top:8px;color:var(--txt);font-weight:700}
.inv-totals>div.due{font:700 18px var(--mono);color:var(--gold2);padding-top:8px}
.inv-notes{margin-top:14px;font-size:13px;color:var(--txt2);white-space:pre-line} .inv-foot{margin-top:16px;font-size:11.5px}
table.rates th{text-transform:none;letter-spacing:0;font:500 13px var(--sans);color:var(--txt);width:46%;vertical-align:middle;padding:6px 0}
table.rates td{vertical-align:middle;padding:4px 6px} table.rates input{width:120px;margin:0;text-align:right;font-family:var(--mono)}
.bo-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px;margin-top:14px}
.bo-n{font:600 15px var(--mono);color:var(--txt)} .bo-l{font-size:11px;color:var(--txt3);margin-top:2px}
@media print{.topbar,.ol-strip,#jarvisDock,#olToasts,.no-print,.ol-npanel,.inv-lines th.no-print,.inv-lines td.no-print{display:none!important}
  html,body{background:#fff!important;color:#111!important} .page{padding:0!important;margin:0!important;width:auto!important} .inv-grid{display:block}
  .inv-doc{box-shadow:none!important;border:0!important;background:#fff!important;color:#111} .inv-doc *{color:#111!important;text-shadow:none!important} .inv-doc a{text-decoration:none}}
/* ── THE TIER 2 APPROVAL CARD (phase 4): the dialog recipe, gold-edged, listing exactly what is about to happen ── */
.su-overlay{position:fixed;inset:0;z-index:100001;display:none;align-items:center;justify-content:center;padding:20px;background:rgba(3,5,9,.78);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.su-overlay.show{display:flex}
.su-card{width:min(480px,94vw);background:var(--bg1);border:1px solid var(--gold-line);border-radius:14px;box-shadow:0 24px 64px rgba(0,0,0,.6),0 0 32px var(--gold-glow);overflow:hidden;animation:oldIn .14s ease}
.su-head{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--hair)}
.su-tier{font:700 10px var(--mono);letter-spacing:2px;color:var(--gold2)} .su-fill{flex:1}
.su-x{width:28px;height:28px;border:0;border-radius:7px;background:transparent;color:var(--txt3);font-size:18px;cursor:pointer} .su-x:hover{background:rgba(255,255,255,.07);color:var(--txt)}
.su-body{padding:18px 18px 14px} .su-title{font:700 16px/1.3 var(--sans);color:var(--txt);margin-bottom:10px}
.su-lines{list-style:none;margin:0;padding:0;border:1px solid var(--hair2);border-radius:10px;background:rgba(255,255,255,.03)}
.su-lines li{padding:8px 12px;border-bottom:1px solid var(--hair);font-size:13px;color:var(--txt2)} .su-lines li:last-child{border-bottom:0}
.su-note{margin-top:12px;font-size:12px;line-height:1.5;color:var(--txt3)}
.su-err{margin-top:10px;font-size:12.5px;color:var(--red)}
.su-pw{margin-top:12px} .su-pw label{margin-top:0} .su-pw input{margin-top:0} .su-hint{margin-top:6px;font-size:12px;color:var(--txt3);line-height:1.5}
.su-btns{display:flex;justify-content:flex-end;gap:9px;padding:12px 14px;background:rgba(0,0,0,.22);border-top:1px solid var(--hair)}
.su-btn{font:700 10.5px var(--mono);letter-spacing:1px;text-transform:uppercase;padding:9px 16px;border-radius:7px;cursor:pointer;border:1px solid var(--hair3);background:transparent;color:var(--txt2);transition:.12s}
.su-btn:hover{background:rgba(255,255,255,.07);color:var(--txt)} .su-btn[hidden]{display:none}
.su-ok{background:var(--gold-dim);color:var(--gold2);border-color:var(--gold-line)} .su-ok:hover{background:rgba(var(--gold-rgb),.28)} .su-ok:disabled{opacity:.5;cursor:default}
.su-no{margin-right:auto}
html.light .su-overlay{background:rgba(20,24,34,.45)} html.light .su-lines{background:rgba(0,0,0,.03)}
/* the command log page */
.cl-row td.cl-text{font-weight:600} .cl-row .cl-lines{font-size:12px;color:var(--txt3)}
/* ── THE COURT MAP (phase 5): a pannable board of glass cards with an SVG link layer, the side pane, the timeline, the card form ── */
/* the map fills the window exactly (his 2026-11-04 note): the page itself never scrolls, only the side pane and the board do */
html.map-page,html.map-page body{height:100%;overflow:hidden}
html.map-page .page{padding-bottom:14px;overflow:hidden;height:calc(100vh - var(--topbar-h));box-sizing:border-box}
.mp-crumb{display:flex;align-items:center;gap:10px;height:30px;margin-bottom:8px;white-space:nowrap} .mp-crumb .mp-back{flex:none}
.mp-main{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:18px;align-items:stretch;height:calc(100vh - var(--topbar-h) - 24px - 14px - 38px);min-height:420px}
.mp-main>.pane{height:100%;min-height:0;display:flex;flex-direction:column;margin-bottom:0}
@media (max-width:1100px){.mp-main{grid-template-columns:1fr;height:auto}.mp-main>.pane{height:auto}.mp-stage{height:520px}}
.mp-main .pane-head{gap:14px;flex-wrap:wrap}
.mp-seg-label{cursor:default;color:var(--txt3)!important;background:transparent!important}
.mp-stage{position:relative;flex:1;min-height:0;overflow:hidden;outline:none;cursor:grab;background:radial-gradient(circle at 1px 1px,rgba(255,255,255,.07) 1px,transparent 1.5px) 0 0/22px 22px}
html.light .mp-stage{background-image:radial-gradient(circle at 1px 1px,rgba(0,0,0,.09) 1px,transparent 1.5px)}
.mp-stage:active{cursor:grabbing}
.mp-links{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.mp-links path.mp-link{fill:none;stroke-width:1.8;opacity:.85;pointer-events:stroke;cursor:pointer;transition:stroke-width .12s,opacity .12s}
.mp-links path.mp-link:hover,.mp-links path.mp-link.sel{stroke-width:3.2;opacity:1}
.mp-links text.mp-link-l{font:600 9.5px var(--mono);letter-spacing:.6px;text-transform:uppercase;text-anchor:middle;pointer-events:auto;cursor:pointer;paint-order:stroke;stroke:var(--bg1);stroke-width:4px;stroke-linejoin:round}
html.light .mp-links text.mp-link-l{stroke:#fff}
.mp-world{position:absolute;left:0;top:0;width:0;height:0;transform-origin:0 0}
.mp-world.glide .mp-card{transition:transform .34s cubic-bezier(.2,.9,.3,1.1)}
.mp-card{position:absolute;left:0;top:0;width:230px;min-height:96px;padding:10px 12px;border-radius:12px;background:var(--glass-bg);backdrop-filter:blur(10px) saturate(1.3);-webkit-backdrop-filter:blur(10px) saturate(1.3);border:1px solid var(--glass-border);box-shadow:0 8px 24px rgba(0,0,0,.4);cursor:grab;user-select:none;outline:none;border-left:3px solid var(--txt4);transition:box-shadow .12s,border-color .12s}
.mp-card:hover{box-shadow:0 12px 32px rgba(0,0,0,.55),0 0 0 1px var(--hair3)}
.mp-card.drag{cursor:grabbing;box-shadow:0 20px 48px rgba(0,0,0,.65);z-index:5}
.mp-card.sel{box-shadow:0 0 0 2px var(--gold-line),0 12px 32px rgba(0,0,0,.55)}
.mp-card.from{box-shadow:0 0 0 2px var(--blue),0 0 24px rgba(var(--blue-rgb),.4)}
.mp-card:focus-visible{box-shadow:0 0 0 3px var(--pill-hover)}
.mp-card.k-matter{border-left-color:var(--gold2);background:linear-gradient(160deg,rgba(var(--gold-rgb),.16),var(--glass-bg) 60%);width:260px;min-height:104px}
.mp-card.k-issue{border-left-color:var(--purple)} .mp-card.k-evidence{border-left-color:var(--green)} .mp-card.k-witness{border-left-color:var(--blue)} .mp-card.k-filing{border-left-color:var(--amber)} .mp-card.k-case{border-left-color:var(--red)} .mp-card.k-note{border-left-color:var(--txt4)}
.mp-card .mc-k{font:700 8.5px var(--mono);letter-spacing:1.6px;text-transform:uppercase;color:var(--txt3);margin-bottom:4px}
.mp-card.k-matter .mc-k{color:var(--gold2)} .mp-card.k-issue .mc-k{color:var(--purple)} .mp-card.k-evidence .mc-k{color:var(--green)} .mp-card.k-witness .mc-k{color:var(--blue)} .mp-card.k-filing .mc-k{color:var(--amber)} .mp-card.k-case .mc-k{color:var(--red)}
.mp-card .mc-t{font:600 13px/1.3 var(--sans);color:var(--txt);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.mp-card .mc-s{font-size:11.5px;color:var(--txt3);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mp-card .mc-f{font:500 10.5px var(--mono);color:var(--txt3);margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .mp-card .mc-f a{font-size:10.5px}
.mp-asof{position:absolute;left:12px;top:12px;display:flex;align-items:center;gap:10px;padding:7px 8px 7px 12px;border-radius:10px;background:rgba(var(--amber-rgb),.14);border:1px solid rgba(var(--amber-rgb),.5);color:var(--amber);font:600 12px var(--sans);z-index:6}
.mp-hint{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);padding:6px 12px;border-radius:999px;background:var(--bg1);border:1px solid var(--blue);color:var(--txt);font:600 11.5px var(--sans);z-index:6;white-space:nowrap}
.mp-main.asof .mp-card{cursor:default}
/* the timeline strip */
.mp-tl{flex:none;padding:8px 14px 10px;border-top:1px solid var(--hair)}
.mp-tl-head{display:flex;align-items:center;gap:10px;margin-bottom:4px} .mp-tl-title{font:700 9px var(--mono);letter-spacing:1.5px;text-transform:uppercase;color:var(--txt3)}
.mp-tl-date{font:700 12px var(--mono);color:var(--gold2)} .mp-tl-axis{margin-left:auto;font:500 9px var(--mono);color:var(--txt4);letter-spacing:.6px}
.mp-tl input[type=range]{width:100%;margin:0;padding:0;height:18px;background:transparent;border:0;box-shadow:none;accent-color:var(--gold2);cursor:pointer}
.mp-tl-items{position:relative;height:22px;margin-top:2px}
.mp-tl-dot{position:absolute;top:4px;width:12px;height:12px;margin-left:-6px;border-radius:50%;background:var(--txt3);border:1px solid rgba(255,255,255,.3);cursor:pointer;display:flex;align-items:center;justify-content:center;font:700 8px var(--mono);color:#05070d}
.mp-tl-dot.future{opacity:.55} .mp-tl-dot:hover{transform:scale(1.3);z-index:2}
.mp-tl-dot.k-deadline,.mp-tl-dot.k-limitation{background:var(--red)} .mp-tl-dot.k-hearing{background:var(--purple)} .mp-tl-dot.k-meeting{background:var(--blue)} .mp-tl-dot.k-task{background:var(--amber)} .mp-tl-dot.k-document,.mp-tl-dot.k-filing{background:var(--amber)} .mp-tl-dot.k-memo{background:var(--gold2)} .mp-tl-dot.k-evidence{background:var(--green)} .mp-tl-dot.k-incident,.mp-tl-dot.k-opened{background:var(--txt2)}
/* the side pane */
.mp-side-body{flex:1;min-height:0;overflow:auto;padding:12px 14px}
.mp-sd-t{font:600 15px/1.3 var(--sans);color:var(--txt)} .mp-sd-s{font-size:12.5px;color:var(--txt3);margin-top:2px}
.mp-kv{margin-top:8px} .mp-kv th{width:110px;padding:5px 0} .mp-kv td{padding:5px 6px;font-size:12.5px}
.mp-sd-b{font-size:13px;line-height:1.55;color:var(--txt2);margin-top:8px;white-space:pre-line}
.mp-sd-cov{margin-top:10px;padding:8px 10px;border-radius:9px;font-size:12.5px;border:1px solid} .mp-sd-cov.ok{color:var(--green);border-color:rgba(var(--green-rgb),.4);background:rgba(var(--green-rgb),.08)} .mp-sd-cov.am{color:var(--amber);border-color:rgba(var(--amber-rgb),.4);background:rgba(var(--amber-rgb),.08)}
.mp-sd-links{display:flex;flex-direction:column;gap:3px;margin-top:10px;font-size:12px} .mp-sd-links a{color:var(--txt2);padding:2px 4px}
.mp-sd-h{font:700 10px var(--mono);letter-spacing:1.5px;text-transform:uppercase;color:var(--txt3);margin:16px 0 8px;display:flex;align-items:center;gap:8px}
.mp-rec{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px} .mp-rec-t{font:600 11px var(--mono);color:var(--red)}
/* the memo recorder while it records: a red pulsing dot on the button, the timer beside it, a red hairline on the panel */
.mp-rec .btn.rec{background:var(--red);color:#fff;box-shadow:0 0 18px rgba(var(--red-rgb),.4)} .mp-rec .rec-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#fff;margin-right:7px;animation:jvPulse 1s ease-out infinite;vertical-align:middle}
.mp-rec.live{outline:1px solid rgba(var(--red-rgb),.5);outline-offset:6px;border-radius:8px} .mp-rec .mp-rec-how{flex-basis:100%;color:var(--txt2);font-size:12px;line-height:1.5}
.mp-memo-form{margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid var(--hair)}
.mp-memo{padding:10px 0;border-top:1px solid var(--hair)}
.mm-h{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:11px} .mm-h .sp{flex:1}
.mm-sum{font-size:13px;line-height:1.5;color:var(--txt);margin-top:6px}
.mm-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px} .chip-s{font:500 10.5px var(--mono);padding:2px 7px;border-radius:999px;background:rgba(var(--blue-rgb),.12);border:1px solid rgba(var(--blue-rgb),.35);color:var(--blue)} .chip-s.is{background:rgba(var(--purple-rgb),.12);border-color:rgba(var(--purple-rgb),.35);color:var(--purple)}
.mm-on{font-size:11.5px;margin-top:4px}
.mm-text{white-space:pre-line;max-height:220px;overflow:auto}
.chip-s.maybe{background:rgba(var(--amber-rgb),.12);border-color:rgba(var(--amber-rgb),.45);color:var(--amber);border-style:dashed} .chip-s.maybe small{font-weight:400;opacity:.8}
.chip-x{border:0;background:rgba(255,255,255,.08);color:inherit;border-radius:999px;width:18px;height:18px;font-size:11px;cursor:pointer;margin-left:2px;padding:0;line-height:18px} .chip-x:hover{background:rgba(255,255,255,.18)}
.br-grid{columns:2;column-gap:28px;margin:0 0 0 18px} .br-grid li{break-inside:avoid}
@media (max-width:900px){.br-grid{columns:1}}
.mm-acts{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}
.mm-audio audio{width:100%;margin-top:6px;height:34px}
.mm-tr{margin-top:8px} .mm-tr textarea{font-size:13px}
.mp-brief{margin:10px 0 0 18px;font-size:13px;line-height:1.5;color:var(--txt2)} .mp-brief li{margin-bottom:6px}
/* the card form (the calendar modal's recipe) and the link-type picker */
.mp-modal{display:none;position:fixed;inset:0;background:rgba(0,0,0,.72);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:700;align-items:center;justify-content:center;overflow-y:auto;padding:18px}
.mp-modal.open{display:flex}
.mp-modal-card{width:min(760px,calc(100vw - 36px));max-height:calc(100vh - 56px);overflow:auto;padding:0 18px 16px;background:rgba(14,18,30,.97)}
html.light .mp-modal-card{background:rgba(255,255,255,.98)}
.mp-modal-head{display:flex;align-items:center;gap:10px;padding:14px 0;border-bottom:1px solid var(--hair);margin-bottom:4px;position:sticky;top:0;background:inherit;z-index:2}
.mp-modal .row>*{min-width:140px} .mp-modal label{margin-top:10px}
.mp-pick{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:710;width:min(420px,92vw);padding:14px;border-radius:14px;background:var(--bg1);border:1px solid var(--blue);box-shadow:0 24px 64px rgba(0,0,0,.6);display:flex;flex-wrap:wrap;gap:6px}
.mp-pick[hidden]{display:none}
.mp-pick-t{width:100%;font:600 12.5px var(--sans);color:var(--txt);margin-bottom:6px} .mp-pick input{width:100%;margin-top:4px} .mp-pick-acts{width:100%;display:flex;gap:6px;justify-content:flex-end;margin-top:6px}
.mp-sum .mp-cov{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.pk-reset{display:flex;flex-direction:column;gap:6px;align-items:flex-start}

/* The landing page (people not signed in) has its own stylesheet: static/css/landing.css (2026-11-05). */
