:root{color-scheme:dark;--bg:#050407;--ink:#f1eadf;--muted:#b5aca3;--amber:#ffb563;--ice:#9fd4ff;--red:#ff8a7a;--green:#7fe0b0;--line:#f1dac526;--glass:rgba(8,7,11,.72);
 --display:"Instrument Serif",Georgia,serif;--body:"IBM Plex Sans",system-ui,sans-serif;--mono:"IBM Plex Mono",ui-monospace,monospace}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);font:14px/1.5 var(--body);-webkit-font-smoothing:antialiased;overflow:hidden}
button,select,input{font:inherit;color:inherit}
a{color:inherit}
:focus-visible{outline:2px solid var(--amber);outline-offset:3px}
#view{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:grab}
#view.dragging{cursor:grabbing}
.glass{background:var(--glass);border:1px solid var(--line);border-radius:12px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.eyebrow{font:11px var(--mono);color:var(--amber);text-transform:uppercase;letter-spacing:.12em;margin:0}

/* top bar */
.bar{position:fixed;top:0;left:0;right:0;z-index:5;display:flex;align-items:center;gap:14px;padding:12px 16px;background:linear-gradient(180deg,rgba(5,4,7,.85),rgba(5,4,7,0));pointer-events:none}
.bar>*{pointer-events:auto}
.home{display:flex;align-items:center;gap:10px;text-decoration:none;font:500 11px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.home:hover{color:var(--ink)}
.orbit{width:19px;height:19px;border:1px solid var(--amber);border-radius:50%;position:relative;flex:none}.orbit:after{content:"";position:absolute;inset:5px -5px;border:1px solid #ffb56380;border-radius:50%;transform:rotate(-30deg)}
.bar h1{font:400 26px/1 var(--display);margin:0 auto 0 6px;white-space:nowrap}
.tools{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.chip{background:var(--glass);border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:12px;cursor:pointer;backdrop-filter:blur(8px);white-space:nowrap}
.chip:hover{border-color:#ffb56380}.chip[aria-pressed="true"]{border-color:var(--amber);color:var(--amber)}
.chip.rec[aria-pressed="true"]{border-color:var(--red);color:var(--red)}

/* controls */
.controls{position:fixed;left:16px;top:64px;bottom:16px;width:300px;z-index:4;display:flex;flex-direction:column;overflow:hidden}
.controls .scroll{overflow:auto;padding:16px 16px 10px;flex:1;scrollbar-width:thin}
.controls h2{font:11px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:16px 0 8px;font-weight:400}
.controls h2:first-child{margin-top:0}
.meals{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}
.meal{display:flex;flex-direction:column;align-items:center;gap:5px;padding:9px 4px 8px;border-radius:9px;border:1px solid var(--line);background:#0d0b12a0;cursor:pointer;font-size:11.5px;line-height:1.15;text-align:center}
.meal:hover{border-color:#ffb56380}
.meal[aria-pressed="true"]{border-color:var(--amber);background:#ffb56318;color:#ffe0bb}
.meal canvas{width:34px;height:34px;display:block}
.holes{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.hole{padding:8px 9px;border-radius:9px;border:1px solid var(--line);background:#0d0b12a0;cursor:pointer;text-align:left;font-size:12px;line-height:1.25}
.hole small{display:block;color:var(--muted);font-size:10.5px;margin-top:2px}
.hole[aria-pressed="true"]{border-color:var(--ice);background:#9fd4ff14}
.slider{display:grid;grid-template-columns:1fr auto;align-items:center;gap:4px 10px;margin-top:10px}
.slider label{font-size:12px;color:var(--muted)}
.slider output{font:11px var(--mono);color:var(--ink);text-align:right}
.slider input{grid-column:1/-1;width:100%;accent-color:var(--amber)}
.ends{grid-column:1/-1;display:flex;justify-content:space-between;font:10px var(--mono);color:#8c8379;margin-top:-2px}
.toggle{display:flex;gap:10px;align-items:flex-start;margin-top:10px;font-size:12px;color:var(--muted);cursor:pointer}
.toggle input{accent-color:var(--amber);margin-top:2px}
.seg{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:9px;overflow:hidden;margin-top:6px}
.seg button{background:none;border:0;padding:8px;cursor:pointer;font-size:12px}
.seg.seg3{grid-template-columns:1fr 1fr 1fr;margin-bottom:10px}
.seg button[aria-pressed="true"]{background:#ffb56322;color:var(--amber)}
.go{padding:12px 16px;border-top:1px solid var(--line);display:flex;gap:8px}
.button{flex:1;display:inline-flex;justify-content:center;align-items:center;gap:8px;padding:12px 14px;font-weight:600;font-size:14px;border:1px solid #ffb56360;background:var(--amber);color:#170f07;border-radius:8px;cursor:pointer}
.button:hover{background:#ffd096}
.button.ghost{flex:0 0 auto;background:var(--glass);color:var(--ink);border-color:var(--line);font-weight:500}
.button.ghost:hover{border-color:var(--amber)}
.handle{display:none}

/* readouts */
.hud{position:fixed;right:16px;top:64px;width:290px;z-index:4;padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.hud .stat b{display:block;font:400 21px/1.15 var(--display)}
.hud .stat span{display:block;font-size:12px;color:var(--muted);line-height:1.4}
.hud .stat.bad b{color:#ffb1a6}.hud .stat.good b{color:#b6f0d2}
.bars{display:grid;gap:5px;font:11px var(--mono)}
.bars div{display:grid;grid-template-columns:72px 1fr 44px;align-items:center;gap:8px;color:var(--muted)}
.bars i{display:block;height:6px;border-radius:3px;background:#ffffff14;overflow:hidden;position:relative}
.bars i:after{content:"";position:absolute;inset:0;width:var(--w,0%);background:var(--c,var(--amber));border-radius:3px;transition:width .3s}
.bars em{font-style:normal;text-align:right;color:var(--ink)}
.clock{font:11px var(--mono);color:var(--muted);display:flex;justify-content:space-between;gap:8px;border-top:1px solid var(--line);padding-top:8px}
.clock b{color:var(--ink);font-weight:500}
.scale{font:10.5px/1.4 var(--mono);color:#cfa77a}

/* where the hole is, when it is too small to see */
.holemark{position:fixed;left:50%;top:50%;z-index:2;pointer-events:none;transform:translate(-50%,-50%)}
.holemark i{display:block;width:26px;height:26px;border:1px solid var(--ice);border-radius:50%;box-shadow:0 0 12px #9fd4ff55}
.holemark span{position:absolute;left:34px;top:50%;transform:translateY(-50%);white-space:nowrap;font:11px var(--mono);color:var(--ice);text-shadow:0 1px 6px #000}
/* story caption */
.caption{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:3;width:min(620px,calc(100% - 680px));text-align:center;pointer-events:none}
.caption p{display:inline-block;margin:0;padding:10px 16px;border-radius:10px;background:rgba(5,4,7,.66);font-size:15px;line-height:1.45;text-shadow:0 1px 10px #000;transition:opacity .4s}
.caption p:empty{opacity:0}

/* sheets */
.sheet{position:fixed;right:16px;top:64px;bottom:16px;width:min(440px,calc(100% - 32px));z-index:8;display:none;flex-direction:column;overflow:hidden}
.sheet.open{display:flex}
.sheet header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--line)}
.sheet header h2{font:400 26px/1 var(--display);margin:0}
.sheet .x{background:none;border:1px solid var(--line);border-radius:50%;width:32px;height:32px;cursor:pointer;font-size:16px}
.sheet .body{overflow:auto;padding:16px;flex:1}
.sheet p{color:#d6ccc0;margin:0 0 12px}
.sheet h3{font:400 20px/1.2 var(--display);margin:18px 0 6px}
.mission{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:10px;display:grid;grid-template-columns:auto 1fr auto;gap:4px 12px;align-items:start}
.mission .tick{width:22px;height:22px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;font-size:12px;color:#050407;margin-top:2px}
.mission.done .tick{background:var(--green);border-color:var(--green)}
.mission b{font-weight:600}
.mission p{grid-column:2/3;font-size:13px;color:var(--muted);margin:0}
.mission button{grid-row:1/3;grid-column:3;align-self:center}
.progress{font:11px var(--mono);color:var(--muted);margin-bottom:12px}

/* noodle microscope */
.answer{font:400 23px/1.25 var(--display);color:var(--ink);margin:0 0 14px}
.ladder{position:relative;margin:8px 0 16px;padding-left:0}
.depthbox{border:1px solid var(--line);border-radius:10px;padding:14px;margin:12px 0;display:grid;gap:6px}
.depthbox .big{font:400 30px/1.1 var(--display);color:var(--amber)}
.depthbox .row{display:flex;justify-content:space-between;gap:10px;font-size:13px;color:var(--muted)}
.depthbox .row b{color:var(--ink);font-weight:500;text-align:right}
.marks{list-style:none;margin:10px 0;padding:0;border-left:1px solid var(--line)}
.marks li{position:relative;padding:5px 0 5px 16px;font-size:13px;color:var(--muted)}
.marks li:before{content:"";position:absolute;left:-4px;top:12px;width:7px;height:7px;border-radius:50%;background:var(--line)}
.marks li.edge:before{background:var(--ice)}.marks li.hit:before{background:var(--amber)}
.marks li b{color:var(--ink);font-weight:500}
.note{font-size:12px;color:#968c82}
.real-list details{border-top:1px solid var(--line);padding:10px 0}
.real-list summary{cursor:pointer;font-weight:500}
.real-list p{margin:8px 0 0;font-size:13px;color:var(--muted)}

.toast{position:fixed;left:50%;top:70px;transform:translateX(-50%);z-index:20;padding:9px 14px;border-radius:9px;background:#14110f;border:1px solid var(--amber);font-size:13px;opacity:0;transition:opacity .3s;pointer-events:none}
.toast.show{opacity:1}
.fallback{position:fixed;inset:0;display:none;place-items:center;text-align:center;padding:30px;z-index:30;background:var(--bg)}
.fallback.show{display:grid}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

@media(max-width:1100px) and (min-width:821px){.caption{width:min(560px,calc(100% - 360px));left:calc(50% + 160px)}.hud{width:250px}}
@media(max-width:820px){
 .bar{padding:8px 12px 6px;gap:6px 10px;flex-wrap:wrap}.bar h1{font-size:20px;margin-right:0}.home span.word{display:none}
 .tools{order:3;width:100%;flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
 .tools::-webkit-scrollbar{display:none}
 .controls{left:0;right:0;top:auto;bottom:0;width:auto;border-radius:14px 14px 0 0;max-height:60vh;transition:transform .3s}
 .controls.min{transform:translateY(calc(100% - 92px))}
 .handle{display:block;width:100%;background:none;border:0;padding:8px 0 2px;cursor:pointer}
 .handle i{display:block;width:40px;height:4px;border-radius:2px;background:#ffffff40;margin:0 auto}
 .controls .scroll{padding-top:8px}
 .go{order:-1;border-top:0;border-bottom:1px solid var(--line);padding:6px 12px 10px}
 .hud{left:12px;right:12px;top:84px;width:auto;padding:9px 12px;gap:5px}
 .hud .stat b{font-size:16px}.hud .stat span{font-size:11px;line-height:1.35}.hud .optional,.hud .clock{display:none}
 .bars{grid-template-columns:repeat(3,1fr);gap:8px}.bars div{grid-template-columns:1fr;gap:3px}.bars em{text-align:left}
 .scale{font-size:10px}
 .caption{left:50%;width:calc(100% - 24px);bottom:104px;top:auto}
 .caption p{font-size:13px}
 .holemark span{left:auto;right:34px;white-space:normal;width:150px;text-align:right}
 .sheet{left:0;right:0;top:auto;bottom:0;width:auto;max-height:82vh;border-radius:14px 14px 0 0}
}
@media(prefers-reduced-motion:reduce){.controls{transition:none}.bars i:after{transition:none}}
