:root{--bg: #f6efe6;--surface: #fffaf4;--text: #2b1d14;--muted: #5e4a3c;--accent: #8a4b1f;--accent-hover: #6f3a14;--on-accent: #ffffff;--border: #d8c6b2;--focus: #1a56b8;--error: #a3221a;--board-bg: #3b2a20;--radius: 10px;color-scheme:light}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-text-size-adjust:100%}body{overflow-x:hidden}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.app{width:100%;max-width:1000px;margin:0 auto;padding:max(12px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));display:flex;flex-direction:column;gap:12px}.app__header h1{margin:0;font-size:clamp(1.25rem,5vw,1.75rem);text-align:center}.controls{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;justify-content:center}.field{display:inline-flex;align-items:center;gap:6px;font-weight:600}select,.btn{font:inherit;min-height:44px;border-radius:var(--radius)}select{padding:0 10px;background:var(--surface);color:var(--text);border:2px solid var(--border)}.btn{padding:0 18px;border:2px solid var(--accent);background:var(--accent);color:var(--on-accent);font-weight:600;cursor:pointer}.btn:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.side{display:flex;flex-direction:column;gap:12px;min-width:0}@media(min-width:860px){.app{display:grid;grid-template-columns:minmax(0,1fr) 300px;grid-template-areas:"header header" "play side";align-items:start;gap:16px 24px}.app__header{grid-area:header}.play{grid-area:play}.side{grid-area:side}.controls{justify-content:flex-start}.board-wrap{width:min(100%,640px,82dvh)}}.switch{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 4px;border:0;background:none;color:var(--text);font:inherit;font-weight:600;cursor:pointer;border-radius:var(--radius)}.switch__track{position:relative;width:44px;height:26px;border-radius:13px;background:#8c7a6b;transition:background .15s}.switch__thumb{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .15s}.switch[aria-checked=true] .switch__track{background:var(--accent)}.switch[aria-checked=true] .switch__thumb{transform:translate(18px)}.reference{margin:0 auto;width:clamp(96px,32vw,180px);text-align:center}.reference img,.reference__placeholder{display:block;width:100%;height:auto;aspect-ratio:1;border-radius:6px;border:2px solid var(--board-bg);background:var(--border)}.reference figcaption{margin-top:4px;font-size:.8rem;color:var(--muted)}.stats{margin:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;width:min(100%,600px);align-self:center}@media(min-width:860px){.stats,.reference{width:100%}}.stat{padding:6px 4px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);text-align:center}.stat dt{font-size:.75rem;color:var(--muted)}.stat dd{margin:0;font-size:1.25rem;font-weight:700;font-variant-numeric:tabular-nums}.play{display:flex;flex-direction:column;align-items:center;gap:12px}.board-wrap{width:min(100%,600px,68dvh);aspect-ratio:1;display:grid;place-items:center}.board-message{margin:0;padding:16px;text-align:center;color:var(--muted)}.board-message--error{color:var(--error);font-weight:600;border:2px solid var(--error);border-radius:var(--radius);background:var(--surface)}.board{--gap: 2px;--move-ms: .15s;position:relative;width:100%;aspect-ratio:1;background:var(--board-bg);border:var(--gap) solid var(--board-bg);border-radius:6px;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none}.tile{--tile: calc((100% - (var(--n) - 1) * var(--gap)) / var(--n));position:absolute;top:0;left:0;width:var(--tile);height:var(--tile);padding:0;border:0;border-radius:2px;background-color:var(--board-bg);background-repeat:no-repeat;background-size:calc(var(--n) * 100%) calc(var(--n) * 100%);transform:translate(calc(var(--col) * (100% + var(--gap))),calc(var(--row) * (100% + var(--gap))));transition:transform var(--move-ms) ease-out;cursor:default;-webkit-tap-highlight-color:transparent}.tile--movable{cursor:pointer}.tile:focus-visible{outline:3px solid #fff;outline-offset:-3px;box-shadow:inset 0 0 0 6px var(--focus);z-index:1}.tile--empty{opacity:0}.board--solved{--gap: 0px;--move-ms: .4s}.board--solved .tile{border-radius:0;transition:transform var(--move-ms) ease,width var(--move-ms) ease,height var(--move-ms) ease,opacity .6s ease .15s}.board--solved .tile--empty{opacity:1}.board__full{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;opacity:0;pointer-events:none}.board--solved .board__full{opacity:1;transition:opacity .4s ease .7s}@media(prefers-reduced-motion:reduce){.tile,.board--solved .tile,.board--solved .board__full{transition:none}}.victory{width:min(100%,600px);padding:16px;border-radius:var(--radius);background:var(--surface);border:2px solid var(--accent);text-align:center;animation:pop .3s ease-out}.victory h2{margin:0 0 8px;font-size:1.25rem}.victory__summary{margin:0 0 12px;font-size:1.05rem;font-variant-numeric:tabular-nums}.victory__record{display:block;margin-top:4px;color:var(--accent);font-weight:700}@keyframes pop{0%{transform:scale(.95);opacity:0}}.hint{margin:0;text-align:center;color:var(--muted);font-size:.9rem}
