/* CognitiveCoefficient ALPHA — layer themes + workspace components.
   Loaded after app.css. Color is reserved for state change: steady state is ink + hairline structure;
   violet marks conviction/decisions, electric blue marks live machinery, semantic tints only on events. */
:root{
  --fw-violet:#8B7CF7; --fw-blue:#5B87FF; --fw-violet-soft:rgba(139,124,247,.14); --fw-blue-soft:rgba(91,135,255,.12);
  --bank:#2FBF8F; --bank-soft:rgba(47,191,143,.12); --mkt:#D9A441; --mkt-soft:rgba(217,164,65,.13);
  --obs:#45C4E8;
}
/* ---------- workspace shell ---------- */
.fw-shell{display:grid;grid-template-columns:232px minmax(0,1fr);gap:0;min-height:70vh;border-top:1px solid var(--line)}
.fw-rail{border-right:1px solid var(--line);padding:18px 12px 30px;background:linear-gradient(180deg,rgba(139,124,247,.05),transparent 40%)}
.fw-rail .fwname{font-weight:700;font-size:.95rem;letter-spacing:-.01em;margin:0 8px 2px}
.fw-rail .fwmeta{font-family:var(--mono);font-size:.68rem;color:var(--ink-3);margin:0 8px 14px}
.fw-rail nav a{display:flex;align-items:center;gap:9px;padding:7px 9px;border-radius:8px;color:var(--ink-2);font-size:.86rem;font-weight:600;text-decoration:none}
.fw-rail nav a:hover{background:var(--bg-2);color:var(--ink);text-decoration:none}
.fw-rail nav a.on{background:var(--fw-violet-soft);color:var(--ink);box-shadow:inset 3px 0 0 var(--fw-violet)}
.fw-rail nav a .ic{width:18px;text-align:center;color:var(--fw-blue);font-family:var(--mono)}
.fw-rail nav a .ct{margin-left:auto;font-family:var(--mono);font-size:.68rem;color:var(--ink-3)}
.fw-rail .switch{margin:16px 8px 0;font-size:.78rem;color:var(--ink-3)}
.fw-rail .switch select{width:100%;margin-top:4px;background:var(--bg-2);color:var(--ink);border:1px solid var(--line-2);border-radius:7px;padding:5px 7px;font-size:.8rem}
.fw-main{padding:22px 28px 40px;min-width:0}
.fw-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px 16px;margin-bottom:14px}
.fw-head h1{font-size:1.5rem;margin:0}
.fw-head .kick{font-family:var(--mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--fw-violet)}
.fw-head .acts{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
.fw-ribbon{font-size:.78rem;color:var(--ink-3);border:1px dashed var(--line-2);border-radius:8px;padding:6px 10px;margin:0 0 14px;display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.fw-ribbon b{color:var(--ink-2)}
@media(max-width:900px){.fw-shell{grid-template-columns:1fr}.fw-rail{border-right:0;border-bottom:1px solid var(--line)}.fw-rail nav{display:flex;flex-wrap:wrap;gap:2px}.fw-main{padding:16px}}

/* ---------- tiles, queues, movers ---------- */
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:0 0 16px}
.tile{background:var(--bg-1);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.tile .l{font-size:.68rem;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);font-weight:700}
.tile .v{font-family:var(--mono);font-size:1.35rem;font-weight:600;margin:2px 0 0;font-variant-numeric:tabular-nums}
.tile .s{font-size:.74rem;color:var(--ink-3)}
.tile.live .v{color:var(--fw-blue)} .tile.conv .v{color:var(--fw-violet)}
.fw-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:14px}
.fw-grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:14px}
@media(max-width:1100px){.fw-grid,.fw-grid3{grid-template-columns:1fr}}
.fw-panel{background:var(--bg-1);border:1px solid var(--line);border-radius:12px;padding:14px 16px;min-width:0}
.fw-panel h3{font-size:.95rem;margin:0 0 8px;display:flex;align-items:center;gap:8px}
.fw-panel h3 .n{font-family:var(--mono);font-size:.72rem;color:var(--ink-3);font-weight:500}
.queue{list-style:none;margin:0;padding:0}
.queue li{display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:10px;align-items:start;padding:8px 0;border-top:1px solid var(--line)}
.queue li:first-child{border-top:0}
.queue .qk{font-family:var(--mono);font-size:.7rem;color:var(--fw-violet);padding-top:.2em}
.queue .qt{font-size:.88rem;font-weight:600}
.queue .qs{font-size:.76rem;color:var(--ink-3)}
.queue .qa{font-family:var(--mono);font-size:.7rem;color:var(--ink-3);white-space:nowrap}
.queue .qa .btn{font-size:.7rem;padding:.25em .6em}
.mover{display:flex;align-items:center;gap:10px;padding:7px 0;border-top:1px solid var(--line);font-size:.86rem}
.mover:first-child{border-top:0}
.mover .d{font-family:var(--mono);min-width:44px;text-align:right;font-weight:600}
.mover .d.up{color:var(--pos)} .mover .d.dn{color:var(--neg)} .mover .d.nu{color:var(--fw-blue)}
.mover .w{color:var(--ink-3);font-size:.76rem;margin-left:auto;max-width:48%;text-align:right}
.pulse{list-style:none;margin:0;padding:0;font-family:var(--mono);font-size:.74rem;max-height:340px;overflow:auto}
.pulse li{display:grid;grid-template-columns:58px 92px minmax(0,1fr);gap:8px;padding:4px 0;border-top:1px solid var(--line);color:var(--ink-2)}
.pulse li:first-child{border-top:0}
.pulse .t{color:var(--ink-4)} .pulse .k{color:var(--fw-blue);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pulse li.new{animation:pulsein .9s ease-out}
@keyframes pulsein{from{background:var(--fw-blue-soft)}to{background:transparent}}
@media (prefers-reduced-motion: reduce){.pulse li.new{animation:none}}
.stagechip{display:inline-block;font-family:var(--mono);font-size:.66rem;letter-spacing:.04em;padding:.15em .5em;border-radius:5px;border:1px solid var(--line-2);color:var(--ink-2);background:var(--bg-2)}
.stagechip.funded{border-color:var(--fw-violet);color:var(--fw-violet)} .stagechip.built,.stagechip.verified{border-color:var(--fw-blue);color:var(--fw-blue)} .stagechip.company{border-color:var(--pos);color:var(--pos)} .stagechip.gated{border-color:var(--neg);color:var(--neg)}
.verd{font-weight:700;font-size:.78rem}
.verd.b{color:var(--pos)} .verd.f{color:var(--fw-blue)} .verd.e{color:var(--fw-violet)} .verd.w{color:var(--warn)} .verd.p{color:var(--ink-3)} .verd.g{color:var(--neg)}
.conv-spark{vertical-align:middle}

/* ---------- ring ---------- */
.ring-wrap{display:flex;align-items:center;justify-content:center}
.ring text{font-family:var(--mono);font-size:9.5px;fill:var(--ink-3)}
.ring .st{fill:var(--bg-2);stroke:var(--line-2);stroke-width:1.2}
.ring .st.active{fill:var(--fw-blue-soft);stroke:var(--fw-blue)}
.ring .st.stuck{stroke:var(--warn)}
.ring .cnt{font-size:11px;font-weight:700;fill:var(--ink)}
.ring .center{font-family:var(--mono);font-size:11px;fill:var(--ink-2)}
.ring .center.big{font-size:20px;font-weight:700;fill:var(--fw-violet)}
.ring .orbit{fill:var(--fw-blue)}
@media (prefers-reduced-motion: no-preference){.ring .orbit-g{animation:orbit 30s linear infinite;transform-origin:50% 50%}@keyframes orbit{to{transform:rotate(360deg)}}}

/* ---------- fingerprint + fault line ---------- */
.fp text{font-family:var(--mono);font-size:8.5px;fill:var(--ink-3)}
.fp .bar{fill:var(--fw-violet);opacity:.85} .fp .bar.derived{fill:var(--fw-blue)} .fp .bar.model{fill:var(--obs)} .fp .bar.low{opacity:.45}
.fp .grid{fill:none;stroke:var(--line);stroke-width:1}
.fp .pillar{font-size:8px;fill:var(--ink-2);font-weight:700;letter-spacing:.06em}
.fault{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:3px;margin:8px 0}
.fault .g{height:30px;border:1px solid var(--line-2);border-radius:4px;background:var(--bg-2);position:relative;font-family:var(--mono);font-size:.62rem;color:var(--ink-3);display:flex;align-items:center;justify-content:center;overflow:hidden}
.fault .g.pass{border-color:var(--pos);color:var(--pos)} .fault .g.fail{border-color:var(--neg);color:var(--neg);background:linear-gradient(135deg,transparent 45%,var(--neg) 46%,var(--neg) 48%,transparent 49%),var(--bg-2)} .fault .g.unknown{border-style:dashed}
.legend{font-size:.72rem;color:var(--ink-3);display:flex;gap:12px;flex-wrap:wrap;margin-top:6px}
.legend i{display:inline-block;width:9px;height:9px;border-radius:2px;vertical-align:middle;margin-right:4px}
.room-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:14px}
@media(max-width:1000px){.room-grid{grid-template-columns:1fr}}
.kv{display:grid;grid-template-columns:auto minmax(0,1fr);gap:3px 12px;font-size:.84rem}
.kv dt{color:var(--ink-3)} .kv dd{margin:0}
.pbar{height:6px;background:var(--bg-3);border-radius:3px;overflow:hidden;margin-top:3px}
.pbar i{display:block;height:100%;background:var(--fw-violet)} .pbar i.post{background:var(--fw-blue)}
.idxtable td.why{font-size:.8rem;color:var(--ink-2)}
.prov{font-family:var(--mono);font-size:.62rem;padding:.1em .4em;border-radius:4px;border:1px solid var(--line-2)}
.prov.llm{color:var(--fw-violet)} .prov.derived{color:var(--fw-blue)} .prov.model{color:var(--obs)}
.mode-toggle{display:inline-flex;border:1px solid var(--line-2);border-radius:8px;overflow:hidden}
.mode-toggle a{padding:5px 11px;font-size:.78rem;font-weight:600;color:var(--ink-3);text-decoration:none}
.mode-toggle a.on{background:var(--fw-violet-soft);color:var(--ink)}

