html,body,#app{width:100%;height:100%;margin:0}:root{--app-height: 100vh;--game-width: 560px}*,*:before,*:after{box-sizing:border-box}body{overflow:hidden;background:#090a12;color:#f5f1df;font-family:Inter,Trebuchet MS,Microsoft JhengHei,sans-serif}#app{position:relative;display:flex;min-height:100%;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:12px;background:linear-gradient(180deg,#13241fb8,#090a1200 24%),linear-gradient(135deg,#6c20402e,#0f5d631f 46%,#c99b481f)}#game-wrap{position:relative;width:min(calc(100vw - 24px),var(--game-width));aspect-ratio:560 / 1010}#game{display:grid;place-items:center;width:100%;height:100%}canvas{display:block;max-width:100%;max-height:100%;margin:auto;touch-action:none;-webkit-user-select:none;user-select:none}button{position:relative;overflow:hidden;min-height:44px;border:1px solid rgba(245,241,223,.18);border-radius:8px;color:#fdf8e8;background:linear-gradient(180deg,#20243ff5,#0d101ff2);box-shadow:inset 0 1px #ffffff1a,0 8px 18px #00000040;font:inherit;font-weight:800;cursor:pointer;transition:border-color .16s ease,filter .16s ease,transform .12s ease}button:not(:disabled):hover{border-color:#ffd1666b;filter:brightness(1.08)}button:not(:disabled):active{transform:translateY(1px) scale(.99)}button:disabled{cursor:not-allowed;opacity:.45}#hud,#progress-panel,#controls{z-index:2;width:min(100vw - 24px,760px)}#hud{display:grid;grid-template-columns:.8fr 1.1fr .9fr 1.35fr;gap:8px}.stat,#progress-panel{border:1px solid rgba(245,241,223,.14);border-radius:8px;background:#080a13b8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.stat{display:flex;min-width:0;flex-direction:column;justify-content:center;padding:8px 10px}.label{color:#f5f1dfa8;font-size:11px;font-weight:700;letter-spacing:0}.value{min-width:0;overflow:hidden;color:#fff7d8;font-size:20px;font-weight:900;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.score .value{color:#ffd166}#ui-time.low{color:#ff5f7d}#progress-panel{padding:9px 10px}.progress-copy,.best{display:flex;justify-content:space-between;color:#f5f1dfbd;font-size:12px;font-weight:700}.progress-copy strong,.best span{color:#fff7d8}.progress-track{height:9px;margin:7px 0 5px;overflow:hidden;border-radius:8px;background:#0000006b}#ui-progress{width:0%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#11d6a0,#ffd166,#ff5f7d);transition:width .2s ease}#controls{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}#sound-btn.off{color:#f5f1df9e;background:#12152694}#combo-toast{position:absolute;top:18px;left:50%;z-index:4;padding:6px 14px;border-radius:999px;color:#0d1120;background:#ffd166;font-size:18px;font-weight:900;opacity:0;pointer-events:none;transform:translate(-50%) scale(.86)}#combo-toast.show{animation:combo-pop .64s ease}@keyframes combo-pop{0%{opacity:0;transform:translate(-50%) scale(.75)}28%{opacity:1;transform:translate(-50%) scale(1.08)}to{opacity:0;transform:translate(-50%) scale(1)}}.overlay{position:fixed;inset:0;z-index:10;display:grid;place-items:center;padding:22px;background:#05060cb8;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.overlay.hidden,.hidden{display:none!important}.overlay-card{width:min(370px,100%);padding:24px;border:1px solid rgba(255,209,102,.34);border-radius:8px;background:linear-gradient(160deg,#121526f5,#111f22f5),#121526;box-shadow:0 24px 80px #0000008c;text-align:center}.eyebrow{margin:0 0 8px;color:#7ff7dc;font-size:12px;font-weight:900;letter-spacing:0;text-transform:uppercase}.overlay-card h1{margin:0 0 10px;color:#fff8dc;font-size:30px;line-height:1.1}.overlay-card p{margin:0;color:#f5f1dfc7;font-size:15px;line-height:1.55}.overlay-big{margin:16px 0 2px;color:#ffd166;font-size:24px;font-weight:900}#overlay-button{width:100%;margin-top:18px;color:#111322;background:linear-gradient(90deg,#ffd166,#11d6a0)}@media(max-width:680px){html,body,#app{height:100vh;height:100svh;height:100dvh;height:var(--app-height)}#app{min-height:100vh;min-height:100svh;min-height:100dvh;min-height:var(--app-height);justify-content:flex-start;gap:7px;overflow:hidden;padding:max(8px,env(safe-area-inset-top)) 8px max(10px,env(safe-area-inset-bottom))}#hud{grid-template-columns:repeat(3,1fr)}.stat.wide{grid-column:1 / -1}.value{font-size:18px}#game-wrap{width:min(calc(100vw - 12px),var(--game-width))}#controls{width:min(calc(100vw - 16px),560px);margin-top:auto}.overlay-card h1{font-size:26px}}
