:root{--bg-top:#2b1056;--bg-bottom:#0f0828;--glow:#ff5cc847;--accent:#ff7ad9;--accent-2:#8f6bff;--gold:#ffd25e;--text:#fff;--muted:#ffffffb3;--panel:#1e103eeb;--panel-border:#ffffff29;--font:ui-rounded, "SF Pro Rounded", "Nunito", "Segoe UI", system-ui, -apple-system, Roboto, sans-serif}[data-theme="1"]{--bg-top:#0c4a63;--bg-bottom:#04192b;--glow:#50e6ff40;--accent:#4fe3ff;--accent-2:#3f8cff;--panel:#082a40eb}[data-theme="2"]{--bg-top:#6a1d43;--bg-bottom:#1f0b24;--glow:#ffaa5a47;--accent:#ffad5c;--accent-2:#ff5c8a;--panel:#3c102ceb}[data-theme="3"]{--bg-top:#114a37;--bg-bottom:#06190f;--glow:#8cffa038;--accent:#7dff9e;--accent-2:#2fd0a0;--panel:#0a2e22eb}[data-theme="4"]{--bg-top:#1d2766;--bg-bottom:#090c26;--glow:#a08cff47;--accent:#b9a4ff;--accent-2:#5c7cff;--panel:#141846eb}*{box-sizing:border-box}html,body{overscroll-behavior:none;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;height:100%;color:var(--text);font-family:var(--font);background-color:var(--bg-bottom);background-image:radial-gradient(120% 60% at 50% 0%, var(--glow), transparent 70%), linear-gradient(180deg, var(--bg-top), var(--bg-bottom));margin:0;transition:background-color .6s;overflow:hidden}#app{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);flex-direction:column;display:flex;position:fixed;inset:0}#stage{flex:1;min-height:0;margin:4px 8px 10px;position:relative}#board{touch-action:none;position:absolute;inset:0}#hud{flex:none;grid-template-columns:68px 1fr 44px;grid-template-areas:"moves goals pause""score score score";align-items:center;gap:8px 10px;padding:10px 14px 4px;transition:opacity .25s;display:grid}#hud.off{visibility:hidden;opacity:0}.hud-moves{border:2px solid var(--panel-border);background:radial-gradient(circle at 35% 30%,#ffffff40,#ffffff0f);border-radius:50%;flex-direction:column;grid-area:moves;justify-content:center;align-items:center;width:68px;height:68px;display:flex}.hud-moves .label{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:10px}.hud-moves .value{font-size:28px;font-weight:900;line-height:1}.hud-moves.low .value{color:#ff8a8a;animation:.9s ease-in-out infinite pulse}.hud-goals{flex-wrap:wrap;grid-area:goals;justify-content:center;gap:14px;display:flex}.goal{align-items:center;gap:4px;font-size:20px;font-weight:800;display:flex}.goal img{width:36px;height:36px}.goal .score-icon{color:var(--gold);font-size:26px}.goal.done b{color:#7dff9e}.goal.done b:after{content:" ✓"}.hud-score{grid-area:score;align-items:center;gap:12px;display:flex}.hud-score .bar{background:#ffffff1f;border-radius:5px;flex:1;height:10px;position:relative}.hud-score .fill{background:linear-gradient(90deg, var(--accent-2), var(--accent));transform-origin:0;border-radius:5px;transition:transform .4s ease-out;position:absolute;inset:0;transform:scaleX(0)}.hud-score .mark{color:#ffffff4d;font-size:20px;font-style:normal;transition:color .3s,transform .3s;position:absolute;top:50%;transform:translate(-50%,-50%)}.hud-score .mark.earned{color:var(--gold);transform:translate(-50%,-50%)scale(1.2)}.hud-score .value{text-align:right;font-variant-numeric:tabular-nums;min-width:64px;font-size:18px}.btn{border:1px solid var(--panel-border);width:100%;color:var(--text);font:700 17px var(--font);cursor:pointer;background:#ffffff1a;border-radius:999px;margin:8px 0 0;padding:12px 18px;transition:transform 80ms;display:block}.btn:active{transform:scale(.96)}.btn.primary{background:linear-gradient(180deg, var(--accent), var(--accent-2));text-shadow:0 1px 2px #0000004d;border:none;box-shadow:0 6px 18px #00000059,inset 0 2px #ffffff59}.btn.big{padding:16px 22px;font-size:21px}.btn.ghost{color:var(--muted);background:0 0;border-color:#0000}.btn.danger{color:#ff9a9a}.btn.icon{grid-area:pause;width:44px;height:44px;margin:0;padding:0;font-size:16px}.btn.corner{position:absolute;top:16px;right:16px}.toggle{border:1px solid var(--panel-border);width:100%;color:var(--text);font:600 17px var(--font);background:#ffffff0f;border-radius:16px;justify-content:space-between;align-items:center;margin:8px 0 0;padding:12px 18px;display:flex}.toggle i{color:var(--muted);background:#ffffff1f;border-radius:999px;padding:3px 12px;font-style:normal}.toggle.on i{background:var(--accent);color:#1a0b33}#overlay{pointer-events:none;opacity:0;justify-content:center;align-items:center;padding:24px;transition:opacity .2s;display:flex;position:fixed;inset:0}#overlay.visible{pointer-events:auto;opacity:1;background:#0803188c}#overlay.visible.title,#overlay.visible.clear{background:0 0}.card{background:var(--panel);border:1px solid var(--panel-border);text-align:center;border-radius:28px;width:min(360px,100%);padding:26px 22px 18px;animation:.32s cubic-bezier(.2,1.4,.4,1) both card-in;box-shadow:0 20px 60px #00000080}.card h2{margin:0 0 12px;font-size:28px;font-weight:900}.card p{color:var(--muted);margin:8px 0}.card .goals{justify-content:center;gap:18px;margin:16px 0 6px;display:flex}.card .goal img{width:48px;height:48px}.card .goal{font-size:26px}.moves-line{font-size:17px}.badge{text-transform:uppercase;letter-spacing:.06em;border-radius:999px;margin-bottom:4px;padding:4px 14px;font-size:14px;font-weight:800;display:inline-block}.badge.hard{background:#ff5c7a}.badge.relief{color:#06261c;background:#2fd0a0}.badge.intro{background:var(--gold);color:#3b2400}.hint{font-size:15px}.stars{justify-content:center;gap:6px;margin:8px 0 4px;display:flex}.star{color:#ffffff26;font-size:58px;line-height:1}.star.earned{color:var(--gold);filter:drop-shadow(0 0 12px #ffd25e99);animation:.45s cubic-bezier(.2,1.6,.4,1) both star-in;animation-delay:calc(var(--i) * .28s + .2s)}.score-line b{color:var(--text);font-size:22px}.skip{padding-bottom:calc(env(safe-area-inset-bottom) + 18px);color:var(--muted);justify-content:center;align-items:flex-end;font-size:14px;display:flex;position:absolute;inset:0}.title-screen{flex-direction:column;justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0}.title-screen .btn.big{width:min(280px,100%);margin-top:28px}.logo{letter-spacing:-.02em;background:linear-gradient(180deg, #fff, var(--accent) 60%, var(--accent-2));color:#0000;filter:drop-shadow(0 6px 18px #00000073);-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(44px,13vw,84px);font-weight:900}.tagline{color:var(--muted);margin:4px 0 0;font-size:18px}.sub{color:var(--muted);margin:10px 0 0}.gems{pointer-events:none;position:absolute;inset:0;overflow:hidden}.float-gem{opacity:.85;width:64px;height:64px;animation:6s ease-in-out infinite alternate float;position:absolute}.g0{animation-delay:-1s;top:12%;left:8%}.g1{width:52px;height:52px;animation-delay:-3s;top:18%;right:10%}.g2{width:56px;height:56px;animation-delay:-2s;bottom:20%;left:14%}.g3{animation-delay:-4s;bottom:14%;right:14%}.g4{width:44px;height:44px;animation-delay:-5s;top:6%;left:44%}.g5{width:48px;height:48px;animation-delay:-2.5s;bottom:7%;left:40%}#praise{white-space:nowrap;color:#fff;text-shadow:0 0 18px var(--accent), 0 4px 0 #00000059;pointer-events:none;opacity:0;font-size:clamp(34px,10vw,56px);font-weight:900;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)}#praise.show{animation:1s ease-out both praise}#curtain{background:var(--bg-bottom);opacity:0;pointer-events:none;transition:opacity .2s;position:fixed;inset:0}#curtain.on{opacity:1;pointer-events:auto}@media (orientation:landscape) and (max-height:560px){#app{flex-direction:row}#hud{grid-template-columns:68px 1fr 44px;grid-template-areas:"moves.pause""goals goals goals""score score score";align-content:center;width:230px}}@keyframes pulse{50%{transform:scale(1.15)}}@keyframes card-in{0%{opacity:0;transform:scale(.88)translateY(12px)}}@keyframes star-in{0%{opacity:0;transform:scale(2.2)rotate(-30deg)}}@keyframes float{0%{transform:translateY(-10px)rotate(-8deg)}to{transform:translateY(14px)rotate(8deg)}}@keyframes praise{0%{opacity:0;transform:translate(-50%,-50%)scale(.5)}20%{opacity:1;transform:translate(-50%,-50%)scale(1.12)}35%{transform:translate(-50%,-50%)scale(1)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-70%)scale(1)}}.reduced-motion .float-gem,.reduced-motion .hud-moves.low .value{animation:none}
