*,*:before,*:after{box-sizing:border-box}:root{--bg: #f4efe4;--surface: #fffdf9;--surface-2: #f9f4ea;--line: #e4d9c6;--line-strong: #d3c4aa;--ink: #1d1813;--muted: #6f6455;--board: #d9ae74;--board-line: #7a5c39;--stone-black: #17140f;--stone-white: #fbfaf6;--stone-ring: rgba(0, 0, 0, .18);--accent: #c0392b;--accent-2: #2d8b86;--danger: #c0392b;--btn-bg: #17140f;--btn-fg: #fdfaf4;--shadow: 0 1px 2px rgba(60, 44, 24, .06), 0 10px 28px -14px rgba(60, 44, 24, .3);--radius: 14px}@media (prefers-color-scheme: dark){:root{--bg: #14110d;--surface: #1e1a15;--surface-2: #252019;--line: #332c24;--line-strong: #4a4034;--ink: #f0e9dd;--muted: #a2957f;--board: #c69a63;--board-line: #5d452b;--stone-white: #f4f1ea;--stone-ring: rgba(255, 255, 255, .38);--accent: #e2634f;--accent-2: #48b3ad;--danger: #e2634f;--btn-bg: #ede4d4;--btn-fg: #17140f;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 12px 34px -16px rgba(0, 0, 0, .75)}}html{-webkit-text-size-adjust:100%}body{margin:0;min-height:100dvh;color:var(--ink);background:var(--bg);font:400 16px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}h1,h2,h3{font-family:Iowan Old Style,Palatino Linotype,Palatino,Georgia,serif;font-weight:600;letter-spacing:-.01em}a{color:var(--accent-2)}.app-main{max-width:960px;margin:0 auto;padding:16px 16px calc(24px + env(safe-area-inset-bottom))}.site-header{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;padding:14px 16px;border-bottom:1px solid var(--line);background:var(--surface)}.site-header .brand{text-decoration:none;color:inherit}.site-header .brand h1{margin:0;font-size:1.25rem}.site-nav{display:flex;gap:14px;flex-wrap:wrap}.site-nav a{color:var(--muted);text-decoration:none;font-weight:600;font-size:.92rem;padding:4px 2px;border-bottom:2px solid transparent}.site-nav a.active,.site-nav a[aria-current=page]{color:var(--ink);border-bottom-color:var(--accent)}.site-header__whoami{margin-left:auto;color:var(--muted);font-size:.9rem}.logged-out{max-width:480px;margin:0 auto;padding:40px 16px;text-align:center}.logged-out .brand h1{margin:0 0 24px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;margin-bottom:18px}section{margin-bottom:24px}section h2{font-size:1.05rem;margin:0 0 10px}.empty{color:var(--muted);font-size:.92rem}form label{display:block;margin-top:14px;font-size:.86rem;font-weight:600;color:var(--muted)}form label:first-of-type{margin-top:0}fieldset label{display:flex;align-items:center;gap:8px;font-weight:400;color:var(--ink);margin-top:8px}fieldset{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-top:14px}legend{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:0 4px}input[type=text],input[type=number],input[type=file],select,textarea{display:block;width:100%;margin-top:6px;padding:10px 12px;font:inherit;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:9px}textarea{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem}.hint{font-size:.84rem;color:var(--muted)}.btn,button{font:600 .95rem/1 inherit;cursor:pointer}button{padding:9px 16px;border:1px solid var(--line-strong);border-radius:9px;background:var(--surface-2);color:var(--ink)}button:disabled{opacity:.5;cursor:not-allowed}.btn{display:inline-block;margin-top:18px;padding:12px 20px;color:var(--btn-fg);background:var(--btn-bg);border:0;border-radius:10px}.btn--danger{color:var(--danger);border-color:var(--danger);background:transparent}.toast{padding:10px 14px;border-radius:9px;font-size:.9rem;margin-bottom:14px}.toast--error{background:var(--surface-2);border-left:3px solid var(--danger);color:var(--ink)}.game-list,.challenge-list,.review-list,.admin__player-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.game-list li,.challenge-list li,.review-list li,.admin__player-list li{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}.game-list--your-turn li{border-color:var(--accent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 30%,transparent)}.game-row__meta,.challenge-line__meta,.review-list__meta{color:var(--muted);font-size:.82rem}.admin__player-list li{justify-content:space-between}.goban{display:block;width:100%;max-width:560px;margin:0 auto;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.goban__background{fill:var(--board)}.goban__grid line{stroke:var(--board-line);stroke-width:1}.goban__hoshi circle{fill:var(--board-line)}.goban__coordinates text{fill:var(--board-line);font-size:11px;font-weight:600;opacity:.75;pointer-events:none}.goban__stone--b{fill:var(--stone-black)}.goban__stone--w{fill:var(--stone-white);stroke:var(--stone-ring);stroke-width:1}.goban__stone--dead{opacity:.42}.goban__dead-mark line{stroke:var(--accent);stroke-width:2}.goban__last-move{fill:none;stroke:var(--accent);stroke-width:2}.goban__ghost{opacity:.38}.goban__ghost--b{fill:var(--stone-black)}.goban__ghost--w{fill:var(--stone-white)}.clock{font-variant-numeric:tabular-nums;font-weight:700;white-space:nowrap}.clock--low{color:var(--danger)}.game-page__players{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}.player-panel{display:flex;align-items:center;flex-wrap:wrap;row-gap:4px;gap:10px;padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}.player-panel--to-move{border-color:var(--accent)}.stone-swatch{width:16px;height:16px;border-radius:50%;flex:none}.stone-swatch--b{background:var(--stone-black)}.stone-swatch--w{background:var(--stone-white);border:1px solid var(--stone-ring)}.player-panel__name{font-weight:600}.player-panel__captures{color:var(--muted);font-size:.82rem}.player-panel .clock{margin-left:auto}.game-page__actions,.game-page__scoring,.game-page__result,.game-page__links{margin-top:16px;display:flex;flex-direction:column;gap:8px}.game-page__result .result-banner{font-size:1.2rem;font-weight:700}.score-accept{list-style:none;margin:0;padding:0;color:var(--muted);font-size:.9rem}.review-viewer__controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px}.review-viewer__controls input[type=range]{flex:1;min-width:120px}.review-viewer__move-number{color:var(--muted);font-size:.85rem;font-variant-numeric:tabular-nums}.review-viewer__move-list{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px}.review-viewer__move-list button{font-size:.82rem;padding:5px 10px}.review-viewer__move-list button.is-current{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.admin__revealed-link code{display:block;margin:8px 0;padding:8px 10px;background:var(--surface-2);border-radius:8px;word-break:break-all;font-size:.85rem}.game-page{display:flex;flex-direction:column}.game-page__players{order:1}.goban{order:2}.game-page__actions,.game-page__scoring,.game-page__result{order:3}.game-page__links{order:4}.game-page__side{display:contents}@media (min-width: 760px){.game-page{flex-direction:row;align-items:flex-start;gap:24px}.goban{flex:1 1 auto;min-width:0}.game-page__side{display:flex;flex-direction:column;gap:16px;flex:0 0 280px;order:5}}
