:root{--ink:#0a1020;--panel:#0c1422d1;--edge:#1e2c3e;--text:#d8e6f2;--dim:#7f97ad;--accent:#38d9c4;--hot:#ff6b4a;--mono:ui-monospace, SFMono-Regular, Menlo, monospace}*{box-sizing:border-box}html,body{background:var(--ink);height:100%;color:var(--text);font-family:var(--mono);-webkit-font-smoothing:antialiased;margin:0}#canvas{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;width:100%;height:100%;display:block;position:fixed;inset:0}.touch-ring{pointer-events:none;z-index:40;width:0;height:0;position:fixed;top:0;left:0}.touch-ring:before,.touch-ring:after{content:"";border-radius:50%;position:absolute}.touch-ring:before{border:1.5px solid color-mix(in srgb, var(--accent) 40%, transparent);width:108px;height:108px;margin:-54px 0 0 -54px}.touch-ring:after{border:1.5px dashed color-mix(in srgb, var(--accent) 85%, transparent);width:64px;height:64px;margin:-32px 0 0 -32px;animation:1.15s linear infinite touch-spin}@keyframes touch-spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.touch-ring:after{animation:none}}.vignette{pointer-events:none;background:radial-gradient(at 50% 42%,#0000 46%,#03070eb8 100%);position:fixed;inset:0}#boot{z-index:99;background:var(--ink);color:var(--dim);font:600 .7rem/1.6 var(--mono);letter-spacing:.3em;text-transform:uppercase;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:1.15rem;transition:opacity .45s;display:flex;position:fixed;inset:0}#boot.gone{opacity:0;pointer-events:none}.boot-mark{letter-spacing:.22em;color:#eaf3fb;font-size:1.5rem}.boot-mark em{color:var(--accent);font-style:normal}.boot-ring{border:3px solid #16202e;border-top-color:var(--accent);border-radius:50%;width:34px;height:34px;animation:.9s linear infinite boot-spin}@keyframes boot-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.boot-ring{border-top-color:var(--hot);animation:none}}#boot.failed .boot-ring{border-color:#b1442f;animation:none}#boot.failed .boot-status{color:#ff9a86;letter-spacing:.1em;text-transform:none;max-width:34rem;padding:0 1.5rem}#marquee{pointer-events:none;position:fixed;top:1.4rem;left:1.6rem}#marquee h1{letter-spacing:.18em;margin:.2rem 0 0;font-size:1.35rem}#marquee h1 em{color:var(--accent);font-style:normal}.marquee-sub{letter-spacing:.26em;color:var(--dim);text-transform:uppercase;font-size:.6rem}#hud{width:min(23rem,100vw - 2.4rem);position:fixed;bottom:1.2rem;right:1.2rem}.hud-bezel{background:var(--panel);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--edge);border-radius:.7rem;padding:.85rem 1rem 1rem}.hud-bezel summary{cursor:pointer;justify-content:space-between;align-items:center;gap:.75rem;list-style:none;display:flex}.hud-bezel summary::-webkit-details-marker{display:none}.hud-bezel summary:after{content:"";border-right:1.5px solid var(--dim);border-bottom:1.5px solid var(--dim);flex:none;width:.42rem;height:.42rem;margin-left:.1rem;transition:transform .18s;transform:rotate(45deg)translate(-.1rem,-.1rem)}.hud-bezel[open] summary:after{transform:rotate(-135deg)}.hud-bezel summary:hover:after{border-color:var(--accent)}.hud-name{letter-spacing:.24em;color:var(--accent);font-size:.65rem}.led-bank{gap:.85rem;display:flex}.led{text-align:right}.led span{letter-spacing:.16em;color:var(--dim);font-size:.5rem;display:block}.led strong{font-size:.85rem;font-weight:600}.led small{color:var(--dim);font-size:.5rem}.btn-row{gap:.5rem;margin:.9rem 0 .2rem;display:flex}button{font:600 .62rem/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--text);border:1px solid var(--edge);cursor:pointer;background:#16222f;border-radius:.45rem;flex:1;min-height:44px;padding:.62rem .4rem}button:hover{border-color:var(--accent);color:var(--accent)}button.on{border-color:var(--accent);color:var(--accent);background:#16323a}.controls{color:var(--dim);margin:.85rem 0 0;padding:0;font-size:.62rem;line-height:1.9;list-style:none}kbd{border:1px solid var(--edge);color:var(--text);background:#16222f;border-radius:.25rem;padding:.05rem .35rem}#status{color:var(--accent);min-height:1.2em;margin:.75rem 0 0;font-size:.62rem}.page-nav{letter-spacing:.14em;color:var(--dim);text-transform:uppercase;margin-top:.85rem;font-size:.62rem;text-decoration:none;display:block}.page-nav:hover{color:var(--accent)}.lab{max-width:60rem;margin:0 auto;padding:4rem 1.6rem 6rem}.lab h1{letter-spacing:.14em;margin:.3rem 0 .6rem;font-size:2rem}.lab h1 em{color:var(--accent);font-style:normal}.lab .lede{color:var(--dim);max-width:42rem;font-size:.8rem;line-height:1.9}.lab h2{letter-spacing:.26em;text-transform:uppercase;color:var(--dim);border-bottom:1px solid var(--edge);margin:3rem 0 1rem;padding-bottom:.6rem;font-size:.68rem}.cards{grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:1rem;display:grid}.card{background:var(--panel);border:1px solid var(--edge);color:inherit;border-radius:.7rem;padding:1.1rem 1.2rem 1.3rem;text-decoration:none;display:block}a.card:hover{border-color:var(--accent)}.card .tag{letter-spacing:.2em;text-transform:uppercase;color:var(--ink);background:var(--accent);border-radius:.25rem;padding:.16rem .42rem;font-size:.52rem}.card .tag.planned{color:var(--dim);background:#253444}.card h3{letter-spacing:.06em;margin:.75rem 0 .4rem;font-size:.95rem}.card p{color:var(--dim);margin:0;font-size:.68rem;line-height:1.85}.card dl{color:var(--dim);margin:.9rem 0 0;font-size:.62rem;line-height:1.8}.card dt{color:var(--text);letter-spacing:.1em;text-transform:uppercase;margin-top:.5rem;font-size:.52rem}@media (width<=640px){#hud{width:auto;bottom:.7rem;left:.7rem;right:.7rem}#marquee{top:.9rem;left:1rem}#marquee h1{font-size:1.05rem}}
