:root{--paper:#f6f0d5;--ink:#231f20;--ink-soft:#7a6f5c;--line:#c2b696;--shade:#9d9d9d;--shade-complete:#7f7f7f;--shade-solved:#a9c9a0;--mark:#d8221c;--success-bg:#d8e3ce;--success-fg:#31502c;--board-ink:var(--ink);--radius:3px;--radius-lg:6px;--z-dropdown:30;--z-confetti:40;--surface:var(--paper);--surface-raised:transparent;--surface-raised-hover:#231f2012;--field-bg:#fffcf0;--field-bg-hover:#fff;--surface-selected:var(--shade);--border:var(--line);--border-strong:var(--ink-soft);--text:var(--ink);--text-muted:var(--ink-soft);--shadow-dropdown:0 6px 18px #231f202e;--sans:system-ui, "Segoe UI", Roboto, sans-serif;font:16px/1.5 var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased}:root[data-theme=dark]{--paper:#1b1a17;--ink:#ece7db;--ink-soft:#9a9284;--line:#4b463c;--shade:#646464;--shade-complete:#7f7f7f;--shade-solved:#7fae74;--mark:#ff6b5a;--board-ink:#bdb8ac;--success-bg:#2e4030;--success-fg:#c2d9b8;--surface-raised-hover:#ece7db1a;--field-bg:#262521;--field-bg-hover:#2f2e29;--shadow-dropdown:0 6px 18px #0000008c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{min-height:100svh;margin:0}h1,h2{color:var(--ink);margin:0;font-weight:600}h1{letter-spacing:-.02em;font-size:1.75rem}p{margin:0}.confetti{z-index:var(--z-confetti);pointer-events:none;display:block;position:fixed;inset:0}.month-picker{-webkit-user-select:none;user-select:none;padding-bottom:6px;position:relative}.month-picker__trigger{font:inherit;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-raised);color:var(--text);cursor:pointer;align-items:center;gap:6px;padding:5px 8px;font-size:13px;display:inline-flex}.month-picker__trigger:hover:not(:disabled){background:var(--surface-raised-hover)}.month-picker__trigger:disabled{opacity:.5;cursor:default}.month-picker__value{font-variant-numeric:tabular-nums}.month-picker__dropdown{z-index:var(--z-dropdown);border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--surface);width:214px;box-shadow:var(--shadow-dropdown);padding:10px;position:absolute;top:calc(100% + 6px);left:0}.month-picker__header{justify-content:space-between;align-items:center;gap:6px;margin-bottom:6px;display:flex}.month-picker__nav{font:inherit;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-raised);width:28px;height:28px;color:var(--text);cursor:pointer;font-size:16px;line-height:1}.month-picker__nav:hover:not(:disabled){background:var(--surface-raised-hover)}.month-picker__nav:disabled{opacity:.5;cursor:default}.month-picker__label--link{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:3px;margin:-2px -6px;padding:2px 6px}.month-picker__label--link:hover{color:var(--ink);background:var(--surface-raised-hover)}.month-picker__label--link:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.month-picker__label{font-weight:600}.month-picker__grid{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.month-picker__weekday{text-align:center;color:var(--text-muted);font-size:11px}.month-picker__cell{font:inherit;border-radius:var(--radius);color:var(--text);cursor:pointer;background:0 0;border:1px solid #0000;padding:4px 0;font-size:13px}.month-picker__cell:hover:not(:disabled){background:var(--surface-raised-hover)}.month-picker__cell:disabled{opacity:.35;cursor:default}.month-picker__cell--empty{pointer-events:none}.month-picker__cell--today{border-color:var(--border-strong)}.month-picker__cell--selected{background:var(--surface-selected);border-color:var(--border-strong);font-weight:600}.month-picker__cell--completed{background:var(--success-bg);color:var(--success-fg)}.puzzle-grid{--cell-size:64px;background:var(--paper);touch-action:none;-webkit-user-select:none;user-select:none;display:block}.puzzle-grid__shape{pointer-events:all;transition:fill 80ms,opacity 80ms,stroke 80ms}.puzzle-grid__line{stroke:var(--line);stroke-width:1px}.puzzle-grid__square .puzzle-grid__shape{fill:#0000;stroke:var(--line);stroke-width:1px;shape-rendering:crispedges}.puzzle-grid__square--activated .puzzle-grid__shape,.puzzle-grid__square--fixed .puzzle-grid__shape{fill:var(--shade)}.puzzle-grid__square--completed .puzzle-grid__shape{fill:var(--shade-complete)}.puzzle-grid--solved .puzzle-grid__square--activated .puzzle-grid__shape,.puzzle-grid--solved .puzzle-grid__square--completed .puzzle-grid__shape{fill:var(--shade-solved)}.puzzle-grid__square--inactivated .puzzle-grid__shape{fill:var(--line);opacity:.45}.puzzle-grid__square--x .puzzle-grid__shape{fill:#0000}.puzzle-grid__square--inferred .puzzle-grid__shape{opacity:.45}.puzzle-grid__square:not(.puzzle-grid__square--readonly) .puzzle-grid__hit-area{cursor:pointer}.puzzle-grid__given-halo{fill:#0000;pointer-events:none}.puzzle-grid__square--given .puzzle-grid__given-halo{fill:var(--ink);opacity:.08}.puzzle-grid__violation-halo{fill:var(--mark);pointer-events:none;opacity:0;transition:opacity .12s}.puzzle-grid__square--violation .puzzle-grid__violation-halo,.puzzle-grid__edge--violation .puzzle-grid__violation-halo{opacity:.4}.puzzle-grid__edge .puzzle-grid__shape{pointer-events:none;stroke:#0000;stroke-width:2px;stroke-linecap:round}.puzzle-grid__edge--activated .puzzle-grid__shape{stroke:var(--board-ink)}.puzzle-grid__edge--inactivated .puzzle-grid__shape{stroke:var(--line)}.puzzle-grid__edge--x .puzzle-grid__shape{stroke:#0000}.puzzle-grid__edge--fixed .puzzle-grid__shape{stroke:var(--board-ink);stroke-width:max(2px, calc(var(--cell-size) * .07));stroke-linecap:square}.puzzle-grid__edge--emphasised .puzzle-grid__shape{stroke-width:max(3px, calc(var(--cell-size) * .105))}.puzzle-grid__vertex .puzzle-grid__shape{fill:var(--paper);stroke:var(--line);stroke-width:1.5px}.puzzle-grid__vertex--activated .puzzle-grid__shape{fill:var(--board-ink);stroke:var(--board-ink)}.puzzle-grid__vertex--inactivated .puzzle-grid__shape{fill:var(--paper);stroke:var(--line)}.puzzle-grid__vertex--x .puzzle-grid__shape{fill:var(--paper);stroke:var(--mark)}.puzzle-grid__vertex--fixed .puzzle-grid__shape{fill:var(--board-ink);stroke:var(--board-ink)}.puzzle-grid__square .puzzle-grid__hit-area,.puzzle-grid__vertex .puzzle-grid__hit-area{fill:#0000;stroke:none;pointer-events:all}.puzzle-grid__edge .puzzle-grid__hit-area,.puzzle-grid__cross{pointer-events:none}.puzzle-grid__cross-line{stroke:var(--mark);stroke-width:max(1.25px, calc(var(--cell-size) * .045));stroke-linecap:round}.puzzle-board{flex-direction:column;gap:12px;max-width:100%;display:flex}.puzzle-board__grid{max-width:100%;display:block}.puzzle-board__grid>svg{max-width:100%;height:auto;display:block}.puzzle-board__footer{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px 20px;display:flex}.puzzle-board__toolbar{gap:6px;display:flex}.puzzle-board__button{font:inherit;color:var(--ink);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:3px;padding:3px 12px;font-size:.8rem}.puzzle-board__button:hover:not(:disabled){border-color:var(--ink)}.puzzle-board__button:focus-visible{outline:2px solid var(--ink);outline-offset:1px}.puzzle-board__button:disabled{color:var(--line);cursor:default}.puzzle-board__status{color:var(--ink-soft);flex:14rem;font-size:.8rem}.puzzle-board__status--violation{color:var(--mark)}.puzzle-board__status--solved{color:var(--ink);font-weight:600}.daily-puzzle{flex-direction:column;gap:12px;max-width:100%;display:flex}.daily-puzzle__header{justify-content:space-between;align-items:center;gap:12px;display:flex}.daily-puzzle__title{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);font-size:.75rem;font-weight:600}.daily-puzzle__sizes{gap:6px;display:flex}.daily-puzzle__size{font:inherit;color:var(--ink-soft);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:3px;align-items:center;gap:6px;padding:3px 10px;font-size:.75rem;display:inline-flex}.daily-puzzle__size:hover{border-color:var(--ink);color:var(--ink)}.daily-puzzle__size:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.daily-puzzle__size--current{color:var(--ink);border-color:var(--ink)}.daily-puzzle__tick{color:var(--mark);font-size:.85em}.daily-puzzle__placeholder{border:1px dashed var(--line);max-width:100%;color:var(--ink-soft);text-align:center;box-sizing:border-box;border-radius:4px;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:12px;font-size:.85rem;display:flex}.daily-puzzle__attempts{opacity:.8;font-size:.75rem}.daily-puzzle__footer{flex-direction:column;gap:4px;display:flex}.daily-puzzle__stats{max-width:44ch;color:var(--ink-soft);font-size:.8rem}.large-puzzle{flex-direction:column;gap:12px;max-width:100%;display:flex}.large-puzzle:focus{outline:2px solid var(--line);outline-offset:10px;border-radius:4px}.large-puzzle__header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.large-puzzle__title{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);font-size:.75rem;font-weight:600}.large-puzzle__badge{color:var(--ink-soft);align-items:center;gap:6px;font-size:.8rem;display:inline-flex}.large-puzzle__tick{color:var(--mark);font-size:.85em}.large-puzzle__picker{align-items:center;gap:6px;display:inline-flex}.large-puzzle__picker-label{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);font-size:.7rem}.large-puzzle__select{font:inherit;color:var(--ink);background:var(--field-bg);border:1px solid var(--line);border-radius:6px;max-width:26ch;padding:2px 6px;font-size:.8rem}.large-puzzle__select:hover{background:var(--field-bg-hover)}.large-puzzle__select option{background:var(--field-bg);color:var(--ink)}.large-puzzle__board{max-width:min(100%,100vw - 140px)}.large-puzzle__footer{flex-direction:column;gap:4px;display:flex}.large-puzzle__stats{max-width:64ch;color:var(--ink-soft);font-size:.8rem}.partition-preview{flex-direction:column;gap:10px;max-width:100%;display:flex}.partition-preview__header{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.partition-preview__title{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);font-size:.75rem;font-weight:600}.partition-preview__roll{font:inherit;color:var(--ink);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:3px;padding:3px 12px;font-size:.75rem}.partition-preview__roll:hover{border-color:var(--ink)}.partition-preview__roll:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.partition-preview__stats{max-width:26ch;color:var(--ink-soft);font-size:.8rem}.theme-toggle{z-index:1;font:inherit;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);background:var(--paper);border:1px solid var(--line);cursor:pointer;border-radius:999px;padding:5px 12px;font-size:.7rem;font-weight:600;position:fixed;top:16px;right:16px}.theme-toggle:hover{color:var(--ink);border-color:var(--ink)}.theme-toggle:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.app{flex-direction:column;gap:28px;max-width:1100px;margin:0 auto;padding:48px 24px 72px;display:flex}.app__header{flex-direction:column;gap:6px;display:flex}.app__tagline{color:var(--ink-soft)}.app__boards{flex-wrap:wrap;align-items:flex-start;gap:48px;display:flex}.note{color:var(--ink-soft);border-left:2px solid var(--line);max-width:64ch;padding-left:12px;font-size:.9rem}@media (width<=720px){.app{gap:20px;padding:28px 16px 48px}.app__boards{gap:32px}}
