:root{--bg:#12302b;--panel:#102826c7;--panel-edge:#f6efd92e;--ink:#f6efd9;--muted:#c5cdb8;--amber:#f2b544;--heart:#e5484d;--empty:#3e4a44;--shard:#8fe7ff;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0a1d1a;--panel:#081816d6}}:root[data-theme=dark]{--bg:#0a1d1a;--panel:#081816d6}*,:before,:after{box-sizing:inherit}html{scroll-padding-top:env(safe-area-inset-top,0px)}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--ink);touch-action:none;-webkit-user-select:none;user-select:none;font-family:Nunito,system-ui,-apple-system,Segoe UI,sans-serif;overflow:hidden}#game{width:100%;height:100%;position:relative;overflow:hidden}#game canvas{width:100%;height:100%;display:block}#hud{pointer-events:none;justify-content:space-between;align-items:flex-start;gap:12px;display:flex;position:absolute;top:14px;left:16px;right:16px}#hearts{filter:drop-shadow(0 2px #00000059);gap:4px;font-size:30px;line-height:1;display:flex}.heart{color:#0000;-webkit-background-clip:text;background-clip:text}.heart.full{background-image:linear-gradient(90deg, var(--heart) 100%, var(--empty) 0)}.heart.half{background-image:linear-gradient(90deg, var(--heart) 50%, var(--empty) 50%)}.heart.empty{background-image:linear-gradient(90deg, var(--empty) 100%, var(--empty) 0)}#hudRight{flex-direction:column;align-items:flex-end;gap:8px;display:flex}#hudRow2{align-items:center;gap:8px;display:flex}#stats{gap:10px;font-size:17px;font-weight:800;display:flex}#stats span{white-space:nowrap;background:var(--panel);border:1px solid var(--panel-edge);border-radius:999px;padding:6px 12px}@media (max-width:480px){#hearts{gap:2px;font-size:24px}#stats{gap:6px;font-size:15px}#stats span{padding:4px 9px}}#stats .g{pointer-events:auto;cursor:pointer;transition:box-shadow .2s,border-color .2s}#stats .g.ready{border-color:var(--heart);box-shadow:0 0 10px #e5484db3}#stats .lv{color:var(--muted)}#stats .g i{color:var(--amber);font-style:normal}#stats .s i{color:var(--shard);font-style:normal}#goal{color:var(--muted);text-shadow:0 1px 2px #000000b3;pointer-events:none;font-size:14px;position:absolute;top:56px;left:16px;right:64px}#score{background:var(--panel);border:1px solid var(--panel-edge);white-space:nowrap;pointer-events:none;border-radius:999px;padding:6px 16px;font-size:20px;font-weight:800;transition:transform .15s;position:absolute;top:0;left:50%;transform:translate(-50%)}#score span{letter-spacing:.12em;color:var(--amber);font-size:12px}#score.bump{transform:translate(-50%)scale(1.12)}#musicBtn{pointer-events:auto;border:1px solid var(--panel-edge);background:var(--panel);width:36px;height:36px;color:var(--amber);cursor:pointer;border-radius:50%;font:800 18px Nunito,system-ui,sans-serif;position:relative}@media (max-width:480px){#hudRight{align-items:stretch}#hudRow2{justify-content:space-between}#score{padding:4px 12px;font-size:16px;position:static;transform:none}#score.bump{transform:scale(1.08)}#goal{top:100px;right:16px}}#musicBtn{justify-content:center;align-items:center;padding:0;display:flex}#musicBtn.off:after{content:"";background:currentColor;width:26px;height:2px;position:absolute;transform:rotate(-45deg)}#musicBtn.off{color:var(--muted);opacity:.6}#musicBtn:focus-visible{outline:3px solid var(--ink);outline-offset:2px}#msg{background:var(--panel);border:1px solid var(--panel-edge);opacity:0;pointer-events:none;text-align:center;border-radius:10px;width:max-content;max-width:min(88vw,520px);padding:10px 20px;font-size:17px;transition:opacity .3s,transform .3s;position:absolute;bottom:18%;left:50%;transform:translate(-50%)translateY(8px)}.touch #msg{padding:8px 16px;font-size:15px;top:144px;bottom:auto}#msg.show{opacity:1;transform:translate(-50%)translateY(0)}#bossbar{text-align:center;pointer-events:none;width:min(70vw,440px);position:absolute;top:64px;left:50%;transform:translate(-50%)}#bossbar[hidden]{display:none}#bossbar .name{letter-spacing:.02em;text-shadow:0 2px 3px #0009;font-family:IM Fell English SC,Georgia,serif;font-size:22px}#bossbar .track{border:1px solid var(--panel-edge);background:#00000073;border-radius:6px;height:10px;margin-top:4px;overflow:hidden}#bossfill{background:linear-gradient(90deg, #c9542f, var(--amber));width:100%;height:100%;transition:width .15s}.screen{background:radial-gradient(#0a1e1c59,#061210cc);justify-content:center;align-items:center;padding:20px;display:flex;position:absolute;inset:0}.screen[hidden]{display:none}.card{text-align:center;max-width:460px}.card h1{color:var(--ink);text-shadow:0 4px #0b2320,0 0 40px #f2b54459;margin:0;font-family:IM Fell English SC,Georgia,serif;font-size:clamp(48px,11vw,88px);font-weight:400;line-height:.95}.card h2{margin:0 0 6px;font-family:IM Fell English SC,Georgia,serif;font-size:clamp(36px,8vw,56px);font-weight:400}.card .place{letter-spacing:.14em;text-transform:uppercase;color:var(--amber);margin:0 0 4px;font-size:13px}.card .breakdown{max-width:300px;color:var(--muted);margin:8px auto;padding:0;font-size:15px;list-style:none}.card .breakdown li{justify-content:space-between;padding:2px 0;display:flex}.card .breakdown li b{color:var(--ink)}.card .total{color:var(--ink);margin:10px auto 0;font-size:30px;font-weight:800}.card .total span{letter-spacing:.14em;text-transform:uppercase;color:var(--amber);vertical-align:middle;font-size:13px}.card .best{color:var(--amber);margin:4px auto;font-size:14px}.card p{color:var(--muted);margin:14px auto;font-size:17px;line-height:1.55}.card .controls{color:var(--ink);opacity:.85;font-size:14px;line-height:1.7}kbd{border:1px solid var(--panel-edge);background:#f6efd91f;border-bottom-width:2px;border-radius:5px;padding:0 6px;font-family:inherit;font-weight:800}.card button{color:#2a1a05;background:var(--amber);cursor:pointer;border:0;border-radius:12px;margin-top:18px;padding:12px 34px;font:800 18px Nunito,system-ui,sans-serif;box-shadow:0 4px #a8731c}.card button:active{transform:translateY(3px);box-shadow:0 1px #a8731c}.card button:focus-visible{outline:3px solid var(--ink);outline-offset:3px}#touch{pointer-events:none;position:absolute;inset:0}#touch[hidden]{display:none}#stickZone{pointer-events:auto;width:55%;height:55%;position:absolute;bottom:0;left:0}#stickBase{width:120px;height:120px;left:32px;bottom:calc(110px + env(safe-area-inset-bottom,0px));background:#f6efd91f;border:2px solid #f6efd94d;border-radius:50%;position:absolute}#stickKnob{background:#f6efd98c;border-radius:50%;width:52px;height:52px;position:absolute;top:34px;left:34px}#touch button{color:var(--ink);touch-action:none;pointer-events:auto;border:0;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:1px;font:800 16px Nunito,system-ui,sans-serif;display:flex;position:absolute}#touch #btnA{width:74px;height:74px;right:24px;bottom:calc(133px + env(safe-area-inset-bottom,0px));color:#2a1a05;background:#f2b544cc;border:2px solid #fff3c4;font-size:34px}#touch #btnB{width:62px;height:62px;right:30px;bottom:calc(30px + env(safe-area-inset-bottom,0px));color:#2a1a05;background:#8fe7ff73;border:2px solid #fff3c4}#touch #btnAuto{width:62px;height:62px;right:110px;bottom:calc(30px + env(safe-area-inset-bottom,0px));opacity:.85;background:#1028268c;border:2px solid #f6efd959;font-size:20px}#touch #btnAuto span{letter-spacing:.08em;font-size:11px}#touch #btnAuto.on{color:#2a1a05;opacity:1;background:#f2b544d9;border-color:#fff3c4;box-shadow:0 0 12px #f2b544cc}.ico{fill:currentColor;vertical-align:-.12em;width:1em;height:1em}@media (prefers-reduced-motion:reduce){#msg{transition:none}}
