:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--cream:#f6f0e6;--cream-deep:#efe6d6;--ink:#4a453c;--ink-soft:#7a7368;--mint:#9ed9bc;--mint-deep:#6fbf9a;--coral:#f0a194;--coral-deep:#e3877a;--yellow:#f6e27a;--cyan:#5ee6e0;--tile:#fff6e8;--grout:#e4d3b8;--shadow:0 18px 40px #5a46281f;--radius:24px;--app-max:660px;--grid-n:7;--page-gutter:max(6px, env(safe-area-inset-left), env(safe-area-inset-right));--shell-pad:clamp(4px, 1.1vw, 8px);--board-gap:clamp(3px, 1vw, 6px);--board-pad:2px;background:var(--cream);color:var(--ink);font-family:Nunito,ui-rounded,Hiragino Maru Gothic ProN,sans-serif;font-size:16px}@font-face{font-family:DSEG7 Classic;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/dseg7-classic-bold.woff2)format("woff2")}*{box-sizing:border-box}html,body{-webkit-text-size-adjust:100%;background:radial-gradient(1200px 600px at 50% -10%, #fffaf1 0%, transparent 55%), var(--cream);width:100%;min-height:100%;margin:0;overflow-x:hidden}body{min-height:100dvh}body.has-consent-banner{padding-bottom:88px}button,dialog{font:inherit}#app{width:min(100%, var(--app-max));max-width:var(--app-max);padding:2px var(--page-gutter) calc(8px + env(safe-area-inset-bottom));margin:0 auto}.top{text-align:center;padding:0 2px 2px}.brand{letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);margin:0;font-size:.62rem;font-weight:800}h1{letter-spacing:-.03em;margin:0;font-family:Fredoka,Nunito,sans-serif;font-size:clamp(1.2rem,5vw,1.7rem);font-weight:650;line-height:1.05}.date{color:var(--ink-soft);margin:0;font-size:.72rem;font-weight:700}.legal-link{margin:2px 0 0;font-size:.72rem;font-weight:800}.legal-link a,.site-foot a,.consent-banner a{color:var(--ink-soft);text-underline-offset:2px;text-decoration:underline}.legal-link a:hover,.site-foot a:hover,.consent-banner a:hover{color:var(--ink)}.stats{grid-template-columns:repeat(4,1fr);gap:4px;margin-bottom:4px;display:grid}.stat{text-align:center;background:#fffaf3;border:1px solid #5a46280f;border-radius:14px;padding:4px 3px 3px;box-shadow:0 8px 18px #5a46280d}.stat b{font-family:Fredoka,Nunito,sans-serif;font-size:clamp(.95rem,3.6vw,1.15rem);line-height:1.1;display:block}.stat span{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);margin-top:2px;font-size:.68rem;font-weight:800;display:block}.board-shell{--cell:calc((min(100vw, var(--app-max)) - 2 * var(--page-gutter) - 2 * var(--shell-pad) - 2 * var(--board-pad) - (var(--grid-n) - 1) * var(--board-gap)) / var(--grid-n));border-radius:var(--radius);padding:var(--shell-pad);box-shadow:var(--shadow);background:linear-gradient(#fffdf8 0%,#f3eadc 100%);position:relative;overflow:visible;container:play/inline-size}@supports (width:1cqi){.board-shell{--cell:calc((100cqi - 2 * var(--board-pad) - (var(--grid-n) - 1) * var(--board-gap)) / var(--grid-n))}}.battery-rail{--tile:calc((100% - 2 * var(--board-pad) - (var(--grid-n) - 1) * var(--board-gap)) / var(--grid-n));height:calc(var(--cell) * 1.62 + 8px);min-height:calc(var(--cell) * 1.62 + 8px);z-index:5;position:relative;overflow:visible}.battery-rail[hidden]{display:none}.rail-n{margin-bottom:-12px}.rail-s{height:calc(var(--cell) * 1.68 + 8px);min-height:calc(var(--cell) * 1.68 + 8px);margin-top:0}.battery-dock{top:0;bottom:0;left:calc(var(--board-pad) + var(--slot) * (var(--tile) + var(--board-gap)) + var(--tile) / 2);width:calc(var(--cell) * 2.35);box-shadow:none;pointer-events:none;z-index:6;background:0 0;border:0;flex-direction:column;justify-content:flex-end;align-items:center;gap:0;display:flex;position:absolute;transform:translate(-50%)}.rail-s .battery-dock{justify-content:flex-start}.battery-body{isolation:isolate;width:calc(var(--cell) * 2.35);height:calc(var(--cell) * 2.15);flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative}.battery-art{aspect-ratio:1;width:100%;height:100%;position:relative;container:pack/size}.battery-sprite{object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;transform:none}.battery-dock.is-connected .battery-sprite.idle{opacity:1;animation:none;transform:none}.battery-face{z-index:2;pointer-events:none;position:absolute;inset:0}.battery-screen{justify-content:center;align-items:center;width:52%;height:13%;display:flex;position:absolute;top:38%;left:24%;overflow:hidden;container-type:size}.battery-pct{letter-spacing:.03em;color:#7dff9a;white-space:nowrap;text-shadow:0 0 6px #50ff8c66;max-width:100%;font-family:DSEG7 Classic,Orbitron,ui-monospace,monospace;font-size:min(58cqh,20cqw);font-weight:700;line-height:1}.battery-pct:after{content:"%";letter-spacing:0;margin-left:.08em;font-family:DSEG7 Classic,Orbitron,ui-monospace,monospace;font-size:.72em}.battery-bar{flex-direction:row;align-items:stretch;gap:3%;width:50%;height:3.1%;display:flex;position:absolute;top:56%;left:28%;overflow:hidden}.battery-bar i{background:0 0;border-radius:1px;flex:1;display:block;position:relative;overflow:hidden}.battery-bar i:after{content:"";width:var(--slot-fill,0%);background:#3f9d6a;position:absolute;inset:0}.battery-dock.charge-high .battery-pct{color:#7dff9a}.battery-dock.charge-mid .battery-pct{color:#f0d35a}.battery-dock.charge-low .battery-pct{color:#f0a194}.battery-dock.charge-high .battery-bar i.on:after{background:linear-gradient(90deg,#3f9d6a,#8ee0a8)}.battery-dock.charge-mid .battery-bar i.on:after{background:linear-gradient(90deg,#d4a017,#f0d35a)}.battery-dock.charge-low .battery-bar i.on:after{background:linear-gradient(90deg,#c44b3a,#f0a194)}.battery-dock.is-connected .battery-pct,.battery-dock.is-connected .battery-bar i.on:after{animation:1.6s ease-in-out infinite hud-glow}.battery-dock.pack-top .battery-screen{width:52%;height:13.5%;top:33%;left:24%}.battery-dock.pack-top .battery-bar{width:48%;height:3%;top:52.8%;left:29%}.battery-dock.pack-bottom .battery-screen{width:52%;height:13.5%;top:45.5%;left:24%}.battery-dock.pack-bottom .battery-bar{width:48%;height:3.2%;top:66.2%;left:29%}.board{isolation:isolate;grid-template-columns:repeat(var(--grid-n), 1fr);gap:var(--board-gap);padding:var(--board-pad);touch-action:manipulation;background:var(--grout);border-radius:16px;display:grid;position:relative;overflow:visible}.board-frame{pointer-events:none;z-index:3;background:url(../art/board-frame.png) 50%/100% 100% no-repeat;position:absolute;inset:-8.97%}.gap-walls{inset:var(--board-pad);grid-template-columns:repeat(var(--n,var(--grid-n)), 1fr);grid-template-rows:repeat(var(--n,var(--grid-n)), 1fr);gap:var(--board-gap);pointer-events:none;z-index:2;display:grid;position:absolute;overflow:visible}.gap-slot{position:relative;overflow:visible}.gap-wall{pointer-events:none;position:absolute}.gap-wall img{object-fit:fill;pointer-events:none;width:100%;height:100%;display:block}.gap-wall-h{width:100%;height:100%;transform:translateY(calc(var(--board-gap) / 2 - 50%));top:100%;left:0}.gap-wall-v{width:100%;height:100%;transform:translateX(calc(var(--board-gap) / 2 - 50%));top:0;left:100%}.gap-wall-j{width:100%;height:100%;transform:translate(calc(var(--board-gap) / 2 - 50%), calc(var(--board-gap) / 2 - 50%));top:100%;left:100%}.tile{z-index:1;aspect-ratio:1;box-shadow:none;cursor:pointer;-webkit-tap-highlight-color:transparent;filter:none;background:0 0;border:0;border-radius:clamp(10px,22%,16px);padding:0;position:relative;overflow:visible}.cell-well{border-radius:inherit;pointer-events:none;z-index:1;background-color:#ebe4d6;background-image:url(../art/cell-well-off.png);background-position:50%;background-repeat:no-repeat;background-size:100% 100%;position:absolute;inset:0;overflow:hidden}.tile.is-powered .cell-well{background-color:#f7f0e4;background-image:url(../art/cell-well-on.png)}.tile:focus-visible{outline:3px solid var(--mint-deep);outline-offset:2px}.tile.locked{cursor:default}.tile.shake{animation:.38s shake}.tile.pop-load .sprite{animation:.45s cubic-bezier(.2,1.4,.3,1) pop}.port-clip{inset:calc(var(--board-gap) / -2);pointer-events:none;z-index:3;--port-n:0;--port-e:0;--port-s:0;--port-w:0;-webkit-mask-composite:source-over;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0),linear-gradient(#000 0 0),linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-repeat:no-repeat;-webkit-mask-size:30% 30%, 26% calc(56% * var(--port-n)), calc(56% * var(--port-e)) 26%, 26% calc(56% * var(--port-s)), calc(56% * var(--port-w)) 26%;mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0),linear-gradient(#000 0 0),linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:50%,top,100%,bottom,0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-composite:source-over;mask-composite:add;-webkit-mask-size:30% 30%, 26% calc(56% * var(--port-n)), calc(56% * var(--port-e)) 26%, 26% calc(56% * var(--port-s)), calc(56% * var(--port-w)) 26%;mask-size:30% 30%, 26% calc(56% * var(--port-n)), calc(56% * var(--port-e)) 26%, 26% calc(56% * var(--port-s)), calc(56% * var(--port-w)) 26%;position:absolute;overflow:visible;-webkit-mask-position:50%,top,100%,bottom,0;mask-position:50%,top,100%,bottom,0}.tile.port-n .port-clip{--port-n:1}.tile.port-e .port-clip{--port-e:1}.tile.port-s .port-clip{--port-s:1}.tile.port-w .port-clip{--port-w:1}.spinner{will-change:transform;z-index:3;transition:transform .22s cubic-bezier(.2,.8,.2,1);position:absolute;inset:0;overflow:visible}.wire-art,.mascot{position:absolute;inset:0}.wire-art{transform-origin:50%;pointer-events:none;inset:0;transform:none}.sprite{object-fit:contain;object-position:center;transform-origin:50%;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;inset:0}.wire-art .sprite{object-fit:fill;transform:none}.tile.kind-drain .sprite,.tile.kind-drain .sprite.unlit,.tile.kind-drain .sprite.lit,.tile.kind-drain.is-lit .sprite{filter:none;object-fit:contain;object-position:center;padding:2%}.sprite.unlit{filter:contrast(1.45)saturate(1.75)brightness(.72)drop-shadow(0 0 .6px #2f6b52)}.tile.kind-out,.tile.kind-out .sprite,.tile.kind-out .sprite.unlit,.tile.kind-out .sprite.lit,.tile.kind-out.is-lit .sprite.lit,.tile.kind-out.fade-near .sprite.lit,.tile.kind-out.fade-mid .sprite.lit,.tile.kind-out.fade-far .sprite.lit,.tile.kind-out.has-v5 .sprite.lit,.tile.kind-out.has-v5 .sprite.unlit{filter:none;object-fit:contain;object-position:center}.tile.kind-out .mascot{inset:20%}.tile.kind-out .sprite.unlit,.tile.kind-out .sprite.lit{padding:0}.tile.kind-out:not(.is-lit) .sprite.lit{opacity:0}.tile.kind-out:not(.is-lit) .sprite.unlit{opacity:1}.sprite.lit{opacity:0;transition:opacity .18s}.tile.is-lit .sprite.lit{opacity:1}.tile.is-lit .sprite.unlit{opacity:0}.tile.is-lit,.tile.is-lit.kind-straight,.tile.is-lit.kind-corner,.tile.is-lit.kind-t,.tile.kind-out.is-lit,.tile.kind-drain.is-lit{box-shadow:none;filter:none;background:0 0}.tile.kind-straight .sprite.lit,.tile.kind-corner .sprite.lit,.tile.kind-t .sprite.lit{filter:contrast(1.2)saturate(1.7)brightness(.95)drop-shadow(0 0 .7px #2aa8c8)}.tile.fade-near .sprite.lit{filter:hue-rotate(-142deg)saturate(1.85)brightness(.98)drop-shadow(0 0 .8px #c45b4a)}.tile.fade-mid .sprite.lit{filter:hue-rotate(48deg)saturate(2)brightness(1.05)drop-shadow(0 0 .8px #2aa8c8)}.tile.fade-far .sprite.lit{filter:saturate(.5)brightness(.78)contrast(1.2)drop-shadow(0 0 .5px #6a7a70)}.tile.has-v5 .sprite.lit,.tile.has-v5 .sprite.unlit{filter:none}.wall-frame{pointer-events:none;opacity:1;z-index:2;background:url(../art/wall-cell-frame.png) 50%/100% 100% no-repeat;position:absolute;inset:0}.tile.dancing .mascot{transform-origin:50% 70%;animation:1.15s ease-in-out infinite bulb-dance}.zap{object-fit:contain;pointer-events:none;opacity:0;z-index:4;width:124%;height:124%;position:absolute;inset:-12%;transform:scale(.6)}.tile.zapping .zap{animation:.42s zap}.actions{grid-template-columns:1fr 1fr;gap:8px;margin-top:8px;display:grid}.actions .wide{grid-column:1/-1}.btn{min-height:46px;color:var(--ink);cursor:pointer;background:#fffaf3;border:0;border-radius:16px;font-weight:800;box-shadow:0 8px 16px #5a46280f}.btn.primary{background:linear-gradient(180deg, #f8b3a8 0%, var(--coral) 100%);color:#5a2e28}.btn:disabled{opacity:.45;cursor:default}#share:disabled,.btn.primary:disabled{color:#8a8378;opacity:1;box-shadow:none;cursor:not-allowed;background:#d8d3cb}.btn:not(:disabled):active{transform:translateY(1px)}.hint{text-align:center;color:var(--ink-soft);margin:8px 4px 0;font-size:.85rem;font-weight:700}.win{box-shadow:var(--shadow);text-align:center;background:linear-gradient(#fff 0%,#fff6e8 100%);border-radius:22px;margin-top:14px;padding:16px 14px 14px;display:none}.win.show{animation:.45s cubic-bezier(.2,1.2,.3,1) rise;display:block}.win h2{margin:0;font-family:Fredoka,Nunito,sans-serif;font-size:1.6rem}.win p{margin:6px 0 12px;font-weight:700}.win .scoreline{color:#3f8f73;font-family:Fredoka,Nunito,sans-serif;font-size:1.8rem}.share-card{color:var(--ink);text-align:left;white-space:pre-wrap;background:#fff7ee;border-radius:16px;margin:0;padding:12px 12px 10px;font:800 .95rem/1.45 Nunito,sans-serif}.share-actions{grid-template-columns:1fr 1fr;gap:8px;margin-top:12px;display:grid}.share-actions .btn{justify-content:center;align-items:center;min-height:44px;text-decoration:none;display:flex}.share-actions .wide{grid-column:1/-1}.site-foot{padding-bottom:calc(8px + env(safe-area-inset-bottom));color:var(--ink-soft);justify-content:center;align-items:center;gap:8px;margin:16px 0 8px;font-size:.78rem;font-weight:800;display:flex}.consent-banner{left:50%;bottom:calc(12px + env(safe-area-inset-bottom));width:min(calc(100% - 20px), var(--app-max));box-shadow:var(--shadow);z-index:36;background:#fffdf8;border-radius:18px;align-items:center;gap:10px;padding:10px 12px;display:flex;position:fixed;transform:translate(-50%)}.consent-banner[hidden]{display:none}.consent-banner p{flex:1;margin:0;font-size:.82rem;font-weight:700;line-height:1.35}.consent-banner .btn{flex-shrink:0;min-height:40px;padding:0 14px}.fx-layer{pointer-events:none;border-radius:var(--radius);z-index:20;position:absolute;inset:0;overflow:hidden}.celebrate-burst{object-fit:contain;opacity:0;mix-blend-mode:multiply;z-index:21;width:100%;height:100%;position:absolute;inset:0;transform:scale(.55)}.board-shell.celebrate .celebrate-burst{animation:.95s celebrate-pop}dialog{width:min(420px,100% - 24px);color:var(--ink);box-shadow:var(--shadow);background:#fffdf8;border:0;border-radius:24px;padding:22px 20px 18px}dialog::backdrop{background:#372e2259}dialog h2{margin:0 0 10px;font-family:Fredoka,Nunito,sans-serif}dialog p{margin:0 0 10px;font-weight:650;line-height:1.45}dialog menu{justify-content:flex-end;margin:14px 0 0;padding:0;display:flex}.toast{left:50%;bottom:calc(22px + env(safe-area-inset-bottom));color:#fffaf3;opacity:0;pointer-events:none;z-index:40;text-align:center;background:#3f3a33;border-radius:999px;max-width:calc(100% - 24px);padding:12px 16px;font-weight:800;transition:all .2s;position:fixed;transform:translate(-50%,12px);box-shadow:0 10px 24px #281e1447}.toast.show{opacity:1;transform:translate(-50%)}.test-date{letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);background:#fffaf3e6;border:1px dashed #5a46282e;border-radius:999px;align-items:center;gap:6px;margin-top:2px;padding:1px 6px;font-size:.75rem;font-weight:800;display:inline-flex}.test-date input{font:inherit;text-transform:none;letter-spacing:0;color:var(--ink);background:#fff;border:1px solid #5a462826;border-radius:10px;padding:4px 8px}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)rotate(-2deg)}50%{transform:translate(4px)rotate(2deg)}75%{transform:translate(-3px)}}@keyframes pop{0%{transform:scale(.86)}55%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes zap{0%{opacity:0;transform:scale(.55)}35%{opacity:1;transform:scale(1.05)}to{opacity:0;transform:scale(1.15)}}@keyframes rise{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes celebrate-pop{0%{opacity:0;transform:scale(.52)}22%{opacity:1;transform:scale(1.02)}70%{opacity:1;transform:scale(1.08)}to{opacity:0;transform:scale(1.16)}}@keyframes bulb-dance{0%,to{transform:translateY(0)rotate(0)scale(1)}20%{transform:translateY(-4px)rotate(-6deg)scale(1.04)}50%{transform:translateY(-1px)rotate(5deg)scale(1.06)}80%{transform:translateY(-3px)rotate(-4deg)scale(1.03)}}@keyframes hud-glow{0%,to{opacity:.7;filter:brightness()}50%{opacity:1;filter:brightness(1.28)}}@media (width<=340px){.stats{grid-template-columns:repeat(2,1fr)}.stat{padding:5px 2px}.stat span{font-size:.58rem}}@media (height<=720px) and (width<=520px){.brand{display:none}.hint{margin-top:6px}}
