:root{color-scheme:light;background:var(--c-background);--ink: var(--c-primary);--line: color-mix(in srgb, var(--c-primary) 22%, transparent)}*{box-sizing:border-box}html,body{background:var(--c-background)}body{margin:0;min-height:100dvh;color:var(--c-text);font-family:var(--font-body);background-image:radial-gradient(color-mix(in srgb,var(--c-primary) 7%,transparent) 1px,transparent 1.4px);background-size:18px 18px;-webkit-tap-highlight-color:transparent}#app{max-width:1060px;margin:0 auto;padding:max(18px,env(safe-area-inset-top)) 18px 40px}.top{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px}h1{font-family:var(--font-display);font-size:2rem;font-weight:700;color:var(--ink);margin:0;letter-spacing:-.01em}h2{font-family:var(--font-display);color:var(--ink);margin:0;font-size:1.25rem}.sub{margin:4px 0 0;font-size:.9rem;opacity:.7}.badge{flex:none;padding:6px 12px;border-radius:999px;font-weight:700;font-size:.88rem;color:#7a4a06;background:color-mix(in srgb,var(--c-accent) 26%,var(--c-surface));border:1px solid color-mix(in srgb,var(--c-accent) 50%,transparent)}.play{display:grid;gap:22px}@media(min-width:860px){.play{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:start}}.stage{display:grid;gap:10px;width:100%;max-width:520px;margin:0 auto}.side{display:grid;gap:16px;width:100%;max-width:520px;margin:0 auto;align-content:start}.board{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));gap:1px;background:var(--line);border:3px solid var(--ink);border-radius:10px;overflow:hidden;box-shadow:0 1px #ffffffb3 inset,0 14px 36px color-mix(in srgb,var(--c-primary) 18%,transparent)}.cell{position:relative;aspect-ratio:1;padding:0;border:0;cursor:pointer;display:grid;place-items:center;font:inherit;color:var(--ink);transition:filter .12s}.cell.bt{box-shadow:inset 0 3px 0 var(--ink)}.cell.bl{box-shadow:inset 3px 0 0 var(--ink)}.cell.bt.bl{box-shadow:inset 0 3px 0 var(--ink),inset 3px 0 0 var(--ink)}.cell:hover:not(:disabled){filter:brightness(.95)}.cell:focus-visible{outline:3px solid var(--c-accent);outline-offset:-3px;z-index:1}.cell:disabled{cursor:default}.cell svg{width:68%;height:68%;fill:var(--ink);filter:drop-shadow(0 1px 0 rgba(255,255,255,.6))}.cell.star svg{animation:drop .18s ease-out}.cell.bad svg{fill:#c2381f}.cell .pip{width:18%;height:18%;border-radius:50%;background:color-mix(in srgb,var(--ink) 55%,transparent)}.cell.flash{animation:blink .9s ease-in-out 3}.board.solved .cell svg{fill:var(--c-accent);filter:drop-shadow(0 0 3px rgba(122,74,6,.45))}@keyframes drop{0%{transform:scale(.4);opacity:0}}@keyframes blink{50%{filter:brightness(1.25) saturate(.4);box-shadow:inset 0 0 0 4px var(--c-accent)}}.status{display:flex;justify-content:space-between;gap:10px;font-weight:600;font-variant-numeric:tabular-nums}.clock{color:var(--ink)}.left{opacity:.75}.warn{color:#c2381f}.toast{min-height:1.4em;margin:0;color:var(--ink);font-size:.92rem;text-align:center}button{font:inherit;color:inherit}.controls{display:grid;gap:12px;padding:16px;border-radius:16px;background:var(--c-surface);border:1px solid var(--line)}.modes{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;border-radius:12px;background:color-mix(in srgb,var(--c-primary) 8%,transparent)}.modes button{min-height:44px;border:0;border-radius:9px;background:transparent;cursor:pointer;font-weight:700}.modes button.on{background:var(--ink);color:var(--c-surface)}.switch{display:flex;align-items:center;gap:10px;font-size:.92rem;cursor:pointer}.switch input{width:20px;height:20px;accent-color:var(--ink);margin:0}.actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.actions button,.ghost,.primary{min-height:46px;border-radius:12px;cursor:pointer;font-weight:600;padding:8px 10px}.actions button{border:1px solid var(--line);background:var(--c-background)}.actions button:disabled{opacity:.4;cursor:default}.actions .accent{background:var(--c-accent);border-color:transparent;color:#2a1a02}.primary{border:0;background:var(--ink);color:var(--c-surface);font-size:1.02rem;width:100%}.ghost{border:1px solid var(--line);background:var(--c-surface);width:100%}.back{text-align:left}.result{display:grid;gap:6px;text-align:center;padding:20px;border-radius:16px;background:var(--c-surface);border:2px solid var(--ink)}.result p{margin:0}.trophy{color:var(--c-accent);letter-spacing:3px;font-size:1.2rem}.result .primary{margin-top:10px}.muted{opacity:.7;font-size:.9rem;line-height:1.5}.rules{padding:12px 16px;border-radius:16px;background:var(--c-surface);border:1px solid var(--line)}.rules summary{cursor:pointer;font-weight:700;color:var(--ink)}.rules ol{margin:10px 0 2px;padding-left:1.3em;display:grid;gap:4px;line-height:1.5}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0}.stat{padding:10px 6px;border-radius:14px;text-align:center;background:var(--c-surface);border:1px solid var(--line)}.stat dt{font-size:.78rem;opacity:.7}.stat dd{margin:2px 0 0;font-family:var(--font-display);font-size:1.45rem;font-weight:700;color:var(--ink)}.archive{display:grid;gap:8px}.archive .muted{margin:0}.archive ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}.day{width:100%;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;border:1px solid var(--line);background:var(--c-surface);cursor:pointer;text-align:left}.day .no{font-family:var(--font-display);font-weight:700;color:var(--ink)}.day .when{font-size:.9rem;overflow-wrap:anywhere}.day .state{font-size:.82rem;opacity:.7;font-variant-numeric:tabular-nums}.day.done .state{opacity:1;color:#2f6b2a;font-weight:700}.day.here{border:2px solid var(--ink)}
