/* In-game styles. Everything here lives inside the dark game panel. */
.game-panel{--bg:#070811;--panel:#101321;--line:#292d46;--text:#f8f9ff;--muted:#a3abc6;--cyan:#67e8f9;--purple:#a78bfa;--green:#86efac;
  position:relative;flex:2.4 1 640px;min-width:0;background:var(--c-stage,#11142A);border:1px solid #22274A;border-radius:22px;overflow:hidden;color:#fff}
.game-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 28px;padding:14px 18px}
.hud{display:flex;flex-direction:column;min-width:52px}
.hud__label{font-size:13px;color:#9AA3C7}
.hud__value{font-stretch:62%;font-weight:800;font-size:32px;line-height:1;font-variant-numeric:tabular-nums}
.game-bar__tools{margin-left:auto;display:flex;gap:8px}
.icon-btn{width:44px;height:44px;display:grid;place-items:center;border-radius:12px;border:1px solid #2E3462;background:#1B1F3E;color:#fff;cursor:pointer;padding:0}
.icon-btn:hover{background:#262B57}
.icon-btn:disabled{opacity:.5;cursor:not-allowed}
.icon-btn svg{width:20px;height:20px}
.icon-btn:focus-visible,.game-panel .btn:focus-visible{outline:3px solid #fff;outline-offset:2px}
.game-panel .arena{border-radius:0;border-left:0;border-right:0;border-color:#1E2A55}
.game-panel>.arena~.dodge-controls,.game-panel>.arena~.memory-controls,.game-panel>.arena~.merge-controls{margin:12px 16px 16px}
.game-panel>.arena~.racer-nitro{margin:12px auto 16px}
.game-panel .btn{min-height:46px;padding:0 20px;font-size:15.5px}
.game-panel .btn--primary{background:#19DFC2;color:#131A2E}
.game-panel .btn--primary:hover{background:#3EE8CF}
.game-panel .btn--ghost{background:transparent;color:#fff;box-shadow:inset 0 0 0 1px #3A4170}
.game-panel .btn--ghost:hover{background:#1B1F3E}
.beacon-form .btn{min-height:44px;padding:0 16px;background:#19DFC2;color:#131A2E}

/* Start and result overlay */
.overlay{position:absolute;z-index:6;inset:0;display:grid;place-items:center;padding:20px;background:rgba(9,11,28,.82);backdrop-filter:blur(6px);overflow:auto}
.box{text-align:center;width:min(420px,100%);display:flex;flex-direction:column;align-items:center;gap:12px}
.overlay-cover{width:132px;height:99px;border-radius:14px;object-fit:cover;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.box h2{margin:4px 0 0;font-stretch:125%;font-weight:800;font-size:clamp(22px,3.2vw,30px);line-height:1.1;letter-spacing:-.015em}
.box p{margin:0;color:#C6CCE4;line-height:1.5;font-size:15.5px;max-width:38ch}
.result{display:flex;flex-direction:column;align-items:center;gap:8px}
.result__score{font-stretch:62%;font-weight:800;font-size:clamp(64px,10vw,92px);line-height:.88;font-variant-numeric:tabular-nums}
.result__badge{padding:5px 10px;border-radius:8px;background:#19DFC2;color:#131A2E;font-weight:800;font-size:14px}
.overlay-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:6px}
.share{display:none}
.next-game{display:inline-flex;align-items:center;gap:8px;min-height:44px;color:#9FF5E6;font-weight:700;text-decoration:none}
.next-game:hover{text-decoration:underline}
.next-game svg{width:18px;height:18px}
.pause-box{text-align:center;padding:24px;display:flex;flex-direction:column;align-items:center;gap:10px}
.pause-box h2{margin:0;font-stretch:125%;font-weight:800;font-size:26px}
.pause-box p{margin:0;color:#C6CCE4}

/* Full screen and the iPhone fallback */
.game-panel:fullscreen,.game-panel.is-immersive{display:flex;flex-direction:column;width:100%;height:100%;margin:0;border-radius:0;border:0;overflow:auto}
.game-panel.is-immersive{position:fixed;inset:0;z-index:100;height:100dvh}
.game-panel:fullscreen .arena,.game-panel.is-immersive .arena{flex:1 0 auto;width:100%;height:auto!important;min-height:min(420px,60vh)}
.game-panel:fullscreen>.arena~*,.game-panel.is-immersive>.arena~*{flex:none}
html.has-immersive,html.has-immersive body{overflow:hidden}
@media (max-width:720px){
  .game-panel{border-radius:0;border-left:0;border-right:0;margin-inline:calc(var(--gutter,16px) * -1);flex-basis:calc(100% + var(--gutter,16px) * 2)}
  .game-bar{gap:8px 18px;padding:10px 12px}
  .hud__value{font-size:26px}
  .hud{min-width:0}
  .game-bar__tools{gap:6px}
}
@media (max-width:420px){
  .game-bar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));}
  .game-bar__tools{grid-column:1/-1;margin-left:0;justify-content:flex-end;order:-1}
}
/* from index inline */
[hidden]{display:none!important}
.arena{height:420px;position:relative;overflow:hidden;border-radius:18px;border:1px solid #282d48;background:radial-gradient(circle,#20264b,#0a0d19 70%)}
.arena:after{content:"";position:absolute;inset:0;background-image:linear-gradient(#fff1 1px,transparent 1px),linear-gradient(90deg,#fff1 1px,transparent 1px);background-size:40px 40px;mask-image:linear-gradient(#000,transparent)}
.arena.drag-controls{touch-action:none}
.arena button,.sort-zone{touch-action:manipulation}
.sort-zone{cursor:pointer;user-select:none;background:#1b2343;color:var(--text);font:inherit}
.target{position:absolute;z-index:3;transform:translate(-50%,-50%);width:70px;height:70px;border:0;border-radius:50%;cursor:pointer;color:#fff;font-size:27px;background:radial-gradient(circle,#fff 0 8%,var(--cyan) 9% 22%,var(--purple) 23% 62%,transparent 63%);filter:drop-shadow(0 0 18px #67e8f699);animation:p .55s infinite alternate}
@keyframes p{to{scale:1.1}}
.target.bonus{background:radial-gradient(circle,#fff 0 8%,#fbbf24 9% 22%,#fb7185 23% 62%,transparent 63%);filter:drop-shadow(0 0 24px #fbbf24);font-weight:950}
.flash{position:absolute;z-index:7;left:50%;top:50%;font-size:30px;font-weight:950;opacity:0;pointer-events:none}
.show{animation:r .5s ease}
@keyframes r{0%{opacity:0;transform:translate(-50%)}25%{opacity:1}100%{opacity:0;transform:translate(-50%,-100%)}}
.orb,.hazard,.fruit,.bomb,.number,.sort-item,.focus-card,.memory-card{position:absolute;z-index:3;border:0;display:grid;place-items:center;cursor:pointer;user-select:none}
.orb{width:42px;height:42px;border-radius:50%;background:var(--cyan);box-shadow:0 0 20px #67e8f9}
.hazard{width:40px;height:40px;border-radius:10px;background:#fb7185}
.hazard-warning{position:absolute;z-index:3;top:10px;width:40px;height:10px;border-radius:8px;background:#fda4af;box-shadow:0 0 16px #fb7185;pointer-events:none;animation:p .35s infinite alternate}
.dodge-controls{display:flex;gap:10px;margin-top:10px}
.dodge-controls button{flex:1;min-height:52px;border:1px solid #64748b;border-radius:12px;background:#1b2343;color:#fff;font-size:16px;font-weight:900;touch-action:none;cursor:pointer}
.dodge-controls button:active{background:#334570}
.player{position:absolute;z-index:4;width:48px;height:18px;border-radius:8px;background:var(--cyan);bottom:16px;box-shadow:0 0 15px #67e8f999}
.color-grid,.memory-grid,.number-grid,.focus-grid{position:absolute;z-index:3;inset:24px;display:grid;gap:10px}
.color-grid{grid-template-columns:repeat(4,1fr)}
.color-cell{border:0;border-radius:14px;cursor:pointer}
.memory-grid{grid-template-columns:repeat(4,1fr)}
.memory-controls{margin-top:10px;text-align:center}
.memory-controls button{min-height:44px;border:1px solid #667098;border-radius:10px;background:#232c4d;color:#fff;padding:8px 16px;font-weight:800;cursor:pointer}
.memory-card{position:relative;border-radius:13px;background:#242944;color:transparent;font-size:28px}
.memory-card.open,.memory-card.done{background:#fff;color:#111}
.sort-zone{position:absolute;z-index:2;bottom:18px;width:43%;height:74px;border:2px dashed #ffffff44;border-radius:16px;display:grid;place-items:center;font-weight:900}
.sort-hint{position:absolute;z-index:3;top:20px;left:8px;right:8px;text-align:center;color:#e3ecff;font-size:13px;font-weight:800;pointer-events:none}
.sort-item{touch-action:none!important;width:72px;height:72px;left:calc(50% - 36px);top:90px;border-radius:50%;font-size:34px;background:#fff;color:#111}
.number-grid{grid-template-columns:repeat(4,1fr);inset:46px 20px 18px}
.number-hint{position:absolute;z-index:4;top:10px;left:8px;right:8px;text-align:center;color:#e3ecff;font-size:13px;font-weight:800;pointer-events:none;margin:0}
.number{position:relative;border-radius:50%;background:#fff;color:#111;font-weight:950;font-size:20px}
.orbit-ring{position:absolute;z-index:2;width:230px;height:230px;border:2px solid #ffffff33;border-radius:50%;left:50%;top:50%;transform:translate(-50%,-50%)}
.orbit-dot{position:absolute;width:30px;height:30px;border-radius:50%;background:var(--cyan);left:calc(50% - 15px);top:calc(50% - 15px);transform:rotate(var(--a)) translateX(115px);box-shadow:0 0 15px var(--cyan)}
.gate{position:absolute;width:38px;height:38px;border:4px solid var(--green);border-radius:50%;left:calc(50% - 19px);top:calc(50% - 19px);transform:rotate(var(--g)) translateX(115px)}
.fruit,.bomb{width:58px;height:58px;border-radius:50%;font-size:34px;background:#ffffff15}
.focus-grid{grid-template-columns:repeat(3,1fr)}
.focus-card{position:relative;border-radius:16px;background:#222741;color:#fff;font-size:30px}
.focus-card.pick{outline:3px solid var(--cyan)}
.road{position:absolute;z-index:2;left:24%;right:24%;top:0;bottom:0;background:#171a25;border-left:5px solid #fff3;border-right:5px solid #fff3}
.car{position:absolute;z-index:4;width:42px;height:66px;border-radius:12px;background:var(--cyan);bottom:22px;left:calc(50% - 21px);font-size:30px;display:grid;place-items:center}
.enemy{position:absolute;z-index:3;width:42px;height:62px;border-radius:10px;background:#fb7185;font-size:27px;display:grid;place-items:center}
.pulse-stage{position:absolute;z-index:3;inset:0;display:grid;place-items:center;cursor:pointer}
.pulse-goal{position:absolute;width:190px;height:190px;border:12px solid #86efac33;outline:2px solid var(--green);border-radius:50%;box-shadow:0 0 32px #86efac22}
.pulse-ring{position:absolute;width:var(--size);height:var(--size);border:7px solid var(--cyan);border-radius:50%;box-shadow:0 0 24px #67e8f999}
.pulse-core{position:absolute;width:18px;height:18px;background:#fff;border-radius:50%;box-shadow:0 0 18px #fff}
.pulse-label{position:absolute;top:24px;text-align:center;font-weight:950;letter-spacing:.08em}
.pulse-label small{display:block;margin-top:6px;color:var(--muted);font-size:11px}
.pulse-lock{position:absolute;bottom:25px;border:0;border-radius:999px;padding:14px 28px;background:linear-gradient(90deg,var(--purple),var(--cyan));color:#080911;font-weight:950;cursor:pointer}
.arena:after{pointer-events:none}
.merge-controls{margin-top:10px;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;text-align:center}
.merge-status{color:#c9d9f1;font-size:13px;font-weight:800;flex-basis:100%}
.merge-controls button{min-height:44px;border:1px solid #667098;border-radius:10px;background:#232c4d;color:#fff;padding:8px 16px;font-weight:800;cursor:pointer;touch-action:manipulation}
.merge-controls button:disabled{opacity:.55;cursor:not-allowed}
.merge-controls button:focus-visible{outline:3px solid #fff;outline-offset:2px}
.merge-canvas{position:absolute;z-index:3;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair}
@media(max-width:650px){.arena{height:370px}}
.memory-grid{inset:46px 20px 18px}
.memory-card{color:#cbd5e1;touch-action:manipulation}
.memory-hint,.focus-hint,.slice-tip,.racer-hint{position:absolute;z-index:4;top:10px;left:12px;right:12px;margin:0;color:#e3ecff;text-align:center;font-size:13px;font-weight:800;pointer-events:none}
.focus-grid{inset:46px 20px 18px}
.focus-card{transition:transform .38s ease;will-change:transform;touch-action:manipulation}
.focus-card.wrong{outline:3px solid #fb7185}
.orbit-stage{position:absolute;z-index:3;inset:0;cursor:pointer;touch-action:manipulation}
.orbit-hud{position:absolute;top:16px;left:12px;right:12px;color:#c9f4ff;text-align:center;font-size:14px;font-weight:900}
.orbit-lock{position:absolute;z-index:4;bottom:18px;left:50%;transform:translateX(-50%);min-width:190px;min-height:52px;border:0;border-radius:16px;background:linear-gradient(100deg,var(--purple),var(--cyan));color:#090b19;font-weight:950;cursor:pointer;touch-action:manipulation}
.arena.slice-controls button{touch-action:none}
.slice-tip{color:#fef3c7}
.slice-blade{position:absolute;z-index:5;width:22px;height:22px;border:3px solid #fff;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 12px #fff,0 0 26px #67e8f9;pointer-events:none}
.slice-blade:after{content:"";position:absolute;left:8px;top:-20px;width:4px;height:46px;transform:rotate(35deg);border-radius:4px;background:#fff;box-shadow:0 0 12px var(--cyan)}
.slice-stroke{position:absolute;z-index:5;height:7px;transform-origin:left center;border-radius:8px;background:linear-gradient(90deg,#fff,var(--cyan));box-shadow:0 0 16px var(--cyan);pointer-events:none;animation:slice-fade .18s forwards}
@keyframes slice-fade{to{opacity:0}}
.fruit.sliced,.bomb.sliced{animation:slice-pop .2s forwards}
@keyframes slice-pop{to{transform:rotate(30deg) scale(1.4);opacity:0}}
.car{transition:left .18s cubic-bezier(.2,.8,.2,1);will-change:left}
.enemy{will-change:transform}
.racer-hint{color:#c9f4ff}
.racer-button{position:absolute;z-index:5;bottom:15px;width:68px;height:68px;border:2px solid #ffffff55;border-radius:18px;background:#11182cdc;color:#fff;font-size:26px;font-weight:900;touch-action:manipulation;cursor:pointer}
.racer-left{left:12px}
.racer-right{right:12px}
/* from retention */
.pause-layer{position:absolute;z-index:9;inset:0;display:grid;place-items:center;background:#070811ee}
.pause-layer[hidden]{display:none!important}
.pause-box{text-align:center;padding:24px}
.arena.is-paused>:not(.pause-layer):not(#overlay){visibility:hidden}
.sr-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* from new-games.css */
.arena.bloom-arena,.arena.beacon-arena,.arena.forge-arena{height:460px}
.mini-instruction{margin:0 0 10px;text-align:center;color:#c9d2e7;font-size:13px;line-height:1.4}
.bloom-stage,.beacon-stage,.forge-stage{position:absolute;z-index:3;inset:0;padding:14px;display:flex;align-items:center;flex-direction:column;overflow:auto}
.bloom-option:disabled{opacity:.42;cursor:not-allowed}
.bloom-cell:focus-visible,.beacon-form input:focus-visible,.forge-stage button:focus-visible{outline:3px solid #fff}
.bloom-undo{border:1px solid #667098;border-radius:9px;background:#232c4d;color:#fff;padding:6px 12px;font-weight:800;cursor:pointer}
.bloom-undo:disabled{opacity:.45;cursor:not-allowed}
.beacon-stage{justify-content:center;gap:12px}
.beacon-board{display:grid;grid-template-columns:repeat(5,38px);grid-template-rows:repeat(6,38px);gap:5px}
.beacon-tile{display:grid;place-items:center;border:2px solid #424c70;border-radius:6px;background:#171d32;font-size:21px;font-weight:900}
.beacon-tile.correct{background:#166544;border-color:#38d391}
.beacon-tile.elsewhere{background:#94701c;border-color:#facc15}
.beacon-tile.absent{background:#3b4256;border-color:#626b7a}
.beacon-form{display:flex;gap:8px;align-items:center}
.beacon-form label{font-size:12px}
.beacon-form input{width:90px;border:1px solid #606987;border-radius:9px;background:#181c31;color:#fff;text-align:center;text-transform:uppercase;padding:10px;font-weight:800;letter-spacing:.12em}
.beacon-form .btn{padding:10px 15px}
.beacon-used{min-height:16px;text-align:center;font-size:11px;color:#d5e3f5;margin:0;letter-spacing:.08em}
.beacon-hint{min-height:20px;text-align:center;font-size:12px;color:#c9d2e7;margin:0}
.forge-stage{justify-content:center;gap:16px}
.forge-core{width:144px;height:144px;border-radius:50%;border:3px solid #a78bfa;background:radial-gradient(circle,#e9d5ff,#8b5cf6 45%,#252254);box-shadow:0 0 26px #a78bfa88;color:#fff;font-size:75px;cursor:pointer;display:grid;place-items:center;line-height:1}
.forge-core:active{transform:scale(.94)}
.forge-core small{font-size:11px;letter-spacing:.18em;margin-top:-32px}
.forge-goal{width:min(100%,300px);display:grid;gap:4px;text-align:center;color:#c9d2e7;font-size:12px}
.forge-goal progress{width:100%;accent-color:#67e8f9}
.forge-meter{font-weight:850;color:#67e8f9;text-align:center;font-size:14px}
.forge-shop{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.forge-upgrade{padding:10px;border:1px solid #667098;border-radius:11px;background:#232c4d;color:#fff;font-weight:700;cursor:pointer}
.forge-upgrade:disabled{opacity:.46;cursor:not-allowed}
.beacon-form input{font-size:16px}
@media(min-width:700px) and (pointer:coarse){#arena{height:500px}.bloom-board{width:min(72vw,360px);height:min(72vw,360px)}}
@media(max-width:450px){.bloom-stage,.beacon-stage,.forge-stage{padding:8px}.beacon-stage,.forge-stage{justify-content:flex-start}.mini-instruction{font-size:11px}.bloom-board{width:min(66vw,252px);height:min(66vw,252px)}.beacon-board{grid-template-columns:repeat(5,34px);grid-template-rows:repeat(6,34px)}.forge-core{width:118px;height:118px;font-size:58px}}
.arena.bloom-arena{height:590px}
.bloom-stage{gap:7px;justify-content:flex-start}
.bloom-stage .mini-instruction{margin:0}
.bloom-hud{color:#e5f6ff;font-size:14px;font-weight:850;text-align:center}
.bloom-progress{height:6px;width:min(100%,360px);border-radius:999px;background:#26334f;overflow:hidden;flex:none}
/* Bloom Blocks: a garden bed of recessed slots; every shape has its own petal colour. */
.bloom-board{position:relative;width:min(78vw,344px);height:min(78vw,344px);aspect-ratio:1;flex:none;max-width:100%;margin:3px 0;display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);gap:3px;padding:6px;box-sizing:border-box;border-radius:14px;background:linear-gradient(160deg,#1a2147,#0f1430);border:1px solid #2f3866;box-shadow:inset 0 2px 10px #0009,0 10px 26px #0006}
.bloom-cell{position:relative;min-width:0;min-height:0;padding:0;border:0;border-radius:6px;background:#141a35;box-shadow:inset 0 2px 4px #0008,inset 0 -1px 0 #ffffff0d;cursor:pointer;touch-action:manipulation;transition:background-color .12s,box-shadow .12s}
.bloom-cell.valid::after{content:"";position:absolute;left:50%;top:50%;width:5px;height:5px;margin:-2.5px;border-radius:50%;background:#67e8f966}
.bloom-board.aiming .bloom-cell.valid::after{opacity:.35}
.bloom-cell.filled{background:var(--c);background:linear-gradient(150deg,color-mix(in srgb,var(--c) 55%,#fff) 0%,var(--c) 45%,color-mix(in srgb,var(--c) 72%,#000) 100%);box-shadow:inset 0 2px 0 #ffffff59,inset 0 -3px 0 #0000003d,0 0 10px color-mix(in srgb,var(--c) 35%,transparent)}
.bloom-cell.filled::before{content:"";position:absolute;left:22%;top:18%;width:26%;height:20%;border-radius:50%;background:#ffffff73;filter:blur(.5px)}
.bloom-cell.ghost{background:color-mix(in srgb,var(--ghost,#67e8f9) 50%,#141a35);box-shadow:inset 0 0 0 2px var(--ghost,#67e8f9),0 0 12px color-mix(in srgb,var(--ghost,#67e8f9) 55%,transparent)}
.bloom-cell.ghost::after{display:none}
.bloom-cell.will-clear{box-shadow:inset 0 0 0 2px #fde68a,0 0 16px #fbbf24;animation:bloomReady .5s ease-in-out infinite alternate}
@keyframes bloomReady{to{filter:brightness(1.35)}}
.bloom-cell.placed{animation:bloomPlace .3s cubic-bezier(.3,1.7,.5,1)}
@keyframes bloomPlace{from{transform:scale(.55);filter:brightness(1.8)}to{transform:scale(1);filter:none}}
.bloom-cell.pop{z-index:2}
.bloom-cell.pop::before{content:"";position:absolute;inset:0;border-radius:6px;background:var(--c);animation:bloomFade .45s ease-out var(--d,0ms) both}
.bloom-cell.pop::after{content:"";position:absolute;inset:-30%;width:auto;height:auto;margin:0;border-radius:0;opacity:1;background:radial-gradient(circle at 50% 50%,#fff 0 12%,transparent 13%),radial-gradient(circle at 50% 18%,var(--c) 0 20%,transparent 21%),radial-gradient(circle at 82% 50%,var(--c) 0 20%,transparent 21%),radial-gradient(circle at 50% 82%,var(--c) 0 20%,transparent 21%),radial-gradient(circle at 18% 50%,var(--c) 0 20%,transparent 21%);animation:bloomPetal .65s ease-out var(--d,0ms) both;pointer-events:none}
@keyframes bloomFade{from{opacity:1;transform:scale(1);filter:brightness(1.6)}to{opacity:0;transform:scale(.3)}}
@keyframes bloomPetal{0%{opacity:0;transform:scale(.3) rotate(0)}30%{opacity:1}100%{opacity:0;transform:scale(1.5) rotate(90deg)}}
.bloom-float{position:absolute;z-index:4;transform:translate(-50%,-50%);font-weight:900;font-size:17px;color:#fff;text-shadow:0 2px 6px #000c;pointer-events:none;animation:bloomFloat .85s ease-out forwards}
.bloom-float.big{font-size:24px;color:#fde68a}
@keyframes bloomFloat{0%{opacity:0;transform:translate(-50%,-30%) scale(.7)}20%{opacity:1;transform:translate(-50%,-60%) scale(1.1)}100%{opacity:0;transform:translate(-50%,-160%) scale(1)}}
.bloom-progress span{display:block;height:100%;width:0;background:linear-gradient(90deg,#f472b6,#facc15,#34d399);transition:width .3s}
.bloom-progress.level-up{animation:bloomLevel .8s ease-out}
@keyframes bloomLevel{0%,100%{box-shadow:none}30%{box-shadow:0 0 0 3px #fde68a99,0 0 18px #facc15}}
.bloom-tray{display:flex;justify-content:center;gap:9px;width:100%;min-height:68px}
.bloom-option{--c:#a78bfa;min-width:82px;min-height:64px;display:grid;place-items:center;padding:6px;border:1px solid #3c4675;border-radius:12px;background:linear-gradient(180deg,#1e2750,#161d3d);color:#fff;cursor:grab;touch-action:none;transition:transform .15s,box-shadow .15s,border-color .15s}
.bloom-option:hover:not(:disabled){transform:translateY(-2px)}
.bloom-option.selected{border-color:var(--c);box-shadow:0 0 0 2px color-mix(in srgb,var(--c) 70%,transparent),0 6px 18px color-mix(in srgb,var(--c) 35%,transparent);transform:translateY(-2px)}
.bloom-option:disabled{opacity:.42;filter:grayscale(.8);cursor:not-allowed}
.bloom-option.used{border-style:dashed;border-color:#2b3360;background:transparent;cursor:default}
.bloom-tray.dealt .bloom-option{animation:bloomDeal .35s cubic-bezier(.3,1.5,.5,1) both}
.bloom-tray.dealt .bloom-option:nth-child(2){animation-delay:.06s}.bloom-tray.dealt .bloom-option:nth-child(3){animation-delay:.12s}
@keyframes bloomDeal{from{opacity:0;transform:translateY(14px) scale(.8)}}
.bloom-preview{--s:13px;display:grid;gap:2px;justify-content:center}
.bloom-preview i{border-radius:3px;background:var(--c);background:linear-gradient(150deg,color-mix(in srgb,var(--c) 55%,#fff),var(--c) 50%,color-mix(in srgb,var(--c) 75%,#000));box-shadow:inset 0 1px 0 #fff6}
.bloom-drag{position:fixed;left:0;top:0;z-index:20;display:grid;gap:3px;pointer-events:none;opacity:.6;filter:drop-shadow(0 10px 14px #000a);will-change:transform}
.bloom-drag.ok{opacity:.95}
.bloom-drag i{border-radius:6px;background:var(--c);background:linear-gradient(150deg,color-mix(in srgb,var(--c) 55%,#fff),var(--c) 45%,color-mix(in srgb,var(--c) 72%,#000));box-shadow:inset 0 2px 0 #fff6,inset 0 -3px 0 #0004}
.bloom-stage.dragging{cursor:grabbing}
.arena .bloom-option{touch-action:none}
.bloom-arena .flash{text-shadow:0 3px 14px #000c}
@media(prefers-reduced-motion:reduce){.bloom-cell,.bloom-cell::before,.bloom-cell::after,.bloom-float,.bloom-option,.bloom-progress{animation:none!important;transition:none!important}.bloom-cell.pop::before,.bloom-cell.pop::after{display:none}}
.bloom-actions{display:flex;justify-content:center;gap:7px;width:100%}
.bloom-actions button{min-height:44px;flex:1;max-width:150px;border:1px solid #667098;border-radius:9px;background:#232c4d;color:#fff;padding:5px 8px;font-size:12px;font-weight:800;cursor:pointer;touch-action:manipulation}
.bloom-actions button:disabled{opacity:.48;cursor:not-allowed}
.bloom-hint{min-height:18px;margin:0;color:#c9d2e7;font-size:12px;text-align:center}
.bloom-cell:focus-visible,.bloom-option:focus-visible,.bloom-actions button:focus-visible{outline:3px solid #fff;outline-offset:2px}
@media(max-width:450px){.arena.bloom-arena{height:620px}.bloom-board{width:min(92vw,340px);height:min(92vw,340px)}.bloom-stage{gap:6px}.bloom-hint{font-size:11px}.bloom-option{min-width:70px}}
@media(min-width:700px) and (pointer:coarse){#arena.bloom-arena{height:620px}}
.arena.beacon-arena{height:630px}
.beacon-stage{justify-content:flex-start;gap:8px}
.beacon-stage .mini-instruction{margin:0}
.beacon-modes{display:flex;gap:7px;width:min(100%,390px)}
.beacon-modes button{flex:1;min-height:40px;border:1px solid #667098;border-radius:9px;background:#232c4d;color:#fff;font-size:12px;font-weight:800;cursor:pointer}
.beacon-modes button.active{border-color:#67e8f9;box-shadow:inset 0 0 0 1px #67e8f9}
.beacon-progress{margin:0;color:#c9e8f2;font-size:12px;font-weight:800;text-align:center}
.beacon-board{grid-template-columns:repeat(5,42px);grid-template-rows:repeat(6,42px);gap:5px}
.beacon-tile{font-size:23px}
.beacon-tile.typing{border-color:#67e8f9;background:#1e3653}
.beacon-keyboard{display:grid;gap:5px;width:min(100%,390px);margin:1px auto}
.beacon-keyrow{display:flex;justify-content:center;gap:4px}
.beacon-key{min-width:0;flex:1;min-height:39px;padding:3px 0;border:1px solid #697797;border-radius:6px;background:#293455;color:#fff;font-size:15px;font-weight:900;cursor:pointer;touch-action:manipulation}
.beacon-key.wide{flex:1.5;font-size:12px}
.beacon-key.correct{background:#166544;border-color:#38d391}
.beacon-key.elsewhere{background:#94701c;border-color:#facc15}
.beacon-key.absent{background:#3b4256;border-color:#626b7a}
.beacon-key:disabled{opacity:.65}
.beacon-form{width:min(100%,390px);justify-content:center}
.beacon-form input{width:124px}
.beacon-hint{min-height:28px;line-height:1.25}
.beacon-used{max-width:390px;line-height:1.35}
.beacon-key:focus-visible,.beacon-modes button:focus-visible{outline:3px solid #fff;outline-offset:2px}
@media(max-width:450px){.arena.beacon-arena{height:640px}.beacon-stage{gap:6px;padding:8px}.beacon-board{grid-template-columns:repeat(5,39px);grid-template-rows:repeat(6,39px);gap:4px}.beacon-key{min-height:38px;font-size:14px}.beacon-keyrow{gap:3px}.beacon-progress,.beacon-hint,.beacon-used{font-size:11px}}
@media(min-width:700px) and (pointer:coarse){#arena.beacon-arena{height:650px}}
/* from featured-games.css */
.arena.featured-arena{height:520px;background:#090d1f}
.featured-canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;z-index:3;cursor:crosshair}
.swarm-hud,.siege-hud,.market-hud{color:#fff;font-size:13px;font-weight:900;text-align:center;letter-spacing:.02em}
.swarm-hud{position:absolute;z-index:4;left:8px;right:8px;top:10px;padding:8px;border:1px solid #67e8f955;border-radius:10px;background:#090c20d9;pointer-events:none}
.swarm-choices{position:absolute;z-index:6;inset:0;background:#060817e8;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:22px}
.swarm-choices[hidden]{display:none}
.swarm-choices h3{margin:0 0 8px;text-align:center;font-size:23px}
.swarm-choices button{width:min(330px,100%);min-height:65px;border:1px solid #67e8f977;border-radius:13px;background:#182442;color:#fff;text-align:left;padding:10px 15px;cursor:pointer}
.swarm-choices button strong,.swarm-choices button small{display:block}
.swarm-choices button small{color:#b3bed8;margin-top:4px}
.swarm-hud{padding:8px 12px;text-align:left}
.swarm-stats,.swarm-energy{display:flex;align-items:center;justify-content:space-between;gap:8px}
.swarm-stats{font-size:12px}
.swarm-stats span{white-space:nowrap}
.swarm-energy{margin-top:7px;font-size:11px;color:#d9ccff}
.swarm-energy-track{height:8px;flex:1;overflow:hidden;border-radius:999px;background:#31284f}
.swarm-energy-track [data-fill]{display:block;height:100%;width:0;background:linear-gradient(90deg,#a78bfa,#67e8f9);transition:width .18s ease}
.swarm-banner{position:absolute;z-index:4;top:91px;left:50%;transform:translateX(-50%);width:max-content;max-width:90%;padding:8px 13px;border:1px solid #67e8f977;border-radius:999px;background:#111b36ed;color:#e3faff;text-align:center;font-size:12px;font-weight:900;letter-spacing:.06em;pointer-events:none}
.swarm-banner[hidden]{display:none}
.swarm-pulse{position:absolute;z-index:5;right:12px;bottom:12px;min-height:48px;min-width:154px;padding:9px 13px;border:2px solid #67e8f9;border-radius:13px;background:#133453;color:#fff;font-size:12px;font-weight:900;box-shadow:0 0 20px #67e8f944;cursor:pointer;touch-action:manipulation}
.swarm-pulse:disabled{opacity:.55;box-shadow:none;cursor:default}
.swarm-pulse:focus-visible,.swarm-choices button:focus-visible{outline:3px solid #fff;outline-offset:2px}
.siege-stage,.market-stage{position:absolute;z-index:3;inset:0;padding:12px;display:flex;flex-direction:column;gap:9px}
.siege-hud,.market-hud{padding:9px;border-radius:10px;background:#111a35;border:1px solid #46577e}
.siege-field{position:relative;flex:1;min-height:240px;border:2px solid #3e506f;border-left:9px solid #86efac;border-radius:13px;overflow:hidden;background:repeating-linear-gradient(to bottom,#111b38 0%,#111b38 32%,#243153 32%,#243153 34%)}
.siege-pad{position:absolute;z-index:2;width:46px;height:46px;transform:translate(-50%,-50%);border:2px dashed #67e8f988;border-radius:10px;background:#172441c9;color:#fff;font-size:19px;font-weight:900;cursor:pointer}
.siege-pad:hover,.siege-pad:focus-visible{border-style:solid;background:#28466b}
.siege-enemy{position:absolute;z-index:3;transform:translate(-50%,-50%);width:28px;height:28px;display:grid;place-items:center;border-radius:50%;font-size:22px;color:#fb7185;background:#411a38;pointer-events:none}
.siege-enemy.armor{color:#fbbf24;background:#463c27}
.siege-enemy.boss{width:42px;height:42px;background:#822c50;font-size:30px}
.siege-beam{position:absolute;z-index:4;height:3px;transform:translateY(-50%);box-shadow:0 0 12px currentColor;pointer-events:none}
.siege-tools{display:flex;gap:8px;align-items:stretch}
.siege-types{display:flex;flex:1;gap:5px}
.siege-type,.siege-emp{border:1px solid #61759b;border-radius:9px;background:#1d2a49;color:#fff;font-size:12px;font-weight:800;padding:9px 6px;cursor:pointer}
.siege-type{flex:1}
.siege-type.selected{outline:2px solid #67e8f9}
.siege-emp:disabled{opacity:.5}
.siege-tip,.market-help{margin:0;text-align:center;color:#c5d3ed;font-size:12px}
.market-stage{gap:10px}
.market-shelves{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.market-shelf{min-height:76px;border:1px solid #5e718e;border-radius:12px;background:#1b2c4a;color:#fff;font-weight:850;font-size:14px;cursor:pointer}
.market-shelf:disabled{opacity:.65}
.market-queue{display:grid;grid-template-columns:repeat(2,1fr);grid-auto-rows:minmax(74px,auto);gap:7px;flex:1;align-content:start;min-height:120px}
.market-customer{position:relative;overflow:hidden;border:1px solid #a78bfa88;border-radius:12px;background:#241b43;color:#fff;font-size:17px;font-weight:850;cursor:pointer;padding:12px}
.market-customer i{position:absolute;bottom:0;left:0;height:5px;background:#86efac;transition:width .1s linear}
.market-upgrades{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.market-upgrades button{min-height:52px;border:1px solid #64748b;border-radius:10px;background:#263557;color:#fff;font-size:12px;font-weight:800;cursor:pointer}
.market-upgrades button:disabled{opacity:.5}
@media(max-width:650px){.arena.featured-arena{height:560px}.siege-stage,.market-stage{padding:8px}.siege-pad{width:37px;height:38px}.siege-tools{flex-wrap:wrap}.siege-types{flex-basis:100%}.siege-emp{min-height:40px;width:100%}.siege-field{min-height:220px}.market-shelf{min-height:72px;font-size:12px}.market-queue{grid-auto-rows:minmax(70px,auto)}.market-upgrades button{font-size:11px}}
@media(max-width:650px){.swarm-stats{font-size:11px;flex-wrap:wrap;justify-content:center}.swarm-hud{left:6px;right:6px;top:6px}.swarm-banner{top:102px}.swarm-pulse{right:8px;bottom:8px;min-width:130px;font-size:11px}}
@media(max-width:390px){.siege-pad{width:31px;height:34px;font-size:15px}.market-customer{font-size:14px}.market-upgrades{grid-template-columns:1fr 1fr}.market-express{grid-column:1/-1}}
.siege-stage{gap:7px}
.siege-wave{height:5px;overflow:hidden;border-radius:999px;background:#26334f}
.siege-wave span{display:block;height:100%;width:0;background:linear-gradient(90deg,#67e8f9,#a78bfa);transition:width .3s linear}
.siege-pad.active{border:2px solid #fbbf24;background:#58412b;box-shadow:0 0 12px #fbbf2477}
.siege-enemy.runner{color:#67e8f9;background:#16445a}
.siege-enemy i{position:absolute;left:1px;right:1px;bottom:-7px;width:100%;height:4px;border-radius:4px;background:#86efac;pointer-events:none}
.siege-selection{display:flex;align-items:center;gap:6px;min-height:42px;border:1px solid #637ca0;border-radius:10px;padding:5px;background:#16223d;color:#fff;font-size:12px;font-weight:800}
.siege-selection[hidden]{display:none}
.siege-selection span{flex:1}
.siege-selection button{min-height:36px;border:1px solid #9bb3d3;border-radius:8px;background:#253b60;color:#fff;font-size:12px;font-weight:800;padding:5px 9px;cursor:pointer}
.siege-selection button:disabled{opacity:.55;cursor:default}
.siege-type:focus-visible,.siege-pad:focus-visible,.siege-emp:focus-visible,.siege-selection button:focus-visible{outline:3px solid #fff;outline-offset:2px}
@media(max-width:650px){.siege-pad{min-width:38px;min-height:40px}.siege-selection{flex-wrap:wrap}.siege-selection span{flex-basis:100%;text-align:center}.siege-selection button{flex:1}.siege-tip{font-size:11px}}
@media(max-width:390px){.siege-pad{width:36px;height:38px;min-width:36px;min-height:38px}.siege-type{font-size:11px;padding:7px 3px}}
.market-stage{gap:7px}
.market-progress{height:5px;overflow:hidden;border-radius:999px;background:#253653}
.market-progress span{display:block;height:100%;width:0;background:linear-gradient(90deg,#86efac,#fbbf24,#fb7185);transition:width .3s linear}
.market-shelf{min-height:66px;touch-action:manipulation}
.market-shelf.low-stock{border-color:#fb923c;background:#413034}
.market-queue{min-height:132px;grid-auto-rows:minmax(66px,auto);overflow:auto}
.market-customer{display:flex;flex-direction:column;justify-content:center;gap:4px;min-height:66px;touch-action:manipulation;text-align:left}
.market-customer strong{font-size:17px;line-height:1.15}
.market-customer span{font-size:11px;color:#ffccbf;font-weight:750}
.market-customer.ready{border-color:#86efac99}
.market-customer.ready span{color:#a7f3d0}
.market-customer.vip{background:#3b2a4b;border-color:#fbbf24}
.market-customer.urgent{box-shadow:inset 0 0 0 2px #fb7185}
.market-customer.express-target{outline:2px solid #67e8f9;outline-offset:-3px}
.market-upgrades{grid-template-columns:repeat(4,1fr)}
.market-upgrades button{min-height:48px;touch-action:manipulation}
.market-express[aria-pressed="true"]{outline:2px solid #67e8f9}
.market-notice{min-height:18px;margin:0;color:#c5d3ed;font-size:12px;text-align:center}
.market-shelf:focus-visible,.market-customer:focus-visible,.market-upgrades button:focus-visible{outline:3px solid #fff;outline-offset:2px}
@media(max-width:650px){.market-stage{gap:6px}.market-upgrades{grid-template-columns:repeat(2,1fr)}.market-upgrades button{min-height:42px;font-size:11px}.market-queue{grid-auto-rows:minmax(64px,auto);min-height:128px}.market-customer{padding:8px}.market-shelf{min-height:62px}.market-help,.market-notice{font-size:11px}}
/* from phase3-games.css */
.arena.forge-arena{height:560px}
.forge-stage{gap:10px}
.forge-phase{color:#e9d5ff;font-weight:850;font-size:13px}
.forge-core{width:122px;height:122px;font-size:64px;flex:none}
.forge-meter{font-size:13px}
.forge-overdrive{min-height:48px;width:min(300px,100%);border:2px solid #a78bfa;border-radius:12px;background:#30315e;color:#fff;font-weight:900;cursor:pointer}
.forge-overdrive:disabled{opacity:.55}
.forge-shop{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:min(390px,100%)}
.forge-upgrade{min-height:52px;font-size:12px}
.forge-upgrade:focus-visible,.forge-overdrive:focus-visible{outline:3px solid #fff;outline-offset:2px}
.pulse-feedback{position:absolute;z-index:4;top:73px;left:12px;right:12px;text-align:center;color:#e2f9ff;font-size:13px;font-weight:850;pointer-events:none}
.pulse-goal{transition:width .25s,height .25s}
.pulse-lock:focus-visible{outline:3px solid #fff;outline-offset:3px}
.action-hud{position:absolute;z-index:5;top:12px;left:8px;right:8px;text-align:center;font-size:13px;font-weight:900;color:#ecfeff;pointer-events:none}
.dodge-heal{position:absolute;z-index:3;width:40px;height:40px;border:2px solid #86efac;border-radius:11px;background:#14532d;color:#fff;text-align:center;font-size:27px}
.damaged{opacity:.4;filter:drop-shadow(0 0 15px #fb7185)}
.racer-warning{position:absolute;z-index:4;top:10px;width:24px;height:9px;border-radius:10px;background:#fda4af;box-shadow:0 0 14px #fb7185;animation:p .35s infinite alternate}
.racer-nitro{display:block;margin:10px auto 0;min-height:46px;min-width:190px;border:1px solid #67e8f9;border-radius:12px;background:#164e63;color:#fff;font-weight:900;cursor:pointer}
.racer-nitro:disabled{opacity:.65}
.golden-fruit{background:#fbbf2455;box-shadow:0 0 16px #fbbf24}
.orbit-lock:focus-visible,.racer-nitro:focus-visible,.dodge-controls button:focus-visible{outline:3px solid #fff;outline-offset:2px}
.classic-hud{position:absolute;z-index:4;top:9px;left:8px;right:8px;text-align:center;color:#e3ecff;font-size:13px;font-weight:850;pointer-events:none}
.arena:has(.classic-hud) .color-grid{top:43px}
.color-cell{background-size:100% 100%}
.wrong-tile{outline:3px solid #fb7185;outline-offset:-3px}
.memory-grid:has(.memory-card:nth-child(20)){grid-template-columns:repeat(5,1fr)}
.memory-card.done{background:#a7f3d0;color:#12372e}
.sort-item.wrong-tile{outline-offset:3px}
.number:disabled{pointer-events:none}
@media(max-width:450px){.memory-grid{gap:6px;inset:50px 8px 12px}.memory-card{font-size:23px}.classic-hud{font-size:12px}}
@media(max-width:450px){.arena.forge-arena{height:580px}.forge-stage{gap:9px}.forge-core{width:114px;height:114px;font-size:58px}.forge-upgrade{min-height:50px;padding:7px;font-size:11px}.pulse-feedback{top:82px;font-size:12px}}
.orbit-ring{width:var(--orbit-size,230px);height:var(--orbit-size,230px)}
.orbit-dot{transform:rotate(var(--a)) translateX(var(--orbit-radius,115px))}
.gate{transform:rotate(var(--g)) translateX(var(--orbit-radius,115px))}
@media(max-width:420px){.arena.forge-arena{height:610px}.forge-shop{gap:6px}.forge-upgrade{min-width:0;overflow-wrap:anywhere}.pulse-label{left:8px;right:8px;font-size:13px}}

/* Cosmic Merge Drop plays in a tall jar. */
.arena.merge-arena{height:620px;max-width:440px;margin-inline:auto;border-left:1px solid #1E2A55;border-right:1px solid #1E2A55;background:#0B0E24}
@media (max-width:720px){.arena.merge-arena{height:min(600px,calc(100svh - 190px));min-height:460px;max-width:none;border-left:0;border-right:0}}
/* Number Rush tiles stay round on wide screens. */
.number-grid{left:50%;right:auto;width:min(420px,calc(100% - 40px));transform:translateX(-50%);align-content:center}
.number{width:100%;max-width:84px;aspect-ratio:1;height:auto;justify-self:center;align-self:center}

/* ---- Classic and word games added in V5.1 ---------------------------------------- */
#arena:is(.sol-arena,.sdk-arena,.snake-arena,.ms-arena,.wl-arena,.mj-arena,.t48-arena):after{display:none}
/* Shared segmented mode switch and tool buttons */
:is(.sol-modes,.sdk-modes,.ms-modes,.wl-modes,.mj-modes){display:inline-flex;flex-wrap:wrap;gap:3px;padding:3px;border-radius:12px;background:#0B0E24;border:1px solid #2E3462}
:is(.sol-modes,.sdk-modes,.ms-modes,.wl-modes,.mj-modes) button{min-height:34px;padding:0 12px;border:0;border-radius:9px;background:transparent;color:#C6CCE4;font:inherit;font-size:13.5px;font-weight:700;cursor:pointer;touch-action:manipulation}
:is(.sol-modes,.sdk-modes,.ms-modes,.wl-modes,.mj-modes) button:hover{color:#fff;background:#1B1F3E}
:is(.sol-modes,.sdk-modes,.ms-modes,.wl-modes,.mj-modes) button[aria-pressed="true"]{background:#19DFC2;color:#131A2E}
:is(.sol-tools,.sdk-tools,.mj-tools,.wl-actions) button,.t48-undo,.ms-flag{min-height:40px;padding:0 14px;border-radius:10px;border:1px solid #2E3462;background:#1B1F3E;color:#fff;font:inherit;font-size:14px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;touch-action:manipulation}
:is(.sol-tools,.sdk-tools,.mj-tools,.wl-actions) button:hover:not(:disabled),.t48-undo:hover:not(:disabled),.ms-flag:hover{background:#262B57}
:is(.sol-tools,.sdk-tools,.mj-tools,.wl-actions) button:disabled,.t48-undo:disabled{opacity:.45;cursor:not-allowed}
.game-panel :is(.sol-arena,.sdk-arena,.snake-arena,.ms-arena,.wl-arena,.mj-arena,.t48-arena) button:focus-visible,.game-panel :is(.sol-bar,.mj-bar,.snake-pad) button:focus-visible{outline:3px solid #fff;outline-offset:2px}
@keyframes v51shake{20%,60%{transform:translateX(-4px)}40%,80%{transform:translateX(4px)}}

/* Solitaire */
#arena.sol-arena{height:680px;background:radial-gradient(120% 90% at 50% 0%,#17625a 0%,#0e403c 55%,#0a2b2c 100%)}
.sol-table{position:absolute;inset:0;user-select:none;-webkit-user-select:none}
.sol-slot{position:absolute;width:var(--cw);height:var(--ch);padding:0;border-radius:calc(var(--cw) * .1);border:2px dashed rgba(255,255,255,.2);background:rgba(0,0,0,.14);color:rgba(255,255,255,.35)}
.sol-slot-f::before{content:attr(data-label);position:absolute;inset:0;display:grid;place-items:center;font-weight:800;font-size:calc(var(--cw) * .38)}
.sol-slot-stock{cursor:pointer;font:inherit;touch-action:manipulation}
.sol-slot-stock.recycle::before{content:"";position:absolute;inset:28%;border:3px solid rgba(255,255,255,.55);border-right-color:transparent;border-radius:50%}
.sol-card{position:absolute;width:var(--cw);height:var(--ch);padding:0;overflow:hidden;border-radius:calc(var(--cw) * .09);border:1px solid #b9c0d3;background:linear-gradient(180deg,#fff 0%,#fbfbfd 60%,#f1f3f8 100%);color:#1b2340;font:inherit;cursor:grab;transition:left .18s ease,top .18s ease;box-shadow:0 1px 2px rgba(0,0,0,.3),0 2px 6px rgba(0,0,0,.18);touch-action:none}
.sol-card.red{color:#c8283a}
.sol-corner{position:absolute;left:7%;top:3.5%;display:flex;align-items:center;gap:calc(var(--cw) * .02);line-height:1;font-weight:800;pointer-events:none}
.sol-corner b{font-size:calc(var(--cw) * .3);font-stretch:75%;letter-spacing:-.03em}
.sol-suit{width:calc(var(--cw) * .22);height:calc(var(--cw) * .22);flex:none}
.sol-art{position:absolute;left:8%;top:25%;width:84%;height:71%;pointer-events:none;overflow:visible}
.sol-card.court .sol-art{left:6%;top:24%;width:88%;height:73%}
.sol-card.down{border:1px solid #0b5f54;pointer-events:none;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.28) 0 calc(var(--cw) * .13),rgba(255,255,255,0) calc(var(--cw) * .14)),radial-gradient(circle at 50% 50%,rgba(255,255,255,0) 0 calc(var(--cw) * .17),rgba(255,255,255,.22) calc(var(--cw) * .18) calc(var(--cw) * .2),rgba(255,255,255,0) calc(var(--cw) * .21)),repeating-linear-gradient(45deg,rgba(255,255,255,.13) 0 1.5px,transparent 1.5px 7px),repeating-linear-gradient(-45deg,rgba(255,255,255,.13) 0 1.5px,transparent 1.5px 7px),linear-gradient(160deg,#1fcdb3 0%,#13a28e 55%,#0d7f70 100%);box-shadow:inset 0 0 0 calc(var(--cw) * .045) #fff,inset 0 0 0 calc(var(--cw) * .06) #0e7d6e,0 1px 2px rgba(0,0,0,.3),0 2px 6px rgba(0,0,0,.18)}
.sol-card.down>*{visibility:hidden}
.sol-card.dragging{transition:none;cursor:grabbing;box-shadow:0 12px 26px rgba(0,0,0,.45)}
.sol-card.shake{animation:v51shake .3s}
.sol-card.sol-hint,.sol-slot.sol-hint{outline:3px solid #F6C945;outline-offset:2px}
.sol-card.win{animation:solWin .7s ease forwards}
@keyframes solWin{50%{transform:translateY(-14px) rotate(-4deg)}100%{transform:none}}
.sol-bar,.mj-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:12px 16px}
.sol-tools,.mj-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.sol-moves,.mj-left{color:#C6CCE4;font-size:14px;font-variant-numeric:tabular-nums;margin-right:4px}

/* Sudoku */
#arena.sdk-arena{height:720px;background:#0F1330}
.sdk{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;gap:12px;padding:14px;overflow:auto}
.sdk-bar,.sdk-board,.sdk-pad,.sdk-tools{width:min(100%,470px)}
.sdk-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px}
.sdk-status{color:#C6CCE4;font-size:13.5px;font-variant-numeric:tabular-nums}
.sdk-board{display:grid;grid-template-columns:repeat(9,1fr);aspect-ratio:1;flex:none;border:2px solid #8C96C8;border-radius:8px;overflow:hidden;background:#151935}
.sdk-cell{position:relative;min-width:0;aspect-ratio:1;padding:0;border:0;border-right:1px solid #2E3462;border-bottom:1px solid #2E3462;background:#151935;color:#7FE9D9;font:inherit;font-weight:700;font-size:clamp(17px,5.2vw,28px);cursor:pointer;touch-action:manipulation}
.sdk-cell:nth-child(9n){border-right:0}
.sdk-cell:nth-child(n+73){border-bottom:0}
.sdk-cell.bx{border-right:2px solid #8C96C8}
.sdk-cell.by{border-bottom:2px solid #8C96C8}
.sdk-cell.given{color:#fff;font-weight:800}
.sdk-cell.peer{background:#1C2147}
.sdk-cell.same{background:#24456A}
.sdk-cell.sel{background:#1E5E5D;box-shadow:inset 0 0 0 2px #19DFC2}
.sdk-cell.wrong{color:#FF6B7A}
.sdk-cell.has-notes{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);padding:2px}
.sdk-cell.has-notes i{font-style:normal;font-size:clamp(8px,1.9vw,11px);font-weight:600;color:#AAB3D6;line-height:1;display:grid;place-items:center}
.sdk-cell.win{animation:sdkWin .5s ease}
@keyframes sdkWin{50%{background:#19DFC2;color:#131A2E}}
.sdk-pad{display:grid;grid-template-columns:repeat(9,1fr);gap:6px}
.sdk-num{position:relative;min-width:0;min-height:52px;padding:0;border-radius:10px;border:1px solid #2E3462;background:#1B1F3E;color:#fff;font:inherit;font-size:22px;font-weight:800;cursor:pointer;touch-action:manipulation}
.sdk-num small{position:absolute;right:4px;top:3px;font-size:10px;font-weight:600;color:#9AA3C7}
.sdk-num.same{border-color:#19DFC2}
.sdk-num:disabled{opacity:.3;cursor:default}
.sdk-tools{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.sdk-tools [aria-pressed="true"]{background:#19DFC2;border-color:#19DFC2;color:#131A2E}
.sdk-tools [aria-pressed="true"]::after{content:" on"}

/* Snake */
#arena.snake-arena{height:560px;background:#0B0F26}
.snake-canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none}
.snake-hud{position:absolute;z-index:2;top:10px;left:12px;right:12px;text-align:center;font-size:13.5px;color:#C6CCE4;font-variant-numeric:tabular-nums;pointer-events:none}
.snake-pad{display:grid;grid-template-columns:repeat(3,64px);grid-template-areas:". up ." "left down right";gap:8px;justify-content:center;padding:12px 16px 16px}
.snake-pad button{height:52px;border-radius:12px;border:1px solid #2E3462;background:#1B1F3E;color:#fff;display:grid;place-items:center;cursor:pointer;touch-action:manipulation}
.snake-pad button:active{background:#2B3266}
.snake-pad svg{width:26px;height:26px}
.snake-pad [data-dir="up"]{grid-area:up}.snake-pad [data-dir="left"]{grid-area:left}.snake-pad [data-dir="down"]{grid-area:down}.snake-pad [data-dir="right"]{grid-area:right}

/* Minesweeper */
#arena.ms-arena{height:auto;min-height:420px;background:#0F1330}
.ms{display:flex;flex-direction:column;align-items:center;gap:10px;padding:14px 12px}
.ms-bar{width:100%;max-width:760px;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px}
.ms-info{display:flex;align-items:center;gap:10px}
.ms-left{color:#C6CCE4;font-size:14px;font-variant-numeric:tabular-nums}
.ms-flag svg{width:16px;height:16px;color:#FF6B7A}
.ms-flag.on{background:#3A1F35;border-color:#FF6B7A}
.ms-scroll{max-width:100%;max-height:min(72vh,820px);overflow:auto;-webkit-overflow-scrolling:touch}
.ms-board{display:grid;grid-template-columns:repeat(var(--cols),var(--cell));gap:2px;width:max-content}
.ms-cell{width:var(--cell);height:var(--cell);padding:0;border:0;border-radius:4px;background:linear-gradient(#3B4482,#2C336A);box-shadow:inset 0 1px 0 rgba(255,255,255,.12);color:#fff;font:inherit;font-weight:800;font-size:calc(var(--cell) * .56);line-height:1;display:grid;place-items:center;cursor:pointer;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.ms-cell:hover:not(.open){background:linear-gradient(#4A54A0,#36407E)}
.ms-cell.open{background:#161A38;box-shadow:none;cursor:default}
.ms-cell[data-n="1"]{color:#6EC6FF}.ms-cell[data-n="2"]{color:#5BE49B}.ms-cell[data-n="3"]{color:#FF6B7A}.ms-cell[data-n="4"]{color:#C4A7FF}
.ms-cell[data-n="5"]{color:#FFB86B}.ms-cell[data-n="6"]{color:#19DFC2}.ms-cell[data-n="7"]{color:#fff}.ms-cell[data-n="8"]{color:#9AA3C7}
.ms-cell.flag svg{width:62%;height:62%;color:#FF6B7A}
.ms-cell.boom{background:#4A1D2E}
.ms-cell.hit{background:#E5484D}
.ms-cell.wrong{position:relative;background:#2C336A}
.ms-cell.wrong::after{content:"";position:absolute;inset:18%;background:linear-gradient(45deg,transparent 44%,#fff 44% 56%,transparent 56%),linear-gradient(-45deg,transparent 44%,#fff 44% 56%,transparent 56%)}
.ms-mine{width:54%;height:54%;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fff 0 14%,#0B0E24 16%);box-shadow:0 0 0 2px #0B0E24}
.ms-hint{margin:0;color:#9AA3C7;font-size:13px;text-align:center}

/* Word Links */
#arena.wl-arena{height:540px;background:#0F1330}
.wl{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:safe center;gap:10px;padding:14px;overflow:auto}
.wl-bar,.wl-solved,.wl-grid,.wl-foot{width:min(100%,580px)}
.wl-bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px}
.wl-num{color:#C6CCE4;font-size:14px}
.wl-solved{display:grid;gap:8px}
.wl-solved:empty{display:none}
.wl-group{min-height:64px;border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;color:#131A2E;animation:wlIn .35s ease}
.wl-group strong{font-size:15px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.wl-group span{font-size:14px;font-weight:600;text-transform:uppercase}
@keyframes wlIn{from{transform:scale(.94);opacity:.4}}
.wl-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.wl-grid:empty{display:none}
.wl-word{min-height:66px;min-width:0;padding:4px;border:0;border-radius:12px;background:#E9ECF8;color:#131A2E;font:inherit;font-weight:800;font-size:clamp(12.5px,2.3vw,17px);letter-spacing:.02em;text-transform:uppercase;overflow-wrap:anywhere;cursor:pointer;transition:background .12s,color .12s,transform .12s;touch-action:manipulation}
.wl-word[data-len="mid"]{font-size:clamp(11.5px,2vw,15.5px)}
.wl-word[data-len="long"]{font-size:clamp(10px,1.75vw,14px);letter-spacing:0}
.wl-word:hover{background:#fff}
.wl-word:active{transform:scale(.97)}
.wl-word[aria-pressed="true"]{background:#5A6190;color:#fff}
.wl-word.shake{animation:v51shake .4s}
.wl-foot{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:2px}
.wl-msg{margin:0;min-height:1.4em;color:#C6CCE4;font-size:14.5px;text-align:center}
.wl-mistakes{display:flex;align-items:center;gap:6px;font-size:13px;color:#9AA3C7}
.wl-mistakes span{margin-right:4px}
.wl-mistakes i{width:12px;height:12px;border-radius:50%;background:#2E3462}
.wl-mistakes i.on{background:#C6CCE4}
.wl-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.wl-actions .wl-submit{background:#19DFC2;border-color:#19DFC2;color:#131A2E}
.wl-actions .wl-submit:hover:not(:disabled){background:#3EE8CF}

/* Mahjong Solitaire */
#arena.mj-arena{height:600px;background:radial-gradient(120% 90% at 50% 0%,#1d2a5a,#0d1230 72%)}
.mj-stage{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:8px}
.mj-sprite{position:absolute;width:0;height:0;overflow:hidden}
.mj-board{position:relative;flex:none}
.mj-tile{position:absolute;width:var(--tw);height:var(--th);padding:0;border:0;border-radius:calc(var(--d) * 2);background:linear-gradient(135deg,#ddc99c,#a98a52);box-shadow:1px 2px 4px rgba(0,0,0,.45);cursor:pointer;touch-action:manipulation;transition:transform .12s}
.mj-tile svg{position:absolute;left:0;top:0;width:calc(100% - var(--d));height:calc(100% - var(--d));background:#fffaf0;border-radius:calc(var(--d) * 1.6);box-shadow:inset 0 0 0 1px rgba(120,95,50,.25)}
.mj-tile.blocked{cursor:default}
.mj-tile.blocked svg{filter:brightness(.74) saturate(.75)}
.mj-tile.sel svg{background:#bff5ec;box-shadow:inset 0 0 0 3px #19DFC2}
.mj-tile.sel{transform:translateY(-3px)}
.mj-tile.hint svg{background:#fff0b3;box-shadow:inset 0 0 0 3px #F6C945}
.mj-tile.gone{animation:mjGone .22s ease forwards;pointer-events:none}
.mj-tile.shake{animation:v51shake .3s}
.mj-board.shuffled .mj-tile{animation:mjIn .35s ease}
@keyframes mjGone{to{opacity:0;transform:scale(.8)}}
@keyframes mjIn{from{opacity:.2;transform:scale(.9)}}
.mj-msg{margin:0;min-height:1.3em;font-size:13.5px;color:#C6CCE4;text-align:center}
.mj-tools button.pulse{border-color:#F6C945;box-shadow:0 0 0 3px rgba(246,201,69,.3)}
.mj-tools b{font-variant-numeric:tabular-nums;color:#9FF5E6}

/* 2048 */
#arena.t48-arena{height:600px;background:#0F1330}
.t48{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:14px}
.t48-bar{width:min(100%,440px);display:flex;justify-content:space-between;align-items:center;gap:8px}
.t48-max{color:#C6CCE4;font-size:14px}
.t48-max b{color:#fff;font-size:18px;font-variant-numeric:tabular-nums}
.t48-board{position:relative;width:min(100%,440px);aspect-ratio:1;flex:none;border-radius:16px;background:#1B1F3E;touch-action:none;container-type:inline-size;outline:none}
.t48-board:focus-visible{box-shadow:0 0 0 3px rgba(25,223,194,.55)}
.t48-board.t48-bump{animation:v51shake .25s}
.t48-cells{position:absolute;inset:0;display:grid;grid-template-columns:repeat(4,1fr);gap:2.4cqw;padding:2.4cqw}
.t48-cell{border-radius:2.4cqw;background:#262B57}
.t48-tiles{position:absolute;inset:0}
.t48-tile{position:absolute;width:22cqw;height:22cqw;left:calc(2.4cqw + var(--c) * 24.4cqw);top:calc(2.4cqw + var(--r) * 24.4cqw);z-index:1;border-radius:2.4cqw;display:grid;place-items:center;font-weight:800;font-stretch:75%;font-size:10cqw;line-height:1;font-variant-numeric:tabular-nums;background:#EEF1FF;color:#1b2340;transition:left .12s ease,top .12s ease}
.t48-tile[data-len="3"]{font-size:8.4cqw}
.t48-tile[data-len="4"]{font-size:6.8cqw}
.t48-tile[data-len="5"],.t48-tile[data-len="6"]{font-size:5.4cqw}
.t48-tile[data-v="4"]{background:#D5DDFF}
.t48-tile[data-v="8"]{background:#FFB86B;color:#fff}
.t48-tile[data-v="16"]{background:#FF9356;color:#fff}
.t48-tile[data-v="32"]{background:#FF6F61;color:#fff}
.t48-tile[data-v="64"]{background:#F04A5C;color:#fff}
.t48-tile[data-v="128"]{background:#F8DA6B}
.t48-tile[data-v="256"]{background:#F6C945}
.t48-tile[data-v="512"]{background:#EDB10C}
.t48-tile[data-v="1024"]{background:#5BE49B}
.t48-tile[data-v="2048"]{background:#19DFC2;box-shadow:0 0 24px rgba(25,223,194,.55)}
.t48-tile[data-v="4096"],.t48-tile[data-v="big"]{background:#C4A7FF}
.t48-tile.is-new{animation:t48New .16s ease}
.t48-tile.is-merged{z-index:2;animation:t48Pop .16s ease}
@keyframes t48New{from{transform:scale(.3);opacity:.2}}
@keyframes t48Pop{50%{transform:scale(1.12)}}
.t48-hint{margin:0;color:#9AA3C7;font-size:13px;text-align:center}

@media (max-width:650px){
  #arena.sol-arena{height:600px}
  #arena.sdk-arena{height:650px}
  #arena.snake-arena{height:430px}
  #arena.wl-arena{height:520px}
  #arena.mj-arena{height:420px}
  #arena.t48-arena{height:520px}
  :is(.sol-modes,.sdk-modes,.ms-modes,.wl-modes,.mj-modes) button{padding:0 9px;font-size:12.5px;min-height:32px}
  :is(.sol-tools,.mj-tools) button{padding:0 11px;min-height:38px;font-size:13.5px}
  .sol-bar,.mj-bar{padding:10px 12px}
  .sdk{gap:10px;padding:12px}
  .sdk-num{min-height:46px;font-size:20px}
  .wl{padding:12px 10px}
  .wl-grid{gap:6px}
  .wl-word{min-height:62px;border-radius:10px}
}
@media (min-width:700px) and (pointer:coarse){#arena.sol-arena{height:720px}#arena.sdk-arena{height:740px}}
.bloom-board{height:auto;aspect-ratio:1}
