:root{--bg:#f5f2eb;--fg:#242b27;--muted:#676e64;--panel:#fffdf8;--board:#dfba78;--wood-light:#f0d398;--wood-dark:#d9ae6b;--line:#534326;--border:#d6d8ca;--shadow:#34332218;--warning:#8b3c27;--accent:#306b52;--accent-fg:#fff;--btn:#e9ecdf;--btn-fg:#283a30}@media (prefers-color-scheme:dark){:root{--bg:#171d19;--fg:#eceee4;--muted:#a7afa3;--panel:#222a24;--board:#c7a46d;--wood-light:#d9bb84;--wood-dark:#bb945e;--line:#3d301e;--border:#485347;--shadow:#00000035;--warning:#f3b19b;--accent:#87c6a3;--accent-fg:#0f1a14;--btn:#303c32;--btn-fg:#e4e9dc}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--fg);-webkit-tap-highlight-color:transparent;font:16px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.app{height:100dvh;padding:env(safe-area-inset-top) 8px env(safe-area-inset-bottom);flex-direction:column;gap:8px;display:flex}.top-row{justify-content:flex-end;padding-top:6px;display:flex}.status{flex:none;padding:2px 8px}.status-main{overflow-wrap:anywhere;font-size:18px;font-weight:650;line-height:1.35}.status-message,.status-notice{color:var(--warning);overflow-wrap:anywhere;margin-top:5px;font-size:14px;line-height:1.45}.status-retry{margin-top:4px;display:flex}.status-sub{min-height:20px;font-size:14px}.muted{color:var(--muted)}.board-wrap{flex:3 1 0;min-height:0;max-height:calc(100vw - 16px);position:relative}.board{touch-action:manipulation;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;inset:0}.board-bg{fill:var(--board);stroke:#9d783e;stroke-width:5px;filter:drop-shadow(0 7px 7px var(--shadow))}.wood-light{stop-color:var(--wood-light)}.wood-dark{stop-color:var(--wood-dark)}.grid line{stroke:var(--line);stroke-width:2.2px}.coord{fill:var(--line);text-anchor:middle;dominant-baseline:middle;font-size:30px;font-weight:500}.hoshi{fill:var(--line)}.stone-b{fill:#111;stroke:#0b0d0e;stroke-width:1.8px}.stone-w{fill:#f7f7f2;stroke:#858071;stroke-width:1.8px}.stone-b,.stone-w{filter:drop-shadow(2px 3px 2px #0005)}.mark-on-b{fill:none;stroke:#fff;stroke-width:5px}.mark-on-w{fill:none;stroke:#111;stroke-width:5px}.territory-b{fill:#111;opacity:.6}.territory-w{fill:#fff;opacity:.8}.dead line{stroke:#d33;stroke-width:6px}.controls{flex-direction:column;gap:8px;display:flex}.controls-row{gap:8px;display:flex}.btn{background:var(--btn);min-width:44px;min-height:44px;color:var(--btn-fg);font:inherit;cursor:pointer;border:1px solid #0000;border-radius:12px;flex:1;padding:0 12px;font-size:15px;font-weight:500;transition:background .14s,box-shadow .14s}.btn:disabled{opacity:.48;cursor:not-allowed}.btn:enabled:hover{background:color-mix(in srgb, var(--btn) 88%, var(--fg));box-shadow:0 2px 5px var(--shadow)}.btn-accent:enabled:hover{background:color-mix(in srgb, var(--accent) 87%, var(--fg))}.btn:enabled:active{box-shadow:inset 0 1px 4px var(--shadow)}:where(button,textarea,a):focus-visible{outline:3px solid var(--accent);outline-offset:3px}.btn-mic{background:var(--accent);color:var(--accent-fg);min-height:52px;font-size:18px;font-weight:600}.btn-accent{background:var(--accent);color:var(--accent-fg);font-weight:600}.btn-inline,.app>.btn{flex:none}.btn-square{flex:0 0 44px;width:44px;padding:0;font-size:22px}.seg{background:var(--btn);border-radius:12px;gap:4px;padding:3px;display:flex}.seg-btn{background:0 0;min-width:44px}.seg-btn[aria-pressed=true]{background:var(--accent);color:var(--accent-fg);font-weight:600}.mode-switch{width:min(100%,220px)}.newgame{background:var(--panel);border:1px solid var(--border);border-radius:16px;flex-direction:column;gap:8px;padding:12px;display:flex}.rank-row{align-items:center;gap:8px;display:flex}.rank-value{text-align:center;flex:1;font-size:18px;font-weight:600}.transcript{overscroll-behavior:contain;background:var(--panel);border:1px solid var(--border);overflow-wrap:anywhere;border-radius:16px;flex:1 1 0;min-height:80px;padding:12px;overflow-y:auto}.app:has(.newgame) .transcript{min-height:0}.line{margin:0 0 6px}.line .who{color:var(--muted);font-weight:600}.line-me .who{color:var(--accent)}.line-partial{opacity:.6}.notice{color:var(--accent);margin:0 0 6px;font-weight:600}.chat-input{gap:8px;padding-bottom:4px;display:flex}.chat-field{border:1px solid var(--muted);background:var(--panel);min-width:0;min-height:44px;color:var(--fg);border-radius:10px;flex:1;padding:0 10px;font-size:16px}.app{width:100%;max-width:1280px;padding-top:max(8px, env(safe-area-inset-top));padding-bottom:max(8px, env(safe-area-inset-bottom));margin:0 auto;overflow:hidden}.app-header{justify-content:flex-end;align-items:center;gap:12px;min-height:48px;display:flex;position:relative}.app-header h1{letter-spacing:.02em;margin:0 auto 0 0;font-size:23px}.app-header>.btn{flex:none}.app-header .newgame{z-index:5;width:min(350px,100vw - 16px);max-height:calc(100dvh - 120px);box-shadow:0 12px 30px var(--shadow);position:absolute;top:48px;right:0;overflow-y:auto}.game-actions{flex:none;max-width:640px}.game-actions .btn{border-color:var(--border)}.mutation-busy{z-index:4;background:var(--panel);border-radius:8px;padding:6px 10px;position:absolute;top:60px;left:50%;transform:translate(-50%);box-shadow:0 5px 16px #0002}.main-grid{flex:1;grid-template-columns:minmax(0,1.08fr) minmax(320px,.92fr);gap:16px;min-height:0;display:grid}.board-column,.conversation{flex-direction:column;gap:8px;min-height:0;display:flex}.board-column .board-wrap{max-height:min(100dvh - 230px,660px)}.conversation{padding:2px 0 4px}.conversation .transcript{min-height:180px}.conversation-input-row{align-items:stretch;gap:8px;display:flex}.conversation-input-row .chat-input{flex:1;min-width:0;padding:0}.voice-button{white-space:nowrap;flex:none}.voice-button-on{background:var(--accent);color:var(--accent-fg)}.chat-field{resize:none;padding:10px;line-height:1.35}.playback-error{color:var(--warning);justify-content:space-between;align-items:center;gap:8px;display:flex}.voice-orb{--level:0;--orb-a:#d5d9e2;--orb-b:#4e5665;--orb-glow:#aab2c1;color:inherit;cursor:pointer;font:inherit;background:0 0;border:0;flex:none;align-content:center;justify-items:center;gap:7px;padding:0;display:grid;position:relative}.voice-orb-visual{aspect-ratio:1;isolation:isolate;border-radius:50%;place-items:center;width:clamp(78px,11vw,112px);transition:transform .36s cubic-bezier(.22,1,.36,1),filter .36s;display:grid;position:relative;overflow:visible}.voice-orb-visual:before,.voice-orb-visual:after{content:"";pointer-events:none;border-radius:50%;position:absolute}.voice-orb-visual:before{z-index:-2;background:radial-gradient(circle, color-mix(in srgb, var(--orb-glow) 58%, transparent), transparent 70%);filter:blur(16px);opacity:calc(.22 + var(--level) * .24);transform:scale(calc(1 + var(--level) * .18));transition:transform .12s linear,opacity .36s,background .46s;animation:4.6s ease-in-out infinite orb-halo-breathe;inset:-18%}.voice-orb-visual:after{z-index:-1;background:radial-gradient(circle, transparent 53%, color-mix(in srgb, var(--orb-glow) 16%, transparent) 66%, transparent 76%);filter:blur(4px);opacity:.62;transform:scale(calc(1 + var(--level) * .11));transition:transform .12s linear,opacity .46s,background .46s;inset:-5%}.voice-orb-fallback{z-index:1;background:radial-gradient(circle at 33% 27%, var(--orb-a), var(--orb-b) 68%, color-mix(in srgb, var(--orb-b) 72%, #000));box-shadow:0 0 calc(14px + var(--level) * 22px) color-mix(in srgb, var(--orb-glow) 65%, transparent);opacity:0;transform:scale(calc(1 + var(--level) * .08));border-radius:50%;transition:opacity .36s,transform .12s linear,background .46s,box-shadow .12s linear;position:absolute;inset:13%}.voice-orb-fallback-visible{opacity:.95}.voice-orb-canvas{z-index:2;pointer-events:none;clip-path:circle(50%);background:0 0;border-radius:50%;width:100%;height:100%;display:block;position:absolute;inset:0;overflow:visible}.voice-orb-listening{--orb-a:#a9f3d1;--orb-b:#176e5b;--orb-glow:#38d8a6}.voice-orb-thinking{--orb-a:#d1c5ff;--orb-b:#4b338b;--orb-glow:#8e6cff}.voice-orb-tool{--orb-a:#ffe3a0;--orb-b:#94541b;--orb-glow:#f0a43d}.voice-orb-speaking{--orb-a:#ffe3ad;--orb-b:#91372b;--orb-glow:#ff8159}.voice-orb-muted{--orb-a:#c9d0dc;--orb-b:#343c4c;--orb-glow:#7d8799}.voice-orb-connecting{--orb-a:#d6dbe4;--orb-b:#4b5361;--orb-glow:#9ca7b7}.voice-orb-error{--orb-a:#ffd0c9;--orb-b:#8a302a;--orb-glow:#ed6b5e}.voice-orb-label{z-index:3;color:var(--muted);font-size:14px;position:relative}.voice-orb:focus-visible{outline:none}.voice-orb:focus-visible .voice-orb-visual{outline:2px solid var(--accent);outline-offset:6px}.voice-orb:hover .voice-orb-visual{transform:translateY(-1px)scale(1.025)}.voice-orb:active .voice-orb-visual{transform:scale(.96)}@keyframes orb-halo-breathe{50%{transform:scale(calc(1.05 + var(--level) * .2));opacity:calc(.28 + var(--level) * .25)}}@media (prefers-reduced-motion:reduce){.voice-orb-visual,.voice-orb-visual:before,.voice-orb-visual:after,.voice-orb-fallback{transition:none;animation:none}}.move-history ol{grid-template-columns:repeat(2,minmax(0,1fr));gap:3px 12px;max-height:150px;margin:4px 0 0;padding:0;list-style:none;display:grid;overflow-y:auto}.move-history li{border-radius:6px;align-items:center;gap:7px;padding:3px 5px;display:flex}.move-last{background:color-mix(in srgb, var(--accent) 14%, transparent);font-weight:600}.move-stone{border:1px solid #777;border-radius:50%;flex:0 0 14px;width:14px;height:14px}.move-B{background:#111}.move-W{background:#fafaf6}.diagnostic-note{margin:3px 0 8px;font-size:13px}.recording-active{align-items:center;gap:8px;display:flex}.recording-dot{background:#bc2d25;border-radius:50%;width:10px;height:10px;animation:1.2s ease-in-out infinite record-pulse}@keyframes record-pulse{50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.recording-dot{animation:none}}.recording-result p{margin:4px 0 8px}.download-row{gap:6px;margin-bottom:8px;display:flex}.link-btn{justify-content:center;align-items:center;text-decoration:none;display:inline-flex}@media (width<=720px){.app{gap:5px;height:100dvh;min-height:0;overflow:hidden}.app-header{min-height:44px}.game-actions{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;display:grid}.game-actions .btn{padding:0 4px;font-size:13px}.main-grid{flex-direction:column;flex:1;gap:4px;display:flex}.board-column{flex:1;gap:3px;min-height:100px}.board-column .board-wrap{flex:1;min-height:0;max-height:calc(100vw - 16px)}.conversation{flex:none;gap:4px;min-height:0}.conversation .transcript{flex:1;min-height:0;max-height:none}.chat-collapsed .transcript{display:none}.chat-expanded .conversation{flex:1;min-height:170px}.voice-orb{flex-basis:auto}.voice-orb-visual{width:72px}.voice-orb-label{font-size:12px}.status-main{font-size:15px}.status-message,.status-notice{font-size:13px}.status-sub{min-height:16px;font-size:12px}}.board{touch-action:none}.board-preview{opacity:.65;pointer-events:none}.board-preview-label{z-index:2;white-space:nowrap;background:var(--panel);pointer-events:none;border-radius:20px;padding:5px 10px;font-size:13px;position:absolute;top:0;left:50%;transform:translate(-50%);box-shadow:0 3px 12px #0002}.chat-input{border:1px solid var(--border);background:var(--panel);box-shadow:0 2px 8px var(--shadow);border-radius:28px;flex:none;align-items:center;padding:5px}.chat-field{background:0 0;border:0;border-radius:20px;max-height:90px}.chat-input .btn{border-radius:50%;place-items:center;display:grid}.chat-toggle{min-height:44px;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:10px;flex:0 0 44px;justify-content:space-between;align-items:center;padding:2px 10px;display:flex}.chat-toggle:hover{background:color-mix(in srgb, var(--btn) 60%, transparent)}.voice-orb{flex-direction:row;justify-content:center;align-items:center;gap:12px;display:flex}.line{margin-bottom:12px;line-height:1.5}.line-me{background:color-mix(in srgb,var(--accent) 8%,var(--panel));border-radius:14px;margin-left:24px;padding:8px 10px}.line-goko{padding:2px 4px}.utility-menu{flex:none}.utility-trigger{align-items:center;gap:5px;display:flex}.utility-panel{z-index:8;overscroll-behavior:contain;border:1px solid var(--border);background:var(--panel);width:min(420px,100vw - 24px);max-height:calc(100dvh - 150px);box-shadow:0 10px 40px var(--shadow);border-radius:16px;padding:12px;position:fixed;bottom:80px;right:max(12px,50vw - 640px);overflow:auto}.utility-panel-heading{color:var(--muted);justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;font-size:14px;display:flex}.utility-panel-heading .btn{background:0 0}@media (width<=720px){.app-header{gap:5px}.app-header h1{margin-right:auto;font-size:20px}.app-header .btn{padding:0 8px;font-size:13px}.app-header .btn-square{font-size:24px}}@media (prefers-reduced-motion:reduce){.btn{transition:none}}
