@font-face{font-family:Kalam;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/kalam-latin-700-normal-D2H-9ISU.woff2)format("woff2"),url(/assets/kalam-latin-700-normal-7TSuSrjP.woff)format("woff")}@font-face{font-family:Fredoka;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/fredoka-latin-wght-normal-DM6njrJ3.woff2)format("woff2")}:root,[data-theme=classic]{--bg:#fbf8f1;--surface:#fff;--ink:#2a2533;--muted:#7d7688;--line:#2a2533;--accent:#6c4fd8;--accent-ink:#fff;--danger:#d8424f;--chip:var(--chip);--chip-soft:var(--chip-soft);--chip-active:var(--chip-active);--radius:16px;--grid:#5684c424;--pattern:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);--pattern-size:24px 24px;--font-body:ui-rounded, "SF Pro Rounded", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display:"Kalam", var(--font-body);--display-weight:700;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}[data-theme=cats]{--bg:#fcefe6;--surface:#fffaf6;--ink:#3b2a35;--muted:#8b7381;--line:#3b2a35;--accent:#c2417a;--chip:#f8e5da;--chip-soft:#fcf1ea;--chip-active:#fde1ec;--pattern:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><g fill='%23c2417a' fill-opacity='0.07'><path d='M31.4 42.8A6 4.9 10.1 1 0 43.2 44.9A6 4.9 10.1 1 0 31.4 42.8M27.9 36a2.6 2.6 0 1 0 5.2 0a2.6 2.6 0 1 0 -5.2 0M33.7 31.8a2.6 2.6 0 1 0 5.2 0a2.6 2.6 0 1 0 -5.2 0M39.8 32.9a2.6 2.6 0 1 0 5.2 0a2.6 2.6 0 1 0 -5.2 0M43.8 38.9a2.6 2.6 0 1 0 5.2 0a2.6 2.6 0 1 0 -5.2 0'/><path d='M103.8 108.3A5.1 4.2 -12.6 1 0 113.7 106.1A5.1 4.2 -12.6 1 0 103.8 108.3M98.7 103.3a2.2 2.2 0 1 0 4.4 0a2.2 2.2 0 1 0 -4.4 0M101.8 98.1a2.2 2.2 0 1 0 4.4 0a2.2 2.2 0 1 0 -4.4 0M106.9 97a2.2 2.2 0 1 0 4.4 0a2.2 2.2 0 1 0 -4.4 0M112 100.4a2.2 2.2 0 1 0 4.4 0a2.2 2.2 0 1 0 -4.4 0'/></g></svg>");--pattern-size:140px 140px;--font-body:"Fredoka", ui-rounded, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display:"Fredoka", var(--font-body);--display-weight:600}:root,[data-theme]{font-family:var(--font-body);color:var(--ink)}*{box-sizing:border-box}html,body{overscroll-behavior:none;background-color:var(--bg);height:100%;margin:0}body{background-image:var(--pattern);background-size:var(--pattern-size);background-position:top}.brand,.sheet h2,.dialog h2,.technique h3,.hint-title,.mode-switch b,.dialog .xp{font-family:var(--font-display);font-weight:var(--display-weight)}body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:none}button:disabled{opacity:.35;cursor:default}.app{height:100dvh;padding:env(safe-area-inset-top) max(12px, env(safe-area-inset-right)) env(safe-area-inset-bottom) max(12px, env(safe-area-inset-left));flex-direction:column;max-width:560px;margin:0 auto;display:flex}.topbar{justify-content:space-between;align-items:center;padding:12px 4px 4px;display:flex}.brand{letter-spacing:-.3px;margin:0;font-size:30px;line-height:1}.brand-doku{color:var(--accent)}.brand-o{vertical-align:-.02em;width:.62em;height:.62em;margin:0 .03em;display:inline-block}svg.brand-o path,svg.brand-o circle{fill:#fff;stroke:currentColor;stroke-width:4.5px;stroke-linecap:round}img.brand-o{vertical-align:-.16em;filter:drop-shadow(0 1px 1.5px #00000040);width:.92em;height:.92em;margin:0 .01em}.brand-i{position:relative}.brand-dot{color:var(--accent);font-size:.42em;position:absolute;top:.2em;left:50%;transform:translate(-46%)rotate(-6deg)}.icon-btn{background:var(--surface);border-radius:50%;width:38px;height:38px;font-size:18px;font-weight:800;box-shadow:0 1px 3px #0000001f}.status-row{grid-template-columns:1fr auto 1fr;align-items:center;padding:10px 4px;font-weight:700;display:grid}.lives{gap:4px;font-size:22px;display:flex}.heart{color:var(--danger);transition:transform .3s,color .3s}.heart.lost{color:#d6d0c8;transform:scale(.85)}.region-tracker{flex-wrap:wrap;justify-content:center;gap:6px;padding:0 4px 8px;display:flex}.region-dot{border:2px solid var(--line);border-radius:50%;width:18px;height:18px;transition:opacity .3s,transform .3s;position:relative}.region-dot.found{opacity:.35;transform:scale(.85)}.region-dot.found.piece{opacity:1;background-size:cover;border-color:#fff;animation:.35s cubic-bezier(.3,1.6,.5,1) pop;transform:scale(1.3);box-shadow:0 1px 3px #0000004d}.region-dot.found:not(.piece):after{content:"";background:var(--line);width:2px;position:absolute;top:-3px;bottom:-3px;left:50%;transform:translate(-50%)rotate(45deg)}.level-info{color:var(--muted);font-size:15px}.timer{font-variant-numeric:tabular-nums;justify-self:end;font-size:18px}.board-area{flex:1;justify-content:center;align-items:center;min-height:0;display:flex;container-type:size}.hint{text-align:center;color:var(--muted);margin:6px 0 10px;font-size:13px}.toolbar{grid-template-columns:1fr 1fr 1.25fr 1fr;gap:8px;padding-bottom:14px;display:grid}.toolbar button{border-radius:var(--radius);background:var(--surface);flex-direction:column;align-items:center;gap:2px;padding:10px 6px;font-size:13px;font-weight:700;display:flex;box-shadow:0 1px 3px #0000001a}.toolbar .tb-icon{font-size:20px;line-height:1}.toolbar button.active{box-shadow:inset 0 0 0 2px var(--accent)}.primary{background:var(--accent)!important;color:var(--accent-ink)!important}.board{aspect-ratio:1;touch-action:none;width:min(100cqw,100cqh)}.board svg{width:100%;height:100%;display:block;overflow:visible}.board>svg{filter:drop-shadow(0 10px 14px #2a253329)}.board-base{fill:var(--line)}.board.placeholder{background:var(--surface);color:var(--muted);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;font-weight:600;display:flex}.line-thin{stroke:#2a25332e;stroke-width:2px;fill:none}.line-thick{stroke:var(--line);stroke-width:5px;stroke-linecap:round;fill:none}.line-soft{stroke:#2a253317;stroke-width:18px;stroke-linecap:round;fill:none}.line-outer{stroke:var(--line);stroke-width:7px;fill:none}.mark-x{fill:none;stroke:#2a253380;stroke-width:6px;stroke-linecap:round}.draw path{stroke-dasharray:1;animation:.16s ease-out both draw}.draw path+path{animation-delay:.1s}@keyframes draw{0%{stroke-dashoffset:1px}}.mark-x.paw{fill:#2a25336b;stroke:none;animation:.3s cubic-bezier(.3,1.6,.5,1) both stamp}@keyframes stamp{0%{opacity:0;transform:scale(1.6)}}.ripple{fill:#fff;opacity:0;animation:.6s ease-out both ripple}@keyframes ripple{35%{opacity:.55}to{opacity:0}}.mark-miss path{stroke:var(--danger);stroke-width:9px;stroke-linecap:round}.miss-bg{fill:#2a253347}.mark-star{fill:#fff;stroke:var(--ink);stroke-width:10px}.marker-o{stroke-width:8px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1}.marker-o.mark-ghost{stroke-dasharray:.05 .04}image.piece{pointer-events:none}image.mark-ghost{opacity:.45;filter:grayscale(.7)}.mark-ghost{fill:none;stroke:var(--ink);stroke-width:7px;stroke-dasharray:10 8;opacity:.55}.pop{animation:.5s ease-out both squash-pop;animation-delay:0s!important}.mark-star.marker-o.pop{animation:.5s ease-out both squash-pop,.4s ease-out both draw-o}@keyframes pop{0%{opacity:0;transform:scale(.2)}}@keyframes squash-pop{0%{opacity:0;transform:scale(.2)}40%{opacity:1;transform:scale(1.2,.84)}60%{transform:scale(.9,1.12)}80%{transform:scale(1.04,.97)}to{transform:scale(1)}}@keyframes draw-o{0%{stroke-dashoffset:1px;fill-opacity:0}}.burst-ring{fill:none;stroke-width:6px;animation:.55s ease-out both burst-ring;stroke:#fff!important}@keyframes burst-ring{0%{opacity:.9;transform:scale(.5)}to{opacity:0;transform:scale(1.5)}}.burst-spark{stroke:var(--line);stroke-width:3.5px;stroke-linejoin:round;animation:.75s cubic-bezier(.2,.8,.3,1) both spark}@keyframes spark{0%{opacity:1;transform:translate(0)scale(.4)}60%{transform:translate(calc(var(--dx) * .85), calc(var(--dy) * .85)) scale(1.1) rotate(45deg);opacity:1}to{transform:translate(var(--dx), var(--dy)) scale(.6) rotate(90deg);opacity:0}}.board.won .mark-star{animation:.6s ease-in-out both bounce}[data-theme=cats] .board.won .mark-star{animation:.9s ease-in-out both wobble}@keyframes wobble{20%{transform:rotate(-14deg)scale(1.15)}45%{transform:rotate(11deg)scale(1.15)}70%{transform:rotate(-6deg)scale(1.05)}to{transform:rotate(0)scale(1)}}@keyframes bounce{40%{fill:#ffe27a;transform:scale(1.3)}to{fill:#ffe27a}}.board.shake{animation:.4s shake}@keyframes shake{20%,60%{transform:translate(-8px)}40%,80%{transform:translate(8px)}}.dim-cell{fill:#1e192873}.line-thick.over-dim{stroke:#1a1622}.bad-cell{fill:#d8424f26;stroke:var(--danger);stroke-width:6px}.coord{fill:var(--muted);text-anchor:middle;font-size:34px;font-weight:700}.coord.lit{fill:var(--accent);font-weight:800}.ring-cell{fill:none;stroke:var(--accent);stroke-width:7px;rx:10}.ghost-x{fill:none;stroke:var(--accent);stroke-width:6px;stroke-linecap:round;opacity:.75}.ghost-star{fill:#ffffff8c;stroke:var(--accent);stroke-width:8px;stroke-dasharray:12 8}.ghost-piece{opacity:.55}.ghost-ring{fill:none;stroke:var(--accent);stroke-width:6px;stroke-dasharray:12 8}.preview-x{fill:none;stroke:var(--accent);stroke-width:10px;stroke-linecap:round;animation:1s ease-in-out infinite pulse}.ghost-x.paw,.preview-x.paw{fill:var(--accent);stroke:none}.preview-star{fill:#fff;stroke:var(--accent);stroke-width:10px;animation:1s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.35;transform:scale(.85)}}.hint-panel{background:var(--surface);border-radius:var(--radius);border:2px solid var(--accent);margin:8px 0 10px;padding:10px 14px 12px;animation:.2s fade;box-shadow:0 2px 8px #0000001f}.hint-head{justify-content:space-between;align-items:center;display:flex}.hint-title{color:var(--accent);flex:1;font-weight:800}.hint-count{color:var(--muted);font-variant-numeric:tabular-nums;margin-right:10px;font-size:13px;font-weight:700}.hint-panel p{min-height:5.6em;animation:.25s fade}.hint-actions .hint-back{margin-right:auto;padding:7px 16px;font-size:22px;line-height:1}.hint-close{width:32px;height:32px;color:var(--muted);margin:-6px -8px -6px 0;font-size:16px}.hint-panel p{margin:4px 0 10px;font-size:15px;line-height:1.4}.hint-actions{justify-content:flex-end;gap:8px;display:flex}.hint-actions button{background:var(--chip);border-radius:10px;padding:9px 16px;font-weight:700}.technique{border-top:1px solid #eee7dd;padding:14px 0 6px}.technique-head{justify-content:space-between;align-items:center;display:flex}.technique h3{margin:0 0 10px;font-size:18px}.technique p{margin:10px 0;line-height:1.45}.level-tag{background:#ece6dc;border-radius:99px;margin-bottom:10px;padding:3px 9px;font-size:12px;font-weight:800}.level-easy{background:#d9f0d2}.level-medium{background:#fbeab8}.level-hard{background:#fad2c3}.level-expert{background:#e3d6f7}.mini-board{width:min(100%,260px);margin:0 auto}.mini-board svg{width:100%;height:100%;display:block}button.secondary{background:var(--chip);margin-bottom:10px}.spinner{border:4px solid #e6e0d6;border-top-color:var(--accent);border-radius:50%;width:36px;height:36px;margin-bottom:12px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.backdrop{z-index:10;background:#14101c73;justify-content:center;align-items:flex-end;animation:.2s fade;display:flex;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.sheet{background:var(--surface);width:100%;max-width:560px;padding:10px 20px calc(20px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0;max-height:90dvh;animation:.25s cubic-bezier(.2,.9,.3,1) slide-up;overflow-y:auto}@keyframes slide-up{0%{transform:translateY(100%)}}.sheet-handle{background:#ddd6cc;border-radius:3px;width:40px;height:5px;margin:0 auto 8px}.sheet h2,.dialog h2{margin:6px 0 12px;font-size:22px}.rules p,.rules li{line-height:1.45}.rules ul{padding-left:20px}.field-label{color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin:14px 0 8px;font-size:13px;font-weight:700;display:block}.segmented{background:var(--chip);border-radius:12px;gap:6px;padding:4px;display:flex}.segmented button{border-radius:9px;flex:1;padding:10px 0;font-size:15px;font-weight:700}.segmented button.active{background:var(--surface);color:var(--accent);box-shadow:0 1px 3px #00000026}.blurb{color:var(--muted);min-height:2.6em;margin:8px 2px;font-size:14px}.toggle{align-items:center;gap:10px;margin:8px 0 18px;font-weight:600;display:flex}.toggle input{width:22px;height:22px;accent-color:var(--accent)}button.big{border-radius:14px;width:100%;padding:15px;font-size:17px;font-weight:800}.backdrop:has(.dialog){align-items:center}.dialog{background:var(--surface);text-align:center;border-radius:24px;width:calc(100% - 40px);max-width:380px;padding:24px 20px 20px;animation:.3s cubic-bezier(.3,1.4,.5,1) pop}.dialog-emoji{font-size:44px}.dialog p{color:var(--muted);line-height:1.5}.dialog-actions{flex-direction:column;gap:8px;margin-top:16px;display:flex}.dialog-actions button{background:var(--chip);border-radius:12px;padding:13px;font-weight:700}.topbar-actions{gap:8px;display:flex}.climb-board{white-space:nowrap;font-size:16px}.mode-switch{grid-template-columns:repeat(3,1fr);gap:10px;margin:4px 0 6px;display:grid}.mode-switch button{background:var(--chip);border-radius:14px;flex-direction:column;align-items:center;gap:2px;padding:12px 8px;transition:background .15s,box-shadow .15s;display:flex;box-shadow:inset 0 0 0 2px #0000}.mode-switch button.active{background:var(--chip-active);box-shadow:inset 0 0 0 2px var(--accent)}.mode-switch .mode-icon{font-size:26px;line-height:1.2}.mode-switch b{font-size:16px}.mode-switch button.active b{color:var(--accent)}.mode-switch small{color:var(--muted);font-size:12px}.segmented.difficulty button{font-size:14px}.dialog .xp{color:var(--accent);margin:4px 0;font-size:22px;font-weight:800}.dialog .streak{color:var(--ink);margin:4px 0;font-weight:700}button.link{color:var(--accent);text-underline-offset:3px;background:0 0;padding:6px 0;font-weight:700;text-decoration:underline}.board-list{margin:14px 0;padding:0;list-style:none}.board-list li{border-radius:10px;grid-template-columns:2.2em 1fr auto;align-items:center;gap:8px;padding:9px 10px;font-weight:600;display:grid}.board-list li:nth-child(odd){background:var(--chip-soft)}.board-list li.me{background:var(--chip-active);box-shadow:inset 0 0 0 2px var(--accent)}.board-list .board-empty{text-align:center;color:var(--muted);background:0 0;display:block}.board-rank{color:var(--muted);font-variant-numeric:tabular-nums}.board-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.board-name small,.account small{color:var(--muted);margin-left:2px;font-weight:500}.board-value{font-variant-numeric:tabular-nums;font-weight:800}.join{flex-direction:column;gap:10px;display:flex}.join .field-label{margin-bottom:0}.join input{font:inherit;background:var(--surface);color:var(--ink);border:2px solid #e4ddd2;border-radius:12px;padding:12px 14px;font-size:17px}.join input:focus{border-color:var(--accent);outline:none}.join-error{color:var(--danger);margin:0;font-size:14px}.account p{margin:6px 0}.account .code code{word-break:break-all;background:var(--chip);-webkit-user-select:all;user-select:all;border-radius:10px;padding:10px;font-size:13px;display:block}.account .code p{color:var(--muted);font-size:14px}.timer .penalty{color:var(--danger);margin-right:6px;font-size:13px}.daily-nav{text-align:center;grid-template-columns:44px 1fr 44px;align-items:center;margin:6px 0 8px;font-size:17px;display:grid}.daily-nav button{background:var(--chip);border-radius:12px;height:40px;font-size:22px;font-weight:800;line-height:1}.daily-nav button:disabled{opacity:.35}.daily-tracks button{flex-direction:column;align-items:center;padding:7px 0;font-size:14px;display:flex}.daily-tracks small{color:var(--muted);min-height:1.2em;font-size:11px;font-weight:700}.segmented+.segmented{margin-top:6px}.daily-streak{margin:4px 2px 0;font-weight:700}.daily-list{flex-direction:column;gap:6px;margin:10px 0;padding:0;list-style:none;display:flex}.daily-list button{background:var(--chip);text-align:left;border-radius:12px;grid-template-columns:1fr auto;align-items:center;gap:8px;width:100%;padding:12px 14px;display:grid}.daily-list .daily-name{font-weight:700}.daily-list .daily-status{color:var(--accent);font-variant-numeric:tabular-nums;font-weight:700}.daily-list button.done{background:var(--chip-soft)}.daily-list button.done .daily-status{color:var(--ink)}.board-tabs{grid-template-columns:1fr 1fr;gap:8px;margin:4px 0 6px;display:grid}.board-tabs button{background:var(--chip);border-radius:12px;padding:10px;font-size:17px;font-weight:800}.board-tabs button.active{background:var(--chip-active);color:var(--accent);box-shadow:inset 0 0 0 2px var(--accent)}.dialog p.muted{margin:4px 0;font-size:14px}.toast{left:50%;bottom:calc(90px + env(safe-area-inset-bottom));background:var(--ink);max-width:calc(100% - 32px);color:var(--surface);z-index:50;border-radius:12px;padding:10px 16px;font-weight:700;animation:.2s fade;position:fixed;transform:translate(-50%)}.theme-list{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin-bottom:16px;display:grid}.theme-card{background:var(--chip);text-align:center;border-radius:16px;flex-direction:column;align-items:center;gap:4px;padding:12px 10px 14px;transition:background .15s,box-shadow .15s;display:flex;box-shadow:inset 0 0 0 2px #0000}.theme-card.active{background:var(--chip-active);box-shadow:inset 0 0 0 2px var(--accent)}.theme-card.active b{color:var(--accent)}.theme-preview{width:100%;max-width:150px;margin-bottom:6px}.theme-preview svg{width:100%;display:block}.theme-card small{color:var(--muted);font-size:12px;line-height:1.3}.confetti{pointer-events:none;z-index:40;position:fixed;inset:0;overflow:hidden}.confetti span{border-radius:2px;animation:linear both confetti-fall;position:absolute;top:-24px}.confetti span.round{border-radius:50%}@keyframes confetti-fall{to{transform:translate(var(--drift), calc(100dvh + 48px)) rotate(var(--spin))}}
