:root{color:#fff;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#09090c;font-family:VT323,monospace;font-weight:400;line-height:1.2}html{height:var(--app-height,100dvh)}body,#root{min-height:100%;overflow-x:hidden}body{overscroll-behavior-y:contain;background:#09090c;margin:0;position:relative}html.scroll-locked,body.scroll-locked{height:var(--app-height,100dvh);overscroll-behavior:none;overflow:hidden}body.scroll-locked{touch-action:none}body:after{content:"";z-index:10000;pointer-events:none;background:radial-gradient(circle,#0000 70%,#00000080 100%);width:100vw;height:100vh;position:fixed;top:0;left:0}@keyframes flicker{0%{opacity:.985}50%{opacity:.975}to{opacity:.985}}#root:before{content:" ";z-index:9998;pointer-events:none;background:linear-gradient(#12101000 50%,#0000001a 50%) 0 0/100% 3px,linear-gradient(90deg,#ff000005,#00ff0003,#0000ff05) 0 0/4px 100%;animation:1.6s ease-in-out infinite flicker;display:block;position:fixed;inset:0}#root{background:radial-gradient(circle,#17171d 0%,#09090c 100%);min-height:100dvh;position:relative}button,select,input,textarea{touch-action:manipulation}a{color:inherit}:root{color:#fff;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:none;-moz-osx-font-smoothing:grayscale;image-rendering:pixelated;--fs-display:clamp(2.8rem, 13vw, 4.6rem);--fs-title:clamp(1.7rem, 5.2vw, 2.6rem);--fs-value:clamp(1.45rem, 4vw, 2.1rem);--fs-body:clamp(1.1rem, 2.6vw, 1.5rem);--fs-label:clamp(.74rem, 1.7vw, .95rem);--fs-micro:clamp(.66rem, 1.4vw, .8rem);--fs-cell:clamp(1.5rem, 5.5cqw, 4.2rem);--lh-tight:1.05;--r-md:12px;--r-pill:999px;--r-pixel:0px;--dur-fast:.12s;--dur-med:.24s;--dur-slow:.42s;--ease-out:cubic-bezier(.2, .88, .28, 1.1);--ease-snap:steps(2, end);--glass-bg:#080a108c;--glass-bg-strong:#080a10d1;--glass-border:#ffffff1f;--glass-blur:8px;--glass-shadow:0 8px 32px #00000080;--pixel-border:3px;--pixel-shadow:4px 4px 0 #0009;--pixel-shadow-press:1px 1px 0 #0009;background:#000;font-family:"Jersey 10",monospace;font-weight:400;line-height:1.2}button{appearance:none;transition:transform var(--dur-fast) var(--ease-snap), background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-snap);font-family:inherit}button:focus-visible{outline:2px solid var(--zone-accent,#fff);outline-offset:2px}button.primary,button.secondary{border-width:var(--pixel-border);font-family:"Jersey 10",monospace;font-size:var(--fs-body);letter-spacing:.04em;cursor:pointer;border-radius:var(--r-pixel);touch-action:manipulation;border-style:solid;padding:12px 20px}button.primary{background:var(--zone-accent-dim);border-color:var(--zone-accent);color:#fff;box-shadow:var(--pixel-shadow)}button.secondary{border-color:var(--zone-border);color:var(--zone-msg-color);background:#ffffff0a}button.primary:hover:not(:active){background:var(--zone-accent)}button.secondary:hover:not(:active){border-color:var(--zone-accent);color:#fff;background:#ffffff17}button.primary:active,button.secondary:active{box-shadow:var(--pixel-shadow-press);transform:translate(3px,3px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;image-rendering:pixelated}html,body,#root{min-height:100%;overflow-x:hidden}body{overscroll-behavior-y:contain;background:#000;margin:0}#root{min-height:100dvh}[data-zone=flowers]{--zone-accent:#ff8ea1;--zone-accent-dim:#b65f7a;--zone-accent-glow:#ff8ea159;--zone-tile-a:#ffb3bd;--zone-tile-a-text:#7a1d2d;--zone-tile-b:#ffe58a;--zone-tile-b-text:#665000;--zone-tile-c:#b7ecff;--zone-tile-c-text:#0f4f66;--zone-tile-d:#b8f5a5;--zone-tile-d-text:#1f5d1f;--zone-bg:#1a1116;--zone-bg-alt:#120b10;--zone-border:#6c4858;--zone-msg-color:#ffd7a0;--zone-empty-border:#3f2a33}[data-zone=dungeon]{--zone-accent:#c9953d;--zone-accent-dim:#7b5725;--zone-accent-glow:#c9953d52;--zone-tile-a:#4e463e;--zone-tile-a-text:#f0dfc3;--zone-tile-b:#7a4717;--zone-tile-b-text:#f3d59e;--zone-tile-c:#2c2924;--zone-tile-c-text:#d7c9ad;--zone-tile-d:#a9781f;--zone-tile-d-text:#ffd86a;--zone-bg:#1a1611;--zone-bg-alt:#120f0b;--zone-border:#5d4b36;--zone-msg-color:#e3c085;--zone-empty-border:#352b1f}[data-zone=forest]{--zone-accent:#2d9e2d;--zone-accent-dim:#1a5a1a;--zone-accent-glow:#2d9e2d59;--zone-tile-a:#144236;--zone-tile-a-text:#7fff7f;--zone-tile-b:#2f6b55;--zone-tile-b-text:#cf8;--zone-tile-c:#241438;--zone-tile-c-text:#f3c2e6;--zone-tile-d:#4f6f9b;--zone-tile-d-text:#fd8;--zone-bg:#0a1a0a;--zone-bg-alt:#050f05;--zone-border:#2d5a1b;--zone-msg-color:#7fff7f;--zone-empty-border:#1a2a1a}[data-zone=ocean]{--zone-accent:#46d0e0;--zone-accent-dim:#1a7a94;--zone-accent-glow:#46d0e059;--zone-tile-a:#1d6a9e;--zone-tile-a-text:#e0f6ff;--zone-tile-b:#12808e;--zone-tile-b-text:#e2fff8;--zone-tile-c:#173f70;--zone-tile-c-text:#a8daff;--zone-tile-d:#0f5c56;--zone-tile-d-text:#b8ffe9;--zone-bg:#061527;--zone-bg-alt:#04101f;--zone-border:#1e5c7a;--zone-msg-color:#aee8ff;--zone-empty-border:#123248}[data-zone=volcano]{--zone-accent:#f40;--zone-accent-dim:#820;--zone-accent-glow:#ff440059;--zone-tile-a:#4d1100;--zone-tile-a-text:#fa4;--zone-tile-b:#6b2200;--zone-tile-b-text:#fd8;--zone-tile-c:#2a2a2a;--zone-tile-c-text:#ccc;--zone-tile-d:#1a0a00;--zone-tile-d-text:#864;--zone-bg:#140500;--zone-bg-alt:#0a0300;--zone-border:#520;--zone-msg-color:#fa4;--zone-empty-border:#2a1000}[data-zone=cosmos]{--zone-accent:#84f;--zone-accent-dim:#418;--zone-accent-glow:#8844ff59;--zone-tile-a:#0d0066;--zone-tile-a-text:#caf;--zone-tile-b:#001a4d;--zone-tile-b-text:#8df;--zone-tile-c:#1a0044;--zone-tile-c-text:#e8f;--zone-tile-d:#00010a;--zone-tile-d-text:#68a;--zone-bg:#00020f;--zone-bg-alt:#00010a;--zone-border:#214;--zone-msg-color:#caf;--zone-empty-border:#103}.app-shell{height:var(--app-height,100dvh);background:var(--zone-bg);transition:background .5s;position:relative;overflow:hidden}.app-shell.playing-mode{padding:0}[data-zone=dungeon] .app-shell{background:repeating-linear-gradient(90deg,#0000 0 31px,#92785821 31px 32px),repeating-linear-gradient(0deg,#0000 0 31px,#92785821 31px 32px),radial-gradient(at 50% 24%,#c9953d2b 0%,#0000 58%),radial-gradient(at 50% 110%,#46342047 0%,#0000 62%),#1a1611}[data-zone=flowers] .app-shell{background:radial-gradient(at 20% 15%,#ff8ea138 0%,#0000 55%),radial-gradient(at 82% 18%,#ffe58a33 0%,#0000 55%),radial-gradient(at 48% 88%,#b8f5a533 0%,#0000 50%),radial-gradient(at 72% 62%,#b7ecff2e 0%,#0000 46%),#1a1116}[data-zone=forest] .app-shell{background:radial-gradient(at 20% 0,#143c0a99 0%,#0000 50%),radial-gradient(at 80% 0,#0f320899 0%,#0000 50%),radial-gradient(at 50% 0,#0a280566 0%,#0000 40%),#0a1a0a}[data-zone=volcano] .app-shell{background:radial-gradient(at 50% 100%,#c8320040 0%,#0000 60%),radial-gradient(at 20% 100%,#ff500026 0%,#0000 40%),radial-gradient(at 80% 100%,#ff500026 0%,#0000 40%),#140500}[data-zone=cosmos] .app-shell{background-image:radial-gradient(1px 1px at 12% 18%, #ffffffe6 0%, transparent 100%), radial-gradient(1px 1px at 34% 7%, #fff9 0%, transparent 100%), radial-gradient(1px 1px at 67% 24%, #fffc 0%, transparent 100%), radial-gradient(1px 1px at 88% 43%, #ffffff80 0%, transparent 100%), radial-gradient(1px 1px at 45% 71%, #ffffffb3 0%, transparent 100%), radial-gradient(1px 1px at 93% 62%, #fff9 0%, transparent 100%), radial-gradient(1px 1px at 5% 55%, #fff6 0%, transparent 100%), radial-gradient(1px 1px at 78% 88%, #ffffffb3 0%, transparent 100%), #00020f}[data-zone=dungeon].zone-art-bg{background-image:url(/zones/dungeon.webp)}[data-zone=flowers].zone-art-bg{background-image:url(/zones/flowers.webp)}[data-zone=forest].zone-art-bg{background-image:url(/zones/forest.webp)}[data-zone=ocean].zone-art-bg{background-image:url(/zones/ocean.webp)}[data-zone=volcano].zone-art-bg{background-image:url(/zones/volcano.webp)}[data-zone=cosmos].zone-art-bg{background-image:url(/zones/cosmos.webp)}.zone-art-bg{background-position:50%;background-repeat:no-repeat;background-size:cover}.intro-screen{min-height:100%;padding:16px 20px calc(24px + env(safe-area-inset-bottom,0px));flex-direction:column;justify-content:flex-end;display:flex;position:relative;overflow:hidden}.intro-art{z-index:0;background:#060606 url(/title.webp) top/cover no-repeat;position:absolute;inset:0}.intro-art:after{content:"";pointer-events:none;background:linear-gradient(#0000001a 30%,#000000bf 100%);position:absolute;inset:0}.intro-highscores{top:calc(14px + constant(safe-area-inset-top));top:calc(14px + env(safe-area-inset-top,0px));border:1px solid color-mix(in srgb, var(--zone-accent) 50%, #fff 50%);z-index:2;background:#05050aa3;width:min(88vw,280px);padding:10px 10px 9px;transition:opacity 1.1s,transform 1s;position:absolute;right:14px;box-shadow:0 6px 16px #00000073}.intro-highscores.hidden{opacity:0;transform:translateY(10px)}.intro-highscores.visible{opacity:1;transform:translateY(0)}.intro-highscores-title{font-size:var(--fs-body);color:color-mix(in srgb, var(--zone-accent) 82%, #fff 18%);letter-spacing:1.2px;margin-bottom:7px}.intro-highscores-table{gap:3px;display:grid}.intro-highscores-row{font-size:var(--fs-body);background:#ffffff08;border-bottom:1px solid #ffffff29;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:5px 4px 6px;display:grid}.intro-highscores-row .rank{color:color-mix(in srgb, var(--zone-msg-color) 75%, #fff 25%)}.intro-highscores-row .initials{color:#fff;letter-spacing:1.4px;font-size:var(--fs-value)}.intro-highscores-row .score{color:var(--zone-accent);font-size:var(--fs-value);text-shadow:0 0 8px color-mix(in srgb, var(--zone-accent) 50%, transparent 50%);line-height:1}.intro-highscores-empty{color:color-mix(in srgb, var(--zone-msg-color) 78%, #fff 22%);text-align:center;font-size:var(--fs-body);letter-spacing:1px;padding:8px 4px}.intro-lower{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--r-md);width:min(100%,560px);box-shadow:var(--glass-shadow);-webkit-backdrop-filter:blur(var(--glass-blur));z-index:1;max-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 40px);flex-direction:column;gap:14px;margin:0 auto;padding:18px 22px 24px;display:flex;position:relative;overflow-y:auto}.intro-lower.title-step{width:min(100%,500px);padding:18px 22px 22px}.intro-lower.setup-step{background:var(--glass-bg-strong);width:min(100%,620px)}.intro-zone-name{font-size:var(--fs-label);color:var(--zone-accent);letter-spacing:3px;text-align:center}.intro-title{font-size:var(--fs-display);color:#fff;text-align:center;text-shadow:3px 3px 0 var(--zone-accent-dim);margin:0;line-height:1.1}.intro-subtitle{font-family:VT323,monospace;font-size:var(--fs-title);color:var(--zone-msg-color);text-align:center;margin:0;line-height:1.2}.intro-rules-note{font-family:VT323,monospace;font-size:var(--fs-value);color:#ffffffe0;text-align:center;margin:-2px 0 0;line-height:1.2}.intro-preview-row{opacity:.7;grid-template-columns:repeat(10,minmax(0,1fr));gap:2px;display:grid}.intro-preview-cell{min-height:30px;font-size:var(--fs-micro);border-width:1px}.intro-controls{flex-direction:column;gap:10px;display:flex}.control-group{font-size:var(--fs-body);color:var(--zone-msg-color);grid-template-columns:1fr auto;align-items:center;gap:14px;display:grid}.control-group select{border:2px solid var(--zone-border);color:#fff;font-family:"Jersey 10",monospace;font-size:var(--fs-body);background:#00000073;max-width:220px;min-height:40px;padding:8px 10px}.intro-start-btn{background:var(--zone-accent-dim);border:var(--pixel-border) solid var(--zone-accent);border-radius:var(--r-pixel);color:#fff;width:100%;min-height:58px;font-family:"Jersey 10",monospace;font-size:var(--fs-title);cursor:pointer;letter-spacing:.06em;box-shadow:var(--pixel-shadow);touch-action:manipulation;transition:transform var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);padding:12px 14px}.intro-actions{grid-template-columns:minmax(100px,.55fr) minmax(0,1fr);gap:10px;display:grid}.intro-back-btn{min-height:58px;padding:10px 12px}.intro-start-btn:hover:not(:active){background:var(--zone-accent)}.intro-start-btn:active{box-shadow:var(--pixel-shadow-press);transform:translate(3px,3px)}.intro-back-btn:active{transform:translate(3px,3px)}.intro-start-label{animation:.35s step-end infinite pressStartBlink;display:inline-block}@keyframes pressStartBlink{0%,49%{opacity:1}50%,to{opacity:.3}}.intro-stats{gap:8px;display:flex}.intro-stat{border:2px solid var(--zone-border);text-align:center;background:#0006;flex:1;padding:6px}.intro-stat span{font-size:var(--fs-micro);color:var(--zone-accent);margin-bottom:3px;display:block}.intro-stat strong{font-size:var(--fs-body);display:block}.install-card{border:2px solid var(--zone-accent);font-size:var(--fs-body);color:var(--zone-msg-color);background:#0009;padding:10px;line-height:1.8}.game-screen{background:0 0;flex-direction:column;min-height:100%;display:flex;overflow:hidden}.game-hud{padding:6px 12px;padding-top:calc(6px + constant(safe-area-inset-top));padding-top:calc(6px + env(safe-area-inset-top,0px));-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:3;background:linear-gradient(#00000080 0%,#0003 100%);border-bottom:1px solid #ffffff1a;align-items:center;gap:10px;display:flex;position:relative}.hud-lv{font-size:var(--fs-value);color:var(--zone-accent);white-space:nowrap;text-shadow:0 1px 3px #000c;min-width:3.5rem}.xp-container{flex-direction:column;flex:1;gap:3px;display:flex}.xp-label{display:none}.xp-bar-bg{border-radius:var(--r-pill);background:#0006;height:5px;overflow:hidden}.xp-bar-fill{border-radius:var(--r-pill);background:var(--zone-accent);height:100%;transition:width .3s ease-out}.hud-actions{gap:6px;display:flex}.icon-btn{border-radius:var(--r-md);color:#fff;cursor:pointer;width:38px;height:38px;-webkit-backdrop-filter:blur(var(--glass-blur));transition:transform var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);background:#00000061;border:1px solid #ffffff29;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.icon-btn:hover:not(:disabled){background:var(--zone-accent-dim);color:#fff}.icon-btn:active:not(:disabled){background:var(--zone-accent);transform:scale(.9)}.icon-btn:disabled{opacity:.3;cursor:not-allowed}.game-info-bar{z-index:3;background:0 0;justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 12px 8px;display:flex;position:relative}.message-slot{font-family:VT323,monospace;font-size:var(--fs-value);color:var(--zone-msg-color);letter-spacing:.5px;-webkit-line-clamp:2;text-shadow:0 1px 3px #000000e6,0 0 10px #0009;-webkit-box-orient:vertical;flex:1;min-width:0;line-height:1.25;display:-webkit-box;overflow:hidden}.message-slot:before{content:"» ";color:var(--zone-accent)}.game-info-bar.invalid-feedback{animation:.32s steps(2,end) messageInvalidFlash}.game-info-bar.invalid-feedback .message-slot{color:#ffb3b3}.chain-meter{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:var(--r-md);color:#fff;background:#00000052;border:1px solid #ffffff24;flex-shrink:0;min-width:132px;padding:5px 10px}.chain-meter-top,.chain-meter-bottom{justify-content:space-between;align-items:center;gap:8px;display:flex}.chain-meter-top span,.chain-meter-bottom{color:var(--zone-msg-color)}.chain-meter-top span{font-size:var(--fs-label);letter-spacing:2px;text-transform:uppercase}.chain-meter-top strong{color:var(--zone-accent);font-family:"Jersey 10",monospace;font-size:var(--fs-value);line-height:1}.chain-meter-track{border-radius:var(--r-pill);background:#ffffff24;border:none;height:5px;margin:4px 0;overflow:hidden}.chain-meter-fill{border-radius:var(--r-pill);background:var(--zone-accent);width:0;height:100%;transition:width .16s ease-out,background .16s ease-out}.chain-meter-bottom{font-family:VT323,monospace;font-size:var(--fs-body);line-height:1}.chain-meter-bottom span:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chain-meter.is-ready{border-color:#4fa;box-shadow:0 0 12px #4fa3}.chain-meter.is-ready .chain-meter-fill{background:#4fa}.chain-meter.is-over{border-color:#ff5f5f}.chain-meter.is-over .chain-meter-fill{background:#ff5f5f}.board-stage{flex-direction:column;flex:1;justify-content:center;min-height:0;display:flex;position:relative;overflow:hidden}.board-stage:before{content:"";z-index:0;pointer-events:none;background:radial-gradient(66% 60%,#0000009e 0%,#00000061 52%,#0000 100%);position:absolute;inset:0}.board-wrap{z-index:2;justify-content:center;width:100%;padding:12px;display:flex;position:relative}.board-wrap.zone-reveal{animation:1.1s step-end both boardGate,.65s ease-out 1.1s both boardReveal}@keyframes boardGate{0%{visibility:hidden}to{visibility:visible}}@keyframes boardReveal{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.board{gap:6px;display:grid;position:relative;container-type:inline-size}.invalid-shake .board-wrap{animation:.3s steps(2,end) boardInvalidShake}.line-board{align-content:start}.board-shifting{animation:.35s ease-in-out boardShift}@keyframes boardShift{0%{transform:translateY(0)}50%{transform:translateY(2px)}to{transform:translateY(0)}}.guide-layer,.connection-layer{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.guide-layer{z-index:5}.guide-layer line{stroke:#e6e6e6cc;stroke-width:2px;stroke-dasharray:6 7;stroke-linecap:round;filter:none}.connection-layer{z-index:15}.connection-layer line{stroke:var(--zone-accent);stroke-width:4px;stroke-linecap:square;filter:drop-shadow(0 0 4px var(--zone-accent-glow))}.connection-layer.is-clearing line{animation:.58s ease-out forwards lineClearCharge}.cell{cursor:pointer;font-family:"Jersey 10",monospace;font-weight:700;font-size:var(--fs-cell);transition:transform var(--dur-fast) var(--ease-out);color:inherit;aspect-ratio:1;z-index:10;background:0 0;border:1px solid;justify-content:center;align-items:center;min-height:42px;padding:0;display:flex}.cell span{pointer-events:none}.cell.tile-a{background:color-mix(in srgb, var(--zone-tile-a) 90%, transparent);border-color:color-mix(in srgb, var(--zone-accent-dim) 55%, transparent);color:var(--zone-tile-a-text)}.cell.tile-b{background:color-mix(in srgb, var(--zone-tile-b) 90%, transparent);border-color:color-mix(in srgb, var(--zone-accent-dim) 55%, transparent);color:var(--zone-tile-b-text)}.cell.tile-c{background:color-mix(in srgb, var(--zone-tile-c) 90%, transparent);border-color:color-mix(in srgb, var(--zone-accent-dim) 55%, transparent);color:var(--zone-tile-c-text)}.cell.tile-d{background:color-mix(in srgb, var(--zone-tile-d) 90%, transparent);border-color:color-mix(in srgb, var(--zone-accent-dim) 55%, transparent);color:var(--zone-tile-d-text)}.cell.empty{border:1px dashed color-mix(in srgb, var(--zone-empty-border) 65%, transparent);cursor:default;background:#0000002e}.cell:not(.empty):not(.clearing):not(.selected):active{filter:brightness(1.25);transform:scale(.92)}.cell.selected{box-shadow:0 0 0 2px var(--zone-accent), inset 0 0 0 1px var(--zone-accent);z-index:20;animation:.12s linear infinite selectShake;color:#000!important;border-color:var(--zone-accent)!important;background:#fff!important}.cell.chain-ready{box-shadow:0 0 12px var(--zone-accent-glow), 0 0 24px var(--zone-accent-glow), inset 0 0 0 1px var(--zone-accent);animation:.4s ease-in-out infinite chainReadyPulse}.cell.clearing{animation:cellClearPop .5s cubic-bezier(.17, .84, .44, 1) var(--clear-delay,0s) forwards;box-shadow:0 0 14px var(--zone-accent-glow), 0 0 28px var(--zone-accent-glow);z-index:25;border-color:#fff!important}.cell.selected span{color:#000}.cell.hinted{box-shadow:0 0 6px var(--zone-accent-glow);animation:.8s ease-in-out infinite hintGlow;border-color:var(--zone-accent)!important}.cell.entering{animation:cellEnter .46s cubic-bezier(.2, .88, .28, 1.15) var(--enter-delay,0s) both}@keyframes cellEnter{0%{opacity:0;filter:brightness(1.5);transform:translateY(-42px)scale(.82)}68%{opacity:1;filter:brightness(1.18);transform:translateY(4px)scale(1.04)}to{opacity:1;filter:brightness();transform:translateY(0)scale(1)}}@keyframes selectShake{0%{transform:translate(1px)}to{transform:translate(-1px)}}@keyframes hintGlow{0%,to{opacity:1}50%{opacity:.55}}@keyframes chainReadyPulse{0%,to{box-shadow:0 0 8px var(--zone-accent-glow);transform:scale(1)}50%{box-shadow:0 0 20px var(--zone-accent-glow), 0 0 32px var(--zone-accent-glow);transform:scale(1.06)}}@keyframes cellClearPop{0%{opacity:1;filter:brightness();transform:scale(1)}22%{opacity:1;filter:brightness(1.65);transform:scale(1.08)}48%{opacity:1;filter:brightness(1.35);transform:scale(1.18)}to{opacity:0;filter:brightness(1.8);transform:scale(.18)rotate(3deg)}}@keyframes lineClearCharge{0%{stroke-width:4px;opacity:.85;filter:drop-shadow(0 0 3px var(--zone-accent-glow))}35%{stroke-width:7px;opacity:1;filter:drop-shadow(0 0 10px var(--zone-accent))}to{stroke-width:2px;opacity:0;filter:drop-shadow(0 0 14px var(--zone-accent))}}@keyframes boardInvalidShake{0%{transform:translate(0)}18%{transform:translate(-4px)}36%{transform:translate(4px)}54%{transform:translate(-3px)}72%{transform:translate(2px)}to{transform:translate(0)}}@keyframes messageInvalidFlash{0%{color:#ffb3b3}to{color:var(--zone-msg-color)}}.floating-layer{pointer-events:none;z-index:100;position:absolute;inset:0}.floating-text{font-family:"Jersey 10",monospace;font-size:var(--fs-value);border:3px solid var(--zone-border);text-transform:uppercase;pointer-events:none;background:#000000b8;padding:6px 10px;animation:1.2s ease-out forwards floatUp;position:absolute;box-shadow:4px 4px #000000b3}.floating-text.score{color:#fd4;border-color:var(--zone-accent)}.floating-text.combo{color:var(--zone-accent);border-color:#fff}.floating-text.success{color:#4fa;border-color:#fd4}@keyframes floatUp{0%{opacity:0;transform:translateY(20px)}20%{opacity:1}to{opacity:0;transform:translateY(-60px)}}.bottom-bar{padding:6px 10px;padding-bottom:calc(6px + env(safe-area-inset-bottom,0px));-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:3;background:linear-gradient(#0003 0%,#00000080 100%);border-top:1px solid #ffffff1a;gap:6px;display:flex;position:relative}.bottom-pill{border-radius:var(--r-md);text-align:center;background:0 0;border:1px solid #0000;flex:1;padding:2px 6px}.bottom-pill span{font-size:var(--fs-label);letter-spacing:2px;text-transform:uppercase;color:#ffffffb8;text-shadow:0 1px 2px #000c;margin-bottom:2px;display:block}.bottom-pill strong{font-family:"Jersey 10",monospace;font-size:var(--fs-value);color:#fff;text-shadow:0 1px 3px #000c;display:block}.bottom-pill.pill-score{border-color:color-mix(in srgb, var(--zone-accent) 55%, transparent);background:#00000047}.bottom-pill.pill-score strong{color:var(--zone-accent)}.bottom-pill.combo-guard-ready{border-color:#4fa;box-shadow:inset 0 0 0 1px #44ffaa80,0 0 10px #44ffaa38}.bottom-pill.combo-guard-ready span:after{content:" GUARD";color:#4fa}.score-value-wrap{min-height:1.1em;position:relative;overflow:hidden}.score-value-wrap strong{z-index:2;position:relative}.score-value-wrap.is-spinning strong{text-shadow:0 0 8px var(--zone-accent-glow);animation:.24s steps(2,end) infinite scoreSpin}.score-combo-add{z-index:1;font-size:var(--fs-body);color:#ffe58f;letter-spacing:.6px;white-space:nowrap;opacity:0;text-shadow:0 0 8px #ffdd44b3;animation:.9s cubic-bezier(.17,.84,.4,1) forwards comboToScore;position:absolute;top:50%;right:-.4rem;transform:translate(120%,-50%)scale(.88)}@keyframes scoreSpin{0%{filter:blur();transform:translateY(0)}40%{filter:blur(1.6px);transform:translateY(-3px)}to{filter:blur();transform:translateY(0)}}@keyframes comboToScore{0%{opacity:0;transform:translate(120%,-50%)scale(.88)}20%{opacity:1}55%{opacity:1;transform:translateY(-50%)scale(1)}to{opacity:0;transform:translate(-58%,-50%)scale(.72)}}.level-up-toast{background:var(--glass-bg-strong);border:var(--pixel-border) solid var(--zone-accent);border-radius:var(--r-md);text-align:center;z-index:5000;-webkit-backdrop-filter:blur(var(--glass-blur));box-shadow:var(--pixel-shadow), 0 0 60px var(--zone-accent-glow);animation:levelUpIn var(--dur-slow) var(--ease-out) both;padding:28px 36px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.level-up-toast h1{font-size:var(--fs-display);line-height:var(--lh-tight);color:var(--zone-accent);text-shadow:0 0 24px var(--zone-accent-glow);animation:levelUpStagger .52s var(--ease-out) .14s both;margin:0 0 8px}.level-up-toast p{font-size:var(--fs-body);color:var(--zone-msg-color);opacity:.9;animation:levelUpStagger .52s var(--ease-out) .26s both;margin:6px 0}@keyframes levelUpIn{0%{opacity:0;transform:translate(-50%,-50%)scale(.7)}60%{opacity:1;transform:translate(-50%,-50%)scale(1.04)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@keyframes levelUpStagger{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.gameover-banner{background:var(--glass-bg-strong);border:var(--pixel-border) solid var(--zone-accent);border-radius:var(--r-md);text-align:center;z-index:2000;width:min(90%,560px);max-height:calc(100dvh - 20px);-webkit-backdrop-filter:blur(var(--glass-blur));box-shadow:var(--pixel-shadow), var(--glass-shadow);animation:levelUpIn var(--dur-slow) var(--ease-out) both;padding:32px 40px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.gameover-banner.highscore-entry-active{top:calc(10px + env(safe-area-inset-top,0px));max-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 20px);-webkit-overflow-scrolling:touch;left:50%;overflow-y:auto;transform:translate(-50%)}.gameover-banner h2{font-size:var(--fs-title);color:var(--zone-accent);letter-spacing:.1em;margin:0 0 4px;animation:1.6s ease-in-out infinite titlePulse}.gameover-banner .grade-display{font-size:var(--fs-display);line-height:var(--lh-tight);color:#fff;text-shadow:4px 4px 0 var(--zone-accent-dim);animation:gradeIn .62s var(--ease-out) .18s both;margin:12px 0 16px;display:block}@keyframes titlePulse{0%,to{opacity:1}50%{opacity:.55}}@keyframes gradeIn{0%{opacity:0;transform:scale(.3)rotate(-8deg)}70%{opacity:1;transform:scale(1.12)rotate(2deg)}to{opacity:1;transform:scale(1)rotate(0)}}.options-modal,.highscore-modal{background:var(--glass-bg-strong);border:var(--pixel-border) solid var(--zone-accent);border-radius:var(--r-md);-webkit-backdrop-filter:blur(var(--glass-blur));box-shadow:var(--pixel-shadow), var(--glass-shadow);animation:panelIn var(--dur-med) var(--ease-out) both}.gameover-banner strong{font-size:var(--fs-title);color:var(--zone-msg-color);margin-bottom:16px;display:block}.options-backdrop{z-index:2001;background:#000000eb;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.options-modal{width:min(90%,400px);padding:24px}.highscore-modal{text-align:center;width:min(90%,420px);padding:24px}@keyframes panelIn{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.highscore-modal h3{color:var(--zone-accent);font-size:var(--fs-title);margin:0 0 10px}.highscore-modal p{font-family:VT323,monospace;font-size:var(--fs-title);color:var(--zone-msg-color);margin:0 0 14px}.highscore-input{text-align:center;text-transform:uppercase;letter-spacing:5px;width:min(220px,100%);font-family:"Jersey 10",monospace;font-size:var(--fs-title);color:#fff;border:3px solid var(--zone-border);background:#00000080;padding:12px 10px}.highscore-input:focus{border-color:var(--zone-accent);outline:none}.options-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.options-header h3{font-size:var(--fs-value);color:var(--zone-accent);margin:0}.options-panel{gap:4px;display:grid}.option-row{font-size:var(--fs-body);border-bottom:2px dashed var(--zone-border);color:var(--zone-msg-color);grid-template-columns:1fr auto;align-items:center;gap:16px;padding:10px 0;display:grid}.zone-skip-controls{align-items:center;gap:8px;display:flex}.zone-skip-label{text-align:center;min-width:78px;font-size:var(--fs-label);color:#fff}.zone-skip-controls button.secondary{font-size:var(--fs-label);padding:8px 10px}.button-row{justify-content:center;gap:12px;margin-top:16px;display:flex}.fever-mode .board{box-shadow:0 0 20px var(--zone-accent-glow)}@media (width>=1024px){#root{height:100dvh}.app-shell{width:min(100%,1120px);height:100%;min-height:0;max-height:var(--app-height,100dvh);margin:0 auto;overflow:hidden}.intro-screen,.game-screen{height:100%;min-height:0}.intro-screen{padding:20px 24px calc(28px + env(safe-area-inset-bottom,0px))}.intro-highscores{width:min(560px,100% - 80px);left:50%;right:auto;transform:translate(-50%)}.intro-highscores.hidden{transform:translate(-50%)translateY(10px)}.intro-highscores.visible{transform:translate(-50%)translateY(0)}.control-group select{font-size:var(--fs-body);min-height:38px;padding:8px 10px}}@media (width<=640px){.intro-screen{padding:12px 12px calc(16px + env(safe-area-inset-bottom,0px))}.intro-lower{width:100%;padding:14px 14px 18px}.intro-lower.title-step{width:min(100%,430px);padding:14px 16px 18px}.intro-lower.setup-step{gap:10px;padding:12px 12px 16px}.game-screen{padding:0}.board-stage{justify-content:center}.game-info-bar{gap:8px}.chain-meter{min-width:118px;padding:4px 8px}.control-group{font-size:var(--fs-body);grid-template-columns:1fr;gap:4px}.control-group select{width:100%;max-width:none;font-size:var(--fs-body)}.intro-start-btn{min-height:54px;font-size:var(--fs-title)}.intro-actions{grid-template-columns:1fr}.intro-back-btn{min-height:46px;font-size:var(--fs-body)}.intro-highscores{width:auto;left:10px;right:10px}}
