:root{--ui-scale:1;--ink:#fdf8ee;--ink-soft:#cfe0e6;--panel:#0e2430e6;--panel-solid:#0e2430;--panel-edge:#ffffff29;--accent:#ffb36b;--accent-ink:#2a1605;--mint:#6fd3c1;--focus:#ffe066;--danger:#ff8a7a;--radius:18px;--shadow:0 10px 30px #00000059;--font:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--ease:cubic-bezier(.2, .8, .2, 1);--dur:.18s;font-size:calc(18px * var(--ui-scale))}@media (prefers-reduced-motion:reduce){:root{--dur:0s}}.reduced-motion{--dur:0s}*{box-sizing:border-box}[hidden]{display:none!important}html,body{overscroll-behavior:none;height:100%;color:var(--ink);font-family:var(--font);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;touch-action:none;background:#0e2430;margin:0;overflow:hidden}body,#app{position:fixed;top:0;bottom:0;left:0;right:0}#game{outline:none;width:100%;height:100%;display:block;position:absolute;top:0;bottom:0;left:0;right:0}#ui{pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0}#ui>*{pointer-events:auto}#ui>.hud,#ui>.hidden{pointer-events:none}.btn{border:2px solid var(--panel-edge);min-height:3em;color:var(--ink);font:600 1rem/1.1 var(--font);white-space:nowrap;cursor:pointer;transition:transform var(--dur) var(--ease), background var(--dur) var(--ease), border-color var(--dur);background:#ffffff14;border-radius:14px;justify-content:center;align-items:center;gap:.55em;padding:.6em 1.1em;display:inline-flex}.btn:hover{background:#ffffff29}.btn:active,.btn.pressed{transform:scale(.96)}.btn:focus-visible{outline:4px solid var(--focus);outline-offset:3px}.seg input:focus-visible+span{outline:4px solid var(--focus);outline-offset:3px}.toggle input:focus-visible+.track{outline:4px solid var(--focus);outline-offset:3px}input[type=range]:focus-visible{outline:4px solid var(--focus);outline-offset:3px}.btn-icon{width:1.4em;height:1.4em;display:inline-flex}.btn-icon svg{width:100%;height:100%}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:#0000;box-shadow:0 6px 18px #ffb36b59}.btn.primary:hover{background:#ffc285}.btn:disabled,.btn.dim{opacity:.5;cursor:default}.btn.big{min-height:3.2em;padding:.6em 1.8em;font-size:1.3rem}.start{transition:opacity .3s var(--ease);touch-action:pan-y;background:radial-gradient(1200px 600px at 80% -10%,#ffb36b59,#0000 60%),radial-gradient(900px 500px at -10% 110%,#6fd3c147,#0000 60%),linear-gradient(160deg,#143b4d,#0e2430 70%);place-items:center;padding:24px;display:grid;position:absolute;top:0;bottom:0;left:0;right:0;overflow-y:auto}.start.hidden{opacity:0;pointer-events:none}.start-card{flex-direction:column;gap:16px;width:min(640px,100%);margin:auto 0;display:flex}.start-card.center{text-align:center;align-items:center}.start-card[hidden]{display:none}.brand{align-items:center;gap:18px;display:flex}.brand .logo{flex:none;width:88px;height:88px}.load-title{margin:0;font-size:1.6rem}.logo{filter:drop-shadow(0 12px 24px #00000059);width:132px;height:132px}.title{letter-spacing:.01em;margin:0;font-size:2.4rem;font-weight:800}.tagline{color:var(--ink-soft);margin:0;font-size:1.1rem}.status{min-height:1.4em;color:var(--ink-soft)}.progress{background:#ffffff1f;border-radius:999px;width:min(320px,80%);height:10px;overflow:hidden}.progress>div{background:var(--mint);border-radius:999px;width:0%;height:100%;transition:width .2s linear}.help{border-radius:var(--radius);color:var(--ink-soft);background:#0003;margin:4px 0 0;padding:14px 18px;font-size:.95rem;line-height:1.5}.help kbd{min-width:1.6em;color:var(--ink);font:600 .9em var(--font);background:#ffffff24;border-radius:6px;padding:0 .35em;display:inline-block}.notice{background:#ff8a7a2e;border:2px solid #ff8a7a80;border-radius:12px;padding:10px 14px;font-size:.95rem}.hud{pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0}.hud.hidden{display:none}.crosshair{border:2.5px solid #ffffffe6;border-radius:50%;width:22px;height:22px;margin:-11px 0 0 -11px;position:absolute;top:50%;left:50%;box-shadow:0 0 0 1.5px #00000073,inset 0 0 0 1.5px #00000059}.crosshair:after{content:"";background:#fff;border-radius:50%;width:4px;height:4px;margin:-2px 0 0 -2px;position:absolute;top:50%;left:50%}.topbar{top:max(12px, env(safe-area-inset-top));left:max(12px, env(safe-area-inset-left));right:max(12px, env(safe-area-inset-right));align-items:flex-start;gap:10px;display:flex;position:absolute}.chip{background:var(--panel);border:2px solid var(--panel-edge);border-radius:999px;align-items:center;gap:.4em;padding:.45em .9em;font-size:.9rem;font-weight:700;display:inline-flex}.chip .btn-icon{width:1.1em;height:1.1em}.chip.fly{color:var(--mint)}.chip[hidden]{display:none}.spacer{flex:1}.hud .btn{pointer-events:auto;background:var(--panel)}.fps{left:max(12px, env(safe-area-inset-left));bottom:max(12px, env(safe-area-inset-bottom));white-space:pre;background:#00000073;border-radius:8px;padding:4px 10px;font:600 .8rem ui-monospace,Menlo,Consolas,monospace;position:absolute}.fps[hidden]{display:none}.toast{background:var(--panel);border:2px solid var(--panel-edge);max-width:min(90vw,520px);box-shadow:var(--shadow);text-align:center;opacity:0;transition:opacity var(--dur) var(--ease), transform var(--dur) var(--ease);border-radius:14px;padding:.8em 1.2em;font-weight:600;position:absolute;top:22%;left:50%;transform:translate(-50%,-8px)}.toast.show{opacity:1;transform:translate(-50%)}.click-hint{background:var(--panel);border-radius:14px;padding:.7em 1.1em;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,40px)}.click-hint[hidden]{display:none}.overlay{transition:opacity var(--dur) var(--ease);touch-action:pan-y;background:#08141c8c;place-items:center;padding:16px;display:grid;position:absolute;top:0;bottom:0;left:0;right:0;overflow-y:auto}.overlay.hidden{opacity:0;pointer-events:none}.panel{background:var(--panel-solid);border:2px solid var(--panel-edge);width:min(560px,100%);max-height:100%;box-shadow:var(--shadow);touch-action:pan-y;border-radius:24px;flex-direction:column;gap:16px;padding:24px;display:flex;overflow-y:auto}.panel h2{margin:0;font-size:1.6rem}.panel h3{color:var(--ink-soft);text-transform:uppercase;letter-spacing:.06em;margin:8px 0 0;font-size:1.05rem}.panel p{color:var(--ink-soft);margin:0}.row{flex-wrap:wrap;gap:10px;display:flex}.row>.btn{flex:200px}.field{flex-direction:column;gap:8px;display:flex}.field-label{font-weight:700}.hint{color:var(--ink-soft);font-size:.9rem}.seg{flex-wrap:wrap;gap:8px;display:flex}.seg label{flex:90px}.seg input{opacity:0;pointer-events:none;position:absolute}.seg span{text-align:center;border:2px solid var(--panel-edge);cursor:pointer;border-radius:12px;padding:.7em .5em;font-weight:700;display:block}.seg input:checked+span{background:var(--mint);color:#06241f;border-color:#0000}.toggle{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;min-height:2.6em;font-weight:600;display:flex}.toggle input{opacity:0;pointer-events:none;position:absolute}.toggle .track{width:3.2em;height:1.8em;transition:background var(--dur);background:#ffffff2e;border-radius:999px;flex:none;position:relative}.toggle .track:after{content:"";width:1.4em;height:1.4em;transition:transform var(--dur) var(--ease);background:#fff;border-radius:50%;position:absolute;top:.2em;left:.2em}.toggle input:checked+.track{background:var(--mint)}.toggle input:checked+.track:after{transform:translate(1.4em)}input[type=range]{width:100%;height:2.4em;accent-color:var(--mint)}.fineprint{color:var(--ink-soft);text-align:center;font-size:.8rem}.touch-layer{touch-action:none;display:none;position:absolute;top:0;bottom:0;left:0;right:0}.touch-mode .touch-layer.enabled{display:block}.stick,.stick-hint{pointer-events:none;border-radius:50%;width:140px;height:140px;margin:-70px 0 0 -70px;position:absolute;top:0;left:0}.stick{background:#ffffff1f;border:3px solid #ffffff8c;display:none}.stick.visible{display:block}.stick-knob{background:#ffffffd9;border-radius:50%;width:62px;height:62px;margin:-31px 0 0 -31px;position:absolute;top:50%;left:50%;box-shadow:0 4px 12px #0000004d}.stick-hint{left:calc(max(24px, env(safe-area-inset-left)) + 90px);top:auto;bottom:calc(max(24px, env(safe-area-inset-bottom)) + 20px);color:#fffc;text-shadow:0 1px 3px #0009;border:3px dashed #ffffff73;place-items:center;margin:0 0 0 -70px;font-weight:700;display:grid}.stick-hint.hidden{display:none}.left-handed .stick-hint{left:auto;right:calc(max(24px, env(safe-area-inset-right)) + 20px);margin:0}.left-handed .touch-buttons{right:auto;left:max(16px, env(safe-area-inset-left))}.touch-buttons{right:max(16px, env(safe-area-inset-right));bottom:max(16px, env(safe-area-inset-bottom));grid-template-columns:repeat(2,5.2rem);grid-template-areas:"fly fly""run run""break place""sneak jump";gap:12px;display:grid;position:absolute}.touch-btn{touch-action:none;background:#0e2430b8;border:3px solid #ffffff80;border-radius:22px;flex-direction:column;gap:.2em;width:5.2rem;height:5.2rem;padding:.4em;font-size:.85rem}.touch-btn .btn-icon{width:1.9em;height:1.9em}.touch-btn.pressed{background:#6fd3c18c;border-color:#fff;transform:translateY(2px)}.t-run{flex-direction:row;grid-area:run;gap:.5em;width:auto;height:4.4rem}.t-run.pressed{outline-offset:2px;outline:3px solid #fff}.t-fly{flex-direction:row;grid-area:fly;gap:.5em;width:auto;height:3.4rem}.t-fly.on{border-color:var(--mint);background:#6fd3c180}.t-fly[hidden]{display:none}.t-break{grid-area:break}.t-place{grid-area:place}.t-sneak{grid-area:sneak}.t-jump{background:#ffb36b8c;grid-area:jump}@media (max-height:520px){.touch-buttons{grid-template-columns:repeat(2,4.4rem);gap:8px}.touch-btn{width:4.4rem;height:4.4rem;font-size:.78rem}.t-fly{height:2.8rem}.t-run{height:3.2rem}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.notice[hidden]{display:none}.notice.good{background:#6fd3c129;border-color:#6fd3c18c}.panel-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.panel-head .btn{min-height:2.6em}.world-name{color:var(--ink);font-weight:700}input[type=text]{border:2px solid var(--panel-edge);width:100%;min-height:2.8em;color:var(--ink);font:600 1rem var(--font);-webkit-user-select:text;user-select:text;background:#00000040;border-radius:12px;padding:.5em .8em}input[type=text]:focus-visible{outline:4px solid var(--focus);outline-offset:2px}.inline{gap:10px;display:flex}.inline input{flex:1;min-width:0}.list-head h2{color:var(--ink-soft);text-transform:uppercase;letter-spacing:.06em;margin:6px 0 0;font-size:1.2rem}.world-list{flex-direction:column;gap:10px;display:flex}.world-card{border-radius:var(--radius);border:2px solid var(--panel-edge);background:#ffffff12;flex-wrap:wrap;align-items:center;gap:12px;padding:14px 16px;display:flex}.world-info{flex:200px;min-width:0}.world-title{overflow-wrap:anywhere;font-size:1.2rem;font-weight:800}.world-sub{color:var(--ink-soft);margin-top:2px;font-size:.9rem}.world-btns{gap:8px;display:flex}.empty{color:var(--ink-soft);text-align:center}.start-actions>.btn{flex:160px}.type-cards{gap:8px;display:grid}.type-card{cursor:pointer;display:block}.type-card input{opacity:0;pointer-events:none;position:absolute}.type-card>span{border:2px solid var(--panel-edge);border-radius:12px;flex-direction:column;gap:2px;padding:.7em .9em;display:flex}.type-card small{color:var(--ink-soft);font-size:.85rem}.type-card input:checked+span{border-color:var(--mint);box-shadow:inset 0 0 0 2px var(--mint);background:#6fd3c124}.type-card input:checked+span b:before{content:"✓ ";color:var(--mint)}.type-card input:focus-visible+span{outline:4px solid var(--focus);outline-offset:3px}.danger-zone{border-top:2px dashed var(--panel-edge);padding-top:8px}.btn.hold{touch-action:none;flex:200px;position:relative;overflow:hidden}.btn.hold>*{position:relative}.btn.hold .hold-fill{transform-origin:0;transform:scaleX(var(--p,0));background:#ffffff47;position:absolute;top:0;bottom:0;left:0;right:0}.btn.hold.warn{border-color:#ffd18ab3}.btn.hold.danger{color:#ffd9d3;border-color:#ff8a7acc}.btn.hold.danger .hold-fill{background:#ff8a7a73}.btn.hold.holding{transform:none}.chips{flex-wrap:wrap;gap:8px;display:flex}.hud-buttons{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.hud-btn[hidden]{display:none}@media (max-width:900px){.hud-buttons{flex-wrap:nowrap;gap:6px}.hud-btn{flex-direction:column;gap:.1em;min-width:3.3rem;min-height:2.75rem;padding:.35em .55em;font-size:.75rem}}@media (max-width:1200px){.touch-mode .hud-buttons{flex-wrap:nowrap;gap:6px}.touch-mode .hud-btn{flex-direction:column;gap:.1em;min-width:3.3rem;min-height:2.75rem;padding:.35em .55em;font-size:.75rem}}.hand{left:50%;bottom:max(14px, env(safe-area-inset-bottom));pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:absolute;transform:translate(-50%)}.hand-slots{pointer-events:auto;touch-action:none;background:#0e24309e;border:2px solid #ffffff24;border-radius:20px;gap:6px;padding:6px;display:flex}.hand-slot{cursor:pointer;width:3.1rem;height:3.1rem;transition:transform var(--dur) var(--ease), background var(--dur);background:#ffffff0f;border:2px solid #0000;border-radius:14px;padding:0;position:relative}.hand-slot img{pointer-events:none;width:100%;height:100%;display:block}.hand-slot img[hidden]{display:none}.hand-key{font:700 .62rem var(--font);color:#ffffffbf;text-shadow:0 1px 2px #000c;position:absolute;top:1px;left:3px}.hand-slot.selected{box-shadow:0 0 0 3px var(--mint), 0 6px 14px #00000059;background:#6fd3c147;border-color:#fff;transform:translateY(-5px)scale(1.08)}.hand-slot.selected:after{content:"";background:#fff;border-radius:50%;width:7px;height:7px;margin-left:-3.5px;position:absolute;bottom:-11px;left:50%}.hand-slot:focus-visible{outline:4px solid var(--focus);outline-offset:3px}.hand-name{background:var(--panel);border:2px solid var(--panel-edge);opacity:0;transition:opacity var(--dur) var(--ease), transform var(--dur) var(--ease);border-radius:999px;padding:.3em .9em;font-size:.9rem;font-weight:700;transform:translateY(4px)}.hand-name.show{opacity:1;transform:none}.touch-mode .hand-slot{width:2.9rem;height:2.9rem}@media (max-width:1100px){.touch-mode .hand{bottom:auto;top:calc(max(12px, env(safe-area-inset-top)) + 3.8rem);flex-direction:column-reverse}}.panel.palette{width:min(760px,100%)}.pal-slots{background:#0003;border-radius:18px;flex-wrap:wrap;justify-content:center;gap:6px;padding:6px;display:flex}.pal-slots .hand-slot{width:2.8rem;height:2.8rem}.pal-slots .hand-slot.selected{transform:translateY(-3px)}.pal-grid{grid-template-columns:repeat(auto-fill,minmax(6.4rem,1fr));gap:10px;display:grid}.pal-section{grid-column:1/-1}.pal-block{border:2px solid var(--panel-edge);color:var(--ink);font:600 .85rem/1.15 var(--font);text-align:center;cursor:pointer;background:#ffffff0f;border-radius:16px;flex-direction:column;align-items:center;gap:4px;padding:8px 6px;display:flex}.pal-block img{pointer-events:none;width:3.6rem;height:3.6rem}.pal-block:hover{background:#ffffff24}.pal-block.current{border-color:var(--mint);box-shadow:inset 0 0 0 2px var(--mint)}.pal-block.current span:before{content:"✓ ";color:var(--mint)}.pal-block:focus-visible{outline:4px solid var(--focus);outline-offset:3px}.hand-count,.slot-count{font:800 .8rem var(--font);color:#fff;text-shadow:0 0 3px #000,0 1px 2px #000;position:absolute;bottom:2px;right:4px}.hand-wear{background:#0000008c;border-radius:3px;height:5px;position:absolute;bottom:3px;left:6px;right:6px;overflow:hidden}.hand-wear:before{content:"";transform-origin:0;transform:scaleX(var(--left,1));background:#7fe08a;position:absolute;top:0;bottom:0;left:0;right:0}.hand-wear.low:before{background:#ffb36b}.hand-wear[hidden]{display:none}.break-ring{pointer-events:none;width:48px;height:48px;margin:-24px 0 0 -24px;position:absolute;top:50%;left:50%}.break-ring[hidden]{display:none}.break-ring svg{width:100%;height:100%;transform:rotate(-90deg)}.break-ring circle{fill:none;stroke-width:5px}.break-ring .bg{stroke:#00000073}.break-ring .fg{stroke:#fff;stroke-linecap:round;stroke-dasharray:119.4;stroke-dashoffset:calc(119.4 * (1 - var(--p,0)))}.panel.pack{width:min(820px,100%)}.tabs{gap:8px;display:flex}.tabs .btn{flex:1}.tabs .btn.on{border-color:var(--mint);box-shadow:inset 0 0 0 2px var(--mint);background:#6fd3c14d}.tabs .btn.on .btn-label:before{content:"● "}.tabs[hidden]{display:none}.pack-say{min-height:1.3em;color:var(--ink);font-weight:700}.pack-body{flex-direction:column;gap:10px;display:flex}.slot-grid{grid-template-columns:repeat(auto-fill,minmax(3.6rem,1fr));gap:8px;display:grid}.slot{aspect-ratio:1;border:2px solid var(--panel-edge);cursor:pointer;background:#ffffff12;border-radius:14px;min-width:3.4rem;padding:4px;position:relative}.slot img{pointer-events:none;width:100%;height:100%;display:block}.slot.empty{background:#0000002e;border-style:dashed}.slot:hover{background:#ffffff26}.slot.picked{box-shadow:0 0 0 3px var(--mint);border-color:#fff;transform:translateY(-3px)}.slot.picked:after{content:"↑";color:#fff;text-shadow:0 1px 2px #000;font-weight:900;position:absolute;top:0;left:4px}.slot:focus-visible{outline:4px solid var(--focus);outline-offset:3px}.pack-info{background:#0003;border-radius:16px;flex-direction:column;gap:6px;padding:12px;display:flex}.station{background:#0003;border-radius:14px;padding:10px 12px;font-weight:700}.station.yes{color:#9ff0c0}.recipe{border:2px solid var(--panel-edge);background:#ffffff0d;border-radius:16px;flex-direction:column;gap:6px;padding:12px;display:flex}.recipe.ready{border-color:var(--mint)}.recipe-out{align-items:center;gap:10px;font-size:1.1rem;display:flex}.recipe-out img{width:2.8rem;height:2.8rem}.badge{background:var(--mint);color:#0e2430;border-radius:999px;margin-left:auto;padding:2px 10px;font-size:.85rem;font-weight:800}.ings,.bakes{flex-wrap:wrap;gap:6px 14px;margin:0;padding:0;list-style:none;display:flex}.ings li,.bakes li{align-items:center;gap:4px;display:flex}.ings img,.bakes img{width:1.8rem;height:1.8rem}.ings .have{color:var(--ink-soft);font-size:.85rem}.ings li.ok .have{color:#9ff0c0}.ings li.miss .have{color:#ffc8a8;font-weight:700}.kiln-row{flex-wrap:wrap;gap:16px;display:flex}.kiln-box{flex-direction:column;align-items:center;gap:6px;display:flex}.kiln-box .slot{width:4.6rem}.kiln-status{color:var(--ink);font-weight:700}.progress{background:#00000059;border-radius:7px;height:14px;position:relative;overflow:hidden}.progress:before{content:"";transform-origin:0;transform:scaleX(var(--p,0));background:var(--accent);position:absolute;top:0;bottom:0;left:0;right:0}.vitals{left:max(14px, env(safe-area-inset-left));bottom:max(14px, env(safe-area-inset-bottom));background:var(--panel);border:2px solid var(--panel-edge);pointer-events:none;border-radius:16px;flex-direction:column;gap:6px;min-width:13rem;padding:8px 10px;display:flex;position:absolute}.vitals[hidden],.vbar[hidden]{display:none}.vbar{grid-template-columns:3.6rem 1fr 3rem;align-items:center;gap:8px;font-size:.9rem;font-weight:700;display:grid}.vbar-track{background:#00000073;border-radius:6px;height:12px;position:relative;overflow:hidden}.vbar-fill{transform-origin:0;transform:scaleX(var(--v,1));transition:transform var(--dur);position:absolute;top:0;bottom:0;left:0;right:0}.vbar.health .vbar-fill{background:#7fe08a}.vbar.food .vbar-fill{background:#ffc36b}.vbar.breath .vbar-fill{background:#8fd0ff}.vbar.low .vbar-label:after{content:" !"}.vbar-text{text-align:right;font-variant-numeric:tabular-nums}.touch-mode .vitals{bottom:auto;top:calc(max(12px, env(safe-area-inset-top)) + 3.6rem)}.hurt-flash{pointer-events:none;opacity:0;position:absolute;top:0;bottom:0;left:0;right:0;box-shadow:inset 0 0 90px 20px #ffd696cc}.hurt-flash.on{animation:.6s ease-out hurt}@keyframes hurt{0%{opacity:1}to{opacity:0}}.reduced-motion .hurt-flash.on{animation-duration:1.2s}.chip.bundle{background:#c496dc59;border-color:#e2c6f2}.chip.bundle[hidden]{display:none}.target-name{background:var(--panel);border:2px solid var(--panel-edge);pointer-events:none;white-space:nowrap;border-radius:999px;padding:.25em .8em;font-size:.9rem;font-weight:700;position:absolute;top:calc(50% + 34px);left:50%;transform:translate(-50%)}.target-name[hidden]{display:none}.high-contrast{--ink:#fff;--ink-soft:#fff;--panel:#000;--panel-solid:#000;--panel-edge:#fff;--accent:#ffd23f;--accent-ink:#000;--mint:#7dffea;--focus:#ff0}.high-contrast .panel,.high-contrast .start-card,.high-contrast .hand-slot,.high-contrast .touch-btn{border-width:3px;border-color:#fff}.high-contrast .touch-btn{background:#000000d9}.high-contrast .muted,.high-contrast .hint{color:#fff;opacity:1}.high-contrast :focus-visible{outline-offset:3px;outline:4px solid var(--focus)!important}.panel.tasks{width:min(560px,100%)}.task-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.task{border:2px solid var(--panel-edge);background:#0003;border-radius:14px;align-items:flex-start;gap:.8em;padding:.7em .9em;display:flex}.task-mark{border:3px solid var(--ink-soft);border-radius:50%;flex:none;place-items:center;width:1.8em;height:1.8em;font-weight:800;display:grid}.task.done .task-mark{background:var(--mint);border-color:var(--mint);color:#0e2430}.task-state{color:var(--accent);font-weight:700}.task.done .task-state{color:var(--mint)}.cheer{pointer-events:none;width:0;height:0;position:absolute;top:42%;left:50%}.cheer-star{color:#ffe38a;opacity:0;text-shadow:0 0 8px #ffe38acc;font-size:1.6rem;position:absolute;top:-.5em;left:-.5em}.cheer.on .cheer-star{animation:cheer 1.4s var(--ease) forwards}@keyframes cheer{0%{opacity:0;transform:rotate(var(--a)) translateY(0) scale(.6)}25%{opacity:1}to{opacity:0;transform:rotate(var(--a)) translateY(-90px) scale(1)}}.reduced-motion .cheer{display:none}@media (prefers-reduced-motion:reduce){.cheer{display:none}}.panel.wide{width:min(760px,100%)}.btn.quiet{opacity:.85}.btn.small{min-height:2.75rem;padding:.4em .8em;font-size:.9rem}.teacher{flex-direction:column;gap:18px;display:flex}.teacher-section{flex-direction:column;gap:8px;display:flex}.teacher-details summary{cursor:pointer;background:#ffffff14;border-radius:12px;align-items:center;min-height:2.75rem;padding:0 .6em;font-weight:700;display:flex}.teacher-details summary:focus-visible{outline:4px solid var(--focus);outline-offset:3px}.teacher-details[open] summary{margin-bottom:8px}.teacher-group-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:12px;display:flex}.teacher-group-head h4{margin:0}.teacher-group-head .row>.btn{flex:none}.teacher-grid{grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));gap:6px;display:grid}.teacher-item{cursor:pointer;background:#0003;border-radius:10px;align-items:center;gap:8px;min-height:2.75rem;padding:4px 8px;display:flex}.teacher-item input{width:1.4em;height:1.4em;accent-color:var(--mint);flex:none}.teacher-item input:focus-visible{outline:4px solid var(--focus);outline-offset:2px}.teacher-item img{width:1.8em;height:1.8em;image-rendering:pixelated;flex:none}.teacher-item:has(input:not(:checked)) span{opacity:.7;text-decoration:line-through}.teacher-labels{flex-direction:column;gap:12px;display:flex}.teacher-label-row{flex-direction:column;gap:4px;display:flex}.world-label{background:var(--mint);color:#0e2430;vertical-align:middle;border-radius:999px;margin-right:.5em;padding:.1em .6em;font-size:.85rem;font-weight:800;display:inline-block}.world-off{color:var(--accent);margin-top:4px;font-size:.9rem;font-weight:700}.world-off:before{content:"⏸ "}.toggle input:disabled+.track{opacity:.5}.toggle:has(input:disabled){cursor:default}.seg input:disabled+span{opacity:.4;text-decoration:line-through}.high-contrast .btn.dim{color:#c8c8c8;opacity:1;background:#000;border:3px dashed #fff}.high-contrast .btn{border:3px solid #fff}.high-contrast .btn.primary{background:var(--accent);color:#000}.high-contrast .btn:disabled{opacity:.65;border-style:dashed}.hud-key{min-width:1.5em;font:700 .72rem/1.4 var(--font);color:var(--ink-soft);text-align:center;border:1.5px solid #ffffff59;border-radius:6px;margin-left:.15em;padding:0 .3em;display:inline-block}.touch-mode .hud-key{display:none}@media (max-width:900px){.hud-key{display:none}}.click-hint{text-align:center;pointer-events:none;border:2px solid var(--panel-edge);flex-direction:column;align-items:center;gap:4px;display:flex;transform:translate(-50%,44px)}.click-hint b{font-size:1.1rem}.controls-hint{left:max(12px, env(safe-area-inset-left));background:var(--panel);border:2px solid var(--panel-edge);width:min(17rem,42vw);box-shadow:var(--shadow);pointer-events:auto;border-radius:18px;flex-direction:column;gap:8px;padding:12px 14px;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.controls-hint .hint-title{font-size:1rem}.hint-rows{flex-direction:column;gap:6px;margin:0;padding:0;font-size:.9rem;list-style:none;display:flex}.hint-rows li{align-items:center;gap:8px;display:flex}.hint-rows li.learned{opacity:.6}.hint-rows li.learned:after{content:"✓";color:var(--mint);margin-left:auto;font-weight:800}.hint-keys{flex:none;gap:3px;min-width:6.2em;display:inline-flex}.controls-hint kbd,.controls-list kbd{min-width:1.7em;color:var(--ink);font:700 .85em var(--font);text-align:center;background:#ffffff24;border:1.5px solid #ffffff4d;border-radius:7px;padding:.1em .4em;display:inline-block}.controls-hint .hint-ok{min-height:2.75rem}.touch-mode .controls-hint{top:auto;bottom:calc(max(16px, env(safe-area-inset-bottom)) + 9rem);transform:none}@media (max-width:700px){.controls-hint{width:min(15rem,60vw);font-size:.9rem}}.menu-grid>.btn{flex:140px}.panel.sheet{width:min(860px,100%)}.controls-help{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px;display:grid}.controls-list{grid-template-columns:auto 1fr;align-items:center;gap:8px 14px;margin:8px 0 0;display:grid}.controls-list dt{flex-wrap:wrap;gap:4px;display:flex}.controls-list dd{color:var(--ink);margin:0}.character{grid-template-columns:minmax(200px,260px) 1fr;align-items:start;gap:20px;display:grid}.char-preview{flex-direction:column;align-items:stretch;gap:10px;display:flex;position:sticky;top:0}.avatar-canvas{aspect-ratio:3/4;background:radial-gradient(circle at 50% 35%,#2d5566,#12303d);border-radius:18px;width:100%;height:auto}.char-preview .row>.btn{flex:110px}.char-options{flex-direction:column;gap:14px;display:flex}.char-choices{flex-wrap:wrap;gap:8px;display:flex}.char-choice{flex:0 auto;position:relative}.char-choice input{opacity:0;pointer-events:none;position:absolute}.char-choice .char-text{border:2px solid var(--panel-edge);cursor:pointer;border-radius:12px;align-items:center;min-height:2.75rem;padding:.4em .9em;font-weight:700;display:inline-flex}.swatches .char-choice{display:inline-flex}.swatches .char-text{padding-left:2.6em}.swatch-chip{pointer-events:none;border:2px solid #fff9;border-radius:8px;width:1.6em;height:1.6em;margin-top:-.8em;position:absolute;top:50%;left:.55em}.char-choice input:checked~.char-text{background:var(--mint);color:#06241f;border-color:#0000}.char-choice input:checked~.char-text:after{content:" ✓"}.char-choice input:focus-visible~.char-text{outline:4px solid var(--focus);outline-offset:3px}@media (max-width:700px){.character{grid-template-columns:1fr}.char-preview{position:static}.avatar-canvas{align-self:center;max-width:220px}}.high-contrast .char-choice .char-text{border:3px solid #fff}.high-contrast .controls-hint{background:#000;border:3px solid #fff}.pack-hand{border:2px solid var(--panel-edge);background:#ffffff0f;border-radius:16px;align-items:center;gap:12px;padding:10px 14px;display:flex}.pack-hand img{width:2.8rem;height:2.8rem}.pack-hand b{display:block}.tool-list{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.tool-list li{background:#ffffff0d;border-radius:14px;align-items:center;gap:10px;padding:8px 10px;display:flex}.tool-list img{flex:none;width:2.4rem;height:2.4rem}.tool-list .none{opacity:.7}.tabs .tab-count{background:var(--accent);color:var(--accent-ink);border-radius:999px;margin-left:.4em;padding:0 .5em;font-size:.8rem;font-weight:800}@media (max-height:480px){.controls-hint{display:none!important}}