/* ---------- boards ---------- */
.board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
@media(max-width:1100px){.board{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.board{grid-template-columns:1fr}}
.col h4{font-size:.78rem;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);margin:0 0 8px;display:flex;justify-content:space-between}
.xcard{background:var(--bg-1);border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:8px;font-size:.83rem}
.xcard b{display:block;font-size:.86rem;margin-bottom:2px}
.xcard .m{color:var(--ink-3);font-size:.76rem}
.xcard form{margin-top:6px;display:flex;gap:6px;flex-wrap:wrap}
.xcard .res.supported{color:var(--pos)} .xcard .res.refuted{color:var(--neg)} .xcard .res.inconclusive{color:var(--warn)}
.rule{border:1px solid var(--warn);background:rgba(251,191,36,.07);border-radius:10px;padding:10px 14px;font-size:.86rem;margin:0 0 14px}
.rule.ok{border-color:var(--pos);background:rgba(52,211,153,.06)}

/* ---------- org graph ---------- */
.org{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}
.seat{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--bg-1);font-size:.82rem}
.seat.human{border-left:3px solid var(--warn)} .seat.agent{border-left:3px solid var(--fw-blue)} .seat.hybrid{border-left:3px solid var(--fw-violet)}
.seat b{display:block} .seat .m{color:var(--ink-3);font-size:.74rem}
.ladder{display:inline-flex;gap:2px;margin-top:6px}
.ladder i{width:14px;height:6px;border-radius:2px;background:var(--bg-3);border:1px solid var(--line-2)} .ladder i.on{background:var(--fw-violet);border-color:var(--fw-violet)}

