:root{--bg: #f4f1ea;--surface: #ffffff;--text: #1f2a36;--muted: #6b7380;--border: #d9d3c7;--accent: #e8483f;--accent-text: #ffffff;--exit: #f6c945;--lot: #3a4250;--lot-cell: #444d5c;--lot-line: rgba(255, 255, 255, .07);--lane: rgba(246, 201, 69, .1);--curb: #c9c2b4;--focus: #2b7bd9;color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.45;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}@media(prefers-color-scheme:dark){:root{--bg: #161513;--surface: #1f1d1a;--text: #ece7dc;--muted: #9b9488;--border: #3a3631;--accent: #ff5a4f;--accent-text: #161513;--exit: #f2c230;--lot: #2a2926;--lot-cell: #32302d;--lot-line: rgba(255, 255, 255, .05);--curb: #47443e;--focus: #6aa8ff}}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;min-height:100dvh;background:var(--bg)}button{font:inherit}.app{width:100%;max-width:512px;margin:0 auto;padding:16px;display:flex;flex-direction:column;gap:14px}.header{display:flex;align-items:center;justify-content:space-between;gap:12px}.brand h1{margin:0;font-size:1.75rem;line-height:1.1;letter-spacing:-.02em;font-weight:800}.brand h1:after{content:"";display:inline-block;width:.32em;height:.32em;margin-left:.12em;border-radius:50%;background:var(--accent)}.brand time{color:var(--muted);font-size:.875rem}.stats{margin:0;display:flex;flex-direction:column;align-items:flex-end;line-height:1.1;font-variant-numeric:tabular-nums}.stat-moves{font-size:1.75rem;font-weight:800;letter-spacing:-.02em}.stat-moves small{margin-left:.25em;font-size:.875rem;font-weight:500;letter-spacing:0;color:var(--muted)}.stat-par{font-size:.875rem;color:var(--muted)}.board-frame{--pad: clamp(8px, 2.6vw, 14px);position:relative;flex-shrink:0;width:100%;padding:var(--pad);border-radius:16px;background:var(--curb)}.board-area{position:relative;width:100%;aspect-ratio:1;display:grid;grid-template-columns:repeat(var(--size),1fr);grid-template-rows:repeat(var(--size),1fr);border-radius:8px;overflow:hidden;background:var(--lot);touch-action:none;user-select:none;-webkit-user-select:none}.cell{border:1px solid var(--lot-line);background:var(--lot-cell);background-clip:padding-box;margin:1px;border-radius:4px}.exit-lane{position:absolute;left:0;right:0;top:calc(100% * var(--exit-row) / var(--size));height:calc(100% / var(--size));background:repeating-linear-gradient(90deg,transparent 0 14px,var(--lane) 14px 28px);pointer-events:none;z-index:1}.exit-marker{--flank: clamp(5px, 1.6vw, 8px);position:absolute;right:0;width:calc(var(--pad) + 2px);top:calc(var(--pad) + (100% - 2 * var(--pad)) * var(--exit-row) / var(--size));height:calc((100% - 2 * var(--pad)) / var(--size));background:linear-gradient(var(--lane),var(--lane)),var(--lot);box-shadow:0 calc(-1 * var(--flank)) 0 0 var(--exit),0 var(--flank) 0 0 var(--exit)}.exit-marker.open{animation:exit-blink .8s steps(1) 2}@keyframes exit-blink{50%{box-shadow:0 calc(-1 * var(--flank)) 0 0 transparent,0 var(--flank) 0 0 transparent}}.vehicle{position:absolute;top:0;left:0;z-index:2;cursor:grab;outline:none;transition:transform .16s cubic-bezier(.2,.8,.2,1);touch-action:none}.vehicle .body{position:absolute;overflow:hidden;border-radius:clamp(5px,2vw,10px);background:var(--c);box-shadow:inset 0 -3px #0000002e,inset 0 2px #ffffff40,0 2px 4px #0000004d}.vehicle.h .body{inset:8% calc(8% / var(--len))}.vehicle.v .body{inset:calc(8% / var(--len)) 8%}.vehicle.dragging{transition:none;cursor:grabbing;z-index:3}.vehicle.dragging .body{box-shadow:inset 0 -3px #0000002e,inset 0 2px #ffffff40,0 6px 14px #0006}.vehicle.selected .body,.vehicle:focus-visible .body{outline:3px solid var(--focus);outline-offset:2px}.vehicle[aria-disabled=true]{cursor:default}.vehicle.target{--c: var(--accent)}.vehicle.target .body:after{content:"";position:absolute;left:38%;right:38%;top:22%;bottom:22%;border-radius:3px;background:#ffffffd9}.vehicle.exiting{transition:transform .65s cubic-bezier(.55,0,.75,.2) .18s,opacity .3s ease .6s;opacity:0}.glass{position:absolute;background:#141c268c;border-radius:3px}.h .glass{top:16%;bottom:16%;width:13%}.h .glass.front{right:14%}.h .glass.rear{left:14%}.v .glass{left:16%;right:16%;height:13%}.v .glass.front{top:14%}.v .glass.rear{bottom:14%}.truck .body{background:repeating-linear-gradient(var(--rib-dir),rgba(255,255,255,.13) 0 3px,transparent 3px 10px),var(--c)}.truck.h{--rib-dir: 90deg}.truck.v{--rib-dir: 180deg}.truck .glass.rear{display:none}.truck .body:before{content:"";position:absolute;background:#0000002e}.truck.h .body:before{top:0;bottom:0;right:0;width:27%;border-left:2px solid rgba(0,0,0,.25)}.truck.v .body:before{left:0;right:0;top:0;height:27%;border-bottom:2px solid rgba(0,0,0,.25)}.truck.h .glass.front{right:7%;width:7%}.truck.v .glass.front{top:7%;height:7%}.controls{display:flex;gap:8px;justify-content:center}.controls button,.win button,.banner button{min-width:88px;min-height:40px;padding:8px 16px;border-radius:3px;border:1.5px solid var(--text);background:transparent;color:var(--text);font-weight:600;cursor:pointer}.controls button:hover:not(:disabled),.win button:hover,.banner button:hover{background:var(--text);color:var(--bg)}button:focus-visible{outline:3px solid var(--focus);outline-offset:2px}button:disabled{opacity:.35;cursor:default}button.primary,button.primary:hover{background:var(--text);border-color:var(--text);color:var(--bg)}.hint,.loading{margin:0;color:var(--muted);font-size:.925rem}.accent{color:var(--accent)}.sample-note{margin:0;font-size:.75rem;color:var(--muted);opacity:.85}.win{padding-top:14px;border-top:2px solid var(--text);display:flex;flex-direction:column;align-items:flex-start;gap:8px;animation:fade-in .24s ease .65s both}.win p{margin:0}.win-verdict{font-size:1.5rem;font-weight:800;letter-spacing:-.02em}.win-next{color:var(--muted);font-size:.8rem}.share-fallback{width:100%;display:flex;flex-direction:column;gap:4px;font-size:.8rem;color:var(--muted)}.share-fallback textarea{width:100%;resize:none;font:inherit;font-size:.9rem;padding:8px;border-radius:3px;border:1.5px solid var(--border);background:var(--bg);color:var(--text)}@keyframes fade-in{0%{opacity:0}}@media(prefers-reduced-motion:reduce){.vehicle,.vehicle.exiting,.exit-marker.open,.win{transition:none;animation:none}}.message{margin:24px 0 0;font-size:1.05rem;font-weight:600}.banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 0 12px;border-bottom:2px solid var(--text);font-weight:600}.header-side{display:flex;align-items:center;gap:14px}.icon-button{width:40px;height:40px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;padding:0;border-radius:3px;border:1.5px solid var(--text);background:transparent;color:var(--text);cursor:pointer}.icon-button:hover{background:var(--text);color:var(--bg)}.win-streak{color:var(--muted);font-size:.875rem;font-weight:600}.win-actions{display:flex;gap:8px;flex-wrap:wrap}.stats-dialog{width:min(420px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:0;border:2px solid var(--text);border-radius:3px;background:var(--bg);color:var(--text)}.stats-dialog::backdrop{background:#0a0a088c}.stats-dialog[open]{animation:fade-in .16s ease both}.stats-body{padding:16px;display:flex;flex-direction:column;gap:20px}.stats-head{display:flex;align-items:center;justify-content:space-between}.stats-head .icon-button{width:36px;height:36px;border-color:transparent}.stats-body h2{margin:0;font-size:1.5rem;font-weight:800;letter-spacing:-.02em}.stats-body h3{margin:0 0 10px;padding-bottom:6px;border-bottom:2px solid var(--text);font-size:.875rem;font-weight:700}.stats-empty,.stats-note,.dist-note{margin:0;color:var(--muted);font-size:.875rem}.stats-note{font-size:.75rem}.dist-note{margin-top:10px}.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.tile{display:flex;flex-direction:column;line-height:1.1}.tile-value{font-size:1.75rem;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.tile-label{font-size:.875rem;color:var(--muted)}.dist-rows{display:flex;flex-direction:column;gap:6px}.dist-row{display:grid;grid-template-columns:6.5em 1fr;align-items:center;gap:8px;font-size:.875rem}.dist-label{color:var(--muted);white-space:nowrap}.dist-track{display:flex;align-items:center;gap:6px;min-width:0}.dist-bar{height:14px;max-width:calc(100% - 3ch);border-radius:0 2px 2px 0;background:var(--text)}.dist-count{font-weight:700;font-variant-numeric:tabular-nums}.recent ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:4px;font-size:.875rem;font-variant-numeric:tabular-nums}.recent li{display:flex;justify-content:space-between;gap:12px}.recent time,.recent-par{color:var(--muted)}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media(prefers-reduced-motion:reduce){.stats-dialog[open]{animation:none}}
