@import"https://fonts.googleapis.com/css2?family=Fraunces:wght@400;600;700&family=IBM+Plex+Mono:wght@400;600;700&display=swap";:root{color-scheme:light;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--font-display: "Fraunces", "Georgia", serif;--font-mono: "IBM Plex Mono", "Courier New", monospace;--ink: #1b1b1b;--ink-muted: #4a3f35;--paper: #f7efe2;--paper-strong: #e9dac1;--panel: #fff9f0;--line: #d1bfa6;--accent: #1f6d6a;--accent-strong: #0f4d4a;--accent-soft: rgba(31, 109, 106, .16);--warn: #b4472d;--shadow: 0 16px 40px rgba(26, 18, 9, .18);--shadow-soft: 0 10px 22px rgba(26, 18, 9, .14)}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;color:var(--ink);font-family:var(--font-display);line-height:1.5;background:radial-gradient(1200px 600px at 12% 12%,rgba(255,230,186,.8),transparent 60%),radial-gradient(900px 500px at 90% 10%,rgba(255,255,255,.7),transparent 55%),linear-gradient(135deg,#f2e5d1,#efe1cd 45%,#e7d2b8)}a{font-weight:600;color:var(--accent);text-decoration:none}a:hover{color:var(--accent-strong)}button{border-radius:6px;border:1px solid var(--line);padding:.55rem 1.1rem;font-size:.95rem;font-weight:600;font-family:var(--font-mono);background-color:var(--paper);color:var(--ink);cursor:pointer;transition:transform .15s ease,box-shadow .2s ease,background .2s ease}button:hover{background-color:#fffdf8;box-shadow:var(--shadow-soft);transform:translateY(-1px)}button:focus-visible{outline:3px solid var(--accent-soft);outline-offset:2px}#root{margin:0;padding:0;width:100%;min-height:100vh}.app{min-height:100vh;display:flex;flex-direction:column;gap:12px}.app-header{width:100%;max-width:1200px;margin:0 auto;padding:6px 8px 0}.app-kicker{margin:0 0 6px;font-family:var(--font-mono);letter-spacing:.28em;text-transform:uppercase;font-size:.7rem;color:var(--ink-muted)}.app-title{margin:0;font-size:.95rem;letter-spacing:.01em}.app-subtitle{margin:8px 0 0;max-width:640px;color:var(--ink-muted);font-size:1rem}.play-area{width:100%;max-width:1200px;margin:1px auto;padding:6px 8px 8px;display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:8px;align-items:start}.board-column,.side-column{display:flex;flex-direction:column;gap:8px}.board-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.board-control-button{padding-inline:1rem}.board-shell{background:var(--paper);border:4px solid var(--line);border-radius:0;margin-inline:1px;padding:4px;box-shadow:var(--shadow)}.board{width:100%;background:#fdf8f1;border-radius:0;overflow:hidden}.board svg{display:block;width:100%;height:auto}.room-hit{fill:transparent;cursor:pointer;transition:fill .2s ease;pointer-events:all}.room-hit--reachable{fill:#2e957538}.room-hit--blocked{fill:#0000002e}.room-hit:hover{fill:#ffffff29}.room-distance-layer{pointer-events:none}.room-distance-box{fill:#ffe740}.room-distance-text{font-family:var(--font-mono);font-weight:700;font-size:16px;fill:#000;text-anchor:middle;dominant-baseline:middle;pointer-events:none}.action-overlay{pointer-events:none}.action-overlay-box{fill:#ffe740}.action-overlay-text{font-family:var(--font-mono);font-weight:700;font-size:18px;fill:#000;text-anchor:middle;dominant-baseline:middle;pointer-events:none}.winner-overlay{pointer-events:none}.winner-overlay-box{fill:#00000040}.winner-overlay-text{font-family:var(--font-mono);font-size:110px;font-weight:900;fill:#ffff00c2;stroke:#0006;stroke-width:4;paint-order:stroke;text-anchor:middle;dominant-baseline:middle}.piece{stroke:#ffffffe6;stroke-width:1.4;filter:drop-shadow(0 1px 2px rgba(0,0,0,.35))}.piece--flash-outline{fill:none;stroke:#ff0;stroke-width:20;stroke-linejoin:round;stroke-linecap:round;opacity:1;animation:piece-outline-blink .5s steps(1,end) infinite;pointer-events:none}.piece--locked{opacity:1;cursor:default}.piece--movable{cursor:pointer}.piece--selected{stroke:#96f;stroke-width:3;filter:drop-shadow(0 0 6px rgba(122,74,217,.65))}.piece--planned-ghost{stroke:#1f4f7a;stroke-width:4;filter:drop-shadow(0 0 4px rgba(43,108,176,.45))}.piece-label{font-family:var(--font-mono);font-weight:800;text-anchor:middle;dominant-baseline:middle;pointer-events:none}@keyframes piece-outline-blink{0%,49%{opacity:1}50%,to{opacity:0}}.planner-panel{background:var(--panel);border:1px solid var(--line);border-radius:0;padding:10px 12px;box-shadow:var(--shadow-soft)}.side-column>.planner-panel:first-child,.ai-panel{margin-inline:1px}.planner-header{display:flex;justify-content:space-between;align-items:start;gap:12px;margin-bottom:10px}.planner-header-actions{display:flex;align-items:center;gap:10px}.planner-help-icon-button{width:1.75rem;min-width:1.75rem;height:1.75rem;padding:0;cursor:help;border:1px solid #1f4aa8;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:.95rem;line-height:1;font-weight:700;background:#2f6fdf;color:#fff;box-shadow:0 2px 6px #18367247}.planner-help-icon-button:hover{cursor:help;background:#245ec6;border-color:#1a4698}.planner-help-icon-button:active{background:#1f53ac}.planner-help-icon-button:focus-visible{outline-color:#2f6fdf59}.planner-title{margin:0;font-size:1rem;padding:2px 8px;display:inline-block}.planner-info-button,.planner-reset-button{padding-inline:.9rem}.planner-line{display:flex;justify-content:space-between;gap:12px;margin:1px 0;padding:1px 0;border-bottom:1px dashed var(--line)}.planner-line:last-of-type{border-bottom:none}.planner-label{font-family:var(--font-mono);font-size:.82rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-muted)}.planner-label--small{font-size:.72rem}.planner-value{text-align:right;font-weight:600}.planner-value--preview{font-size:.8rem;line-height:1.12}.planner-preview-token--badge{display:inline-block;padding:0 4px}.planner-preview-token--win{background:#ffe740;color:#000}.planner-preview-sep{color:var(--ink-muted);margin:0 2px}.planner-actions{display:flex;gap:12px;margin-top:16px}.planner-actions--turn{flex-wrap:nowrap;gap:8px}.planner-actions--turn .planner-button{flex:1 1 0;min-width:0;padding:.42rem .52rem;font-size:.84rem}.ai-level-line{align-items:center}.ai-level-input{width:4.1rem;min-width:0;text-align:right;font-family:var(--font-mono)}.ai-max-time-select{width:5.4rem;min-width:5.4rem;font-family:var(--font-mono);text-align:right}.number-stepper{display:inline-flex;align-items:center;justify-content:flex-end;gap:4px}.number-stepper-button{width:1.95rem;min-width:1.95rem;min-height:1.95rem;padding:0;display:inline-flex;align-items:center;justify-content:center;font-size:.95rem;line-height:1}.number-stepper-input{text-align:right;appearance:textfield;-moz-appearance:textfield}.number-stepper-input::-webkit-outer-spin-button,.number-stepper-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ai-actions{flex-wrap:nowrap;gap:6px}.ai-actions--header{margin-top:0;margin-bottom:10px}.ai-actions .planner-button{flex:1 1 0;min-width:0;padding:.38rem .4rem;font-size:.78rem}.ai-note{margin:10px 0 0;font-family:var(--font-mono);font-size:.8rem;color:var(--ink-muted)}.player-stats-table{width:100%;border-collapse:collapse;table-layout:fixed;font-family:var(--font-mono);font-size:.78rem}.player-stats-panel,.player-stats-panel *{cursor:help}.player-stats-table th,.player-stats-table td{padding:3px 4px;text-align:right;font-variant-numeric:tabular-nums}.player-stats-table thead th{color:var(--ink-muted);font-weight:700;letter-spacing:.06em;border-bottom:1px dashed var(--line)}.player-stats-table thead th:first-child{text-align:left;width:2.3rem}.player-stats-table tbody tr+tr th,.player-stats-table tbody tr+tr td{border-top:4px solid var(--panel)}.player-stats-table tbody th{text-align:left;font-weight:700}.player-stats-cell--bold{font-weight:700}.player-stats-empty{margin:0;font-family:var(--font-mono);font-size:.8rem;color:var(--ink-muted)}.planner-button.is-active,.planner-button--primary{background:var(--accent);color:#fefbf5;border-color:var(--accent-strong)}.planner-button--primary:hover{background:var(--accent-strong)}.planner-button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none}.planner-error{margin:14px 0 0;padding:10px 12px;border-radius:0;background:#b4472d1a;color:var(--warn);font-weight:600}.planner-info{margin-top:16px;padding:12px;border-radius:0;background:#fffdf8;border:1px solid var(--line);font-size:.95rem;color:var(--ink-muted)}.planner-info h3{margin:0 0 8px;color:var(--ink)}.info-overlay{position:fixed;inset:0;background:#160f0873;display:grid;place-items:center;z-index:30;padding:24px;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;cursor:pointer}.info-popup{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);padding:18px 22px;max-width:520px;width:min(520px,100%);max-height:calc(100dvh - 48px);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;color:var(--ink);cursor:default}.info-popup h3{margin:0 0 8px;font-size:.95rem;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em}.info-popup p{margin:0 0 8px}.info-popup p:last-child{margin-bottom:0}.setup-popup{max-width:560px}body:has(.info-overlay){overflow:hidden}@media(max-height:560px){.info-overlay{padding:12px}.info-popup{max-height:calc(100dvh - 24px);padding:14px 16px}}.setup-popup-form{margin-top:12px;display:flex;flex-direction:column;gap:10px}.setup-popup-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px}.setup-popup-row span{font-family:var(--font-mono);font-size:.82rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted)}.setup-popup-row input{width:4.1rem;min-width:0}.setup-popup-error{margin:12px 0 0;color:var(--warn);font-weight:600}.setup-popup-actions{margin-top:14px;display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.planner-animations{margin-top:12px;display:flex;flex-direction:column;gap:8px}.planner-animations-title{margin:0;font-family:var(--font-mono);font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-muted)}.planner-animations-row{display:flex;align-items:center;gap:6px;flex-wrap:nowrap}.planner-animations-row .planner-button{padding:.4rem .7rem;font-size:.85rem}.planner-animations-speed{font-family:var(--font-mono);font-weight:700;font-size:.9rem;min-width:52px;text-align:center}.play-area-summary{grid-column:1 / -1}.game-summary{margin:0;padding:16px;background:#ffffffa6;border-radius:0;border:1px solid var(--line);font-family:var(--font-mono);font-size:.85rem;text-align:left;white-space:pre-wrap}.game-summary--history{margin-top:0}.play-area-error{padding:24px;color:var(--warn);font-weight:600}@media(max-width:980px){.play-area{grid-template-columns:1fr}.side-column{order:1}.play-area-summary{order:2}}
