@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-cyrillic-ext-wght-normal-D4X5GqEv.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-cyrillic-wght-normal-CY6AOgYE.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-vietnamese-wght-normal-U01xdrZh.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-latin-ext-wght-normal-CXYtwYOx.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-latin-wght-normal-BzFMHfZw.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#eef0f8;--bg-glow-1:#7d70ff33;--bg-glow-2:#ff78aa24;--surface:#ffffffb8;--surface-hover:#fff;--surface-solid:#fff;--border:#1e24461a;--border-strong:#1e244633;--text:#1b2036;--text-muted:#5c6482;--accent:#5b55e0;--accent-hover:#4a43d3;--accent-text:#fff;--accent-soft:#5b55e01f;--focus:#5b55e0;--success:#12844f;--success-soft:#12844f1c;--danger:#d1343f;--danger-soft:#d1343f1a;--danger-text:#fff;--hint:#d27c00;--hint-soft:#d27c001f;--gold:#f2b230;--gold-text:#a86b10;--board-bg:linear-gradient(180deg, #fffffff2, #f5f6fdf2);--board-border:#1e244614;--tower-hover:#5b55e00f;--tower-source:#5b55e017;--tower-valid-soft:#12844f0d;--tower-valid:#12844f1f;--tower-invalid:#d1343f1a;--peg-edge:#b2b8cf;--peg-mid:#e6e8f2;--goal-edge:#d49b34;--goal-mid:#f8dc98;--base-top:#4b5276;--base-bottom:#30365a;--base-shadow:#1e24468c;--kbd-bg:#fff;--shadow-card:0 1px 2px #1e24460f, 0 24px 48px -28px #1e244659;--shadow-pop:0 30px 80px -24px #14183280;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;font-family:Nunito Variable,ui-rounded,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.45}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0c0f1d;--bg-glow-1:#6e64ff38;--bg-glow-2:#ff5aa01a;--surface:#ffffff0d;--surface-hover:#ffffff17;--surface-solid:#171b31;--border:#ffffff17;--border-strong:#ffffff2e;--text:#eceefa;--text-muted:#9ba1bf;--accent:#8d88ff;--accent-hover:#a5a1ff;--accent-text:#11132a;--accent-soft:#8d88ff29;--focus:#a5a1ff;--success:#3dd68c;--success-soft:#3dd68c21;--danger:#ff6b73;--danger-soft:#ff6b7321;--danger-text:#2a0d10;--hint:#ffb53d;--hint-soft:#ffb53d21;--gold:#ffc94d;--gold-text:#f5c35b;--board-bg:linear-gradient(180deg, #ffffff0e, #ffffff06);--board-border:#ffffff14;--tower-hover:#ffffff0b;--tower-source:#8d88ff1a;--tower-valid-soft:#3dd68c0d;--tower-valid:#3dd68c1f;--tower-invalid:#ff6b731f;--peg-edge:#3a4066;--peg-mid:#6b7299;--goal-edge:#86601c;--goal-mid:#e2b351;--base-top:#3d4472;--base-bottom:#272c4e;--base-shadow:#000000b3;--kbd-bg:#ffffff0f;--shadow-card:inset 0 1px 0 #ffffff0a, 0 30px 60px -30px #000c;--shadow-pop:0 30px 80px -24px #000000d9}*,:before,:after{box-sizing:border-box}body{background:var(--bg);min-width:320px;min-height:100dvh;color:var(--text);margin:0}body:before{content:"";z-index:-1;background:radial-gradient(60rem 40rem at 5% -10%, var(--bg-glow-1), transparent 60%), radial-gradient(50rem 36rem at 105% 5%, var(--bg-glow-2), transparent 60%);pointer-events:none;position:fixed;inset:0}button,input{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}kbd{font-family:inherit}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.button{border:1px solid var(--border);background:var(--surface);min-height:44px;color:var(--text);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-size:15px;font-weight:750;line-height:1;transition:background-color .15s,border-color .15s,color .15s,opacity .15s,transform .12s;display:inline-flex}.button svg{flex:none;width:18px;height:18px}@media (hover:hover){.button:hover:not(:disabled){border-color:var(--border-strong);background:var(--surface-hover)}.button-primary:hover:not(:disabled){background:var(--accent-hover)}.button-danger:hover:not(:disabled){background:var(--danger);filter:brightness(1.08)}}.button:active:not(:disabled){transform:translateY(1px)scale(.98)}.button:disabled{opacity:.4;cursor:not-allowed}.button.button-primary{background:var(--accent);color:var(--accent-text);border-color:#0000}.button.button-danger{background:var(--danger);color:var(--danger-text);border-color:#0000}.button.is-active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.icon-button{border:1px solid var(--border);background:var(--surface);width:42px;height:42px;color:var(--text-muted);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;border-radius:12px;flex:none;place-items:center;padding:0;transition:background-color .15s,color .15s,transform .12s;display:inline-grid}.icon-button svg{width:20px;height:20px}.icon-button.small{border-radius:10px;width:34px;height:34px}.icon-button.small svg{width:16px;height:16px}@media (hover:hover){.icon-button:hover{background:var(--surface-hover);color:var(--text)}}.icon-button:active{transform:scale(.94)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important}}.board{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;position:absolute;inset:10px 10px 4px}.tower{touch-action:none;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:22px;outline:none;margin:0;padding:0;transition:background-color .16s,box-shadow .16s;position:absolute;top:0;bottom:0;overflow:hidden}.tower.has-disks,.tower[data-drop]{cursor:pointer}.tower[data-drop=invalid]{cursor:not-allowed}.board.is-dragging,.board.is-dragging .tower{cursor:grabbing}.board.is-locked .tower{cursor:default}@media (hover:hover){.board:not(.is-locked) .tower.has-disks:hover,.board:not(.is-locked) .tower[data-drop]:hover{background:var(--tower-hover)}}.tower:focus-visible{box-shadow:inset 0 0 0 3px var(--focus)}.tower.is-source{background:var(--tower-source)}.tower[data-drop=valid]{background:var(--tower-valid-soft)}.board .tower[data-drop=valid].is-over,.tower[data-drop=valid]:focus-visible{background:var(--tower-valid);box-shadow:inset 0 0 0 2px var(--success)}.board .tower[data-drop=invalid].is-over,.tower[data-drop=invalid]:focus-visible{background:var(--tower-invalid);box-shadow:inset 0 0 0 2px var(--danger)}.tower-flash{border-radius:inherit;background:var(--danger-soft);box-shadow:inset 0 0 0 2px var(--danger);opacity:0;pointer-events:none;animation:.65s ease-out tower-flash;position:absolute;inset:0}@keyframes tower-flash{0%,35%{opacity:1}to{opacity:0}}.board-base,.peg,.tower-label,.disk-layer,.disk-ghost,.hint-arrow{pointer-events:none;position:absolute}.board-base{background:linear-gradient(180deg, var(--base-top), var(--base-bottom));box-shadow:inset 0 1px 0 #fff3, 0 12px 22px -12px var(--base-shadow);border-radius:999px}.peg{background:linear-gradient(90deg, var(--peg-edge), var(--peg-mid) 45%, var(--peg-edge));border-radius:999px 999px 0 0}.peg.is-goal{background:linear-gradient(90deg, var(--goal-edge), var(--goal-mid) 45%, var(--goal-edge))}.tower-label{color:var(--text-muted);justify-content:center;align-items:center;gap:6px;font-size:13px;font-weight:700;display:flex}.tower-label kbd{border:1px solid var(--border);background:var(--kbd-bg);min-width:22px;height:22px;color:var(--text);font:inherit;border-bottom-width:2px;border-radius:6px;place-items:center;padding:0 6px;font-size:12px;font-weight:800;display:inline-grid}.goal-label{color:var(--gold-text);align-items:center;gap:3px;display:inline-flex}.disk-layer{inset:0}.disk{will-change:transform;position:absolute;top:0;left:0}.disk-body{--disk-shadow:inset 0 1px 0 oklch(.96 .04 var(--hue) / .85), inset 0 -2px 0 oklch(.42 .12 var(--hue) / .45);border-radius:calc(var(--disk-h) * .4);background:linear-gradient(180deg, oklch(var(--l-top) .12 var(--hue)) 0%, oklch(var(--l-mid) .16 var(--hue)) 48%, oklch(var(--l-bottom) .16 var(--hue)) 100%);width:100%;height:100%;box-shadow:var(--disk-shadow), 0 2px 4px -1px #00000047;transform-origin:50% 100%;place-items:center;transition:box-shadow .2s,scale .2s;display:grid;position:relative}.disk-body:before{content:"";background:linear-gradient(#fff9,#fff0);border-radius:999px;height:26%;position:absolute;top:13%;left:7%;right:7%}.disk-label{color:oklch(.3 .09 var(--hue) / .78);font-size:clamp(10px, calc(var(--disk-h) * .46), 16px);font-variant-numeric:tabular-nums;font-weight:900;line-height:1;position:relative}.disk.is-lifted .disk-body{box-shadow:var(--disk-shadow), 0 16px 22px -12px #00000080;animation:1.4s ease-in-out infinite disk-bob}.disk.is-dragging .disk-body{box-shadow:var(--disk-shadow), 0 22px 28px -14px #0000008c;scale:1.06}.disk-body.is-hinted{outline:3px solid var(--hint);outline-offset:3px;animation:1.1s ease-in-out infinite hint-pulse}.disk-body.is-celebrating{animation:disk-hop .6s cubic-bezier(.3, .7, .4, 1) calc(.45s + var(--level) * 70ms) 2}.disk-ghost{border:2px dashed oklch(var(--l-mid) .16 var(--hue));border-radius:calc(var(--disk-h) * .4);background:oklch(var(--l-mid) .16 var(--hue) / .16);top:0;left:0}@supports not (color:oklch(0.5 0.1 0)){.disk-body{background:linear-gradient(180deg, hsl(var(--hue) 85% 72%), hsl(var(--hue) 70% 50%))}.disk-ghost{border-color:hsl(var(--hue) 70% 55%);background:hsl(var(--hue) 70% 55% / .16)}.disk-label{color:#0009}}@keyframes disk-bob{0%,to{translate:0}50%{translate:0 -4px}}@keyframes disk-hop{0%,to{translate:0}45%{translate:0 calc(var(--disk-h) * -.7)}}@keyframes hint-pulse{0%,to{outline-offset:3px;outline-color:var(--hint)}50%{outline-offset:6px;outline-color:#0000}}.hint-arrow{z-index:25;top:0;left:0;overflow:visible}.hint-arrow>path{fill:none;stroke:var(--hint);stroke-width:3px;stroke-linecap:round;stroke-dasharray:1 8;animation:.6s linear infinite hint-dash}.hint-arrow marker path{fill:var(--hint)}@keyframes hint-dash{to{stroke-dashoffset:-9px}}@media (prefers-reduced-motion:reduce){.disk.is-lifted .disk-body,.disk-body.is-hinted,.disk-body.is-celebrating,.hint-arrow>path{animation:none}.tower,.disk-body{transition:none}}.dialog{width:min(460px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--text);background:0 0;border:0;margin:auto;padding:0;overflow:visible}.dialog[open]{animation:.26s cubic-bezier(.2,.9,.3,1.1) dialog-in}.dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#080a1880;animation:.26s backdrop-in}.dialog-panel{border:1px solid var(--border);background:var(--surface-solid);max-height:calc(100dvh - 32px);box-shadow:var(--shadow-pop);border-radius:24px;padding:28px 26px 24px;position:relative;overflow-y:auto}.dialog h2{letter-spacing:-.01em;margin:0 0 10px;font-size:24px;font-weight:900;line-height:1.2}.dialog h3{color:var(--text-muted);letter-spacing:.09em;text-transform:uppercase;margin:22px 0 8px;font-size:12px;font-weight:800}.dialog p{margin:0 0 12px}.dialog kbd{border:1px solid var(--border);background:var(--kbd-bg);vertical-align:1px;border-bottom-width:2px;border-radius:6px;place-items:center;min-width:22px;height:22px;padding:0 6px;font-size:12px;font-weight:800;display:inline-grid}.dialog-close{background:0 0;border-color:#0000;width:36px;height:36px;position:absolute;top:14px;right:14px}.dialog-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:22px;display:flex}@keyframes dialog-in{0%{opacity:0;transform:translateY(14px)scale(.96)}}@keyframes backdrop-in{0%{opacity:0}}.win-dialog .dialog-panel{text-align:center}.win-dialog h2{margin-top:4px}.win-emblem{color:#7a4300;background:linear-gradient(145deg,#ffd66b,#f29f2c);border-radius:24px;place-items:center;width:72px;height:72px;margin:0 auto 12px;animation:.6s cubic-bezier(.2,1.4,.4,1) both emblem-in;display:grid;box-shadow:inset 0 2px #ffffff80,0 14px 30px -12px #f29f2cb3}.win-emblem svg{width:38px;height:38px}.stars{justify-content:center;gap:6px;margin-bottom:18px;display:flex}.stars svg{width:34px;height:34px;color:var(--border-strong);fill:currentColor;stroke-width:1.5px}.stars svg.is-earned{color:var(--gold);animation:.5s cubic-bezier(.2,1.5,.4,1) both star-in;animation-delay:calc(.2s + var(--star) * .14s)}.win-stats{grid-template-columns:repeat(3,1fr);gap:8px;margin:0 0 16px;display:grid}.win-stats div{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:10px 6px}.win-stats dt{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:800}.win-stats dd{font-variant-numeric:tabular-nums;margin:2px 0 0;font-size:24px;font-weight:900}.win-badges{flex-wrap:wrap;justify-content:center;gap:8px;margin:0 0 14px;padding:0;list-style:none;display:flex}.win-badges li{background:var(--accent-soft);color:var(--accent);border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:14px;font-weight:800;display:inline-flex}.win-badges svg{width:16px;height:16px}.win-note{color:var(--text-muted)}.win-dialog .dialog-actions{justify-content:center}@keyframes emblem-in{0%{opacity:0;transform:scale(.4)rotate(-12deg)}}@keyframes star-in{0%{opacity:0;transform:scale(.2)rotate(-30deg)}}.help-lead{font-size:17px}.inline-icon{width:1em;height:1em;color:var(--gold-text);vertical-align:-2px}.help-rules{counter-reset:rule;gap:6px;margin:0;padding:0;list-style:none;display:grid}.help-rules li{counter-increment:rule;align-items:center;gap:10px;font-weight:700;display:flex}.help-rules li:before{content:counter(rule);background:var(--accent-soft);width:26px;height:26px;color:var(--accent);border-radius:50%;flex:none;place-items:center;font-size:14px;font-weight:900;display:grid}.help-controls{gap:10px;margin:0;padding:0;list-style:none;display:grid}.help-controls li{align-items:flex-start;gap:10px;display:flex}.help-controls svg{width:20px;height:20px;color:var(--accent);flex:none;margin-top:1px}.help-legend{background:var(--surface);border:1px solid var(--border);color:var(--text-muted);border-radius:14px;padding:12px 14px;font-size:14px;font-style:italic}.confirm-dialog{width:min(400px,100vw - 32px)}.confirm-dialog p{color:var(--text-muted)}@media (prefers-reduced-motion:reduce){.dialog[open],.dialog::backdrop,.win-emblem,.stars svg.is-earned{animation:none}}.app{width:100%;max-width:1040px;min-height:100dvh;padding:max(14px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(14px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));flex-direction:column;gap:14px;margin:0 auto;display:flex}.app-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.brand{align-items:center;gap:10px;min-width:0;display:flex}.logo{flex:none}.brand h1{letter-spacing:-.02em;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:clamp(21px,5vw,30px);font-weight:900;line-height:1.1;overflow:hidden}.header-actions{gap:8px;display:flex}.game{flex-direction:column;flex:auto;gap:12px;min-height:0;display:flex}.stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.stat{border:1px solid var(--border);background:var(--surface);border-radius:16px;flex-direction:column;gap:1px;min-width:0;padding:10px 16px;display:flex}.stat-label{color:var(--text-muted);letter-spacing:.09em;text-transform:uppercase;font-size:11px;font-weight:800}.stat-value{font-variant-numeric:tabular-nums;font-size:clamp(21px,5vw,28px);font-weight:900;line-height:1.15}.stat-note{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;overflow:hidden}.status{height:48px;color:var(--text-muted);border:1px solid #0000;border-radius:14px;align-items:center;gap:12px;padding:0 6px 0 14px;transition:background-color .2s,color .2s;display:flex}.status-text{flex:1;align-items:center;gap:8px;min-width:0;margin:0;font-size:15px;font-weight:700;line-height:1.25;display:flex}.status-text>span{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.status-icon{flex:none;width:18px;height:18px}.status-error{border-color:var(--danger-soft);background:var(--danger-soft);color:var(--danger)}.status-success{border-color:var(--success-soft);background:var(--success-soft);color:var(--success)}.status-hint{border-color:var(--hint-soft);background:var(--hint-soft);color:var(--hint)}.status-actions{flex:none;align-items:center;gap:8px;display:flex}.speed{color:var(--text-muted);align-items:center;gap:6px;display:flex}.speed svg{width:18px;height:18px}.speed input{width:clamp(70px,18vw,120px);accent-color:var(--accent);cursor:pointer}.speed output{min-width:34px;color:var(--text);font-variant-numeric:tabular-nums;font-size:14px;font-weight:800}.board-card{border:1px solid var(--board-border);background:var(--board-bg);min-height:300px;box-shadow:var(--shadow-card);border-radius:28px;flex:auto;position:relative}.controls{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px 18px;display:flex}.control-group{gap:8px;display:flex}.stepper{border:1px solid var(--border);background:var(--surface);border-radius:14px;align-items:center;gap:2px;padding:3px;display:flex}.button.stepper-button{background:0 0;border:0;border-radius:10px;width:38px;min-height:38px;padding:0}.stepper-value{min-width:76px;color:var(--text-muted);text-align:center;font-size:14px;font-weight:700}.stepper-value strong{color:var(--text);font-variant-numeric:tabular-nums;font-size:18px;font-weight:900}.app-footer{color:var(--text-muted);text-align:center;font-size:13px}.app-footer p{margin:0}.app-footer kbd{border:1px solid var(--border);background:var(--kbd-bg);min-width:20px;height:20px;color:var(--text);border-bottom-width:2px;border-radius:5px;place-items:center;padding:0 5px;font-size:11px;font-weight:800;display:inline-grid}@media (hover:none),(width<=640px){.app-footer{display:none}}.confetti{z-index:50;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}@media (width<=560px){.app,.game{gap:10px}.stats{gap:8px}.stat{border-radius:14px;padding:8px 12px}.status{padding-left:12px}.status-text{font-size:14px}.board-card{border-radius:22px}.controls{gap:10px}.control-group .button{padding:0 13px}.button-label.collapsible{display:none}}@media (height<=520px) and (orientation:landscape){.app,.game{gap:8px}.stat{flex-direction:row;align-items:baseline;gap:8px;padding:6px 12px}.stat-value{font-size:20px}.stat-note{display:none}.status{height:40px}.board-card{min-height:240px}}
