:root{--bg: #f4ecdf;--surface: #fbf7f0;--board: #e7d9c3;--well: #d9c6a9;--well-edge: rgba(80, 52, 24, .18);--ink: #2b2118;--muted: #7b6a58;--line: rgba(60, 40, 20, .14);--accent: #2f6f5c;--accent-soft: rgba(47, 111, 92, .14);--danger: #b0442e;--warn: #b8801f;--wood-hi: #ecc893;--wood-lo: #d3a162;--grain-ink: rgba(112, 62, 20, .13);--tile-ink: #3a2412;--shadow: 0 1px 2px rgba(40, 24, 10, .25), 0 3px 6px rgba(40, 24, 10, .12);--radius: 14px;--gap: 7px;--serif: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;--sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #1b1815;--surface: #25201c;--board: #2b2520;--well: #1f1a16;--well-edge: rgba(0, 0, 0, .45);--ink: #f0e7d9;--muted: #ab9b89;--line: rgba(255, 240, 220, .12);--accent: #6cc3a4;--accent-soft: rgba(108, 195, 164, .16);--danger: #f08a6f;--warn: #e0a84a;--wood-hi: #d9b27a;--wood-lo: #b8864b;--grain-ink: rgba(80, 40, 10, .18);--tile-ink: #2f1c0c;--shadow: 0 1px 2px rgba(0, 0, 0, .6), 0 4px 10px rgba(0, 0, 0, .35);color-scheme:dark}}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit}.app{max-width:560px;margin:0 auto;min-height:100dvh;padding:env(safe-area-inset-top) 16px calc(env(safe-area-inset-bottom) + 12px);display:flex;flex-direction:column}.topbar{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;padding:6px 0 4px;border-bottom:1px solid var(--line)}.wordmark{margin:0;text-align:center;font-family:var(--serif);font-weight:700;font-size:1.7rem;letter-spacing:.01em;display:flex;justify-content:center;align-items:center;gap:1px}.wm-tile{display:inline-grid;place-items:center;width:1.35em;height:1.35em;margin:0 2px;border-radius:.22em;color:var(--tile-ink);background:linear-gradient(180deg,var(--wood-hi),var(--wood-lo));box-shadow:inset 0 1px #ffffff73,inset 0 -2px #00000029,var(--shadow);font-size:.8em}.icon-btn{width:44px;height:44px;display:grid;place-items:center;border:0;background:transparent;border-radius:12px;cursor:pointer;color:var(--ink);font-size:1.6rem;line-height:1}.icon-btn:hover{background:var(--accent-soft)}.icon-btn:disabled{opacity:.3;cursor:default;background:transparent}.icon-btn svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.icon-btn svg .dot{fill:currentColor}.icon-btn.small{width:36px;height:36px;font-size:1.5rem}.meta{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 0 0}.metarow{width:100%;display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}.banner{margin:0;padding:4px 12px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:.8rem;text-align:center}.dayline{display:flex;align-items:center;gap:6px}.day{margin:0;font-size:.95rem;color:var(--muted);text-align:center}.day strong{color:var(--ink);font-family:var(--serif);font-size:1.1rem;margin-right:6px}.sizes{display:inline-flex;padding:3px;border-radius:999px;background:var(--board);gap:2px}.sizes button{border:0;background:transparent;padding:6px 16px;border-radius:999px;font-weight:600;font-size:.92rem;cursor:pointer;color:var(--muted);min-height:34px}.sizes button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.sizes small{font-weight:500;opacity:.75}.sizes .done{color:var(--accent);margin-left:2px}.play{flex:1;display:flex;flex-direction:column;align-items:center}.game{--board-size: min( calc(100vw - 96px) , 360px, 40dvh);--cell: calc((var(--board-size) - (var(--n) - 1) * var(--gap)) / var(--n));--shelf-tile: min(54px, calc((var(--board-size) + 18px - (var(--per-row) - 1) * 6px) / var(--per-row)));width:100%;display:flex;flex-direction:column;align-items:center}.instructions{margin:6px 0 8px;color:var(--muted);font-size:.95rem;min-height:1.3em}.board-wrap{padding:12px 12px 4px calc(12px + 20px + var(--gap));background:var(--board);border-radius:20px;box-shadow:inset 0 1px #ffffff59}.board{display:grid;grid-template-columns:repeat(var(--n),var(--cell)) 20px;grid-template-rows:repeat(var(--n),var(--cell)) 20px;gap:var(--gap);touch-action:none}.cell{position:relative;padding:0;border:0;border-radius:var(--radius);background:var(--well);box-shadow:inset 0 2px 4px var(--well-edge);cursor:pointer;display:grid;place-items:stretch;transition:box-shadow .15s}.cell:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.cell.active:not(:has(.tile)){box-shadow:inset 0 2px 4px var(--well-edge),inset 0 0 0 2.5px var(--accent)}.cell.active:not(:has(.tile)):after{content:"";position:absolute;left:30%;right:30%;bottom:18%;height:3px;border-radius:2px;background:var(--accent);animation:blink 1.1s steps(2,start) infinite}.cell.drop-target{box-shadow:inset 0 2px 4px var(--well-edge),inset 0 0 0 3px var(--accent)}@keyframes blink{to{visibility:hidden}}.tile{--size: var(--cell);position:relative;display:grid;place-items:center;width:100%;height:100%;border-radius:var(--radius);color:var(--tile-ink);background:radial-gradient(ellipse at 30% 18%,rgba(255,255,255,.28),transparent 55%),repeating-linear-gradient(var(--grain, 90deg),var(--grain-ink) 0 1.5px,transparent 1.5px 6px) var(--grain-x, 0) 0 / 100% 100%,repeating-linear-gradient(calc(var(--grain, 90deg) - 3deg),transparent 0 9px,var(--grain-ink) 9px 10px,transparent 10px 17px),linear-gradient(180deg,var(--wood-hi),var(--wood-lo));filter:brightness(calc(1 + var(--tone, 0)));box-shadow:inset 0 1px #ffffff80,inset 0 -3px #3c1e0538,var(--shadow);font-family:var(--serif);font-weight:700;font-size:calc(var(--size) * .52);line-height:1;user-select:none;-webkit-user-select:none;touch-action:none;cursor:grab;transition:transform .12s ease,box-shadow .12s ease,opacity .12s}.tile .glyph{transform:translateY(.02em);text-shadow:0 1px 0 rgba(255,255,255,.35)}.cell.selected .tile{transform:translateY(-3px) scale(1.04);box-shadow:inset 0 1px #ffffff80,inset 0 -3px #3c1e0538,0 0 0 3px var(--accent),0 8px 14px #00000038}.tile.lifted{opacity:.3}.tile.ghost{position:fixed;left:0;top:0;z-index:1000;pointer-events:none;cursor:grabbing;box-shadow:inset 0 1px #ffffff80,inset 0 -3px #3c1e0538,0 12px 24px #0000004d}.board.solved .tile.win{animation:win .55s cubic-bezier(.3,1.6,.5,1) calc(var(--i, 0) * 45ms) both}@keyframes win{0%{transform:translateY(0)}40%{transform:translateY(-10px) rotate(-2deg)}to{transform:translateY(0)}}.board.solved .cell{box-shadow:inset 0 2px 4px var(--well-edge),0 0 0 2px var(--accent-soft)}.rowmark,.colmark{display:grid;place-items:center}.mark{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:800;line-height:1}.mark.off{visibility:hidden}.mark.empty,.mark.partial{width:6px;height:6px;background:var(--line)}.mark.fits{background:var(--accent);color:var(--surface)}.mark.offword{background:var(--warn);color:var(--surface);font-size:14px}.mark.inline{display:inline-grid;vertical-align:-3px;margin:0 1px}.mark.nonword{background:var(--danger);color:var(--surface)}.counter{display:flex;gap:18px;margin:6px 0;color:var(--muted);font-size:.9rem}.counter strong{color:var(--ink);font-variant-numeric:tabular-nums}.shelf{width:min(100%,calc(var(--board-size) + 44px));min-height:calc(var(--shelf-tile) + 20px);padding:10px;border-radius:16px;background:color-mix(in srgb,var(--board),transparent 45%);border:1px dashed var(--line);display:flex;flex-wrap:wrap;justify-content:center;align-content:center;gap:6px;touch-action:none}.shelf.drop-target{border-color:var(--accent);background:var(--accent-soft)}.shelf .slot{width:var(--shelf-tile);height:var(--shelf-tile);display:grid}.shelf .tile{--size: var(--shelf-tile);--radius: 11px}.shelf .tile:hover{transform:translateY(-2px)}.shelf-note{color:var(--muted);font-size:.85rem}.toolbar{display:flex;justify-content:center;gap:4px;margin-top:8px;flex-wrap:wrap}.toolbar button{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:60px;min-height:52px;padding:6px 8px;border:0;border-radius:12px;background:transparent;color:var(--ink);font-size:.75rem;font-weight:600;cursor:pointer}.toolbar button:hover:not(:disabled){background:var(--accent-soft)}.toolbar button:disabled{opacity:.35;cursor:default}.toolbar button.on{background:var(--accent-soft);color:var(--accent)}.toolbar svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.after{display:flex;gap:10px;margin-top:14px}.primary,.secondary{border:0;border-radius:999px;padding:11px 20px;font-weight:700;cursor:pointer;min-height:44px}.primary{background:var(--accent);color:var(--surface)}.secondary{background:var(--board);color:var(--ink)}.empty-note{margin-top:40px;color:var(--muted)}.footer{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:8px;padding:18px 0 6px;color:var(--muted);font-size:.8rem}.footer a,.link{color:var(--muted);background:none;border:0;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:2px;font-size:inherit}dialog.sheet{border:0;padding:0;background:transparent;max-width:min(440px,calc(100vw - 24px));width:100%;color:var(--ink)}dialog.sheet::backdrop{background:#140c0573;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}dialog.sheet .card{position:relative;background:var(--surface);border-radius:22px;padding:26px 22px 22px;box-shadow:0 20px 50px #0000004d;max-height:calc(100dvh - 40px);overflow:auto}dialog.sheet .close{position:absolute;top:8px;right:8px}dialog.sheet h2{margin:0 0 10px;font-family:var(--serif);font-size:1.6rem;text-align:center}dialog.sheet h3{margin:12px 0 8px;font-family:var(--serif)}dialog.sheet p{line-height:1.5}.win-line{text-align:center;margin:0 0 12px}.words{list-style:none;padding:0;margin:0 0 14px;display:flex;flex-wrap:wrap;justify-content:center;gap:6px}.words li{font-family:var(--serif);font-weight:700;letter-spacing:.08em;padding:4px 10px;border-radius:8px;background:var(--board)}.stat-row{display:flex;justify-content:space-around;gap:8px;margin:8px 0}.stat-row div{display:flex;flex-direction:column;align-items:center;min-width:60px}.stat-row strong{font-family:var(--serif);font-size:1.7rem;font-variant-numeric:tabular-nums}.stat-row span{font-size:.75rem;color:var(--muted);text-align:center}.stats-block{border-top:1px solid var(--line);padding-top:4px}.dialog-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:16px}.next{text-align:center;color:var(--muted);margin:14px 0 0;font-size:.9rem}.fine{color:var(--muted);font-size:.85rem;margin:6px 0}.center{text-align:center}.story{font-style:italic}.howto{padding-left:18px;line-height:1.5}.howto li{margin:5px 0}.example{--cell: 44px;display:grid;grid-template-columns:repeat(var(--n, 3),44px);gap:5px;justify-content:center;margin:12px 0 6px}.tile.mini{--size: 44px;--radius: 9px;width:44px;height:44px;cursor:default}.toast{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom) + 24px);transform:translate(-50%,20px);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:12px;font-size:.9rem;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:2000;max-width:calc(100vw - 32px);text-align:center}.toast.show{opacity:1;transform:translate(-50%)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}@media(max-height:680px){.game{--board-size: min( calc(100vw - 96px) , 320px, 38dvh)}.instructions{margin:4px 0 6px}}
