@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/play/grid-paint/assets/nunito-cyrillic-ext-600-normal-CWPPjBOD.woff2) format("woff2"),url(/play/grid-paint/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/grid-paint/assets/nunito-cyrillic-600-normal-DJGQ2h05.woff2) format("woff2"),url(/play/grid-paint/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/grid-paint/assets/nunito-vietnamese-600-normal-BY8O6Cug.woff2) format("woff2"),url(/play/grid-paint/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/grid-paint/assets/nunito-latin-ext-600-normal-Dd9Zuxh1.woff2) format("woff2"),url(/play/grid-paint/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/grid-paint/assets/nunito-latin-600-normal-Br8yIETf.woff2) format("woff2"),url(/play/grid-paint/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/grid-paint/assets/nunito-cyrillic-ext-800-normal-B-cvGohL.woff2) format("woff2"),url(/play/grid-paint/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/grid-paint/assets/nunito-cyrillic-800-normal-D3igD7Kl.woff2) format("woff2"),url(/play/grid-paint/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/grid-paint/assets/nunito-vietnamese-800-normal-D_CZYdm9.woff2) format("woff2"),url(/play/grid-paint/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/grid-paint/assets/nunito-latin-ext-800-normal-CtU8tJOV.woff2) format("woff2"),url(/play/grid-paint/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/grid-paint/assets/nunito-latin-800-normal-Dz8SOQK_.woff2) format("woff2"),url(/play/grid-paint/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: #f6f1e7;--card: #fffdf8;--card-radius: 16px;--card-shadow: 0 6px 24px rgb(35 33 30 / .14);--sheet-radius: 20px;--scrim: rgb(35 33 30 / .35);--line: #d9d0bf;--line-width: 1px;--line-heavy: #8f8676;--line-heavy-width: 2px;--cell-max: 56px;--scale-min: .3;--viewport-pad: 8px;--rubber-band: 48px;--ink: #23211e;--cross: #b4ab9c;--cross-locked: #c98c8c;--cross-width: 1.5px;--cross-size: .55;--highlight: rgb(245 185 66 / .18);--highlight-cell: rgb(245 185 66 / .3);--error: #d23c3c;--clue: #2b2824;--clue-done: #bdb6a9;--clue-size: .6;--clue-slot: .75;--palette-sea-1: #1d4e89;--palette-sea-2: #2e6fb5;--palette-sea-3: #5b9bd5;--palette-forest-1: #2f6b3a;--palette-forest-2: #4a9154;--palette-forest-3: #7cc47f;--palette-berry-1: #8a2a4f;--palette-berry-2: #b8406e;--palette-berry-3: #d97aa0;--palette-ember-1: #b4461c;--palette-ember-2: #e0652e;--palette-ember-3: #f29a63;--palette-plum-1: #5a3d7a;--palette-plum-2: #7e5aa6;--palette-plum-3: #a98bcd;--palette-slate-1: #3d4654;--palette-slate-2: #5b6677;--palette-slate-3: #8a94a4;--palette-ochre-1: #8c6a1f;--palette-ochre-2: #b8902e;--palette-ochre-3: #d9b85c;--palette-teal-1: #1f6f6a;--palette-teal-2: #2f9a92;--palette-teal-3: #6cc5bd;--muted: #6f685d;--accent: #f5b942;--accent-ink: #23211e;--switch-off: #ddd5c6;--hud-h: 96px;--toolbar-h: 72px;--touch-min: 48px;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:20px;animation:rise .2s ease-out}.home-gear{position:absolute;top:calc(8px + env(safe-area-inset-top));right:calc(8px + env(safe-area-inset-right))}.home-mark{width:min(120px,30vw);height:min(120px,30vw);animation:float 4s .6s ease-in-out infinite}.mark-paper{fill:var(--paper)}.mark-card{fill:var(--card)}.mark-grid{fill:none;stroke:var(--line-heavy);stroke-width:2}.mark-lines{stroke:var(--line);stroke-width:1}.mark-clue{fill:none;stroke:var(--clue);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.mark-ink{fill:var(--ink);transform-box:fill-box;transform-origin:center;animation:mark-paint .15s calc(var(--i) * 90ms) ease-out both}.mark-amber{fill:var(--accent);animation:mark-blink 4s .6s ease-in-out infinite}@keyframes mark-paint{0%{transform:scale(.4);opacity:0}}@keyframes mark-blink{0%,60%,to{opacity:1}80%{opacity:.35}}@keyframes float{50%{transform:translateY(-6px)}}.home-heading{display:flex;flex-direction:column;align-items:center;gap:6px}.home-title{margin:0;font-size:40px;font-weight:800}.home-tagline{margin:0;color:var(--muted);text-align:center;padding:0 24px}.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)}.home-actions{display:flex;flex-direction:column;gap:12px;width:min(320px,86vw);margin-top:8px}button{font:inherit;color:inherit}.button{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:var(--touch-min);padding:8px 16px;border:1px solid var(--line);border-radius:12px;background:var(--card);font-weight:800;cursor:pointer;transition:transform 80ms ease-out}.button:active:not(:disabled){transform:scale(.97)}.button:disabled{opacity:.45;cursor:default}.button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.button.ghost{border-color:transparent;background:transparent;color:var(--muted)}.button small{font-weight:600;font-size:12px;opacity:.75}.icon-button{display:grid;place-items:center;width:var(--touch-min);height:var(--touch-min);border:0;border-radius:50%;background:transparent;cursor:pointer}.icon-button:disabled{opacity:.45}.icon-button svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.icon-button.placeholder{visibility:hidden}.wobble{animation:wobble .3s ease-in-out}@keyframes wobble{20%,60%{transform:translate(-5px)}40%,80%{transform:translate(5px)}}.bottom-sheet{position:fixed;inset:auto 0 0;width:min(100%,440px);max-width:none;max-height:calc(100dvh - 24px - env(safe-area-inset-top));margin:0 auto;padding:16px calc(20px + env(safe-area-inset-right)) calc(20px + env(safe-area-inset-bottom)) calc(20px + env(safe-area-inset-left));border:1px solid var(--line);border-bottom:0;border-radius:var(--sheet-radius) var(--sheet-radius) 0 0;background:var(--card);color:var(--ink);box-shadow:var(--card-shadow);overflow-y:auto}.bottom-sheet[open]{display:flex;flex-direction:column;gap:14px;animation:sheet-in .24s ease-out both}.bottom-sheet::backdrop{background:var(--scrim)}.bottom-sheet:focus{outline:none}@keyframes sheet-in{0%{opacity:0;transform:translateY(40px)}}.sheet-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:var(--touch-min)}.sheet-heading h2{margin:0;font-size:24px;font-weight:800}.sheet-heading .icon-button{margin:-8px -8px -8px 0}.sheet-text{margin:0;color:var(--muted)}.bottom-sheet>.button{width:100%}.sheet-buttons{display:flex;gap:10px}.sheet-buttons .button{flex:1}.card{display:flex;flex-direction:column;gap:10px;padding:20px;border-radius:var(--card-radius);background:var(--card);box-shadow:var(--card-shadow);text-align:center;animation:rise .2s ease-out}.card h2{margin:0;font-size:24px;font-weight:800}.card p{margin:0;color:var(--muted)}.panel{width:min(340px,100%)}.overlay{position:absolute;inset:0;z-index:5;display:flex;align-items:center;justify-content:center;padding:16px}.overlay.bottom{align-items:flex-end;padding-bottom:8px}@keyframes rise{0%{transform:translateY(24px);opacity:0}}.badge{padding:4px 14px;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-weight:800;animation:badge-pop .32s .2s cubic-bezier(.3,1.6,.6,1) both}@keyframes badge-pop{0%{transform:scale(.4);opacity:0}}.difficulty-list{display:flex;flex-direction:column;gap:10px}.difficulty-list .difficulty{align-items:stretch;gap:2px;padding:10px 16px}.difficulty.chosen{border-color:var(--accent);box-shadow:inset 0 0 0 2px var(--accent)}.difficulty-line{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.difficulty-name{font-size:19px}.difficulty-number{font-size:15px;color:var(--muted);font-variant-numeric:tabular-nums}.difficulty-note{font-size:13px;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}.stats-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.stats{width:100%;border-collapse:collapse;border:1px solid var(--line);border-radius:12px;border-spacing:0;font-size:13px;font-variant-numeric:tabular-nums}.stats caption{padding:0 2px 4px;text-align:left;font-size:16px;font-weight:800}.stats caption span{font-size:12px;font-weight:600;color:var(--muted)}.stats th,.stats td{padding:5px 8px;border-top:1px solid var(--line)}.stats tr:first-child th,.stats tr:first-child td{border-top:0}.stats th{text-align:left;font-weight:600;color:var(--muted)}.stats td{text-align:right;font-weight:800;white-space:nowrap}.setting{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:var(--touch-min);font-size:17px}.languages-setting{flex-wrap:wrap;gap:8px 16px}.setting input[type=checkbox]{appearance:none;position:relative;width:52px;height:32px;margin:0;flex:none;border-radius:999px;background:var(--switch-off);cursor:pointer;transition:background .15s}.setting input[type=checkbox]:after{content:"";position:absolute;top:3px;left:3px;width:26px;height:26px;border-radius:50%;background:var(--card);box-shadow:0 1px 3px #23211e4d;transition:transform .15s}.setting input[type=checkbox]:checked{background:var(--accent)}.setting input[type=checkbox]:checked:after{transform:translate(20px)}.setting input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.languages{display:flex;flex-direction:column;gap:12px}.languages .language{flex-direction:row;justify-content:flex-start;gap:16px;font-size:20px}.languages .language.chosen{border-color:var(--accent);box-shadow:inset 0 0 0 2px var(--accent)}.languages .flag{width:48px;height:32px;border-radius:6px;object-fit:cover;box-shadow:0 0 0 1px var(--line)}.languages.compact{flex-direction:row;gap:8px}.languages.compact .language{gap:8px;padding:8px 12px;font-size:15px}.languages.compact .flag{width:30px;height:20px;border-radius:4px}.game{display:flex;flex-direction:column}.hud{flex:none;height:var(--hud-h);display:flex;flex-direction:column;justify-content:center;padding:0 8px}.hud-row{display:flex;align-items:center;justify-content:space-between;min-height:var(--touch-min)}.hud-title{margin:0;font-size:20px;font-weight:800}.mistakes{display:flex;align-items:center;gap:6px;padding-left:12px}.pip{width:12px;height:12px;border-radius:50%;border:2px solid var(--error);transition:background-color .2s}.pip.filled{background:var(--error)}.pip.pulse{animation:pulse .3s ease-out}@keyframes pulse{50%{transform:scale(1.4)}}.mistakes .count,.clock .time{font-weight:800;font-variant-numeric:tabular-nums}.clock{display:flex;align-items:center}.stage{position:relative;flex:1;min-height:0}.toolbar{flex:none;height:var(--toolbar-h);display:flex;align-items:center;gap:8px;padding:0 8px}.toolbar .tool{flex:1;min-width:0;gap:2px;padding:4px 6px}.tool-icon{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.tool-label{max-width:100%;overflow:hidden;font-size:13px;white-space:nowrap;text-overflow:ellipsis}.tool-glyph{position:relative;display:grid}.tool-count{position:absolute;top:-6px;right:-12px;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-size:12px;line-height:18px;font-variant-numeric:tabular-nums}.toolbar .tool.spent .tool-count{background:var(--switch-off)}.toolbar .tool.spent{color:var(--muted)}.segmented{flex:2;display:flex;min-height:var(--touch-min);padding:3px;border:1px solid var(--line);border-radius:12px;background:var(--card)}.segmented button{flex:1;min-width:0;padding:2px 4px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border:0;border-radius:9px;background:transparent;font-weight:800;cursor:pointer}.segmented button.active{background:var(--accent);color:var(--accent-ink)}.mode-icon{width:18px;height:18px}.mode-icon.paint{background:var(--ink);border-radius:2px}.mode-icon.cross{background:linear-gradient(45deg,transparent 42%,currentColor 42%,currentColor 58%,transparent 58%),linear-gradient(-45deg,transparent 42%,currentColor 42%,currentColor 58%,transparent 58%)}.viewport{position:absolute;inset:0;overflow:hidden;touch-action:none;background:var(--paper)}.viewport-content{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}.sheet{transition:opacity .15s}.viewport.hidden .sheet{opacity:0;visibility:hidden;transition:opacity .15s,visibility 0s .15s}.sheet{--cell: var(--cell-max);--slot: calc(var(--cell) * var(--clue-slot));position:relative;display:grid;grid-template-columns:calc(var(--row-slots) * var(--slot)) auto;grid-template-rows:calc(var(--col-slots) * var(--slot)) auto}.col-clues{display:flex;padding-left:var(--line-heavy-width)}.col-clue{width:var(--cell);display:flex;flex-direction:column;justify-content:flex-end;border-right:var(--line-width) solid var(--line)}.row-clues{display:flex;flex-direction:column;padding-top:var(--line-heavy-width)}.row-clue{height:var(--cell);display:flex;justify-content:flex-end;border-bottom:var(--line-width) solid var(--line)}.col-clue.heavy-r{border-right:var(--line-heavy-width) solid var(--line-heavy)}.row-clue.heavy-b{border-bottom:var(--line-heavy-width) solid var(--line-heavy)}.col-clue span,.row-clue span{display:grid;place-items:center;flex:none;font-size:calc(var(--cell) * var(--clue-size));font-weight:800;font-variant-numeric:tabular-nums;line-height:1;color:var(--clue);transition:color .2s}.col-clue span{height:var(--slot)}.row-clue span{width:var(--slot)}.col-clue.done span,.row-clue.done span{color:var(--clue-done)}.grid-frame{border-left:var(--line-heavy-width) solid var(--line-heavy);border-top:var(--line-heavy-width) solid var(--line-heavy);transition:opacity .3s,border-color .3s}.cells{display:grid;grid-template-columns:repeat(var(--cols),var(--cell));grid-auto-rows:var(--cell)}.cell{position:relative;background:var(--card);border-right:var(--line-width) solid var(--line);border-bottom:var(--line-width) solid var(--line);transition:border-color .3s calc(var(--row) * 40ms)}.cell.heavy-r{border-right:var(--line-heavy-width) solid var(--line-heavy)}.cell.heavy-b{border-bottom:var(--line-heavy-width) solid var(--line-heavy)}.cell:before{content:"";position:absolute;inset:0;background:var(--ink);opacity:0;transform:scale(.4);transition:transform 90ms ease-in,opacity 90ms ease-in,background-color .3s}.cell.painted:before{opacity:1;transform:scale(1);transition:transform .12s var(--delay, 0ms) ease-out,opacity .12s var(--delay, 0ms) ease-out,background-color .3s}.cell:after{--w: calc(var(--cross-width) / 2);content:"";position:absolute;inset:calc((1 - var(--cross-size)) * 50%);background:linear-gradient(45deg,transparent calc(50% - var(--w)),var(--x, var(--cross)) calc(50% - var(--w)),var(--x, var(--cross)) calc(50% + var(--w)),transparent calc(50% + var(--w))),linear-gradient(-45deg,transparent calc(50% - var(--w)),var(--x, var(--cross)) calc(50% - var(--w)),var(--x, var(--cross)) calc(50% + var(--w)),transparent calc(50% + var(--w)));opacity:0;clip-path:inset(0 0 0 0);transition:opacity 90ms,clip-path 0s 90ms}.cell:not(.crossed):after{clip-path:inset(0 100% 0 0)}.cell.crossed:after{opacity:1;clip-path:inset(0 0 0 0);transition:clip-path .12s var(--delay, 0ms) ease-out,opacity 0s var(--delay, 0ms)}.cell.locked{--x: var(--cross-locked)}.cell.anim-mistake{animation:mistake .3s var(--delay, 0ms) ease-out}.cell.anim-mistake.crossed:after{transition-delay:calc(var(--delay, 0ms) + .2s)}@keyframes mistake{0%{background:var(--error);transform:translate(0)}25%{transform:translate(-4px)}50%{background:var(--error);transform:translate(4px)}75%{transform:translate(-2px)}to{background:var(--card);transform:translate(0)}}.cell.anim-hint-0{animation:hint-flash-0 .45s ease-out}.cell.anim-hint-1{animation:hint-flash-1 .45s ease-out}.cell.anim-hint-0.painted:before,.cell.anim-hint-1.painted:before{transition-delay:.15s}.cell.anim-hint-0.crossed:after,.cell.anim-hint-1.crossed:after{transition-delay:.15s}@keyframes hint-flash-0{0%,30%{background:var(--accent)}to{background:var(--card)}}@keyframes hint-flash-1{0%,30%{background:var(--accent)}to{background:var(--card)}}.cell.anim-undo:before,.cell.anim-undo:after{transform:scale(1);clip-path:inset(0 0 0 0);transition:opacity .15s ease-out!important}.band{position:absolute;pointer-events:none;background:var(--highlight);transition:transform 80ms}.band-row{left:0;right:0;height:var(--cell);top:calc(var(--col-slots) * var(--slot) + var(--line-heavy-width) + var(--at) * var(--cell))}.band-col{top:0;bottom:0;width:var(--cell);left:calc(var(--row-slots) * var(--slot) + var(--line-heavy-width) + var(--at) * var(--cell))}.sheet.solved .cell{border-color:transparent}.sheet.solved .cell:before{background:var(--tone);transition:background-color .3s calc(var(--row) * 40ms)}.sheet.solved .cell:after{opacity:0;transition:opacity .3s calc(var(--row) * 40ms)}.sheet.solved .grid-frame{border-color:transparent}.sheet.solved .cell:not(.painted){background:var(--card)}.sheet.over .grid-frame{opacity:.4;transition:opacity .3s .3s}.over-card{animation:rise .24s .3s ease-out both}@media(prefers-reduced-motion:reduce){.cell:before,.cell:after,.cell,.band,.sheet.solved .cell:before,.sheet.solved .cell:after{transition:none!important}.sheet.over .grid-frame{transition-delay:0s}.cell.anim-mistake,.cell.anim-hint-0,.cell.anim-hint-1,.wobble,.pip.pulse,.card,.over-card,.badge,.home,.home-mark,.home-mark *,.bottom-sheet[open]{animation:none}}.solved-card{flex:none;gap:6px;margin:0 8px 8px;padding:14px 16px 16px}.solved-result{display:flex;align-items:center;justify-content:center;gap:12px}.solved-time{font-size:36px;font-weight:800;font-variant-numeric:tabular-nums}.solved-card .sheet-buttons{margin-top:6px}
