:root{--ink:#05060f;--ink-soft:#090b1a99;--pig:#ff9fb2;--pig-deep:#ff7fa0;--cream:#fff1e0;--cream-dim:#fff1e09e;--cream-line:#fff1e038;--rocket:#e63946;--gold:#ffd166;--cyan:#4ce0e8;--magenta:#ff5ef2;--heart:#ff5d73;--shadow-hard:0 4px 0 #02030a73;--safe-t:env(safe-area-inset-top,0px);--safe-r:env(safe-area-inset-right,0px);--safe-b:env(safe-area-inset-bottom,0px);--safe-l:env(safe-area-inset-left,0px);--font:ui-rounded, "SF Pro Rounded", "Hiragino Maru Gothic ProN", "Arial Rounded MT Bold", "Varela Round", "Baloo 2", "Comfortaa", "Segoe UI", system-ui, sans-serif}html,body{background:var(--ink);touch-action:none;overscroll-behavior:none;width:100%;height:100%;margin:0;padding:0;overflow:hidden}body{font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}body[data-game-state=playing]{cursor:crosshair}#app{position:fixed;inset:0}#app canvas{display:block}#ui{z-index:10;pointer-events:none;font-family:var(--font);color:var(--cream);position:fixed;inset:0;overflow:hidden}#ui:after{content:"";z-index:-1;pointer-events:none;background:radial-gradient(120% 90% at 50% 45%,#0000 58%,#03040c61 86%,#020309a8 100%),linear-gradient(#03040c38,#0000 12%);position:absolute;inset:0}.panel{background:var(--ink-soft);border:2.5px solid var(--cream-line);box-shadow:var(--shadow-hard);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);border-radius:18px}.hud-label{letter-spacing:.24em;text-transform:uppercase;color:var(--cream-dim);font-size:11px;font-weight:800}.hud{opacity:0;transition:opacity .35s;position:absolute;inset:0}#ui[data-state=playing] .hud,#ui[data-state=paused] .hud{opacity:1}.hud-tl{top:calc(18px + var(--safe-t));left:calc(20px + var(--safe-l));flex-direction:column;align-items:flex-start;gap:10px;display:flex;position:absolute}.score-panel{min-width:150px;padding:9px 20px 12px}.score-value{font-variant-numeric:tabular-nums;letter-spacing:.02em;text-shadow:0 3px #02030a80;font-size:34px;font-weight:900;line-height:1.05}.score-value.bump{animation:.28s ease-out bump}.combo-area{align-items:center;gap:10px;margin-left:4px;transition:opacity .3s;display:flex}.combo-area[data-combo="1"]{opacity:.4}.combo-chip{background:var(--ink-soft);width:48px;height:48px;box-shadow:var(--shadow-hard);border-radius:50%;place-items:center;display:grid;position:relative}.combo-chip.pop{animation:.32s cubic-bezier(.2,2.2,.4,1) chipPop}.combo-ring{position:absolute;inset:0;transform:rotate(-90deg)}.combo-ring circle{fill:none;stroke-width:4px}.combo-ring .track{stroke:#fff1e024}.combo-ring .ringfill{stroke:var(--gold);stroke-linecap:round;stroke-dasharray:100}.combo-x{text-shadow:0 2px #02030a8c;font-size:17px;font-weight:900}.combo-pips{gap:5px;display:flex}.combo-pips i{background:#fff1e021;border:1.5px solid #fff1e033;border-radius:50%;width:10px;height:10px;transition:background .15s,transform .15s,box-shadow .15s}.combo-pips i.on{background:var(--gold);border-color:var(--cream);transform:scale(1.18);box-shadow:0 0 8px #ffd166b3}.combo-pips i:nth-child(5).on,.combo-pips i:nth-child(6).on{background:#ff9e6d;box-shadow:0 0 8px #ff9e6dbf}.combo-pips i:nth-child(7).on{background:var(--magenta);box-shadow:0 0 10px #ff5ef2cc}.weapon-area{align-items:center;gap:8px;margin-left:6px;display:flex}.weapon-area.pop{animation:.32s cubic-bezier(.2,2.2,.4,1) chipPop}.weapon-label{letter-spacing:.24em;color:var(--cream-dim);text-shadow:0 2px #02030a80;font-size:10px;font-weight:900}.weapon-pips{gap:7px;display:flex}.weapon-pips i{background:#fff1e01f;border:1.5px solid #fff1e038;border-radius:3px;width:11px;height:11px;transition:background .15s,transform .15s,box-shadow .15s;transform:rotate(45deg)scale(.92)}.weapon-pips i.on{background:var(--magenta);border-color:var(--cream);transform:rotate(45deg)scale(1.1);box-shadow:0 0 8px #ff5ef2bf}.weapon-pips i:nth-child(2).on{background:var(--cyan);box-shadow:0 0 8px #4ce0e8bf}.weapon-pips i:nth-child(3).on{background:var(--gold);box-shadow:0 0 9px #ffd166cc}.weapon-pips i:nth-child(4).on{background:#fff4c9;box-shadow:0 0 12px #ffe9a8f2}.status-chips{left:calc(20px + var(--safe-l));bottom:calc(22px + var(--safe-b));flex-direction:column;align-items:flex-start;gap:8px;display:flex;position:absolute}.status-chip{letter-spacing:.14em;align-items:center;gap:8px;padding:7px 14px;font-size:11px;font-weight:900;display:none}.status-chip.show{animation:.32s cubic-bezier(.2,2.2,.4,1) chipPop;display:flex}.chip-dot{border-radius:50%;width:9px;height:9px}.chip-shield{color:#b7fff0;box-shadow:var(--shadow-hard), 0 0 14px #4ce0e859;border-color:#4ce0e899}.chip-shield .chip-dot{background:var(--cyan);animation:1.6s ease-in-out infinite heartBeat;box-shadow:0 0 8px #4ce0e8e6}.chip-magnet{color:#ffe9a8;border-color:#ffd1668c}.chip-magnet .chip-dot{background:var(--gold);box-shadow:0 0 8px #ffd166e6}.chip-magnet b{font-variant-numeric:tabular-nums;text-align:right;min-width:26px}.chip-track{background:#fff1e024;border-radius:999px;width:54px;height:6px;position:relative;overflow:hidden}.chip-fill{background:linear-gradient(90deg, #e0a04c, var(--gold));transform-origin:0;border-radius:999px;position:absolute;inset:0}.hud-tr{top:calc(18px + var(--safe-t));right:calc(22px + var(--safe-r));flex-direction:column;align-items:flex-end;gap:8px;display:flex;position:absolute}.hearts{gap:8px;padding:10px 14px;display:flex}.heart{width:32px;height:32px;color:var(--heart);filter:drop-shadow(0 3px #02030a73)}.heart svg{width:100%;height:100%;display:block}.heart svg path{fill:currentColor;stroke:var(--cream);stroke-width:1.8px;paint-order:stroke;stroke-linejoin:round}.heart.beat{animation:2.4s ease-in-out infinite heartBeat}.heart.lost{color:#fff1e00f}.heart.lost svg path{stroke:#fff1e040}.heart.breaking{animation:.55s cubic-bezier(.3,1.6,.5,1) forwards heartBreak}.heart.regain{animation:.6s cubic-bezier(.3,1.6,.5,1) heartRegain}.tummy{letter-spacing:.14em;color:#ffe9a8;border-color:#ffd1668c;align-items:center;gap:8px;padding:7px 14px;font-size:11px;font-weight:900;display:flex}.tummy .chip-dot{background:var(--gold);box-shadow:0 0 8px #ffd166e6}.tummy.pop{animation:.32s cubic-bezier(.2,2.2,.4,1) chipPop}.tummy.brim{box-shadow:var(--shadow-hard), 0 0 14px #ffd16666;border-color:#ffd166e6;animation:1.1s ease-in-out infinite tummyBrim}.boost{bottom:calc(26px + var(--safe-b));width:min(340px,46vw);position:absolute;left:50%;transform:translate(-50%)}.boost-bar{border:2.5px solid var(--cream-line);background:var(--ink-soft);height:20px;box-shadow:var(--shadow-hard);border-radius:999px;position:relative;overflow:hidden}.boost-fill{background:linear-gradient(90deg, #2b93b8, var(--cyan) 55%, #b7fff0);transform-origin:0;border-radius:999px;transition:filter .2s;position:absolute;inset:3px;transform:scaleX(1)}.boost.low .boost-fill{background:linear-gradient(90deg,#b85c2b,#e0a04c)}.boost.boosting .boost-bar{box-shadow:var(--shadow-hard), 0 0 18px #4ce0e873;border-color:#4ce0e8a6}.boost.boosting .boost-fill{filter:brightness(1.25)}.boost-tick{background:linear-gradient(#05060f99 0 3px,#0000 3px calc(100% - 3px),#05060f99 calc(100% - 3px) 100%);border-radius:1px;width:2px;position:absolute;top:0;bottom:0;left:15%}.boost-label{z-index:1;letter-spacing:.3em;color:#05060fb8;text-shadow:0 1px #fff1e059;font-size:10px;font-weight:900;position:absolute;top:50%;left:14px;transform:translateY(-50%)}.mute-chip{right:calc(22px + var(--safe-r));bottom:calc(22px + var(--safe-b));letter-spacing:.2em;color:var(--cream-dim);padding:7px 14px;font-size:11px;font-weight:800;display:none;position:absolute}.mute-chip.show{display:block}.flash{pointer-events:none;opacity:0;background:radial-gradient(#0000 42%,#e6394652 100%);position:absolute;inset:0}.flash.on{animation:.45s ease-out flashFade}.banner{--accent:var(--cream);opacity:0;pointer-events:none;flex-direction:column;align-items:center;gap:4px;display:flex;position:absolute;top:21%;left:0;right:0}.banner.show{animation:.45s cubic-bezier(.16,1.3,.3,1) both bannerIn}.banner.hide{animation:.4s ease-in both bannerOut}.banner-eyebrow{letter-spacing:.42em;text-indent:.42em;color:var(--cream-dim);text-shadow:0 2px #02030a99;align-items:center;gap:14px;font-size:14px;font-weight:800;display:flex}.banner-eyebrow:before,.banner-eyebrow:after{content:"";background:color-mix(in srgb, var(--accent) 75%, transparent);border-radius:2px;width:46px;height:2.5px;box-shadow:0 2px #02030a80}.banner-eyebrow:empty{display:none}.banner-text{letter-spacing:.05em;text-align:center;color:var(--accent);-webkit-text-stroke:1.5px #0c0510d9;text-shadow:0 5px 0 #02030a8c, 0 0 38px color-mix(in srgb, var(--accent) 45%, transparent);padding:0 4vw;font-size:clamp(34px,6vw,62px);font-weight:900;line-height:1.05}.banner.show .banner-text{animation:.6s cubic-bezier(.16,1,.3,1) both bannerTrackIn}@keyframes bannerTrackIn{0%{letter-spacing:.3em}to{letter-spacing:.05em}}.banner-sub{color:var(--gold);text-shadow:0 3px #02030a99;font-size:20px;font-weight:900}.banner-sub:empty{display:none}.banner.banner-boss .banner-text{text-shadow:0 5px #02030a8c,0 0 42px #e639468c;animation:.7s ease-in-out infinite bossThrob}.banner.banner-huff .banner-text{letter-spacing:.14em;font-style:italic}.popup{opacity:0;white-space:nowrap;pointer-events:none;will-change:transform, opacity;text-shadow:0 2px #02030aa6;-webkit-text-stroke:1px #0c0510bf;font-weight:900;position:absolute;top:0;left:0}.popup-plus{color:var(--gold);font-size:23px}.popup-kill{color:var(--pig);font-size:21px}.popup-boost{color:var(--cyan);letter-spacing:.1em;font-size:19px}.popup-close{color:var(--magenta);letter-spacing:.09em;font-size:21px}.popup-combo{color:var(--gold);letter-spacing:.06em;-webkit-text-stroke:1.5px #0c0510cc;font-size:30px}.popup-big{font-size:30px}.popup-power{color:var(--cream);letter-spacing:.08em;text-shadow:0 2px #02030aa6,0 0 14px #ff5ef28c;font-size:24px}.popup-shieldpop{color:var(--cyan);text-shadow:0 2px #02030aa6,0 0 14px #4ce0e899}.popup-rescue{color:var(--pig);text-shadow:0 2px #02030aa6,0 0 14px #ff9fb2a6}.alarm-vignette{pointer-events:none;opacity:0;background:radial-gradient(115% 95%,#0000 55%,#ff3f5247 88%,#ff283c6b 100%);position:absolute;inset:0}.alarm-vignette.on{animation:.55s ease-in-out 3 alarmPulse}@keyframes alarmPulse{0%,to{opacity:0}45%{opacity:1}}.danger-edge{pointer-events:none;opacity:0;width:24%;transition:opacity .5s;position:absolute;top:0;bottom:0}.danger-edge.right{right:0}.danger-edge.left{left:0}.danger-edge.right{background:linear-gradient(270deg,#ff5e3a57,#ff5e3a1a 55%,#0000)}.danger-edge.left{background:linear-gradient(90deg,#ff5e3a57,#ff5e3a1a 55%,#0000)}.danger-edge.on{opacity:1;animation:1.1s ease-in-out infinite emberBreathe}@keyframes emberBreathe{0%,to{filter:brightness()}50%{filter:brightness(1.45)}}.danger-chip{color:#ffb347;-webkit-text-stroke:1.5px #0c0510cc;text-shadow:0 3px #02030a99,0 0 18px #ff5e3ab3;font-size:30px;font-weight:900;position:absolute;top:50%;transform:translateY(-50%)}.danger-edge.right .danger-chip{right:22px}.danger-edge.left .danger-chip{left:22px}.report-card{opacity:0;pointer-events:none;text-align:center;min-width:320px;padding:14px 22px 16px;position:absolute;top:40%;left:50%;transform:translate(-50%)scale(.7)}.report-card.show{animation:.45s cubic-bezier(.16,1.4,.3,1) both reportDeal}@keyframes reportDeal{0%{opacity:0;transform:translate(-50%,26px)scale(.7)rotate(-3deg)}to{opacity:1;transform:translate(-50%)scale(1)rotate(0)}}.report-eyebrow{letter-spacing:.34em;text-indent:.34em;color:var(--cream-dim);margin-bottom:8px;font-size:12px;font-weight:800}.report-body{justify-content:center;align-items:center;gap:18px;display:flex}.report-letter{border:2.5px solid var(--cream-line);color:var(--cream);-webkit-text-stroke:1.5px #0c0510b3;text-shadow:0 4px #02030a80;background:#02030a66;border-radius:14px;padding:6px 16px;font-size:58px;font-weight:900;line-height:1}.report-letter[data-grade=S]{color:var(--gold);text-shadow:0 4px #02030a80,0 0 26px #ffd166b3;border-color:#ffd166b3}.report-letter[data-grade=A]{color:var(--pig)}.report-letter[data-grade=B]{color:var(--cyan)}.report-letter[data-grade=C]{color:var(--cream-dim)}.report-main{text-align:left;flex-direction:column;align-items:flex-start;gap:4px;display:flex}.report-label{letter-spacing:.06em;color:var(--cream);text-shadow:0 3px #02030a8c;font-size:26px;font-weight:900}.report-stats{letter-spacing:.12em;color:var(--cream-dim);font-size:12px;font-weight:800}.report-bonus{color:var(--gold);text-shadow:0 2px #02030a99;font-size:20px;font-weight:900}.screen{display:none;position:absolute;inset:0}#ui[data-state=title] .screen-title{display:flex}.screen-title{pointer-events:auto;cursor:pointer;flex-direction:column;justify-content:space-between;align-items:center;padding:5vh 16px 12vh}.logo{width:min(720px,88vw);height:auto;animation:5.2s ease-in-out infinite logoBob;overflow:visible}.logo .lg{font-family:var(--font);paint-order:stroke;stroke:var(--cream);stroke-width:9px;stroke-linejoin:round;font-weight:900}.screen-title.enter .logo-anim{animation:.55s cubic-bezier(.2,1.8,.4,1) backwards letterPop}.logo-anim:first-of-type{animation-delay:50ms}.logo-anim:nth-of-type(2){animation-delay:.11s}.logo-anim:nth-of-type(3){animation-delay:.17s}.logo-anim:nth-of-type(4){animation-delay:.23s}.logo-anim:nth-of-type(5){animation-delay:.29s}.logo-anim:nth-of-type(6){animation-delay:.35s}.logo-anim:nth-of-type(7){animation-delay:.41s}.logo-anim:nth-of-type(8){animation-delay:.47s}.logo-anim:nth-of-type(9){animation-delay:.62s}.logo-anim:nth-of-type(10){animation-delay:.7s}.logo-anim:nth-of-type(11){animation-delay:.76s}.logo .star{transform-box:fill-box;transform-origin:50%;animation:2.6s ease-in-out infinite twinkle}.logo .star2{animation-delay:1.3s}.title-spacer{flex:1}.title-bottom{flex-direction:column;align-items:center;gap:20px;display:flex}.launch{pointer-events:auto;cursor:pointer;font-family:var(--font);letter-spacing:.2em;text-indent:.2em;color:#3a1420;background:linear-gradient(180deg, #ffe6a3, var(--gold));border:3px solid var(--cream);border-radius:999px;padding:15px 44px;font-size:clamp(17px,2.4vw,24px);font-weight:900;transition:transform .12s;animation:1.7s ease-in-out infinite launchPulse;box-shadow:0 6px #02030a80,0 0 32px #ffd16659}.launch:hover{transform:scale(1.05)}.launch:focus-visible,.btn-restart:focus-visible{outline:3px solid var(--cyan);outline-offset:3px}.tip{text-align:center;max-width:min(620px,88vw);min-height:2.8em;color:var(--cream-dim);text-shadow:0 2px #02030a80;font-size:15px;font-weight:600;line-height:1.45;transition:opacity .35s}.tip:before{content:"✦ ";color:var(--gold)}.tip.fading{opacity:0}.tip .tip-num{color:var(--gold);font-variant-numeric:tabular-nums;text-shadow:0 2px #02030a8c;font-size:1.14em;font-weight:900}.best-chip{left:calc(22px + var(--safe-l));bottom:calc(20px + var(--safe-b));align-items:baseline;gap:10px;padding:9px 16px;display:flex;position:absolute}.best-chip .hud-label{letter-spacing:.28em}.best-chip b{font-variant-numeric:tabular-nums;font-size:19px;font-weight:900}.controls-hint{right:calc(22px + var(--safe-r));bottom:calc(22px + var(--safe-b));letter-spacing:.12em;color:#fff1e080;text-align:right;text-shadow:0 2px #02030a80;font-size:11.5px;font-weight:700;position:absolute}.controls-hint b{color:#fff1e0d9}#ui[data-state=paused] .screen-pause{display:flex}.screen-pause{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);pointer-events:auto;cursor:pointer;background:#04050e8c;flex-direction:column;justify-content:center;align-items:center;gap:8px}.snooze-z{height:64px;color:var(--pig);text-shadow:0 3px #02030a8c;align-items:flex-end;gap:6px;font-weight:900;display:flex}.snooze-z span{animation:2.7s ease-in-out infinite zFloat;display:block}.snooze-z span:first-child{font-size:22px;animation-delay:0s}.snooze-z span:nth-child(2){font-size:32px;animation-delay:.45s}.snooze-z span:nth-child(3){font-size:44px;animation-delay:.9s}.pause-title{letter-spacing:.08em;color:var(--cream);-webkit-text-stroke:1.5px #0c0510cc;text-shadow:0 6px #02030a8c;font-size:clamp(40px,7vw,72px);font-weight:900}.pause-sub{letter-spacing:.22em;color:var(--cream-dim);font-size:15px;font-weight:700}.pause-sub b{color:var(--gold)}#ui[data-state=gameover] .screen-over{display:flex}.screen-over{pointer-events:auto;background:radial-gradient(#500a1847,#04050e9e);flex-direction:column;justify-content:center;align-items:center;gap:14px}.over-title{letter-spacing:.04em;color:var(--rocket);-webkit-text-stroke:2px var(--cream);text-shadow:0 7px #02030a99,0 0 44px #e6394659;font-size:clamp(46px,9vw,96px);font-weight:900;animation:.5s cubic-bezier(.2,1.6,.35,1) both slamIn}.over-sub{color:var(--cream-dim);text-shadow:0 2px #02030a80;font-size:16px;font-style:italic;font-weight:600;animation:.5s ease-out .25s both fadeUp}.over-panel{align-items:center;gap:44px;margin-top:10px;padding:18px 40px;animation:.5s ease-out .4s both fadeUp;display:flex}.over-stat{flex-direction:column;align-items:center;gap:2px;display:flex;position:relative}.over-stat b{font-variant-numeric:tabular-nums;text-shadow:0 3px #02030a8c;font-size:40px;font-weight:900;line-height:1.1}.over-stat.is-best b{color:var(--gold)}.new-best{letter-spacing:.14em;color:#3a1420;background:var(--gold);border:2.5px solid var(--cream);border-radius:999px;padding:5px 12px;font-size:12px;font-weight:900;animation:1s ease-in-out infinite newBestWiggle;display:none;position:absolute;top:-22px;right:-58px;transform:rotate(8deg);box-shadow:0 4px #02030a80}.screen-over.newbest .new-best{display:block}.btn-restart{pointer-events:auto;cursor:pointer;font-family:var(--font);letter-spacing:.16em;text-indent:.16em;color:var(--cream);background:linear-gradient(180deg, #ff6b7f, var(--rocket));border:3px solid var(--cream);border-radius:999px;margin-top:16px;padding:15px 40px;font-size:clamp(16px,2.2vw,22px);font-weight:900;transition:transform .12s;animation:.5s ease-out .55s both fadeUp;box-shadow:0 6px #02030a8c}.btn-restart:hover{transform:translateY(-2px)scale(1.04)}.btn-restart:active{transform:translateY(3px)}@keyframes bump{0%{transform:scale(1)}35%{transform:scale(1.16)}to{transform:scale(1)}}@keyframes chipPop{0%{transform:scale(1)}40%{transform:scale(1.28)rotate(-4deg)}to{transform:scale(1)}}@keyframes heartBeat{0%,to{transform:scale(1)}6%{transform:scale(1.12)}12%{transform:scale(1)}}@keyframes heartBreak{0%{transform:scale(1)}30%{transform:scale(1.45)rotate(-14deg)}to{transform:scale(1)rotate(0)}}@keyframes heartRegain{0%{filter:drop-shadow(0 3px #02030a73)brightness(2);transform:scale(.2)}55%{transform:scale(1.4)rotate(9deg)}to{filter:drop-shadow(0 3px #02030a73);transform:scale(1)rotate(0)}}@keyframes tummyBrim{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes flashFade{0%{opacity:1}to{opacity:0}}@keyframes bannerIn{0%{opacity:0;transform:translate(-56px)skew(-6deg)}to{opacity:1;transform:translate(0)skew(0)}}@keyframes bannerOut{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(48px)}}@keyframes bossThrob{0%,to{transform:scale(1)}50%{transform:scale(1.035)}}@keyframes logoBob{0%,to{transform:translateY(0)rotate(-.6deg)}50%{transform:translateY(-9px)rotate(.6deg)}}@keyframes letterPop{0%{opacity:0;transform:translateY(26px)scale(.4)}70%{opacity:1;transform:translateY(-5px)scale(1.08)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes twinkle{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.72)}}@keyframes launchPulse{0%,to{transform:scale(1);box-shadow:0 6px #02030a80,0 0 26px #ffd16647}50%{transform:scale(1.045);box-shadow:0 6px #02030a80,0 0 44px #ffd16680}}@keyframes zFloat{0%,to{opacity:.65;transform:translateY(0)rotate(-4deg)}50%{opacity:1;transform:translateY(-14px)rotate(5deg)}}@keyframes slamIn{0%{opacity:0;transform:scale(2.1)rotate(-3deg)}60%{opacity:1;transform:scale(.94)rotate(1deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes newBestWiggle{0%,to{transform:rotate(6deg)scale(1)}50%{transform:rotate(11deg)scale(1.08)}}.touch-only{display:none}body[data-touch="1"] .touch-only{display:revert}body[data-touch="1"] .kbd-only{display:none}.touch-ui{pointer-events:none;z-index:3;display:none;position:absolute;inset:0}body[data-touch="1"] #ui[data-state=playing] .touch-ui,body[data-touch="1"] #ui[data-state=paused] .touch-ui{display:block}.touch-ui button{pointer-events:auto;touch-action:none;font-family:var(--font);color:var(--cream);background:var(--ink-soft);border:2.5px solid var(--cream-line);box-shadow:var(--shadow-hard);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);-webkit-tap-highlight-color:transparent;transition:transform 90ms,background .12s,border-color .12s}.tbar{top:calc(14px + var(--safe-t));gap:10px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.tbtn{opacity:.72;border-radius:16px;place-items:center;width:46px;height:46px;padding:0;display:grid}.tbtn svg{fill:currentColor;width:22px;height:22px}.tbtn.down{background:#4ce0e838;border-color:#4ce0e88c;transform:scale(.92)}.tbtn-mute .slash{opacity:0;color:var(--rocket)}.tbtn-mute.muted .wave{opacity:0}.tbtn-mute.muted .slash{opacity:1}.tpad-boost{right:calc(20px + var(--safe-r));bottom:calc(20px + var(--safe-b));width:var(--pad);height:var(--pad);background:radial-gradient(circle at 50% 30%, #4ce0e838, transparent 68%), var(--ink-soft);color:var(--cyan);border-color:#4ce0e873;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:0;display:flex;position:absolute}.tpad-boost span{letter-spacing:.16em;color:var(--cyan);text-shadow:0 2px #02030a8c;font-size:11px;font-weight:900}.tpad-chevrons{width:26px;height:26px;margin-top:-2px}.tpad-boost.down{border-color:var(--cyan);background:radial-gradient(circle at 50% 30%, #4ce0e880, transparent 72%), var(--ink-soft);transform:scale(.93);box-shadow:0 0 22px #4ce0e873}.touch-hint{text-align:center;letter-spacing:.1em;color:#fff1e08c;text-shadow:0 2px #02030a80;max-width:min(560px,88vw);margin-top:-6px;font-size:12px;font-weight:700;line-height:1.7}.touch-hint b{color:#fff1e0e6}.rotate-hint{letter-spacing:.08em;color:var(--gold);opacity:.8;text-shadow:0 2px #02030a99;font-size:12px;font-weight:800;display:none}@media (orientation:portrait){body[data-touch="1"] .rotate-hint{display:block}}@media (height<=660px){.logo{width:min(540px,72vw)}.screen-title{padding-top:3vh}.title-bottom{gap:12px}}@media (width<=720px){.score-value{font-size:26px}.heart{width:26px;height:26px}.hud-tl{top:calc(12px + var(--safe-t));left:calc(12px + var(--safe-l))}.hud-tr{top:calc(12px + var(--safe-t));right:calc(12px + var(--safe-r))}.boost{width:58vw;bottom:calc(16px + var(--safe-b))}.over-panel{gap:24px;padding:14px 22px}.controls-hint{display:none}}@media (height<=480px) and (orientation:landscape){.hud-tl{top:calc(10px + var(--safe-t));left:calc(12px + var(--safe-l));gap:6px}.hud-tr{top:calc(10px + var(--safe-t));right:calc(12px + var(--safe-r));gap:6px}.score-panel{min-width:108px;padding:5px 14px 7px}.score-value{font-size:22px}.hud-label{font-size:9.5px}.combo-chip{width:38px;height:38px}.combo-x{font-size:14px}.combo-pips i{width:8px;height:8px}.hearts{gap:6px;padding:6px 10px}.heart{width:22px;height:22px}.tummy{padding:5px 10px;font-size:9.5px}.status-chips{bottom:calc(14px + var(--safe-b));left:calc(12px + var(--safe-l))}.boost{width:min(240px,34vw);bottom:calc(12px + var(--safe-b))}.boost-bar{height:15px}.tbar{top:calc(8px + var(--safe-t))}.tbtn{border-radius:13px;width:40px;height:40px}.tpad-boost{--pad:76px;right:calc(14px + var(--safe-r));bottom:calc(12px + var(--safe-b))}.screen-title{padding:2vh 12px 5vh}.logo{width:min(380px,56vw)}.title-bottom{gap:10px}.best-chip{bottom:calc(12px + var(--safe-b));left:calc(12px + var(--safe-l));padding:6px 12px}.best-chip b{font-size:16px}.report-card{transform:scale(.8)}}@media (width<=560px) and (orientation:portrait){.tbar{top:auto;left:calc(14px + var(--safe-l));bottom:calc(16px + var(--safe-b));transform:none}.tpad-boost{--pad:82px}.boost{width:min(300px,74vw);bottom:calc(118px + var(--safe-b))}.status-chips{bottom:calc(158px + var(--safe-b))}.touch-hint{letter-spacing:.04em;font-size:11px}.banner-text{font-size:clamp(26px,8vw,44px)}.report-card{transform:scale(.86)}}body[data-touch="1"] .mute-chip{display:none}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}
