/* EDGE ID full-screen workspace kit (Owner, 12 Oct 2026): every pixel used; controls on the edges; dense and zoomed out like
   Judiverse Mail, Excel and ChatGPT; nothing floating; no centred column. Look F (Focus Rail): navy, cyan accent, icon rail. */
:root{--bg:#061520;--pane:#071b27;--pane2:#0a2231;--rail:#030e16;--card:#0b2636;--hover:#0e2d40;--sel:#0f3a52;--line:rgba(114,228,255,.13);--line2:rgba(114,228,255,.24);
 --text:#e6f2f8;--mute:#8fb0c0;--dim:#6a8c9c;--acc:#72e4ff;--acc2:#3fc8f0;--ok:#5ee6a8;--warn:#ffc96b;--bad:#ff7a8a;--vio:#b49cff;--ink:#041019}
html[data-look="D"],html[data-look="ice"]{--bg:#f5f9fc;--pane:#ffffff;--pane2:#f0f6fa;--rail:#e6eff5;--card:#ffffff;--hover:#e9f2f8;--sel:#d6ebf6;--line:rgba(4,16,25,.10);--line2:rgba(4,16,25,.18);
 --text:#0b1c26;--mute:#4f6b79;--dim:#7890a0;--acc:#0a7fb3;--acc2:#0a7fb3;--ok:#13804f;--warn:#9a6400;--bad:#c02a3c;--vio:#6b4fd8;--ink:#ffffff}
*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden}
body{font:12.5px/1.4 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}
svg.i{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
/* frame: rail | pane | work */
.ws{display:grid;grid-template-columns:52px 216px 1fr;height:100vh;width:100vw}
.ws.nopane{grid-template-columns:52px 1fr}
.rail{background:var(--rail);border-right:1px solid var(--line);display:flex;flex-direction:column;align-items:center;padding:8px 0;gap:2px}
.rail .lion{width:32px;height:32px;border-radius:8px;margin-bottom:8px}
.rail a{width:40px;height:38px;border-radius:9px;display:grid;place-items:center;color:var(--mute);position:relative}
.rail a.on{background:var(--sel);color:var(--acc)}.rail a.on::before{content:"";position:absolute;left:-6px;top:9px;bottom:9px;width:3px;border-radius:2px;background:var(--acc)}
.rail a b{position:absolute;top:4px;right:3px;min-width:15px;height:15px;border-radius:8px;background:var(--acc);color:var(--ink);font-size:9.5px;display:grid;place-items:center;padding:0 3px}
.rail .sp{flex:1}.rail .me{width:30px;height:30px;border-radius:50%;background:var(--acc);color:var(--ink);font-weight:800;font-size:11px;display:grid;place-items:center}
.pane{background:var(--pane);border-right:1px solid var(--line);display:flex;flex-direction:column;min-width:0;overflow:hidden}
.pane .ph{height:44px;display:flex;align-items:center;justify-content:space-between;padding:0 12px;font-weight:700;font-size:13.5px;border-bottom:1px solid var(--line)}
.pane .ph .wm{display:flex;align-items:center;gap:8px}.pane .ph .wm small{font-weight:500;color:var(--mute);font-size:11px}
.pane .new{margin:10px 10px 6px;display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:8px;background:var(--acc);color:var(--ink);font-weight:700}
.nav{padding:4px 6px;overflow:hidden}.nav .g{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--dim);padding:10px 8px 4px}
.nav a{display:flex;align-items:center;gap:9px;padding:5px 8px;border-radius:7px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav a svg{color:var(--mute)}.nav a.on{background:var(--sel)}.nav a.on svg{color:var(--acc)}.nav a .c{margin-left:auto;color:var(--mute);font-size:11px}.nav a .c.hot{color:var(--acc);font-weight:700}
.pane .foot{margin-top:auto;border-top:1px solid var(--line);padding:8px 10px;display:flex;align-items:center;gap:8px;font-size:11.5px}
.pane .foot .me{width:26px;height:26px;border-radius:50%;background:var(--acc);color:var(--ink);font-weight:800;font-size:10px;display:grid;place-items:center}
.pane .foot small{display:block;color:var(--mute);font-size:10.5px}
.work{display:flex;flex-direction:column;min-width:0;height:100vh}
/* app bar */
.appbar{height:44px;flex:none;display:flex;align-items:center;gap:12px;padding:0 12px;border-bottom:1px solid var(--line);background:var(--pane)}
.appbar .crumb{display:flex;align-items:center;gap:6px;color:var(--mute);white-space:nowrap}.appbar .crumb b{color:var(--text);font-size:13.5px}
.search{flex:1;max-width:620px;margin:0 auto;display:flex;align-items:center;gap:8px;height:30px;padding:0 10px;border:1px solid var(--line2);border-radius:8px;background:var(--pane2);color:var(--mute)}
.search kbd{margin-left:auto;font-size:10.5px;border:1px solid var(--line2);border-radius:4px;padding:0 4px}
.appbar .r{display:flex;align-items:center;gap:4px}.ib{width:30px;height:30px;border-radius:7px;display:grid;place-items:center;color:var(--mute)}
.pill{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:13px;border:1px solid var(--line2);font-size:11.5px;color:var(--text);white-space:nowrap}
/* ribbon: grouped commands on the top edge */
.ribbon{flex:none;display:flex;align-items:stretch;gap:0;padding:4px 8px 0;border-bottom:1px solid var(--line);background:var(--pane);overflow:hidden}
.rg{display:flex;flex-direction:column;padding:0 6px;border-right:1px solid var(--line)}.rg:last-child{border-right:0}
.rg .cmds{display:flex;gap:1px}.rg .gl{font-size:10px;color:var(--dim);text-align:center;padding:2px 0 4px}
.cmd{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:46px;padding:5px 6px 3px;border-radius:6px;color:var(--text);font-size:10.5px;white-space:nowrap}
.cmd svg{width:18px;height:18px;color:var(--acc)}.cmd.on{background:var(--sel)}.cmd.dis{opacity:.45}
/* content panes */
.panes{flex:1;min-height:0;display:grid;overflow:hidden}
.p{min-width:0;min-height:0;overflow:hidden;display:flex;flex-direction:column;border-right:1px solid var(--line)}.p:last-child{border-right:0}
.p.alt{background:var(--pane)}
.ph2{height:36px;flex:none;display:flex;align-items:center;gap:8px;padding:0 12px;border-bottom:1px solid var(--line);font-weight:650;font-size:12.5px}
.ph2 .sp{flex:1}.ph2 small{color:var(--mute);font-weight:400}
.tabs{display:flex;gap:2px;padding:0 10px;border-bottom:1px solid var(--line);height:32px;align-items:flex-end;flex:none}
.tabs a{padding:6px 10px;color:var(--mute);border-bottom:2px solid transparent}.tabs a.on{color:var(--text);border-color:var(--acc)}
.body{flex:1;min-height:0;overflow:hidden;padding:10px 12px}
.grid{display:grid;gap:10px}
.kpis{display:grid;gap:8px}.kpi{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px 10px}
.kpi small{display:block;color:var(--mute);font-size:10.5px}.kpi b{display:block;font-size:18px;font-weight:700;margin-top:1px}.kpi i{font-style:normal;font-size:10.5px;color:var(--ok)}.kpi i.dn{color:var(--bad)}
.box{background:var(--card);border:1px solid var(--line);border-radius:8px;display:flex;flex-direction:column;min-height:0;overflow:hidden}
.box .bh{height:30px;flex:none;display:flex;align-items:center;gap:8px;padding:0 10px;border-bottom:1px solid var(--line);font-weight:650;font-size:12px}.box .bh .sp{flex:1}.box .bh small{color:var(--mute);font-weight:400}
.box .bb{padding:8px 10px;flex:1;min-height:0;overflow:hidden}
/* dense tables like Excel */
table{width:100%;border-collapse:collapse;font-size:12px}thead th{position:sticky;top:0;background:var(--pane2);text-align:left;font-weight:600;color:var(--mute);font-size:11px;padding:5px 8px;border-bottom:1px solid var(--line2);white-space:nowrap}
td{padding:4px 8px;border-bottom:1px solid var(--line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:320px}tr.sel td{background:var(--sel)}tr:hover td{background:var(--hover)}
td.n,th.n{text-align:right;font-variant-numeric:tabular-nums}.pos{color:var(--ok)}.neg{color:var(--bad)}
.mono{font-size:11.5px}
.chip{display:inline-flex;align-items:center;gap:4px;height:18px;padding:0 7px;border-radius:9px;font-size:10.5px;border:1px solid var(--line2);color:var(--mute);white-space:nowrap}
.chip.ok{color:var(--ok);border-color:rgba(94,230,168,.4)}.chip.warn{color:var(--warn);border-color:rgba(255,201,107,.4)}.chip.bad{color:var(--bad);border-color:rgba(255,122,138,.45)}.chip.acc{color:var(--acc);border-color:var(--line2)}.chip.syn{color:var(--vio);border-color:rgba(180,156,255,.45)}
.btn{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 12px;border-radius:7px;background:var(--acc);color:var(--ink);font-weight:700;font-size:12px;border:0;white-space:nowrap}
.btn.g{background:transparent;color:var(--text);border:1px solid var(--line2);font-weight:600}
.row{display:flex;align-items:center;gap:8px}.sp{flex:1}.mute{color:var(--mute)}.small{font-size:11px}
.list .it{display:flex;gap:10px;padding:8px 12px;border-bottom:1px solid var(--line)}.list .it.sel{background:var(--sel)}.list .it .grow{flex:1;min-width:0}
.list .it b{display:block;font-size:12.5px}.list .it small{display:block;color:var(--mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.av{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:10.5px;font-weight:800;color:var(--ink);background:var(--acc);flex:none}.av.v{background:var(--vio)}.av.o{background:var(--ok)}.av.w{background:var(--warn)}
.track{height:6px;border-radius:3px;background:var(--pane2);overflow:hidden}.track i{display:block;height:100%;background:var(--acc)}
.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:12px}.kv span{color:var(--mute)}
/* Jude docked on the bottom edge of the work area (never floating) */
.jude{flex:none;display:flex;align-items:center;gap:8px;padding:6px 10px;border-top:1px solid var(--line);background:var(--pane)}
.jude .in{flex:1;height:30px;display:flex;align-items:center;padding:0 10px;border:1px solid var(--line2);border-radius:8px;background:var(--pane2);color:var(--mute)}
.jude .mp{height:30px;display:flex;align-items:center;gap:6px;padding:0 10px;border:1px solid var(--line2);border-radius:8px;font-size:11.5px}
.jude .send{width:30px;height:30px;border-radius:8px;background:var(--acc);color:var(--ink);display:grid;place-items:center}
/* status bar, Excel-style */
.status{height:24px;flex:none;display:flex;align-items:center;gap:14px;padding:0 10px;border-top:1px solid var(--line);background:var(--rail);color:var(--mute);font-size:11px}
.status .sp{flex:1}.status .ok{color:var(--ok)}
a{color:inherit;text-decoration:none}
.pane .ph .wm{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* One font everywhere, like ChatGPT (Owner, 12 Oct 2026): the system UI font, numbers aligned with tabular figures, one family. */
*,*::before,*::after,svg text,kbd,code,pre,.mono,input,button,select,textarea{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",system-ui,sans-serif!important}
.mono,td.n,th.n,.kpi b,.status{font-variant-numeric:tabular-nums}
.mono{font-size:inherit}
/* Codex-style menus and sign-in (Owner, 12 Oct 2026: "codex has a more clean and visible easy to see style") */
.menu{position:fixed;z-index:50;width:300px;background:var(--pane2);border:1px solid var(--line2);border-radius:15px;padding:9px;box-shadow:0 12px 40px rgba(0,0,0,.35);font-size:13px}
.menu[hidden]{display:none}
.menu .mt{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;font-size:11px;color:var(--mute)}
.menu .mt button{border:0;background:none;color:var(--mute);font-size:15px;cursor:pointer}
.menu .mo{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px;border:0;border-radius:10px;background:none;color:var(--text);text-align:left;cursor:pointer;font-size:13px}
.menu .mo:hover{background:var(--hover)}.menu .mo b{font-weight:550;display:block}.menu .mo small{display:block;color:var(--mute);font-size:11px;margin-top:3px}
.menu .mo .tick{color:var(--acc)}.menu .mo .chev{color:var(--mute)}.menu hr{border:0;border-top:1px solid var(--line);margin:4px 6px}
.rail .me,.jude .mp,.jude .ib,.appbar .pill{cursor:pointer}
.looks{display:inline-flex;gap:2px;padding:2px;border-radius:999px;border:1px solid var(--line2)}
.looks button{border:0;background:transparent;color:var(--mute);font-size:11px;padding:3px 9px;border-radius:999px;cursor:pointer}
.looks button[aria-pressed=true]{background:var(--acc);color:var(--ink)}
.auth{width:100%;max-width:400px;margin:auto;padding:40px 20px;text-align:center}
.auth .sym{display:flex;flex-direction:column;align-items:center;gap:12px;margin-bottom:34px;font-size:22px;font-weight:650}
.auth .sym img{width:64px;height:64px;border-radius:16px;box-shadow:0 14px 40px rgba(0,0,0,.35)}
.auth h1{font-size:28px;font-weight:650;letter-spacing:-.01em}.auth>p{font-size:13px;color:var(--mute);margin:14px 0 24px}
.auth .dev{display:flex;align-items:center;gap:12px;text-align:left;padding:12px 14px;border:1px solid var(--line2);border-radius:12px;background:var(--pane2);margin-bottom:12px}
.auth .dev b{display:block;font-size:13px}.auth .dev small{color:var(--mute)}
.auth .primary{width:100%;height:44px;border:0;border-radius:999px;background:var(--acc);color:var(--ink);font-weight:700;font-size:14px;margin-top:4px}
.auth .textlink{display:block;margin:14px auto 0;font-size:13px;color:var(--text)}
.auth .backup{font-size:11px;color:var(--mute);margin-top:6px}.auth .legal{font-size:11px;color:var(--mute);margin-top:34px}
.looks.float{display:none}

/* Pills everywhere (Owner, 12 Oct 2026: "I only approved pills everywhere, whether it's a tall pill or a short pill").
   Every control, question, input, tab, chip, menu item and command is a pill; panels are soft-cornered containers. */
.btn,.chip,.pill,.search,.jude .in,.jude .mp,.jude .send,.cmd,.nav a,.tabs a,.pane .new,.rail a,.menu .mo,.looks,.looks button,.ib,
input,select,button,.auth .primary,.auth .dev,.kv b .chip,.av,.me{border-radius:999px!important}
textarea{border-radius:22px!important}
.menu{border-radius:22px!important}
.box,.kpi,.card,.cap{border-radius:16px!important}
/* Inline small radii become pills on controls only (a, button, span, label); images, thumbnails, tiles, calendar blocks and
   anything holding a picture keep a soft 12px corner and are never squashed into ovals. */
:is(a,button,span,label,b,small):is([style*="border-radius:4px"],[style*="border-radius:5px"],[style*="border-radius:6px"],[style*="border-radius:7px"],[style*="border-radius:8px"],[style*="border-radius:9px"],[style*="border-radius:10px"],[style*="border-radius: 6px"],[style*="border-radius: 8px"]):not(.ev):not(.av):not(:has(>img,>canvas,>video,>svg:not(.i,.gi,.chev,.dot,.ic,.sw))){border-radius:999px!important}
.tabs{gap:6px;padding:4px 10px;align-items:center;height:38px}.tabs a{border:1px solid transparent;padding:4px 12px;border-bottom:1px solid transparent}
.tabs a.on{border-color:var(--acc);background:var(--sel);color:var(--text)}
.cmd{padding:5px 10px 3px}.cmd.on{outline:1px solid var(--acc)}
.rail a.on::before{display:none}.rail a.on{outline:1px solid var(--acc)}
.nav a.on{outline:1px solid var(--line2)}
/* The wordmark: JudeAI | EDGE ID beside the lion */
.pane .ph .brand{display:flex;align-items:center;gap:6px;font-weight:700;font-size:14px;white-space:nowrap}
.pane .ph .brand i{font-style:normal;color:var(--mute);font-weight:400}
.pane .appname{padding:10px 14px 0;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--dim)}
/* Discipline pass (Owner, 12 Oct 2026): adaptive at every width, air in the type, no grey text. */
:root{--mute:#c6dbe6;--dim:#9fc3d3;--line:rgba(114,228,255,.16);--line2:rgba(114,228,255,.3)}
html[data-look="D"],html[data-look="ice"]{--mute:#2b4656;--dim:#3f5d6d}
body{font-size:13px;line-height:1.5;letter-spacing:.005em}
h1{letter-spacing:0}h2,h3{letter-spacing:.005em}
.appbar{height:52px;gap:14px;padding:0 16px}.appbar .crumb b{font-size:14px}
.ribbon{padding:6px 10px 0}.rg{padding:0 8px}.cmd{min-width:52px;padding:6px 8px 4px;gap:4px;font-size:11px}.rg .gl{padding:3px 0 6px;letter-spacing:.04em}
.pane .ph{height:52px;padding:0 14px}.pane .new{margin:12px 12px 8px;padding:9px 12px}.nav a{padding:7px 10px;margin:1px 0}.nav .g{padding:14px 10px 6px;letter-spacing:.08em}
.ph2{height:40px;padding:0 14px;gap:10px}.tabs{height:42px;gap:8px;padding:5px 12px}.tabs a{padding:5px 13px}.body{padding:12px 14px}
thead th{padding:7px 10px;letter-spacing:.04em}td{padding:6px 10px;line-height:1.45}
.kpi{padding:10px 12px}.kpi small{font-size:11px;letter-spacing:.03em}.kpi b{font-size:19px;margin-top:3px}.kpis{gap:10px}
.box .bh{height:34px;padding:0 12px}.box .bb{padding:10px 12px}.kv{gap:6px 14px}.list .it{padding:10px 12px}
.chip{height:20px;padding:0 9px;font-size:11px}.status{height:26px;font-size:11.5px;gap:16px}
.jude{padding:8px 12px;gap:10px}.jude .in{height:34px;padding:0 14px}.jude .mp{height:34px;padding:0 12px}
/* KPI strips: never squeeze; wrap into as many columns as fit */
.kpis{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))!important}
.grid2,.grid3,.grid4{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))!important}
/* The frame adapts: narrower than 1500 the section pane collapses to the rail; narrower than 1200 the inspector drops below;
   narrower than 900 panes stack and scroll; the rail becomes a bottom bar on phones. */
@media (max-width:1500px){.ws{grid-template-columns:52px 1fr}.pane{display:none}.appbar .crumb{display:flex}}
@media (max-width:1200px){.panes{grid-template-columns:minmax(0,1fr)!important;grid-auto-rows:minmax(0,1fr);overflow:auto}.p{border-right:0;border-bottom:1px solid var(--line);min-height:320px;overflow:auto}
  .cmd{min-width:44px}.rg .gl{display:none}.search{max-width:360px}.appbar .pill{display:none}}
@media (max-width:900px){.ws{grid-template-columns:1fr;grid-template-rows:1fr 56px}.rail{flex-direction:row;border-right:0;border-top:1px solid var(--line);padding:0 8px;gap:0;justify-content:space-around;order:2;overflow-x:auto}
  .rail .lion{display:none}.rail .sp{display:none}.rail a{width:44px;height:44px}.work{height:auto;min-height:0;order:1}.panes{overflow:auto}.p{min-height:280px}
  .ribbon{overflow-x:auto;flex-wrap:nowrap}.appbar{height:48px}.search{max-width:none;flex:1}.status{display:none}.jude .mp{display:none}}
.panes{overflow:auto}.p{overflow:auto}

/* Looks: electric = A (brighter navy, glass), ice = D (light), rail = F (default, icon rail only). */
html[data-look="electric"]{--bg:radial-gradient(1200px 700px at 70% 0%,#0d3f5c 0%,#071722 55%,#040d14 100%);--pane:rgba(7,27,39,.92);--pane2:#0b2a3c;--rail:#061a26;--card:#0d2d40;--hover:#11384f;--sel:#134460}
html[data-look="electric"] body{background-attachment:fixed}
html[data-look="rail"] .pane,html[data-look="F"] .pane{display:none}
html[data-look="rail"] .ws,html[data-look="F"] .ws{grid-template-columns:52px 1fr}
html[data-look="electric"] .ws,html[data-look="ice"] .ws{grid-template-columns:52px 216px 1fr}
html[data-look="electric"] .pane,html[data-look="ice"] .pane{display:flex}
@media (max-width:1500px){html[data-look="electric"] .ws,html[data-look="ice"] .ws{grid-template-columns:52px 1fr}html[data-look="electric"] .pane,html[data-look="ice"] .pane{display:none}}
/* The look switch is a quiet icon bottom-left in the rail (Owner, 12 Oct 2026); no named colour toggle in the top bar. */
.looks,.looks.float{display:none!important}
.rail .look-btn{width:40px;height:38px;border-radius:999px;display:grid;place-items:center;color:var(--mute);cursor:pointer;margin-top:auto}
.rail .look-btn:hover{background:var(--hover);color:var(--acc)}

/* Selection is a highlight, never a ring (Owner, 12 Oct 2026). Columns never go below a readable width; nothing clips. */
.cmd.on,.rail a.on,.nav a.on,.tabs a.on,tr.sel td,.list .it.sel{outline:0!important;box-shadow:none!important;background:var(--sel)}
.rail a.on{color:var(--acc)}
.kpis{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))!important}
.kpi b{white-space:nowrap}.kpi small,.kpi i{white-space:normal}
.panes>.p{min-width:0}.ph2{flex-wrap:wrap;height:auto;min-height:40px;padding:6px 14px}.ph2 .chip{max-width:100%}
.ribbon{overflow-x:auto;scrollbar-width:none}.ribbon::-webkit-scrollbar{display:none}
td,th{max-width:none}table{table-layout:auto}.body table{min-width:0}
.appbar .crumb b{white-space:nowrap}.appbar{gap:10px}.appbar .r{flex:none}
.p{overflow:auto}.body{overflow:auto}
@media (max-width:1500px){.panes{grid-template-columns:minmax(0,1fr) minmax(300px,360px)!important}.panes>.p:nth-child(2):nth-last-child(2){display:none}}
@media (max-width:1200px){.panes{grid-template-columns:minmax(0,1fr)!important}}
/* Overlap fix (12 Oct 2026): rows grow to content, panes never claim more than their row, tall panes scroll inside. */
.panes{grid-auto-rows:minmax(0,1fr)!important;align-items:stretch}
.p{min-height:0!important;max-height:100%;overflow:auto!important}
@media (max-width:1200px){.panes{grid-auto-rows:minmax(320px,auto)!important;overflow:auto}}
@media (max-width:900px){.panes{grid-auto-rows:minmax(280px,auto)!important}}
/* Content inside a pane never resizes the pane: fixed-height blocks inside panes become capped and scroll. */
.p [style*="height:300px"],.p [style*="height:320px"],.p [style*="height:280px"]{max-height:45%;min-height:0!important;overflow:auto}

/* One wordmark, every page, top-left of the app bar; the breadcrumb is the page name only (Owner, 12 Oct 2026). */
.appbar .crumb .wm{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:14px;margin-right:14px;white-space:nowrap}
.appbar .crumb .wm i{font-style:normal;opacity:.6}
.rail .lion{display:block}
/* Panes are laid out by flex, not grid, so a pane can never paint over another; each pane scrolls inside itself. */
.panes{display:flex!important;flex-direction:row;align-items:stretch;min-height:0;overflow:hidden}
.panes>.p{flex:1 1 0;min-width:0;min-height:0;overflow:auto!important;max-height:none}
.panes>.p.alt:last-child{flex:0 0 clamp(300px,30%,420px)}
.panes>.p:first-child:not(:last-child){flex:1 1 0}
.panes>.p:nth-child(2):not(:last-child){flex:1 1 0}
.panes>.p>*{flex:none}.panes>.p>.body{flex:1 1 auto;min-height:0;overflow:auto}
.p [style*="height:300px"],.p [style*="height:320px"],.p [style*="height:280px"]{height:auto!important;max-height:none;flex:none}
@media (max-width:1200px){.panes{flex-direction:column;overflow:auto}.panes>.p{flex:none;max-height:none;min-height:360px}.panes>.p.alt:last-child{flex:none}}

.appbar .crumb .wm{margin-right:0}.appbar .crumb b,.appbar .crumb>span:not(.wm){display:none}

/* No grey text, anywhere (Owner): secondary text is pale ice blue, never grey. Hierarchy by weight and size, not by dimming. */
:root{--mute:#9fdcf5;--dim:#63ddff;--text:#f6fbff}
html[data-look="ice"]{--mute:#0a5f8f;--dim:#0a7fb3;--text:#061520;--bg:#f2f8fc;--pane:#ffffff;--pane2:#e8f3fa;--rail:#dceaf3;--card:#ffffff;--hover:#dbeef9;--sel:#c5e5f6;--line:rgba(10,95,143,.22);--line2:rgba(10,95,143,.4);--acc:#0a7fb3;--ink:#ffffff}
html[data-look="ice"] body{background:#f2f8fc}
html[data-look="electric"]{--bg:#0b2d45;--pane:#0d3650;--pane2:#114566;--rail:#082436;--card:#12456a;--hover:#175b85;--sel:#1a6a9b;--line:rgba(114,228,255,.28);--line2:rgba(114,228,255,.5)}
html[data-look="electric"] body{background:radial-gradient(1200px 700px at 70% 0%,#145f8c 0%,#0b2d45 55%,#061a2c 100%);background-attachment:fixed}
/* Contrast and hierarchy: pane darker than card, card lighter than pane, lines visible, headings heavier. */
html[data-look="rail"]{--bg:#04101a;--pane:#071d2c;--pane2:#0a2a3e;--rail:#030c14;--card:#0d2f44;--hover:#12405a;--sel:#164d6c;--line:rgba(114,228,255,.22);--line2:rgba(114,228,255,.42)}
.card,.box,.kpi{border:1px solid var(--line2);box-shadow:0 1px 0 rgba(255,255,255,.04) inset}
h1,h2,h3,.ph2,.bh,thead th,.kpi b{color:#ffffff;font-weight:700}html[data-look="ice"] h1,html[data-look="ice"] h2,html[data-look="ice"] h3,html[data-look="ice"] .ph2,html[data-look="ice"] .bh,html[data-look="ice"] thead th,html[data-look="ice"] .kpi b{color:#061520}
.kpi small,.nav .g,.rg .gl,.small,.status{color:var(--mute)}
/* The smooth look of the engine render: tighter letterfit on headings, clean tabular figures, 2px radii on data rows. */
body{font-feature-settings:"ss01","tnum","cv11";letter-spacing:-.005em}h1,h2,.kpi b,.appbar .crumb .wm{letter-spacing:-.02em}td,th{letter-spacing:0}
/* Everything clickable shows a hand and reacts. */
a,.cmd,.chip,.btn,.ib,.nav a,.rail a,.tabs a,tr[onclick],.li,.rec-row{cursor:pointer}
.nav a:hover,.rail a:hover,.cmd:hover,.tabs a:hover{background:var(--hover)}.btn:hover{filter:brightness(1.1)}
/* The old eye icon in the top bar is Privacy View, so it must look pressable */
.appbar .ib{cursor:pointer}
/* ===== Clear, easy to look at, distinct (Owner, 12 Oct 2026). Not a rebuild: the flat ground, the text spacing and the
   contrast from the engine render, applied to the layout that exists. */
:root{--ground:linear-gradient(106deg,#0b0c0c,#0b0e10,#10232f);--bg:#0b0e10;--pane:#0d1319;--pane2:#13202b;--rail:#070b0e;--card:#111b25;--hover:rgba(99,221,255,.08);--sel:rgba(99,221,255,.14);--line:rgba(255,255,255,.09);--line2:rgba(99,221,255,.4);--text:#f2f8fc;--mute:#bfe6f6;--dim:#63ddff;--acc:#63ddff}
body,html[data-look="rail"] body{background:var(--ground);background-attachment:fixed}
html[data-look="electric"]{--ground:radial-gradient(1200px 700px at 70% 0%,#0f4a6e 0%,#0a2a40 50%,#06161f 100%);--pane:#0c2a3d;--pane2:#113a52;--card:#0f3449;--hover:rgba(99,221,255,.12);--sel:rgba(99,221,255,.18)}
html[data-look="ice"]{--ground:#f4f8fb;--bg:#f4f8fb;--pane:#ffffff;--pane2:#e9f1f6;--rail:#e2ecf3;--card:#ffffff;--line:rgba(10,23,34,.1);--line2:rgba(10,104,156,.45);--text:#0a1722;--mute:#0a5f8f;--dim:#0a689c;--acc:#0a7fb3;--ink:#fff;--hover:rgba(10,127,179,.08);--sel:rgba(10,127,179,.14)}
/* text: air between lines, words and letters; clear sizes; secondary text is light, never dim */
body{font-size:13px;line-height:1.55;letter-spacing:.004em;word-spacing:.02em}
h1{font-size:22px;font-weight:650;letter-spacing:-.02em;line-height:1.2}h2,h3,.ph2,.bh{font-size:13.5px;font-weight:650;line-height:1.4}
td,th{padding:8px 12px;line-height:1.5}thead th{font-size:11px;letter-spacing:.06em;text-transform:uppercase;font-weight:600;color:var(--mute)}
.kpi b{font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1.15;margin-top:4px}.kpi small{font-size:11.5px;letter-spacing:.01em}.kpi{padding:12px 14px}.kpis{gap:12px}
.kv{gap:8px 16px;line-height:1.5}.list .it{padding:11px 14px}.nav a{padding:8px 12px;line-height:1.4}.chip{letter-spacing:.01em}
.small,.kpi i,.rg .gl,.nav .g,.status{font-size:11.5px;letter-spacing:.02em}
/* contrast: surfaces step clearly (ground < pane < card), dividers visible, headings white */
.card,.box,.kpi{background:var(--card);border:1px solid var(--line)}.p.alt{background:var(--pane)}
h1,h2,h3,.ph2,.bh,.kpi b,td b,.list .it b{color:#ffffff}html[data-look="ice"] h1,html[data-look="ice"] h2,html[data-look="ice"] h3,html[data-look="ice"] .ph2,html[data-look="ice"] .bh,html[data-look="ice"] .kpi b,html[data-look="ice"] td b{color:#0a1722}
.chip.ok{background:rgba(0,137,90,.22);color:#8ff2c6;border-color:transparent}.chip.bad{background:rgba(200,16,46,.3);color:#ffb6bf;border-color:transparent}.chip.warn{background:rgba(255,201,107,.2);color:#ffdc93;border-color:transparent}.chip.acc{background:rgba(99,221,255,.16);color:var(--acc);border-color:transparent}.chip.syn{background:rgba(180,156,255,.18);color:#dccfff;border-color:transparent}
tr:hover td{background:var(--hover)}tr.sel td{background:var(--sel)}
/* motion like JudeCinema */
a,.cmd,.chip,.btn,.ib,.nav a,.rail a,.tabs a,tr,.li{transition:background .15s,color .15s,transform .15s,box-shadow .15s}
.btn:hover{box-shadow:0 10px 26px rgba(24,163,233,.35);transform:translateY(-1px)}
/* Room to breathe (Owner, 12 Oct 2026): like ChatGPT. Wider margins, taller rows, calmer ribbon, one thing at a time. */
.panes>.p{padding:6px 24px 12px}.panes{gap:0}.p.alt{padding-left:24px}
.body{padding:14px 0}.ph2{min-height:48px;padding:10px 0;gap:12px}.ph2 small{margin-left:4px}
td,th{padding:10px 12px}thead th{padding:9px 12px}.list .it{padding:13px 12px;gap:12px}.kv{gap:10px 18px}
.kpis{gap:14px}.kpi{padding:14px 16px}.box{margin-bottom:16px}.box .bh{height:40px}.box .bb{padding:12px 14px}
.appbar{height:60px;padding:0 24px;gap:16px}.appbar .r{gap:8px}.search{height:34px;max-width:560px}
.ribbon{padding:8px 18px 0;gap:4px}.rg{padding:0 10px}.cmd{min-width:54px;padding:7px 9px 5px;gap:5px}.rg .gl{padding:4px 0 8px}
.nav a{padding:9px 12px;margin:2px 0}.nav .g{padding:18px 12px 8px}.pane{padding:16px 10px}.pane .new{margin:14px 12px 10px;padding:10px 12px}
.rail{padding:12px 0;gap:6px}.rail a{width:40px;height:40px}
.jude{padding:12px 24px;gap:12px}.jude .in{height:38px;padding:0 16px;font-size:13.5px}
.status{height:30px;padding:0 24px;gap:18px}
/* calm: secondary chips in headers only when they say something; never more than three in a row */
.ph2 .chip:nth-of-type(n+4){display:none}
/* the first pane is the work; the inspector is quieter by weight and size, never by fading */

.appbar a.crumb{text-decoration:none;color:inherit}.rail>a:first-child{width:auto;height:auto;border-radius:8px!important;margin-bottom:8px}

/* Every device (Owner, 12 Oct 2026). Tablets: section pane folds, inspector drops below. Phones: rail at the bottom, one pane at a time, touch targets 44px. */
@media (max-width:1100px){.ws{grid-template-columns:52px 1fr!important}.pane{display:none!important}.panes{flex-direction:column;overflow:auto}.panes>.p{flex:none;min-height:0}.panes>.p.alt:last-child{flex:none;border-left:0!important;border-top:1px solid var(--line)}
  .ribbon{overflow-x:auto}.cmd{min-width:48px}.search{max-width:none;flex:1}.appbar .pill{display:none}}
@media (max-width:700px){.ws{grid-template-columns:1fr!important;grid-template-rows:1fr 60px}.rail{flex-direction:row;order:2;border-right:0!important;border-top:1px solid var(--line)!important;padding:4px 6px;gap:0;justify-content:space-around;overflow-x:auto}
  .rail>a:first-child,.rail .sp,.rail .me,.rail .look-btn{display:none}.rail a{width:44px;height:44px;flex:none}.work{order:1;height:auto;min-height:0}
  .appbar{height:52px;padding:0 14px;gap:8px}.appbar .r .ib:not(:last-child){display:none}.appbar .crumb .wm{font-size:12px}
  .ribbon{padding:6px 10px 0}.rg .gl{display:none}.cmd{min-width:44px;padding:6px}.cmd svg{width:20px;height:20px}
  .panes>.p{padding:4px 14px 10px}.kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important}.kpi b{font-size:22px}
  table{font-size:12.5px}td,th{padding:9px 8px}.jude{padding:8px 12px}.jude .mp{display:none}.status{display:none}
  .btn,.tabs a,.nav a{min-height:36px}.btn{min-height:44px}}
@media (hover:none){.rail a,.cmd,.btn,.tabs a{min-height:44px}}
/* Tablet (701 to 1100): the rail stays a left column and the work area fills; nothing inherits the phone bottom-rail. */
@media (min-width:701px) and (max-width:1100px){.ws{display:grid!important;grid-template-columns:52px 1fr!important;grid-template-rows:100vh!important}
  .rail{flex-direction:column!important;order:0;border-top:0!important;border-right:1px solid var(--line)!important;padding:12px 0;justify-content:flex-start;overflow:visible}
  .rail>a:first-child,.rail .sp,.rail .me,.rail .look-btn{display:flex}.rail .sp{display:block}.work{order:0;height:100vh;display:flex;flex-direction:column}
  .panes{flex-direction:column;overflow:auto;flex:1;min-height:0}.panes>.p{flex:none;min-height:0}.status{display:flex}}
/* Jude side panel: a collapsible column on the right of every page, like a browser extension. */
.jude{display:none!important}
.jp{position:fixed;top:0;right:0;bottom:0;width:380px;max-width:100vw;background:var(--pane);border-left:1px solid var(--line);display:flex;flex-direction:column;transform:translateX(100%);transition:transform .2s ease;z-index:40}
body.jp-open .jp{transform:none}body.jp-open .ws{padding-right:380px}
.jp-head{height:56px;flex:none;display:flex;align-items:center;gap:10px;padding:0 14px 0 18px;border-bottom:1px solid var(--line)}
.jp-title{font-weight:700;font-size:14px}.jp-ctx{font-size:12px;color:var(--mute)}
.jp-ib{width:32px;height:32px;border-radius:999px;border:0;background:transparent;color:var(--text);font-size:18px;cursor:pointer}.jp-ib:hover{background:var(--hover)}
.jp-thread{flex:1;min-height:0;overflow:auto;padding:16px 18px;display:flex;flex-direction:column;gap:12px}
.jp-msg{display:flex}.jp-msg.me{justify-content:flex-end}.jp-b{max-width:88%;padding:10px 14px;border-radius:18px;background:var(--pane2);line-height:1.5;white-space:pre-wrap;word-break:break-word}.jp-msg.me .jp-b{background:var(--sel)}
.jp-cites{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.jp-compose{flex:none;display:flex;align-items:flex-end;gap:8px;padding:10px 14px;border-top:1px solid var(--line)}
.jp-in{flex:1;resize:none;border:0;border-radius:18px;padding:10px 14px;background:var(--pane2);color:var(--text);font:inherit;line-height:1.45;outline:0}
.jp-send{width:38px;height:38px;border-radius:999px;border:0;background:var(--acc);color:var(--ink);font-size:18px;cursor:pointer;flex:none}
.jp-foot{flex:none;display:flex;align-items:center;gap:8px;padding:6px 14px 10px;font-size:11.5px;color:var(--mute)}.jp-mp{padding:3px 10px;border-radius:999px;background:var(--pane2)}
.jp-tab{position:fixed;right:0;bottom:84px;width:44px;height:44px;border-radius:999px 0 0 999px;border:1px solid var(--line);border-right:0;background:var(--pane);display:grid;place-items:center;cursor:pointer;z-index:41;transition:right .2s ease}
.jp-tab img{width:26px;height:26px;border-radius:7px}body.jp-open .jp-tab{right:380px;border-radius:999px 0 0 999px}
@media (max-width:1100px){.jp{width:min(380px,92vw)}body.jp-open .ws{padding-right:0}body.jp-open .jp-tab{right:min(380px,92vw)}}
@media (max-width:700px){.jp-tab{bottom:72px}}

/* Panes keep the widths each screen declared (flex-basis), inside a flex row that cannot overlap; below 1100px they stack. */
.panes>.p[style*="flex:0 0"]{flex-shrink:0}
@media (max-width:1100px){.panes>.p[style]{flex:none!important;max-width:none!important;min-width:0!important;width:100%}}
.tabs{position:relative;z-index:0;overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}
/* Contrast, not monochrome (Owner, 12 Oct 2026). Five layers, each distinct: ground, pane, card, selection, accent. */
html[data-look="rail"],:root{--ground:#07090c;--bg:#07090c;--rail:#0b0f14;--pane:#0f1620;--pane2:#17222e;--card:#15202c;--hover:#1b2a39;--sel:#1f3b55;--line:rgba(255,255,255,.1);--line2:rgba(99,221,255,.5);--text:#f4f8fb;--mute:#aee3f7;--acc:#4fd3ff}
html[data-look="rail"] body,body{background:#07090c}
.rail{background:#0b0f14!important}.pane{background:#0d131b!important}.p.alt{background:#0f1620!important}.appbar,.ribbon{background:#0b1118!important}.status{background:#0b0f14!important}
.card,.box,.kpi{background:#15202c!important;border:1px solid rgba(255,255,255,.1)!important}
.box .bh,.ph2{background:transparent}.kpi b{color:#ffffff}.kpi small{color:#aee3f7}
h1,h2,h3,.ph2,.bh,td b,.list .it b,.kv b{color:#ffffff}td{color:#dceaf3}thead th{color:#8fd4ef}
tr:nth-child(even) td{background:rgba(255,255,255,.025)}tr:hover td{background:#1b2a39}tr.sel td{background:#1f3b55}
.btn{background:#4fd3ff;color:#06131c}.btn.g{background:#1b2a39;color:#f4f8fb}.nav a.on,.rail a.on,.tabs a.on,.cmd.on{background:#1f3b55;color:#ffffff}.rail a.on{color:#4fd3ff}
.chip.ok{background:#0f5a3c;color:#b9ffd9}.chip.bad{background:#6b1424;color:#ffd0d6}.chip.warn{background:#5c4210;color:#ffe3a6}.chip.acc{background:#124a66;color:#bff0ff}.chip.syn{background:#3a2a6b;color:#e4daff}.chip{background:#1b2a39;color:#dceaf3}
.search{background:#17222e}.jp{background:#0f1620}.jp-b{background:#17222e}.jp-msg.me .jp-b{background:#1f3b55}
.pos{color:#7ff0bd}.neg{color:#ff9aa8}.kpi i{color:#7ff0bd}.kpi i.dn{color:#ff9aa8}

/* The EDGE ID portal: quiet, centred on the screen's natural focus, one box, the lion, the places you use. */
.portal{display:flex;flex-direction:column;min-height:100vh}.portal .appbar{border-bottom:0!important;background:transparent!important}
.portal-c{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;padding:0 24px 12vh}
.portal-lion{width:84px;height:84px;border-radius:22px;box-shadow:0 22px 46px -26px rgba(24,163,233,.6)}
.portal-box{width:min(720px,100%);display:flex;align-items:center;gap:10px;padding:8px 8px 8px 22px;border-radius:999px;background:#17222e;border:1px solid rgba(99,221,255,.35);box-shadow:0 10px 26px rgba(24,163,233,.12)}
.portal-box input{flex:1;border:0;outline:0;background:transparent;color:#f4f8fb;font-size:17px;padding:10px 0}
.portal-go{width:42px;height:42px;border-radius:999px;border:0;background:#4fd3ff;color:#06131c;font-size:20px;cursor:pointer}
.portal-hits{width:min(720px,100%);display:flex;flex-direction:column;background:#0f1620;border:1px solid rgba(255,255,255,.1);border-radius:22px;padding:6px;margin-top:-14px}
.portal-hits a{padding:10px 16px;border-radius:999px;color:#f4f8fb;text-decoration:none}.portal-hits a.on,.portal-hits a:hover{background:#1f3b55}.portal-hits a.ask{color:#4fd3ff}
.portal-places{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;max-width:720px}
.portal-places a{padding:9px 16px;border-radius:999px;background:#15202c;border:1px solid rgba(255,255,255,.1);color:#f4f8fb;text-decoration:none;font-size:13.5px}.portal-places a:hover{background:#1f3b55}
html[data-look="ice"] .portal-box{background:#fff}html[data-look="ice"] .portal-box input,html[data-look="ice"] .portal-places a,html[data-look="ice"] .portal-hits a{color:#0a1722}html[data-look="ice"] .portal-places a,html[data-look="ice"] .portal-hits{background:#fff}
@media (max-width:700px){.portal-c{padding:0 16px 10vh;gap:20px}.portal-lion{width:64px;height:64px}.portal-box input{font-size:16px}}

/* The EDGE ID home, built like the JudeAI home (Owner, 12 Oct 2026): wide sidebar, the lion tile centred, the composer at the foot. */
body.pt{background:radial-gradient(1000px 700px at 55% 30%,#0b3c5a 0%,#082638 45%,#061826 100%);background-attachment:fixed}
.portal-hits[hidden]{display:none!important}
.pt-app{display:grid;grid-template-columns:300px 1fr;height:100vh}
.pt-side{display:flex;flex-direction:column;padding:18px 14px;border-right:1px solid rgba(255,255,255,.08);background:rgba(4,14,22,.55)}
.pt-top{display:flex;align-items:center;gap:8px;padding:2px 6px 18px}.pt-brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none;font-weight:700;font-size:17px;white-space:nowrap}.pt-brand img{width:32px;height:32px;border-radius:9px}.pt-brand i{font-style:normal;opacity:.55;font-weight:400}
.pt-ib{width:34px;height:34px;border-radius:999px;display:grid;place-items:center;color:#dceaf3;cursor:pointer}.pt-ib:hover{background:rgba(255,255,255,.07)}
.pt-row{display:flex;align-items:center;gap:14px;padding:11px 14px;border-radius:999px;color:#f4f8fb;text-decoration:none;font-size:15.5px}.pt-row:hover{background:rgba(255,255,255,.07)}.pt-row svg{width:18px;height:18px;color:#dceaf3}
.pt-new{font-weight:600;margin-bottom:10px}.pt-nav{display:flex;flex-direction:column;gap:4px}
.pt-acct{margin-top:auto;display:flex;align-items:center;gap:10px;padding:12px 6px 0;border-top:1px solid rgba(255,255,255,.08)}.pt-ava{width:34px;height:34px;border-radius:50%;background:#4fd3ff;color:#06131c;display:grid;place-items:center;font-weight:800;font-size:12px}.pt-who b{display:block;color:#fff;font-size:14px}.pt-who small{color:#aee3f7;font-size:12px}
.pt-main{position:relative;display:flex;flex-direction:column;min-width:0}
.pt-hist{position:absolute;top:18px;right:24px;width:36px;height:36px;border-radius:999px;display:grid;place-items:center;color:#dceaf3}.pt-hist:hover{background:rgba(255,255,255,.07)}
.pt-hero{flex:1;display:grid;place-items:center}.pt-tile{width:112px;height:112px;border-radius:28px;box-shadow:0 30px 60px -30px rgba(24,163,233,.7)}
.pt-dock{width:min(1040px,calc(100% - 64px));margin:0 auto 22px;display:flex;flex-direction:column;gap:10px}
.pt-box{background:#0c2233;border:1.5px solid rgba(99,221,255,.55);border-radius:28px;padding:18px 18px 12px;box-shadow:0 0 0 4px rgba(99,221,255,.06)}
.pt-box textarea{width:100%;min-height:58px;resize:none;border:0;outline:0;background:transparent;color:#f4f8fb;font:inherit;font-size:18px;line-height:1.45}.pt-box textarea::placeholder{color:#8fe0ff}
.pt-ctrl{display:flex;align-items:center;gap:10px;margin-top:8px}.pt-c{width:38px;height:38px;border-radius:999px;display:grid;place-items:center;color:#dceaf3;cursor:pointer}.pt-c:hover{background:rgba(255,255,255,.07)}
.pt-pill{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 16px;border-radius:999px;border:1px solid rgba(255,255,255,.14);color:#f4f8fb;font-weight:600;font-size:15px}.pt-dot{width:8px;height:8px;border-radius:50%;background:#5ee6a8}
.pt-send{width:46px;height:46px;border-radius:999px;border:0;background:#4fd3ff;color:#06131c;display:grid;place-items:center;cursor:pointer}.pt-send svg{width:20px;height:20px}
.pt-under{display:flex;align-items:center;padding:0 10px;color:#aee3f7;font-size:14px}.pt-tog{display:inline-flex;align-items:center;gap:10px}.pt-tog i{width:36px;height:20px;border-radius:999px;background:#18a3e9;position:relative}.pt-tog i::after{content:"";position:absolute;right:3px;top:3px;width:14px;height:14px;border-radius:50%;background:#fff}.pt-tog b{color:#fff;letter-spacing:.08em;font-size:12px}
.pt-ask{display:inline-flex;align-items:center;gap:8px}.pt-note{text-align:center;color:#aee3f7;font-size:13px;margin:4px 0 0}
.pt .portal-hits{width:100%;margin:0}
@media (max-width:900px){.pt-app{grid-template-columns:1fr}.pt-side{display:none}.pt-dock{width:calc(100% - 28px)}.pt-tile{width:84px;height:84px}}
html body.pt,html[data-look] body.pt{background:radial-gradient(1000px 700px at 55% 30%,#0b3c5a 0%,#082638 45%,#061826 100%)!important;background-attachment:fixed}
body.pt .jp-tab{display:none}body.pt.jp-open .pt-app{padding-right:380px}
.pt-pill{white-space:nowrap;flex:none}@media (max-width:700px){.pt-pill{height:36px;padding:0 12px;font-size:14px}.pt-ctrl{gap:6px}}

/* Owner, 12 Oct 2026: send has no fill; sidebar compact like ChatGPT; the plus opens a menu. */
.pt-send{background:transparent!important;border:1.5px solid #4fd3ff!important;color:#4fd3ff!important}.pt-send:hover{background:rgba(79,211,255,.12)!important}
.pt-app{grid-template-columns:260px 1fr}
.pt-side{padding:12px 10px}.pt-top{padding:4px 6px 10px}.pt-brand{font-size:15px}.pt-brand img{width:28px;height:28px}
.pt-row{padding:8px 12px;font-size:14px;gap:12px}.pt-row svg{width:16px;height:16px}.pt-new{margin-bottom:6px}.pt-nav{gap:1px}
.pt-acct{padding:10px 6px 0}.pt-who b{font-size:13px}
.pt-c{border:0;background:transparent}
.pt-menu{position:relative;width:300px;background:#0f1c28;border:1px solid rgba(255,255,255,.12);border-radius:20px;padding:8px;box-shadow:0 18px 40px rgba(0,0,0,.45);align-self:flex-start;margin-left:8px}
.pt-menu[hidden]{display:none}.pt-mt{padding:8px 12px;font-size:12px;color:#aee3f7}
.pt-mo{display:block;width:100%;text-align:left;border:0;background:transparent;color:#f4f8fb;padding:10px 12px;border-radius:14px;cursor:pointer;font:inherit}.pt-mo:hover{background:#1f3b55}
.pt-mo b{display:block;font-weight:600;font-size:14px}.pt-mo small{display:block;color:#aee3f7;font-size:12px;margin-top:2px}

/* Apps: calm, grouped, every app one clickable pill (Owner, 12 Oct 2026). */
.pt-apps{overflow:auto}.pa-wrap{width:min(880px,calc(100% - 64px));margin:0 auto;padding:56px 0 48px}
.pa-wrap h1{font-size:28px;font-weight:650;letter-spacing:-.02em;color:#fff;margin-bottom:28px}
.pa-g{margin-bottom:28px}.pa-g h2{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:#aee3f7;font-weight:600;margin-bottom:12px}
.pa-list{display:flex;flex-wrap:wrap;gap:10px}
.pa-a{padding:11px 18px;border-radius:999px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);color:#f4f8fb;text-decoration:none;font-size:15px;transition:background .15s,transform .15s}
.pa-a:hover{background:#1f3b55;transform:translateY(-1px)}
.pt-row.on{background:rgba(255,255,255,.08)}
@media (max-width:700px){.pa-wrap{width:calc(100% - 32px);padding:28px 0}}

.pt-fly{position:fixed;left:268px;top:120px;width:min(560px,calc(100vw - 300px));max-height:calc(100vh - 160px);overflow:auto;background:#0f1c28;border:1px solid rgba(255,255,255,.12);border-radius:22px;padding:12px 16px 4px;box-shadow:0 22px 50px rgba(0,0,0,.5);z-index:60}
.pt-fly[hidden]{display:none}.pt-fly.from-plus{left:50%;top:auto;bottom:200px;transform:translateX(-30%)}
.pt-fly .pa-g{margin-bottom:14px}.pt-fly .pa-g h2{margin-bottom:8px;font-size:11px}.pt-fly .pa-list{gap:8px}.pt-fly .pa-a{padding:8px 14px;font-size:14px}
@media (max-width:900px){.pt-fly{left:12px;right:12px;width:auto;top:70px}.pt-fly.from-plus{left:12px;transform:none;bottom:180px;top:auto}}

/* The skinny icon rail returns on the far left of the home (Owner, 12 Oct 2026); the sidebar beside it can be hidden. */
.pt-app{grid-template-columns:52px 260px 1fr}
.pt-app>.rail{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 0;background:rgba(3,10,16,.7)!important;border-right:1px solid rgba(255,255,255,.08)!important;height:100vh}
.pt-app>.rail>a:first-child{margin-bottom:6px}.pt-app>.rail .sp{flex:1;display:block}
body.pt-hide .pt-app{grid-template-columns:52px 0 1fr}body.pt-hide .pt-side{display:none}
.pt-ib{border:0;background:transparent}
.pt-fly{left:320px}body.pt-hide .pt-fly{left:60px}
@media (max-width:900px){.pt-app{grid-template-columns:1fr;grid-template-rows:1fr 60px}.pt-app>.rail{order:2;flex-direction:row;height:60px;justify-content:space-around;overflow-x:auto}.pt-main{order:1}}
/* Hiding the sidebar leaves two tracks, never a zero-width one (bug, 12 Oct 2026). */
body.pt-hide .pt-app{grid-template-columns:52px 1fr!important}
@media (max-width:900px){body.pt-hide .pt-app{grid-template-columns:1fr!important}}
/* The composer is a quiet one-line pill until you start; then it opens tall with its controls (Owner, 12 Oct 2026). */
.pt-box{transition:padding .18s ease,border-radius .18s ease}
.pt-box:not(.open){display:flex;align-items:center;gap:10px;padding:6px 6px 6px 22px;border-radius:999px;border:1px solid rgba(99,221,255,.35);box-shadow:none}
.pt-box:not(.open) textarea{min-height:24px;height:24px;font-size:16px;line-height:24px;overflow:hidden}
.pt-box:not(.open) .pt-ctrl{margin:0;gap:0}.pt-box:not(.open) .pt-ctrl>*:not(.pt-send){display:none}
.pt-box:not(.open)+.pt-under,.pt-box:not(.open)~.pt-note{display:none}
.pt-send{background:#4fd3ff!important;border:0!important;color:#06131c!important}.pt-send:hover{filter:brightness(1.08)}

/* ===== One estate, one look (Owner, 12 Oct 2026): every page, the home, the landing and the JudeAI panel share these. ===== */
/* Contrast for everyone, including disabled users: text is white or near-white on dark, never blue on blue, never grey. */
html:not([data-look="ice"]){--text:#ffffff;--mute:#eef3f7;--dim:#e3eaf0;--sel:#1d3c58;--hover:#17293a}
html:not([data-look="ice"]) .tabs a,html:not([data-look="ice"]) .tabs a.on,html:not([data-look="ice"]) .nav a .c.hot,html:not([data-look="ice"]) .portal-hits a.ask{color:#fff!important}
html:not([data-look="ice"]) .chip{color:#fff!important;font-weight:600}
html:not([data-look="ice"]) .chip.ok{background:#0b6b48!important}html:not([data-look="ice"]) .chip.warn{background:#8a5a00!important}html:not([data-look="ice"]) .chip.bad{background:#a3203a!important}
html:not([data-look="ice"]) .chip.acc{background:#145a85!important}html:not([data-look="ice"]) .chip.vio{background:#5a3fb0!important}
::placeholder{color:rgba(255,255,255,.72)!important;opacity:1}html[data-look="ice"] ::placeholder{color:#24394a!important}
.pt-box textarea::placeholder{color:rgba(255,255,255,.72)!important}
:focus-visible{outline:2px solid #fff!important;outline-offset:2px}
.pt-under,.pt-note,.pt-mt,.pt-mo small,.pt-who small,.pa-g h2{color:#eef3f7!important}
/* Wordmark and avatar are images. */
img.wm{height:17px;width:auto;display:block;border-radius:0!important}.pt-brand img.wm{width:auto;height:16px}html[data-look="ice"] img.wm{filter:brightness(0)}
.crumb img.wm{height:18px}
.me,.pt-ava,.ava{background:transparent!important;padding:0!important;overflow:hidden}.me img.av,.pt-ava img.av,.ava img.av{width:100%;height:100%;display:block;border-radius:50%}
/* SVG icons only: dropdown chevrons, status dots, switches. */
svg.chev{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;flex:none}
svg.dot{width:9px;height:9px;fill:#5ee6a8;flex:none}svg.sw{width:36px;height:20px;flex:none}svg.sw rect{fill:#18a3e9}svg.sw circle{fill:#fff}
svg.ic{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.pt-tog i{display:none}
/* The imaging viewer (and every main middle pane) is never hidden at laptop widths. */
@media (max-width:1500px){.panes>.p:nth-child(2):nth-last-child(2){display:flex!important}}
@media (min-width:1101px) and (max-width:1500px){.panes>.p[style*="flex:0 0"]{flex-shrink:1!important;min-width:240px}}
body.jp-open .panes>.p[style*="flex:0 0"]{flex-shrink:1!important;min-width:220px}

/* Home: a thin pill in the middle under the lion; typing moves it to the bottom and opens the full mouth. */
.pt-main{align-items:stretch;justify-content:center}
.pt-wmlink{position:absolute;top:22px;left:28px;display:none;z-index:2}body.pt-hide .pt-wmlink{display:block}
@media (max-width:900px){.pt-wmlink{display:block;left:18px;top:18px}}
.pt-main:not(.typing) .pt-hero{flex:none;margin:0 0 26px}
.pt-main:not(.typing) .pt-dock{width:min(720px,calc(100% - 48px));margin:0 auto}
.pt-quick{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;width:min(820px,calc(100% - 48px));margin:22px auto 0}
.pt-main.typing{justify-content:flex-end}.pt-main.typing .pt-hero{flex:1 1 auto;align-content:start;padding-top:40px;min-height:0}
.pt-main.typing .pt-tile{width:72px;height:72px;border-radius:20px}.pt-main.typing .pt-quick{display:none}
.pt-main.typing .pt-dock{width:min(1040px,calc(100% - 64px));margin:0 auto 22px}
.pt-main.typing .portal-hits{max-height:calc(100vh - 380px);overflow:auto}
.pt-tile{transition:width .25s ease,height .25s ease}
.pt-box.open .pt-ctrl .sp{flex:1}
.pt-ask-btn{position:absolute;top:16px;right:72px}
/* One dropdown for every pill. */
.ed-menu{position:fixed;z-index:200;min-width:240px;background:#0f1c28;border:1px solid rgba(255,255,255,.14);border-radius:20px;padding:8px;box-shadow:0 18px 40px rgba(0,0,0,.5)}
.ed-menu .pt-mo{display:grid;grid-template-columns:1fr auto;align-items:center}.ed-menu .pt-mo small{grid-column:1}.ed-menu .pt-mo .tick{grid-row:1/span 2;grid-column:2;color:#fff}
.ed-menu .pt-mo.on{background:#1d3c58}
.model-pill,.pt-pill{cursor:pointer}
/* The JudeAI panel looks exactly like the home: same ground, same composer. */
.jp{background:radial-gradient(700px 500px at 50% 0%,#0b3c5a 0%,#082638 50%,#061826 100%)!important;border-left:1px solid rgba(255,255,255,.12)!important;width:400px}
body.jp-open .ws{padding-right:400px}body.pt.jp-open .pt-app{padding-right:400px}
.jp-head{height:64px;gap:10px;padding:0 12px 0 18px;border-bottom:0!important}.jp-lion{width:30px;height:30px;border-radius:9px}.jp-wm{height:16px;width:auto}
.jp-ctx{font-size:13px;color:#fff!important;padding:4px 10px;border-radius:999px;background:rgba(255,255,255,.08);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:130px}
.jp-ib{display:grid;place-items:center;color:#fff}
.jp-thread{padding:12px 18px}.jp-b{background:rgba(255,255,255,.08)!important;color:#fff;font-size:15px}.jp-msg.me .jp-b{background:#1d3c58!important}.jp-msg.wait .jp-b{opacity:.8}
.jp-dock{flex:none;padding:10px 14px 14px}.jp-box{padding:14px 14px 10px!important}.jp-box textarea{min-height:44px;font-size:16px}
.jp-box .pt-send{width:40px;height:40px}.jp-dock .pt-note{font-size:12px;margin-top:8px}
.jp-tab{display:none!important}.jp-foot,.jp-compose{display:none}
@media (max-width:1100px){.jp{width:min(400px,100vw)}body.jp-open .ws{padding-right:0}body.pt.jp-open .pt-app{padding-right:0}}
/* "Open JudeAI": a top-right icon on every page. */
.jp-open-btn{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 14px 0 6px;border-radius:999px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);color:#fff;font:inherit;font-size:14px;font-weight:600;cursor:pointer;white-space:nowrap;flex:none}
.jp-open-btn img{width:26px;height:26px;border-radius:8px}.jp-open-btn:hover,.jp-open-btn.on{background:#1d3c58}
@media (max-width:700px){.jp-open-btn span{display:none}.jp-open-btn{padding:0 5px}}
/* Every row, tab and command responds: a record drawer, toasts and an ask-before-acting sheet. */
tbody tr{cursor:pointer}tbody tr.sel,tbody tr.sel td{background:#1d3c58!important}
.ed-drawer{position:fixed;top:12px;bottom:12px;right:12px;width:min(420px,calc(100vw - 24px));z-index:150;background:#0f1c28;border:1px solid rgba(255,255,255,.14);border-radius:24px;box-shadow:0 30px 70px rgba(0,0,0,.55);display:flex;flex-direction:column;transform:translateX(110%);transition:transform .28s cubic-bezier(.2,.8,.2,1)}
.ed-drawer.in{transform:none}body.jp-open .ed-drawer{right:412px}
.ed-dh{display:flex;align-items:center;gap:10px;padding:18px 18px 8px}.ed-dh b{font-size:18px;color:#fff}.ed-dh .sp{flex:1}
.ed-dsub{padding:0 18px 12px;color:#eef3f7;font-size:14px}
.ed-dl{flex:1;overflow:auto;padding:4px 18px;display:grid;grid-template-columns:auto 1fr;gap:10px 16px;align-content:start}
.ed-dl dt{color:#eef3f7;font-size:12px;letter-spacing:.06em;text-transform:uppercase;padding-top:2px}.ed-dl dd{margin:0;color:#fff;font-size:15px}
.ed-acts{display:flex;flex-wrap:wrap;gap:8px;padding:14px 18px 18px;border-top:1px solid rgba(255,255,255,.1)}
.ed-act{padding:9px 16px;border-radius:999px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);color:#fff;font:inherit;font-size:14px;cursor:pointer}.ed-act:hover{background:#1d3c58}.ed-act.go{background:#4fd3ff;color:#06131c;border:0;font-weight:700}
.ed-x{width:36px;height:36px;border-radius:999px;border:0;background:transparent;color:#fff;display:grid;place-items:center;cursor:pointer}.ed-x:hover{background:rgba(255,255,255,.08)}
.ed-toasts{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:300;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.ed-toast{padding:12px 20px;border-radius:999px;background:#fff;color:#06131c;font-weight:600;font-size:14px;box-shadow:0 12px 30px rgba(0,0,0,.4);transition:opacity .3s,transform .3s}.ed-toast.out{opacity:0;transform:translateY(8px)}
.ed-sheet{position:fixed;inset:0;z-index:250;display:grid;place-items:center;background:rgba(2,8,14,.55)}
.ed-card{width:min(420px,calc(100vw - 32px));background:#0f1c28;border:1px solid rgba(255,255,255,.14);border-radius:24px;padding:22px}.ed-card b{display:block;font-size:18px;color:#fff;margin-bottom:6px}.ed-card p{color:#eef3f7;margin:0 0 18px}
.ed-card .ed-acts{border:0;padding:0;justify-content:flex-end}
.cmd.flash{background:#1d3c58!important}
/* Channel composer is its own component and always shows. */
.ch-compose{display:flex!important}
.pt-tog.off svg.sw rect{fill:rgba(255,255,255,.25)}.pt-tog.off svg.sw circle{transform:translateX(-16px)}svg.sw circle{transition:transform .2s}
.rail .look-btn{display:none!important}
.sym img.wm-door{height:26px;width:auto;border-radius:0;box-shadow:none}
/* Focus is a highlight, never a ring (Owner); typing boxes show no outline. */
:focus-visible{outline:none!important}a:focus-visible,button:focus-visible,[role="button"]:focus-visible,.cmd:focus-visible{background-color:#1d3c58!important}
.pt-brand{min-width:0;overflow:hidden}.pt-brand img.wm{height:15px!important;width:auto!important;max-width:170px;flex:none}
.pt-brand{flex:none}
/* Light Ice: one light look across every surface, dark text everywhere, fills keep white text (Owner, 12 Oct 2026). */
html[data-look="ice"] body,html[data-look="ice"] .ws,html[data-look="ice"] .work,html[data-look="ice"] .appbar,html[data-look="ice"] .ribbon,html[data-look="ice"] .status,html[data-look="ice"] .pane,html[data-look="ice"] .panes{background:#f2f7fb!important;color:#0a1722!important}
html[data-look="ice"] .p,html[data-look="ice"] .card,html[data-look="ice"] .kpi,html[data-look="ice"] table,html[data-look="ice"] thead th,html[data-look="ice"] tbody td{background:#ffffff!important}
html[data-look="ice"] .rail{background:#e3edf4!important}html[data-look="ice"] .rail a,html[data-look="ice"] .cmd,html[data-look="ice"] .cmd svg,html[data-look="ice"] .ib,html[data-look="ice"] svg.i{color:#0a3d5c!important}
html[data-look="ice"] body :is(td,th,span,b,small,p,a,div,h1,h2,h3,h4,label,li,dd,dt,em,strong,code,button):not(.chip,.go,.pt-send,.jp-send,.badge,.ed-toast,.av,.btn,.pos,.neg,.ok,.bad,.warn,.dn,.up){color:#0a1722!important}
html[data-look="ice"] .search,html[data-look="ice"] .jp-open-btn{background:#fff!important;border-color:rgba(10,61,92,.25)!important}
html[data-look="ice"] tbody tr.sel td,html[data-look="ice"] .tabs a.on,html[data-look="ice"] .cmd.on,html[data-look="ice"] .rail a.on{background:#cfe8f7!important}
html[data-look="ice"] .ed-drawer,html[data-look="ice"] .ed-menu,html[data-look="ice"] .ed-card,html[data-look="ice"] .jp{background:#ffffff!important;border-color:rgba(10,61,92,.2)!important}
html[data-look="ice"] .jp-b{background:#eef5fa!important}html[data-look="ice"] .jp-msg.me .jp-b{background:#cfe8f7!important}
html[data-look="ice"] ::placeholder{color:#2c4a5e!important}

/* ===== Clarity layer (Owner, 12 Oct 2026): calm, restrained, easy to see. Benchmark: the ChatGPT MPR screen; ours must be clearer. ===== */
/* Hierarchy: primary white, secondary faded white (AAA on these grounds), never blue, never grey. */
html:not([data-look="ice"]){--text:#ffffff;--mute:rgba(255,255,255,.78);--dim:rgba(255,255,255,.7);--line:rgba(255,255,255,.08);--line2:rgba(99,221,255,.35);--hover:rgba(255,255,255,.04);--sel:rgba(99,221,255,.1)}
/* Focus Rail: flat navy surfaces, no busy gradients behind content. */
html[data-look="rail"] body,html[data-look="rail"] .ws,html[data-look="rail"] .work{background:#0a1219!important}
html[data-look="rail"] .p,html[data-look="rail"] .pane,html[data-look="rail"] .appbar,html[data-look="rail"] .ribbon,html[data-look="rail"] .status,html[data-look="rail"] .panes{background:#0c1620!important}
html[data-look="rail"] .rail{background:#081017!important}
html:not([data-look="ice"]) .p{border-right:1px solid var(--line)!important}
/* Restrained selection, like any normal app: a quiet tint, a thin accent edge on lists. Never rings, never loud fills. */
.rail a.on{background:rgba(99,221,255,.12)!important;color:#fff!important;border-radius:12px!important}.rail a.on::before{display:none!important}
.cmd.on{outline:none!important;background:rgba(99,221,255,.12)!important;box-shadow:inset 0 0 0 1px rgba(99,221,255,.32)!important}
.tabs a{outline:none!important;border:0!important}.tabs a.on{background:rgba(99,221,255,.12)!important;box-shadow:inset 0 0 0 1px rgba(99,221,255,.32)!important;color:#fff!important}
tbody tr.sel,tbody tr.sel td,.list .it.sel,.nav a.on,.it.sel{background:rgba(255,255,255,.055)!important}
tbody tr.sel td:first-child,.list .it.sel{box-shadow:inset 2px 0 0 #4fd3ff!important}
tbody tr:hover td,.list .it:hover,.nav a:hover,.cmd:hover,.tabs a:hover{background:rgba(255,255,255,.035)}
a:focus-visible,button:focus-visible,[role="button"]:focus-visible,.cmd:focus-visible{background-color:rgba(255,255,255,.07)!important}
.jp-open-btn:hover,.jp-open-btn.on,.ed-act:hover,.ed-menu .pt-mo.on,.pt-mo:hover,.pa-a:hover,.portal-hits a.on,.portal-hits a:hover{background:rgba(255,255,255,.07)!important}
/* Toolbar: one calm row of pills, icon then label; group captions hidden; overflow goes into More. */
.ribbon{padding:8px 14px!important;align-items:center!important;gap:0;min-height:52px}
.rg{display:flex!important;align-items:center;padding:0 6px!important;border-right:1px solid var(--line)}.rg:last-of-type{border-right:0}
.rg .gl{display:none!important}.rg .cmds{gap:2px!important;align-items:center}
.cmd{flex-direction:row!important;align-items:center!important;gap:7px!important;height:34px;min-width:0!important;padding:0 12px!important;border-radius:999px!important;font-size:13px!important;font-weight:500;line-height:1}
.cmd svg,.cmd .i{width:16px!important;height:16px!important;flex:none}
.cmd-more{margin-left:auto}
/* Panel headers, section labels, key-value rows: the clear rhythm of a professional workbench. */
.ph2{min-height:54px!important;padding:12px 18px!important;font-size:15px!important;font-weight:650!important;border-bottom:1px solid var(--line)!important;gap:10px!important}
.ph2 small{font-size:12.5px!important;font-weight:400!important;color:var(--mute)!important}
.box{border-radius:14px!important;background:rgba(255,255,255,.025)!important;border:1px solid var(--line)!important}
.box .bh{min-height:44px;height:auto!important;padding:10px 16px!important;font-size:11.5px!important;letter-spacing:.09em;text-transform:uppercase;font-weight:650!important;color:var(--mute)!important;border-bottom:1px solid var(--line)!important}
.box .bh small{text-transform:none;letter-spacing:0;font-size:12px}
.box .bb{padding:12px 16px!important}
.kv{grid-template-columns:minmax(0,auto) minmax(0,1fr)!important;gap:0!important;font-size:var(--g-t6,13px)!important;line-height:18px!important}
.kv>span{color:var(--mute)!important;padding:9px 16px 9px 0;border-bottom:1px solid rgba(255,255,255,.06)}
.kv>b{text-align:right;font-weight:600;padding:9px 0;border-bottom:1px solid rgba(255,255,255,.06);color:#fff;min-width:0;overflow-wrap:normal;word-break:normal}
/* Tables: quiet headers, generous rows, hairline separators. */
thead th{font-size:11.5px!important;letter-spacing:.08em;text-transform:uppercase;color:var(--mute)!important;font-weight:650!important;background:transparent!important;border-bottom:1px solid var(--line)!important}
tbody td{border-bottom:1px solid rgba(255,255,255,.05)!important}
/* Chips: tinted and outlined, readable, never heavy blocks of colour. */
html:not([data-look="ice"]) .chip{background:rgba(255,255,255,.06)!important;border:1px solid rgba(255,255,255,.16)!important;color:#fff!important;font-weight:600;font-size:11.5px}
html:not([data-look="ice"]) .chip.ok{background:rgba(94,230,168,.12)!important;border-color:rgba(94,230,168,.38)!important;color:#d2ffe9!important}
html:not([data-look="ice"]) .chip.warn{background:rgba(255,201,107,.12)!important;border-color:rgba(255,201,107,.4)!important;color:#ffeac0!important}
html:not([data-look="ice"]) .chip.bad{background:rgba(255,122,138,.13)!important;border-color:rgba(255,122,138,.42)!important;color:#ffd9de!important}
html:not([data-look="ice"]) .chip.acc{background:rgba(99,221,255,.12)!important;border-color:rgba(99,221,255,.4)!important;color:#fff!important}
html:not([data-look="ice"]) .chip.vio,html:not([data-look="ice"]) .chip.syn{background:rgba(180,156,255,.12)!important;border-color:rgba(180,156,255,.4)!important;color:#f0eaff!important}
.status{font-size:12.5px!important;color:var(--mute)!important;min-height:36px}
.status svg.dot{margin-right:6px;vertical-align:middle}
/* Tabs never wrap or cut: one quiet row; counts sit beside labels. */
.tabs{flex-wrap:nowrap!important;overflow-x:auto;scrollbar-width:none;gap:6px!important;align-items:center;min-height:46px}.tabs::-webkit-scrollbar{display:none}
.tabs a,.tabs button{white-space:nowrap!important;flex:none;line-height:1.2;padding:7px 14px!important}
/* Cards in a pane keep their full height; the pane scrolls instead of squashing them. */
.box{flex-shrink:0!important}.p>.body,.p .body{overflow:auto}
/* Columns that do not fit a pane are tucked into the row's record drawer, never cut off. */
th.colhide,td.colhide{display:none!important}
/* The record inspector docks beside the work and pushes it aside; it never covers the evidence (12 Oct 2026). */
@media (min-width:1101px){
 .ed-drawer{top:0;bottom:0;right:0;border-radius:0;border-width:0 0 0 1px;width:400px;box-shadow:none;background:#0c1620}
 body.ed-open .ws{padding-right:400px;transition:padding .28s cubic-bezier(.2,.8,.2,1)}
 body.ed-open.jp-open .ws{padding-right:800px}body.jp-open .ed-drawer{right:400px}
}
.ed-drawer .ed-dh b{font-size:17px}.ed-dl{gap:0 16px!important}.ed-dl dt,.ed-dl dd{padding:9px 0;border-bottom:1px solid rgba(255,255,255,.06)}.ed-dl dd{text-align:right;font-weight:600}

/* ===== Shared components and looks (shared agent, 12 Oct 2026). Three complete looks on every surface, the home and the
   JudeAI panel included: Focus Rail (default), Electric (brighter blue) and Light Ice (light ground, dark ink). The sun
   bottom-left cycles them. Text is AAA (7:1) in every look; accent cyan is for icons, borders and fills only. ===== */
/* -- Home and JudeAI panel follow the look -- */
html[data-look="electric"] body.pt{background:radial-gradient(1100px 760px at 60% 18%,#114a70 0%,#0b3656 45%,#082a44 100%)!important;background-attachment:fixed}
html[data-look="electric"] .pt-side{background:rgba(6,34,56,.6)}
html[data-look="electric"] .pt-app>.rail{background:rgba(4,26,44,.78)!important}
html[data-look="electric"] .pt-box{background:#0d3554;border-color:rgba(120,225,255,.6)}
html[data-look="electric"] .pa-a{background:#134e78;border-color:rgba(255,255,255,.2)}
html[data-look="electric"] .pa-a:hover{background:#1a5f8f}
html[data-look="electric"] .pt-menu,html[data-look="electric"] .pt-fly,html[data-look="electric"] .ed-menu,html[data-look="electric"] .menu,html[data-look="electric"] .ed-drawer,html[data-look="electric"] .ed-card,html[data-look="electric"] .portal-hits{background:#0d3150!important}
html[data-look="electric"] .jp{background:radial-gradient(700px 500px at 50% 0%,#114a70 0%,#0b3656 50%,#082a44 100%)!important}
html[data-look="ice"] body.pt{background:radial-gradient(1000px 700px at 55% 30%,#ffffff 0%,#f1f7fb 50%,#e6f0f6 100%)!important}
html[data-look="ice"] .pt-side{background:#ffffff;border-right:1px solid rgba(10,61,92,.14)}
html[data-look="ice"] .pt-app>.rail{background:#e3edf4!important;border-right:1px solid rgba(10,61,92,.14)!important}
html[data-look="ice"] .pt-acct{border-top-color:rgba(10,61,92,.14)}
html[data-look="ice"] .pt-box{background:#ffffff;border-color:rgba(10,95,143,.55);box-shadow:0 10px 28px rgba(10,60,90,.08)}
html[data-look="ice"] .pt-box:not(.open){border-color:rgba(10,95,143,.45)}
html[data-look="ice"] .pt-row svg,html[data-look="ice"] .pt-ib,html[data-look="ice"] .pt-c,html[data-look="ice"] .pt-hist,html[data-look="ice"] .pt-pill svg{color:#0a3d5c}
html[data-look="ice"] .pt-row:hover,html[data-look="ice"] .pt-ib:hover,html[data-look="ice"] .pt-c:hover,html[data-look="ice"] .pt-hist:hover,html[data-look="ice"] .pt-row.on{background:rgba(10,61,92,.08)}
html[data-look="ice"] .pt-pill{border-color:rgba(10,61,92,.28)}
html[data-look="ice"] .pa-a{background:#ffffff;border-color:rgba(10,61,92,.22)}
html[data-look="ice"] .pa-a:hover{background:#dcecf6}
html[data-look="ice"] .pt-menu,html[data-look="ice"] .pt-fly,html[data-look="ice"] .ed-menu,html[data-look="ice"] .menu,html[data-look="ice"] .portal-hits{background:#ffffff!important;border-color:rgba(10,61,92,.18)!important;box-shadow:0 18px 40px rgba(10,40,60,.18)!important}
html[data-look="ice"] .pt-mo:hover,html[data-look="ice"] .menu .mo:hover,html[data-look="ice"] .portal-hits a:hover,html[data-look="ice"] .portal-hits a.on{background:#e3f0f8}
html[data-look="ice"] .ed-menu .pt-mo.on{background:#cfe8f7}
html[data-look="ice"] .pt-send,html[data-look="ice"] .jp-send{background:#08527c!important;color:#ffffff!important}
html[data-look="ice"] svg.sw rect{fill:#08527c}html[data-look="ice"] .pt-tog.off svg.sw rect{fill:#9fb6c4}
html[data-look="ice"] svg.dot{fill:#0b7a4f}
html[data-look="ice"] .pt-tile,html[data-look="ice"] .jp-lion{box-shadow:0 26px 50px -28px rgba(10,95,143,.5)}
html[data-look="ice"] .jp{background:radial-gradient(700px 500px at 50% 0%,#ffffff 0%,#f1f7fb 55%,#e6f0f6 100%)!important;border-left:1px solid rgba(10,61,92,.16)!important}
html[data-look="ice"] .jp-ctx{background:rgba(10,61,92,.08)}
html[data-look="ice"] .jp-open-btn{background:#ffffff;border-color:rgba(10,61,92,.25)}
html[data-look="ice"] .jp-open-btn:hover,html[data-look="ice"] .jp-open-btn.on{background:#dcecf6}
html[data-look="ice"] img.jp-wm{filter:brightness(0)}
/* -- Record drawer, ask sheet, toasts: hidden drawers never cover the page; they follow the look -- */
.ed-drawer{visibility:hidden;transition:transform .28s cubic-bezier(.2,.8,.2,1),visibility 0s linear .28s}
.ed-drawer.in{visibility:visible;transition:transform .28s cubic-bezier(.2,.8,.2,1),visibility 0s}
@media (max-width:1100px){body.jp-open .ed-drawer{right:12px}}
html[data-look="ice"] .ed-drawer,html[data-look="ice"] .ed-card{box-shadow:0 30px 70px rgba(10,40,60,.22)}
html[data-look="ice"] .ed-act{background:#eef5fa;border-color:rgba(10,61,92,.22)}
html[data-look="ice"] .ed-act:hover,html[data-look="ice"] .ed-x:hover{background:#dcecf6}
html[data-look="ice"] .ed-act.go{background:#08527c;color:#ffffff}
html[data-look="ice"] .ed-acts{border-top-color:rgba(10,61,92,.14)}
html[data-look="ice"] .ed-toast{background:#0a1722;color:#ffffff}
html[data-look="ice"] .ed-sheet{background:rgba(10,30,45,.35)}
/* -- Dark looks: secondary text is near-white, never cyan or grey -- */
html:not([data-look="ice"]) .kpi small,html:not([data-look="ice"]) thead th,html:not([data-look="ice"]) .status,html:not([data-look="ice"]) .nav .g,html:not([data-look="ice"]) .rg .gl,html:not([data-look="ice"]) .small,html:not([data-look="ice"]) .mute{color:#eef3f7}
html:not([data-look="ice"]) tr.sel td,html:not([data-look="ice"]) tbody tr.sel td{color:#ffffff}
/* -- Electric: the whole workspace in brighter blue, not only the ground -- */
html[data-look="electric"] body{background:radial-gradient(1200px 700px at 70% 0%,#114a70 0%,#0b2d45 55%,#061a2c 100%);background-attachment:fixed}
html[data-look="electric"] .rail{background:#061e30!important}
html[data-look="electric"] .pane{background:#0a2840!important}
html[data-look="electric"] .p.alt{background:#0b2d47!important}
html[data-look="electric"] .appbar,html[data-look="electric"] .ribbon{background:#092a43!important}
html[data-look="electric"] .status{background:#061e30!important}
html[data-look="electric"] .card,html[data-look="electric"] .box,html[data-look="electric"] .kpi{background:#0e3a5a!important;border-color:rgba(130,220,255,.24)!important}
html[data-look="electric"] .chip{background:#14496d}
html[data-look="electric"] tr:nth-child(even) td{background:rgba(255,255,255,.035)}
html[data-look="electric"] tr:hover td{background:#134a70}
html[data-look="electric"] tbody tr.sel td,html[data-look="electric"] tr.sel td{background:#174f75!important}
html[data-look="electric"] .search,html[data-look="electric"] .btn.g{background:#0c3352}
html[data-look="electric"] .nav a.on,html[data-look="electric"] .rail a.on,html[data-look="electric"] .tabs a.on,html[data-look="electric"] .cmd.on{background:#174f75}
/* -- Light Ice: complete. Every surface light, every word dark ink, fills keep white words, nothing dark-on-dark -- */
html[data-look="ice"]{--mute:#1f3a4d;--dim:#24425a;--text:#0a1722}
html[data-look="ice"] body :is(i,figcaption,ins,del,mark,time,kbd,sup,sub,caption,legend,summary,output,h5,h6,s,u,abbr,cite,q,pre,blockquote,ul,ol,section,article,header,footer,nav,main,aside,form,fieldset,input,textarea,select,option):not(.chip,.go,.pt-send,.jp-send,.badge,.ed-toast,.av,.btn,.pos,.neg,.ok,.bad,.warn,.dn,.up){color:#0a1722!important}
html[data-look="ice"] .box,html[data-look="ice"] .p.alt{background:#ffffff!important}
html[data-look="ice"] .card,html[data-look="ice"] .box,html[data-look="ice"] .kpi{border:1px solid rgba(10,61,92,.16)!important;box-shadow:0 1px 3px rgba(10,40,60,.06)!important}
html[data-look="ice"] .box .bh,html[data-look="ice"] .ph2{border-color:rgba(10,61,92,.12)}
html[data-look="ice"] tbody tr:nth-child(even) td{background:#f7fafc!important}
html[data-look="ice"] tbody tr:hover td{background:#e8f3fa!important}
html[data-look="ice"] tbody tr.sel td{background:#cfe8f7!important}
html[data-look="ice"] .nav a.on,html[data-look="ice"] .pane .new{background:#cfe8f7!important}
html[data-look="ice"] .rail a b{background:#08527c!important;color:#ffffff!important}
html[data-look="ice"] .btn{background:#08527c!important;color:#ffffff!important}
html[data-look="ice"] .btn.g{background:#eef5fa!important;color:#0a1722!important;border:1px solid rgba(10,61,92,.25)!important}
html[data-look="ice"] .av{color:#ffffff!important;background:#08527c}html[data-look="ice"] .av.v{background:#4b33a8}html[data-look="ice"] .av.o{background:#0b5e3e}html[data-look="ice"] .av.w{background:#7a4a00}
html[data-look="ice"] :is(.pos,.up,.kpi i,.status .ok,span.ok,b.ok,i.ok,td.ok,small.ok):not(.chip){color:#0b5e3e!important}
html[data-look="ice"] :is(.neg,.dn,.kpi i.dn,span.bad,b.bad,i.bad,td.bad,small.bad):not(.chip){color:#9c1830!important}
html[data-look="ice"] :is(span.warn,b.warn,i.warn,td.warn,small.warn):not(.chip){color:#6b4500!important}
html[data-look="ice"] .chip{background:#e6eff5!important;color:#0a1722!important;border-color:transparent!important}
html[data-look="ice"] .chip.ok{background:#d6f3e4!important;color:#0b4a31!important}
html[data-look="ice"] .chip.warn{background:#fbecc9!important;color:#5c3b00!important}
html[data-look="ice"] .chip.bad{background:#fde1e5!important;color:#7d1226!important}
html[data-look="ice"] .chip.acc{background:#d9eef9!important;color:#08405f!important}
html[data-look="ice"] .chip.syn,html[data-look="ice"] .chip.vio{background:#ebe5ff!important;color:#3b2a85!important}
html[data-look="ice"] .tabs a:hover,html[data-look="ice"] .nav a:hover,html[data-look="ice"] .cmd:hover,html[data-look="ice"] .rail a:hover{background:#e3f0f8}
html[data-look="ice"] a:focus-visible,html[data-look="ice"] button:focus-visible,html[data-look="ice"] [role="button"]:focus-visible,html[data-look="ice"] .cmd:focus-visible{background-color:#cfe8f7!important}
html[data-look="ice"] .track{background:#dde9f1}
html[data-look="ice"] .ib:hover{background:#e3f0f8}
/* -- Rows of controls never squeeze into letters on top of each other -- */
.ribbon .cmd{flex:none}.ribbon .cmd-more{flex:none!important;white-space:nowrap}
.tabs a{white-space:nowrap;flex:none}
.kpi b{overflow-wrap:normal!important;word-break:keep-all}
/* -- Text-glyph icons become SVG (ws.js swaps them); the SVG takes the text colour -- */
svg.gi{width:1em;height:1em;vertical-align:-.14em;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;flex:none;display:inline-block}
svg.gi.fill{fill:currentColor;stroke:none}
.menu .mo svg.ic,.menu .mt svg.ic{width:16px;height:16px}
.menu .mt button{display:grid;place-items:center;width:30px;height:30px;color:inherit}
/* -- Privacy View: the eye shows its state; masked words are dots -- */
.pv-btn{cursor:pointer}.pv-btn[aria-pressed="true"]{background:var(--sel)}
html[data-look="ice"] .pv-btn[aria-pressed="true"]{background:#cfe8f7}
/* -- Sidebar hide and show: the button that hides it is mirrored by one that brings it back -- */
.pane .ph .ib{cursor:pointer}
.pane-show{display:none}
html.pane-off .pane{display:none!important}
@media (min-width:701px){html.pane-off .ws{grid-template-columns:52px 1fr!important}}
@media (min-width:1501px){html.pane-off:not([data-look="rail"]) .pane-show{display:grid}}
.pt-showside{position:absolute;top:16px;left:20px;z-index:3;width:38px;height:38px;border-radius:999px;border:0;background:transparent;color:#dceaf3;display:none;place-items:center;cursor:pointer}
.pt-showside:hover{background:rgba(255,255,255,.08)}
html[data-look="ice"] .pt-showside{color:#0a3d5c}html[data-look="ice"] .pt-showside:hover{background:rgba(10,61,92,.08)}
@media (min-width:901px){body.pt-hide .pt-showside{display:grid}body.pt-hide .pt-wmlink{left:66px}}
/* -- The sun: the look control bottom-left -- */
.look-ctl svg{width:18px;height:18px}
/* -- Light Ice over the clarity layer: its white tints and white words are for dark looks only -- */
html[data-look="ice"] .rail a.on,html[data-look="ice"] .tabs a.on,html[data-look="ice"] .cmd.on{background:#cfe8f7!important;color:#0a1722!important}
html[data-look="ice"] .rail a.on svg{color:#08527c!important}
html[data-look="ice"] tbody tr:hover td,html[data-look="ice"] .list .it:hover,html[data-look="ice"] .nav a:hover,html[data-look="ice"] .cmd:hover,html[data-look="ice"] .tabs a:hover{background:#e8f3fa!important}
html[data-look="ice"] .jp-open-btn:hover,html[data-look="ice"] .jp-open-btn.on,html[data-look="ice"] .ed-act:hover,html[data-look="ice"] .ed-menu .pt-mo.on,html[data-look="ice"] .pt-mo:hover,html[data-look="ice"] .pa-a:hover,html[data-look="ice"] .portal-hits a.on,html[data-look="ice"] .portal-hits a:hover{background:#dcecf6!important}
html[data-look="ice"] tbody tr.sel,html[data-look="ice"] tbody tr.sel td,html[data-look="ice"] .list .it.sel,html[data-look="ice"] .nav a.on,html[data-look="ice"] .it.sel{background:#cfe8f7!important}
html[data-look="ice"] tbody td,html[data-look="ice"] .kv>span,html[data-look="ice"] .kv>b,html[data-look="ice"] .ed-dl dt,html[data-look="ice"] .ed-dl dd{border-bottom-color:rgba(10,61,92,.1)!important}
html[data-look="ice"] a:focus-visible,html[data-look="ice"] button:focus-visible,html[data-look="ice"] [role="button"]:focus-visible,html[data-look="ice"] .cmd:focus-visible{background-color:#cfe8f7!important}
html[data-look="ice"] .ed-drawer{background:#ffffff!important}
/* Selection is a background highlight, never a ring (Owner): no outline rings on the selected command or tab. */
.cmd.on,.tabs a.on{box-shadow:none!important}
/* -- The JudeAI panel composer is the home composer: same pills, compact to fit the panel -- */
.jp-box .pt-ctrl{gap:6px}.jp-box .pt-pill{height:36px;padding:0 12px;font-size:14px;gap:6px}.jp-box .pt-c{width:36px;height:36px}
.jp-box .pt-pill svg.i{width:15px;height:15px}
.jp-under{padding:8px 6px 0;font-size:13px;gap:8px}
.pt-under .pt-tog,.pt-under .pt-ask{cursor:pointer;padding:4px 8px;border-radius:999px}
.pt-under .pt-tog:hover,.pt-under .pt-ask:hover{background:rgba(255,255,255,.07)}
html[data-look="ice"] .pt-under .pt-tog:hover,html[data-look="ice"] .pt-under .pt-ask:hover{background:rgba(10,61,92,.08)}
.pt-c.on{background:#1d3c58;color:#ffffff}html[data-look="ice"] .pt-c.on{background:#cfe8f7;color:#0a1722}
.jp-link{display:inline-flex;margin-top:6px;padding:8px 14px!important;font-size:14px!important}
/* -- A chip that filters rows shows it is on by a background, never a ring -- */
.chip.on{background:#1d3c58!important}html[data-look="ice"] .chip.on{background:#cfe8f7!important}
/* -- Light Ice: icons on dark fills stay white (the blanket icon ink is for light surfaces) -- */
html[data-look="ice"] :is(.pt-send,.jp-send,.btn:not(.g),.ed-act.go,.rail a b) :is(svg.i,svg.ic){color:#ffffff!important}
.appbar .pane-show{border:0;background:transparent;color:#ffffff;cursor:pointer;flex:none}.appbar .pane-show:hover{background:rgba(255,255,255,.08)}
html[data-look="ice"] .appbar .pane-show{color:#0a3d5c}html[data-look="ice"] .appbar .pane-show:hover{background:#e3f0f8}
/* -- JudeAI panel: Jude's bubbles are .ai (".jude" is the retired docked bar and stays hidden) -- */
.jp-msg.ai{display:flex}
.pt-under .pt-tog,.pt-under .pt-ask{white-space:nowrap}
@media (max-width:420px){.jp-under{font-size:12.5px;gap:4px}.jp-under .pt-tog{gap:6px}.jp-under svg.sw{width:30px;height:17px}}
/* -- Electric: status colours and chips keep AAA on the brighter blue cards -- */
html[data-look="electric"] :is(.neg,.dn,.kpi i.dn):not(.chip){color:#ffc2cb!important}
html[data-look="electric"] :is(.pos,.up,.kpi i:not(.dn)):not(.chip){color:#9ff5cf!important}
html[data-look="electric"] .chip{background:#0b2f4a!important}
html[data-look="electric"] .chip.ok{background:#0a4a3a!important}html[data-look="electric"] .chip.warn{background:#4a3a0e!important}html[data-look="electric"] .chip.bad{background:#5a1a2c!important}
html[data-look="electric"] .chip.acc{background:#0a3f5f!important}html[data-look="electric"] .chip.syn,html[data-look="electric"] .chip.vio{background:#2f2560!important}
html[data-look="electric"]{--mute:rgba(255,255,255,.9);--dim:rgba(255,255,255,.86)}
/* -- The composer's words are never cut by a rounded corner: the box is the pill, the text area inside is square -- */
.pt-box textarea,.jp-box textarea,.jp-in{border-radius:0!important;padding-left:2px}
/* -- Phones: the composer row fits (plus, relaxAI, Auto, dictate, send) with nothing squeezed; the apps list opens on screen -- */
.pt-send,.pt-c{flex:none}
@media (max-width:480px){.pt-box{padding:14px 12px 10px}.pt-ctrl{gap:5px!important}.pt-pill{height:34px!important;padding:0 10px!important;font-size:13.5px!important;gap:5px!important}.pt-pill svg.i{display:none}
  .pt-c{width:34px!important;height:34px!important}.pt-box.open .pt-send{width:42px;height:42px}.pt-under{padding:0 4px;font-size:13px}.pt-under .pt-tog,.pt-under .pt-ask{padding:4px 4px}}
@media (max-width:900px){.pt-fly,body.pt-hide .pt-fly{left:12px!important;right:12px!important;width:auto!important;top:70px!important;max-height:calc(100vh - 150px)}.pt-fly.from-plus{top:auto!important;bottom:180px;transform:none}}
/* -- Tablet home (701 to 900): the icon rail stays a left column like every other page on a tablet -- */
@media (min-width:701px) and (max-width:900px){.pt-app{grid-template-columns:52px 1fr!important;grid-template-rows:100vh!important}
  .pt-app>.rail{order:0!important;flex-direction:column!important;height:100vh!important;width:52px;justify-content:flex-start!important;overflow:visible!important;border-top:0!important;border-right:1px solid rgba(255,255,255,.08)!important;padding:12px 0!important}
  .pt-app>.rail>a:first-child,.pt-app>.rail .sp,.pt-app>.rail .me,.pt-app>.rail a{display:flex!important}.pt-app>.rail .sp{flex:1}.pt-main{order:1}}
/* -- Phones: a calm bottom bar of the places used most, the current app, Apps for the rest, and the sun to change the look.
      Nothing scrolls sideways out of reach. -- */
@media (max-width:700px){
  .rail>a:first-child{display:none!important}
  .rail>a:not(:first-child):not([title="Jude"]):not([title="Home"]):not([title="Mail"]):not([title="Agent Channel"]):not([title="Apps"]):not(.look-ctl):not(.on){display:none!important}
  .rail{overflow:hidden!important;justify-content:space-around!important}
  .rail>a{flex:1 1 0!important;max-width:64px}
  .rail .look-ctl{display:grid!important}.rail .sp,.rail .me{display:none!important}
}
@media (max-width:700px){.ed-toasts{bottom:80px;width:calc(100vw - 32px)}.ed-toast{max-width:100%;text-align:center}}
html[data-look="ice"] body .chip.ok{color:#0b4a31!important}html[data-look="ice"] body .chip.warn{color:#5c3b00!important}html[data-look="ice"] body .chip.bad{color:#7d1226!important}html[data-look="ice"] body .chip.acc{color:#08405f!important}html[data-look="ice"] body .chip.syn,html[data-look="ice"] body .chip.vio{color:#3b2a85!important}
html[data-look="ice"] .chip{font-weight:600}
/* -- With the record inspector or JudeAI open, the top bar still fits: search shrinks, the identity pill steps back,
      and "Open JudeAI" is never pushed under a panel. Below 1600px only one side panel docks; JudeAI sits over the record. -- */
.appbar{min-width:0}.appbar .search{min-width:0}.appbar .search>*{min-width:0}
body.ed-open .appbar .pill,body.jp-open .appbar .pill{display:none!important}
body.ed-open .appbar .search,body.jp-open .appbar .search{flex:1 1 60px}
@media (max-width:1599px){body.ed-open.jp-open .ws{padding-right:400px!important}body.jp-open .ed-drawer{right:0!important}body.ed-open .jp{z-index:170}}
/* -- Phones: search is an icon in the top bar so the Privacy View eye stays in reach on every page -- */
@media (max-width:700px){.appbar .search{flex:0 0 38px!important;width:38px;max-width:38px;height:38px;padding:0!important;justify-content:center;font-size:0!important;margin:0 0 0 auto}
  .appbar .search kbd,.appbar .search span{display:none}.appbar .search svg{width:18px;height:18px}
  .appbar .r .pv-btn{display:grid!important}.appbar .r{gap:2px}}
/* -- The saved look applies at once on load (no slow fade from the default look); motion starts once it is set -- */
html:not(.look-ready) *,html:not(.look-ready) *::before,html:not(.look-ready) *::after{transition:none!important}
/* -- The signed-out door follows the saved look too; in Light Ice its one button is deep blue with white words -- */
html[data-look="ice"] .auth a.primary,html[data-look="ice"] .auth button.primary{background:#08527c!important;color:#ffffff!important}
html[data-look="ice"] .auth .sym img:not(.wm){box-shadow:0 14px 40px rgba(10,60,90,.25)}

/* ===== EDGE ID foundation (shared layer, 12 Oct 2026). The contract every screen builds on: calm, clear, AAA in all three
   looks, nothing below 12px, nothing cut or broken letter by letter, one primary action, the evidence always in view.
   Benchmark: the ChatGPT MPR workbench and its three questions (What needs my attention? What does the evidence show?
   What can I safely do next?). Later rules here override earlier layers on purpose. ===== */

/* -- Ground: html paints the look, so browser bars and overscroll never flash white -- */
html{background:#07090c}html[data-look="electric"]{background:#061a2c}html[data-look="ice"]{background:#f4f8fb}

/* -- Height: the visible height on phones and tablets, so the bottom rail and the sun are never under a browser toolbar -- */
.ws,.work,.pt-app,.pt-app>.rail{height:100vh;height:100dvh}
@media (min-width:701px) and (max-width:1100px){.ws{grid-template-rows:100vh!important;grid-template-rows:100dvh!important}.work{height:100dvh}}
@media (max-width:700px){.ws{grid-template-rows:minmax(0,1fr) calc(60px + env(safe-area-inset-bottom))!important}.work{height:auto}
  .rail{padding-bottom:env(safe-area-inset-bottom)!important;height:auto}}
@media (max-width:900px){.pt-app{grid-template-rows:minmax(0,1fr) calc(60px + env(safe-area-inset-bottom))}.pt-app>.rail{height:auto!important;padding-bottom:env(safe-area-inset-bottom)!important}}
@media (min-width:701px) and (max-width:900px){.pt-app{grid-template-rows:100dvh!important}.pt-app>.rail{height:100dvh!important}}

/* -- Words: secondary text is near-white on the dark looks (never grey, never faded, never blue); dark ink on Light Ice.
      Hierarchy comes from size and weight. -- */
html:not([data-look="ice"]),html[data-look="electric"]{--mute:#eef3f7;--dim:#e3eaf0}
html:not([data-look="ice"]) td:not(.pos,.neg,.ok,.bad,.warn,.up,.dn){color:#ffffff}
html[data-look="electric"] :is(small,.small,.mute,figcaption):not(.pos,.neg,.ok,.bad,.warn,.chip){color:#eef3f7}
::placeholder{color:#dfe7ed!important;opacity:1}.pt-box textarea::placeholder{color:#dfe7ed!important}html[data-look="ice"] ::placeholder{color:#24394a!important}
.p.alt{opacity:1!important}
/* Status colours keep AAA (7:1) on every ground they sit on, selected rows included. */
html[data-look="electric"] :is(.neg,.dn,.kpi i.dn):not(.chip){color:#ffe2e7!important}
html[data-look="electric"] :is(.pos,.up,.kpi i.up):not(.chip){color:#c4fbe0!important}
html[data-look="ice"] :is(.pos,.up,.status .ok,span.ok,b.ok,i.ok,td.ok,small.ok,.kpi i.up):not(.chip){color:#0b4a31!important}
html[data-look="ice"] :is(.neg,.dn,.kpi i.dn,span.bad,b.bad,i.bad,td.bad,small.bad):not(.chip){color:#7d1226!important}
html[data-look="ice"] :is(span.warn,b.warn,i.warn,td.warn,small.warn):not(.chip){color:#5c3b00!important}
html[data-look="ice"] body span.chip.bad,html[data-look="ice"] body .chip.bad{color:#7d1226!important}
/* KPI sub-lines are plain facts unless marked .up or .dn: colour only where it means something. */
.kpi i:not(.dn):not(.up){color:var(--mute)}
html[data-look="electric"] .kpi i:not(.dn):not(.up){color:#eef3f7!important}
html[data-look="ice"] .kpi i:not(.dn):not(.up){color:#0a1722!important}
/* Avatars are one calm neutral, never a rainbow that means nothing. */
html:not([data-look="ice"]) span.av{background:#22384b!important;color:#ffffff!important}
html[data-look="ice"] span.av{background:#dce8f0!important;color:#0a1722!important}

/* -- Text floor: nothing below 12px (engine.js holds the line for anything a screen sets smaller, SVG text included) -- */
.chip,thead th,.box .bh,.small,.kpi small,.kpi i,.list .it small,.nav .g,.menu .mt,.menu .mo small,.pane .foot small,.pane .ph .wm small,.ed-dl dt,.status{font-size:12px!important}
.status{font-size:12.5px!important}
.rail a b{font-size:12px!important;font-weight:700;min-width:18px;height:18px;line-height:18px;padding:0 4px;top:1px;right:0;border-radius:9px!important}

/* -- Never letter by letter: chips, commands, tabs, headers and counts stay whole on one line; values wrap between words -- */
.chip,.cmd,.cmd-more,thead th,.kpi b,.tabs a,.tabs button,.nav a .c,.ribbon .cmd,.pill,.btn{white-space:nowrap!important;overflow-wrap:normal!important;word-break:normal!important}
.kv>b,.kv>span,.kpi small,td,.list .it b,.list .it small{overflow-wrap:normal;word-break:normal}
.nav a .c{flex:none}
/* Cells wrap between words when a pane is narrow; figures, codes and chips stay whole. Spreadsheet grids never wrap. */
.panes td:not(.n):not(.mono){white-space:normal}
.panes :is(td.n,td.mono,td .mono,td .chip,td time,td .n){white-space:nowrap}
.panes table.xl td,.panes table.xl th{white-space:nowrap}
/* Tables and charts that are wider than their card scroll inside the card, never past it. */
.box .bb:has(>table),.p>.body:has(>table),.box .bb:has(>.xg),.ed-pan{overflow-x:auto}
.xg{overflow:auto!important}
/* -- Tables keep the columns a person needs to decide. Lower-priority columns step out by width, by class on the <table>;
      the record inspector still shows every field. Spreadsheet grids (table.xl inside .xg) never lose a column: they
      scroll sideways like Excel. hnN: never in the table (inspector only) · hwN: hidden while the side pane is open on
      wide screens · hlN: hidden at laptop widths (1101-1500, and 1501-1760 with the side pane open) · htN: hidden on
      tablets and phones (1100 and below) · hpN: hidden on phones (700 and below). N is the column number, 1 to 12. -- */
table.hn1 :is(th,td):nth-child(1),table.hn2 :is(th,td):nth-child(2),table.hn3 :is(th,td):nth-child(3),table.hn4 :is(th,td):nth-child(4),table.hn5 :is(th,td):nth-child(5),table.hn6 :is(th,td):nth-child(6),table.hn7 :is(th,td):nth-child(7),table.hn8 :is(th,td):nth-child(8),table.hn9 :is(th,td):nth-child(9),table.hn10 :is(th,td):nth-child(10),table.hn11 :is(th,td):nth-child(11),table.hn12 :is(th,td):nth-child(12){display:none}
@media (min-width:1501px){html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hw1 :is(th,td):nth-child(1),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hw2 :is(th,td):nth-child(2),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hw3 :is(th,td):nth-child(3),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hw4 :is(th,td):nth-child(4),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hw5 :is(th,td):nth-child(5),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hw6 :is(th,td):nth-child(6),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hw7 :is(th,td):nth-child(7),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hw8 :is(th,td):nth-child(8),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hw9 :is(th,td):nth-child(9),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hw10 :is(th,td):nth-child(10),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hw11 :is(th,td):nth-child(11),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hw12 :is(th,td):nth-child(12){display:none}}
@media (min-width:1101px) and (max-width:1500px){table.hl1 :is(th,td):nth-child(1),table.hl2 :is(th,td):nth-child(2),table.hl3 :is(th,td):nth-child(3),table.hl4 :is(th,td):nth-child(4),table.hl5 :is(th,td):nth-child(5),table.hl6 :is(th,td):nth-child(6),table.hl7 :is(th,td):nth-child(7),table.hl8 :is(th,td):nth-child(8),table.hl9 :is(th,td):nth-child(9),table.hl10 :is(th,td):nth-child(10),table.hl11 :is(th,td):nth-child(11),table.hl12 :is(th,td):nth-child(12){display:none}}
@media (min-width:1501px) and (max-width:1760px){html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hl1 :is(th,td):nth-child(1),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hl2 :is(th,td):nth-child(2),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hl3 :is(th,td):nth-child(3),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hl4 :is(th,td):nth-child(4),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hl5 :is(th,td):nth-child(5),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hl6 :is(th,td):nth-child(6),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hl7 :is(th,td):nth-child(7),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hl8 :is(th,td):nth-child(8),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hl9 :is(th,td):nth-child(9),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hl10 :is(th,td):nth-child(10),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hl11 :is(th,td):nth-child(11),html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) table.hl12 :is(th,td):nth-child(12){display:none}}
@media (max-width:1100px){table.ht1 :is(th,td):nth-child(1),table.ht2 :is(th,td):nth-child(2),table.ht3 :is(th,td):nth-child(3),table.ht4 :is(th,td):nth-child(4),table.ht5 :is(th,td):nth-child(5),table.ht6 :is(th,td):nth-child(6),table.ht7 :is(th,td):nth-child(7),table.ht8 :is(th,td):nth-child(8),table.ht9 :is(th,td):nth-child(9),table.ht10 :is(th,td):nth-child(10),table.ht11 :is(th,td):nth-child(11),table.ht12 :is(th,td):nth-child(12){display:none}}
@media (max-width:700px){table.hp1 :is(th,td):nth-child(1),table.hp2 :is(th,td):nth-child(2),table.hp3 :is(th,td):nth-child(3),table.hp4 :is(th,td):nth-child(4),table.hp5 :is(th,td):nth-child(5),table.hp6 :is(th,td):nth-child(6),table.hp7 :is(th,td):nth-child(7),table.hp8 :is(th,td):nth-child(8),table.hp9 :is(th,td):nth-child(9),table.hp10 :is(th,td):nth-child(10),table.hp11 :is(th,td):nth-child(11),table.hp12 :is(th,td):nth-child(12){display:none}}

/* -- The rail: the same on every screen; the sun (look switch) sits bottom-left; the current page is a quiet tint -- */
@media (min-width:701px){.ws>.rail .sp,.pt-app>.rail .sp{display:block!important;flex:1 1 auto}}
.rail a.look-ctl,.rail a.look-ctl.on{background:transparent!important;color:var(--mute)!important}
.rail a.look-ctl:hover{background:rgba(255,255,255,.06)!important}html[data-look="ice"] .rail a.look-ctl,html[data-look="ice"] .rail a.look-ctl.on{color:#0a3d5c!important}
/* Phones: a calm bottom bar with the sun first (bottom-left), the everyday places, the current app and Apps for the rest.
   Nothing scrolls sideways out of reach. */
@media (max-width:700px){.rail>a.look-ctl{order:-1}.rail>a[title="Apps"]{order:9}.rail>a{min-width:44px;min-height:44px}}

/* -- Top bar: the wordmark image top-left, then a quiet "/ Page name"; one search pill; the eye; Open JudeAI top right -- */
.appbar .pg{display:flex;align-items:center;gap:10px;min-width:0;flex:0 1 auto;font-size:15px;font-weight:500;color:var(--mute);white-space:nowrap;overflow:hidden}
.appbar .pg .sep{flex:none;opacity:1;font-weight:400}.appbar .pg .pgn{min-width:0;overflow:hidden;text-overflow:ellipsis}
html[data-look="ice"] .appbar .pg{color:#1f3a4d}
@media (min-width:1501px){html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) .appbar .crumb{display:none!important}
  html:is([data-look="electric"],[data-look="ice"]):not(.pane-off) .appbar .pg .sep{display:none}}
.appbar .r .pill,.appbar .search kbd{display:none!important}
.appbar .search{min-width:0;white-space:nowrap;overflow:hidden}.appbar .search>span{min-width:0;overflow:hidden;text-overflow:ellipsis}
@media (max-width:900px){.appbar .pg{display:none}}
@media (max-width:700px){.appbar .search{flex:0 0 44px!important;width:44px!important;max-width:44px!important;height:44px!important;padding:0!important;justify-content:center;margin:0 0 0 auto!important;font-size:0!important}
  .appbar .search>span,.appbar .search kbd{display:none!important}.appbar .search svg{width:20px;height:20px}
  .appbar .r .pv-btn{display:grid!important}.appbar .r .ib{width:44px;height:44px}.appbar .jp-open-btn{height:44px!important;min-width:44px;justify-content:center}}

/* -- Toolbar: one calm row of pills, decisions first, at most 8 (5 tablet, 3 phone), the rest under More -- */
html body .ribbon{flex-wrap:nowrap!important}
.ribbon .cmd-more{flex:0 0 auto!important;white-space:nowrap!important;min-width:max-content;display:inline-flex;align-items:center;gap:6px!important}
.ribbon .cmd-more svg.chev{width:14px;height:14px;color:currentColor}
.ribbon .rg-decide .cmd{font-weight:600}

/* -- Pane headers: one line and one height on every pane, so the panes share one baseline; the work pane's title is the
      larger one. Long titles end in an ellipsis (full title on hover); chips that do not fit step back (ws.js). -- */
.ph2{flex-wrap:nowrap!important;white-space:nowrap;height:56px!important;min-height:56px!important;max-height:56px;padding-top:0!important;padding-bottom:0!important;overflow:hidden!important;align-items:center!important}
.ph2>.t{min-width:0;flex:0 0 auto;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ph2>small{min-width:0;flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ph2>:is(.chip,.btn,.ib,button,select,label,.row){flex:none}.ph2 .chip{max-width:none!important}
.panes>.p:not(.alt):not(:has(~.p:not(.alt)))>.ph2:first-child{font-size:17px!important;font-weight:700!important}
/* The three questions, as a quiet eyebrow above a pane title: <span class="q">Needs attention</span>, "Evidence", "Next step". */
.ph2>.t>.q{display:block;font-size:12px!important;font-weight:650;letter-spacing:.07em;text-transform:uppercase;color:var(--mute);line-height:1.25;margin-bottom:1px}
.ph2>.t:has(>.q){line-height:1.25}
/* Box headers: the title keeps its line; legends and counts move under it; chips inside keep normal case. */
.box .bh{flex-wrap:wrap!important;row-gap:4px}.box .bh>*{white-space:nowrap}
.box .bh :is(.chip,small,span:not(.sp)){text-transform:none!important;letter-spacing:.01em!important}

/* -- Tabs, status bar -- */
.tabs{height:auto!important}.tabs a,.tabs button{display:inline-flex!important;align-items:center!important}
.rtabs a.file{background:transparent!important;color:inherit!important;font-weight:650!important}
.status>span{white-space:nowrap}.status>span:first-child{min-width:0;flex:0 1 auto;overflow:hidden;text-overflow:ellipsis}

/* -- Panes: each pane scrolls as itself; a pane with several bodies scrolls as one column (no squeezed inner boxes) -- */
.panes>.p{container-type:inline-size;max-height:none}
.panes>.p:has(>.body~.body)>.body{flex:none!important;overflow:visible!important;min-height:auto!important}
/* Inline multi-column grids fold in a narrow pane: two or three across where they fit, one column in the narrowest. */
@container (max-width:640px){
  :is(.panes>.p,.panes .body,.panes .bb)>:is([style*="repeat(2,"],[style*="repeat(3,"],[style*="repeat(4,"],[style*="repeat(5,"],[style*="repeat(6,"],[style*="fr) minmax("],[style*="fr minmax("],[style*="1fr 1fr"],[style*="fr) 1fr"]):not(.kpis,.cal,.wk,.xl,.th,.sc-view,.sc-series,.panes,.tabs),
  .panes .grid:not(.kpis,.cal){grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr))!important}}
@container (max-width:420px){
  :is(.panes>.p,.panes .body,.panes .bb)>:is([style*="repeat(2,"],[style*="repeat(3,"],[style*="repeat(4,"],[style*="repeat(5,"],[style*="repeat(6,"],[style*="fr) minmax("],[style*="fr minmax("],[style*="1fr 1fr"],[style*="fr) 1fr"]):not(.kpis,.cal,.wk,.xl,.th,.sc-view,.sc-series,.panes,.tabs),
  .panes .grid:not(.kpis,.cal){grid-template-columns:minmax(0,1fr)!important}}
/* KPI rows never leave one tile alone on a row. */
.panes .kpis:has(>.kpi:nth-child(2):last-child){grid-template-columns:repeat(2,minmax(0,1fr))!important}
.panes .kpis:has(>.kpi:nth-child(3):last-child){grid-template-columns:repeat(3,minmax(0,1fr))!important}
.panes .kpis:has(>.kpi:nth-child(4):last-child){grid-template-columns:repeat(4,minmax(0,1fr))!important}
.panes .kpis:has(>.kpi:nth-child(6):last-child){grid-template-columns:repeat(6,minmax(0,1fr))!important}
.panes .kpis:has(>.kpi:nth-child(8):last-child){grid-template-columns:repeat(4,minmax(0,1fr))!important}
@container (max-width:1100px){.panes .kpis:has(>.kpi:nth-child(6):last-child){grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@container (max-width:760px){.panes .kpis:has(>.kpi:nth-child(4):last-child){grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@container (max-width:520px){.panes .kpis:is(:has(>.kpi:nth-child(3):last-child),:has(>.kpi:nth-child(6):last-child),:has(>.kpi:nth-child(8):last-child)){grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .panes .kpis:has(>.kpi:nth-child(3):last-child)>.kpi:last-child{grid-column:1/-1}}

/* -- Chips: exceptions only. Normal states in rows read as plain words (ws.js marks them .chip-plain); warnings and
      failures keep their tinted pill; the example-data label shows once per screen (ws.js marks repeats .syn-dup). -- */
.chip.chip-plain:not(#_){background:transparent!important;border-color:transparent!important;padding:0!important;height:auto!important;min-height:0!important;font-weight:500!important;color:inherit!important;box-shadow:none!important}
.chip.syn-dup,.kv .chip.syn{display:none!important}

/* -- One primary filled button per screen. ws.js keeps the one marked .primary (or the first in the work panes) filled and
      outlines every other (.btn-o). The sidebar "New" is outlined too. -- */
html:not([data-look="ice"]) .btn.btn-o:not(#_),html:not([data-look="ice"]) .btn.btn-o:not(#_):hover,html:not([data-look="ice"]) .btn.btn-o.flash:not(#_){background:rgba(79,211,255,.12)!important;color:#ffffff!important;border:1px solid rgba(79,211,255,.55)!important;box-shadow:none!important;font-weight:600!important;transform:none}
html[data-look="ice"] .btn.btn-o:not(#_),html[data-look="ice"] .btn.btn-o:not(#_):hover{background:#ffffff!important;color:#08405f!important;border:1px solid rgba(10,95,143,.55)!important;box-shadow:none!important}
.btn.btn-o:not(#_) svg{color:inherit!important}
html:not([data-look="ice"]) .pane .new:not(#_),html:not([data-look="ice"]) .pane .new:not(#_):hover{background:transparent!important;color:#ffffff!important;border:1px solid rgba(79,211,255,.45)!important}
html[data-look="ice"] .pane .new:not(#_),html[data-look="ice"] .pane .new:not(#_):hover{background:#ffffff!important;color:#0a1722!important;border:1px solid rgba(10,95,143,.45)!important}
.pane .new:not(#_) svg{color:inherit!important}
/* Decision rows wrap under their text; buttons never squeeze into letters. */
.panes .row:has(>.btn),.panes .bb>.row{flex-wrap:wrap;row-gap:8px}.panes .btn{flex:none}

/* -- Evidence and next step (What does the evidence show? What can I safely do next?) -- */
.callout{display:block;padding:12px 16px;border-radius:12px;background:rgba(255,255,255,.035);border:1px solid var(--line);border-left:3px solid #4fd3ff;line-height:1.5;color:var(--text)}
.callout>b:first-child{display:block;margin-bottom:4px;font-weight:650}
.callout .src{display:block;margin-top:6px;font-size:12px;color:var(--mute)}
.callout.warn{border-left-color:#ffc96b}.callout.bad{border-left-color:#ff7a8a}
html[data-look="electric"] .callout{background:#0e3a5a}
html[data-look="ice"] .callout{background:#f4f9fc;border-color:rgba(10,61,92,.14);border-left-color:#0a6a99}
html[data-look="ice"] .callout.warn{border-left-color:#9a6400}html[data-look="ice"] .callout.bad{border-left-color:#c02a3c}
.next{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding-top:4px}

/* -- Charts: natural aspect ratio (no empty bands above and below), never drawn too small to read (ws.js and engine.js) -- */
.bb>div[style^="height:"]:has(>svg[viewBox]){height:auto!important}
.bb>div[style^="height:"]>svg[viewBox],.bb>svg[viewBox][height="100%"]{height:auto!important;display:block}
.ed-pan{overflow-x:auto!important}.ed-pan>svg[viewBox]{height:auto!important;display:block;flex:none}
.sc-chart svg text,.sc-view svg text{paint-order:stroke fill;stroke:rgba(4,8,12,.9);stroke-width:3px;stroke-linejoin:round}
/* Images, thumbnails and tiles keep a soft corner; a pill shape is for controls only. */
.p [style*="border-radius"]:has(>svg:not(.i,.gi,.chev,.dot,.ic,.sw)),.p [style*="border-radius"]:has(>img){border-radius:12px!important}
/* Ops uptime grid (until the ops screen is redrawn): healthy days recede; outages carry a shape, not colour alone. */
.panes svg[viewBox="0 0 544 448"] rect[style*="fill:var(--ok)"]{opacity:.22!important}
.panes svg[viewBox="0 0 544 448"] rect[style*="fill:var(--bad)"]{stroke:#ffffff;stroke-width:1.5px}
.panes svg[viewBox="0 0 544 448"] rect[style*="fill:var(--warn)"]{stroke:#0a1219;stroke-width:1.5px;stroke-dasharray:2 2}

/* -- Unread rows: bold words and a small dot; the accent edge marks only the open row -- */
.list .it.unread b,.list .it.unread .grow>.row:nth-child(2)>span:first-child{font-weight:750;color:#ffffff}
html[data-look="ice"] .list .it.unread b,html[data-look="ice"] .list .it.unread .grow>.row:nth-child(2)>span:first-child{color:#0a1722}
.list svg.dot.u{width:8px;height:8px;margin-right:6px;fill:#4fd3ff;flex:none}html[data-look="ice"] .list svg.dot.u{fill:#0a7fb3}

/* -- Toasts sit above the bottom rail on phones -- */
@media (max-width:700px){.ed-toasts{bottom:calc(80px + env(safe-area-inset-bottom))!important}}

/* -- Touch: every control is at least 44px to the finger (chips that are links get an invisible 44px hit area) -- */
@media (hover:none),(pointer:coarse){
  .tree a,.rtabs a,.sheets a,.jp-ib,.pt-c,.pt-send,.jp-open-btn,.pt-ib,.model-pill,.pt-pill,.rail a,.appbar .ib,.appbar .search,.ed-x,.ed-act,.menu .mo,.pt-mo,.nav a,.tabs a,.tabs button,.cmd,.btn,.pa-a{min-height:44px}
  .jp-ib,.pt-c,.pt-ib,.ed-x,.appbar .ib,.rail a,.pt-send{min-width:44px}
  a.chip,label.chip,.chip[role="button"],.chip[data-cmd]{position:relative}
  a.chip::after,label.chip::after,.chip[role="button"]::after,.chip[data-cmd]::after{content:"";position:absolute;left:-2px;right:-2px;top:50%;height:44px;transform:translateY(-50%)}}

/* -- Focus: a visible accent underline (3:1 or better) on a light tint; never a ring. Rows show an accent edge. -- */
:is(a,button,summary,[role="button"],[role="tab"],[role="link"],[role="switch"],[role="menuitem"],[tabindex]):focus-visible{outline:none!important;background-color:rgba(99,221,255,.16)!important;box-shadow:inset 0 -2px 0 #4fd3ff!important}
html[data-look="ice"] :is(a,button,summary,[role="button"],[role="tab"],[role="link"],[role="switch"],[role="menuitem"],[tabindex]):focus-visible{background-color:#e3f0f8!important;box-shadow:inset 0 -2px 0 #0a6a99!important}
tbody tr:focus-visible{box-shadow:none!important}tbody tr:focus-visible>td{background:rgba(99,221,255,.16)!important}tbody tr:focus-visible>td:first-child{box-shadow:inset 3px 0 0 #4fd3ff!important}
html[data-look="ice"] tbody tr:focus-visible>td{background:#e3f0f8!important}html[data-look="ice"] tbody tr:focus-visible>td:first-child{box-shadow:inset 3px 0 0 #0a6a99!important}
.list .it:focus-visible{box-shadow:inset 3px 0 0 #4fd3ff!important}html[data-look="ice"] .list .it:focus-visible{box-shadow:inset 3px 0 0 #0a6a99!important}
:is(input,textarea,select):focus-visible{box-shadow:none!important}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}.btn:hover,.pa-a:hover{transform:none!important}}

/* -- The record inspector docks beside the work and never covers it: 400px on laptops and wider, 340px on tablets, a
      sheet from the bottom on phones. When space is short (1101 to 1760 wide) on a three-pane screen, it takes the place of
      the screen's own inspector pane, so the work becomes two panes instead of three crushed ones. JudeAI does the same. -- */
@media (min-width:1101px){.ed-drawer{width:400px}}
@media (min-width:701px) and (max-width:1100px){
  .ed-drawer{top:0!important;bottom:0!important;right:0!important;left:auto;width:340px!important;border-radius:0!important;border-width:0 0 0 1px!important;box-shadow:none!important;background:#0c1620}
  body.ed-open .ws{padding-right:340px}body.ed-open .jp{z-index:170}}
@media (max-width:700px){
  .ed-drawer{top:auto!important;left:0!important;right:0!important;bottom:0!important;width:100%!important;max-height:calc(100dvh - 64px);border-radius:24px 24px 0 0!important;transform:translateY(110%)}
  .ed-drawer.in{transform:none}}
html[data-look="electric"] .ed-drawer{background:#0d3150!important}html[data-look="ice"] .ed-drawer{background:#ffffff!important}
@media (min-width:1101px) and (max-width:1760px){body:is(.ed-open,.jp-open) .panes:has(>:nth-child(3))>.p.alt:last-child{display:none!important}}
body:is(.ed-open,.jp-open) .panes>.p[style*="flex:0 0"]{flex-shrink:1!important;min-width:240px}
@media (min-width:1101px){.panes>.p:not([style*="flex:0 0"]):not(.alt){min-width:320px}}
.ed-dsub:empty{display:none}

/* -- Words are never broken letter by letter, whatever a screen sets: a word wraps whole, and only a word longer than its
      whole line may break (overflow-wrap:break-word never shrinks a column below its longest word). -- */
body :not(pre):not(code):not(textarea):not(input){overflow-wrap:break-word!important;word-break:normal!important}
/* Cells, values, chips, commands and headers never break inside a word at all: they wrap between words, and a word that
   still cannot fit ends in an ellipsis with its full text on hover (engine.js). */
body :is(td,th,.kv>b,.kv>span,.list .it b,.list .it small,.kpi small,.kpi b,.kpi i,.chip,.cmd,.cmd-more,.tabs a,.tabs button,.nav a .c,.pill,.btn,.ph2>.t,.ph2>small,.bh){overflow-wrap:normal!important}
/* -- Touch reach: small pills inside rows and tab bars keep their look but answer a 44px finger -- */
@media (hover:none),(pointer:coarse){.tabs a,.tabs button{min-width:44px;justify-content:center}.jp-open-btn{min-width:44px;justify-content:center}
  .cmd.bw,.chip[href]{position:relative}.cmd.bw::after{content:"";position:absolute;left:-2px;right:-2px;top:50%;height:44px;transform:translateY(-50%)}}
@media (max-width:700px){html body .appbar .search{flex:0 0 44px!important;width:44px!important;height:44px!important}}
/* -- The apps list starts at its top (a centred column taller than the screen would hide its first rows) -- */
.pt-main.pt-apps{justify-content:flex-start!important;align-items:stretch}

/* ===== Quiet by default (Owner, 12 Oct 2026) ===== */
/* A well-spaced, readable system font like ChatGPT's: no letter-spacing tricks, calm sizes, zoomed out. */
*,*::before,*::after,svg text,input,button,select,textarea{font-family:ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif!important;letter-spacing:normal!important}
.mono,code,kbd,pre,.mono *{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace!important}
body{font-size:14px!important;line-height:1.5!important}
h1{font-size:20px!important}h2,h3{font-size:15px!important}
.crumb img.wm{height:16px!important}.crumb,.crumb *{font-size:14px!important}
.appbar{min-height:52px!important}
.ph2{min-height:46px!important;padding:10px 16px!important;font-size:14px!important;gap:8px!important}.ph2 .t,.ph2>b{font-size:15px!important}.ph2 small{font-size:12.5px!important}
.box .bh,thead th{text-transform:none!important;font-size:12.5px!important;font-weight:600!important}
.box .bb{padding:10px 14px!important}
td,th{font-size:var(--g-t6,13px)!important;line-height:18px!important;padding:8px 10px!important}
.kv{font-size:var(--g-t6,13px)!important;line-height:18px!important}.kv>span,.kv>b{padding:7px 0!important}
.list .it{padding:10px 12px!important}.list .it b{font-size:14px!important}.list .it small{font-size:12.5px!important}
.cmd{height:32px!important;font-size:13px!important;padding:0 11px!important}.cmd svg,.cmd .i{width:15px!important;height:15px!important}
.tabs{min-height:40px!important}.tabs a,.tabs button{font-size:13px!important;padding:5px 12px!important}
.chip{font-size:12px!important}.kpi b{font-size:22px!important}
.jp-b{font-size:14px!important}
/* Clean shapes only: no margin boxes, no accent edges, selection is a quiet tint. */
.pr-clean{border-left-width:1px!important;border-left-color:rgba(255,255,255,.1)!important;box-shadow:none!important;border-radius:14px!important}
tbody tr.sel td:first-child,.list .it.sel,.nav a.on,.it.sel{box-shadow:none!important}
[style*="border-left:3px"],[style*="border-left: 3px"],[style*="border-left:4px"],[style*="border-left: 4px"],[style*="border-left:2px"],[style*="border-left: 2px"]{border-left-width:1px!important;border-left-color:rgba(255,255,255,.1)!important;border-radius:14px}
/* Details fold away until the "?" brings them forward. */
body:not(.pr-all) .p:not(.pr-open) .pr-more{display:none!important}
.pr-more{animation:pr-in .2s ease}@keyframes pr-in{from{opacity:0;transform:translateY(-2px)}}
@media (prefers-reduced-motion:reduce){.pr-more{animation:none}}
.pr-q{margin-left:auto;flex:none;width:32px;height:32px;border-radius:999px;border:0;background:transparent;color:rgba(255,255,255,.82);display:grid;place-items:center;cursor:pointer}
.pr-q svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.pr-q:hover,.pr-q[aria-pressed="true"]{background:rgba(255,255,255,.08);color:#fff}
html[data-look="ice"] .pr-q{color:#0a3d5c}html[data-look="ice"] .pr-q:hover,html[data-look="ice"] .pr-q[aria-pressed="true"]{background:#e3eef6}
.appbar .ib[title="Details"][aria-pressed="true"]{background:rgba(255,255,255,.1)}
@media (pointer:coarse){.pr-q{width:44px;height:44px}}
/* Artifacts in chat (Owner, 12 Oct 2026): what Jude makes is previewed in the conversation, like Claude's. */
body.jp-wide .jp{width:560px}body.jp-wide.jp-open .ws{padding-right:560px}body.pt.jp-wide.jp-open .pt-app{padding-right:560px}
@media (max-width:1100px){body.jp-wide .jp{width:100vw}}
.jp-md p{margin:0 0 8px}.jp-md p:last-child{margin:0}.jp-md ul,.jp-md ol{margin:0 0 8px 18px;padding:0}.jp-md li{margin:2px 0}.jp-md .jp-h{font-weight:700}
.jp-md a{color:#fff;text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere}.jp-md code{font-size:12.5px;background:rgba(255,255,255,.08);padding:1px 6px;border-radius:6px}
.art{margin:4px 0 6px;border:1px solid rgba(255,255,255,.12);border-radius:18px;background:rgba(255,255,255,.04);padding:12px;display:flex;flex-direction:column;gap:10px;outline:none}
.art-head{display:flex;align-items:baseline;gap:10px}.art-head b{font-size:15px}.art-meta{font-size:12.5px;color:rgba(255,255,255,.78)}
.art-stage{aspect-ratio:16/9;width:100%}
.art-slide{position:relative;width:100%;height:100%;border-radius:12px;overflow:hidden;background:radial-gradient(120% 120% at 20% 0%,#0b3c5a 0%,#082638 55%,#061826 100%);padding:7% 7% 6%;display:flex;flex-direction:column;gap:6%}
.art-slide.cover{justify-content:center}.art-slide.cover .art-st{font-size:24px}
.art-lion{position:absolute;right:4%;top:6%;width:9%;border-radius:22%}
.art-st{font-size:19px;font-weight:700;line-height:1.2;max-width:85%}
.art-sl{margin:0;padding-left:1.1em;font-size:13.5px;line-height:1.45;color:#fff}.art-sl li{margin:0 0 .35em}
.art-no{position:absolute;right:4%;bottom:4%;font-size:12px;color:rgba(255,255,255,.78)}
.art-nav{display:flex;align-items:center;justify-content:center;gap:12px}.art-count{font-size:12.5px;min-width:48px;text-align:center}
.art-ib{width:36px;height:36px;border-radius:999px;border:1px solid rgba(255,255,255,.18);background:transparent;color:#fff;display:grid;place-items:center;cursor:pointer}
.art-ib svg,.art-acts svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.art-strip{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}.art-strip::-webkit-scrollbar{display:none}
.art-th{flex:none;width:110px;aspect-ratio:16/9;padding:0;border:1px solid transparent;border-radius:9px;background:none;cursor:pointer;overflow:hidden}
.art-th.on{border-color:#4fd3ff}.art-slide.sm{padding:8%;gap:5%;border-radius:8px}.art-slide.sm .art-st{font-size:8px}.art-slide.sm .art-sl{font-size:6px}.art-slide.sm .art-no,.art-slide.sm .art-lion{display:none}
.art-acts{display:flex;gap:8px;flex-wrap:wrap}
.art-go,.art-a{display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 14px;border-radius:999px;font-size:13px;font-weight:600;text-decoration:none}
.art-go{background:#4fd3ff;color:#06131c}.art-go svg{fill:#06131c;stroke:none}.art-a{border:1px solid rgba(255,255,255,.2);color:#fff}
.art-why summary{cursor:pointer;font-size:13px;list-style:none;display:inline-flex;align-items:center;gap:6px;color:rgba(255,255,255,.86)}.art-why summary::-webkit-details-marker{display:none}
.art-why ul{margin:8px 0 0 18px;padding:0;font-size:13px;line-height:1.5}
html[data-look="ice"] .art{background:#fff;border-color:rgba(10,61,92,.18)}html[data-look="ice"] .art-a,html[data-look="ice"] .art-ib{color:#0a1722;border-color:rgba(10,61,92,.25)}
.art-th,.art-th *,.art-slide{border-radius:9px!important}.art-stage .art-slide{border-radius:12px!important}
/* Never crush the work (Owner, 12 Oct 2026): with JudeAI open, the record inspector floats over the right edge of the work
   instead of pushing it; below 1600px with JudeAI open the work keeps its full width and the inspector is a sheet. */
@media (min-width:1101px){
 body.ed-open.jp-open .ws{padding-right:400px!important}
 body.jp-open .ed-drawer{right:412px!important;top:64px!important;bottom:12px!important;border-radius:18px!important;border-width:1px!important;box-shadow:0 24px 60px rgba(0,0,0,.45)!important;width:min(380px,calc(100vw - 900px))!important}
}
@media (min-width:1101px) and (max-width:1600px){body.jp-open .ed-drawer{width:340px!important}}
.panes>.p{min-width:0}.panes table{max-width:100%}
.ed-pv{margin:4px 18px 12px;border-radius:14px;background:rgba(255,255,255,.04);display:grid;place-items:center;padding:18px}.ed-pv svg,.ed-pv img{max-width:100%;max-height:160px;width:auto;height:auto}
.ed-dl dd.ed-line{grid-column:1/-1;text-align:left;font-weight:500}
/* Old shell pieces never draw on estate pages (Owner, 12 Oct 2026: no black silhouettes, no unfinished shapes). */
.ws .jp-pill,.ws ~ .jp-pill,body > .jp-pill,body > .jp-float,.jp-dock-old{display:none!important}
/* No monospace anywhere (Owner, 12 Oct 2026): numbers and IDs use the one readable font with aligned figures. */
.mono,code,kbd,pre,.mono *,td.mono,[class*="mono"]{font-family:ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,Arial,sans-serif!important;font-variant-numeric:tabular-nums;letter-spacing:normal!important}
td,th,.kv b,.kpi b{font-variant-numeric:tabular-nums}
/* Your own messages always show in the JudeAI chat (the avatar ".me" rules were shrinking them). */
.jp-msg.me{width:auto!important;height:auto!important;border-radius:0!important;background:transparent!important;overflow:visible!important;padding:0!important;display:flex!important;justify-content:flex-end!important;font-size:inherit!important;color:inherit!important;font-weight:inherit!important}
.jp-msg.me .jp-b{display:block!important}

/* ===== Electric hierarchy (Owner, 12 Oct 2026): four clear surface levels, one strong primary, distinct status colours,
   titles 15-17px semibold, secondary text smaller. Tinted, never grey; every word 7:1 or better. ===== */
html[data-look="electric"]{--e0:#051624;--e1:#082338;--e2:#0c304b;--e3:#123e5f;--e4:#184d74;--eLine:rgba(120,220,255,.16);--eLine2:rgba(120,220,255,.32);--eText:#ffffff;--eSub:#d4eef9;--eAcc:#4fd3ff;--eInk:#03121d}
html[data-look="electric"] body{background:radial-gradient(1200px 700px at 70% 0%,#0d3f60 0%,#072033 50%,#051624 100%)!important;background-attachment:fixed}
html[data-look="electric"] .rail{background:var(--e0)!important;border-right:1px solid var(--eLine)!important}
html[data-look="electric"] .appbar,html[data-look="electric"] .ribbon,html[data-look="electric"] .status{background:var(--e1)!important;border-color:var(--eLine)!important}
html[data-look="electric"] .ws,html[data-look="electric"] .work,html[data-look="electric"] .panes{background:transparent!important}
html[data-look="electric"] .pane{background:var(--e1)!important}
html[data-look="electric"] .panes>.p{background:var(--e2)!important;border:1px solid var(--eLine)!important}
html[data-look="electric"] .panes>.p.alt{background:var(--e1)!important}
html[data-look="electric"] .ph2{background:transparent!important;border-bottom:1px solid var(--eLine)!important}
html[data-look="electric"] .box,html[data-look="electric"] .card,html[data-look="electric"] .kpi{background:var(--e3)!important;border:1px solid var(--eLine)!important}
html[data-look="electric"] .box .bh,html[data-look="electric"] thead th{background:var(--e4)!important;color:var(--eText)!important}
html[data-look="electric"] tbody td{background:transparent!important;border-color:var(--eLine)!important}
html[data-look="electric"] tbody tr:hover td,html[data-look="electric"] .list .it:hover{background:rgba(120,220,255,.08)!important}
html[data-look="electric"] tbody tr.sel td,html[data-look="electric"] .list .it.sel{background:rgba(79,211,255,.2)!important}
html[data-look="electric"] .ed-drawer{background:var(--e3)!important;border-color:var(--eLine2)!important}
/* Titles and secondary text */
html[data-look="electric"] :is(.ph2 .t,.ph2>b,h2,h3){font-size:16px!important;font-weight:600!important;color:var(--eText)!important}
html[data-look="electric"] h1{font-size:17px!important;font-weight:600!important}
html[data-look="electric"] .box .bh{font-size:15px!important;font-weight:600!important}
html[data-look="electric"] .list .it b,html[data-look="electric"] .ed-dh b{font-size:15px!important;font-weight:600!important;color:var(--eText)!important}
html[data-look="electric"] :is(.list .it small,.ph2>small,.kpi small,.kpi i,.ed-dl dt,.ed-dsub,thead th){font-size:12.5px!important;color:var(--eSub)!important}
html[data-look="electric"] .kpi b{font-size:24px!important;font-weight:700!important;color:var(--eText)!important}
/* One primary action: the strong accent; everything else outlined and quiet */
html[data-look="electric"] :is(.work,.portal) .btn:not(.btn-o):not(.g){background:var(--eAcc)!important;color:var(--eInk)!important;border:1px solid var(--eAcc)!important;font-weight:700!important;box-shadow:0 6px 18px rgba(79,211,255,.28)!important}
html[data-look="electric"] :is(.work,.portal) .btn:not(.btn-o):not(.g) svg{color:var(--eInk)!important;stroke:currentColor}
html[data-look="electric"] :is(.work,.portal) .btn.btn-o{background:transparent!important;color:var(--eText)!important;border:1px solid var(--eLine2)!important;box-shadow:none!important;font-weight:600!important}
/* Status colours that are distinct at a glance: green, amber, red, cyan, violet, each with its own dot */
html[data-look="electric"] .chip.ok{background:#0b5539!important;border-color:#34d399!important;color:#e3fff1!important}
html[data-look="electric"] .chip.warn{background:#5a3b00!important;border-color:#fbbf24!important;color:#fff1cf!important}
html[data-look="electric"] .chip.bad{background:#6b1424!important;border-color:#fb7185!important;color:#ffe4e8!important}
html[data-look="electric"] .chip.acc{background:#0b4366!important;border-color:var(--eAcc)!important;color:#ffffff!important}
html[data-look="electric"] .chip.vio,html[data-look="electric"] .chip.syn{background:#3a2780!important;border-color:#b49cff!important;color:#f1ecff!important}
html[data-look="electric"] :is(.chip.ok,.chip.warn,.chip.bad):not(.chip-plain)::before{content:"";flex:none;width:7px;height:7px;border-radius:999px;margin-right:6px;display:inline-block;vertical-align:middle;background:currentColor}
html[data-look="electric"] .chip.ok:not(.chip-plain)::before{background:#34d399}html[data-look="electric"] .chip.warn:not(.chip-plain)::before{background:#fbbf24}html[data-look="electric"] .chip.bad:not(.chip-plain)::before{background:#fb7185}
html[data-look="electric"] .pr-q{color:var(--eText)}
/* Agent Channel like WhatsApp (Owner, 12 Oct 2026): bubbles, yours on the right, instant send. */
#ch-stream .ch-msg{border:0!important}#ch-stream .ch-msg .grow{background:rgba(255,255,255,.06);border-radius:16px;padding:8px 12px;max-width:min(760px,86%)}
#ch-stream .ch-msg.mine{flex-direction:row-reverse}#ch-stream .ch-msg.mine .grow{background:#1d4a6b}#ch-stream .ch-msg.mine .av{display:none}
#ch-stream .ch-msg.pending .grow{opacity:.75}#ch-stream .ch-msg.sel .grow{box-shadow:inset 0 0 0 1px rgba(79,211,255,.5)}
html[data-look="ice"] #ch-stream .ch-msg .grow{background:#eef5fa}html[data-look="ice"] #ch-stream .ch-msg.mine .grow{background:#cfe8f7}
/* Agent Channel tasks: hidden until "?" or Tasks; a real checklist when shown. */
body:not(.pr-all):not(.ch-tasks-open) .ch-taskpane{display:none!important}
.ch-tasks-btn{margin-left:8px;padding:6px 14px;font-size:13px}
.ck-list{list-style:none;margin:0;padding:0}.ck{display:flex;gap:10px;padding:10px 12px;border-radius:14px;margin:4px 0;background:rgba(255,255,255,.04);cursor:grab}
.ck.prio{background:rgba(79,211,255,.10)}.ck.late .ck-stamps .late{color:#ffd9de;font-weight:700}.ck.done{opacity:.4}
.ck.sub{background:transparent;padding:6px 0 0;cursor:default}
.ck-box{flex:none;width:22px;height:22px;border-radius:7px;border:2px solid rgba(255,255,255,.55);background:transparent;cursor:pointer;margin-top:2px}.ck-box:hover{border-color:#4fd3ff}.ck.done .ck-box{background:#5ee6a8;border-color:#5ee6a8}
.ck-main{flex:1;min-width:0}.ck-top{display:flex;gap:8px;align-items:flex-start}.ck-top b{flex:1;font-size:14px;line-height:1.35}
.ck-star{flex:none;width:28px;height:28px;border:0;border-radius:999px;background:transparent;cursor:pointer;position:relative}
.ck-star::before{content:"";position:absolute;inset:6px;background:rgba(255,255,255,.5);clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}
.ck-star[aria-pressed="true"]::before{background:#ffc96b}
.ck-stamps{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:12px;color:rgba(255,255,255,.82);margin-top:4px}
.ck-prompt{margin-top:6px;font-size:13px}.ck-prompt summary{cursor:pointer;font-size:12.5px;color:#fff}.ck-prompt div{white-space:pre-wrap;margin-top:4px;color:rgba(255,255,255,.88)}
.ck-acc{margin:6px 0 0 18px;padding:0;font-size:12.5px}
html[data-look="ice"] .ck{background:#f2f7fb}html[data-look="ice"] .ck-stamps,html[data-look="ice"] .ck-prompt div{color:#24394a}html[data-look="ice"] .ck-box{border-color:#5d7385}
/* JudeAI composer: every control stays inside the tall pill (Owner, 12 Oct 2026). */
.jp-box{box-sizing:border-box;width:100%;overflow:hidden;padding:12px 12px 10px!important}
.jp-box .pt-ctrl{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;min-width:0}
.jp-box .pt-ctrl .pt-pill{flex:0 1 auto;min-width:0;height:36px;padding:0 10px;overflow:hidden;text-overflow:ellipsis}
.jp-box .pt-ctrl .sp{flex:1 1 0;min-width:0}.jp-box .pt-c{flex:none;width:34px;height:34px}
.jp-box .pt-send{flex:none;width:38px!important;height:38px!important;margin:0}

/* Agent Channel voices (Owner, 12 Oct 2026): every agent and person has its own bubble colour, Jude is blue, the Owner green; white text, AAA. */
#ch-stream .ch-msg .grow,#ch-stream .ch-msg.mine .grow{background:var(--bub,#2d3f8a)!important;color:#fff}
#ch-stream .ch-msg .grow .mute,#ch-stream .ch-msg .grow b{color:#fff!important}#ch-stream .ch-msg .grow .chip{background:rgba(0,0,0,.28);color:#fff;border-color:transparent}
html[data-look="ice"] #ch-stream .ch-msg .grow,html[data-look="ice"] #ch-stream .ch-msg.mine .grow{background:var(--bub,#2d3f8a)!important;color:#fff}
.ch-jump{position:fixed;right:auto;bottom:auto;z-index:30;width:44px;height:44px;border-radius:50%;border:0;background:#1658b8;color:#fff;display:none;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.35)}
.ch-jump.on{display:flex}.ch-jump svg{width:22px;height:22px}.ch-jump .ch-jn:empty{display:none}
.ch-jump .ch-jn{position:absolute;top:-6px;right:-4px;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:#15603f;color:#fff;font-size:12px;line-height:20px;text-align:center}

/* Neon voices (Owner, 12 Oct 2026: "nicer and more neon"): a dark glass bubble lit by each voice's neon edge and glow; white text stays AAA. */
#ch-stream .ch-msg .grow,#ch-stream .ch-msg.mine .grow,html[data-look="ice"] #ch-stream .ch-msg .grow,html[data-look="ice"] #ch-stream .ch-msg.mine .grow{
  background:linear-gradient(135deg,color-mix(in srgb,var(--bub) 24%,#060d18) 0%,color-mix(in srgb,var(--bub) 9%,#060d18) 100%)!important;
  border:1px solid color-mix(in srgb,var(--bub) 75%,transparent)!important;box-shadow:0 0 0 1px color-mix(in srgb,var(--bub) 18%,transparent),0 0 18px color-mix(in srgb,var(--bub) 38%,transparent),inset 0 0 22px color-mix(in srgb,var(--bub) 10%,transparent);color:#fff;border-radius:18px}
#ch-stream .ch-msg .grow b{color:var(--bub)!important;text-shadow:0 0 10px color-mix(in srgb,var(--bub) 60%,transparent)}
#ch-stream .ch-msg .grow .chip{background:color-mix(in srgb,var(--bub) 22%,#060d18);border:1px solid color-mix(in srgb,var(--bub) 55%,transparent);color:#fff}
#ch-stream .ch-msg.sel .grow{box-shadow:0 0 0 2px var(--bub),0 0 26px color-mix(in srgb,var(--bub) 55%,transparent)!important}
.ch-jump{background:#060d18;border:1px solid #2ea8ff;color:#2ea8ff;box-shadow:0 0 16px rgba(46,168,255,.55)}.ch-jump .ch-jn{background:#39ff88;color:#04140b;box-shadow:0 0 10px rgba(57,255,136,.7)}

/* Neon squad bubbles (Owner, 12 Oct 2026): the Simulation Lab card look (deep to bright gradient, neon ring and glow), one colour per voice. */
#ch-stream .ch-msg .grow{color:#fff!important;border:0!important;border-radius:18px!important}
#ch-stream .ch-msg .grow .chip{background:rgba(0,0,0,.32)!important;border:1px solid rgba(255,255,255,.35)!important;color:#fff!important}
#ch-stream .ch-msg .grow .mute{color:rgba(255,255,255,.88)!important}
#ch-stream .ch-msg .grow[data-voice="jude"],html[data-look] #ch-stream .ch-msg .grow[data-voice="jude"]{background:linear-gradient(135deg,#071722 0%,#0a4d78 48%,#0a80c4 80%,#18a3e9 100%)!important;box-shadow:0 0 0 1px rgba(99,221,255,.6),0 0 22px rgba(24,163,233,.42),0 12px 30px -14px rgba(0,0,0,.7)!important}
#ch-stream .ch-msg .grow[data-voice="jude"] b{color:#7fe3ff!important;text-shadow:0 0 10px rgba(24,163,233,.8)}
#ch-stream .ch-msg.sel .grow[data-voice="jude"]{box-shadow:0 0 0 2px rgba(99,221,255,.95),0 0 30px rgba(24,163,233,.65)!important}
#ch-stream .ch-msg .grow[data-voice="owner"],html[data-look] #ch-stream .ch-msg .grow[data-voice="owner"]{background:linear-gradient(135deg,#04170f 0%,#0a4a30 48%,#0f7a4c 80%,#2fbf7f 100%)!important;box-shadow:0 0 0 1px rgba(126,226,165,.6),0 0 22px rgba(47,191,127,.42),0 12px 30px -14px rgba(0,0,0,.7)!important}
#ch-stream .ch-msg .grow[data-voice="owner"] b{color:#9dffc8!important;text-shadow:0 0 10px rgba(47,191,127,.8)}
#ch-stream .ch-msg.sel .grow[data-voice="owner"]{box-shadow:0 0 0 2px rgba(126,226,165,.95),0 0 30px rgba(47,191,127,.65)!important}
#ch-stream .ch-msg .grow[data-voice="codex"],html[data-look] #ch-stream .ch-msg .grow[data-voice="codex"]{background:linear-gradient(135deg,#1a0606 0%,#5e1010 48%,#a31d1d 80%,#ff5c3a 100%)!important;box-shadow:0 0 0 1px rgba(255,138,112,.6),0 0 22px rgba(255,92,58,.42),0 12px 30px -14px rgba(0,0,0,.7)!important}
#ch-stream .ch-msg .grow[data-voice="codex"] b{color:#ffb3a3!important;text-shadow:0 0 10px rgba(255,92,58,.8)}
#ch-stream .ch-msg.sel .grow[data-voice="codex"]{box-shadow:0 0 0 2px rgba(255,138,112,.95),0 0 30px rgba(255,92,58,.65)!important}
#ch-stream .ch-msg .grow[data-voice="edge"],html[data-look] #ch-stream .ch-msg .grow[data-voice="edge"]{background:linear-gradient(135deg,#0e0620 0%,#33116a 48%,#5d24b0 80%,#a96bff 100%)!important;box-shadow:0 0 0 1px rgba(196,160,255,.6),0 0 22px rgba(169,107,255,.42),0 12px 30px -14px rgba(0,0,0,.7)!important}
#ch-stream .ch-msg .grow[data-voice="edge"] b{color:#d9c2ff!important;text-shadow:0 0 10px rgba(169,107,255,.8)}
#ch-stream .ch-msg.sel .grow[data-voice="edge"]{box-shadow:0 0 0 2px rgba(196,160,255,.95),0 0 30px rgba(169,107,255,.65)!important}
#ch-stream .ch-msg .grow[data-voice="claude"],html[data-look] #ch-stream .ch-msg .grow[data-voice="claude"]{background:linear-gradient(135deg,#1a0d02 0%,#5a2c05 48%,#9c4f0b 80%,#ff9f1c 100%)!important;box-shadow:0 0 0 1px rgba(255,196,120,.6),0 0 22px rgba(255,159,28,.42),0 12px 30px -14px rgba(0,0,0,.7)!important}
#ch-stream .ch-msg .grow[data-voice="claude"] b{color:#ffd59a!important;text-shadow:0 0 10px rgba(255,159,28,.8)}
#ch-stream .ch-msg.sel .grow[data-voice="claude"]{box-shadow:0 0 0 2px rgba(255,196,120,.95),0 0 30px rgba(255,159,28,.65)!important}
#ch-stream .ch-msg .grow[data-voice="magenta"],html[data-look] #ch-stream .ch-msg .grow[data-voice="magenta"]{background:linear-gradient(135deg,#1a0418 0%,#560e4f 48%,#9a1887 80%,#ff3df2 100%)!important;box-shadow:0 0 0 1px rgba(255,150,245,.6),0 0 22px rgba(255,61,242,.42),0 12px 30px -14px rgba(0,0,0,.7)!important}
#ch-stream .ch-msg .grow[data-voice="magenta"] b{color:#ffb8f8!important;text-shadow:0 0 10px rgba(255,61,242,.8)}
#ch-stream .ch-msg.sel .grow[data-voice="magenta"]{box-shadow:0 0 0 2px rgba(255,150,245,.95),0 0 30px rgba(255,61,242,.65)!important}
#ch-stream .ch-msg .grow[data-voice="teal"],html[data-look] #ch-stream .ch-msg .grow[data-voice="teal"]{background:linear-gradient(135deg,#021617 0%,#064349 48%,#0b767d 80%,#00e0ef 100%)!important;box-shadow:0 0 0 1px rgba(120,240,250,.6),0 0 22px rgba(0,224,239,.42),0 12px 30px -14px rgba(0,0,0,.7)!important}
#ch-stream .ch-msg .grow[data-voice="teal"] b{color:#a6f7ff!important;text-shadow:0 0 10px rgba(0,224,239,.8)}
#ch-stream .ch-msg.sel .grow[data-voice="teal"]{box-shadow:0 0 0 2px rgba(120,240,250,.95),0 0 30px rgba(0,224,239,.65)!important}
#ch-stream .ch-msg .grow[data-voice="gold"],html[data-look] #ch-stream .ch-msg .grow[data-voice="gold"]{background:linear-gradient(135deg,#171303 0%,#4a3c06 48%,#80680c 80%,#f5c518 100%)!important;box-shadow:0 0 0 1px rgba(255,224,120,.6),0 0 22px rgba(245,197,24,.42),0 12px 30px -14px rgba(0,0,0,.7)!important}
#ch-stream .ch-msg .grow[data-voice="gold"] b{color:#ffe9a3!important;text-shadow:0 0 10px rgba(245,197,24,.8)}
#ch-stream .ch-msg.sel .grow[data-voice="gold"]{box-shadow:0 0 0 2px rgba(255,224,120,.95),0 0 30px rgba(245,197,24,.65)!important}

/* Bright neon cards (Owner, 12 Oct 2026: 'bright light colours that are not flat, more textured, restrained, no glow'): a light
   gradient per voice, a soft sheen and fine diagonal grain, a thin light edge; dark ink words for easy reading. */
#ch-stream .ch-msg .grow,#ch-stream .ch-msg.mine .grow{color:#06121f!important;border-radius:18px!important;border:0!important}
#ch-stream .ch-msg .grow .mute{color:#0b2233!important}
#ch-stream .ch-msg .grow .chip{background:rgba(255,255,255,.6)!important;border:1px solid rgba(6,18,31,.18)!important;color:#06121f!important}
#ch-stream .ch-msg .grow[data-voice="jude"],html[data-look] #ch-stream .ch-msg .grow[data-voice="jude"]{background:radial-gradient(120% 90% at 0% 0%,rgba(255,255,255,.6),rgba(255,255,255,0) 55%),repeating-linear-gradient(135deg,rgba(255,255,255,.13) 0 2px,rgba(255,255,255,0) 2px 7px),linear-gradient(135deg,#c9edff 0%,#86d3ff 55%,#3eaef7 100%)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.75),inset 0 0 0 1px rgba(255,255,255,.35),inset 0 -12px 20px -14px rgba(0,0,0,.22),0 6px 16px -10px rgba(0,0,0,.5)!important}
#ch-stream .ch-msg .grow[data-voice="jude"] b{color:#003a66!important;text-shadow:none!important}
#ch-stream .ch-msg.sel .grow[data-voice="jude"]{box-shadow:inset 0 1px 0 rgba(255,255,255,.75),0 0 0 2px #3eaef7,0 6px 16px -10px rgba(0,0,0,.5)!important}
#ch-stream .ch-msg .grow[data-voice="owner"],html[data-look] #ch-stream .ch-msg .grow[data-voice="owner"]{background:radial-gradient(120% 90% at 0% 0%,rgba(255,255,255,.6),rgba(255,255,255,0) 55%),repeating-linear-gradient(135deg,rgba(255,255,255,.13) 0 2px,rgba(255,255,255,0) 2px 7px),linear-gradient(135deg,#cdfde3 0%,#86efb6 55%,#36d18f 100%)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.75),inset 0 0 0 1px rgba(255,255,255,.35),inset 0 -12px 20px -14px rgba(0,0,0,.22),0 6px 16px -10px rgba(0,0,0,.5)!important}
#ch-stream .ch-msg .grow[data-voice="owner"] b{color:#00472a!important;text-shadow:none!important}
#ch-stream .ch-msg.sel .grow[data-voice="owner"]{box-shadow:inset 0 1px 0 rgba(255,255,255,.75),0 0 0 2px #36d18f,0 6px 16px -10px rgba(0,0,0,.5)!important}
#ch-stream .ch-msg .grow[data-voice="edge"],html[data-look] #ch-stream .ch-msg .grow[data-voice="edge"]{background:radial-gradient(120% 90% at 0% 0%,rgba(255,255,255,.6),rgba(255,255,255,0) 55%),repeating-linear-gradient(135deg,rgba(255,255,255,.13) 0 2px,rgba(255,255,255,0) 2px 7px),linear-gradient(135deg,#e6dbff 0%,#c1a6ff 55%,#9a74fb 100%)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.75),inset 0 0 0 1px rgba(255,255,255,.35),inset 0 -12px 20px -14px rgba(0,0,0,.22),0 6px 16px -10px rgba(0,0,0,.5)!important}
#ch-stream .ch-msg .grow[data-voice="edge"] b{color:#2c0d70!important;text-shadow:none!important}
#ch-stream .ch-msg.sel .grow[data-voice="edge"]{box-shadow:inset 0 1px 0 rgba(255,255,255,.75),0 0 0 2px #9a74fb,0 6px 16px -10px rgba(0,0,0,.5)!important}
#ch-stream .ch-msg .grow[data-voice="codex"],html[data-look] #ch-stream .ch-msg .grow[data-voice="codex"]{background:radial-gradient(120% 90% at 0% 0%,rgba(255,255,255,.6),rgba(255,255,255,0) 55%),repeating-linear-gradient(135deg,rgba(255,255,255,.13) 0 2px,rgba(255,255,255,0) 2px 7px),linear-gradient(135deg,#ffd9cf 0%,#ffa58e 55%,#ff7a5c 100%)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.75),inset 0 0 0 1px rgba(255,255,255,.35),inset 0 -12px 20px -14px rgba(0,0,0,.22),0 6px 16px -10px rgba(0,0,0,.5)!important}
#ch-stream .ch-msg .grow[data-voice="codex"] b{color:#5a1000!important;text-shadow:none!important}
#ch-stream .ch-msg.sel .grow[data-voice="codex"]{box-shadow:inset 0 1px 0 rgba(255,255,255,.75),0 0 0 2px #ff7a5c,0 6px 16px -10px rgba(0,0,0,.5)!important}
#ch-stream .ch-msg .grow[data-voice="claude"],html[data-look] #ch-stream .ch-msg .grow[data-voice="claude"]{background:radial-gradient(120% 90% at 0% 0%,rgba(255,255,255,.6),rgba(255,255,255,0) 55%),repeating-linear-gradient(135deg,rgba(255,255,255,.13) 0 2px,rgba(255,255,255,0) 2px 7px),linear-gradient(135deg,#ffe9c7 0%,#ffc97e 55%,#ffaa45 100%)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.75),inset 0 0 0 1px rgba(255,255,255,.35),inset 0 -12px 20px -14px rgba(0,0,0,.22),0 6px 16px -10px rgba(0,0,0,.5)!important}
#ch-stream .ch-msg .grow[data-voice="claude"] b{color:#552a00!important;text-shadow:none!important}
#ch-stream .ch-msg.sel .grow[data-voice="claude"]{box-shadow:inset 0 1px 0 rgba(255,255,255,.75),0 0 0 2px #ffaa45,0 6px 16px -10px rgba(0,0,0,.5)!important}
#ch-stream .ch-msg .grow[data-voice="magenta"],html[data-look] #ch-stream .ch-msg .grow[data-voice="magenta"]{background:radial-gradient(120% 90% at 0% 0%,rgba(255,255,255,.6),rgba(255,255,255,0) 55%),repeating-linear-gradient(135deg,rgba(255,255,255,.13) 0 2px,rgba(255,255,255,0) 2px 7px),linear-gradient(135deg,#ffd8fb 0%,#ffa3f3 55%,#f86be6 100%)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.75),inset 0 0 0 1px rgba(255,255,255,.35),inset 0 -12px 20px -14px rgba(0,0,0,.22),0 6px 16px -10px rgba(0,0,0,.5)!important}
#ch-stream .ch-msg .grow[data-voice="magenta"] b{color:#5a0050!important;text-shadow:none!important}
#ch-stream .ch-msg.sel .grow[data-voice="magenta"]{box-shadow:inset 0 1px 0 rgba(255,255,255,.75),0 0 0 2px #f86be6,0 6px 16px -10px rgba(0,0,0,.5)!important}
#ch-stream .ch-msg .grow[data-voice="teal"],html[data-look] #ch-stream .ch-msg .grow[data-voice="teal"]{background:radial-gradient(120% 90% at 0% 0%,rgba(255,255,255,.6),rgba(255,255,255,0) 55%),repeating-linear-gradient(135deg,rgba(255,255,255,.13) 0 2px,rgba(255,255,255,0) 2px 7px),linear-gradient(135deg,#cbfbff 0%,#86eef6 55%,#38d6e3 100%)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.75),inset 0 0 0 1px rgba(255,255,255,.35),inset 0 -12px 20px -14px rgba(0,0,0,.22),0 6px 16px -10px rgba(0,0,0,.5)!important}
#ch-stream .ch-msg .grow[data-voice="teal"] b{color:#00474c!important;text-shadow:none!important}
#ch-stream .ch-msg.sel .grow[data-voice="teal"]{box-shadow:inset 0 1px 0 rgba(255,255,255,.75),0 0 0 2px #38d6e3,0 6px 16px -10px rgba(0,0,0,.5)!important}
#ch-stream .ch-msg .grow[data-voice="gold"],html[data-look] #ch-stream .ch-msg .grow[data-voice="gold"]{background:radial-gradient(120% 90% at 0% 0%,rgba(255,255,255,.6),rgba(255,255,255,0) 55%),repeating-linear-gradient(135deg,rgba(255,255,255,.13) 0 2px,rgba(255,255,255,0) 2px 7px),linear-gradient(135deg,#fff4c2 0%,#ffe27a 55%,#ffcf2e 100%)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.75),inset 0 0 0 1px rgba(255,255,255,.35),inset 0 -12px 20px -14px rgba(0,0,0,.22),0 6px 16px -10px rgba(0,0,0,.5)!important}
#ch-stream .ch-msg .grow[data-voice="gold"] b{color:#463500!important;text-shadow:none!important}
#ch-stream .ch-msg.sel .grow[data-voice="gold"]{box-shadow:inset 0 1px 0 rgba(255,255,255,.75),0 0 0 2px #ffcf2e,0 6px 16px -10px rgba(0,0,0,.5)!important}

/* Lab-card bubbles (Owner, 12 Oct 2026: 'the colour of the lab and the background of the logo, that smoothness'): one smooth
   deep-to-rich gradient per voice exactly like the Simulation Lab squad cards and the lion mark's ground; no grain, no glow; white words. */
#ch-stream .ch-msg .grow,#ch-stream .ch-msg.mine .grow{color:#fff!important;border-radius:18px!important;border:0!important}
#ch-stream .ch-msg .grow .mute{color:rgba(255,255,255,.9)!important}
#ch-stream .ch-msg .grow .chip{background:rgba(255,255,255,.14)!important;border:1px solid rgba(255,255,255,.28)!important;color:#fff!important}
#ch-stream .ch-msg .grow[data-voice="jude"],html[data-look] #ch-stream .ch-msg .grow[data-voice="jude"]{background:linear-gradient(135deg,#071823 0%,#0a4d78 55%,#0a80c4 100%)!important;box-shadow:0 12px 30px -16px rgba(10,77,120,.75)!important}
#ch-stream .ch-msg .grow[data-voice="jude"] b{color:#8cdcff!important;text-shadow:none!important}
#ch-stream .ch-msg.sel .grow[data-voice="jude"]{box-shadow:0 0 0 2px #8cdcff,0 12px 30px -16px rgba(10,77,120,.75)!important}
#ch-stream .ch-msg .grow[data-voice="owner"],html[data-look] #ch-stream .ch-msg .grow[data-voice="owner"]{background:linear-gradient(135deg,#04170f 0%,#0a4a30 55%,#0f7a4c 100%)!important;box-shadow:0 12px 30px -16px rgba(10,80,50,.75)!important}
#ch-stream .ch-msg .grow[data-voice="owner"] b{color:#b9ffd9!important;text-shadow:none!important}
#ch-stream .ch-msg.sel .grow[data-voice="owner"]{box-shadow:0 0 0 2px #b9ffd9,0 12px 30px -16px rgba(10,80,50,.75)!important}
#ch-stream .ch-msg .grow[data-voice="codex"],html[data-look] #ch-stream .ch-msg .grow[data-voice="codex"]{background:linear-gradient(135deg,#1a0606 0%,#5e1010 55%,#a31d1d 100%)!important;box-shadow:0 12px 30px -16px rgba(120,20,10,.75)!important}
#ch-stream .ch-msg .grow[data-voice="codex"] b{color:#ffc2b5!important;text-shadow:none!important}
#ch-stream .ch-msg.sel .grow[data-voice="codex"]{box-shadow:0 0 0 2px #ffc2b5,0 12px 30px -16px rgba(120,20,10,.75)!important}
#ch-stream .ch-msg .grow[data-voice="edge"],html[data-look] #ch-stream .ch-msg .grow[data-voice="edge"]{background:linear-gradient(135deg,#0d0820 0%,#2e1a66 55%,#5233a8 100%)!important;box-shadow:0 12px 30px -16px rgba(46,26,102,.75)!important}
#ch-stream .ch-msg .grow[data-voice="edge"] b{color:#d6c6ff!important;text-shadow:none!important}
#ch-stream .ch-msg.sel .grow[data-voice="edge"]{box-shadow:0 0 0 2px #d6c6ff,0 12px 30px -16px rgba(46,26,102,.75)!important}
#ch-stream .ch-msg .grow[data-voice="claude"],html[data-look] #ch-stream .ch-msg .grow[data-voice="claude"]{background:linear-gradient(135deg,#1a0e03 0%,#5a3208 55%,#94560f 100%)!important;box-shadow:0 12px 30px -16px rgba(90,50,8,.75)!important}
#ch-stream .ch-msg .grow[data-voice="claude"] b{color:#ffd9a3!important;text-shadow:none!important}
#ch-stream .ch-msg.sel .grow[data-voice="claude"]{box-shadow:0 0 0 2px #ffd9a3,0 12px 30px -16px rgba(90,50,8,.75)!important}
#ch-stream .ch-msg .grow[data-voice="magenta"],html[data-look] #ch-stream .ch-msg .grow[data-voice="magenta"]{background:linear-gradient(135deg,#1a0518 0%,#551449 55%,#8c2079 100%)!important;box-shadow:0 12px 30px -16px rgba(85,20,73,.75)!important}
#ch-stream .ch-msg .grow[data-voice="magenta"] b{color:#ffc2f2!important;text-shadow:none!important}
#ch-stream .ch-msg.sel .grow[data-voice="magenta"]{box-shadow:0 0 0 2px #ffc2f2,0 12px 30px -16px rgba(85,20,73,.75)!important}
#ch-stream .ch-msg .grow[data-voice="teal"],html[data-look] #ch-stream .ch-msg .grow[data-voice="teal"]{background:linear-gradient(135deg,#031719 0%,#0b4a4f 55%,#127a80 100%)!important;box-shadow:0 12px 30px -16px rgba(11,74,79,.75)!important}
#ch-stream .ch-msg .grow[data-voice="teal"] b{color:#a6f7ff!important;text-shadow:none!important}
#ch-stream .ch-msg.sel .grow[data-voice="teal"]{box-shadow:0 0 0 2px #a6f7ff,0 12px 30px -16px rgba(11,74,79,.75)!important}
#ch-stream .ch-msg .grow[data-voice="gold"],html[data-look] #ch-stream .ch-msg .grow[data-voice="gold"]{background:linear-gradient(135deg,#171203 0%,#4d3b08 55%,#7d630f 100%)!important;box-shadow:0 12px 30px -16px rgba(77,59,8,.75)!important}
#ch-stream .ch-msg .grow[data-voice="gold"] b{color:#ffe9a3!important;text-shadow:none!important}
#ch-stream .ch-msg.sel .grow[data-voice="gold"]{box-shadow:0 0 0 2px #ffe9a3,0 12px 30px -16px rgba(77,59,8,.75)!important}

/* Agent Channel composer (Owner, 12 Oct 2026): the "Tell Jude" mouth, plug-ins and apps menu, predictions; system sans like ChatGPT. */
.ch-compose{display:block!important;padding:10px 16px 12px!important;background:transparent!important;border:0!important;height:auto!important}
.ch-box{position:relative;max-width:none;margin:0;padding:12px 14px 10px!important;border-radius:26px!important;background:#0c2233!important;border:1.5px solid rgba(99,221,255,.55)!important;
  font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
.ch-box .ch-in{display:block;width:100%;min-height:26px;max-height:200px;resize:none;border:0;outline:0;background:transparent;color:#f4f8fb;font:inherit;font-size:16px;line-height:1.5;padding:4px 4px 2px;overflow-y:auto}
.ch-box .ch-in::placeholder{color:rgba(255,255,255,.72)}
.ch-box .pt-ctrl{margin-top:6px}.ch-box .ci{width:20px;height:20px}.ch-box .ci.sm{width:16px;height:16px}.ch-box .ci.chev{width:14px;height:14px;opacity:.85}
.ch-box .ch-pill{height:34px;padding:0 12px;font-size:14px;gap:6px}
.ch-box .pt-send{width:38px!important;height:38px!important}
.ch-guess{display:none;flex-wrap:wrap;gap:6px;margin:0 0 8px}.ch-guess.on{display:flex}
.ch-g{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:999px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);color:#f4f8fb;font:inherit;font-size:13.5px;cursor:pointer}
.ch-g:hover,.ch-g.first{border-color:rgba(99,221,255,.6);background:rgba(79,211,255,.12)}
.ch-plug{position:absolute;left:8px;bottom:calc(100% + 10px);width:min(380px,calc(100vw - 32px));max-height:min(520px,70vh);display:flex;flex-direction:column;background:#0f1c28;border:1px solid rgba(255,255,255,.14);border-radius:20px;box-shadow:0 22px 50px rgba(0,0,0,.5);z-index:60;overflow:hidden}
.ch-plug[hidden]{display:none}
.ch-findrow{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid rgba(255,255,255,.1);color:#cfe9f7}
.ch-find{flex:1;border:0;outline:0;background:transparent;color:#f4f8fb;font:inherit;font-size:15px}.ch-find::placeholder{color:rgba(255,255,255,.65)}
.ch-list{overflow:auto;padding:6px}
.ch-sec{padding:10px 10px 4px;font-size:12px;font-weight:600;letter-spacing:.02em;color:#aee3f7}
.ch-item{display:flex;align-items:center;gap:12px;width:100%;padding:8px 10px;border:0;border-radius:12px;background:transparent;color:#f4f8fb;font:inherit;text-align:left;cursor:pointer}
.ch-item:hover,.ch-item:focus-visible{background:rgba(255,255,255,.07);outline:0}
.ch-ico{flex:none;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(135deg,#071823,#086696);color:#e8f8ff}
.ch-ico .ci{width:18px;height:18px}
.ch-tx{display:flex;flex-direction:column;min-width:0;flex:1}.ch-tx b{font-size:14.5px;font-weight:600}.ch-tx small{font-size:12.5px;color:rgba(255,255,255,.78);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ch-open{flex:none;width:28px;height:28px;border-radius:8px;display:grid;place-items:center;color:#cfe9f7}.ch-open:hover{background:rgba(255,255,255,.1)}.ch-open .go{transform:rotate(-90deg);width:16px;height:16px}
.ch-none{padding:16px;color:rgba(255,255,255,.8)}
html[data-look="ice"] .ch-box{background:#fff!important}html[data-look="ice"] .ch-box .ch-in{color:#0a1722}html[data-look="ice"] .ch-box .ch-in::placeholder{color:#3b5566}

.ch-plug{position:fixed!important;left:16px;bottom:120px;top:auto!important;z-index:1000;font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
.ch-plug .ci{width:18px;height:18px;flex:none}.ch-plug .ci.sm{width:16px;height:16px}.ch-plug .ch-open .go{width:16px;height:16px}

/* The attachment menu belongs to the active estate look; never force a dark console on the light page. */
.ch-plug{background:var(--pane)!important;border-color:var(--line2)!important;color:var(--text)!important;box-shadow:0 22px 50px rgba(4,18,28,.24)!important}
.ch-findrow{border-color:var(--line)!important;color:var(--mute)!important}.ch-find{color:var(--text)!important}.ch-find::placeholder{color:var(--mute)!important}
.ch-sec,.ch-tx small,.ch-none,.ch-open{color:var(--mute)!important}.ch-item{color:var(--text)!important}.ch-item:hover,.ch-item:focus-visible,.ch-open:hover{background:var(--hover)!important}
.ch-ico{background:var(--pane2)!important;border:1px solid var(--line2)!important;color:var(--acc)!important}

/* Message actions and status labels use the same readable theme tokens as the page. */
#ch-stream .ch-msg .mbar{background:var(--pane)!important;border-color:var(--line2)!important;box-shadow:0 10px 26px rgba(4,18,28,.22)!important}
#ch-stream .mb{color:var(--text)!important}#ch-stream .mb:hover{background:var(--hover)!important}
#ch-stream .ch-msg .chip{padding:0 8px!important;width:max-content;min-width:max-content}

/* Rainbow bubbles (Owner, 12 Oct 2026: 'simple elementary or rainbow colours, not dark, no gradient, life and richness and good contrast'):
   one rich solid colour per voice; white or ink words, whichever reads better. */
#ch-stream .ch-msg .grow[data-voice="jude"],html[data-look] #ch-stream .ch-msg .grow[data-voice="jude"]{background:#1a66d6!important;color:#ffffff!important;box-shadow:0 2px 8px -3px rgba(0,0,0,.35)!important}
#ch-stream .ch-msg .grow[data-voice="jude"] b,#ch-stream .ch-msg .grow[data-voice="jude"] .mute,#ch-stream .ch-msg .grow[data-voice="jude"] div{color:#ffffff!important}
#ch-stream .ch-msg .grow[data-voice="jude"] .chip{background:rgba(255,255,255,.22)!important;border:1px solid rgba(255,255,255,.45)!important;color:#ffffff!important}
#ch-stream .ch-msg.sel .grow[data-voice="jude"]{box-shadow:0 0 0 3px rgba(255,255,255,.85),0 2px 8px -3px rgba(0,0,0,.35)!important}
#ch-stream .ch-msg .grow[data-voice="owner"],html[data-look] #ch-stream .ch-msg .grow[data-voice="owner"]{background:#14874a!important;color:#ffffff!important;box-shadow:0 2px 8px -3px rgba(0,0,0,.35)!important}
#ch-stream .ch-msg .grow[data-voice="owner"] b,#ch-stream .ch-msg .grow[data-voice="owner"] .mute,#ch-stream .ch-msg .grow[data-voice="owner"] div{color:#ffffff!important}
#ch-stream .ch-msg .grow[data-voice="owner"] .chip{background:rgba(255,255,255,.22)!important;border:1px solid rgba(255,255,255,.45)!important;color:#ffffff!important}
#ch-stream .ch-msg.sel .grow[data-voice="owner"]{box-shadow:0 0 0 3px rgba(255,255,255,.85),0 2px 8px -3px rgba(0,0,0,.35)!important}
#ch-stream .ch-msg .grow[data-voice="codex"],html[data-look] #ch-stream .ch-msg .grow[data-voice="codex"]{background:#d22f2f!important;color:#ffffff!important;box-shadow:0 2px 8px -3px rgba(0,0,0,.35)!important}
#ch-stream .ch-msg .grow[data-voice="codex"] b,#ch-stream .ch-msg .grow[data-voice="codex"] .mute,#ch-stream .ch-msg .grow[data-voice="codex"] div{color:#ffffff!important}
#ch-stream .ch-msg .grow[data-voice="codex"] .chip{background:rgba(255,255,255,.22)!important;border:1px solid rgba(255,255,255,.45)!important;color:#ffffff!important}
#ch-stream .ch-msg.sel .grow[data-voice="codex"]{box-shadow:0 0 0 3px rgba(255,255,255,.85),0 2px 8px -3px rgba(0,0,0,.35)!important}
#ch-stream .ch-msg .grow[data-voice="edge"],html[data-look] #ch-stream .ch-msg .grow[data-voice="edge"]{background:#7a3de0!important;color:#ffffff!important;box-shadow:0 2px 8px -3px rgba(0,0,0,.35)!important}
#ch-stream .ch-msg .grow[data-voice="edge"] b,#ch-stream .ch-msg .grow[data-voice="edge"] .mute,#ch-stream .ch-msg .grow[data-voice="edge"] div{color:#ffffff!important}
#ch-stream .ch-msg .grow[data-voice="edge"] .chip{background:rgba(255,255,255,.22)!important;border:1px solid rgba(255,255,255,.45)!important;color:#ffffff!important}
#ch-stream .ch-msg.sel .grow[data-voice="edge"]{box-shadow:0 0 0 3px rgba(255,255,255,.85),0 2px 8px -3px rgba(0,0,0,.35)!important}
#ch-stream .ch-msg .grow[data-voice="claude"],html[data-look] #ch-stream .ch-msg .grow[data-voice="claude"]{background:#f07c12!important;color:#0a1722!important;box-shadow:0 2px 8px -3px rgba(0,0,0,.35)!important}
#ch-stream .ch-msg .grow[data-voice="claude"] b,#ch-stream .ch-msg .grow[data-voice="claude"] .mute,#ch-stream .ch-msg .grow[data-voice="claude"] div{color:#0a1722!important}
#ch-stream .ch-msg .grow[data-voice="claude"] .chip{background:rgba(255,255,255,.55)!important;border:1px solid rgba(10,23,34,.25)!important;color:#0a1722!important}
#ch-stream .ch-msg.sel .grow[data-voice="claude"]{box-shadow:0 0 0 3px rgba(255,255,255,.85),0 2px 8px -3px rgba(0,0,0,.35)!important}
#ch-stream .ch-msg .grow[data-voice="magenta"],html[data-look] #ch-stream .ch-msg .grow[data-voice="magenta"]{background:#c4166e!important;color:#ffffff!important;box-shadow:0 2px 8px -3px rgba(0,0,0,.35)!important}
#ch-stream .ch-msg .grow[data-voice="magenta"] b,#ch-stream .ch-msg .grow[data-voice="magenta"] .mute,#ch-stream .ch-msg .grow[data-voice="magenta"] div{color:#ffffff!important}
#ch-stream .ch-msg .grow[data-voice="magenta"] .chip{background:rgba(255,255,255,.22)!important;border:1px solid rgba(255,255,255,.45)!important;color:#ffffff!important}
#ch-stream .ch-msg.sel .grow[data-voice="magenta"]{box-shadow:0 0 0 3px rgba(255,255,255,.85),0 2px 8px -3px rgba(0,0,0,.35)!important}
#ch-stream .ch-msg .grow[data-voice="teal"],html[data-look] #ch-stream .ch-msg .grow[data-voice="teal"]{background:#00807a!important;color:#ffffff!important;box-shadow:0 2px 8px -3px rgba(0,0,0,.35)!important}
#ch-stream .ch-msg .grow[data-voice="teal"] b,#ch-stream .ch-msg .grow[data-voice="teal"] .mute,#ch-stream .ch-msg .grow[data-voice="teal"] div{color:#ffffff!important}
#ch-stream .ch-msg .grow[data-voice="teal"] .chip{background:rgba(255,255,255,.22)!important;border:1px solid rgba(255,255,255,.45)!important;color:#ffffff!important}
#ch-stream .ch-msg.sel .grow[data-voice="teal"]{box-shadow:0 0 0 3px rgba(255,255,255,.85),0 2px 8px -3px rgba(0,0,0,.35)!important}
#ch-stream .ch-msg .grow[data-voice="gold"],html[data-look] #ch-stream .ch-msg .grow[data-voice="gold"]{background:#f6c41a!important;color:#0a1722!important;box-shadow:0 2px 8px -3px rgba(0,0,0,.35)!important}
#ch-stream .ch-msg .grow[data-voice="gold"] b,#ch-stream .ch-msg .grow[data-voice="gold"] .mute,#ch-stream .ch-msg .grow[data-voice="gold"] div{color:#0a1722!important}
#ch-stream .ch-msg .grow[data-voice="gold"] .chip{background:rgba(255,255,255,.55)!important;border:1px solid rgba(10,23,34,.25)!important;color:#0a1722!important}
#ch-stream .ch-msg.sel .grow[data-voice="gold"]{box-shadow:0 0 0 3px rgba(255,255,255,.85),0 2px 8px -3px rgba(0,0,0,.35)!important}

/* JDX-CH-001: rich sharing belongs inside the existing governed channel bubble. */
#ch-stream .ch-plain{white-space:pre-wrap;word-break:break-word;line-height:1.5;margin-top:3px}
#ch-stream .ch-rich{line-height:1.52;margin-top:5px;overflow-wrap:anywhere}
#ch-stream .ch-rich>:first-child{margin-top:0}
#ch-stream .ch-rich>:last-child{margin-bottom:0}
#ch-stream .ch-rich p{margin:.45rem 0;white-space:pre-wrap}
#ch-stream .ch-rich h2,#ch-stream .ch-rich h3,#ch-stream .ch-rich h4{margin:.75rem 0 .3rem;line-height:1.2;color:inherit!important}
#ch-stream .ch-rich ul,#ch-stream .ch-rich ol{margin:.35rem 0;padding-left:1.4rem}
#ch-stream .ch-rich li{margin:.18rem 0}
#ch-stream .ch-rich blockquote{margin:.55rem 0;padding:.2rem .75rem;border-left:3px solid currentColor;background:rgba(255,255,255,.14);border-radius:0 8px 8px 0}
#ch-stream .ch-rich a{color:inherit;text-decoration:underline;text-underline-offset:2px}
#ch-stream .ch-inline{padding:.08rem .32rem;border-radius:5px;background:rgba(2,12,24,.2);font:600 .92em ui-monospace,SFMono-Regular,Menlo,monospace;color:inherit}
#ch-stream .ch-code{margin:.65rem 0 .2rem;border:1px solid rgba(255,255,255,.32);border-radius:14px;background:#07121f;color:#e9f7ff;overflow:hidden;box-shadow:0 10px 24px -18px rgba(0,0,0,.85)}
#ch-stream .ch-code-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 11px;border-bottom:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.06)}
#ch-stream .ch-code-lang{font-weight:800;text-transform:uppercase;letter-spacing:.06em;font-size:11px;color:#70e8ff!important}
#ch-stream .ch-code-lines{font-size:11px;color:#a8bbca!important}
#ch-stream .ch-code-actions{margin-left:auto;display:flex;gap:6px}
#ch-stream .ch-code-act{appearance:none;border:1px solid rgba(112,232,255,.3);border-radius:999px;background:rgba(112,232,255,.08);color:#dffaff;padding:4px 8px;font:700 11px inherit;cursor:pointer}
#ch-stream .ch-code-act:hover{background:rgba(112,232,255,.18)}
#ch-stream .ch-code pre{margin:0;padding:12px 14px;overflow:auto;max-height:58vh;background:transparent;color:#e9f7ff}
#ch-stream .ch-code code{font:12.5px/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre;tab-size:2;color:inherit}
@media(max-width:640px){#ch-stream .ch-code-actions{margin-left:0;flex-basis:100%;overflow-x:auto}.ch-code-act{white-space:nowrap}}
#ch-stream .ch-msg .grow[data-voice="jude"] .chip{background:rgba(0,0,0,.28)!important;border:1px solid rgba(255,255,255,.4)!important;color:#fff!important}
#ch-stream .ch-msg .grow[data-voice="owner"] .chip{background:rgba(0,0,0,.28)!important;border:1px solid rgba(255,255,255,.4)!important;color:#fff!important}
#ch-stream .ch-msg .grow[data-voice="codex"] .chip{background:rgba(0,0,0,.28)!important;border:1px solid rgba(255,255,255,.4)!important;color:#fff!important}
#ch-stream .ch-msg .grow[data-voice="edge"] .chip{background:rgba(0,0,0,.28)!important;border:1px solid rgba(255,255,255,.4)!important;color:#fff!important}
#ch-stream .ch-msg .grow[data-voice="magenta"] .chip{background:rgba(0,0,0,.28)!important;border:1px solid rgba(255,255,255,.4)!important;color:#fff!important}
#ch-stream .ch-msg .grow[data-voice="teal"] .chip{background:rgba(0,0,0,.28)!important;border:1px solid rgba(255,255,255,.4)!important;color:#fff!important}

/* Message trail drawer (Owner, 12 Oct 2026): quick actions and the full audit trail of a message. */
.tr-pane{position:fixed;top:0;right:0;bottom:0;width:min(520px,100vw);z-index:1100;background:#0d1b27;border-left:1px solid rgba(255,255,255,.14);box-shadow:-20px 0 50px rgba(0,0,0,.45);display:flex;flex-direction:column;color:#f4f8fb;
  font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
.tr-pane[hidden]{display:none}
.tr-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid rgba(255,255,255,.12);font-size:16px}
.tr-x{width:34px;height:34px;border:0;border-radius:10px;background:transparent;color:#f4f8fb;display:grid;place-items:center;cursor:pointer}.tr-x:hover{background:rgba(255,255,255,.08)}
.tr-pane .ci{width:18px;height:18px;flex:none}
.tr-load{padding:18px 16px}
.tr-body{overflow:auto;padding:12px 16px 24px}
.tr-acts{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.tr-a{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border-radius:999px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);color:#f4f8fb;font:inherit;font-size:13.5px;cursor:pointer}
.tr-a:hover{border-color:rgba(99,221,255,.6);background:rgba(79,211,255,.12)}
.tr-share{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}.tr-devs{display:inline-flex;gap:6px}.tr-devs[hidden]{display:none}
.tr-dev{height:30px;padding:0 12px;border-radius:999px;border:1px solid rgba(99,221,255,.5);background:#0c2233;color:#f4f8fb;font:inherit;font-size:13px;cursor:pointer}
.tr-taps{display:flex;gap:6px;margin-bottom:14px}.tr-tap{width:38px;height:34px;border-radius:12px;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.05);color:#f4f8fb;font-size:16px;cursor:pointer}.tr-tap:hover{background:rgba(255,255,255,.12)}
.tr-sec{margin:0 0 14px;padding:12px 14px;border-radius:14px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.09)}
.tr-sec h3{margin:0 0 8px;font-size:13px;font-weight:700;letter-spacing:.02em;color:#aee3f7}
.tr-kv{display:grid;grid-template-columns:150px 1fr;gap:6px 12px;margin:0;font-size:13.5px;line-height:1.45}.tr-kv dt{color:rgba(255,255,255,.78)}.tr-kv dd{margin:0;word-break:break-word}
.tr-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.tr-chip{padding:3px 10px;border-radius:999px;background:rgba(79,211,255,.14);border:1px solid rgba(79,211,255,.4);font-size:12.5px}
.tr-log{margin:0;padding-left:18px;font-size:13px;line-height:1.5}.tr-log small{color:rgba(255,255,255,.75)}
.tr-stops{display:grid;gap:8px}.tr-stop{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;border:1px solid rgba(255,120,100,.45);background:rgba(210,47,47,.12);color:#fff;font:inherit;text-align:left;cursor:pointer}
.tr-stop span{display:flex;flex-direction:column}.tr-stop small{color:rgba(255,255,255,.8);font-size:12px}.tr-stop.all{background:#b3261e;border-color:#ff8a7a}.tr-stop:hover{filter:brightness(1.12)}
.tr-raw{margin:0;max-height:220px;overflow:auto;font:12px/1.45 ui-sans-serif,-apple-system,"Segoe UI",sans-serif;white-space:pre-wrap;color:#e6f3fa}
@media (max-width:600px){.tr-kv{grid-template-columns:1fr}.tr-kv dt{margin-top:4px}}

/* Message actions on the message (Owner, 12 Oct 2026): hover or tap a message for reactions, reply, copy, read aloud and Get info. */
#ch-stream .ch-msg{position:relative}
#ch-stream .ch-msg .mbar{position:absolute;top:-14px;right:22px;z-index:5;display:none;align-items:center;gap:2px;padding:4px 6px;border-radius:999px;background:#0f2232;border:1px solid rgba(255,255,255,.18);box-shadow:0 10px 26px rgba(0,0,0,.45)}
#ch-stream .ch-msg.mine .mbar{right:auto;left:22px}
#ch-stream .ch-msg:hover .mbar,#ch-stream .ch-msg.bar-on .mbar,#ch-stream .ch-msg:focus-within .mbar{display:flex}
#ch-stream .mb{width:32px;height:30px;border:0;border-radius:999px;background:transparent;color:#eaf6fc;display:grid;place-items:center;cursor:pointer;font-size:16px;line-height:1}
#ch-stream .mb:hover{background:rgba(255,255,255,.12)}
#ch-stream .mb svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
#ch-stream .msep{width:1px;height:18px;background:rgba(255,255,255,.2);margin:0 4px}
#ch-stream .rx{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
#ch-stream .rxc{height:24px;padding:0 8px;border-radius:999px;border:1px solid rgba(255,255,255,.35);background:rgba(0,0,0,.18);color:inherit;font-size:13px;cursor:pointer}
@media (hover:none){#ch-stream .ch-msg:hover .mbar{display:none}#ch-stream .ch-msg.bar-on .mbar{display:flex}}
/* Jude in the brand's light cyan with dark words, easy to read (Owner, 12 Oct 2026) */
#ch-stream .ch-msg .grow[data-voice="jude"],html[data-look] #ch-stream .ch-msg .grow[data-voice="jude"]{background:#7fdcff!important;color:#04121c!important}
#ch-stream .ch-msg .grow[data-voice="jude"] b,#ch-stream .ch-msg .grow[data-voice="jude"] .mute,#ch-stream .ch-msg .grow[data-voice="jude"] div{color:#04121c!important}
#ch-stream .ch-msg .grow[data-voice="jude"] .chip{background:rgba(255,255,255,.55)!important;border:1px solid rgba(4,18,28,.25)!important;color:#04121c!important}

/* Jude's status light (Owner, 13 Oct 2026): amber asleep or waking, green awake, red not available. */
.jl{display:inline-flex;align-items:center;gap:6px;min-width:0}.jl-text{font-size:11.5px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}
.jl-dot{width:10px;height:10px;border-radius:50%;flex:none;display:inline-block}
.jl-dot.amber{background:#ffb000;box-shadow:0 0 6px #ffb000,0 0 14px rgba(255,176,0,.6)}
.jl-dot.green{background:#39ff88;box-shadow:0 0 6px #39ff88,0 0 14px rgba(57,255,136,.6)}
.jl-dot.red{background:#ff3b5c;box-shadow:0 0 6px #ff3b5c,0 0 14px rgba(255,59,92,.6)}
.jl-dot.waking{animation:jl-pulse 1.2s ease-in-out infinite}
@keyframes jl-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.85)}}
@media (prefers-reduced-motion:reduce){.jl-dot.waking{animation:none}}

/* Compact, readable Jude model status; the page context gets its own line. */
.jp-head{position:relative;display:grid;grid-template-columns:30px minmax(0,1fr) repeat(4,auto);height:auto;min-height:82px;gap:6px;padding:10px 12px;align-items:center}
.jp-head>.jp-lion{grid-column:1;grid-row:1}.jp-head>.jp-wm{grid-column:2;grid-row:1;max-width:100%;object-fit:contain;object-position:left}
.jp-head>.jl{grid-column:3;grid-row:1}.jp-head>.sp{display:none}
.jp-head>.jt-h{grid-column:4;grid-row:1}.jp-head>[aria-label="New conversation"],.jp-head>[aria-label="New topic"]{grid-column:5;grid-row:1}.jp-head>[aria-label="Close JudeAI"]{grid-column:6;grid-row:1}
.jp-head>.jp-ctx,.jp-head>.jt-chip{grid-column:1/-1;grid-row:2;justify-self:start;max-width:100%;white-space:normal;overflow-wrap:anywhere;color:var(--text)!important}
.jp-head .jl-toggle{display:grid;place-items:center;min-width:32px;min-height:32px;list-style:none;border-radius:999px;cursor:pointer;color:var(--text)}
.jp-head .jl-toggle::-webkit-details-marker{display:none}.jp-head .jl-toggle:hover{background:var(--hover)}
.jp-head .jl-toggle:focus-visible{outline:2px solid currentColor;outline-offset:2px}
.jp-head .jl-popover{position:absolute;left:12px;right:12px;top:calc(100% - 2px);z-index:15;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--panel,#0c3047);color:var(--text);box-shadow:0 12px 30px #00172830;backdrop-filter:blur(18px)}
.jp-head .jl-popover .jl-text{display:block;max-width:none;white-space:normal;overflow:visible;font-size:13px;line-height:1.5;color:inherit}
.jp-head .jl-context{display:block;margin-top:8px;font-size:12px;line-height:1.5;color:inherit}
html[data-look="ice"] .jp-head .jl-popover{background:#f4faff;color:#123247}
.jl-dot.unknown{border:1px solid currentColor;background:transparent;box-sizing:border-box}
@media (pointer:coarse){.jp-head .jl-toggle{min-width:44px;min-height:44px}}

/* Workspace views retain full-size controls and content, with one primary pane on phones. */
.ws-view-nav[hidden]{display:none!important}
.ws-view-nav{display:flex;align-items:center;gap:8px;flex:none;padding:6px 12px;background:var(--pane);border-bottom:1px solid var(--line)}
.ws-view-nav select{flex:1;min-width:0;min-height:44px;padding:8px 12px;border:1px solid var(--line2);border-radius:999px;background:var(--card);color:var(--text);font-size:14px}
.ws-view-step{flex:none;min-width:44px;min-height:44px;border:1px solid var(--line2);border-radius:999px;background:var(--card);color:var(--text);font-size:22px;cursor:pointer}
.ws-view-step:disabled{opacity:.45;cursor:default}.ws-view-count{flex:none;font-size:12px;color:var(--mute);font-variant-numeric:tabular-nums}
.ws .panes.ws-paged>.p.ws-view-inactive{display:none!important}
@media (max-width:700px){
  .ws{height:100dvh;max-height:100dvh;grid-template-rows:minmax(0,1fr) calc(60px + env(safe-area-inset-bottom))}
  .ws>.work{height:100%;min-height:0;overflow:hidden}.ws>.rail{padding-bottom:env(safe-area-inset-bottom);justify-content:flex-start;gap:4px}
  .ws .panes.ws-paged{display:flex!important;flex-direction:column;overflow:hidden!important;min-height:0;flex:1;grid-template-columns:none!important;grid-auto-rows:unset!important}
  .ws .panes.ws-paged>.p:not(.ws-view-inactive){flex:1 1 auto!important;width:100%!important;min-height:0!important;max-height:100%;overflow:auto!important;overscroll-behavior:contain;scroll-padding:12px}
  .ws .panes.ws-paged>.p>.body{min-height:0;overflow:auto;overscroll-behavior:contain}
  .ws .appbar{min-height:52px;height:auto;flex-wrap:wrap;padding:6px 10px;gap:6px}.ws .appbar>.search{min-width:44px;max-width:100%;flex:1}.ws .appbar .r{flex:none}
  .ws .appbar .r .ib{display:grid!important}.ws .appbar .crumb{min-width:0;max-width:100%;white-space:normal}
  .ws .ph2{height:auto!important;min-height:44px!important;max-height:none!important;flex-wrap:wrap!important;padding-block:6px!important;white-space:normal;overflow:visible!important}.ws .ph2>.t{white-space:normal;overflow-wrap:break-word}
  .ws .panes.ws-paged>.p:not(.ws-view-inactive){animation:ws-view-enter .18s ease-out}
}
@keyframes ws-view-enter{from{opacity:.6;transform:translateY(4px)}to{opacity:1;transform:none}}
/* Focus uses a visible outline, without the rejected decorative underline. */
:is(a,button,summary,[role="button"],[role="tab"],[role="link"],[role="switch"],[role="menuitem"],[tabindex],select,input,textarea):focus-visible{outline:2px solid var(--acc)!important;outline-offset:2px;box-shadow:none!important}
html[data-look="ice"] :is(a,button,summary,[role="button"],[role="tab"],[role="link"],[role="switch"],[role="menuitem"],[tabindex],select,input,textarea):focus-visible{outline:2px solid #0a6a99!important;box-shadow:none!important}
@media(prefers-reduced-motion:reduce){.ws .ws-paged>.p,.jp,.ed-drawer,.pr-more{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.ph2 .chip.warn,.ph2 .chip.bad{display:inline-flex!important}

/* Small visual viewports (large zoom or keyboard): retain a usable pane and permit shell scrolling. */
@media(max-width:700px) and (max-height:480px){
 .ws>.work{overflow:auto;overscroll-behavior:contain}
 .ws .panes.ws-paged{flex:none!important;height:240px;min-height:240px!important}
}

/* Selected provider status must not imply readiness before the service response. */
.model-pill .dot,.model-pill .pt-dot{fill:transparent!important;background:transparent!important;stroke:currentColor;stroke-width:1;box-shadow:none}
.model-pill[data-model-state="ready"] .dot{fill:#0b7a4f!important;stroke:none}
.model-pill[data-model-state="starting"] .dot,.model-pill[data-model-state="asleep"] .dot,.model-pill[data-model-state="configured"] .dot{fill:#ffb000!important;stroke:none}
.model-pill[data-model-state="unavailable"] .dot,.model-pill[data-model-state="not_connected"] .dot{fill:#ee3455!important;stroke:none}
.jp-head>.jp-ctx,.jp-head>.jt-chip{overflow:visible;text-overflow:clip;max-width:100%;white-space:normal;min-width:0}
.jp-head>.jt-chip{grid-row:3}.jp-head .jl-toggle{min-width:44px;min-height:44px}

/* Composer focus belongs to its rounded frame, never the inner typing area. */
:is(.pt-box,.jp-box,.ch-box,.portal-box,.compose #form) :is(input,textarea):is(:focus,:focus-visible){outline:none!important;box-shadow:none!important;border-color:transparent!important}
:is(.pt-box,.jp-box,.ch-box,.portal-box):has(:is(input,textarea):focus-visible),.compose #form>.row:has(textarea:focus-visible){box-shadow:0 0 0 2px var(--acc,#0a6a99)!important}
@media(forced-colors:active){:is(.pt-box,.jp-box,.ch-box,.portal-box):has(:is(input,textarea):focus-visible),.compose #form>.row:has(textarea:focus-visible){outline:2px solid Highlight!important;outline-offset:2px}}

/* A hidden desktop pane must not retain its rail column on a phone. */
@media(max-width:700px){html[data-look] .ws,html.pane-off .ws,.ws.nopane{grid-template-columns:minmax(0,1fr)!important}.ws>.work,.ws>.rail{grid-column:1}}

/* Home account controls sit with the top bar; the left sidebar has no account block. */
.pt-main>.pt-acct{position:absolute;top:16px;right:68px;display:flex!important;align-items:center;gap:8px;margin:0;padding:0;border:0;background:transparent;z-index:4}
.pt-main>.pt-acct .pt-who{display:none}
.pt-main>.pt-acct :is(.pt-ib,.pt-ava){display:grid;place-items:center;width:44px;height:44px;min-width:44px;min-height:44px;padding:0;margin:0;border-radius:999px}
.pt-main>.pt-acct .av{width:32px;height:32px;object-fit:contain}
@media(max-width:700px){.pt-main>.pt-acct{top:10px;right:54px;gap:4px}.pt-main>.pt-wmlink{max-width:calc(100% - 166px)}}

.pt-main>.pt-acct .look-ctl{display:grid;place-items:center;min-width:44px;min-height:44px;width:44px;height:44px;border-radius:999px;color:inherit}
@media(max-width:700px){.pt-main>.pt-wmlink{max-width:calc(100% - 214px)}.pt-main>.pt-wmlink .wm{max-width:100%;height:auto}}

.pt-main>.pt-acct .pt-account-text{width:auto;min-width:72px;padding-inline:12px;font-size:13px;font-weight:600;background:rgba(255,255,255,.09);color:inherit;border:1px solid rgba(255,255,255,.22)}
@media(max-width:700px){.pt-main>.pt-wmlink{max-width:calc(100% - 242px)}}

/* Home help and reading are always visible, with native modal focus and Escape support. */
.pt-main>.pt-acct .pt-guide-button{color:inherit;border:1px solid rgba(125,198,231,.35);background:rgba(255,255,255,.08);cursor:pointer}
.pt-guide{color:var(--text,#e7f4ff);background:var(--panel,#10334a);border:1px solid var(--line,#547f97);border-radius:22px;padding:22px;width:min(420px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;box-sizing:border-box;box-shadow:0 20px 70px #00111c66}
.pt-guide::backdrop{background:#031c2b77;backdrop-filter:blur(6px)}
.pt-guide-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.pt-guide-head h2{font-size:20px;margin:0}.pt-guide .pt-ib{width:44px;height:44px;color:inherit;background:transparent;border:0;cursor:pointer}.pt-guide p{font-size:15px;line-height:1.5}.pt-guide-links{display:grid;gap:8px;margin-top:16px}.pt-guide-links a{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;padding:4px 12px;border:1px solid #74b4d455;border-radius:14px;text-decoration:none;color:inherit;background:#87c7e51a}.pt-guide-links svg{width:20px;height:20px;flex:none}
html[data-look="ice"] .pt-guide{background:#f3faff;color:#10354d}
@media(max-width:700px){.pt-main>.pt-acct{top:60px;right:14px;gap:4px}.pt-main>.pt-wmlink{max-width:calc(100% - 90px)}.pt-main{padding-top:110px!important;box-sizing:border-box}.pt-hist{top:16px;right:14px}}

@media(max-width:700px){.pt-main>.pt-wmlink{width:180px}.pt-main>.pt-wmlink .wm{width:100%;height:auto}}

/* The Home launcher shares the existing controls row at every viewport. */
.pt-main>.pt-acct .jp-open-btn{height:44px;min-width:44px;justify-content:center}

/* Native confirmation dialogs retain their action controls in short viewports. */
dialog.ed-sheet{width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:12px;border:0;color:inherit;overflow:auto}
dialog.ed-sheet:not([open]){display:none}
.ed-sheet .ed-card{max-block-size:calc(100dvh - 24px);overflow:auto;overscroll-behavior:contain}
/* Wrap only where the six Home controls cannot fit at their full target size. */
@media(max-width:340px){.pt-main>.pt-acct{left:14px;right:14px;max-width:calc(100% - 28px);flex-wrap:wrap;justify-content:flex-end}.pt-main{padding-top:164px!important}}

/* Shared Jude controls: visible targets on every pointer, with two compact composer rows on phones. */
.jp :is(.jp-ib,.jt-fk,.pt-c,.pt-send){width:44px!important;height:44px!important;min-width:44px;min-height:44px;flex:0 0 44px;box-sizing:border-box}
.jp .pt-pill,.jp .pt-under :is(.pt-tog,.pt-ask){min-height:44px;box-sizing:border-box}
.jp .jp-head{display:grid;grid-template-columns:30px minmax(0,1fr) repeat(4,44px);height:auto;min-height:82px;gap:6px;padding:10px 12px}
.jp .jp-head>.jp-lion{grid-column:1;grid-row:1}.jp .jp-head>.jp-wm{grid-column:2;grid-row:1;max-width:100%;object-fit:contain;object-position:left}
.jp .jp-head>.jl{grid-column:3;grid-row:1}.jp .jp-head>.sp{display:none}.jp .jp-head .jl-toggle{min-width:44px;min-height:44px}
.jp .jp-head>.jt-h{grid-column:4;grid-row:1}.jp .jp-head>[aria-label="New conversation"],.jp .jp-head>[aria-label="New topic"]{grid-column:5;grid-row:1}.jp .jp-head>[aria-label="Close JudeAI"]{grid-column:6;grid-row:1}
.jp .jp-head>.jp-ctx,.jp .jp-head>.jt-chip{grid-column:1/-1;grid-row:2;min-width:0;max-width:100%;white-space:normal;overflow-wrap:anywhere}.jp .jp-head>.jt-chip{grid-row:3}
 .jp .jp-box .pt-ctrl{display:grid;grid-template-columns:44px minmax(0,1fr) 44px 44px;gap:6px!important}
 .jp .jp-box .pt-ctrl>.pt-pill{grid-column:1/3;grid-row:1;min-width:0;height:44px!important}
 .jp .jp-box .pt-ctrl>.jp-eff{grid-column:3/5}.jp .jp-box .pt-ctrl>.sp{display:none}
 .jp .jp-box .pt-ctrl>.pt-c:first-child{grid-column:1;grid-row:2}.jp .jp-box .pt-ctrl>.pt-c:not(:first-child){grid-column:3;grid-row:2}.jp .jp-box .pt-ctrl>.pt-send{grid-column:4;grid-row:2}
@media(max-width:480px){
 .jp .pt-under{flex-wrap:wrap}.jp .pt-under>.sp{display:none}.jp .pt-under>.pt-ask{margin-left:auto}
 .jp .jp-msg:has(>.jt-fk){display:grid;grid-template-columns:minmax(0,1fr) 44px;gap:6px;align-items:start}
 .jp .jp-msg:has(>.jt-fk)>.jp-b{max-width:100%;min-width:0}.jp .jp-msg>.jt-fk{position:static;opacity:1}.jp .jp-msg:has(>.jt-fk)>.jp-cites{grid-column:1/-1}
}

/* A single account menu remains reachable without a profile avatar or repeated identity row. */
.ed-account-control{display:inline-flex;align-items:center;justify-content:center;flex:none;min-width:72px;min-height:44px;padding:8px 12px;border:1px solid var(--line2);border-radius:999px;background:var(--card);color:var(--text);font:inherit;font-size:13px;font-weight:600;line-height:1.3;cursor:pointer;box-sizing:border-box}
.ed-account-control:focus-visible{outline:2px solid var(--acc);outline-offset:3px}
.pt-main>.pt-acct .ed-account-control{height:44px;min-height:44px;flex-shrink:0}
/* A collapsed portal sidebar still leaves the tablet rail beside the main header. */
@media(min-width:701px) and (max-width:900px){body.pt-hide .pt-app{grid-template-columns:52px minmax(0,1fr)!important}}
/* Keep every account action reachable in landscape and above an on-screen keyboard. */
.menu[data-k="account"]{max-height:calc(100dvh - 16px);overflow-y:auto;overscroll-behavior:contain;box-sizing:border-box}
.menu[data-k="account"] .mt button{width:44px;height:44px;min-width:44px;min-height:44px}

/* Agent Channel correction, 15 Oct 2026: use the estate's Electric tokens, not author-coloured fills. */
#ch-stream .ch-msg .grow[data-voice],html[data-look] #ch-stream .ch-msg .grow[data-voice]{
  background:var(--card)!important;color:var(--text)!important;border:1px solid var(--line2)!important;
  border-inline-start:3px solid var(--acc)!important;border-radius:16px!important;
  box-shadow:0 10px 28px -22px rgba(0,0,0,.78)!important
}
#ch-stream .ch-msg .grow[data-voice] :is(b,.mute,div){color:inherit!important;text-shadow:none!important}
#ch-stream .ch-msg .grow[data-voice] .chip{background:var(--pane2)!important;border:1px solid var(--line2)!important;color:var(--text)!important}
#ch-stream .ch-msg.sel .grow[data-voice]{box-shadow:0 0 0 2px var(--acc),0 10px 28px -22px rgba(0,0,0,.78)!important}
html[data-look="electric"] #ch-stream .ch-msg .grow[data-voice]{background:var(--e3)!important;color:var(--eText)!important;border-color:var(--eLine)!important;border-inline-start-color:var(--eAcc)!important}
html[data-look="electric"] #ch-stream .ch-msg .grow[data-voice] .chip{background:var(--e2)!important;border-color:var(--eLine)!important;color:var(--eText)!important}

/* Records open inline beneath the row or card (Owner, 18 Oct 2026); the docked inspector is no longer shown */
.ed-inline>td{padding:0!important;background:rgba(127,127,127,.06)}.ed-inline-box{padding:12px 16px 14px;font-size:13px}.ed-inline-box .ed-dh{display:flex;align-items:center;gap:8px;margin:0 0 6px}.ed-inline-box .ed-dh b{font-size:14px}.ed-inline-box .ed-x{margin-left:auto}
.ed-inline-box .ed-dl{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:4px 16px;margin:0 0 8px}.ed-inline-box .ed-dl dt{opacity:.7}.ed-inline-box .ed-acts{display:flex;flex-wrap:wrap;gap:8px}
.ed-drawer{display:none!important}body.ed-open{padding-right:0!important}

/* T13: canonical WS primitives. Page handlers, data and shared shell remain unchanged. */
.ws{--ws-primitive-control:var(--g-ctl,40px)}
/* Icon-bearing and explicitly boxed commands use one horizontal 40px control. */
.ws :is(.work,.pane) .cmd:not(.bw):not([hidden]):is(.btn,:has(>svg)){
  flex-direction:row!important;align-items:center;justify-content:center;
  gap:var(--g-gap,8px)!important;flex-shrink:0;min-width:var(--ws-primitive-control);
  height:var(--ws-primitive-control)!important;min-height:var(--ws-primitive-control)!important;
  padding:0 var(--g-ctl-pad,14px)!important;border-radius:var(--g-r,10px)!important;
  font-size:var(--g-t5,14px)!important;line-height:20px!important;font-weight:600;box-sizing:border-box;
}
.ws :is(.work,.pane) .cmd:not(.bw):not([hidden]):is(.btn,:has(>svg)) :is(svg,.i){
  width:var(--g-icon,18px)!important;height:var(--g-icon,18px)!important;flex:none;
}
/* Existing .bw commands are words, with a full phone tap area and no added box. */
.ws :is(.work,.pane) .cmd.bw{
  height:auto!important;min-height:20px!important;padding:0!important;border:0!important;border-radius:var(--g-r,10px)!important;
  background:transparent!important;box-shadow:none!important;font-size:var(--g-t5,14px)!important;
  line-height:20px!important;font-weight:600;
}
/* Native normal fields in div-based workspaces need the same geometry as form fields. */
.ws :is(.work,.pane) input:not([hidden]):not([type=hidden]):not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]):not([type=color]):not([type=button]):not([type=submit]):not([type=reset]):not([type=image]):not(.ed),
.ws :is(.work,.pane) select:not([hidden]):not([multiple]){
  height:var(--ws-primitive-control)!important;min-height:var(--ws-primitive-control)!important;
  max-width:100%;min-width:0;padding:0 12px!important;border-radius:var(--g-r,10px)!important;
  font-size:15px!important;line-height:20px!important;box-sizing:border-box;
}
.ws :is(.work,.pane) textarea:not([hidden]),
.ws :is(.work,.pane) select[multiple]:not([hidden]){
  min-height:var(--ws-primitive-control)!important;max-width:100%;min-width:0;
  padding:10px 12px!important;border-radius:var(--g-r,10px)!important;
  font-size:15px!important;line-height:20px!important;box-sizing:border-box;
}
/* A search wrapper is the field boundary; its native input keeps that one boundary. */
.ws :is(.work,.pane) .search:has(>input:not([hidden]):not([type=hidden]):not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]):not([type=color]):not([type=button]):not([type=submit]):not([type=reset]):not([type=image]):not(.ed)){
  height:var(--ws-primitive-control)!important;min-height:var(--ws-primitive-control)!important;
  padding:0!important;border-radius:var(--g-r,10px)!important;box-sizing:border-box;
}
.ws :is(.work,.pane) .search>input:not([hidden]):not([type=hidden]):not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]):not([type=color]):not([type=button]):not([type=submit]):not([type=reset]):not([type=image]):not(.ed){
  flex:1;min-width:0;width:100%;border:0!important;background:transparent;
  box-shadow:none!important;outline-offset:0;
}
/* Table cells establish the actual row minimum through their own height. Content may grow. */
.ws :is(.work,.pane) table :is(th,td){
  height:var(--g-row,46px)!important;padding-left:12px!important;padding-right:12px!important;
  font-size:var(--g-t6,13px)!important;line-height:18px!important;box-sizing:border-box;
}
/* A full-width expanded record keeps its intentional zero cell padding. */
.ws :is(.work,.pane) table tr.ed-inline>td{padding:0!important}
@media(max-width:600px){
  .ws{--ws-primitive-control:var(--g-tap,44px)}
  .ws :is(.work,.pane) .cmd.bw{min-height:var(--g-tap,44px)!important}
}
