@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(./space-grotesk-vietnamese-wght-normal-D0rl6rjA.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(./space-grotesk-latin-ext-wght-normal-D9tNdqV9.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(./space-grotesk-latin-wght-normal-BhU9QXUp.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2) format("woff2"),url(./ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2) format("woff2"),url(./ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2) format("woff2"),url(./ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2) format("woff2"),url(./ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(./ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2) format("woff2"),url(./ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2) format("woff2"),url(./ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2) format("woff2"),url(./ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2) format("woff2"),url(./ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(./ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--cave: #071114;--raised: #0e1d22;--basalt: #173038;--edge: #2a4850;--text: #eaf7f3;--muted: #93aaa8;--beam: #9afde0;--beam-core: #f2fff9;--lens: #82c9ff;--completion: #e7c983;--font-sans: "Space Grotesk Variable", "Space Grotesk", system-ui, -apple-system, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--radius-scene: 20px;--radius-panel: 14px;--radius-control: 10px;color-scheme:dark;font-synthesis:none}*,*:before,*:after{box-sizing:border-box}html{min-height:100%;background:var(--cave)}body{margin:0;min-height:100dvh;font-family:var(--font-sans);color:var(--text);background:radial-gradient(1000px 680px at 16% -12%,rgba(42,72,80,.4),transparent 62%),radial-gradient(900px 620px at 92% 108%,rgba(130,201,255,.08),transparent 64%),var(--cave);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}#root{min-height:100dvh}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit}a{color:var(--beam)}::selection{background:#9afde047;color:var(--text)}h1,h2,h3,p{margin:0}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:focus-visible{outline:2px solid var(--beam);outline-offset:3px}.skip-link{position:fixed;top:-80px;left:16px;z-index:120;display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border:1px solid var(--beam);border-radius:var(--radius-control);background:var(--raised);color:var(--text);font-size:13px;text-decoration:none;transition:top .12s ease}.skip-link:focus{top:12px}.app{min-height:100dvh;animation:app-in .48s ease-out both}.site-header{height:64px;border-bottom:1px solid rgba(42,72,80,.5);background:linear-gradient(180deg,#0e1d22b8,#07111447)}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:24px;width:100%;max-width:1500px;height:100%;margin:0 auto;padding:0 24px}.brand-block{display:flex;align-items:center;gap:12px;min-width:0}.brand-mark{flex:0 0 auto}.brand-copy{display:flex;flex-direction:column;min-width:0}.brand-name{font-size:18px;font-weight:600;line-height:1.05;letter-spacing:-.01em}.brand-tagline{margin-top:3px;color:var(--muted);font-size:11.5px;line-height:1.2;letter-spacing:.01em;white-space:nowrap}.header-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}.shell{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px;align-items:stretch;width:100%;max-width:1500px;height:calc(100dvh - 88px);margin:24px auto 0;padding:0 24px 24px;min-height:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:0;min-height:44px;padding:0 14px;border:1px solid var(--edge);border-radius:var(--radius-control);background:transparent;color:var(--text);font-family:var(--font-sans);font-size:13px;font-weight:500;letter-spacing:.005em;white-space:nowrap;cursor:pointer;touch-action:manipulation;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease,transform .16s ease}.btn svg{flex:0 0 auto}.btn:hover:not(:disabled){background:#1730388c;border-color:#3b6a73}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.38;cursor:not-allowed}.btn-secondary{background:#0711144d}.btn-ghost{padding:0 12px;border-color:transparent;background:transparent;color:var(--muted)}.btn-ghost:hover:not(:disabled){background:#17303873;border-color:var(--edge);color:var(--text)}.btn-primary{color:var(--beam);background:#9afde01a;border-color:#9afde099;box-shadow:0 0 26px #9afde02e}.btn-primary:hover:not(:disabled){background:#9afde029;border-color:var(--beam)}.header-actions .btn{min-width:44px}.board-card{position:relative;min-width:0;min-height:0;height:100%;overflow:hidden;border:1px solid var(--edge);border-radius:var(--radius-scene);background:var(--raised);isolation:isolate}.board-stage{position:absolute;top:0;right:0;bottom:0;left:0}.board-canvas{display:block;width:100%;height:100%;outline:none;touch-action:manipulation}.board-canvas.is-hidden{display:none}.board-canvas:focus-visible{outline:2px solid var(--beam);outline-offset:-7px;border-radius:var(--radius-scene)}.board-card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none;background:radial-gradient(120% 95% at 50% 46%,transparent 48%,rgba(4,10,12,.52) 100%)}.scene-chamber,.scene-hint{position:absolute;z-index:2;max-width:calc(100% - 32px);padding:7px 10px;border:1px solid rgba(42,72,80,.85);border-radius:var(--radius-control);background:#0711149e;color:var(--muted);line-height:1.4;pointer-events:none}.scene-chamber{top:16px;left:16px;font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:.16em}.scene-hint{bottom:16px;left:16px;font-size:11px}.hint-touch{display:none}.board-fallback{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;display:flex;flex-direction:column;justify-content:center;gap:10px;padding:48px;background:radial-gradient(80% 70% at 50% 40%,#173038d9,#071114f5)}.fallback-title{font-size:19px;font-weight:600;letter-spacing:-.01em}.fallback-body{max-width:46ch;color:var(--muted);font-size:13px;line-height:1.6}.rail{display:flex;min-width:0;min-height:0;height:100%}.rail-panel{display:flex;flex:1;flex-direction:column;min-width:0;min-height:0;overflow-y:auto;padding:16px;border:1px solid var(--edge);border-radius:var(--radius-panel);background:var(--raised);scrollbar-width:thin;scrollbar-color:var(--edge) transparent}.rail-panel::-webkit-scrollbar{width:8px}.rail-panel::-webkit-scrollbar-thumb{border:2px solid var(--raised);border-radius:999px;background:var(--edge)}.rail-hud{display:flex;flex-direction:column;gap:16px;animation:hud-in .16s ease-out both}.level-eyebrow{font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.16em;color:var(--muted)}.level-title{margin-top:8px;font-size:34px;font-weight:600;line-height:1.04;letter-spacing:-.025em;text-wrap:balance}.level-instruction{margin-top:10px;max-width:30ch;color:var(--muted);font-size:13.5px;line-height:1.5}.rail-support{margin-top:10px;color:var(--muted);font-size:11.5px;line-height:1.45;opacity:.72}.counters{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.counter{display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-height:48px;padding:10px 15px;border:1px solid var(--edge);border-radius:999px;background:#0711146b}.counter-label{font-family:var(--font-mono);font-size:9.5px;font-weight:500;letter-spacing:.13em;color:var(--muted)}.counter-value{font-family:var(--font-mono);font-size:17px;font-weight:500;line-height:1;color:var(--text)}.counter-fade{display:inline-block;animation:counter-in .12s ease-out}.receiver-status{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px;line-height:1.4}.status-dot{flex:0 0 auto;width:7px;height:7px;border-radius:50%;background:var(--edge)}.status-dot.is-lit{background:var(--beam);box-shadow:0 0 10px #9afde08c}.rail-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.rail-legend{min-height:0;margin-top:4px;padding-top:16px;border-top:1px solid var(--edge)}.legend-title{margin-bottom:10px;font-family:var(--font-mono);font-size:9px;font-weight:500;letter-spacing:.16em;color:var(--muted)}.legend-list{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}.legend-list li{display:flex;align-items:center;gap:9px;color:var(--muted);font-size:11.5px;line-height:1.35}.legend-list svg{flex:0 0 auto;color:var(--lens);opacity:.9}.rail-footer{display:flex;flex-direction:column;gap:6px;margin-top:auto;padding-top:24px}.progress-note{color:var(--muted);font-size:10.5px;line-height:1.4}.credit{align-self:flex-start;padding-bottom:1px;border-bottom:1px solid rgba(147,170,168,.25);color:var(--muted);font-size:10px;line-height:1.4;text-decoration:none;opacity:.75;transition:color .12s ease,border-color .12s ease}.credit:hover{color:var(--text);border-color:var(--muted)}.mobile-bar{display:none}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:24px;background:#071114c7;animation:backdrop-in .18s ease-out both}.modal{position:relative;display:flex;flex-direction:column;width:min(560px,100%);max-height:min(86dvh,780px);overflow:hidden;border:1px solid var(--edge);border-radius:var(--radius-scene);background:var(--raised);box-shadow:0 24px 80px #00000073;outline:none;animation:dialog-in .18s cubic-bezier(.2,.8,.2,1) both}.modal-scroll{overflow-y:auto;padding:24px;scrollbar-width:thin;scrollbar-color:var(--edge) transparent}.modal-close{position:absolute;top:12px;right:12px;z-index:3;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid transparent;border-radius:var(--radius-control);background:transparent;color:var(--muted);cursor:pointer;touch-action:manipulation;transition:color .12s ease,border-color .12s ease,background-color .12s ease}.modal-close:hover{border-color:var(--edge);background:#1730388c;color:var(--text)}.dialog-eyebrow{font-family:var(--font-mono);font-size:9.5px;font-weight:500;letter-spacing:.17em;text-transform:uppercase;color:var(--muted)}.dialog-title{margin-top:8px;padding-right:38px;font-size:26px;font-weight:600;line-height:1.14;letter-spacing:-.02em;text-wrap:balance}.dialog-lede{margin-top:10px;max-width:46ch;color:var(--muted);font-size:13.5px;line-height:1.55}.dialog-subtitle{margin-bottom:6px;font-family:var(--font-mono);font-size:9.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.level-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:20px}.level-cell{display:flex;flex-direction:column;justify-content:space-between;gap:8px;min-height:72px;padding:10px 12px;border:1px solid var(--edge);border-radius:var(--radius-control);background:#07111459;color:var(--text);text-align:left;cursor:pointer;touch-action:manipulation;transition:background-color .12s ease,border-color .12s ease,transform .16s ease}.level-cell:hover{border-color:#3b6a73;background:#17303885}.level-cell:active{transform:scale(.98)}.level-cell.is-current{border-color:#82c9ffad;box-shadow:inset 0 0 0 1px #82c9ff33}.level-cell-head{display:flex;align-items:center;justify-content:space-between;gap:6px}.level-number{font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:.08em;color:var(--muted)}.level-solved{display:inline-flex;align-items:center;gap:4px;color:var(--completion)}.level-best{font-family:var(--font-mono);font-size:9px;white-space:nowrap}.level-cell-name{font-size:13px;font-weight:500;line-height:1.2}.help-steps{display:flex;flex-direction:column;gap:12px;margin:20px 0 0;padding:0;list-style:none}.help-steps li{display:flex;align-items:flex-start;gap:12px;color:var(--text);font-size:13.5px;line-height:1.5}.help-step-number{display:grid;flex:0 0 auto;place-items:center;width:24px;height:24px;border:1px solid var(--edge);border-radius:50%;color:var(--lens);font-family:var(--font-mono);font-size:11px;font-weight:500}.help-block{margin-top:20px;padding-top:16px;border-top:1px solid var(--edge)}.help-keyboard{color:var(--text);font-size:12.5px;line-height:1.6}.help-sound{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:20px;padding-top:16px;border-top:1px solid var(--edge)}.help-sound-body{max-width:34ch;color:var(--muted);font-size:11.5px;line-height:1.45}.help-sound .btn{flex:0 0 auto}.modal-completion{width:min(460px,100%)}.modal-completion .modal-scroll{padding:32px 24px 24px;text-align:center}.completion-mark{display:grid;place-items:center;width:44px;height:44px;margin:0 auto 14px;border:1px solid rgba(231,201,131,.45);border-radius:50%;background:#e7c9830f;color:var(--completion)}.completion-eyebrow{font-family:var(--font-mono);font-size:9.5px;font-weight:500;letter-spacing:.17em;color:var(--muted)}.completion-title{padding-right:0;font-size:28px;text-align:center}.completion-level{margin-top:6px;font-size:14px;font-weight:500;color:var(--text)}.completion-solved{margin-top:10px;color:var(--muted);font-family:var(--font-mono);font-size:11px;line-height:1.5}.completion-tagline{margin-top:18px;color:var(--muted);font-size:12px;line-height:1.5;letter-spacing:.01em}.completion-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;margin-top:24px}@keyframes app-in{0%{opacity:0}to{opacity:1}}@keyframes hud-in{0%{opacity:.35}to{opacity:1}}@keyframes counter-in{0%{opacity:0}to{opacity:1}}@keyframes backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes dialog-in{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}@media (max-width: 760px){body{overflow-x:hidden;overflow-y:auto}.site-header{height:56px}.header-inner{gap:12px;padding:0 12px}.brand-block{gap:8px}.brand-mark{width:26px;height:26px}.brand-name{font-size:17px}.brand-tagline{display:none}.header-actions{gap:4px}.header-actions .btn{padding:0 10px}.site-header .help-label,.site-header .sound-toggle{display:none}.shell{display:flex;flex-direction:column;gap:12px;width:100%;max-width:none;height:auto;margin:0 auto;padding:12px 12px 96px}.board-card{flex:0 0 auto;height:min(100vw,420px);min-height:0;border-radius:var(--radius-scene)}.scene-chamber{top:10px;left:10px;max-width:calc(100% - 20px);padding:6px 8px;font-size:9.5px}.scene-hint{bottom:10px;left:10px;max-width:calc(100% - 20px);padding:6px 8px;font-size:10px}.hint-desktop{display:none}.hint-touch{display:inline}.board-fallback{padding:24px}.fallback-title{font-size:17px}.fallback-body{font-size:12.5px}.rail{height:auto}.rail-panel{overflow:visible;padding:16px;border-radius:var(--radius-panel)}.rail-hud{gap:14px}.level-title{margin-top:6px;font-size:28px;line-height:1.06}.level-instruction{margin-top:8px;max-width:none;font-size:12.5px;line-height:1.5}.rail-support,.rail-legend,.rail-actions{display:none}.rail-footer{flex-direction:row;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-top:18px}.progress-note{font-size:10px}.credit{font-size:9.5px}.mobile-bar{position:fixed;right:0;bottom:0;left:0;z-index:30;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr) minmax(0,1fr);gap:8px;align-items:center;height:calc(72px + env(safe-area-inset-bottom));padding:10px 12px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--edge);background:#071114f0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.bar-btn{gap:4px;padding:0 4px;font-size:11px;background:#0e1d22e6}.bar-btn svg{width:15px;height:15px}.bar-btn-rotate{border-color:#82c9ff6b}.modal-backdrop{padding:12px}.modal{width:100%;max-height:calc(100dvh - 24px);border-radius:var(--radius-scene)}.modal-scroll,.modal-levels .modal-scroll{padding:20px}.dialog-title{padding-right:34px;font-size:23px}.dialog-lede{font-size:12.5px}.level-grid{gap:8px;margin-top:16px}.level-cell{min-height:64px;padding:8px 9px;gap:6px}.level-cell-name{font-size:11.5px}.level-number{font-size:9.5px}.level-best{font-size:8px}.help-steps li{gap:10px;font-size:12.5px}.help-sound{flex-direction:column;align-items:flex-start;gap:12px}.help-sound .btn{width:100%}.modal-completion .modal-scroll{padding:28px 20px 20px}.completion-title{font-size:25px;padding-right:0}.completion-actions{grid-template-columns:1fr}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}@media (min-width: 761px){body{height:100dvh;overflow:hidden}}
