@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/play/nine-grid/assets/nunito-cyrillic-ext-600-normal-CWPPjBOD.woff2) format("woff2"),url(/play/nine-grid/assets/nunito-cyrillic-ext-600-normal-vnfu4DTE.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:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/play/nine-grid/assets/nunito-cyrillic-600-normal-DJGQ2h05.woff2) format("woff2"),url(/play/nine-grid/assets/nunito-cyrillic-600-normal-BUjmtIuu.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/play/nine-grid/assets/nunito-vietnamese-600-normal-BY8O6Cug.woff2) format("woff2"),url(/play/nine-grid/assets/nunito-vietnamese-600-normal-DO1RqFw5.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:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/play/nine-grid/assets/nunito-latin-ext-600-normal-Dd9Zuxh1.woff2) format("woff2"),url(/play/nine-grid/assets/nunito-latin-ext-600-normal-BKUpuB78.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:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/play/nine-grid/assets/nunito-latin-600-normal-Br8yIETf.woff2) format("woff2"),url(/play/nine-grid/assets/nunito-latin-600-normal-Cd0eNu1l.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:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/play/nine-grid/assets/nunito-cyrillic-ext-800-normal-B-cvGohL.woff2) format("woff2"),url(/play/nine-grid/assets/nunito-cyrillic-ext-800-normal-pjRatrRO.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:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/play/nine-grid/assets/nunito-cyrillic-800-normal-D3igD7Kl.woff2) format("woff2"),url(/play/nine-grid/assets/nunito-cyrillic-800-normal-DymMgApb.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/play/nine-grid/assets/nunito-vietnamese-800-normal-D_CZYdm9.woff2) format("woff2"),url(/play/nine-grid/assets/nunito-vietnamese-800-normal-Dz0hZPb5.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:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/play/nine-grid/assets/nunito-latin-ext-800-normal-CtU8tJOV.woff2) format("woff2"),url(/play/nine-grid/assets/nunito-latin-ext-800-normal-CDcxIxx8.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:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/play/nine-grid/assets/nunito-latin-800-normal-Dz8SOQK_.woff2) format("woff2"),url(/play/nine-grid/assets/nunito-latin-800-normal-D-J0wlBY.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{--paper: #f4eee2;--card: #fffdf8;--card-radius: 16px;--card-shadow: 0 6px 24px rgb(43 40 36 / .14);--grid-surface: #fffdf8;--grid-radius: 8px;--grid-margin: 16px;--grid-size: 328px;--line: #d8cfbd;--line-thin: 1px;--line-thick: 2px;--ink: #2b2824;--cell-plain: #fffdf8;--cell-peer: #efe8da;--cell-same: #d6e2fb;--cell-selected: #ffd98a;--cell-conflict: #f8d3d0;--cell-hint: #d9efe2;--pen: #2457c5;--error: #d23c3c;--hint: #1f8a5b;--note: #8a8378;--digit-size: 22px;--note-size: 9px;--given-weight: 800;--entry-weight: 600;--accent: #f5b942;--accent-ink: #2b2824;--muted: #6f685d;--button: #fffdf8;--button-line: #d8cfbd;--key-done-opacity: .35;--key-count-size: 11px;--hud-h: 88px;--toolbar-h: 64px;--pad-h: 56px;--pad-key-inset: 2px;--touch-min: 48px;--ease-out: cubic-bezier(.2, .8, .2, 1);--select-fade: .12s;--pop: .16s;--pop-from: .6;--pop-ease: cubic-bezier(.3, 1.6, .6, 1);--erase: .12s;--note-fade: .1s;--shake: .3s;--shake-reach: 3px;--pulse: .4s;--flash: .5s;--sweep: .36s;--sweep-step: 25ms;--wave: .36s;--wave-step: 40ms;--dim: .3s;--dim-opacity: .4;--blur: 8px;--blur-time: .2s;--sheet: .24s;--sheet-rise: 32px;--screen: .2s;--screen-rise: 12px;--press: 90ms;--press-scale: .94;--wobble: .3s;--wobble-reach: 6px;--mark-draw: .7s;--mark-drift: 4s;--after-wave: calc(8 * var(--wave-step) + var(--wave));--after-shake: var(--shake);font-family:Nunito,system-ui,sans-serif;font-weight:600;color:var(--ink);color-scheme:light;-webkit-tap-highlight-color:transparent}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper);overflow:hidden;user-select:none;-webkit-user-select:none;touch-action:manipulation}.screen{height:100%;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.home{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px}.home-mark{width:96px;height:96px;border-radius:21px;box-shadow:var(--card-shadow)}.home-title{margin:0;font-size:40px;font-weight:800}.home-version{position:absolute;right:calc(16px + env(safe-area-inset-right));bottom:calc(12px + env(safe-area-inset-bottom));margin:0;font-size:12px;color:var(--muted)}button{font:inherit;color:inherit;cursor:pointer}.primary,.home-play{min-height:var(--touch-min);padding:0 24px;border:1px solid var(--button-line);border-radius:12px;background:var(--button);font-weight:800}.primary{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}.home-play{min-width:200px}.game{display:flex;flex-direction:column}.hud{flex:none;display:flex;flex-direction:column;justify-content:space-evenly;height:var(--hud-h);padding:0 calc(var(--grid-margin) - 8px)}.hud-row{display:flex;align-items:center;justify-content:space-between}.hud-title{font-size:18px;font-weight:800}.hud-stat{font-size:15px;font-weight:800;color:var(--muted);font-variant-numeric:tabular-nums}.hud-row>.hud-stat{padding-left:8px}.hud-timer{display:flex;align-items:center}.hud-button{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:0;background:none}.hud-button svg,.tool-icon{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.hud-button:disabled{opacity:var(--key-done-opacity)}.board{position:relative;flex:1 1 0;min-height:0;display:flex}.grid-area{flex:1;min-width:0;min-height:0;margin:8px var(--grid-margin);display:flex;align-items:center;justify-content:center}.grid{display:grid;grid-template-columns:repeat(9,1fr);grid-template-rows:repeat(9,1fr);width:var(--grid-size);height:var(--grid-size);border:var(--line-thick) solid var(--ink);border-radius:var(--grid-radius);overflow:hidden;background:var(--grid-surface)}.cell{position:relative;display:flex;align-items:center;justify-content:center;min-width:0;min-height:0;padding:0;border:0;background:var(--cell-plain);font-size:var(--digit-size);line-height:1;transition:background-color var(--select-fade) ease-out,color var(--select-fade) ease-out}.cell-digit{position:relative;z-index:1}.cell:disabled{cursor:default}.line-right{border-right:var(--line-thin) solid var(--line)}.line-bottom{border-bottom:var(--line-thin) solid var(--line)}.box-right{border-right:var(--line-thick) solid var(--ink)}.box-bottom{border-bottom:var(--line-thick) solid var(--ink)}.bg-peer{background:var(--cell-peer)}.bg-same{background:var(--cell-same)}.bg-selected{background:var(--cell-selected)}.bg-conflict{background:var(--cell-conflict)}.bg-hint{background:var(--cell-hint)}.ink-given{color:var(--ink);font-weight:var(--given-weight)}.ink-entry{color:var(--pen);font-weight:var(--entry-weight)}.ink-error{color:var(--error);font-weight:var(--entry-weight)}.ink-hint{color:var(--hint);font-weight:var(--entry-weight)}.cell-notes{position:absolute;inset:1px;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);align-items:center;justify-items:center;z-index:1;font-size:var(--note-size);line-height:1;color:var(--note)}.board-note{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:8px 16px;border-radius:12px;background:var(--card);color:var(--muted);font-weight:800}.toolbar{flex:none;display:flex;height:var(--toolbar-h);padding:0 calc(var(--grid-margin) / 2)}.tool{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:var(--touch-min);padding:0;border:0;background:none;color:var(--ink)}.tool-label{font-size:12px;color:var(--muted)}.tool-badge{position:absolute;top:6px;left:calc(50% + 8px);min-width:20px;padding:1px 4px;border-radius:8px;background:var(--button-line);font-size:10px;font-weight:800}.tool.on .tool-badge{background:var(--accent);color:var(--accent-ink)}.tool:disabled{opacity:var(--key-done-opacity);cursor:default}.pad{flex:none;display:flex;height:var(--pad-h);margin-bottom:8px}.pad-key{flex:1;min-width:0;padding:var(--pad-key-inset);border:0;background:none}.pad-face{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;border:1px solid var(--button-line);border-radius:8px;background:var(--button)}.pad-digit{font-size:26px;font-weight:800;line-height:1.05;color:var(--pen)}.pad-key.notes .pad-digit{color:var(--note)}.pad-count{font-size:var(--key-count-size);color:var(--muted)}.pad-key:disabled{opacity:var(--key-done-opacity);cursor:default}.game{max-width:600px;margin:auto}.home-settings{position:absolute;top:16px;right:16px}.tagline{margin:0;color:var(--muted)}.home-actions{display:grid;gap:12px;width:min(320px,calc(100% - 32px))}.button{min-height:var(--touch-min);padding:12px 16px;border:1px solid var(--button-line);border-radius:12px;background:var(--button);font-weight:800}.button.primary{background:var(--accent);border-color:var(--accent)}.button small{display:block;font-size:13px;font-weight:600;margin-top:4px}.sheet{width:min(420px,calc(100% - 24px));max-height:calc(100dvh - 32px);padding:20px;border:1px solid var(--line);border-radius:var(--card-radius);background:var(--card);color:var(--ink);box-shadow:var(--card-shadow);overflow-y:auto}.sheet::backdrop{background:#2b282459}.sheet-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}.sheet h2{font-size:24px;margin:0 0 12px}.sheet>.button{display:block;width:100%;margin-top:12px}.languages{display:flex;gap:8px}.language{flex:1;display:flex;gap:8px;align-items:center;justify-content:center}.language img{width:28px;height:20px;object-fit:cover}[aria-checked=true]{outline:2px solid var(--accent);outline-offset:-2px;background:var(--cell-peer)}.setting{display:flex;min-height:56px;justify-content:space-between;align-items:center}.setting input{width:24px;height:24px;accent-color:var(--accent)}.difficulties{display:grid;gap:10px}.difficulty{text-align:left}.new-best{color:var(--ink);background:var(--accent);padding:4px 12px;border-radius:8px}.stats-grid{display:grid;gap:20px}.stats-grid table{width:100%;border-collapse:collapse;font-size:13px}.stats-grid caption{font-size:18px;font-weight:800;text-align:left;margin-bottom:6px}.stats-grid th{text-align:left;font-weight:600}.stats-grid td{text-align:right}.stats-grid th,.stats-grid td{padding:5px 0;border-bottom:1px solid var(--line)}@media(min-width:760px){.sheet.wide{width:min(900px,calc(100% - 48px))}.stats-grid{grid-template-columns:1fr 1fr;gap:28px}}.cell-digit.pop{animation:pop var(--pop) var(--pop-ease) both}.cell-digit.shake{animation:pop var(--pop) var(--pop-ease) both,shake var(--shake) ease-in-out}.cell-digit.out{position:absolute;color:var(--pen);font-weight:var(--entry-weight);animation:shrink var(--erase) ease-in both}.note-in{animation:fade-in var(--note-fade) ease-out both}.note-out{animation:fade-out var(--note-fade) ease-in both}.cell-glow{position:absolute;inset:0;pointer-events:none;opacity:0;animation:glow var(--glow-time) ease-out both;animation-delay:calc(var(--order) * var(--glow-step))}.cell-glow.flash{--glow-time: var(--flash);--glow-step: 0ms;--glow-peak: .55;background:var(--hint)}.cell-glow.sweep{--glow-time: var(--sweep);--glow-step: var(--sweep-step);--glow-peak: 1;background:var(--cell-same)}.cell-glow.wave{--glow-time: var(--wave);--glow-step: var(--wave-step);--glow-peak: 1;background:var(--cell-selected)}.hud-stat.pulse{display:inline-block;animation:pulse var(--pulse) ease-out}.pad.wobble-0{animation:wobble-0 var(--wobble) ease-in-out}.pad.wobble-1{animation:wobble-1 var(--wobble) ease-in-out}.grid{transition:opacity var(--dim) ease-out,filter var(--blur-time) ease-out}.grid.over{opacity:var(--dim-opacity);transition-delay:var(--after-shake)}.paused .grid{filter:blur(var(--blur))}.sheet[open]{animation:sheet-in var(--sheet) var(--ease-out) both}.sheet[open]::backdrop{animation:fade-in var(--sheet) ease-out both}.sheet.after-wave,.sheet.after-wave::backdrop{animation-delay:var(--after-wave)}.sheet.after-shake,.sheet.after-shake::backdrop{animation-delay:var(--after-shake)}.new-best{display:inline-block;justify-self:center;animation:pop var(--pop) var(--pop-ease) both;animation-delay:var(--sheet)}.after-wave .new-best{animation-delay:calc(var(--after-wave) + var(--sheet))}.screen{animation:screen-in var(--screen) var(--ease-out) both}.button,.tool,.hud-button,.pad-face{transition:scale var(--press) ease-out}.button:active:not(:disabled),.tool:active:not(:disabled),.hud-button:active:not(:disabled),.pad-key:active:not(:disabled) .pad-face{scale:var(--press-scale)}.mark-line{stroke-dasharray:1 1;animation:mark-draw var(--mark-draw) var(--ease-out) both}.mark-cell{animation:mark-drift var(--mark-drift) ease-in-out var(--mark-draw) infinite}@keyframes pop{0%{scale:var(--pop-from);opacity:0}to{scale:1;opacity:1}}@keyframes shrink{to{scale:.3;opacity:0}}@keyframes fade-in{0%{opacity:0}}@keyframes fade-out{to{opacity:0}}@keyframes shake{0%{color:var(--pen)}20%,60%{translate:calc(-1 * var(--shake-reach)) 0}40%,80%{translate:var(--shake-reach) 0}}@keyframes glow{0%,to{opacity:0}35%{opacity:var(--glow-peak)}}@keyframes pulse{40%{scale:1.25;color:var(--error)}}@keyframes wobble-0{25%,75%{translate:calc(-1 * var(--wobble-reach)) 0}50%{translate:var(--wobble-reach) 0}}@keyframes wobble-1{25%,75%{translate:calc(-1 * var(--wobble-reach)) 0}50%{translate:var(--wobble-reach) 0}}@keyframes sheet-in{0%{opacity:0;translate:0 var(--sheet-rise)}}@keyframes screen-in{0%{opacity:0;translate:0 var(--screen-rise)}}@keyframes mark-draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes mark-drift{0%,35%,to{translate:0 0}50%,85%{translate:-13.4px 13.3px}}@media(prefers-reduced-motion:reduce){:root{--select-fade: 0ms;--pop: 0ms;--erase: 0ms;--note-fade: 0ms;--shake: 0ms;--pulse: 0ms;--flash: 0ms;--sweep: 0ms;--sweep-step: 0ms;--wave: 0ms;--wave-step: 0ms;--dim: 0ms;--blur-time: 0ms;--sheet: 0ms;--screen: 0ms;--wobble: 0ms;--mark-draw: 0ms}.mark-cell{animation:none}}
