:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--sky:#9cc8ee;--panel:#0e1014d1;--panel-edge:#ffffff14;--ink:#eceae4;--muted:#9a9ca3;--amber:#ffb347;--ok:#5fd68a;--danger:#ff5a4d;--mono:"B612 Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--sans:system-ui, -apple-system, "Hiragino Sans", "Noto Sans JP", "Yu Gothic", sans-serif}*{box-sizing:border-box}html,body{background:var(--sky);height:100%;color:var(--ink);font-family:var(--sans);margin:0;overflow:hidden}canvas{display:block}#hud{pointer-events:none;position:fixed;inset:0}#hud [hidden]{display:none!important}.panel{background:var(--panel);border:1px solid var(--panel-edge);border-radius:8px;padding:12px 14px;position:absolute}.tooltip{max-width:360px;color:var(--ink);white-space:nowrap;background:#0a0b0ee6;border:1px solid #ffb34766;border-radius:6px;padding:6px 10px;font-size:13px;line-height:1.5;position:fixed}.readout{gap:2px;min-width:190px;font-size:13px;display:grid;bottom:16px;left:16px}.readout div{justify-content:space-between;gap:14px;display:flex}.readout span{color:var(--muted)}.readout b{font-family:var(--mono);color:var(--amber);font-variant-numeric:tabular-nums;font-weight:700}.perf{font:12px var(--mono);color:var(--ok);white-space:pre;background:#0a0b0ecc;border-radius:6px;padding:6px 10px;position:absolute;bottom:16px;right:16px}.warning{text-align:center;width:100%;font:700 22px var(--mono);color:var(--danger);letter-spacing:.08em;text-shadow:0 2px 6px #000000b3;animation:.7s steps(2,start) infinite blink;position:absolute;top:14%}.status{color:var(--amber);text-shadow:0 1px 4px #000c;white-space:nowrap;font-size:13px;position:absolute;top:16px;left:50%;transform:translate(-50%)}.message{text-align:center;text-shadow:0 2px 6px #000c;font-size:17px;line-height:1.7;position:absolute;top:26%;left:50%;transform:translate(-50%)}.message:empty{display:none}.message b{letter-spacing:.04em;font-size:34px}.message.landed b{color:var(--ok)}.message.crashed b{color:var(--danger)}.message small{color:var(--ink);opacity:.85;font-size:14px}.yoke{color:var(--amber);flex-direction:column;align-items:center;gap:8px;font-size:12px;display:flex;position:absolute;bottom:20px;left:50%;transform:translate(-50%)}.yoke:before{content:"";background:linear-gradient(#ffb34740,#ffb34740) 50%/1px 100% no-repeat,linear-gradient(#ffb34740,#ffb34740) 50%/100% 1px no-repeat,#0a0b0e80;border:1px solid #ffb34799;border-radius:6px;width:100px;height:100px}.yoke-dot{background:var(--amber);border-radius:50%;width:12px;height:12px;position:absolute;top:44px}.checklist{pointer-events:none;width:min(320px,100vw - 32px);max-height:calc(100vh - 32px);font-size:12px;top:16px;right:16px;overflow:hidden}.checklist h2{justify-content:space-between;align-items:baseline;margin:0 0 8px;font-size:15px;display:flex}.checklist h2 small{color:var(--muted);font-size:11px;font-weight:400}.checklist section{border-top:1px solid var(--panel-edge);padding:6px 0}.checklist section.past{opacity:.45}.checklist h3{letter-spacing:.08em;color:var(--muted);justify-content:space-between;margin:0 0 4px;font-size:12px;display:flex}.checklist h3 span{font-family:var(--mono);letter-spacing:0}.checklist .folded h3{margin:0}.checklist section.current h3{color:var(--amber)}.checklist ul{gap:3px;margin:0;padding:0;list-style:none;display:grid}.checklist li{grid-template-columns:14px 1fr auto;align-items:baseline;gap:8px;display:grid}.checklist .text{min-width:0}.checklist .value{color:var(--muted);text-align:right;font-size:12px}.checklist .mark:before{content:"□";color:var(--muted)}.checklist li.done .mark:before{content:"✓";color:var(--ok)}.checklist li.done .text{color:var(--muted)}.checklist li.info .mark:before{content:"・"}.help{pointer-events:auto;width:min(760px,100vw - 32px);max-height:calc(100vh - 32px);padding:18px 22px;font-size:13px;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%)}.help h2{margin:0 0 10px;font-size:18px}.help h3{letter-spacing:.08em;color:var(--amber);margin:0 0 6px;font-size:12px}.help .cols{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px;display:grid}.help table{border-collapse:collapse;width:100%}.help th{text-align:left;white-space:nowrap;font-family:var(--mono);color:var(--ink);vertical-align:top;padding:3px 12px 3px 0;font-weight:700}.help td{color:var(--muted);padding:3px 0}.help .speeds{color:var(--muted);margin:14px 0 0}.help .speeds b{color:var(--amber);font-family:var(--mono)}.help .close{color:var(--muted);text-align:right;margin:10px 0 0;font-size:12px}.start{pointer-events:auto;background:linear-gradient(#0a0e1659,#0a0e16bf);place-items:center;padding:16px;display:grid;position:absolute;inset:0}.start-card{gap:14px;width:min(760px,100%);max-height:calc(100vh - 32px);margin:0;display:grid;overflow-y:auto}.start h1{font:700 34px var(--mono);letter-spacing:.02em;text-wrap:balance;margin:0}.start .lead{color:var(--ink);margin:0;line-height:1.7}.start fieldset{border:0;min-width:0;margin:0;padding:0}.start legend{color:var(--muted);margin-bottom:6px;padding:0;font-size:13px}.start .hint{color:var(--muted);margin:0;font-size:13px}.mode-select{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;display:grid}.mode-select legend{grid-column:1/-1}.mode{cursor:pointer;background:#0e1014d9;border:1px solid #ffb3474d;border-radius:8px;align-content:start;gap:4px;padding:12px 14px;display:grid;position:relative}.mode:hover{border-color:#ffb347b3}.mode input{opacity:0;pointer-events:none;position:absolute}.mode b{font-size:15px}.mode span{color:var(--muted);font-size:12px;line-height:1.6}.mode .best{font-size:12px;font-style:normal;font-family:var(--mono);color:var(--ok)}.mode .best:empty{display:none}.mode:has(input:checked){border-color:var(--amber);box-shadow:inset 0 0 0 1px var(--amber);background:#281e0eeb}.mode:has(input:checked) b{color:var(--amber)}.mode:has(input:focus-visible){outline:2px solid var(--amber);outline-offset:2px}.options{flex-wrap:wrap;gap:10px 28px;display:flex}.chips{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.chips[hidden]{display:none}.chips legend{float:left;margin:0 6px 0 0}.chips label{cursor:pointer}.chips input{opacity:0;pointer-events:none;position:absolute}.chips span{background:#0e1014d9;border:1px solid #ffb34759;border-radius:999px;padding:6px 14px;font-size:13px;display:inline-block}.chips input:checked+span{border-color:var(--amber);color:var(--amber);background:#281e0ee6}.chips input:focus-visible+span{outline:2px solid var(--amber);outline-offset:2px}.start-actions{flex-wrap:wrap;gap:10px;display:flex}.start-actions button{border:1px solid var(--amber);color:var(--amber);font:700 16px var(--sans);cursor:pointer;background:#281e0eeb;border-radius:8px;padding:12px 28px}.start-actions button:hover{background:#463212f2}.start-actions button:focus-visible{outline:2px solid var(--amber);outline-offset:2px}.start-actions .resume{color:var(--ink);background:#0e1014d9;border-color:#ffb34773;font-weight:400}.start-actions .resume small{font-family:var(--mono);color:var(--muted);margin-left:6px}.start-actions [hidden]{display:none}.tutor{border-color:#ffb34759;gap:8px;width:min(400px,100vw - 32px);max-height:calc(100vh - 32px);display:grid;top:16px;left:16px;overflow:hidden}.tutor-body{gap:6px;display:grid}.tutor-meta{letter-spacing:.08em;color:var(--amber);justify-content:space-between;margin:0;font-size:11px;display:flex}.tutor-meta span:last-child{font-family:var(--mono);color:var(--muted);letter-spacing:0}.tutor h2{text-wrap:balance;margin:0;font-size:17px;line-height:1.4}.tutor-text{color:var(--ink);margin:0;font-size:13px;line-height:1.75}.tutor-text b{color:var(--amber);font-weight:700}.tutor-next{color:var(--amber);margin:0;font-size:12px;animation:1.2s steps(2,start) infinite blink}.tutor-live:empty{display:none}.tutor-live{gap:6px;display:grid}.targets{border-collapse:collapse;width:100%;font-size:12px}.targets th{text-align:left;color:var(--muted);padding:0 8px 2px 0;font-size:11px;font-weight:400}.targets td{font-family:var(--mono);font-variant-numeric:tabular-nums;padding:2px 8px 2px 0}.targets td:first-child{font-family:var(--sans);color:var(--muted);width:4.5em}.targets tr.ok td:last-child{color:var(--ok)}.targets tr.off td:last-child{color:var(--amber)}.gate{color:var(--ink);margin:0;font-size:12px}.progress{background:#ffffff12;border-radius:4px;height:20px;position:relative;overflow:hidden}.progress span{background:#ffb34759;position:absolute;inset:0 auto 0 0}.progress b{font:400 12px/20px var(--mono);color:var(--ink);padding:0 8px;display:block;position:relative}.advice{color:var(--danger);margin:0;font-size:13px;font-weight:700}.finish{pointer-events:auto;background:#0a0e1673;place-items:center;padding:16px;display:grid;position:absolute;inset:0}.finish-card{background:var(--panel);border:1px solid #5fd68a66;border-radius:10px;gap:14px;width:min(560px,100%);max-height:calc(100vh - 32px);padding:22px;display:grid;overflow-y:auto}.finish-card h2{font:700 28px var(--mono);color:var(--ok);margin:0}.finish-card p{margin:0;line-height:1.7}.finish-card dl{gap:4px;margin:0;display:grid}.finish-card dl div{border-bottom:1px solid var(--panel-edge);justify-content:space-between;gap:12px;padding:5px 0;display:flex}.finish-card dt{color:var(--muted)}.finish-card dd{font-family:var(--mono);color:var(--ink);text-align:right;font-variant-numeric:tabular-nums;margin:0}.finish-card .score{text-align:right;min-width:4.2em;margin-left:8px;font-weight:700;display:inline-block}.finish-card .total{align-items:baseline;gap:6px;margin:0;display:flex}.finish-card .total span{color:var(--muted)}.finish-card .total b{font:700 44px var(--mono);line-height:1}.finish-card .total em{color:var(--muted);margin-left:auto;font-size:13px;font-style:normal}.finish-card .total .new-best{color:var(--ok);font-weight:700}.good{color:var(--ok)}.fair{color:var(--amber)}.poor{color:var(--danger)}.finish-buttons{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.finish-card button{text-align:left;color:var(--ink);font:inherit;cursor:pointer;background:#0e1014d9;border:1px solid #ffb34773;border-radius:8px;gap:4px;padding:12px 14px;display:grid}.finish-card button:hover{border-color:var(--amber)}.finish-card button:focus-visible{outline:2px solid var(--amber);outline-offset:2px}.finish-card button span{color:var(--muted);font-size:12px}@keyframes blink{to{visibility:hidden}}@media (prefers-reduced-motion:reduce){.warning,.tutor-next{animation:none}}
