/* V2: original CSS materials and five coordinated world environments. */
:root{--energy:#82cfff;--surface:#184856;--board-edge:#82cfff50;--piece:#7cddb0}
body{transition:background-color .4s}body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:-1;background:linear-gradient(180deg,#ffffff09,transparent 65%)}
header{padding-top:22px;padding-bottom:22px}.hero{min-height:600px}.showcase{background:linear-gradient(145deg,#346c73,#183e49);border:2px solid #ffffff50;box-shadow:0 14px 0 #122f3980,0 35px 65px #16394340}.mini div{background:linear-gradient(145deg,#d4ffe5,#75d4aa);box-shadow:inset 0 2px 1px #fff9,0 5px 0 #34896b,0 10px 10px #082c3440;border:1px solid #ffffff90}.mini div:nth-child(3n){background:linear-gradient(145deg,#ccecff,#72bbef);box-shadow:inset 0 2px 1px #fff9,0 5px 0 #4486b4,0 10px 10px #082c3440}.mini div:nth-child(5n){background:linear-gradient(145deg,#fff0b2,#edc575);box-shadow:inset 0 2px 1px #fff9,0 5px 0 #b28b42,0 10px 10px #082c3440}
.primary{border:1px solid #ffffff70;background:linear-gradient(180deg,#ffffff38,transparent),var(--accent);box-shadow:inset 0 2px 0 #ffffff70,0 5px 0 #173e4260,0 10px 24px #102e3620}.primary:active{box-shadow:inset 0 2px 0 #ffffff50,0 1px 0 #173e4260;transform:translateY(3px) scale(.99)}button{transition:transform .12s,filter .15s,box-shadow .15s}button:active{filter:brightness(.94)}
.board{background:linear-gradient(150deg,#ffffff0c,transparent 60%),var(--surface);border:2px solid var(--board-edge);box-shadow:inset 0 3px 0 #ffffff14,inset 0 -4px 0 #0002,0 8px 0 #071e2d25,0 20px 48px #0c273d25;gap:9px;padding:18px;isolation:isolate;grid-auto-rows:minmax(44px,1fr)}
.board::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(circle at 8% 8%,var(--energy),transparent 24%);opacity:.09;z-index:-1}.board::after{content:"";position:absolute;inset:7px;border:1px solid #ffffff0a;border-radius:20px;pointer-events:none}.cell{min-height:44px;background:#061e3330;border:1px solid #ffffff09;border-radius:14px;box-shadow:inset 0 2px 5px #0002;aspect-ratio:auto}
.tile{display:grid;place-items:center;min-height:44px;border-radius:13px;border:1px solid #ffffff95;background:linear-gradient(155deg,#ffffff64 0%,#ffffff08 40%,#0000000d 100%),var(--piece);color:#17364c;box-shadow:inset 0 2px 1px #ffffffb3,inset 0 -3px 0 #00000016,0 4px 0 color-mix(in srgb,var(--piece) 66%,#163347),0 7px 9px #061c3c35;transform:translateY(-2px);overflow:hidden}
.tile::before{content:"";position:absolute;left:8%;right:8%;top:5%;height:33%;border-radius:8px 8px 15px 15px;background:linear-gradient(#ffffff30,#ffffff02);pointer-events:none}.tile::after{content:"";position:absolute;inset:4px;border:1px solid #ffffff18;border-radius:10px;pointer-events:none}.tile:hover{background:linear-gradient(155deg,#ffffff64,#ffffff08 40%,#0000000d),var(--piece);transform:translateY(-4px);filter:brightness(1.05)}.tile:active{transform:translateY(1px) scale(.93);box-shadow:inset 0 2px 1px #ffffff80,0 1px 0 #0003}.arrow-icon{width:64%;height:64%;max-height:60px;max-width:60px;filter:drop-shadow(0 1px 0 #ffffff80);pointer-events:none;z-index:1}.arrow-icon path{fill:none;stroke:currentColor;stroke-width:5.5;stroke-linecap:round;stroke-linejoin:round}.tile span{background:#17364cdd;color:white;border:1px solid #ffffff60;min-width:19px;min-height:18px;display:grid;place-items:center;right:3px;bottom:3px;border-radius:7px;padding:1px 3px;font-size:11px;z-index:3;line-height:1}.tile span:empty{display:none}
.tile.lock{--piece:#93a6b0!important;color:#365269;background:repeating-linear-gradient(135deg,#ffffff15 0 5px,transparent 5px 11px),linear-gradient(#aebbc4,#829ca8);border-color:#d9e3e6}.tile.lock::after{inset:0;border:3px solid #4e6c7d66;border-radius:12px}.tile.key{--piece:#ffd77e!important;box-shadow:inset 0 2px 1px #fff9,0 4px 0 #ac853d,0 0 18px #ffdc8a55}.tile.key span{color:#fff5bc;background:#71511a;font-size:17px;animation:key-glow 1.8s ease-in-out infinite alternate}.tile.ice{--piece:#b4eafb!important;background:linear-gradient(135deg,#ffffffb0,#b9ecff7a 35%,#ffffff80 36%,#86d5f5aa 65%,#ffffff90);border:2px solid #e1f9ff;box-shadow:inset 0 0 10px #fff8,0 4px 0 #68a8c1,0 0 12px #9cddff33}.tile.ice::after{inset:0;background:linear-gradient(35deg,transparent 47%,#ffffffb0 48% 49%,transparent 50%),linear-gradient(110deg,transparent 68%,#ffffff80 69% 70%,transparent 71%)}.tile.bomb{--piece:#ffb799!important;box-shadow:inset 0 2px 1px #fffc,0 4px 0 #b76253,0 8px 10px #0002}.tile.bomb span{background:#813726;color:#fff4d9}.tile.urgent span{background:#a32339;animation:urgency .7s infinite alternate}.tile.blocked{background:linear-gradient(#ffd4a2,#ff8176)!important;box-shadow:inset 0 2px 0 #fff8,0 4px 0 #bb4e45,0 0 0 3px #ff987477;animation:blocked-bump .3s}
.cell.portal{position:relative;background:radial-gradient(ellipse,#b6a8ff55,transparent 65%);border:0;overflow:hidden;color:#e8ddff;font-size:32px}.cell.portal::before,.cell.portal::after{content:"";position:absolute;inset:10%;border:3px solid #c3b4ff;border-radius:50%;box-shadow:0 0 12px #af83ff90,inset 0 0 12px #af83ff70;pointer-events:none;animation:portal-breathe 1.8s ease-in-out infinite alternate}.cell.portal::after{inset:22%;border:2px dashed #b5e8ff;animation:portal-spin 7s linear infinite}
.journey{display:flex;justify-content:space-between;gap:8px;font-size:10px;font-weight:800;letter-spacing:1px;margin:16px 2px 7px;opacity:.85}.journey b{font-variant-numeric:tabular-nums;letter-spacing:0}.journey-track{height:4px;background:#849aa033;border-radius:10px;overflow:hidden}.journey-track i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--energy));border-radius:10px}.instruction{font-size:13px;padding:12px 0;min-height:46px}.combo{font-size:14px;height:31px;letter-spacing:1.5px;color:var(--accent);text-shadow:0 0 16px color-mix(in srgb,var(--accent),transparent 65%)}.combo[data-energy="6"]{color:var(--energy)}.combo-pop{animation:combo-rise .4s cubic-bezier(.2,.9,.3,1.3)}
.tools button{background:linear-gradient(#ffffff13,#ffffff03);box-shadow:inset 0 1px 0 #ffffff15;min-height:68px}.tools b{color:var(--energy)}.tools small{display:inline-grid;place-items:center;background:#0002;min-width:17px;min-height:17px;border-radius:6px}.rail{height:auto;min-height:65px;margin-top:12px}.rail-track{position:relative;height:21px;border-radius:12px;background:repeating-linear-gradient(90deg,#ffffff08 0 10px,#ffffff18 10px 12px);border:1px solid #b6a8ff50;margin-bottom:8px;overflow:hidden}.rail-guard{position:absolute;top:0;height:100%;background:linear-gradient(90deg,#746aa4,#b3a3ef,#746aa4);border:1px solid #f4dfff;border-radius:7px;box-shadow:0 0 12px #b19cff;font-style:normal;display:grid;place-items:center;color:#352957}.rail button{min-height:44px!important;background:#ffffff12}
.boss-game .board{border:2px solid #edd087;box-shadow:inset 0 0 30px #edd08712,0 0 0 6px #edd08712,0 0 45px #edd08719,0 16px 30px #0002}.boss-game .topline h2{color:#f3d692}.boss-mode .ambient{filter:saturate(1.3)}.boss-game .journey span{color:#e9cc84}.boss-game .board::after{border:1px dashed #edd08755}.victory-emblem,.world-orbit{width:72px;height:72px;display:grid;place-items:center;font-size:38px;margin:0 auto 16px;border-radius:24px;background:linear-gradient(145deg,#fff2c7,#e7b767);color:#664719;box-shadow:inset 0 2px 0 #fff8,0 5px 0 #a47b37,0 12px 30px #0002;transform:rotate(-7deg)}dialog{text-align:center;background:linear-gradient(155deg,#345263,#1d3449);border:1px solid #bdd7ef55;padding:26px;max-height:90dvh;overflow:auto;animation:dialog-arrive .25s ease-out}dialog h2{font-size:29px;letter-spacing:-.7px}dialog .setting{text-align:left}.victory-dialog .stars{animation:star-award .45s ease-out;font-size:40px;letter-spacing:4px}.victory-dialog .reward{animation:reward-award .55s ease-out}.reward small{display:block;font-size:9px;letter-spacing:2px;color:#c0d0bf;margin-top:5px}.next-preview{font-size:11px;line-height:1.6;border:1px solid #ffffff20;border-radius:12px;background:#ffffff09;padding:12px;color:#e4e9d6}.world-orbit{border-radius:50%;background:linear-gradient(145deg,var(--energy),var(--accent));color:#153548;box-shadow:0 0 0 8px #ffffff0b,0 0 0 16px #ffffff06;animation:orbit-arrive .6s ease-out}.wallet-pop{animation:reward-award .5s ease-out}
.escape-piece{position:fixed!important;z-index:30!important;pointer-events:none!important;margin:0!important;min-height:0!important}.escape-piece:hover{filter:none}.escape-trail{position:fixed;z-index:29;pointer-events:none;border-radius:12px;filter:blur(1px)}.v2-spark,.v2-confetti{position:fixed;z-index:40;pointer-events:none;width:5px;height:5px;border-radius:50%}.star-spark{font-size:15px;width:auto;height:auto;line-height:1}.v2-confetti{width:6px;height:11px;border-radius:2px;z-index:100}.reward-float{position:fixed;z-index:45;pointer-events:none;color:#fff7ca;font-size:15px;font-weight:900;white-space:nowrap;text-shadow:0 2px 8px #163c59;letter-spacing:1px}.unlock-pop{animation:unlock-flare .55s ease-out}.ice-crack{animation:ice-shatter .32s ease-out}
body[data-world="Sunny Park"]{background:#d8f1ed;color:#183f4d;--surface:#245e6b;--board-edge:#80bcce;--accent:#78d9a9;--energy:#7ecbff}body[data-world="Sunny Park"] .ambient{background:radial-gradient(circle at 84% 12%,#fff6c4 0 42px,transparent 43px),radial-gradient(ellipse at 25% 12%,#ffffffcc 0 80px,transparent 82px),radial-gradient(ellipse at 50% 95%,#a4d4b455,transparent 50%),linear-gradient(#d6eff5,#dcf5e5)}
body[data-world="Candy Harbor"]{background:#f2e0ee;color:#463853;--surface:#6a5683;--board-edge:#d9b7e9;--accent:#ffa4ce;--energy:#81e4e4}body[data-world="Candy Harbor"] .ambient{background:radial-gradient(circle at 90% 14%,#c6f5f5 0 70px,transparent 72px),radial-gradient(circle at 8% 78%,#ffb6d055 0 100px,transparent 102px),repeating-linear-gradient(135deg,#ffffff20 0 70px,transparent 70px 100px),linear-gradient(#f5e4f6,#f4dae3)}
body[data-world="Neon City"]{background:#11182f;color:#eaf1ff;--surface:#242947;--board-edge:#71d7ec70;--accent:#80e7ef;--energy:#e5a1fb}body[data-world="Neon City"] .ambient{background:linear-gradient(transparent 97%,#72dcf514 97%),linear-gradient(90deg,transparent 97%,#e598fd10 97%),radial-gradient(ellipse at 70% 20%,#7b37aa35,transparent 55%);background-size:55px 55px,55px 55px,100% 100%}
body[data-world="Mystic Temple"]{background:#292f29;color:#f6ead2;--surface:#3e5246;--board-edge:#dbbd7380;--accent:#edcf88;--energy:#85d7b5}body[data-world="Mystic Temple"] .ambient{background:repeating-linear-gradient(0deg,transparent 0 85px,#b9aa7210 85px 87px),repeating-linear-gradient(90deg,transparent 0 150px,#b9aa7208 150px 153px),radial-gradient(ellipse at 50% 10%,#cfa96935,transparent 65%)}
body[data-world="Cosmic Station"]{background:#15172e;color:#ecebff;--surface:#323150;--board-edge:#b1a0ef90;--accent:#bba6ff;--energy:#8bd9fc}body[data-world="Cosmic Station"] .ambient{background:radial-gradient(circle,#ffffff90 1px,transparent 1.8px),radial-gradient(circle,#bca6ff70 1px,transparent 2px),radial-gradient(ellipse at 75% 25%,#7253b940,transparent 60%);background-size:73px 91px,131px 147px,100% 100%}
body[data-stage="1"] .board::before{opacity:.15}body[data-stage="2"] .board::before{opacity:.23}body[data-stage="3"] .board::before{opacity:.3}body[data-stage="3"] .board{background-image:radial-gradient(circle at 100% 0%,#ffffff18,transparent 40%),linear-gradient(150deg,#ffffff0c,transparent 60%)}
body[data-world="Sunny Park"] .hero p,body[data-world="Candy Harbor"] .hero p{color:#506974}body[data-world="Sunny Park"] .eyebrow,body[data-world="Candy Harbor"] .eyebrow{color:#337464}body[data-world="Sunny Park"] .hero h1 span{color:#368569}body[data-world="Candy Harbor"] .hero h1 span{color:#b866a4}body[data-world="Sunny Park"] .hero h1 em,body[data-world="Candy Harbor"] .hero h1 em{color:#4a6773}body[data-world="Sunny Park"] .progress-card,body[data-world="Candy Harbor"] .progress-card{color:#586e74;border-color:#90b4ad}body[data-world="Sunny Park"] .progress-card strong,body[data-world="Candy Harbor"] .progress-card strong{color:#234953}body[data-world="Sunny Park"] .menu-actions button,body[data-world="Candy Harbor"] .menu-actions button{background:#ffffff8c;color:#3e5665;border:1px solid #ffffffa0;box-shadow:0 3px 0 #748f9a20}body[data-world="Sunny Park"] .menu-actions button:last-child,body[data-world="Candy Harbor"] .menu-actions button:last-child{background:transparent;color:#486771;box-shadow:none;border:0}body[data-world="Sunny Park"] .topline small,body[data-world="Candy Harbor"] .topline small{color:#546d76}body[data-world="Sunny Park"] .instruction,body[data-world="Candy Harbor"] .instruction{color:#3e6270}body[data-world="Sunny Park"] .combo{color:#28795c}body[data-world="Candy Harbor"] .combo{color:#9a4787}body[data-world="Sunny Park"] .tools button,body[data-world="Candy Harbor"] .tools button{background:#ffffff88;border-color:#a6bfca70;color:#325262}body[data-world="Sunny Park"] .tools b,body[data-world="Candy Harbor"] .tools b{color:#4182a3}body[data-world="Sunny Park"] .tools small,body[data-world="Candy Harbor"] .tools small{color:#254b5a;background:#cfdfdd}body[data-world="Sunny Park"] .chip,body[data-world="Candy Harbor"] .chip{color:#3a6658;background:#ffffff90}body[data-world="Sunny Park"] .level,body[data-world="Candy Harbor"] .level{background:#315566;color:white}body[data-world="Sunny Park"] .brand span,body[data-world="Candy Harbor"] .brand span{color:#39896a}body[data-world="Sunny Park"] .brand small,body[data-world="Candy Harbor"] .brand small{color:#5b7b80}body[data-world="Sunny Park"] footer,body[data-world="Candy Harbor"] footer{color:#496e78}body[data-world="Sunny Park"] dialog .eyebrow,body[data-world="Candy Harbor"] dialog .eyebrow{color:#b9efae}
@keyframes combo-rise{0%{opacity:0;transform:translateY(8px) scale(.8)}60%{opacity:1;transform:translateY(-2px) scale(1.08)}100%{transform:none}}@keyframes blocked-bump{0%,100%{transform:translateY(-2px)}25%{transform:translate(-3px,-2px) rotate(-2deg)}75%{transform:translate(3px,-2px) rotate(2deg)}}@keyframes key-glow{to{box-shadow:0 0 10px #ffe080;filter:brightness(1.2)}}@keyframes urgency{to{box-shadow:0 0 0 3px #ff515744;transform:scale(1.08)}}@keyframes portal-breathe{to{transform:scale(.86);opacity:.6}}@keyframes portal-spin{to{transform:rotate(360deg)}}@keyframes dialog-arrive{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}@keyframes star-award{from{opacity:0;transform:scale(.4) rotate(-8deg)}to{opacity:1;transform:none}}@keyframes reward-award{0%{transform:scale(.85)}45%{transform:scale(1.1)}100%{transform:none}}@keyframes unlock-flare{0%{filter:brightness(1.8);transform:scale(.85)}50%{transform:scale(1.08)}100%{filter:none;transform:translateY(-2px)}}@keyframes ice-shatter{0%{filter:brightness(1.8)}30%{transform:translateX(-2px)}65%{transform:translateX(2px)}100%{filter:none}}@keyframes orbit-arrive{from{transform:rotate(-40deg) scale(.6);opacity:0}to{transform:rotate(-7deg);opacity:1}}
@media(max-width:760px){.hero{min-height:0}.board{padding:12px;gap:7px}.game{max-width:520px}.tile{border-radius:11px}.journey{margin-top:10px}dialog{padding:24px}.showcase{max-width:300px}.topline{margin-bottom:10px}}@media(max-width:380px){.game .board{padding:9px;gap:4px!important}.cell{min-height:44px;border-radius:9px}.tile{border-radius:8px}.tile span{font-size:9px;min-width:14px;min-height:14px;right:1px;bottom:1px;padding:0 2px}.arrow-icon{width:74%;height:74%}.tile.key span{font-size:13px}.journey{font-size:8px;letter-spacing:.6px}.tools button{min-height:62px}.instruction{font-size:12px}.victory-emblem{width:58px;height:58px;font-size:32px}dialog h2{font-size:25px}.boss-game .board{box-shadow:0 0 0 3px #edd08715,0 15px 30px #0002}}
.reduced *, .reduced *::before,.reduced *::after{animation:none!important;transition:none!important}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* Minimum row height takes precedence over square ratio on narrow 7-column boards. */
.board{--board-gap:9px;--board-pad:18px;min-height:calc(var(--size,3)*44px + (var(--size,3) - 1)*var(--board-gap) + 2*var(--board-pad) + 4px)}
.victory-dialog::before{content:"✦  ·  ✧  ·  ✦";display:block;font-size:16px;letter-spacing:9px;color:#eac781;margin-bottom:14px;animation:star-award .5s ease-out}
.tile.tone-1:not(.lock):not(.ice):not(.bomb)::before{animation:gloss-breathe 3s ease-in-out var(--idle-delay,0s) infinite alternate}@keyframes gloss-breathe{to{opacity:.45}}
body[data-world="Sunny Park"] .rail,body[data-world="Candy Harbor"] .rail{color:#506179}body[data-world="Sunny Park"] .rail button,body[data-world="Candy Harbor"] .rail button{color:#3b4e68;background:#ffffff80}
body[data-world="Sunny Park"] .level.boss,body[data-world="Candy Harbor"] .level.boss{background:linear-gradient(#826840,#614c32);border-color:#e1bd78}body[data-world="Sunny Park"] .level.locked,body[data-world="Candy Harbor"] .level.locked{background:#6f8393}
@media(max-width:760px){.board{--board-gap:7px;--board-pad:12px}}@media(max-width:380px){.board{--board-gap:4px;--board-pad:9px}}
.reduced .tile::before,.reduced .victory-dialog::before{animation:none!important}@media(prefers-reduced-motion:reduce){.tile::before,.victory-dialog::before{animation:none!important}}

#effects{position:fixed;inset:0;pointer-events:none;overflow:hidden;contain:paint;z-index:30}html{overflow-x:hidden}
.topline button{background:var(--surface);color:#f0f6ff;border:1px solid var(--board-edge)}body[data-world="Sunny Park"] .boss-game .topline h2,body[data-world="Candy Harbor"] .boss-game .topline h2{color:#866128}body[data-world="Sunny Park"] .boss-game .journey span,body[data-world="Candy Harbor"] .boss-game .journey span{color:#866128}
