/* ═══ The Recovered Graph — instrument panel over plate glass ═══ */

:root{
  /* wet slate — cold dark ground, plate glass not terminal black */
  --void:#080c10;
  --deep:#0e1620;
  --slate:#16212c;
  --lift:#1f2d3a;
  --edge:#2b3b49;
  --edge-soft:#1c2833;

  /* plate white, slightly cool */
  --chalk:#eaf0f2;
  --chalk-soft:#adbcc4;
  --chalk-mute:#71838d;

  /* phosphor — the instrument colour. live readouts, active state, demo output */
  --phos:#4fd6ae;
  --phos-dim:#2d8a71;
  --phos-glow:rgba(79,214,174,.16);

  /* oxide — the argument colour. section marks, emphasis, the seam */
  --oxide:#c9673a;
  --oxide-lift:#e0885b;

  /* instrument secondaries */
  --flow:#5f9fd4;
  --brass:#d8a94e;
  --alarm:#cf4f43;

  --sp1:6px; --sp2:12px; --sp3:20px; --sp4:32px; --sp5:52px; --sp6:84px; --sp7:130px;
  --wrap:1240px; --read:68ch;
  --mono:'JetBrains Mono',ui-monospace,monospace;
  --body:'Newsreader',Georgia,serif;
  --disp:'Instrument Serif','Newsreader',Georgia,serif;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:96px}
body{
  background:var(--void);color:var(--chalk);
  font-family:var(--body);font-size:19px;line-height:1.66;font-weight:300;
  font-optical-sizing:auto;-webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}html{scroll-behavior:auto}}

