/* ---------- v9: after the launch (polls, sealed letters, recovery, hand devices, the stall) ---------- */
.v9 .twin{display:grid;grid-template-columns:1.05fr .95fr;gap:28px;align-items:start}
.v9 .device{min-width:0}
.v9fig{margin:0;border:1px solid var(--line);background:linear-gradient(180deg,rgba(10,14,39,.85),rgba(5,5,16,.85));padding:18px 18px 12px}
.v9fig svg{width:100%;height:auto;display:block;font-family:Mono,ui-monospace,monospace}
.v9fig figcaption{font-size:11px;color:var(--grey);letter-spacing:.06em;margin-top:8px;border-top:1px solid var(--line);padding-top:8px}
.v9fig.wide{margin:28px 0}
.v9fig .ps{fill:#6b8ac0;font-size:11px;letter-spacing:.12em}
.v9fig .pt{fill:#e8f4ff;font-family:Disp,'Inter Display',sans-serif;font-weight:300;font-size:19px}
.v9fig .pc{fill:#9ef0ff;font-size:12px}
.v9fig .pl{fill:none;stroke:#2a4a7a;stroke-width:1.6;stroke-dasharray:4 7;animation:dgrun11 1.6s linear infinite}
.v9fig .pdot{fill:#9ef0ff;filter:drop-shadow(0 0 6px #9ef0ff)}
.pollfig .pbox{fill:#0f1a3a;stroke:#3d70c3}
.pollfig .ptrack{fill:#0b1430;stroke:#1f3a6e}
.pollfig .pbt{fill:#e8f4ff;font-size:13px}
.pollfig .pfill{transform-box:fill-box;transform-origin:left;transform:scaleX(0);transition:transform 1.6s cubic-bezier(.2,.8,.2,1)}
.v9fig.on .pfill{transform:scaleX(1)}.v9fig.on .f2{transition-delay:.25s}.v9fig.on .f3{transition-delay:.5s}
.letfig .l1{fill:rgba(15,26,58,.5);stroke:#1f3a6e}.letfig .l2{fill:rgba(18,32,74,.7);stroke:#3d70c3}.letfig .l3{fill:#0a1236;stroke:#9ef0ff;filter:drop-shadow(0 0 10px rgba(158,240,255,.35))}
.letfig .lkey{fill:none;stroke:#ffcf9a;stroke-width:2.4;animation:lk 3.6s ease-in-out infinite}
@keyframes lk{0%,100%{transform:translateX(0)}50%{transform:translateX(-14px)}}
.doorfig .dv{fill:#0f1a3a;stroke:#3d70c3}.doorfig .dvs{fill:#060a1c;stroke:#1f3a6e}
.doorfig .door path{fill:#0a1236;stroke:#7fbcff;stroke-width:2}
.doorfig .door{opacity:.35;transition:opacity .8s ease}
.v9fig.on .door{opacity:1}.v9fig.on .d2{transition-delay:.4s}.v9fig.on .d3{transition-delay:.8s}
.recfig .node{fill:#0f1a3a;stroke:#3d70c3;stroke-width:1.6;transition:all .5s ease}
.recfig .node.lit{fill:#12305a;stroke:#9ef0ff;filter:drop-shadow(0 0 8px rgba(158,240,255,.6))}
.recfig .spoke{stroke:#1f3a6e;stroke-width:1.4;transition:stroke .5s ease}.recfig .spoke.lit{stroke:#9ef0ff}
.recfig .core{fill:#0a1236;stroke:#e8f4ff;stroke-width:2}

/* text interlude */
.prose{columns:2;column-gap:56px}
.prose p{font-size:15px;line-height:1.85;margin:0 0 18px;break-inside:avoid}
.prose .dropcap{font-family:Disp,'Inter Display',sans-serif;font-weight:300;font-size:21px;line-height:1.55;color:var(--hi)}
.toc{column-span:all;display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:22px}
.toc a{background:var(--bg);padding:16px 14px;color:var(--hi);text-decoration:none;font-size:13px;display:grid;gap:4px;transition:background .3s ease}
.toc a:hover{background:#0b1230}
.toc b{color:var(--ink);font-weight:500;font-size:11px;letter-spacing:.2em}
.toc small{color:var(--grey);font-size:11px}

/* small device tabs + panes */
.v9tabs{margin-top:-6px}
.v9pane{display:none}.v9pane.on{display:block;animation:pin .45s ease both}
.dbtn.ghost,.device button.ghost{background:transparent;border-color:#2a4a7a}
.dbtn{display:inline-block;text-decoration:none}
.seg{display:flex;gap:6px;flex-wrap:wrap}
.seg button{min-width:44px;padding:9px 12px}
.seg button.on{background:#2a4a7a;border-color:#9ef0ff;color:#fff}

/* polls */
.polllist{display:grid;gap:14px;max-height:520px;overflow-y:auto;overscroll-behavior:contain;padding-right:4px}
.poll{border:1px solid #1f3a6e;background:#0b1430;padding:14px;border-radius:6px}
.poll h5{font-family:Disp,'Inter Display',sans-serif;font-weight:400;font-size:18px;color:var(--hi);margin:2px 0 10px;line-height:1.3}
.poll .meta{font-size:11px;color:var(--grey);display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}
.opt{position:relative;display:flex;justify-content:space-between;gap:10px;align-items:center;padding:9px 10px;margin-top:6px;border:1px solid #1f3a6e;border-radius:4px;cursor:pointer;overflow:hidden;font-size:12px;color:#cfe6ff}
.opt i{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,rgba(61,112,195,.45),rgba(158,240,255,.25));transform-origin:left;transition:width 1s cubic-bezier(.2,.8,.2,1)}
.opt span,.opt em{position:relative;font-style:normal}
.opt em{color:var(--grey);white-space:nowrap}
.opt.sel{border-color:#9ef0ff}
.opt.lead span{color:#fff}
.vote{display:none;margin-top:10px;gap:8px;align-items:end;flex-wrap:wrap}
.poll.voting .vote{display:flex}
.vote input{flex:1;min-width:120px}
.vote .check{margin:0}

/* letters */
.letlist{margin-top:14px;display:grid;gap:10px;max-height:340px;overflow-y:auto}
.letter{border:1px solid #1f3a6e;padding:12px;border-radius:6px;background:#0b1430;font-size:12px}
.letter b{display:block;color:var(--hi);font-weight:400;font-size:15px;margin:6px 0;font-family:Disp,'Inter Display',sans-serif}
.letter small{color:var(--grey)}

/* recovery */
.reclist{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}
.reclist input{font-size:12px;padding:9px 10px}
.recsteps{margin:16px 0 0 18px;padding:0;font-size:12px;line-height:1.8;color:var(--txt)}
.recsteps li{margin-bottom:4px}

/* hand devices */
.devstrip{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;padding:4px 2px 14px;margin-bottom:24px;scrollbar-width:thin;scrollbar-color:#1f3a6e transparent}
.devstrip figure{flex:0 0 220px;margin:0;scroll-snap-align:start;border:1px solid var(--line);background:#060a1c;cursor:pointer;transition:transform .4s cubic-bezier(.2,.8,.2,1),border-color .3s ease}
.devstrip figure:hover{transform:translateY(-4px);border-color:#3d70c3}
.devstrip img{width:100%;display:block;aspect-ratio:1}
.devstrip figcaption{font-size:11px;color:var(--grey);padding:8px 10px;display:flex;justify-content:space-between}
.devgrid{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:start}
.devnums{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:8px}
.devnums div{border:1px solid #1f3a6e;padding:10px;border-radius:4px;background:#0b1430}
.devnums small{display:block;font-size:10px;color:var(--grey);letter-spacing:.12em;text-transform:uppercase}
.devnums b{font-family:Disp,'Inter Display',sans-serif;font-weight:400;font-size:24px;color:var(--hi)}
.devnums em{font-style:normal;font-size:11px;color:var(--ink);margin-left:4px}
.drop{position:relative;display:flex;align-items:center;justify-content:center;min-height:110px;border:1px dashed #3d70c3;border-radius:6px;color:#9ec3ef;font-size:12px;text-transform:none;letter-spacing:.02em;cursor:pointer;transition:background .3s ease,border-color .3s ease}
.drop:hover,.drop.over{background:rgba(61,112,195,.12);border-color:#9ef0ff}
.drop input{position:absolute;inset:0;opacity:0;cursor:pointer}
.rdout{background:#03040c;border:1px solid #1a1a40;border-radius:8px;padding:12px 14px;font-size:12px;line-height:1.8;color:var(--ink);min-height:96px;white-space:pre-wrap;overflow-wrap:anywhere;margin-top:12px}
.rdout .k{color:#fff;text-shadow:0 0 10px rgba(158,240,255,.6)}
.doors{margin-top:0}
.doorin .page{border:1px solid #1f3a6e;background:#0b1430;border-radius:6px;padding:20px 22px;max-height:440px;overflow-y:auto}
.page h5{font-family:Disp,'Inter Display',sans-serif;font-weight:400;font-size:22px;color:var(--hi);margin:0 0 4px}
.page small{color:var(--grey);font-size:11px}
.page p{font-size:14px;line-height:1.85;color:var(--txt);margin:12px 0 0;white-space:pre-wrap}
.pagenav{display:flex;justify-content:space-between;align-items:center;margin-top:10px;font-size:11px;color:var(--grey)}
.wake{display:flex;justify-content:center}
.wake canvas{width:min(100%,420px);height:auto;aspect-ratio:1;border-radius:10px;border:1px solid #1f3a6e;background:#03040c}
.sentence{margin-top:16px;border-top:1px solid #1a3a6a;padding-top:12px}
.guest{margin-top:28px;border:1px solid var(--line);padding:22px}
.guest .gh{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:14px;font-size:11px;color:var(--grey)}
.glist{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-height:360px;overflow-y:auto}
.glist .g{border:1px solid #1f3a6e;padding:12px;border-radius:4px;background:#0b1430}
.glist .g b{display:block;color:var(--hi);font-weight:500;font-size:13px}
.glist .g span{display:block;color:var(--txt);font-size:12px;margin-top:4px}
.glist .g small{color:var(--grey);font-size:10px}

/* the stall */
.stallgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.piece{border:1px solid var(--line);background:#060a1c;cursor:pointer;position:relative;transition:transform .4s cubic-bezier(.2,.8,.2,1),border-color .3s ease}
.piece:hover{transform:translateY(-4px);border-color:#3d70c3}
.piece img{width:100%;display:block;aspect-ratio:1}
.piece .pi{padding:12px 14px;display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.piece b{color:var(--hi);font-weight:500;font-size:14px}
.piece small{color:var(--grey);font-size:11px;display:block;margin-top:2px}
.piece em{font-style:normal;font-size:11px;color:var(--ink);white-space:nowrap}
.piece.sel{border-color:#9ef0ff;box-shadow:0 0 0 1px #9ef0ff,0 18px 40px -20px rgba(158,240,255,.5)}
.piece.sel::after{content:'✓';position:absolute;top:10px;right:12px;width:28px;height:28px;border-radius:50%;background:#9ef0ff;color:#03040c;display:grid;place-items:center;font-size:14px}
.stallbar{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-top:18px;border:1px solid var(--line);padding:14px 18px;font-size:12px;color:var(--grey)}

@media (max-width:980px){
  .v9 .twin,.devgrid{grid-template-columns:1fr}
  .prose{columns:1}
  .toc{grid-template-columns:1fr 1fr}
  .toc a:last-child{grid-column:1/-1}
  .glist{grid-template-columns:1fr 1fr}
  .stallgrid{grid-template-columns:1fr 1fr;gap:12px}
  .devstrip figure{flex-basis:170px}
  .devnums b{font-size:20px}
  .reclist{grid-template-columns:1fr}
  .v9fig{padding:12px 12px 8px}
  .polllist{max-height:440px}
}
@media (max-width:520px){
  .glist{grid-template-columns:1fr}
  .stallgrid{grid-template-columns:1fr 1fr}
  .piece .pi{flex-direction:column;gap:4px}
  .stallbar{flex-direction:column;align-items:stretch;text-align:center}
}

.v9 button:disabled{opacity:.45;cursor:not-allowed}
.v9fig.wide svg{max-height:300px}

/* the stall as a quadratic vote */
.piece{cursor:default}
.piece .qv{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;padding:0 12px 12px}
.piece .qv button{padding:7px 0;font-size:11px;border-radius:3px;background:#0b1430;border:1px solid #1f3a6e;color:#9ec3ef}
.piece .qv button.on{background:#2a4a7a;border-color:#9ef0ff;color:#fff}
.piece .qbar{display:block;height:3px;background:linear-gradient(90deg,#3d70c3,#9ef0ff);width:var(--w);transition:width 1s ease}
.mx{margin-top:28px}
.mxfig .m1,.mxfig .m3{fill:#0f1a3a;stroke:#3d70c3}.mxfig .m2{fill:#0a1236;stroke:#9ef0ff}
