:root{color-scheme:dark;--bg: #04050c;--ink: #d9e6ec;--ink-dim: #7c93a0;--ink-faint: #6b8290;--accent: #6fd6ff;--accent-bright: #bff2ff;--accent-warm: #ecb979;--rule: rgba(150, 200, 220, .4);--font-display: "Space Grotesk", ui-sans-serif, system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);overflow:hidden}body{font-family:var(--font-mono);color:var(--ink)}body[data-backdrop=void]{background:#0a0a0d}body[data-backdrop=blueprint]{background:#0a0d12}body[data-backdrop=meadow]{background:linear-gradient(#8fc4e8,#bcd9ea 48%,#7ea856 48%,#5f8f42)}#app{position:fixed;top:0;right:0;bottom:0;left:0}#tower-host{position:absolute;top:0;right:0;bottom:0;left:0}#tower-host canvas{display:block}.text-page{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;max-width:720px;margin:0 auto;padding:48px 24px 96px;box-sizing:border-box;font-family:var(--font-mono);font-size:14px;line-height:1.7;color:var(--ink)}.text-page-back{color:var(--accent);font-size:12px;text-decoration:none}.text-page-back:hover{color:var(--accent-bright)}.text-page h1{font-family:var(--font-display);font-weight:500;font-size:32px;color:var(--accent-bright);margin:18px 0 4px}.text-page h2{font-family:var(--font-display);font-weight:500;font-size:18px;color:var(--accent-bright);margin:36px 0 10px;border-top:1px solid var(--rule);padding-top:20px}.text-page .text-lede{color:var(--accent);font-size:13px;margin:0 0 14px}.text-page ul{margin:0;padding-left:20px}.text-page li{margin-bottom:8px}.text-page a{color:var(--accent)}.text-page a:hover{color:var(--accent-bright)}.text-page .text-status{color:var(--ink-dim);font-size:12.5px}.perf-offer{position:fixed;left:50%;bottom:74px;z-index:27;width:min(400px,calc(100vw - 32px));transform:translate(-50%,10px);opacity:0;padding:18px 20px;background:#04050ce0;border:1px solid var(--rule);border-radius:8px;transition:opacity .38s ease,transform .38s ease}.perf-offer.perf-offer-in{opacity:1;transform:translate(-50%)}.perf-offer .kicker{font-family:var(--font-display);font-size:10px;letter-spacing:.32em;text-transform:uppercase;color:var(--accent-warm);margin-bottom:8px}.perf-offer p{margin:0 0 14px;font-size:12.5px;line-height:1.6;color:var(--ink)}.perf-offer-actions{display:flex;flex-wrap:wrap;gap:8px}.perf-offer-stay{margin-left:auto;color:var(--ink-faint)}.mode-btn{font-family:var(--font-mono);font-size:13px;cursor:pointer;padding:9px 14px;border-radius:4px;background:transparent;border:1px solid var(--rule);color:var(--ink);transition:color .14s ease,border-color .14s ease}.mode-btn-primary{border-color:var(--accent);color:var(--accent-bright)}.mode-btn:hover{border-color:var(--accent-bright);color:var(--accent-bright)}.loading-veil{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:var(--bg);transition:opacity .7s ease}.loading-veil.loading-hidden{opacity:0;pointer-events:none}.loading-mark svg{width:40px;height:40px}.loading-mark circle{fill:none;stroke:var(--accent);stroke-width:1.4;stroke-linecap:round;stroke-dasharray:30 70;transform-origin:20px 20px;animation:loading-spin 1.3s linear infinite}@keyframes loading-spin{to{transform:rotate(360deg)}}.loading-text{font-family:var(--font-display);font-size:12px;letter-spacing:.28em;text-transform:uppercase;color:var(--ink-dim)}.welcome-note{position:fixed;left:50%;bottom:48px;transform:translate(-50%,8px);z-index:15;max-width:420px;text-align:center;cursor:pointer;opacity:0;transition:opacity .5s ease,transform .5s ease;background:#04050cb8;border:1px solid var(--rule);border-radius:8px;padding:14px 20px}.welcome-note.welcome-in{opacity:1;transform:translate(-50%)}.welcome-note .kicker{font-family:var(--font-display);font-size:10px;letter-spacing:.32em;text-transform:uppercase;color:var(--accent);margin-bottom:6px}.welcome-note p{margin:0;font-size:12.5px;line-height:1.6;color:var(--ink)}.nav-rail{position:fixed;left:50%;top:22px;transform:translate(-50%);z-index:6;display:flex;flex-direction:row;align-items:center;gap:26px}.nav-item{position:relative;display:flex;align-items:baseline;gap:7px;padding:6px 1px;text-decoration:none;color:var(--ink-dim);font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;white-space:nowrap;transition:color .16s ease}.nav-num{font-size:10px;color:var(--ink-faint)}.nav-item:hover,.nav-item[aria-current=page]{color:var(--accent-bright)}.nav-item[aria-current=page] .nav-num{color:var(--accent)}.nav-whole{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-dim);padding-right:20px;border-right:1px solid var(--rule)}.nav-whole .nav-label{opacity:.85}.nav-term{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;cursor:pointer}.nav-term .nav-label{font-size:10px;letter-spacing:.1em}.nav-util{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;cursor:pointer;font-size:10px;letter-spacing:.1em;text-decoration:none}.nav-util-on{color:var(--accent-bright)}.nav-util-on:before{content:"●";font-size:6px;vertical-align:middle;margin-right:5px;color:var(--accent)}.nav-utils{display:flex;align-items:center;gap:18px;margin-left:4px;padding-left:22px;border-left:1px solid var(--rule)}.nav-views-wrap{position:relative}.nav-views{display:flex;align-items:center;gap:5px}.nav-caret{font-size:8px;opacity:.7;transition:transform .16s ease}.nav-views-open .nav-caret{transform:rotate(180deg)}.nav-views-open .nav-views{color:var(--accent-bright)}.nav-menu{position:absolute;top:calc(100% + 10px);right:0;z-index:8;min-width:240px;display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--rule);border-radius:4px;padding:6px;box-shadow:0 12px 32px #00000073}.nav-menu[hidden]{display:none}.nav-menu-item{display:flex;flex-direction:column;gap:2px;padding:9px 10px;border-radius:3px;text-decoration:none;color:var(--ink);transition:background .14s ease,color .14s ease}.nav-menu-item strong{font-weight:500;font-size:12px;letter-spacing:.02em}.nav-menu-item span{font-size:10.5px;color:var(--ink-dim);line-height:1.45}.nav-menu-item:hover{background:#6fd6ff14;color:var(--accent-bright)}.nav-menu-item[aria-current=true]{color:var(--accent-bright)}.nav-menu-item[aria-current=true] strong:before{content:"● ";font-size:8px;color:var(--accent);vertical-align:middle}.dot-nav{display:none;position:fixed;left:50%;top:14px;transform:translate(-50%);z-index:6;flex-direction:column;align-items:center;gap:6px}.dot-label{font-family:var(--font-display);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-bright);opacity:0;transition:opacity .2s ease;background:#04050cb8;padding:3px 10px;border-radius:10px}.dot-label.dot-label-on{opacity:1}.dot-row{display:flex;align-items:center;gap:10px;padding:6px 10px;touch-action:none}.dot{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer}.dot:after{content:"";width:6px;height:6px;border-radius:50%;background:var(--ink-dim);opacity:.6;transition:all .18s ease}.dot.dot-active:after{width:8px;height:8px;background:var(--accent);opacity:1;box-shadow:0 0 6px var(--accent)}.dot.dot-preview:after{width:10px;height:10px;background:var(--accent-warm);opacity:1;box-shadow:0 0 10px var(--accent-warm)}#hint{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:6;pointer-events:none;font-size:11.5px;letter-spacing:.06em;color:var(--ink);opacity:0;transition:opacity .16s}#hint[data-on="1"]{opacity:1}.callout{position:fixed;top:24%;z-index:5;width:min(400px,42vw);font-family:var(--font-mono);opacity:0;transform:translateY(8px);transition:opacity .34s ease,transform .34s ease}.callout.callout-visible{opacity:1;transform:translateY(0)}.callout-right{right:5vw}.callout-left{left:5vw}.leader-wrap{position:absolute;top:-8px;width:220px;height:220px;color:var(--accent);pointer-events:none}.callout-right .leader-wrap{left:-220px}.callout-left .leader-wrap{right:-220px}.leader{width:100%;height:100%;display:block}.leader path{fill:none;stroke:currentColor;stroke-width:1.1;opacity:.75}.leader circle{fill:none;stroke:currentColor;stroke-width:1.4}.callout-left .leader{transform:scaleX(-1)}.callout-inner{position:relative}.callout-left .callout-inner{text-align:right}.callout-body{max-height:58vh;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;padding-bottom:8px}.kicker{font-size:10px;letter-spacing:.28em;text-transform:uppercase;color:var(--accent);margin-bottom:6px}.callout h1{font-family:var(--font-display);font-weight:500;font-size:26px;letter-spacing:.01em;margin:0 0 18px;color:var(--accent-bright)}.callout h2{font-family:var(--font-display);font-weight:500;font-size:19px;margin:0 0 8px;color:var(--accent-bright)}.callout p{line-height:1.65;font-size:13px;color:var(--ink);margin:0 0 12px}.callout a{color:var(--accent)}.callout a:hover{color:var(--accent-bright)}.group-label{font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-dim);margin:22px 0 8px}.tl-list{list-style:none;margin:0;padding:0}.tl-list li{border-top:1px solid rgba(150,200,220,.16);padding:9px 0}.tl-list li:last-child{border-bottom:1px solid rgba(150,200,220,.16)}.tl-role{font-size:13px;color:var(--ink)}.tl-org{font-size:11.5px;color:var(--ink-dim);line-height:1.5;margin-top:2px}.tl-year{font-size:10.5px;color:var(--accent);margin-top:3px;letter-spacing:.04em}.panel-status{font-size:11px;color:var(--ink-dim);margin:4px 0 10px;min-height:1.4em}.search-box input{width:100%;font:inherit;font-size:13px;color:var(--ink);background:none;border:none;border-bottom:1px solid var(--rule);padding:6px 2px 8px;margin-bottom:4px}.callout-left .search-box input{text-align:right}.search-box input:focus{outline:none;border-color:var(--accent)}.search-box input::placeholder{color:var(--ink-dim)}.pub-filters{display:flex;gap:10px;margin-bottom:10px}.pub-filter-select{flex:1 1 auto;min-width:0;font:inherit;font-size:11.5px;color:var(--ink);background:none;border:none;border-bottom:1px solid var(--rule);padding:5px 2px 7px}.pub-filter-select option{background:var(--bg);color:var(--ink)}.pub-filter-select:focus{outline:none;border-color:var(--accent)}.year-slider{margin:2px 0 14px}.year-slider-labels{display:flex;justify-content:space-between;font-size:10px;color:var(--accent);letter-spacing:.04em;margin-bottom:8px}.year-slider-track{position:relative;height:3px;background:var(--rule);border-radius:2px}.year-slider-range{position:absolute;top:0;bottom:0;background:var(--accent);border-radius:2px}.year-range{position:absolute;top:50%;left:0;width:100%;height:0;margin:0;transform:translateY(-50%);-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;pointer-events:none}.year-range::-webkit-slider-runnable-track{background:transparent;height:0}.year-range::-moz-range-track{background:transparent;height:0;border:none}.year-range::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:auto;width:13px;height:13px;border-radius:50%;background:var(--accent-bright);border:2px solid var(--bg);cursor:pointer;margin-top:-6.5px}.year-range::-moz-range-thumb{pointer-events:auto;width:11px;height:11px;border-radius:50%;background:var(--accent-bright);border:2px solid var(--bg);cursor:pointer}.pub-list,.proj-list,.contact-list{list-style:none;margin:0;padding:0}.pub-item{display:flex;flex-direction:column;gap:3px;width:100%;text-align:inherit;font:inherit;color:var(--ink);background:none;border:none;border-top:1px solid rgba(150,200,220,.16);padding:10px 0;cursor:pointer;transition:color .14s ease}.callout-left .pub-item{text-align:right}.pub-item:last-child{border-bottom:1px solid rgba(150,200,220,.16)}.pub-item:hover{color:var(--accent-bright)}.pub-item strong{font-weight:500}.pub-item span{font-size:11px;color:var(--ink-dim)}.back-link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;padding:0;margin-bottom:16px;font:inherit;font-size:11px;letter-spacing:.05em;color:var(--ink-dim);cursor:pointer;display:block}.back-link:hover{color:var(--accent)}.pub-meta{color:var(--ink-dim);font-size:12px}.read-link{display:inline-block;font-size:12.5px;margin-top:4px}.proj-list li{border-top:1px solid rgba(150,200,220,.16);padding:14px 0}.proj-list li:last-child{border-bottom:1px solid rgba(150,200,220,.16)}.proj-list h3{font-family:var(--font-display);font-weight:500;margin:0 0 6px;font-size:15px;color:var(--accent-bright)}.proj-list p{margin:0 0 6px;font-size:13px}.status{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-dim)}.status-current{color:var(--accent-warm)}.contact-list li{display:flex;gap:10px;padding:8px 0;border-top:1px solid rgba(150,200,220,.16);font-size:12.5px}.contact-list li:last-child{border-bottom:1px solid rgba(150,200,220,.16)}.callout-left .contact-list li{flex-direction:row-reverse;text-align:right}.contact-label{color:var(--ink-dim);font-size:10px;letter-spacing:.14em;text-transform:uppercase;min-width:54px;padding-top:1px}.contact-list a{color:var(--accent)}.contact-list a:hover{color:var(--accent-bright)}.help-btn{position:fixed;right:22px;bottom:22px;z-index:20;width:34px;height:34px;border-radius:50%;border:1px solid var(--rule);background:#04050cb8;color:var(--ink-dim);font-family:var(--font-display);font-size:14px;cursor:pointer;transition:color .16s ease,border-color .16s ease}.help-btn:hover{color:var(--accent-bright);border-color:var(--accent)}.dest-btn{position:fixed;right:22px;bottom:64px;z-index:20;width:34px;height:34px;border-radius:50%;border:1px solid var(--rule);background:#04050cb8;color:var(--ink-dim);font-size:15px;cursor:pointer;transition:color .16s ease,border-color .16s ease}.dest-btn:hover{color:var(--accent-bright);border-color:var(--accent)}.gear-btn{position:fixed;right:22px;bottom:106px;z-index:20;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;border:1px solid var(--rule);background:#04050cb8;color:var(--ink-dim);cursor:pointer;transition:color .16s ease,border-color .16s ease}.gear-btn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round}.gear-btn:hover,.gear-btn-on{color:var(--accent-bright);border-color:var(--accent)}.gear-panel{position:fixed;right:22px;bottom:150px;z-index:26;width:min(330px,calc(100vw - 44px));padding:18px 18px 16px;font-family:var(--font-mono);background:linear-gradient(to top,#04050cf0,#04050cc7);border-radius:6px;opacity:0;transform:translateY(8px);transition:opacity .22s ease,transform .22s ease}.gear-panel[hidden]{display:none}.gear-panel.gear-panel-in{opacity:1;transform:translateY(0)}.gear-panel>.kicker{font-family:var(--font-display);font-size:10px;letter-spacing:.32em;text-transform:uppercase;color:var(--accent);margin-bottom:14px}.gear-row{padding:11px 0;border-top:1px solid var(--rule)}.gear-row:first-of-type{border-top:none;padding-top:0}.gear-row-label{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-dim);margin-bottom:7px}.gear-opts{display:flex;flex-wrap:wrap;gap:5px}.gear-opt{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;padding:4px 9px;border-radius:3px;background:transparent;border:1px solid transparent;color:var(--ink-dim);font:inherit;font-size:11.5px;transition:color .14s ease,border-color .14s ease}.gear-opt:hover{color:var(--ink);border-color:var(--rule)}.gear-opt-on{color:var(--accent-bright);border-color:var(--accent)}.gear-hint{margin-top:7px;font-size:11px;line-height:1.5;color:var(--ink-faint)}.gear-status{margin-top:14px;padding-top:11px;border-top:1px solid var(--rule);font-size:10.5px;line-height:1.6;color:var(--ink-dim)}.gear-status-gpu{word-break:break-word;color:var(--ink-faint)}.gear-status-warn{margin-top:6px;color:var(--accent-warm)}.fps-meter{position:fixed;left:22px;bottom:22px;z-index:22;display:flex;gap:10px;align-items:baseline;padding:5px 9px;border-radius:4px;background:#04050ca8;font-family:var(--font-mono);font-size:11px;line-height:1;color:var(--ink-dim);pointer-events:none;font-variant-numeric:tabular-nums}.fps-meter[hidden]{display:none}.fps-rate{font-size:13px;color:var(--ink)}.fps-meter[data-band=good] .fps-rate{color:#7fe0a8}.fps-meter[data-band=fair] .fps-rate{color:var(--accent-warm)}.fps-meter[data-band=poor] .fps-rate{color:#ec8f79}.fps-tier{letter-spacing:.1em;text-transform:uppercase;font-size:9.5px;color:var(--ink-faint)}.pub-item-danger strong{color:var(--accent-warm)}.pub-item-danger:hover strong{color:#ec8f79}.gear-row-off{opacity:.45}.gear-row-off .gear-opt{cursor:default}.quality-note{position:fixed;right:22px;bottom:150px;z-index:24;width:min(300px,calc(100vw - 44px));padding:14px 16px;background:#04050cc7;border:1px solid var(--rule);border-radius:8px;cursor:pointer;opacity:0;transform:translateY(8px);transition:opacity .4s ease,transform .4s ease}.quality-note.quality-note-in{opacity:1;transform:translateY(0)}body[data-gear=on] .quality-note{display:none}.quality-note .kicker{font-family:var(--font-display);font-size:10px;letter-spacing:.32em;text-transform:uppercase;color:var(--accent-warm);margin-bottom:6px}.quality-note p{margin:0;font-size:12px;line-height:1.55;color:var(--ink)}.quality-note strong{color:var(--accent-bright);font-weight:400}.quality-note-keys{margin-top:7px!important;font-size:11px!important;color:var(--ink-dim)!important}.quality-note kbd{font-family:var(--font-mono);font-size:10.5px;padding:1px 4px;border:1px solid var(--rule);border-radius:3px;color:var(--ink)}.help-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:flex;align-items:center;justify-content:center;background:#04050c99;opacity:0;transition:opacity .22s ease}.help-overlay[hidden]{display:none}.help-overlay.help-overlay-visible{opacity:1}.help-card{width:min(360px,86vw);font-family:var(--font-mono);background:var(--bg);border:1px solid var(--rule);border-radius:4px;padding:26px 28px;transform:translateY(6px);transition:transform .22s ease}.help-overlay-visible .help-card{transform:translateY(0)}.help-card h2{font-family:var(--font-display);font-weight:500;font-size:19px;margin:0 0 16px;color:var(--accent-bright)}.help-rows{margin:0 0 18px;display:grid;grid-template-columns:auto 1fr;gap:10px 16px}.help-rows dt{font-size:11px;letter-spacing:.04em;color:var(--accent);white-space:nowrap}.help-rows dd{margin:0;font-size:12.5px;color:var(--ink);line-height:1.5}.dest-card{width:min(360px,86vw)}.dest-list{list-style:none;margin:0 0 4px;padding:0;max-height:50vh;overflow-y:auto}.dest-item[aria-current=true]{color:var(--accent-bright)}.dest-item[aria-current=true] strong:before{content:"● ";color:var(--accent);font-size:9px}.pub-actions{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 12px}.callout-left .pub-actions{justify-content:flex-end}.pub-actions-detail{margin-top:14px}.chip-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;font:inherit;font-size:10.5px;letter-spacing:.08em;color:var(--ink-dim);background:none;border:1px solid var(--rule);border-radius:3px;padding:4px 9px;transition:color .14s ease,border-color .14s ease}.chip-btn:hover,.chip-btn.is-flashing{color:var(--accent-bright);border-color:var(--accent)}.colophon-block{display:grid;grid-template-columns:auto 1fr;gap:8px 18px;margin:4px 0 20px;padding-bottom:18px;border-bottom:1px solid var(--rule)}.colophon-block dt{font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-dim);white-space:nowrap;padding-top:2px}.colophon-block dd{margin:0;font-size:12.5px;line-height:1.45;color:var(--ink)}.colophon-note{display:block;font-size:11.5px;color:var(--ink-dim)}.callout-left .colophon-block{direction:rtl}.callout-left .colophon-block dt,.callout-left .colophon-block dd{direction:ltr;text-align:right}.text-colophon{display:grid;grid-template-columns:auto 1fr;gap:6px 18px;margin:0 0 18px}.text-colophon dt{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-dim);white-space:nowrap;padding-top:2px}.text-colophon dd{margin:0;font-size:13px;line-height:1.5;color:var(--ink)}.pub-links{display:flex;gap:16px;margin:0}.callout-left .pub-links{justify-content:flex-end}.console{position:fixed;right:5vw;top:15%;bottom:11%;z-index:25;width:clamp(400px,46vw,820px);display:flex;flex-direction:column;font-family:var(--font-mono);opacity:0;transform:translateY(8px);transition:opacity .3s ease,transform .3s ease;pointer-events:none}.console>*{pointer-events:auto}.console[hidden]{display:none}.console.console-visible{opacity:1;transform:translateY(0)}.console-log{flex:1 1 auto;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;padding-bottom:10px;font-size:12.5px;line-height:1.65;color:var(--ink)}.console-line{white-space:pre-wrap;word-break:break-word;min-height:.65em}.console-cmd,.ascii-cmd{padding-left:26ch;text-indent:-26ch}.console-hit,.ascii-hit{padding-left:14ch;text-indent:-14ch}.console-echo{color:var(--accent)}.console-dim{color:var(--ink-dim)}.console-err{color:#ff9d84}.console-ok{color:#93e6a8}.console-head{color:var(--accent-bright)}.console-pre{color:var(--accent-warm);font-size:11.5px}.console-inputline{flex:0 0 auto;display:flex;align-items:baseline;gap:9px;border-top:1px solid var(--rule);padding:12px 0 4px}.console-prompt{color:var(--accent);font-size:14px;line-height:1}.console-input{flex:1 1 auto;min-width:0;background:none;border:none;outline:none;padding:0;font:inherit;font-size:13.5px;color:var(--accent-bright);caret-color:var(--accent)}.console-input::placeholder{color:var(--ink-faint)}.console-close{margin:12px 0 0}body[data-console=on] .callout-right{right:auto;left:5vw}body[data-console=on] .callout-right .callout-inner{text-align:right}body[data-console=on] .callout-right .leader-wrap{left:auto;right:-220px}body[data-console=on] .callout-right .leader{transform:scaleX(-1)}body[data-console=on] .help-btn,body[data-console=on] .gear-btn,body[data-console=on] .dest-btn{opacity:.25}.ascii-view{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;width:100%;max-width:780px;margin:0 auto;padding:40px 24px max(16px,env(safe-area-inset-bottom));font-family:var(--font-mono);color:var(--ink)}.ascii-masthead{flex:0 0 auto}.ascii-name{font-family:var(--font-display);font-weight:500;font-size:30px;letter-spacing:.01em;color:var(--accent-bright);margin-bottom:4px}.ascii-role{font-size:12px;color:var(--accent);letter-spacing:.02em}.ascii-modes{margin-top:10px;display:flex;gap:10px;align-items:baseline;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-dim)}.ascii-modes a{color:var(--ink-dim);text-decoration:none;transition:color .14s ease}.ascii-modes a:hover{color:var(--accent-bright)}.ascii-tower-toggle{display:none}.ascii-body{flex:1 1 auto;display:flex;gap:28px;min-height:0;margin-top:24px;padding-top:22px;border-top:1px solid var(--rule)}.ascii-tower{flex:0 0 auto;margin:0;padding:0;font-family:var(--font-mono);font-size:11.5px;line-height:1.3;color:var(--ink-dim);white-space:pre}.ascii-row{display:block}button.ascii-row{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;padding:0;font:inherit;color:inherit;text-align:left;width:100%;cursor:pointer;transition:color .14s ease}button.ascii-row:hover{color:var(--accent)}.ascii-row-active{color:var(--accent-bright)}.ascii-log{flex:1 1 auto;min-width:0;overflow-y:auto;overscroll-behavior:contain;font-size:12.5px;line-height:1.65;scrollbar-width:thin;padding-bottom:8px}.ascii-line{white-space:pre-wrap;word-break:break-word;min-height:.65em}.ascii-echo{color:var(--accent)}.ascii-dim{color:var(--ink-dim)}.ascii-err{color:#ff9d84}.ascii-ok{color:#93e6a8}.ascii-line.ascii-head{color:var(--accent-bright)}.ascii-pre{color:var(--accent-warm);font-size:11.5px}.ascii-inputline{flex:0 0 auto;display:flex;align-items:baseline;gap:10px;border-top:1px solid var(--rule);padding-top:14px;margin-top:4px}.ascii-prompt{color:var(--accent);font-size:15px;line-height:1}.ascii-input{flex:1 1 auto;min-width:0;background:none;border:none;outline:none;padding:0;font:inherit;font-size:16px;color:var(--accent-bright);caret-color:var(--accent)}.ascii-input::placeholder{color:var(--ink-dim);font-size:13px}.ascii-keys{flex:0 0 auto;display:flex;flex-wrap:wrap;gap:8px;padding-top:14px}.ascii-key{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;font:inherit;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-dim);background:none;border:1px solid var(--rule);border-radius:3px;padding:7px 11px;transition:color .14s ease,border-color .14s ease}.ascii-key:hover{color:var(--accent-bright);border-color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.search-box input:focus-visible,.pub-filter-select:focus-visible{outline-offset:4px}.console-input:focus,.console-input:focus-visible,.ascii-input:focus,.ascii-input:focus-visible{outline:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.welcome-keys{margin-top:8px!important;font-size:11px!important;color:var(--ink-dim)!important}.welcome-keys kbd{font-family:var(--font-mono);font-size:10px;border:1px solid var(--rule);border-radius:3px;padding:1px 4px;color:var(--accent)}.kicker-sub{margin-top:4px}body[data-gl-lost="1"] #tower-host:after{content:"The graphics context was lost — it should recover in a moment.";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-family:var(--font-mono);font-size:12px;color:var(--ink-dim);text-align:center}@media (max-width: 900px){.nav-rail{display:none}.dot-nav{display:flex}.help-btn{right:16px;bottom:max(16px,env(safe-area-inset-bottom))}.dest-btn{right:16px;bottom:max(58px,calc(env(safe-area-inset-bottom) + 58px))}.gear-btn{right:16px;bottom:max(100px,calc(env(safe-area-inset-bottom) + 100px))}.gear-panel{right:0;left:0;bottom:0;width:auto;border-radius:0;padding:20px 20px max(20px,env(safe-area-inset-bottom));background:linear-gradient(to top,var(--bg) 62%,rgba(4,5,12,.86))}.quality-note{right:16px;left:16px;width:auto;bottom:max(150px,calc(env(safe-area-inset-bottom) + 150px))}.fps-meter{left:12px;bottom:auto;top:max(12px,env(safe-area-inset-top))}.callout{top:auto;bottom:0;width:100vw;padding:0 20px;padding-bottom:max(20px,env(safe-area-inset-bottom));background:linear-gradient(to top,var(--bg) 55%,transparent)}.callout-body{max-height:38vh}.callout-right,.callout-left{right:0;left:0}.callout-left .callout-inner,.callout-left .pub-item,.callout-left .search-box input,.callout-left .contact-list li{text-align:left;flex-direction:row}.callout-left .colophon-block{direction:ltr}.callout-left .colophon-block dt,.callout-left .colophon-block dd{text-align:left}.leader-wrap{display:none}.pub-item,.back-link{padding-top:12px;padding-bottom:12px}#hint,.welcome-note{bottom:auto;top:max(78px,calc(78px + env(safe-area-inset-top)))}.console{right:0;left:0;top:auto;bottom:0;width:100%;padding:20px 20px max(16px,env(safe-area-inset-bottom));max-height:70vh;background:linear-gradient(to top,var(--bg) 62%,transparent)}body[data-console=on] .callout,body[data-console=on] .help-btn,body[data-console=on] .gear-btn,body[data-console=on] .gear-panel,body[data-console=on] .dest-btn{display:none}.ascii-view{padding-top:28px}.ascii-name{font-size:24px}.ascii-masthead{position:relative}.ascii-tower-toggle{display:inline-flex;align-items:center;gap:5px;position:absolute;right:0;bottom:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;padding:5px 7px;background:var(--bg);border:1px solid var(--rule);border-radius:3px;color:var(--ink-dim);font:inherit;font-size:10px;letter-spacing:.1em;text-transform:uppercase}.ascii-tower-toggle:hover{color:var(--accent-bright);border-color:var(--accent)}.ascii-body{margin-top:18px;padding-top:16px}.ascii-tower{display:none}.ascii-tower.ascii-tower-open{display:block;position:absolute;z-index:1;top:112px;right:16px;left:16px;margin:0;padding:16px;overflow:hidden;border:1px solid var(--rule);border-radius:4px;background:var(--bg);color:var(--ink-dim);font-size:11px}}@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}
