:root{--acc:#9fe870;--bg:rgba(6,20,22,.62);--ink:#d8f3ea}
*{box-sizing:border-box}
html,body{margin:0;height:100%;overflow:hidden;background:#020807;color:var(--ink);font-family:'Space Mono',monospace;touch-action:none}
#scene-container{position:fixed;inset:0}
#scan{position:fixed;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,rgba(255,255,255,.03) 0 1px,transparent 1px 3px);z-index:2}
.panel{position:fixed;z-index:3;background:var(--bg);backdrop-filter:blur(8px);border:1px solid color-mix(in srgb,var(--acc) 50%,transparent);border-radius:4px;padding:10px 12px;font-size:12px;transition:border-color 1s}
.lbl{font-size:9px;letter-spacing:.25em;color:var(--acc);transition:color 1s}
.dim{opacity:.6;font-size:11px}
#env{top:10px;left:10px;width:210px}
#era{font-family:'Syne',sans-serif;font-weight:800;font-size:17px;line-height:1.1;margin:3px 0}
.grid{display:grid;grid-template-columns:60px 1fr;gap:2px;margin-top:8px}
.grid div:nth-child(odd){opacity:.55}
.clickable{cursor:pointer;text-decoration:underline dotted}
#topright{top:10px;right:10px;text-align:right;width:190px}
#count{font-family:'Syne';font-weight:800;font-size:30px;color:var(--acc)}
.btns{display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-end;margin:6px 0}
button{font-family:'Space Mono';font-size:11px;background:transparent;color:var(--ink);border:1px solid var(--acc);padding:4px 8px;cursor:pointer;border-radius:2px}
button:hover{background:var(--acc);color:#021}
#minimap{position:fixed;left:10px;bottom:40px;z-index:3;width:120px;height:120px;border-radius:50%;background:var(--bg);border:1px solid var(--acc)}
#ticker{bottom:40px;left:50%;transform:translateX(-50%);max-width:min(560px,60vw);min-height:36px;font-size:12px;text-align:center}
.cursor{animation:bl 1s steps(1) infinite;color:var(--acc)}@keyframes bl{50%{opacity:0}}
#hint{position:fixed;bottom:84px;left:50%;transform:translateX(-50%);z-index:3;white-space:nowrap}
#joy{position:fixed;right:24px;bottom:50px;width:110px;height:110px;border-radius:50%;border:1px solid var(--acc);background:rgba(0,0,0,.25);z-index:4;display:none}
#knob{position:absolute;left:35px;top:35px;width:40px;height:40px;border-radius:50%;background:var(--acc);opacity:.7}
@media (pointer:coarse){#joy{display:block}#hint{display:none}#ticker{max-width:55vw;left:45%}}
@media (max-width:600px){#env{width:160px;font-size:10px}#era{font-size:13px}#topright{width:150px}#count{font-size:22px}#minimap{width:90px;height:90px}}
footer{position:fixed;bottom:8px;width:100%;text-align:center;z-index:5;font-size:11px}
footer a{color:var(--acc)}
.modal{position:fixed;inset:0;z-index:10;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center}
.hidden{display:none!important}
.mbox{position:relative;background:#06181a;border:1px solid var(--acc);padding:20px;max-width:420px;width:92vw;max-height:85vh;overflow:auto;border-radius:4px}
.mbox.wide{max-width:640px}
.mbox h2{font-family:'Syne';font-weight:800;font-size:26px;margin:4px 0 8px}
.mbox h3{font-family:'Syne';margin-top:18px}
.mbox p{font-size:13px;line-height:1.5}
.mbox img{width:100%;margin:8px 0;border:1px solid var(--acc)}
.x{position:absolute;right:8px;top:8px;border:none;font-size:20px}
.badge{display:inline-block;font-size:10px;padding:2px 6px;border:1px solid var(--acc);color:var(--acc);letter-spacing:.15em}
#vials{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:8px;margin-top:10px}
.vial{border:1px solid #234;border-radius:20px 20px 6px 6px;padding:10px 4px;text-align:center;font-size:10px;min-height:80px;display:flex;align-items:flex-end;justify-content:center}
.vial.on{border-color:var(--acc);background:linear-gradient(to top,color-mix(in srgb,var(--acc) 45%,transparent),transparent);box-shadow:0 0 12px color-mix(in srgb,var(--acc) 40%,transparent)}
#loading{position:fixed;inset:0;z-index:20;background:radial-gradient(circle,#0b2a24,#010605);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;text-align:center;padding:20px}
.lt{font-family:'Syne';font-weight:800;font-size:72px;color:var(--acc);letter-spacing:-.04em}
#enter{font-size:14px;padding:10px 20px}
ol{padding-left:20px;font-size:12px}