:root{--bg:#060a18;--bg-2:#0a1230;--floor:#0e1734;--floor-edge:#82a0ff12;--wall-hi:#23305f;--wall-lo:#141c3d;--text:#e9eeff;--muted:#7d89b4;--faint:#3a466f;--cyan:#3ef0ff;--cyan-glow:#3ef0ff8c;--amber:#ffb347;--amber-glow:#ffb34780;--any:#dfe6ff;--any-glow:#dfe6ff73;--move-ms:.135s;--cell:48px;--ease-out:cubic-bezier(.2, .85, .25, 1);--font:"Inter", "SF Pro Display", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;overscroll-behavior:none;margin:0;overflow:hidden}body{background:radial-gradient(1200px 700px at 50% 38%, #2846aa38, transparent 70%), radial-gradient(600px 400px at 85% 100%, #ffb3470d, transparent 70%), radial-gradient(#7896ff0b 1px, transparent 1.2px) 0 0 / 22px 22px, var(--bg)}button{font:inherit;color:inherit}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}:root{--hud-h:44px;--pad-size:56px;--pad-gap:6px;--tool-size:48px;--status-h:54px;--radius:14px}.app{height:100vh;height:100dvh;padding:max(4px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(10px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));grid-template:"hud""stage"minmax(0,1fr)"status""controls"/minmax(0,1fr);row-gap:4px;max-width:960px;margin:0 auto;display:grid;position:relative;overflow:hidden}.hud{height:var(--hud-h);grid-area:hud;align-items:center;gap:6px;margin:0 -6px;display:flex}.hud-btn{width:44px;height:44px;color:var(--muted);background:0 0;border-color:#0000;border-radius:12px;flex:none}.level-tag{flex:1;align-items:baseline;gap:8px;min-width:0;display:flex}.level-num{letter-spacing:.08em;color:var(--cyan);font-variant-numeric:tabular-nums;flex:none;font-size:12px;font-weight:700}.level-name{letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:15px;font-weight:700;overflow:hidden}.moves{color:var(--muted);flex:none;align-items:baseline;gap:4px;display:flex}.moves span{text-align:right;min-width:2ch;color:var(--text);font-variant-numeric:tabular-nums;font-size:18px;font-weight:700}.moves small{letter-spacing:.12em;text-transform:uppercase;font-size:10px}.stage{touch-action:none;-webkit-touch-callout:none;grid-area:stage;justify-content:center;align-items:center;min-width:0;min-height:0;display:flex;position:relative}.statusbar{height:var(--status-h);pointer-events:none;flex-direction:column;grid-area:status;justify-content:center;align-items:center;gap:5px;display:flex}.hint{text-align:center;color:#c6cff0;-webkit-line-clamp:2;opacity:0;-webkit-box-orient:vertical;max-width:30em;margin:0;font-size:13.5px;line-height:1.3;transition:opacity .25s,transform .25s;display:-webkit-box;overflow:hidden;transform:translateY(3px)}.hint.show{opacity:1;transform:none}.queue{align-items:center;gap:8px;height:18px;display:flex}.queue[hidden]{display:none}.queue-label{letter-spacing:.2em;text-transform:uppercase;color:var(--amber);opacity:.8;font-size:10px;font-weight:700}.queue-slots{gap:4px;display:flex}.slot{border:1px dashed #ffb3474d;border-radius:5px;width:18px;height:18px;transition:background .15s,border-color .15s;position:relative}.slot.filled{background:#ffb3471f;border:1px solid #ffb3478c}.slot.next{border-color:var(--amber);background:#ffb34742}.slot.filled:after{content:"";border:2px solid #ffd9a3;border-width:2px 2px 0 0;width:5px;height:5px;position:absolute;top:50%;left:50%;translate:-50% -50%}.slot.act-up:after{margin-top:1px;rotate:-45deg}.slot.act-right:after{margin-left:-1px;rotate:45deg}.slot.act-down:after{margin-top:-1px;rotate:135deg}.slot.act-left:after{margin-left:1px;rotate:-135deg}.slot.act-wait:after{background:#ffd9a3;border:0;border-radius:50%;width:5px;height:5px}.controls{grid-area:controls;grid-template-columns:1fr auto 1fr;justify-self:center;place-items:center;column-gap:8px;width:100%;max-width:400px;display:grid}.icon-btn{color:#b7c2ea;cursor:pointer;touch-action:manipulation;background:#141e4280;border:1px solid #82a0ff1f;place-items:center;padding:0;transition:background .12s,color .12s,transform 80ms,opacity .15s;display:grid}.icon-btn:hover{color:var(--text)}.icon-btn:active,.icon-btn.pressed{color:var(--text);background:#3ef0ff1f;transform:scale(.92)}.icon-btn:disabled{opacity:.3;cursor:default;transform:none}.icon-btn svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.icon-btn.small{border-radius:11px;width:36px;height:36px}.tool{width:var(--tool-size);height:var(--tool-size);color:var(--muted);border-radius:50%}#btn-mute .cross{display:none}#btn-mute.muted .cross{display:inline}#btn-mute.muted .wave{display:none}:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.dpad{grid-template-columns:repeat(3, var(--pad-size));grid-template-rows:repeat(3, var(--pad-size));gap:var(--pad-gap);touch-action:none;display:grid}.pad{border-radius:var(--radius);cursor:pointer;touch-action:none;-webkit-touch-callout:none;background:linear-gradient(#1c2a58e6,#101836e6);border:1px solid #3ef0ff29;padding:0;transition:background 80ms,transform 80ms,border-color 80ms;position:relative}.pad.up{grid-area:1/2}.pad.left{grid-area:2/1}.pad.wait{background:#121a3ab3;border-color:#ffb34738;border-radius:50%;grid-area:2/2}.pad.right{grid-area:2/3}.pad.down{grid-area:3/2}.pad i{border:solid var(--cyan);opacity:.85;border-width:2.5px 2.5px 0 0;width:11px;height:11px;position:absolute;top:50%;left:50%;translate:-50% -50%}.pad.up i{margin-top:2px;rotate:-45deg}.pad.right i{margin-left:-2px;rotate:45deg}.pad.down i{margin-top:-2px;rotate:135deg}.pad.left i{margin-left:2px;rotate:-135deg}.pad.wait i{background:var(--amber);opacity:.8;border:0;border-radius:50%;width:9px;height:9px}.pad.pressed,.pad:active{background:#3ef0ff33;border-color:#3ef0ff8c;transform:scale(.93)}.pad.wait.pressed,.pad.wait:active{background:#ffb34738;border-color:#ffb3478c}.keys{letter-spacing:.06em;color:var(--faint);grid-column:1/-1;margin:8px 0 0;font-size:11px;display:none}.brand{color:var(--muted);letter-spacing:.24em;align-items:center;gap:8px;font-size:10px;display:flex}.brand-name{font-weight:600}.brand-name b{color:var(--text);margin-left:.25em;font-weight:800}.brand-mark{width:14px;height:14px;position:relative}.brand-mark i{border-radius:2px;width:9px;height:9px;position:absolute}.brand-mark i:first-child{border:1.5px solid var(--amber);background:#ffb34766;bottom:0;right:0}.brand-mark i:last-child{background:var(--cyan);top:0;left:0}@media (max-height:720px){:root{--pad-size:50px;--pad-gap:5px;--tool-size:44px;--status-h:48px;--hud-h:40px}}@media (hover:hover) and (pointer:fine){:root{--pad-size:42px;--tool-size:42px}.pad i{width:9px;height:9px}.keys{display:block}}@media (orientation:landscape) and (max-height:540px){:root{--pad-size:48px;--pad-gap:4px;--tool-size:44px;--status-h:auto}.app{grid-template:"hud hud""stage status"minmax(0,1fr)"stage controls"/minmax(0,1fr) auto;column-gap:16px;max-width:none}.statusbar{align-self:end;width:240px;padding-bottom:8px}.keys{display:none}}.board{--frame:.4;width:calc((var(--inner-cols) + 2 * var(--frame)) * var(--cell));height:calc((var(--inner-rows) + 2 * var(--frame)) * var(--cell));--r:calc(var(--cell) * .2);transition:filter .4s;position:relative}.board.no-anim,.board.no-anim *{transition:none!important}.grid{grid-template-columns:calc(var(--frame) * var(--cell)) repeat(var(--inner-cols), var(--cell)) calc(var(--frame) * var(--cell));grid-template-rows:calc(var(--frame) * var(--cell)) repeat(var(--inner-rows), var(--cell)) calc(var(--frame) * var(--cell));display:grid;position:absolute;top:0;bottom:0;left:0;right:0}.tile{position:relative}.tile.floor:before,.tile.switch:before,.tile.door:before,.tile.exit:before{content:"";border-radius:var(--r);background:linear-gradient(160deg, #111b3d, var(--floor));box-shadow:inset 0 0 0 1px var(--floor-edge);position:absolute;top:1.5px;bottom:1.5px;left:1.5px;right:1.5px}.tile.wall{background:linear-gradient(180deg, var(--wall-hi), var(--wall-lo));box-shadow:var(--st,0 0 transparent), var(--sb,0 0 transparent), var(--sl,0 0 transparent), var(--sr,0 0 transparent)}.tile.wall.edge-t{--st:inset 0 2px 0 #96afff47}.tile.wall.edge-b{--sb:inset 0 -3px 0 #00000059}.tile.wall.edge-l{--sl:inset 2px 0 0 #96afff1a}.tile.wall.edge-r{--sr:inset -2px 0 0 #0003}.grid:after{content:"";pointer-events:none;z-index:-1;border-radius:6px;position:absolute;top:-1px;bottom:-1px;left:-1px;right:-1px;box-shadow:0 12px 32px #00000059}.tile.switch{--who:var(--any);--who-glow:var(--any-glow)}.tile.switch.by-player{--who:var(--cyan);--who-glow:var(--cyan-glow)}.tile.switch.by-echo{--who:var(--amber);--who-glow:var(--amber-glow)}.plate{border:max(2px, calc(var(--cell) * .055)) solid var(--who);opacity:.7;transition:background .18s, box-shadow .18s, opacity .18s, transform .18s var(--ease-out);border-radius:50%;position:absolute;top:25%;bottom:25%;left:25%;right:25%}.tile.switch.latch .plate{border-radius:22%;top:28%;bottom:28%;left:28%;right:28%;transform:rotate(45deg)}.plate:after{content:"";background:var(--g);opacity:.85;border-radius:50%;position:absolute;top:32%;bottom:32%;left:32%;right:32%}.tile.switch.on .plate{opacity:1;background:color-mix(in srgb, var(--who) 35%, transparent);box-shadow:0 0 calc(var(--cell) * .35) var(--who-glow), inset 0 0 calc(var(--cell) * .12) var(--who-glow);transform:scale(.9)}.tile.switch.latch.on .plate{transform:rotate(45deg)scale(.9)}.slab{border-radius:calc(var(--r) * .8);border:2px solid var(--g);background:repeating-linear-gradient(135deg, color-mix(in srgb, var(--g) 42%, #0a0f24) 0 5px, color-mix(in srgb, var(--g) 22%, #0a0f24) 5px 10px);box-shadow:0 0 calc(var(--cell) * .14) color-mix(in srgb, var(--g) 35%, transparent);transition:transform .24s var(--ease-out), opacity .24s;position:absolute;top:7%;bottom:7%;left:7%;right:7%}.tile.door:after{content:"";border-radius:calc(var(--r) * .8);border:1.5px dashed color-mix(in srgb, var(--g) 70%, transparent);opacity:0;transition:opacity .24s;position:absolute;top:10%;bottom:10%;left:10%;right:10%}.tile.door.open .slab{opacity:0;transform:scale(.2)}.tile.door.open:after{opacity:.55}.portal{background:radial-gradient(circle,#141d40 0%,#0b1129 70%);border:2px solid #4a5786;border-radius:26%;transition:border-color .3s,box-shadow .3s;position:absolute;top:14%;bottom:14%;left:14%;right:14%;overflow:hidden}.portal:before{content:"";border:2px solid #3a4673;border-radius:22%;transition:border-color .3s,background .3s;position:absolute;top:22%;bottom:22%;left:22%;right:22%}.tile.exit.open .portal{box-shadow:0 0 calc(var(--cell) * .28) var(--cyan-glow), inset 0 0 calc(var(--cell) * .16) #3ef0ff59;background:radial-gradient(circle,#3ef0ff59,#0b1129 75%);border-color:#c6fbff}.tile.exit.open .portal:before{border-color:var(--cyan);background:#3ef0ff2e;animation:2.4s ease-in-out infinite portal}@keyframes portal{0%,to{transform:scale(1)rotate(0)}50%{transform:scale(.82)rotate(45deg)}}.pips{z-index:1;justify-content:center;gap:3px;display:flex;position:absolute;bottom:8%;left:0;right:0}.pip{width:max(4px, calc(var(--cell) * .09));height:max(4px, calc(var(--cell) * .09));border:1px solid var(--g);opacity:.8;border-radius:50%;transition:background .2s}.pip.on{background:var(--g);box-shadow:0 0 6px var(--g)}.entity,.trail,.burst{width:var(--cell);height:var(--cell);transform:translate(calc((var(--x) - 1 + var(--frame)) * var(--cell)), calc((var(--y) - 1 + var(--frame)) * var(--cell)));pointer-events:none;position:absolute;top:0;left:0}.entity{transition:transform var(--move-ms) var(--ease-out);z-index:3}.entity.player{z-index:4}.entity .core{border-radius:30%;position:absolute;top:19%;bottom:19%;left:19%;right:19%}.player .core{background:radial-gradient(circle at 32% 28%, #e4feff 0%, var(--cyan) 42%, #0fa3c4 100%);box-shadow:0 0 calc(var(--cell) * .24) var(--cyan-glow), inset 0 calc(var(--cell) * -.06) calc(var(--cell) * .1) #00284659}.echo .core{border:max(2px, calc(var(--cell) * .045)) solid #ffbe64e6;box-shadow:0 0 calc(var(--cell) * .18) var(--amber-glow), inset 0 0 calc(var(--cell) * .1) #ffb34766;background:#ffb34747;transition:opacity .3s,box-shadow .3s;top:21%;bottom:21%;left:21%;right:21%}.echo.dormant .core{opacity:.4;box-shadow:none;border-style:dashed;animation:1.6s ease-in-out infinite breathe}.echo.overlap .core{top:12%;bottom:12%;left:12%;right:12%}@keyframes breathe{50%{opacity:.22}}.entity .core:after{content:"";width:22%;height:22%;transition:transform var(--move-ms) var(--ease-out);background:#ffffffd9;border-radius:50%;position:absolute;top:39%;left:39%}.echo .core:after{background:#ffdcaae6}.entity[data-face=up] .core:after{transform:translateY(-95%)}.entity[data-face=down] .core:after{transform:translateY(95%)}.entity[data-face=left] .core:after{transform:translate(-95%)}.entity[data-face=right] .core:after{transform:translate(95%)}.entity:before{font-size:max(9px, calc(var(--cell) * .19));letter-spacing:.16em;white-space:nowrap;opacity:0;font-weight:800;transition:opacity .3s;position:absolute;bottom:92%;left:50%;transform:translate(-50%)}.board.tags .entity.player:before{content:"YOU";color:var(--cyan);opacity:.9}.board.tags .entity.echo:before{content:"ECHO";color:var(--amber);opacity:.9}.board.tags .entity.echo.overlap:before{top:96%;bottom:auto}.core[data-bump=up]{--bx:0;--by:-1}.core[data-bump=down]{--bx:0;--by:1}.core[data-bump=left]{--bx:-1;--by:0}.core[data-bump=right]{--bx:1;--by:0}.core.bump{animation:.2s ease-out bump}@keyframes bump{40%{transform:translate(calc(var(--bx) * 14%), calc(var(--by) * 14%)) scale(calc(1 - .12 * var(--bx) * var(--bx)), calc(1 - .12 * var(--by) * var(--by)))}}.core.wait-pulse{animation:.32s ease-out waitpulse}@keyframes waitpulse{50%{transform:scale(.86)}}.fx-layer{pointer-events:none;z-index:2;position:absolute;top:0;bottom:0;left:0;right:0}.trail:before{content:"";border-radius:999px;animation:.42s ease-out forwards trail;position:absolute}.trail.player:before{--c:var(--cyan)}.trail.echo:before{--c:var(--amber)}.trail.dir-right:before{background:linear-gradient(90deg, transparent, var(--c));width:100%;height:18%;top:41%;left:22%}.trail.dir-left:before{background:linear-gradient(270deg, transparent, var(--c));width:100%;height:18%;top:41%;right:22%}.trail.dir-down:before{background:linear-gradient(180deg, transparent, var(--c));width:18%;height:100%;top:22%;left:41%}.trail.dir-up:before{background:linear-gradient(0deg, transparent, var(--c));width:18%;height:100%;bottom:22%;left:41%}@keyframes trail{0%{opacity:.75}to{opacity:0}}.tile.ping:after,.tile.exit.ping .portal{animation:.5s ease-out ping}.tile.switch.ping .plate{animation:.45s ease-out plateping}@keyframes plateping{0%{box-shadow:0 0 0 0 var(--who-glow)}to{box-shadow:0 0 0 calc(var(--cell) * .3) transparent}}@keyframes ping{0%{filter:brightness(2)}to{filter:brightness()}}.burst{border:2px solid var(--cyan);opacity:0;border-radius:30%;animation:.9s ease-out forwards burst}@keyframes burst{0%{opacity:.9;scale:.6}to{opacity:0;scale:3.2}}.board.won .player .core{animation:1s ease-in-out infinite alternate wonglow}@keyframes wonglow{to{box-shadow:0 0 calc(var(--cell) * .9) var(--cyan-glow), 0 0 calc(var(--cell) * .2) #fff}}.board.restart-flash{animation:.35s ease-out rflash}@keyframes rflash{0%{filter:brightness(1.6)saturate(.6)}}.overlay{z-index:20;-webkit-backdrop-filter:blur(5px);opacity:0;background:#0407128c;place-items:center;padding:20px;transition:opacity .25s;display:grid;position:absolute;top:0;bottom:0;left:0;right:0}.overlay[hidden]{display:none}.overlay.show{opacity:1}.card{text-align:center;width:min(320px,100%);transition:transform .3s var(--ease-out);background:linear-gradient(#162148f5,#0c122cf5);border:1px solid #82a0ff29;border-radius:22px;padding:26px 24px 22px;transform:translateY(10px)scale(.98);box-shadow:0 30px 80px #0000008c,0 0 0 1px #3ef0ff0d}.overlay.show .card{transform:none}.card.wide{width:min(460px,100%)}.card h2{letter-spacing:.22em;text-transform:uppercase;margin:4px 0 6px;font-size:15px;font-weight:800}.eyebrow{letter-spacing:.24em;text-transform:uppercase;color:var(--muted);margin:0;font-size:10px;font-weight:700}.big{color:var(--cyan);text-shadow:0 0 24px var(--cyan-glow);font-variant-numeric:tabular-nums;margin:2px 0 0;font-size:56px;font-weight:800;line-height:1}.win.perfect .big{color:#fff}.meta{letter-spacing:.08em;min-height:1.2em;color:var(--muted);margin:0 0 18px;font-size:12px}.win.perfect .meta{color:var(--amber)}.actions{justify-content:center;gap:10px;display:flex}.btn{letter-spacing:.16em;text-transform:uppercase;cursor:pointer;border:1px solid #0000;border-radius:14px;flex:1;height:46px;font-size:13px;font-weight:800;transition:transform .1s,filter .15s,background .15s}.btn:active{transform:scale(.97)}.btn.primary{background:linear-gradient(180deg, #6ff5ff, var(--cyan));color:#032433;box-shadow:0 0 22px #3ef0ff59}.btn.primary:hover{filter:brightness(1.08)}.btn.ghost{color:#c4ceef;background:#82a0ff14;border-color:#82a0ff2e}.btn.ghost:hover{background:#82a0ff24}.card-head{text-align:left;grid-template-columns:1fr auto;align-items:center;row-gap:4px;margin-bottom:14px;display:grid}.card-head .brand{grid-area:1/1}.card-head h2{grid-area:2/1}.card-head .icon-btn{grid-area:1/2/span 2}.card-head h2{margin:0}.level-grid{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.lvl{aspect-ratio:1/.9;text-align:left;cursor:pointer;background:#141e4299;border:1px solid #82a0ff24;border-radius:14px;flex-direction:column;justify-content:space-between;align-items:flex-start;gap:4px;padding:9px 9px 8px;transition:background .15s,border-color .15s;display:flex;position:relative}.lvl b{font-variant-numeric:tabular-nums;font-size:17px;font-weight:800}.lvl small{letter-spacing:.04em;color:var(--muted);font-size:9.5px;line-height:1.2}.lvl em{color:var(--cyan);font-size:10px;font-style:normal;font-weight:700;position:absolute;top:9px;right:9px}.lvl:hover:not(:disabled){background:#233264cc}.lvl.done{border-color:#3ef0ff4d}.lvl.current{border-color:var(--cyan);box-shadow:0 0 14px #3ef0ff40}.lvl:disabled{opacity:.35;cursor:default}.credit{letter-spacing:.24em;text-transform:uppercase;color:var(--faint);margin:14px 0 0;font-size:10px}@media (prefers-reduced-motion:reduce){:root{--move-ms:60ms}.trail,.burst,.tile.exit.open .portal:before,.echo.dormant .core{animation:none!important}}.stars{align-items:center;gap:4px;display:inline-flex}.star{fill:#82a0ff14;stroke:#a0b2e673;stroke-width:1.6px;stroke-linejoin:round;width:14px;height:14px}.star.earned{fill:#ffc65c;stroke:#ffe1a3;filter:drop-shadow(0 0 4px #ffb3478c)}.win-stars{justify-content:center;min-height:40px;margin-bottom:10px;display:flex}.win-row{gap:8px}.win-row .star{stroke-width:1.4px;width:34px;height:34px}.win-row .star:nth-child(2){width:40px;height:40px;margin-top:-8px}.overlay.show .win-row .star.earned{animation:starpop .45s var(--ease-out) backwards}.overlay.show .win-row .star.earned:nth-child(2){animation-delay:.12s}.overlay.show .win-row .star.earned:nth-child(3){animation-delay:.24s}@keyframes starpop{0%{opacity:0;transform:scale(.3)rotate(-30deg)}70%{transform:scale(1.15)}}.lvl-row{gap:2px}.lvl-row .star{width:11px;height:11px}@media (prefers-reduced-motion:reduce){.win-row .star.earned{animation:none!important}}:root{--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--radius-sm:10px;--radius-lg:22px;--touch:48px;--text-xs:10px;--text-sm:13px;--text-md:15px;--caps:.16em}.app[hidden],.home[hidden]{display:none!important}.overlay{position:fixed}.card{border-radius:var(--radius-lg)}.btn{height:var(--touch);border-radius:var(--radius)}.lvl{border-radius:var(--radius)}.screen-in{animation:screen-in .28s var(--ease-out)}@keyframes screen-in{0%{opacity:0;transform:translateY(8px)}}.home{height:100vh;row-gap:var(--space-4);max-width:480px;height:100dvh;padding:max(var(--space-6), env(safe-area-inset-top)) max(var(--space-5), env(safe-area-inset-right)) max(var(--space-5), env(safe-area-inset-bottom)) max(var(--space-5), env(safe-area-inset-left));grid-template-rows:auto minmax(0,1fr) auto;margin:0 auto;display:grid;overflow:hidden}.home-brand{text-align:center}.studio{margin:0 0 var(--space-2);font-size:var(--text-xs);letter-spacing:.42em;color:var(--muted);font-weight:700}.logo{letter-spacing:.12em;flex-direction:column;align-items:center;margin:0;padding-left:.12em;font-size:clamp(42px,13.5vw,64px);font-weight:900;line-height:.95;display:flex}.logo-echo{isolation:isolate;color:var(--text);position:relative}.logo-echo:before{content:attr(data-echo);z-index:-1;color:#0000;-webkit-text-stroke:1.5px #ffb347cc;position:absolute;top:0;bottom:0;left:0;right:0;transform:translate(.08em,.08em)}.logo-shift{color:var(--cyan);text-shadow:0 0 22px #3ef0ff4d}.tagline{margin:var(--space-3) 0 0;font-size:var(--text-sm);color:#aeb9e3}.home-hero{justify-content:center;align-items:center;min-height:0;display:flex}.board.demo{pointer-events:none}.home-actions{gap:var(--space-3);flex-direction:column;display:flex}.home-progress{justify-content:center;align-items:center;gap:var(--space-3);display:flex}.home-progress[hidden]{display:none}.room-pips{gap:5px;display:flex}.room-pip{border:1.5px solid #3ef0ff73;border-radius:3px;width:10px;height:10px}.room-pip.done{background:var(--cyan);border-color:var(--cyan)}.room-pip.next{border-color:var(--cyan);box-shadow:0 0 6px var(--cyan-glow);animation:1.6s ease-in-out infinite pip-pulse}.room-pip.locked{border-color:var(--faint);border-style:dashed}@keyframes pip-pulse{50%{box-shadow:0 0 #0000}}.home-progress-text{font-size:var(--text-xs);letter-spacing:.1em;color:var(--muted);font-variant-numeric:tabular-nums;font-weight:700}.btn.play{border-radius:var(--radius-lg);flex-direction:column;flex:none;justify-content:center;align-items:center;gap:2px;height:64px;font-size:16px;display:flex}.btn.play small{letter-spacing:.06em;text-transform:none;opacity:.72;font-size:11px;font-weight:700}.btn.play small[hidden]{display:none}.home-row{gap:var(--space-2);display:flex}.btn.rooms{justify-content:center;align-items:center;gap:var(--space-2);flex:1;display:flex}.btn.rooms svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linejoin:round;width:18px;height:18px}.icon-btn.sq{width:var(--touch);height:var(--touch);border-radius:var(--radius);flex:none}@media (max-height:700px){.home{padding-top:max(var(--space-4), env(safe-area-inset-top));row-gap:var(--space-3)}.logo{font-size:clamp(36px,11vw,52px)}.tagline{margin-top:var(--space-2)}}@media (orientation:landscape) and (max-height:540px){.home{column-gap:var(--space-6);max-width:860px;padding-top:max(var(--space-4), env(safe-area-inset-top));grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr) minmax(260px,340px)}.home-brand{grid-area:1/2}.home-hero{grid-area:1/1/span 2}.home-actions{grid-area:2/2;justify-content:end}.logo{font-size:40px}}.howto{gap:var(--space-3);text-align:left;font-size:var(--text-sm);color:#c6cff0;flex-direction:column;margin:0;padding:0;line-height:1.4;list-style:none;display:flex}.howto li{align-items:center;gap:var(--space-3);display:flex}.howto i{border-radius:7px;flex:none;width:22px;height:22px}.howto .k-you{background:var(--cyan);box-shadow:0 0 8px var(--cyan-glow)}.howto .k-echo{border:2px solid var(--amber);background:#ffb34747}.howto .k-plate{border:2.5px solid var(--any);border-radius:50%;width:18px;height:18px;margin:2px}@media (prefers-reduced-motion:reduce){.screen-in,.room-pip.next{animation:none!important}}.overlay{padding:max(var(--space-4), env(safe-area-inset-top)) max(var(--space-4), env(safe-area-inset-right)) max(var(--space-4), env(safe-area-inset-bottom)) max(var(--space-4), env(safe-area-inset-left));grid-template-columns:minmax(0,1fr);overflow-y:auto}.card{justify-self:center;max-width:100%}.level-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.lvl small{overflow-wrap:anywhere}@media (orientation:landscape) and (max-height:540px){.card.wide{width:min(640px,100%);padding:var(--space-4) var(--space-5)}.level-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.lvl{aspect-ratio:auto;min-height:64px;padding:7px 8px}.card-head{margin-bottom:var(--space-3)}.credit{margin-top:var(--space-2)}}.diff-chip{font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--chip,var(--muted));border:1px solid color-mix(in srgb, var(--chip,var(--muted)) 55%, transparent);background:color-mix(in srgb, var(--chip,var(--muted)) 12%, transparent);border-radius:999px;flex:none;align-self:center;padding:2px 7px;font-weight:800}.diff-chip[hidden]{display:none}.diff-chip[data-band=intro]{--chip:#8fd8ff}.diff-chip[data-band=easy]{--chip:var(--cyan)}.diff-chip[data-band=medium]{--chip:#a78bfa}.diff-chip[data-band=hard]{--chip:var(--amber)}.diff-chip[data-band=expert]{--chip:#ff6b9a}.diff-chip[data-band=classic]{--chip:var(--any)}.stage.is-loading .board{visibility:hidden}.loading{justify-content:center;align-items:center;gap:var(--space-3);font-size:var(--text-sm);letter-spacing:.08em;color:var(--muted);text-align:center;padding:var(--space-4);flex-direction:column;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.loading[hidden]{display:none}.loading .btn{flex:none;width:140px}.loading.error .spinner{display:none}.spinner{width:34px;height:34px;position:relative}.spinner i{width:18px;height:18px;animation:spin-swap 1.1s var(--ease-out) infinite;border-radius:5px;position:absolute}.spinner i:first-child{background:var(--cyan);box-shadow:0 0 10px var(--cyan-glow);top:0;left:0}.spinner i:last-child{border:2px solid var(--amber);background:#ffb34740;animation-delay:.18s;bottom:0;right:0}@keyframes spin-swap{50%{transform:translate(var(--dx,8px), var(--dy,8px))}}.spinner i:last-child{--dx:-8px;--dy:-8px}.home{position:relative}.home-corner{top:max(var(--space-2), env(safe-area-inset-top));right:max(var(--space-2), env(safe-area-inset-right));gap:var(--space-1);z-index:1;display:flex;position:absolute}.home-corner .icon-btn{color:var(--muted);background:0 0;border-color:#0000}.btn.endless,.btn.rooms{flex:1 1 0;min-width:0}.btn.endless{justify-content:center;align-items:center;gap:var(--space-2);border-color:#ffb34747;display:flex}.btn.endless[hidden]{display:none}.btn.endless svg{fill:none;width:20px;height:20px;stroke:var(--amber);stroke-width:2px;stroke-linejoin:round}.btn.endless .lbl{flex-direction:column;align-items:flex-start;line-height:1.1;display:flex}.btn.endless small{letter-spacing:.06em;text-transform:none;color:var(--amber);opacity:.85;font-size:9.5px;font-weight:700}@media (prefers-reduced-motion:reduce){.spinner i{animation:none!important}}