/* ---------- demo center ---------- */
.demo-hall{border:1px solid var(--fw-blue);border-radius:14px;padding:22px 24px;background:linear-gradient(135deg,rgba(91,135,255,.10),rgba(139,124,247,.06) 60%,transparent);margin:14px 0}
.demo-room{border:1px solid var(--line);border-radius:12px;padding:16px 18px;background:var(--bg-1)}
.demo-room.bank{border-color:var(--bank)} .demo-room.mkt{border-color:var(--mkt)}
.demo-ribbon{font-family:var(--mono);font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--warn);border:1px solid rgba(251,191,36,.35);border-radius:6px;padding:4px 9px;display:inline-block}
.stage{background:#05070c;border:1px solid var(--line-2);border-radius:14px;min-height:460px;padding:26px 30px;color:#e9eaf2;position:relative;overflow:hidden}
.stage .cap{font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--fw-blue)}
.stage h2{font-size:1.5rem;margin:.3em 0 .6em;color:#fff}
.stage .console{font-family:var(--mono);font-size:.76rem;line-height:1.5;color:#b9bdd0;max-height:260px;overflow:hidden}
.stage .console div{opacity:0;animation:rise .35s ease-out forwards}
@keyframes rise{to{opacity:1}}
@media (prefers-reduced-motion: reduce){.stage .console div{animation:none;opacity:1}}
.stage .bar{position:absolute;left:0;bottom:0;height:3px;background:var(--fw-violet);width:0;transition:width .4s linear}
.stage .wm{position:absolute;right:16px;top:14px;font-family:var(--mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-4)}
.stage .verdicts{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.stage .verdicts span{border:1px solid var(--line-2);border-radius:8px;padding:6px 10px;font-size:.8rem}
.stage .verdicts span.gated{border-color:var(--neg);color:var(--neg)}
.stage .ctl{position:absolute;right:16px;bottom:14px;display:flex;gap:8px}
.steps{list-style:none;margin:0;padding:0;counter-reset:s}
.steps li{display:grid;grid-template-columns:28px minmax(0,1fr);gap:10px;padding:10px 0;border-top:1px solid var(--line);counter-increment:s}
.steps li::before{content:counter(s);font-family:var(--mono);color:var(--fw-violet);font-weight:700}
.steps li:first-child{border-top:0}

/* ---------- observatory home v2 ---------- */
.obs-hero{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:30px;align-items:center;padding:36px 0 10px}
@media(max-width:900px){.obs-hero{grid-template-columns:1fr}}
.lens{display:inline-flex;border:1px solid var(--line-2);border-radius:999px;overflow:hidden;margin:10px 0}
.lens button{background:transparent;border:0;color:var(--ink-2);padding:8px 16px;font-weight:700;font-size:.84rem;cursor:pointer}
.lens button.on{background:var(--obs);color:#06121a}
.insights{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin:12px 0 4px}
.insight{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--bg-1)}
.insight .k{font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-weight:700}
.insight .v{font-family:var(--mono);font-size:1.25rem;font-weight:600;margin:3px 0 0}
.insight .c{font-size:.8rem;color:var(--ink-2);margin-top:3px}
.fresh{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;font-size:.8rem;color:var(--ink-3);border:1px dashed var(--line-2);border-radius:10px;padding:8px 12px;margin:14px 0}
.fresh b{color:var(--ink-2)} .fresh .ok{color:var(--pos)}
.prov-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--ink-4);margin-left:5px;vertical-align:middle;cursor:help}
.prov-dot.measured{background:var(--pos)} .prov-dot.est{background:var(--warn)}
.top10{list-style:none;margin:0;padding:0}
.top10 li{display:grid;grid-template-columns:22px minmax(0,1fr) 60px;gap:8px;align-items:center;padding:5px 0;border-top:1px solid var(--line);font-size:.86rem}
.top10 li:first-child{border-top:0}
.top10 .r{font-family:var(--mono);color:var(--ink-3)} .top10 .v{font-family:var(--mono);text-align:right;color:var(--obs)}
.top10 li .b{height:4px;background:var(--bg-3);border-radius:2px;grid-column:2;margin-top:-2px} .top10 li .b i{display:block;height:100%;background:var(--obs);border-radius:2px}
