:root{--bg: #e9e3d3;--ink: #2a4750;--soft: rgba(42,71,80,.55);--line: rgba(42,71,80,.16);--card: #f4f0e4;--accent: #4f8a95;--serif: "Fraunces", Georgia, serif;--sans: "Nunito", system-ui, -apple-system, "Segoe UI", sans-serif;color-scheme:light}:root[data-theme=night]{--bg: #14242b;--ink: #d9e7e5;--soft: rgba(217,231,229,.55);--line: rgba(217,231,229,.16);--card: #1b3039;--accent: #7fb8bd;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%}body{background-color:var(--bg);color:var(--ink);font-family:var(--sans);transition:background-color .4s,color .4s;-webkit-user-select:none;user-select:none;overflow:hidden}#root{height:100%}.app{max-width:560px;height:100dvh;margin:0 auto;padding:max(12px,env(safe-area-inset-top)) 14px max(10px,env(safe-area-inset-bottom));display:flex;flex-direction:column}header{display:flex;align-items:flex-end;justify-content:space-between;padding:4px 4px 12px}h1{font-family:var(--serif);font-weight:600;font-size:25px;margin:0;letter-spacing:-.01em;line-height:1}.sub{margin-top:5px;font-size:13px;font-weight:700;color:var(--soft);font-variant-numeric:tabular-nums}.sub b{color:var(--ink);font-weight:800}.hbtns{display:flex;gap:2px}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}button:focus-visible,#board:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.ic{width:40px;height:40px;display:grid;place-items:center;border-radius:12px;transition:background .15s,opacity .15s}.ic:hover:not(:disabled){background:var(--line)}.ic:active:not(:disabled){transform:scale(.94)}.ic:disabled{opacity:.3;cursor:default}.ic svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center}.board-wrap{width:min(100%,540px);aspect-ratio:1;max-height:100%}#board{width:100%;height:100%;display:block;touch-action:none;cursor:pointer;border-radius:6px}.dock{padding-top:6px;min-height:124px;display:flex;flex-direction:column;justify-content:flex-end;gap:4px}.sizes{display:flex;justify-content:center;gap:4px}.sizes button{padding:7px 14px;border-radius:99px;font-weight:800;font-size:14px;color:var(--soft);transition:.15s;font-variant-numeric:tabular-nums}.sizes button:hover{color:var(--ink)}.sizes button[aria-checked=true]{color:var(--ink);background:var(--line)}.tools{display:flex;justify-content:space-around;align-items:center;border-top:1px solid var(--line);padding-top:6px}.tools .ic{width:20%;max-width:76px;height:46px}.tools .ic svg{width:24px;height:24px}.win{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding:14px 6px 6px;animation:rise .5s ease both}.win h2{font-family:var(--serif);font-weight:600;font-size:24px;margin:0}.win p{margin:3px 0 0;font-size:13.5px;font-weight:700;color:var(--soft);font-variant-numeric:tabular-nums}.win button{background:var(--ink);color:var(--bg);font-weight:800;padding:12px 22px;border-radius:12px;font-size:15px}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5;display:grid;place-items:center;padding:22px;background:#0a141873;animation:fade .25s ease both}@keyframes fade{0%{opacity:0}to{opacity:1}}.card{width:min(100%,380px);background:var(--card);border-radius:18px;padding:22px 22px 18px;border:1px solid var(--line)}.card h2{font-family:var(--serif);font-weight:600;font-size:24px;margin:0 0 12px}.card ul{margin:0 0 16px;padding:0;list-style:none;display:grid;gap:11px;font-size:14.5px;line-height:1.45;font-weight:600}.card li{padding-left:18px;position:relative}.card li:before{content:"";position:absolute;left:2px;top:.55em;width:7px;height:7px;border-radius:50%;background:var(--accent)}.card button{width:100%;background:var(--ink);color:var(--bg);font-weight:800;padding:12px;border-radius:12px;font-size:15px}@media(max-height:620px){h1{font-size:21px}header{padding-bottom:6px}.dock{min-height:108px}}@media(prefers-reduced-motion:reduce){.win,.overlay{animation:none}body{transition:none}}
