:root{
  --bg:#07090a; --panel:#0d1112; --panel2:#121819; --line:#1f2a2a;
  --text:#c9d4cf; --dim:#7d8b86; --green:#4fd18b; --green-dim:#2a6e4b;
  --red:#e0524a; --amber:#e8b44c; --blue:#6aa8e0; --violet:#b48ae6;
  --mono:"IBM Plex Mono",ui-monospace,Consolas,monospace;
  --sans:"IBM Plex Sans",system-ui,Segoe UI,sans-serif;
  --prime:#4fd18b; --echo:#6aa8e0; --casper:#e8b44c; --out:#b48ae6;
}
*{box-sizing:border-box}
html{scroll-padding-top:90px}
body.gm{--hdr:126px}
body.gm .op,body.gm .handler [id]{scroll-margin-top:126px}
.handler [id]{scroll-margin-top:90px}
body{margin:0;background:var(--bg);color:var(--text);font:16px/1.6 var(--sans)}
a{color:var(--green);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{font-family:var(--mono);font-weight:600;color:#e6efe9;line-height:1.25}
h1{font-size:1.6rem;margin:.2em 0 .4em}
h2{font-size:1.15rem;margin:2em 0 .6em;padding-bottom:.3em;border-bottom:1px solid var(--line)}
h3{font-size:1rem;margin:1.4em 0 .4em}
p{margin:.6em 0}
code{font-family:var(--mono);font-size:.9em}

/* header */
.top{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:16px;padding:8px 16px;background:rgba(7,9,10,.94);border-bottom:1px solid var(--line);backdrop-filter:blur(6px)}
.brand{display:flex;align-items:center;gap:10px;color:var(--text)}
.brand:hover{text-decoration:none}
.brand b{display:block;font-family:var(--mono);letter-spacing:.18em;color:var(--green);font-size:.95rem}
.brand small{display:block;font-family:var(--mono);color:var(--dim);font-size:.72rem;letter-spacing:.08em}
.emblem{width:44px;height:44px;border:0;pointer-events:none;background:var(--bg)}
.nav{display:flex;gap:4px;margin-left:auto;flex-wrap:wrap}
.nav a{font-family:var(--mono);font-size:.85rem;color:var(--dim);padding:6px 10px;border:1px solid transparent;border-radius:3px}
.nav a:hover{color:var(--text);text-decoration:none;border-color:var(--line)}
.nav a.on{color:var(--green);border-color:var(--green-dim)}
.nav a.gm-link{color:var(--amber)}
.menu-btn{display:none;margin-left:auto;background:none;border:1px solid var(--line);color:var(--text);font-size:1.2rem;padding:4px 10px;border-radius:3px}
.gm-bar{position:sticky;top:61px;z-index:9;background:#2a1f08;color:var(--amber);font-family:var(--mono);font-size:.8rem;padding:6px 16px;border-bottom:1px solid #4a3812}
.gm-bar a{color:var(--amber);text-decoration:underline}
.gm-bar button{background:none;border:1px solid var(--amber);color:var(--amber);font:inherit;padding:1px 8px;cursor:pointer;border-radius:3px}

main{max-width:980px;margin:0 auto;padding:24px 16px 64px;outline:none}
.foot{max-width:980px;margin:0 auto;padding:24px 16px 40px;color:var(--dim);font-size:.8rem;border-top:1px solid var(--line)}

/* common bits */
.eyebrow{font-family:var(--mono);font-size:.75rem;letter-spacing:.12em;color:var(--dim);text-transform:uppercase}
.lede{font-size:1.08rem;color:#dfe8e3}
.muted{color:var(--dim)}
.crumbs{font-family:var(--mono);font-size:.8rem;color:var(--dim);margin-bottom:8px}
.crumbs a{color:var(--dim)}
.tag{display:inline-block;font-family:var(--mono);font-size:.7rem;letter-spacing:.06em;padding:1px 7px;border:1px solid var(--line);border-radius:2px;color:var(--dim);white-space:nowrap}
.tag.prime{color:var(--prime);border-color:currentColor}
.tag.echo{color:var(--echo);border-color:currentColor}
.tag.casper{color:var(--casper);border-color:currentColor}
.tag.out{color:var(--out);border-color:currentColor}
.st{font-family:var(--mono);font-size:.72rem;font-weight:600;letter-spacing:.06em}
.st.KIA{color:var(--red)} .st.ALIVE{color:var(--green)} .st.MIA{color:var(--amber)} .st.TRANSFORMED{color:var(--violet)} .st.UNKNOWN{color:var(--dim)}
.kv{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px;font-size:.92rem;margin:12px 0}
.kv dt{font-family:var(--mono);color:var(--dim);font-size:.8rem;padding-top:2px}
.kv dd{margin:0}

.redact{background:#e8eee9;color:transparent;border-radius:1px;user-select:none;letter-spacing:-.05em;font-family:var(--mono);font-size:.85em;cursor:help}
.gmtext{background:rgba(232,180,76,.14);color:var(--amber);border-bottom:1px dashed var(--amber);padding:0 2px}

/* cards & lists */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:12px}
.card{display:block;background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:14px 16px;color:var(--text)}
a.card:hover{border-color:var(--green-dim);text-decoration:none;background:var(--panel2)}
.card h3{margin:.2em 0 .3em}
.card p{font-size:.92rem;color:#b2bfb9;margin:.3em 0}
.card .more{font-family:var(--mono);font-size:.78rem;color:var(--green);margin-top:.6em}
.card .meta{font-family:var(--mono);font-size:.72rem;color:var(--dim)}

/* home */
.hero{display:grid;grid-template-columns:200px 1fr;gap:24px;align-items:center;margin:8px 0 24px}
.hero iframe{width:200px;height:200px;border:0;background:var(--bg);pointer-events:none}
.cells{width:100%;border-collapse:collapse;font-size:.92rem}
.cells td,.cells th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}
.cells th{font-family:var(--mono);font-size:.72rem;color:var(--dim);font-weight:400;letter-spacing:.08em}
.cellname{font-family:var(--mono);color:var(--green)}
.cellname.none{color:var(--dim)}

/* file */
.file-head{border:1px solid var(--line);background:var(--panel);padding:16px 18px;border-radius:4px}
.file-head .code{font-family:var(--mono);color:var(--green);font-size:.8rem;letter-spacing:.14em}
.toc{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 0}
.toc a{font-family:var(--mono);font-size:.78rem;border:1px solid var(--line);padding:3px 9px;border-radius:3px;color:var(--text)}
.toc a:hover{border-color:var(--green-dim);text-decoration:none}
.op{margin-top:28px;scroll-margin-top:90px}
.op h2{display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.op h2 .when{font-size:.75rem;color:var(--dim);font-weight:400;white-space:nowrap}
.op.flash h2{color:var(--green)}
.log p{padding-left:14px;border-left:2px solid var(--line)}
.ending{border-left:3px solid var(--red);background:#140c0c;padding:10px 16px;margin:16px 0}
.gmbox{border:1px dashed #4a3812;background:#14100a;padding:10px 16px;margin:16px 0;border-radius:3px}
.gmbox .eyebrow{color:var(--amber)}

/* timeline */
.legend{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 20px}
.legend button{font-family:var(--mono);font-size:.75rem;background:none;border:1px solid currentColor;padding:3px 10px;border-radius:2px;cursor:pointer}
.legend button.off{opacity:.35}
.tl{list-style:none;margin:0;padding:0;position:relative}
.tl:before{content:"";position:absolute;left:118px;top:0;bottom:0;width:1px;background:var(--line)}
.tl li{display:grid;grid-template-columns:104px 30px 1fr;align-items:start;padding:8px 0}
.tl .y{font-family:var(--mono);font-size:.78rem;color:var(--dim);text-align:right;padding-top:3px}
.tl .dot{position:relative;z-index:1;width:11px;height:11px;border-radius:50%;margin:6px auto 0;background:var(--prime);box-shadow:0 0 0 3px var(--bg)}
.tl .dot.echo{background:var(--echo)} .tl .dot.casper{background:var(--casper)} .tl .dot.out{background:var(--out)}
.tl .t a{color:var(--text)}
.tl .t a:hover{color:var(--green)}
.tl .t .src{display:block;font-family:var(--mono);font-size:.72rem;color:var(--dim)}
.tl li.era{padding:18px 0 6px}
.tl li.era .t{font-family:var(--mono);color:var(--green);letter-spacing:.1em;font-size:.8rem}

/* threads */
.thread{background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:6px 18px 14px;margin-bottom:16px}
.steps{list-style:none;margin:8px 0 0;padding:0;counter-reset:s}
.steps li{display:grid;grid-template-columns:96px 1fr;gap:12px;padding:8px 0;border-top:1px solid var(--line)}
.steps li:first-child{border-top:0}
.steps .when{font-family:var(--mono);font-size:.78rem;color:var(--green);padding-top:2px}
.steps a.go{font-family:var(--mono);font-size:.75rem;margin-left:6px;white-space:nowrap}

/* worlds */
.lanes{display:grid;gap:12px}
.lanecard{border:1px solid var(--line);border-left:4px solid var(--prime);background:var(--panel);padding:12px 16px;border-radius:3px}
.lanecard.echo{border-left-color:var(--echo)} .lanecard.casper{border-left-color:var(--casper)} .lanecard.out{border-left-color:var(--out)}
.lanecard h3{margin:.1em 0 .3em}
.diagram{width:100%;height:auto;margin:16px 0;background:var(--panel);border:1px solid var(--line);border-radius:4px}

/* people */
.filters{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 16px}
.filters button,.btn{font-family:var(--mono);font-size:.78rem;background:var(--panel);border:1px solid var(--line);color:var(--text);padding:4px 10px;border-radius:3px;cursor:pointer}
.filters button.on{border-color:var(--green);color:var(--green)}
.btn:hover{border-color:var(--green-dim)}
.btn.amber{border-color:var(--amber);color:var(--amber)}
input[type=password],input[type=text],input[type=search],select,textarea{font:inherit;background:#050707;color:var(--text);border:1px solid var(--line);border-radius:3px;padding:7px 10px}
textarea{width:100%;font-size:.88rem}

/* GM */
.unlock{max-width:420px;margin:40px auto;border:1px solid #4a3812;background:#110d06;padding:22px;border-radius:4px}
.unlock input{width:100%;margin:10px 0}
.err{color:var(--red);font-family:var(--mono);font-size:.8rem}
table.ops{width:100%;border-collapse:collapse;font-size:.88rem}
table.ops td,table.ops th{padding:7px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
table.ops th{font-family:var(--mono);font-size:.7rem;color:var(--dim);font-weight:400;position:sticky;top:96px;background:var(--bg)}
table.ops select{font-size:.8rem;padding:3px 6px}
table.ops tr.ran td:first-child{border-left:3px solid var(--green)}
table.ops tr.prepped td:first-child,table.ops tr.partial td:first-child{border-left:3px solid var(--amber)}
table.ops .pitch{color:#aab6b1;font-size:.84rem}
table.ops .angle{color:var(--amber);font-size:.82rem}
.handler .secret{border:1px dashed #4a3812;background:#14100a;padding:8px 14px;margin:10px 0;color:#e9d7b0}
.handler .lane{border-left:3px solid var(--line);padding:4px 12px;margin:8px 0}
.handler .toc{display:flex;flex-wrap:wrap;gap:6px}
.handler .toc .h{width:100%;font-family:var(--mono);font-size:.7rem;color:var(--dim);margin-top:6px}
.handler table{border-collapse:collapse;width:100%;font-size:.88rem}
.handler td,.handler th{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:top}
.handler .eyebrow{margin-top:20px}

/* connection map */
body.wide main{max-width:1400px}
.map-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0}
.map-q{font:inherit;font-size:.9rem;background:var(--panel);border:1px solid var(--line);color:var(--text);padding:6px 10px;border-radius:3px;width:200px}
.map-chips{display:flex;flex-wrap:wrap;gap:6px}
.map-chips button,.map-reset{font-family:var(--mono);font-size:.75rem;background:var(--panel);border:1px solid var(--line);color:var(--text);padding:4px 9px;border-radius:3px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.map-chips button span{color:var(--dim)}
.map-chips button.off{opacity:.4}
.map-chips button.off svg path{fill:var(--dim)}
.map-reset{margin-left:auto}
.map-wrap{position:relative;border:1px solid var(--line);border-radius:4px;background:radial-gradient(circle at 50% 45%,#0e1514 0,var(--bg) 70%);height:calc(100vh - 250px);min-height:460px;overflow:hidden}
.map-svg{width:100%;height:100%;display:block;touch-action:none;cursor:grab;user-select:none}
.map-svg:active{cursor:grabbing}
.m-e{stroke:#2a3a38;opacity:.8}
.m-e.thread{stroke:#b48ae6;opacity:.35}
.m-e.gm{stroke:var(--amber);stroke-dasharray:4 3}
.m-n{cursor:pointer;outline:none}
.m-n .m-shape{stroke:var(--bg);stroke-width:1.5}
.m-n.gm .m-shape{stroke:var(--amber)}
.m-lab{font:10px var(--mono);fill:var(--dim);text-anchor:middle;pointer-events:none;display:none;paint-order:stroke;stroke:var(--bg);stroke-width:3px}
.m-lab.big{display:block;font-size:11px;fill:var(--text)}
.map-svg.zoomed .m-lab{display:block}
.map-svg.focus .m-n{opacity:.18}
.map-svg.focus .m-e{opacity:.06}
.map-svg.focus .m-n.on{opacity:1}
.map-svg.focus .m-n.on .m-lab{display:block;fill:var(--text)}
.map-svg.focus .m-n.me .m-lab{font-weight:600;fill:#fff}
.map-svg.focus .m-n.me .m-shape{stroke:#fff;stroke-width:2}
.map-svg.focus .m-e.on{opacity:.95}
.map-svg.focus .m-e.thread.on{opacity:.8}
.m-n:focus-visible .m-shape{stroke:#fff;stroke-width:2}
.map-panel{position:absolute;top:0;right:0;bottom:0;width:360px;overflow:auto;background:rgba(13,17,18,.96);border-left:1px solid var(--line);padding:14px 16px;font-size:.9rem}
.map-panel h3{margin:.2em 0 .2em;font-size:1.05rem}
.map-sub{font-size:.8rem;font-family:var(--mono)}
.map-x{position:absolute;top:6px;right:8px;background:none;border:0;color:var(--dim);font-size:1.4rem;cursor:pointer;line-height:1}
.map-grp{margin-top:12px}
.map-grp b{display:block;font-family:var(--mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);margin-bottom:4px}
.map-grp button{display:flex;align-items:center;gap:7px;width:100%;text-align:left;background:none;border:0;color:var(--text);font:inherit;font-size:.86rem;padding:3px 0;cursor:pointer}
.map-grp button:hover{color:var(--green)}
.map-grp button.gm{color:var(--amber)}
.map-link{padding:6px 0;border-bottom:1px solid var(--line)}
.map-link button{font-weight:600}
.map-link .why{font-size:.82rem;line-height:1.45;color:var(--text);margin:2px 0 4px 18px}
.map-link .why.gm{color:var(--amber)}
.map-link .src{font-family:var(--mono);font-size:.7rem;color:var(--dim);white-space:nowrap}
.m-e.board{stroke:#7a5a5a;opacity:.55}
.m-e.member{stroke:#24302f;opacity:.7}
.m-walk-path{fill:none;stroke:#b48ae6;stroke-width:2.2;stroke-dasharray:6 5;opacity:.85;pointer-events:none}
.m-walk-now{stroke:#e6d9ff;stroke-width:3.2;pointer-events:none;stroke-linecap:round}
.map-svg.walking .m-n.me .m-shape{stroke:#fff;stroke-width:2.5}
.walk-bar{height:3px;background:var(--line);margin:8px 0 10px;border-radius:2px;overflow:hidden}
.walk-bar span{display:block;height:100%;background:#b48ae6;transition:width .4s}
.walk-now{border-left:3px solid #b48ae6;padding:2px 0 2px 10px}
.walk-now.gm{border-left-color:var(--amber)}
.walk-now.gm p{color:var(--amber)}
.walk-when{font-family:var(--mono);font-size:.75rem;color:var(--dim)}
.walk-now p{margin:.35em 0}
.walk-tgt{display:inline-flex;align-items:center;gap:7px;background:var(--panel2);border:1px solid var(--line);color:var(--text);font:inherit;font-size:.85rem;padding:3px 9px;border-radius:3px;cursor:pointer}
.walk-tgt:hover{border-color:var(--green-dim)}
.walk-nav{display:flex;justify-content:space-between;gap:8px;margin:12px 0}
.walk-nav .btn[disabled]{opacity:.35;cursor:default}
.walk-list{list-style:none;margin:6px 0;padding:0;border-top:1px solid var(--line)}
.walk-list li button{display:block;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--line);color:var(--dim);font:inherit;font-size:.8rem;line-height:1.4;padding:5px 2px;cursor:pointer}
.walk-list li button span{font-family:var(--mono);font-size:.7rem;color:var(--dim);margin-right:4px}
.walk-list li.done button{color:var(--text)}
.walk-list li.on button{color:#e6d9ff;background:rgba(180,138,230,.12)}
.walk-list li.gm button{color:var(--amber)}
.map-hint{position:absolute;left:10px;bottom:8px;font-family:var(--mono);font-size:.7rem;color:var(--dim);pointer-events:none}

@media (max-width:760px){
  .map-wrap{height:calc(100vh - 230px);min-height:380px}
  .map-panel{top:auto;left:0;width:auto;max-height:55%;border-left:0;border-top:1px solid var(--line)}
  .map-q{width:100%}
  .map-chips{flex-wrap:nowrap;overflow-x:auto;width:100%;padding-bottom:2px}
  .map-chips button{flex:none}
  .map-reset{margin-left:0}
  .map-hint{display:none}
  .menu-btn{display:block}
  .nav{display:none;position:absolute;top:60px;left:0;right:0;background:var(--bg);border-bottom:1px solid var(--line);padding:8px 16px;flex-direction:column}
  .nav.open{display:flex}
  .hero{grid-template-columns:1fr}
  .hero iframe{width:140px;height:140px}
  .tl:before{left:78px}
  .tl li{grid-template-columns:64px 30px 1fr}
  .tl .y{font-size:.68rem}
  .steps li{grid-template-columns:1fr;gap:2px}
  .kv{grid-template-columns:1fr}
  table.ops .hide-sm{display:none}
}
