:root,:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-bg:#fff;--color-surface:#f3f4f7;--color-text:#161a22;--color-text-muted:#4a5262;--color-accent:#1c4fd6;--color-accent-text:#fff;--color-clue:#161a22;--color-solution:#1c4fd6;--color-line:#8a93a3;--color-line-thick:#2a3140;--color-selected:#dbe6ff;--color-error:#b3261e}@media (prefers-color-scheme:dark){:root:not([data-theme]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-bg:#10131a;--color-surface:#1a1f2a;--color-text:#e9ecf2;--color-text-muted:#a3abb9;--color-accent:#8cb0ff;--color-accent-text:#10131a;--color-clue:#f1f3f8;--color-solution:#8cb0ff;--color-line:#5d667a;--color-line-thick:#c9cfdb;--color-selected:#26365c;--color-error:#ff9a92}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-bg:#10131a;--color-surface:#1a1f2a;--color-text:#e9ecf2;--color-text-muted:#a3abb9;--color-accent:#8cb0ff;--color-accent-text:#10131a;--color-clue:#f1f3f8;--color-solution:#8cb0ff;--color-line:#5d667a;--color-line-thick:#c9cfdb;--color-selected:#26365c;--color-error:#ff9a92}*,:before,:after{box-sizing:border-box}:root{--font:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--gutter:16px;--tap:44px;--header-h:var(--tap);--footer-h:var(--tap);--safe-t:env(safe-area-inset-top,0px);--safe-r:env(safe-area-inset-right,0px);--safe-b:env(safe-area-inset-bottom,0px);--safe-l:env(safe-area-inset-left,0px);--vh:100vh}@supports (height:100dvh){:root{--vh:100dvh}}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{min-height:100vh;min-height:var(--vh);padding:var(--safe-t) var(--safe-r) var(--safe-b) var(--safe-l);background:var(--color-bg);color:var(--color-text);font:16px/1.4 var(--font);font-variant-numeric:tabular-nums;-webkit-tap-highlight-color:transparent;flex-direction:column;margin:0;display:flex}[hidden]{display:none!important}a{color:var(--color-accent)}button{font:inherit;color:inherit;touch-action:manipulation;margin:0}:focus-visible{outline:3px solid var(--color-accent);outline-offset:2px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.site-header{height:var(--header-h);padding:0 calc(var(--gutter) / 2);flex:none;align-items:center;gap:4px;display:flex}.site-header .theme-toggle{order:1}.logo{min-width:0;min-height:var(--tap);padding:0 calc(var(--gutter) / 2);color:var(--color-text);border-radius:8px;align-items:center;gap:8px;margin-right:auto;font-size:17px;font-weight:700;text-decoration:none;display:inline-flex}.logo-mark{width:22px;height:22px;color:var(--color-accent);flex:none}.logo-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (max-width:359px){.logo-mark{display:none}}.nav-link{min-height:var(--tap);color:var(--color-text);border-radius:8px;align-items:center;padding:0 12px;font-weight:500;text-decoration:none;display:inline-flex}@media (hover:hover){.nav-link:hover{text-decoration:underline}}.icon-btn{width:var(--tap);height:var(--tap);cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;place-items:center;padding:0;display:inline-grid}@media (hover:hover){.icon-btn:hover{background:var(--color-surface)}}.icon{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:22px;height:22px}.icon-sun,[data-theme=dark] .icon-moon{display:none}[data-theme=dark] .icon-sun{display:block}.noscript{margin:8px var(--gutter) 0;border:1px solid var(--color-line);background:var(--color-surface);color:var(--color-text);text-align:center;border-radius:8px;flex:none;padding:12px 16px}.site-footer{height:var(--footer-h);flex:none;justify-content:center;align-items:center;font-size:13px;display:flex}.site-footer a{min-width:var(--tap);min-height:var(--tap);color:var(--color-text-muted);border-radius:8px;align-items:center;padding:0 12px;display:inline-flex}.home{--gap:12px;--main-pad:8px;--gen-h:52px;--status-h:20px;--caption-h:16px;--col-w:320px;--col-gap:32px;--board-min:216px;--board-max:800px;--ad-w:320px;--ad-h:50px;--controls-h:calc(var(--tap) + var(--gap) + var(--gen-h) + 4px + var(--status-h) + 8px + var(--caption-h) + var(--ad-h));--avail-h:calc(var(--vh) - var(--safe-t) - var(--safe-b) - var(--header-h) - var(--footer-h) - 2 * var(--main-pad));--board-lim:clamp(var(--board-min), var(--avail-h) - var(--gap) - var(--controls-h), var(--board-max))}@media (min-height:640px){.home{--ad-h:100px}}.home main{justify-content:center;align-items:center;gap:var(--gap);padding:var(--main-pad) var(--gutter);flex-direction:column;flex:1 0 auto;display:flex}.board-host{width:min(100%, var(--board-lim));aspect-ratio:1;flex:none;container-type:inline-size}.controls{flex-direction:column;flex:none;width:100%;max-width:420px;display:flex}.levels{--level-gap:8px;gap:var(--level-gap);height:var(--tap);grid-template-columns:repeat(4,minmax(0,1fr));display:grid;position:relative}.level{z-index:1;min-width:var(--tap);height:var(--tap);border:1px solid var(--color-line);color:var(--color-text);cursor:pointer;background:0 0;border-radius:10px;padding:0 2px;font-weight:500;position:relative}@media (max-width:380px){.levels{--level-gap:4px}.level{padding:0;font-size:13px}}@media (hover:hover){.level:hover{background:var(--color-surface)}}.level[aria-checked=true]{background:0 0;border-color:#0000;font-weight:700}.level-indicator{width:calc((100% - 3 * var(--level-gap)) / 4);border:1px solid var(--color-accent);height:100%;box-shadow:inset 0 0 0 1px var(--color-accent);background:var(--color-selected);pointer-events:none;transform:translateX(calc(var(--level-index,1) * (100% + var(--level-gap))));border-radius:10px;position:absolute;top:0;left:0}.actions{grid-template-columns:minmax(var(--tap), 1fr) auto minmax(var(--tap), 1fr);height:var(--gen-h);margin-top:var(--gap);align-items:center;column-gap:12px;display:grid}.generate{min-width:148px;height:var(--gen-h);border-radius:calc(var(--gen-h) / 2);background:var(--color-accent);color:var(--color-accent-text);cursor:pointer;border:0;grid-area:1/2;padding:0 28px;font-size:18px;font-weight:700}@media (hover:hover){.generate:hover:not(:disabled){filter:brightness(1.08)}}.generate:disabled{cursor:progress;opacity:.7}.action-print{grid-area:1/1;justify-self:end}.action-solution{grid-area:1/3;justify-self:start}.status{height:var(--status-h);color:var(--color-text-muted);font-size:14px;line-height:var(--status-h);text-align:center;text-overflow:ellipsis;white-space:nowrap;margin:4px 0 0;overflow:hidden}.ad-slot{--slot-w:min(var(--ad-w), 100% + 2 * var(--gutter));width:var(--slot-w);height:var(--ad-h);margin:calc(8px + var(--caption-h)) calc((100% - var(--slot-w)) / 2) 0;background:var(--color-surface);flex:none;position:relative}.ad-caption{color:var(--color-text-muted);letter-spacing:.04em;font-size:11px;line-height:var(--caption-h);text-align:center;text-transform:uppercase;position:absolute;bottom:100%;left:0;right:0}@media screen{.print-meta{display:none}}@media (min-aspect-ratio:1) and (min-width:600px){.home{--ad-w:320px;--ad-h:100px;--board-lim:clamp(var(--board-min), var(--avail-h), var(--board-max))}.home main{grid-template-columns:minmax(0, var(--board-lim)) var(--col-w);column-gap:var(--col-gap);place-content:center;align-items:center;display:grid}.board-host{width:100%}.controls{width:var(--col-w)}.levels{--level-gap:4px}.level{padding:0}}@media (min-aspect-ratio:1) and (min-width:600px) and (min-height:560px){.home{--ad-w:300px;--ad-h:250px}}.board-host{position:relative}.board-lines{pointer-events:none;fill:none;shape-rendering:crispedges;width:calc(100% - 4px);height:calc(100% - 4px);position:absolute;top:1px;left:1px;overflow:visible}.board-lines line{stroke-dasharray:1;stroke-dashoffset:0}.lines-thin{stroke:var(--color-line);stroke-width:1px}.lines-thick{stroke:var(--color-line-thick);stroke-width:2px}.board{border:2px solid var(--color-line-thick);background:var(--color-bg);font-size:clamp(14px,5vmin,44px);-webkit-user-select:none;user-select:none;border-radius:4px;grid-template-rows:repeat(9,minmax(0,1fr));width:100%;height:100%;font-size:6.2cqi;line-height:1;display:grid}.board-row{grid-template-columns:repeat(9,minmax(0,1fr));display:grid}.cell{color:var(--color-clue);border-bottom:1px solid #0000;border-right:1px solid #0000;place-items:center;display:grid}.cell[data-col="2"],.cell[data-col="5"]{border-right:2px solid #0000}.cell[data-col="8"]{border-right:0}.board-row:nth-child(3)>.cell,.board-row:nth-child(6)>.cell{border-bottom:2px solid #0000}.board-row:last-child>.cell{border-bottom:0}.cell[data-kind=clue]{font-weight:600}.cell[data-kind=solution]{color:var(--color-solution);font-weight:400}:root{--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-in:cubic-bezier(.64, 0, .78, 0);--press-scale:.96}.generate,.level,.icon-btn{transition:transform .3s var(--ease-spring)}.generate:active:not(:disabled),.level:active:not(:disabled),.icon-btn:active:not(:disabled){transform:scale(var(--press-scale));transition:transform .12s var(--ease-out)}.levels.is-animated .level-indicator{transition:transform .35s var(--ease-spring)}@keyframes line-draw{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}@keyframes controls-in{0%{opacity:0}to{opacity:1}}.board-lines line{animation:line-draw .6s var(--ease-out) backwards}.lines-thick line{animation-delay:.1s}.controls{animation:controls-in .4s var(--ease-out) .2s backwards}.cell.noise{position:relative}.cell.noise:after{content:attr(data-noise-digit);content:attr(data-noise-digit) / "";color:var(--color-text-muted);pointer-events:none;place-items:center;font-weight:400;display:grid;position:absolute;top:0;bottom:0;left:0;right:0}.cell.noise[data-noise-phase=in]:after{animation:noise-in .4s var(--ease-out) both;will-change:filter, opacity, transform}:root[data-blur=off] .cell.noise[data-noise-phase=in]:after{will-change:auto;animation-name:noise-in-flat}.cell.noise[data-noise-phase=out]:after{animation:noise-out .3s var(--ease-in) both}.cell[data-settle]{animation:settle var(--settle-ms,.33s) var(--ease-spring) both}.cell[data-reveal=in]{animation:reveal var(--reveal-ms,.14s) var(--ease-out) both}.cell[data-reveal=out]{animation:reveal var(--reveal-ms,.14s) var(--ease-in) reverse both}@keyframes noise-in{0%{opacity:0;filter:blur(8px);transform:scale(.9)}to{opacity:1;filter:blur();transform:none}}@keyframes noise-in-flat{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:none}}@keyframes noise-out{0%{opacity:1;transform:none}to{opacity:0;transform:scale(.9)}}@keyframes settle{0%{opacity:0;transform:scale(1.15)}to{opacity:1;transform:none}}@keyframes reveal{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:no-preference){@view-transition{navigation:auto}}::view-transition-old(root){animation-duration:.25s}::view-transition-new(root){animation-duration:.25s}.ad-slot{view-transition-name:ad-slot}:root[data-theme-arc]::view-transition-old(root){mix-blend-mode:normal;animation:none}:root[data-theme-arc]::view-transition-new(root){mix-blend-mode:normal;animation:none}:root[data-theme-arc]::view-transition-old(root){z-index:1}:root[data-theme-arc]::view-transition-new(root){z-index:2}:root[data-theme-arc]::view-transition-group(ad-slot){mix-blend-mode:normal;animation:none}:root[data-theme-arc]::view-transition-image-pair(ad-slot){mix-blend-mode:normal;animation:none}:root[data-theme-arc]::view-transition-old(ad-slot){mix-blend-mode:normal;animation:none}:root[data-theme-arc]::view-transition-new(ad-slot){mix-blend-mode:normal;animation:none}:root[data-theme-fade]{--theme-fade:background-color .35s ease, border-color .35s ease, color .35s ease, fill .35s ease, stroke .35s ease, outline-color .35s ease}:root[data-theme-fade],:root[data-theme-fade] *,:root[data-theme-fade] :before,:root[data-theme-fade] :after{transition:var(--theme-fade)}:root[data-theme-fade] :-webkit-any(.generate,.level,.icon-btn){transition:var(--theme-fade), transform .3s var(--ease-spring)}:root[data-theme-fade] :is(.generate,.level,.icon-btn){transition:var(--theme-fade), transform .3s var(--ease-spring)}:root[data-theme-fade] :-webkit-any(.generate,.level,.icon-btn):active:not(:disabled){transition:var(--theme-fade), transform .12s var(--ease-out)}:root[data-theme-fade] :is(.generate,.level,.icon-btn):active:not(:disabled){transition:var(--theme-fade), transform .12s var(--ease-out)}:root[data-theme-fade] .levels.is-animated .level-indicator{transition:var(--theme-fade), transform .35s var(--ease-spring)}@keyframes icon-spin{0%{transform:rotate(-180deg)}to{transform:none}}:root[data-theme-toggled] .theme-toggle .icon{animation:icon-spin .4s var(--ease-out)}@media (prefers-reduced-motion:reduce){.generate,.level,.icon-btn,.levels.is-animated .level-indicator{transition:none}.generate:active:not(:disabled),.level:active:not(:disabled),.icon-btn:active:not(:disabled){transition:none;transform:none}.board-lines line,.controls,.cell.noise:after,.cell[data-settle],.cell[data-reveal],:root[data-theme-toggled] .theme-toggle .icon{will-change:auto;animation:none}::view-transition-group(*){animation:none}::view-transition-old(*){animation:none}::view-transition-new(*){animation:none}}.page main{width:100%;max-width:calc(65ch + 2 * var(--gutter));padding:16px var(--gutter) 40px;overflow-wrap:break-word;flex:1 0 auto;margin:0 auto;line-height:1.6}.page .nav-link[aria-current=page]{text-underline-offset:4px;font-weight:700;text-decoration:underline}.page h1{margin:8px 0 16px;font-size:2rem;line-height:1.2}.page h2{margin:2em 0 .5em;font-size:1.4rem;line-height:1.3}.page h3{margin:1.5em 0 .25em;font-size:1.1rem;line-height:1.3}.page p,.page ul{margin:0 0 1em}.page ul{padding-left:1.25em}.page li{margin-bottom:.4em}.page .lead{color:var(--color-text-muted);font-size:1.1rem}.page code{background:var(--color-surface);border-radius:4px;padding:.1em .35em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.page main a{text-underline-offset:2px}.figure{margin:1.5em 0}.diagram{width:min(100%,300px);height:auto;color:var(--color-text);margin:0 auto;display:block}.d-hl{fill:var(--color-selected)}.d-target{fill:var(--color-accent)}.d-mark{fill:var(--color-accent-text);font:700 13px var(--font)}.d-thin,.d-thick{fill:none}.d-thin{stroke:var(--color-line);stroke-width:.5px}.d-thick{stroke:var(--color-line-thick);stroke-width:1.5px}.figure figcaption{color:var(--color-text-muted);margin-top:.75em;font-size:.95rem;line-height:1.5}@media (min-width:640px){.page main{padding-top:32px}.page h1{font-size:2.4rem}}@page{margin:15mm}@media print{:root:root:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-bg:#fff;--color-surface:#fff;--color-text:#000;--color-text-muted:#000;--color-accent:#000;--color-accent-text:#fff;--color-clue:#000;--color-solution:#000;--color-line:#000;--color-line-thick:#000;--color-selected:#fff;--color-error:#000;-webkit-print-color-adjust:exact;-moz-print-color-adjust:exact;print-color-adjust:exact}*,:before,:after{will-change:auto!important;filter:none!important;transition:none!important;animation:none!important}.site-header,.site-footer,.controls,.levels,.actions,.generate,.level,.icon-btn,.ad-slot,.ad-caption,.status,.theme-toggle,.level-indicator,.visually-hidden,.cell.noise:after{display:none!important}html,body{color:#000;background:#fff;height:auto;min-height:0;padding:0}.home main{flex-direction:column;align-items:center;gap:6mm;padding:0;display:flex}.home .board-host{break-inside:avoid;width:min(100%,165mm)}.board{outline-offset:0;background:#fff;border-color:#000;border-radius:0;outline:1px solid #000}.board-lines{overflow:hidden}.lines-thin{stroke:#000;stroke-width:1px}.lines-thick{stroke:#000;stroke-width:3px}.cell[data-kind=clue]{font-weight:700}.cell[data-kind=solution]{font-weight:400}.print-meta{color:#000;text-align:center;order:-1;margin:0;font-size:16pt;font-weight:600;line-height:1.2;display:block}}