/* plate texture — barely there */
body::after{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:99;opacity:.028;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

a{color:var(--phos);text-decoration:none}
code{font-family:var(--mono);font-size:.8em;color:var(--phos);background:rgba(79,214,174,.07);
  border:1px solid rgba(79,214,174,.16);border-radius:3px;padding:1px 5px;white-space:nowrap}
strong{font-weight:600;color:#fff}
em{font-style:italic}
sub,sup{font-size:.7em}
:focus-visible{outline:2px solid var(--phos);outline-offset:3px;border-radius:2px}

/* ═══ instrument strip ═══ */
.strip{position:fixed;top:0;left:0;right:0;z-index:60;background:rgba(8,12,16,.94);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--edge-soft)}
.strip-in{max-width:var(--wrap);margin:0 auto;padding:8px var(--sp3);display:flex;align-items:center;
  gap:var(--sp3);font-family:var(--mono);font-size:.63rem;letter-spacing:.13em;text-transform:uppercase;color:var(--chalk-mute)}
.strip-id{color:var(--chalk-soft)}
.strip-life{color:var(--phos);min-width:11ch}
.strip-bar{flex:1;height:2px;background:var(--edge);position:relative;overflow:hidden;max-width:340px}
.strip-bar i{position:absolute;inset:0 100% 0 0;background:var(--phos);transition:right .5s cubic-bezier(.2,.8,.2,1);
  box-shadow:0 0 10px var(--phos-glow)}
.strip-runs b{color:var(--oxide-lift);font-weight:700}

/* ═══ nav ═══ */
.nav{position:fixed;top:33px;left:0;right:0;z-index:59;background:rgba(14,22,32,.9);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--edge-soft)}
.nav-in{max-width:var(--wrap);margin:0 auto;padding:7px var(--sp3);display:flex;gap:var(--sp3);
  flex-wrap:wrap;font-family:var(--mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase}
.nav a{color:var(--chalk-mute);border-bottom:1px solid transparent;padding-bottom:1px;transition:color .18s,border-color .18s}
.nav a:hover,.nav a.on{color:var(--phos);border-color:var(--phos)}

/* ═══ hero ═══ */
.hero{position:relative;min-height:100svh;display:flex;align-items:center;
  padding:150px var(--sp3) var(--sp6);overflow:hidden;border-bottom:1px solid var(--edge-soft)}
#hero-canvas{position:absolute;inset:0;width:100%;height:100%;opacity:.5}
.hero::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse at 30% 45%,transparent 0%,var(--void) 78%)}
.hero-in{position:relative;z-index:2;max-width:var(--wrap);margin:0 auto;width:100%}
.eyebrow{font-family:var(--mono);font-size:.65rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--phos);margin-bottom:var(--sp4)}
.hero h1{font-family:var(--disp);font-weight:400;font-size:clamp(3.6rem,13vw,10.5rem);line-height:.86;
  letter-spacing:-.025em;color:#fff}
.hero h1 em{font-style:italic;color:var(--oxide-lift)}
.hero-lede{max-width:60ch;margin-top:var(--sp4);font-size:clamp(1.02rem,1.7vw,1.24rem);color:var(--chalk-soft)}
.hero-lede+.hero-lede{margin-top:var(--sp2);color:var(--chalk)}
.hero-meta{display:flex;flex-wrap:wrap;gap:var(--sp1) var(--sp3);margin-top:var(--sp5);
  font-family:var(--mono);font-size:.62rem;letter-spacing:.1em;color:var(--chalk-mute);text-transform:uppercase}
.hero-meta span{border-left:1px solid var(--oxide);padding-left:9px}
.scroll-cue{display:inline-block;margin-top:var(--sp5);font-family:var(--mono);font-size:.66rem;
  letter-spacing:.2em;text-transform:uppercase;color:var(--chalk-mute)}
.scroll-cue:hover{color:var(--phos)}

/* ═══ blocks ═══ */
.blk{max-width:var(--wrap);margin:0 auto;padding:var(--sp7) var(--sp3);border-bottom:1px solid var(--edge-soft)}
.blk-head{margin-bottom:var(--sp5);position:relative;padding-left:78px}
.bid{position:absolute;left:0;top:.5em;font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;
  color:var(--oxide);border:1px solid var(--oxide);border-radius:2px;padding:2px 7px}
.blk h2{font-family:var(--disp);font-weight:400;font-size:clamp(2.3rem,5.6vw,4.1rem);line-height:1;
  letter-spacing:-.02em;color:#fff}
.dek{margin-top:var(--sp2);font-size:1.14rem;font-style:italic;color:var(--oxide-lift);max-width:56ch}
.prose{max-width:var(--read);margin-left:78px}
.prose p{margin-bottom:var(--sp3)}
.prose p:last-child{margin-bottom:0}
.kicker{border-left:2px solid var(--oxide);padding-left:var(--sp3);font-size:1.1rem;color:#fff;margin-top:var(--sp4)}
@media(max-width:820px){.blk-head,.prose{padding-left:0;margin-left:0}.bid{position:static;display:inline-block;margin-bottom:var(--sp2)}}

/* ═══ instrument rig ═══ */
.rig{margin:var(--sp5) 0;background:linear-gradient(180deg,var(--deep),var(--void));
  border:1px solid var(--edge);border-radius:4px;overflow:hidden;
  box-shadow:0 24px 60px -30px #000,inset 0 1px 0 rgba(255,255,255,.04)}
.rig-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp3);flex-wrap:wrap;
  padding:var(--sp2) var(--sp3);background:var(--slate);border-bottom:1px solid var(--edge)}
.rig-title{font-family:var(--mono);font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:var(--chalk-soft)}
.rig-ctl{display:flex;gap:var(--sp1);flex-wrap:wrap;align-items:center}

.btn{font-family:var(--mono);font-size:.64rem;letter-spacing:.09em;text-transform:uppercase;
  background:var(--lift);color:var(--chalk-soft);border:1px solid var(--edge);border-radius:2px;
  padding:6px 11px;cursor:pointer;transition:.16s}
.btn:hover{border-color:var(--phos-dim);color:var(--phos);background:#22323f}
.btn.primary{background:var(--phos-dim);border-color:var(--phos);color:#04140f;font-weight:700}
.btn.primary:hover{background:var(--phos);color:#04140f}
.btn.ghost{background:transparent}
.btn:active{transform:translateY(1px)}
.btn.on{border-color:var(--oxide);color:var(--oxide-lift)}

.fld{font-family:var(--mono);font-size:.62rem;letter-spacing:.09em;text-transform:uppercase;
  color:var(--chalk-mute);display:flex;align-items:center;gap:7px}
.fld input[type=text],.fld input[type=number],.fld select{
  font-family:var(--mono);font-size:.72rem;background:var(--void);color:var(--phos);
  border:1px solid var(--edge);border-radius:2px;padding:5px 8px;text-transform:none;letter-spacing:0}
.fld input[type=number]{width:74px}
.fld.wide{flex:1;min-width:220px}
.fld.wide input{flex:1;width:100%}
.fld.chk{cursor:pointer}
.fld input[type=checkbox]{accent-color:var(--phos);width:14px;height:14px}

canvas{display:block;width:100%;background:var(--void)}
#field-canvas,#rule-canvas,#colony-canvas{height:420px}
#river-canvas,#map-canvas{height:400px}
.rig-split{display:grid;grid-template-columns:1fr 300px}
.rig-split canvas{height:400px}
@media(max-width:860px){.rig-split{grid-template-columns:1fr}}

.panel{border-left:1px solid var(--edge);padding:var(--sp3);background:var(--deep)}
.pnl-h{font-family:var(--mono);font-size:.58rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--chalk-mute);margin-bottom:var(--sp2);display:flex;justify-content:space-between;align-items:center;gap:8px}
.tag{color:var(--phos);border:1px solid var(--phos-dim);border-radius:2px;padding:1px 5px;font-size:.92em;letter-spacing:.06em}
.bigval{font-family:var(--disp);font-size:3.2rem;line-height:1;color:var(--phos);margin-bottom:var(--sp3)}
.hint{font-size:.84rem;color:var(--chalk-mute);line-height:1.55;font-family:var(--body)}
.tbl{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:.7rem;margin-bottom:var(--sp3)}
.tbl td,.tbl th{padding:4px 6px;border-bottom:1px solid var(--edge-soft);text-align:left;color:var(--chalk-soft)}
.tbl th{color:var(--chalk-mute);font-size:.58rem;letter-spacing:.12em;text-transform:uppercase;font-weight:400}
.mute{color:var(--chalk-mute)}

/* readout — the signature: every instrument terminates in machine voice */
.readout{display:flex;align-items:baseline;gap:var(--sp2);padding:9px var(--sp3);
  background:#060a0d;border-top:1px solid var(--edge);font-family:var(--mono);font-size:.68rem;
  color:var(--phos);min-height:36px}
.r-lbl{color:var(--chalk-mute);font-size:.58rem;letter-spacing:.16em;text-transform:uppercase;flex-shrink:0}
.r-val{color:var(--phos);line-height:1.5}
.r-val .hl{color:var(--oxide-lift);font-weight:700}
.readout.done{background:linear-gradient(90deg,rgba(79,214,174,.07),#060a0d 60%)}

/* ═══ rule bits ═══ */
.rulebits{display:flex;gap:2px;padding:var(--sp2) var(--sp3);background:var(--deep);
  border-bottom:1px solid var(--edge);flex-wrap:wrap}
.rb{display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer;padding:3px 5px;border-radius:2px}
.rb:hover{background:var(--lift)}
.rb-n{display:flex;gap:1px}
.rb-c{width:9px;height:9px;border:1px solid var(--edge)}
.rb-c.on{background:var(--chalk)}
.rb-o{width:9px;height:9px;border:1px solid var(--phos-dim)}
.rb-o.on{background:var(--phos)}

/* ═══ ski trace ═══ */
.ski-io{display:flex;gap:var(--sp1);align-items:center;padding:var(--sp2) var(--sp3);
  background:var(--deep);border-bottom:1px solid var(--edge);flex-wrap:wrap}
.trace{padding:var(--sp3);max-height:320px;overflow:auto;font-family:var(--mono);font-size:.76rem;line-height:1.9}
.trace div{display:flex;gap:var(--sp2);border-bottom:1px solid var(--edge-soft);padding:2px 0}
.trace .st{color:var(--chalk-mute);min-width:4ch;flex-shrink:0}
.trace .ex{color:var(--chalk)}
.trace .ex b{color:var(--oxide-lift);font-weight:700;background:rgba(201,103,58,.14);border-radius:2px}
.trace .rl{color:var(--phos);margin-left:auto;flex-shrink:0;font-size:.9em}

/* ═══ little machine ═══ */
.mach{display:grid;grid-template-columns:1fr 1fr 1.25fr;gap:1px;background:var(--edge)}
.mach-col{background:var(--deep);padding:var(--sp3);min-width:0}
@media(max-width:960px){.mach{grid-template-columns:1fr}}
#mach-tpl{width:100%;height:110px;font-family:var(--mono);font-size:.72rem;line-height:1.6;
  background:var(--void);color:var(--phos);border:1px solid var(--edge);border-radius:2px;padding:9px;resize:vertical}
.cursor{height:110px;overflow:auto;font-family:var(--mono);font-size:.63rem;
  border:1px solid var(--edge);background:var(--void);border-radius:2px}
.cursor table{width:100%;border-collapse:collapse}
.cursor td{padding:2px 5px;border-bottom:1px solid var(--edge-soft);color:var(--chalk-soft);white-space:nowrap}
.cursor tr.hot td{background:rgba(79,214,174,.14);color:var(--phos)}
.emit{height:110px;overflow:auto;font-family:var(--mono);font-size:.68rem;line-height:1.65;
  background:var(--void);border:1px solid var(--edge);border-radius:2px;padding:9px;
  color:var(--chalk-soft);white-space:pre-wrap;word-break:break-word}
.emit .ok{color:var(--phos)}
.emit .dbg{color:var(--chalk-mute)}
.metric{margin-top:var(--sp2);font-family:var(--mono);font-size:.6rem;letter-spacing:.12em;
  text-transform:uppercase;color:var(--chalk-mute);display:flex;gap:7px;align-items:baseline}
.metric b{color:var(--oxide-lift);font-size:1.5rem;font-family:var(--disp);letter-spacing:0}

/* ═══ timeline ═══ */
.tl{list-style:none;margin:var(--sp5) 0 var(--sp5) 78px;max-width:var(--read);position:relative}
.tl::before{content:"";position:absolute;left:5px;top:8px;bottom:8px;width:1px;
  background:linear-gradient(var(--alarm),var(--alarm) 62%,var(--phos))}
.tl-i{position:relative;padding:0 0 var(--sp4) var(--sp4)}
.tl-i::before{content:"";position:absolute;left:0;top:8px;width:11px;height:11px;border-radius:50%;
  background:var(--void);border:2px solid var(--phos)}
.tl-i.kill::before{border-color:var(--alarm)}
.tl-i.live::before{background:var(--phos);box-shadow:0 0 12px var(--phos-glow)}
.tl-d{font-family:var(--mono);font-size:.66rem;letter-spacing:.11em;text-transform:uppercase;color:var(--phos);display:block;margin-bottom:5px}
.tl-i.kill .tl-d{color:var(--alarm)}
.tl-i p{color:var(--chalk-soft);font-size:.98rem}
@media(max-width:820px){.tl{margin-left:0}}

/* ═══ ownership resolver ═══ */
.own{padding:var(--sp3);display:grid;gap:var(--sp2)}
.own-card{border:1px solid var(--edge);border-left:2px solid var(--oxide);background:var(--deep);padding:var(--sp3)}
.own-card.vest{border-left-color:var(--alarm)}
.own-card.esc{border-left-color:var(--phos)}
.own-k{font-family:var(--mono);font-size:.58rem;letter-spacing:.16em;text-transform:uppercase;color:var(--chalk-mute);margin-bottom:6px}
.own-v{font-family:var(--disp);font-size:1.65rem;line-height:1.15;color:#fff;margin-bottom:7px}
.own-c{font-family:var(--mono);font-size:.68rem;color:var(--phos);margin-bottom:7px}
.own-n{font-size:.92rem;color:var(--chalk-soft);line-height:1.55}

/* ═══ violations ═══ */
.viol{list-style:none;margin-bottom:var(--sp3);font-family:var(--mono);font-size:.66rem;line-height:1.7}
.viol li{color:var(--alarm);padding-left:13px;position:relative}
.viol li::before{content:"×";position:absolute;left:0}
.viol li.mute{color:var(--chalk-mute)}
.viol li.mute::before{content:"·"}

/* ═══ provenance ═══ */
.provwrap{overflow-x:auto}
.prov{width:100%;border-collapse:collapse;font-size:.88rem;min-width:760px}
.prov th{font-family:var(--mono);font-size:.56rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--chalk-mute);text-align:left;padding:10px var(--sp3);border-bottom:1px solid var(--edge);
  background:var(--slate);font-weight:400;position:sticky;top:0}
.prov td{padding:9px var(--sp3);border-bottom:1px solid var(--edge-soft);color:var(--chalk-soft);vertical-align:top}
.prov tr:hover td{background:rgba(79,214,174,.04)}
.prov td:first-child{color:#fff;font-weight:500}
.prov td:nth-child(2){font-family:var(--mono);font-size:.76rem;color:var(--chalk-soft)}
.prov td:nth-child(3){font-family:var(--mono);font-size:.8rem;color:var(--oxide-lift);white-space:nowrap}
.k-i{font-family:var(--mono);font-size:.58rem;letter-spacing:.1em;text-transform:uppercase;
  border:1px solid var(--brass);color:var(--brass);border-radius:2px;padding:1px 5px;white-space:nowrap}
.k-r{font-family:var(--mono);font-size:.58rem;letter-spacing:.1em;text-transform:uppercase;
  border:1px solid var(--edge);color:var(--chalk-mute);border-radius:2px;padding:1px 5px;white-space:nowrap}

/* ═══ ledger ═══ */
.ledger{padding:var(--sp3);font-family:var(--mono);font-size:.68rem}
.led-r{display:grid;grid-template-columns:52px 1fr 116px 1fr;gap:var(--sp2);padding:6px 0;
  border-bottom:1px solid var(--edge-soft);align-items:baseline}
.led-r .i{color:var(--oxide)}
.led-r .n{color:var(--chalk-soft)}
.led-r .s{color:var(--chalk-mute);font-size:.9em;letter-spacing:.08em;text-transform:uppercase}
.led-r .s.ok{color:var(--phos)}
.led-r .h{color:var(--chalk-mute);word-break:break-all;font-size:.9em}
@media(max-width:760px){.led-r{grid-template-columns:44px 1fr;gap:4px}.led-r .h{grid-column:1/-1}}

/* ═══ footer ═══ */
footer{max-width:var(--read);margin:0 auto;padding:var(--sp6) var(--sp3) var(--sp7);color:var(--chalk-soft);font-size:.95rem}
footer strong{color:var(--phos)}
.fine{margin-top:var(--sp3);font-family:var(--mono);font-size:.62rem;letter-spacing:.09em;
  text-transform:uppercase;color:var(--chalk-mute);line-height:1.9}

/* reveal */
.blk{opacity:0;transform:translateY(14px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.8,.2,1)}
.blk.vis{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.blk{opacity:1;transform:none}}

/* ═══════════ v2 additions ═══════════ */

/* space badges — structural, not decorative: every rig declares its space */
.space{font-family:var(--mono);font-size:.55rem;letter-spacing:.14em;text-transform:uppercase;
  border-radius:2px;padding:2px 7px;margin-left:6px;white-space:nowrap}
.space.lat{color:var(--brass);border:1px solid var(--brass);background:rgba(216,169,78,.07)}
.space.gra{color:var(--flow);border:1px solid var(--flow);background:rgba(95,159,212,.07)}

/* the two-space declaration */
.spaces{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp3);margin:var(--sp5) 0 var(--sp5) 78px;max-width:var(--read)}
@media(max-width:820px){.spaces{margin-left:0}}
@media(max-width:620px){.spaces{grid-template-columns:1fr}}
.sp{background:var(--deep);border:1px solid var(--edge);border-radius:6px;padding:var(--sp3);position:relative;overflow:hidden}
.sp::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px}
.sp.lat::before{background:var(--brass)}
.sp.gra::before{background:var(--flow)}
.sp-k{font-family:var(--mono);font-size:.55rem;letter-spacing:.16em;text-transform:uppercase;color:var(--chalk-mute)}
.sp h3{font-family:var(--disp);font-weight:400;font-size:1.9rem;line-height:1.1;margin:4px 0 6px;color:#fff}
.sp p{font-size:.92rem;color:var(--chalk-soft);margin-bottom:var(--sp2)}
.sp ul{list-style:none;font-family:var(--mono);font-size:.62rem;line-height:1.85;color:var(--chalk-mute);
  columns:2;column-gap:var(--sp3)}
.sp.lat li::marker,.sp.gra li::marker{content:""}

/* inline proof rigs sit tighter than full instruments */
.rig.inline{margin:var(--sp4) 0 var(--sp4) 78px;max-width:var(--read)}
@media(max-width:820px){.rig.inline{margin-left:0;max-width:none}}
canvas.short{height:200px}
#alcuin-canvas{height:430px}
.fld input[type=range]{accent-color:var(--phos);width:180px}

/* polyglot target tabs */
.ptabs{display:flex;flex-wrap:wrap;gap:3px;padding:var(--sp2) var(--sp3);background:var(--deep);
  border-bottom:1px solid var(--edge)}
.ptab{font-family:var(--mono);font-size:.6rem;letter-spacing:.06em;background:transparent;
  color:var(--chalk-mute);border:1px solid var(--edge);border-radius:2px;padding:4px 8px;cursor:pointer;transition:.15s}
.ptab:hover{color:var(--phos);border-color:var(--phos-dim)}
.ptab.on{background:var(--phos-dim);border-color:var(--phos);color:#04140f;font-weight:700}
.emit.tall{height:420px;margin:var(--sp3);width:calc(100% - var(--sp3)*2)}

/* mastermind */
.mm{padding:var(--sp3);display:flex;flex-direction:column;align-items:center;gap:var(--sp2)}
.mm-hist{display:flex;flex-direction:column;gap:5px;min-height:30px}
.mm-row{display:flex;align-items:center;gap:5px}
.mm-peg{width:24px;height:24px;border-radius:50%;display:inline-block;border:1px solid rgba(0,0,0,.5);
  box-shadow:inset 0 -2px 4px rgba(0,0,0,.35)}
.mm-peg.sel{cursor:pointer;width:30px;height:30px}
.mm-peg.sel.on{outline:2px solid var(--phos);outline-offset:2px}
.mm-peg.pal{cursor:pointer;width:20px;height:20px}
.mm-fb{display:inline-flex;gap:2px;margin-left:8px;width:44px;flex-wrap:wrap}
.mm-fb i{width:8px;height:8px;border-radius:50%;display:inline-block}
.mm-fb i.b{background:var(--phos)}
.mm-fb i.w{background:#6d7d87}
.mm-cur{display:flex;gap:6px;padding:var(--sp2) 0;border-top:1px solid var(--edge);border-bottom:1px solid var(--edge)}
.mm-pal{display:flex;gap:6px}

/* chess */
.chess{display:grid;grid-template-columns:repeat(8,1fr);width:min(460px,92%);margin:var(--sp3) auto;
  border:1px solid var(--edge);aspect-ratio:1}
.chess .sq{display:flex;align-items:center;justify-content:center;font-size:clamp(18px,4.4vw,30px);
  line-height:1;cursor:pointer;background:#233340;color:#f2f6f7;user-select:none;transition:background .12s}
.chess .sq.d{background:#16212c}
.chess .sq.sel{background:var(--phos-dim)}
.chess .sq.tgt{box-shadow:inset 0 0 0 2px var(--phos)}
.chess .sq:hover{background:#2c3f4f}

/* ═══════════ b13 recurrence ═══════════ */

/* concordance matrix — the cell grid is the argument, so it gets room */
.ccwrap{overflow-x:auto;padding:0}
table.cc{border-collapse:collapse;width:100%;min-width:1080px;font-size:.78rem}
table.cc th,table.cc td{border:1px solid var(--edge-soft);padding:8px 10px;vertical-align:top;text-align:left}
.cc-ch{font-family:var(--mono);font-size:.58rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--chalk-mute);background:var(--slate);font-weight:400;cursor:pointer;white-space:nowrap;
  position:sticky;top:0;z-index:2}
.cc-ch:hover{color:var(--phos)}
.cc-ch.on{color:var(--phos);background:var(--lift)}
.cc-ch.new{color:var(--oxide-lift)}
.cc-ch.est{color:var(--brass)}
.cc-rh{font-family:var(--body);font-size:.86rem;font-weight:500;color:#fff;background:var(--deep);
  cursor:pointer;width:200px;min-width:200px;position:sticky;left:0;z-index:1}
.cc-rh:hover{color:var(--phos)}
table.cc tr.on .cc-rh{color:var(--phos)}
table.cc td{color:var(--chalk-soft);font-size:.76rem;line-height:1.5;min-width:150px}
table.cc td.hi{background:rgba(79,214,174,.07)}
table.cc td.est{background:rgba(216,169,78,.045)}
table.cc td.cc-e{color:var(--chalk-mute);text-align:center;font-family:var(--mono)}
.cc-rh .space{display:block;margin:5px 0 0;width:max-content}

/* axelrod table */
.axwrap{padding:var(--sp3);overflow-x:auto}
table.ax{width:100%;border-collapse:collapse;font-size:.85rem;min-width:560px}
table.ax th{font-family:var(--mono);font-size:.56rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--chalk-mute);text-align:left;padding:6px 10px;border-bottom:1px solid var(--edge);font-weight:400}
table.ax td{padding:6px 10px;border-bottom:1px solid var(--edge-soft);color:var(--chalk-soft)}
table.ax tr.nice td:nth-child(2){color:#fff}
table.ax td.num{font-family:var(--mono);color:var(--phos);text-align:right}
table.ax td.barc{width:34%}
table.ax td.barc i{display:block;height:7px;background:linear-gradient(90deg,var(--phos-dim),var(--phos));border-radius:2px}
table.ax tr:not(.nice) td.barc i{background:linear-gradient(90deg,#7a3f30,var(--oxide))}
table.ax td.cite{font-size:.74rem;color:var(--chalk-mute)}
.nb{font-family:var(--mono);font-size:.52rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--phos);border:1px solid var(--phos-dim);border-radius:2px;padding:1px 4px;margin-left:5px}

/* chunk compiler */
.ck{padding:var(--sp3)}
.ck-h{font-family:var(--mono);font-size:.56rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--chalk-mute);margin:var(--sp2) 0 8px}
.ck-h:first-child{margin-top:0}
.ck-s{display:flex;flex-wrap:wrap;gap:3px;max-height:120px;overflow:auto;padding-bottom:var(--sp2);
  border-bottom:1px solid var(--edge-soft)}
.ck-t{font-family:var(--mono);font-size:.6rem;padding:2px 6px;border-radius:2px;
  background:var(--slate);color:var(--chalk-mute);border:1px solid var(--edge-soft)}
.ck-t.c{background:var(--phos-dim);color:#04140f;border-color:var(--phos);font-weight:700;cursor:help}
.ck-c{display:flex;gap:10px;align-items:baseline;font-family:var(--mono);font-size:.66rem;
  padding:4px 0;border-bottom:1px solid var(--edge-soft);flex-wrap:wrap}
.ck-n{color:var(--phos);font-weight:700;min-width:3.2em}
.ck-x{color:var(--oxide-lift);min-width:3.4em}
.ck-e{color:var(--chalk-soft);flex:1;min-width:200px}
.ck-d{color:var(--chalk-mute);font-size:.9em}
.ckm{font-family:var(--mono);font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;color:var(--chalk-mute)}
.ckm b{color:var(--oxide-lift);font-weight:700}

/* ═══════════ b17 admission ═══════════ */

.regnote{padding:var(--sp2) var(--sp3);background:var(--deep);border-bottom:1px solid var(--edge);
  font-size:.86rem;color:var(--chalk-soft);line-height:1.55}
.prose .register-view{display:contents}
.prose.reg-alt p:last-child{margin-bottom:0}
.prose.reg-alt:empty{display:none}

/* schema admission rows */
.sv{padding:var(--sp3);font-family:var(--mono);font-size:.68rem;max-height:340px;overflow:auto}
.sv-r{display:grid;grid-template-columns:52px 118px 1fr;gap:var(--sp2);padding:5px 0;
  border-bottom:1px solid var(--edge-soft);align-items:baseline}
.sv-r .sv-id{color:var(--oxide)}
.sv-r .sv-s{color:var(--phos);letter-spacing:.08em;text-transform:uppercase;font-size:.9em}
.sv-r .sv-m{color:var(--chalk-mute)}
.sv-r.quar{background:rgba(207,79,67,.09);border-left:2px solid var(--alarm);padding-left:8px}
.sv-r.quar .sv-s{color:var(--alarm)}
.sv-r.quar .sv-m{color:var(--chalk-soft)}
.sv-r.warn{background:rgba(216,169,78,.07);border-left:2px solid var(--brass);padding-left:8px}
.sv-r.warn .sv-s{color:var(--brass)}
@media(max-width:620px){.sv-r{grid-template-columns:46px 1fr}.sv-r .sv-m{grid-column:1/-1}}

/* chained ledger */
.led-r .h em{font-style:normal;color:var(--chalk-mute);opacity:.6;letter-spacing:.1em;
  text-transform:uppercase;font-size:.82em;margin-right:3px}
.led-r.brk{background:rgba(207,79,67,.09)}
.led-r.brk .s{color:var(--alarm)}
.led-r.brk .h{color:var(--alarm)}
.led-r.tam{border-left:2px solid var(--alarm);padding-left:8px}

/* review fixes */
@media(max-width:900px){table.cc{min-width:760px;font-size:.7rem}
  .cc-rh{width:140px;min-width:140px;font-size:.78rem}
  table.cc td{min-width:110px;font-size:.68rem}}
.mm-reveal{font-family:var(--mono);font-size:.64rem;color:var(--oxide-lift);
  letter-spacing:.1em;text-transform:uppercase;margin-top:6px}

/* ═══════════ shell: acts, modes, reader, index ═══════════ */

.strip-act{color:var(--oxide-lift);letter-spacing:.12em;white-space:nowrap}
.modes{display:flex;gap:2px;margin-left:auto}
.mbtn{font-family:var(--mono);font-size:.58rem;letter-spacing:.11em;text-transform:uppercase;
  background:transparent;color:var(--chalk-mute);border:1px solid var(--edge);border-radius:2px;
  padding:3px 9px;cursor:pointer;transition:.15s}
.mbtn:hover{color:var(--phos);border-color:var(--phos-dim)}
.mbtn.on{background:var(--phos-dim);border-color:var(--phos);color:#04140f;font-weight:700}
.mbtn.idx{border-color:var(--oxide);color:var(--oxide-lift)}
.mbtn.idx:hover{background:var(--oxide);color:#0e0605}
@media(max-width:760px){.strip-act,.strip-id{display:none}.strip-bar{max-width:90px}}

/* act dividers in the scroll flow */
.actdiv{max-width:var(--wrap);margin:0 auto;padding:var(--sp7) var(--sp3) var(--sp5);
  border-bottom:1px solid var(--edge-soft)}
.actdiv-in{max-width:var(--read);margin-left:78px;position:relative}
@media(max-width:820px){.actdiv-in{margin-left:0}}
.act-n{font-family:var(--mono);font-size:.62rem;letter-spacing:.24em;text-transform:uppercase;color:var(--oxide)}
.act-t{font-family:var(--disp);font-weight:400;font-size:clamp(2.6rem,7vw,5rem);line-height:.95;
  letter-spacing:-.025em;color:#fff;margin:6px 0 var(--sp2)}
.act-d{font-size:1.05rem;color:var(--chalk-soft);max-width:56ch}
.act-c{display:inline-block;margin-top:var(--sp3);font-family:var(--mono);font-size:.6rem;
  letter-spacing:.14em;text-transform:uppercase;color:var(--chalk-mute);
  border-top:1px solid var(--edge);padding-top:7px}
.actdiv.hidden,.blk.hidden{display:none}

/* reader bar */
.rdr{position:fixed;bottom:0;left:0;right:0;z-index:58;background:rgba(14,22,32,.96);
  backdrop-filter:blur(10px);border-top:1px solid var(--edge);transform:translateY(110%);
  transition:transform .3s cubic-bezier(.2,.8,.2,1)}
.rdr.on{transform:none}
.rdr-in{max-width:var(--wrap);margin:0 auto;padding:10px var(--sp3);display:flex;
  align-items:center;gap:var(--sp3)}
.rdr-meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;text-align:center}
.rdr-pos{font-family:var(--mono);font-size:.58rem;letter-spacing:.14em;text-transform:uppercase;color:var(--chalk-mute)}
.rdr-pos b{color:var(--phos)}
.rdr-t{font-family:var(--disp);font-size:1.1rem;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rdr-bar{display:block;height:2px;background:var(--edge);position:relative;overflow:hidden}
.rdr-fill{position:absolute;inset:0 100% 0 0;background:var(--phos);transition:right .3s}
.rdr .btn:disabled{opacity:.3;cursor:default}
body.mode-reader main{padding-bottom:90px}
body.mode-reader .blk{opacity:1;transform:none}

/* index overlay */
.idx{position:fixed;inset:0;z-index:70;background:rgba(8,12,16,.93);backdrop-filter:blur(6px);
  display:none;overflow:auto;padding:var(--sp4) var(--sp3)}
.idx.open{display:block}
body.noscroll{overflow:hidden}
.idx-in{max-width:1120px;margin:0 auto}
.idx-h{display:flex;justify-content:space-between;align-items:center;gap:var(--sp3);
  font-family:var(--mono);font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--chalk-mute);border-bottom:1px solid var(--edge);padding-bottom:var(--sp2);margin-bottom:var(--sp4)}
.idx-act{margin-bottom:var(--sp5)}
.idx-ah{display:flex;align-items:baseline;gap:var(--sp2);margin-bottom:var(--sp2)}
.idx-ah b{font-family:var(--disp);font-weight:400;font-size:1.7rem;color:#fff}
.idx-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:var(--sp2)}
.idx-c{text-align:left;background:var(--deep);border:1px solid var(--edge);border-radius:5px;
  padding:var(--sp2) var(--sp3) var(--sp3);cursor:pointer;display:flex;flex-direction:column;
  gap:5px;transition:.16s;font-family:inherit;color:inherit}
.idx-c:hover{border-color:var(--phos);background:var(--slate);transform:translateY(-2px)}
.idx-id{font-family:var(--mono);font-size:.56rem;letter-spacing:.14em;color:var(--oxide)}
.idx-t{font-family:var(--disp);font-size:1.35rem;line-height:1.05;color:#fff}
.idx-d{font-size:.8rem;line-height:1.45;color:var(--chalk-mute)}
.idx-f{display:flex;flex-wrap:wrap;gap:4px;margin-top:auto;padding-top:6px}
.idx-f i{font-family:var(--mono);font-size:.52rem;letter-spacing:.1em;text-transform:uppercase;
  font-style:normal;border-radius:2px;padding:2px 5px}
.idx-f i.lat{color:var(--brass);border:1px solid var(--brass)}
.idx-f i.gra{color:var(--flow);border:1px solid var(--flow)}
.idx-f i.ins{color:var(--phos);border:1px solid var(--phos-dim)}
.idx .idx-f:last-child{margin-top:var(--sp3);color:var(--chalk-mute);font-family:var(--mono);
  font-size:.62rem;letter-spacing:.08em;display:block}
.kb{font-family:var(--mono);background:var(--lift);border:1px solid var(--edge);border-radius:3px;
  padding:1px 6px;color:var(--chalk-soft);font-size:.9em}

/* signing panel */
.sg{padding:var(--sp3);font-family:var(--mono);font-size:.7rem}
.sg-r{display:grid;grid-template-columns:110px 1fr;gap:var(--sp2);padding:5px 0;
  border-bottom:1px solid var(--edge-soft);align-items:baseline}
.sg-k{color:var(--chalk-mute);font-size:.58rem;letter-spacing:.14em;text-transform:uppercase}
.sg-v{color:var(--chalk)}
.sg-v.mono{color:var(--phos)}
.sg-v.brk{word-break:break-all}
.sg-e{color:var(--chalk-mute)}
.sg-x{margin-top:var(--sp2);padding:8px 10px;border-radius:3px;font-size:.76rem}
.sg-x.ok{background:rgba(79,214,174,.1);border:1px solid var(--phos-dim);color:var(--phos)}
.sg-x.bad{background:rgba(207,79,67,.1);border:1px solid var(--alarm);color:var(--alarm)}
@media(max-width:620px){.sg-r{grid-template-columns:1fr}}

/* ═══════════ shell discoverability ═══════════ */
.hero-go{display:flex;flex-wrap:wrap;gap:var(--sp2);align-items:center;margin-top:var(--sp5)}
.hero-go .scroll-cue{margin-top:0}
.hero-btn{font-family:var(--mono);font-size:.64rem;letter-spacing:.12em;text-transform:uppercase;
  background:var(--phos-dim);color:#04140f;border:1px solid var(--phos);border-radius:2px;
  padding:9px 15px;cursor:pointer;font-weight:700;transition:.16s}
.hero-btn:hover{background:var(--phos)}
.hero-btn.ghost{background:transparent;color:var(--oxide-lift);border-color:var(--oxide);font-weight:400}
.hero-btn.ghost:hover{background:var(--oxide);color:#0e0605}
.modes-l{font-family:var(--mono);font-size:.55rem;letter-spacing:.18em;text-transform:uppercase;
  color:var(--chalk-mute);margin-right:5px}
@media(max-width:760px){.modes-l{display:none}}

/* act dividers earn their space in reader mode too */
body.mode-reader .actdiv{display:none}

/* ═══════════ organelles: address, journal, compose ═══════════ */

.tools{display:inline-flex;align-items:center;gap:6px;margin-left:var(--sp2)}
.ad-in{font-family:var(--mono);font-size:.62rem;background:var(--void);color:var(--phos);
  border:1px solid var(--edge);border-radius:2px;padding:4px 8px;width:190px;letter-spacing:0;text-transform:none}
.ad-in:focus{border-color:var(--phos);outline:none}
.ad-in::placeholder{color:var(--chalk-mute);opacity:.7}
.ad-out{font-family:var(--mono);font-size:.58rem;letter-spacing:.08em;min-width:8ch}
.ad-out.ok{color:var(--phos)}
.ad-out.bad{color:var(--alarm)}
.addr-hit{animation:addrflash 1.6s ease-out}
@keyframes addrflash{0%{background:rgba(79,214,174,.28)}100%{background:transparent}}
@media(max-width:900px){.tools .ad-in{width:110px}.ad-out{display:none}}

/* journal drawer */
.jr{position:fixed;right:0;top:0;bottom:0;width:min(560px,94vw);z-index:75;
  background:rgba(8,12,16,.985);border-left:1px solid var(--edge);
  transform:translateX(101%);transition:transform .3s cubic-bezier(.2,.8,.2,1);
  display:flex;flex-direction:column}
.jr.open{transform:none}
.jr-h{display:flex;justify-content:space-between;align-items:center;gap:var(--sp2);
  padding:var(--sp3);border-bottom:1px solid var(--edge);font-family:var(--mono);
  font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:var(--chalk-mute)}
.jr-x{display:flex;gap:5px}
.jr-body{flex:1;overflow:auto;padding:var(--sp2) var(--sp3);font-family:var(--mono);font-size:.64rem}
.jr-r{display:grid;grid-template-columns:70px 58px 78px 1fr;gap:8px;padding:4px 0;
  border-bottom:1px solid var(--edge-soft);align-items:baseline}
.jr-t{color:var(--chalk-mute)}
.jr-k{letter-spacing:.1em;text-transform:uppercase;font-size:.9em}
.jr-r.state .jr-k{color:var(--chalk-mute)}
.jr-r.result .jr-k{color:var(--phos)}
.jr-r.exec .jr-k{color:var(--oxide-lift)}
.jr-r.address .jr-k{color:var(--flow)}
.jr-r.boot .jr-k{color:var(--brass)}
.jr-i{color:var(--oxide)}
.jr-m{color:var(--chalk-soft);line-height:1.5}
@media(max-width:620px){.jr-r{grid-template-columns:62px 1fr}.jr-i,.jr-m{grid-column:1/-1}}

/* compose */
.cp{padding:var(--sp3)}
.cp-cols{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp3)}
@media(max-width:820px){.cp-cols{grid-template-columns:1fr}}
.cp-c{background:var(--deep);border:1px solid var(--edge);border-radius:4px;padding:var(--sp3)}
.cp-h{font-family:var(--mono);font-size:.56rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--chalk-mute);margin:var(--sp3) 0 8px;display:flex;gap:8px;align-items:baseline}
.cp-h:first-child{margin-top:0}
.cp-a{color:var(--phos);letter-spacing:.04em;text-transform:none}
.cp-hash{font-family:var(--mono);font-size:.58rem;color:var(--oxide-lift);margin-bottom:var(--sp2)}
.cp-p{font-size:.86rem;line-height:1.55;color:var(--chalk-soft);margin-bottom:7px;
  padding:5px 7px;border-left:2px solid var(--edge-soft);border-radius:2px}
.cp-p[contenteditable]{border-left-color:var(--phos-dim);background:rgba(79,214,174,.04);cursor:text}
.cp-p[contenteditable]:focus{outline:none;border-left-color:var(--phos);background:rgba(79,214,174,.09)}
.cp-e{font-family:var(--mono);font-size:.66rem;color:var(--chalk-mute)}
.cp-d{font-family:var(--mono);font-size:.68rem;border:1px solid var(--edge);border-radius:4px;overflow:hidden}
.cp-l{display:flex;gap:9px;padding:4px 9px;line-height:1.5;border-bottom:1px solid var(--edge-soft)}
.cp-o{color:var(--chalk-mute);min-width:1ch}
.cp-l.same{color:var(--chalk-mute)}
.cp-l.del{background:rgba(207,79,67,.10);color:var(--alarm)}
.cp-l.del .cp-o{color:var(--alarm)}
.cp-l.add{background:rgba(79,214,174,.10);color:var(--phos)}
.cp-l.add .cp-o{color:var(--phos)}
.cp-x{font-family:var(--mono);font-size:.64rem;line-height:1.7;color:var(--phos);
  background:var(--void);border:1px solid var(--edge);border-radius:3px;padding:9px;
  white-space:pre-wrap;word-break:break-all}
