:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--background:#121212;--surface:#1e1e1e;--surface-sunken:#181818;--surface-raised:#262626;--outline:#2e2e2e;--text-primary:#fff;--text-secondary:#8e8e93;--text-tertiary:#6b6b70;--accent:#ff5722;--on-accent:#14100e;--accent-muted:#3a1b0e;--accent-pressed:#e64a19;--success:#00e676;--error:#ff5252;--focus-ring:#ff57228c;--scrim:#00000080;--player-1:#ff5252;--player-2:#ffb300;--player-3:#00e676;--player-4:#29b6f6;--player-5:#b388ff;--player-6:#ff80ab;--on-player:#14100e;--radius-card:16px;--radius-control:12px;--radius-pill:999px;--font:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, "Cascadia Mono", Consolas, "Liberation Mono", monospace;--text-title-xl:700 28px/1.2 var(--font);--text-title-lg:650 18px/1.3 var(--font);--text-title-md:600 16px/1.4 var(--font);--text-body:400 16px/1.5 var(--font);--text-meta:500 14px/1.4 var(--font);--text-subtle-size:13px;--text-eyebrow:500 13px/1.3 var(--font);--text-room-code:700 72px/1 var(--font-mono);--gap-tight:6px;--gap-row:12px;--gap-block:16px;--gap-section:28px;--page-padding:32px;--page-top:28px;--page-max:1200px;--column-side:380px;--hit-min:44px;--btn-pad-x:18px;--input-pad-x:14px;--banner-pad-y:12px;--hairline-width:1px;--focus-width:3px;--focus-offset:2px;--swatch:14px;--dot:10px}@media (prefers-color-scheme:light){:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--background:#f4f4f1;--surface:#fff;--surface-sunken:#edede8;--surface-raised:#ebebe6;--outline:#ddddd6;--text-primary:#1a1a1a;--text-secondary:#5c5c61;--text-tertiary:#8a8a90;--accent:#c63d0f;--on-accent:#fff;--accent-muted:#fbe3d9;--accent-pressed:#a33209;--success:#17793a;--error:#b3261e;--focus-ring:#c63d0f73;--player-1:#d32f2f;--player-2:#b26a00;--player-3:#1b7f3b;--player-4:#0277bd;--player-5:#6a3fd0;--player-6:#c2185b;--on-player:#fff}}:root{--tile-free:#2a2a2c;--tile-shared:#1e88e5;--on-tile-shared:#fff;--tile-hidden:#3a3a3d;--warn:#ffb300;--compact-h:32px;--tile-ring:4px;--tile-ring-double:3px;--label-width:150px;--side-width:340px;--game-max:1440px;--game-padding:16px;--game-min-h:600px;--menu-width:190px;--progress-h:10px;--status-h:36px;--tile-font:600 12px/1.2 var(--font-mono);--badge-font:700 11px/1 var(--font);--dump-width:760px;--toast-width:360px;--sm12-scroll:220px;--log-scroll:180px}@media (prefers-color-scheme:light){:root{--tile-free:#e4e4de;--tile-shared:#1565c0;--tile-hidden:#d2d2cb;--warn:#b26a00}}:root{--black:#000;--on-black:#fff;--flash:#ffffff8c;--notice-width:360px;--fx-card-width:520px;--confetti-w:10px;--confetti-h:16px}html,body{min-height:100%}*{box-sizing:border-box}body{background:var(--background);color:var(--text-primary);font:var(--text-body);margin:0}:focus-visible{outline:var(--focus-width) solid var(--focus-ring);outline-offset:var(--focus-offset)}button,input,select{font:inherit;color:inherit}h1,h2,h3,p{margin:0}.page{max-width:var(--page-max);padding:var(--page-top) var(--page-padding) var(--gap-section);gap:var(--gap-section);flex-direction:column;margin:0 auto;display:flex}.page-narrow{max-width:calc(var(--page-max) / 3);margin-top:var(--gap-section)}.topbar{justify-content:space-between;align-items:center;gap:var(--gap-block);display:flex}.brand{font:var(--text-title-xl)}.stack{gap:var(--gap-row);flex-direction:column;display:flex}.row{align-items:center;gap:var(--gap-row);display:flex}.row-wrap{flex-wrap:wrap}.grow{flex:1}.columns{grid-template-columns:var(--column-side) 1fr;gap:var(--gap-section);align-items:start;display:grid}.card{background:var(--surface);border-radius:var(--radius-card);padding:var(--gap-block);gap:var(--gap-row);flex-direction:column;display:flex}.card-title{font:var(--text-title-lg)}.btn{justify-content:center;align-items:center;gap:var(--gap-tight);min-height:var(--hit-min);padding:0 var(--btn-pad-x);border-radius:var(--radius-control);background:var(--surface-raised);font:var(--text-title-md);cursor:pointer;white-space:nowrap;border:none;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-primary:not(:disabled):hover{background:var(--accent-pressed)}.btn-ghost{color:var(--text-secondary);background:0 0}.btn-ghost:not(:disabled):hover{color:var(--text-primary);background:var(--surface-raised)}.input{width:100%;min-height:var(--hit-min);padding:0 var(--input-pad-x);border:var(--hairline-width) solid var(--outline);border-radius:var(--radius-control);background:var(--background);color:var(--text-primary);font:var(--text-body)}.input::placeholder{color:var(--text-tertiary)}.input:focus{border-color:var(--accent);outline:none}.input-code{font:var(--text-title-lg);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.2em;text-align:center}.muted{color:var(--text-secondary)}.subtle{font-size:var(--text-subtle-size);color:var(--text-tertiary)}.eyebrow{font:var(--text-eyebrow);color:var(--text-secondary)}.error-text{color:var(--error)}.banner{border-radius:var(--radius-control);padding:var(--banner-pad-y) var(--gap-block);font:var(--text-meta);background:var(--surface-raised);color:var(--text-primary);justify-content:space-between;align-items:center;gap:var(--gap-block);display:flex}.banner-error{background:var(--accent-muted)}.notice-full{justify-content:center;align-items:center;gap:var(--gap-block);text-align:center;flex-direction:column;min-height:100vh;display:flex}.table{border-collapse:collapse;width:100%;font:var(--text-meta)}.table th{text-align:left;font:var(--text-eyebrow);color:var(--text-secondary);padding:var(--gap-tight) var(--gap-row);border-bottom:var(--hairline-width) solid var(--outline)}.table td{padding:var(--gap-tight) var(--gap-row);border-bottom:var(--hairline-width) solid var(--outline)}.table .num{text-align:right}.game-list{gap:var(--gap-row);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.game-list li{gap:var(--gap-tight);padding-bottom:var(--gap-row);border-bottom:var(--hairline-width) solid var(--outline);flex-direction:column;display:flex}.credits{font-family:var(--font-mono);font-size:var(--text-subtle-size);color:var(--text-secondary);gap:var(--gap-tight);flex-direction:column;display:flex}.credits-title{color:var(--text-primary);font-weight:700}.room-code{font:var(--text-room-code);letter-spacing:.15em;color:var(--accent)}.player-list{gap:var(--gap-tight);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.player-item{align-items:center;gap:var(--gap-row);padding:var(--gap-tight) var(--gap-row);border-radius:var(--radius-control);background:var(--surface-raised);display:flex}.swatch{width:var(--swatch);height:var(--swatch);border-radius:var(--radius-pill);background:var(--player-color,var(--text-tertiary));flex-shrink:0}.class-grid{gap:var(--gap-row);grid-template-columns:repeat(2,1fr);display:grid}.class-card{align-items:flex-start;gap:var(--gap-tight);text-align:left;padding:var(--gap-block);border:var(--hairline-width) solid var(--outline);border-radius:var(--radius-control);background:var(--surface-raised);cursor:pointer;flex-direction:column;display:flex}.class-card:hover{border-color:var(--text-tertiary)}.class-card[aria-pressed=true]{border-color:var(--accent);background:var(--accent-muted)}.class-name{font:var(--text-title-md)}.class-detail{font:var(--text-meta);color:var(--text-secondary)}.choice{align-items:center;gap:var(--gap-row);min-height:var(--hit-min);cursor:pointer;display:flex}.choice input{accent-color:var(--accent)}.status-dot{width:var(--dot);height:var(--dot);border-radius:var(--radius-pill);background:var(--success)}.status-dot-off{background:var(--text-tertiary)}.game{max-width:var(--game-max);height:100vh;min-height:var(--game-min-h);padding:var(--game-padding) var(--game-padding) 0;gap:var(--gap-row);flex-direction:column;margin:0 auto;display:flex;overflow:hidden}.game-head{align-items:center;gap:var(--gap-block);flex-wrap:wrap;display:flex}.game-ok{align-items:center;gap:var(--gap-tight);display:flex}.okcode-input{font-family:var(--font-mono);width:var(--label-width)}.game-title{font:var(--text-title-md);flex:1}.game-timer,.game-points{font:var(--text-title-lg);font-family:var(--font-mono)}.game-wp{font:var(--text-title-md);color:var(--accent)}.sm02{border-radius:var(--radius-control);padding:var(--banner-pad-y) var(--gap-block);background:var(--warn);color:var(--on-accent);font:var(--text-title-md)}.game-main{grid-template-columns:1fr var(--side-width);gap:var(--gap-block);flex:1;align-items:stretch;min-height:0;display:grid}.btn-compact{min-height:var(--compact-h);padding:0 var(--gap-row);font:var(--text-meta)}.game-head .btn,.game-head .input{min-height:var(--compact-h)}.board{gap:var(--gap-tight);grid-template-rows:repeat(6,minmax(0,1fr));min-width:0;min-height:0;display:grid}.board-row{grid-template-columns:var(--label-width) repeat(6, minmax(0, 1fr));gap:var(--gap-tight);align-items:stretch;display:grid}.board-label{flex-direction:column;justify-content:center;min-width:0;display:flex}.board-table{font:var(--text-title-md);font-family:var(--font-mono);overflow-wrap:anywhere}.board-sub{font:var(--text-meta);color:var(--text-secondary)}.tile-slot{min-width:0;display:flex;position:relative}.tile{--tile-color:var(--text-tertiary);min-width:0;min-height:0;padding:var(--tile-ring);border-radius:var(--radius-control);background:var(--outline);cursor:pointer;text-align:left;border:none;flex:1}.tile:disabled{cursor:default}.tile-body{justify-content:space-between;gap:var(--gap-tight);height:100%;min-height:0;padding:var(--gap-tight);border-radius:calc(var(--radius-control) - var(--tile-ring));background:var(--tile-free);color:var(--text-primary);flex-direction:column;display:flex;position:relative;overflow:hidden}.tile-key{font:var(--tile-font);overflow-wrap:anywhere}.tile-holder{align-items:center;gap:var(--gap-tight);min-width:0;display:flex}.tile-badge{font:var(--badge-font);padding:var(--gap-tight);border-radius:var(--radius-pill);background:var(--tile-color);color:var(--on-player)}.tile-name{font:var(--badge-font);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tile-queue{right:var(--gap-tight);bottom:var(--gap-tight);font:var(--badge-font);padding:var(--gap-tight);border-radius:var(--radius-pill);background:var(--accent);color:var(--on-accent);position:absolute}.tile-mark{top:var(--gap-tight);right:var(--gap-tight);font:var(--text-title-md);color:var(--text-secondary);position:absolute}.tile-commit{font:var(--badge-font);color:var(--warn)}.tile.free .tile-body{background:var(--tile-free)}.tile.hidden .tile-body{background:var(--tile-hidden)}.tile.shared{background:conic-gradient(var(--tile-shared) calc(var(--ring) * 1turn), var(--outline) 0)}.tile.shared .tile-body{background:var(--tile-free);box-shadow:inset 0 0 0 var(--hairline-width) var(--tile-shared)}.tile.shared .tile-badge{background:var(--tile-shared);color:var(--on-tile-shared)}.tile.exclusive,.tile.xclusive,.tile.optimistic{background:conic-gradient(var(--tile-color) calc(var(--ring) * 1turn), var(--outline) 0)}.tile.exclusive .tile-body,.tile.xclusive .tile-body{background:var(--surface-raised);box-shadow:inset 0 0 0 var(--hairline-width) var(--tile-color)}.tile.xclusive .tile-body{box-shadow:inset 0 0 0 var(--tile-ring-double) var(--surface-raised), inset 0 0 0 calc(var(--tile-ring-double) * 2) var(--tile-color)}.tile.optimistic .tile-body{background:var(--tile-free);border:var(--hairline-width) dashed var(--tile-color)}.tile.mine .tile-name{font-weight:800}.tile.committing .tile-body{outline:var(--hairline-width) solid var(--warn)}.tile.targeted:not(:disabled):hover{outline:var(--focus-width) solid var(--warn)}.tile-menu{z-index:20;width:var(--menu-width);gap:var(--gap-tight);padding:var(--gap-row);border-radius:var(--radius-control);background:var(--surface);border:var(--hairline-width) solid var(--outline);flex-direction:column;display:flex;position:absolute;top:100%;left:0}.tile-menu-modes{gap:var(--gap-tight);grid-template-columns:repeat(4,1fr);display:grid}.tile-menu-modes .btn{padding:0}.menu-backdrop{z-index:10;position:fixed;inset:0}.side{gap:var(--gap-row);flex-direction:column;min-width:0;min-height:0;display:flex;overflow-y:auto}.side-card{padding:var(--gap-row)}.side-scroll{overflow-y:auto}.sm12-scroll{max-height:var(--sm12-scroll)}.log-scroll{max-height:var(--log-scroll)}.sm12-table th,.sm12-table td{padding:var(--gap-tight)}.log-list{gap:var(--gap-tight);font:var(--text-meta);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.player-item.targetable,.task-card.targetable{cursor:pointer;outline:var(--focus-width) solid var(--warn)}.player-hand{display:block}.player-points{font-family:var(--font-mono)}.hand{grid-template-columns:1fr var(--side-width);gap:var(--gap-block);align-items:start;display:grid}.hand-tasks{grid-template-columns:repeat(auto-fit, minmax(var(--label-width), 1fr));gap:var(--gap-tight);display:grid}.task-card{gap:var(--gap-tight);padding:var(--gap-row);border-radius:var(--radius-card);background:var(--surface);border:var(--hairline-width) solid var(--outline);flex-direction:column;display:flex}.task-card.ready{border-color:var(--success)}.task-card.in-commit{border-color:var(--warn)}.task-head{justify-content:space-between;gap:var(--gap-row);font:var(--text-title-md);display:flex}.task-points{color:var(--accent);white-space:nowrap}.task-locks{gap:var(--gap-tight);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.task-lock{align-items:center;gap:var(--gap-tight);padding:var(--gap-tight) var(--gap-row);border-radius:var(--radius-control);background:var(--surface-raised);font:var(--text-meta);cursor:pointer;text-align:left;border:none;display:flex}.task-lock:disabled{cursor:default}.task-lock.held .task-lock-state{color:var(--success)}.task-lock.missing .task-lock-state{color:var(--error)}.task-lock-mode{font-weight:700}.task-lock-tile{font-family:var(--font-mono);overflow-wrap:anywhere}.task-actions{gap:var(--gap-tight);display:flex}.hand-side{gap:var(--gap-tight);flex-direction:column;display:flex}.hand-wait{align-items:center;gap:var(--gap-row);font:var(--text-meta);flex-wrap:wrap;display:flex}.choice-compact{min-height:var(--compact-h)}.hand-waiting{align-items:center;gap:var(--gap-tight);color:var(--warn);display:flex}.tile-wait{font:var(--badge-font);color:var(--warn)}.tile.waiting .tile-body{outline:var(--focus-width) dashed var(--warn);outline-offset:calc(var(--tile-ring) * -1)}.hand-cards{align-items:center;gap:var(--gap-tight);flex-wrap:wrap;display:flex}.btn.armed{background:var(--warn);color:var(--on-accent)}.hand-hint{justify-content:space-between;align-items:center;gap:var(--gap-row);font:var(--text-meta);color:var(--warn);display:flex}.statusbar-wrap{margin:0 calc(var(--game-padding) * -1);background:var(--surface);border-top:var(--hairline-width) solid var(--outline)}.statusbar{align-items:center;gap:var(--gap-row);min-height:var(--status-h);padding:0 var(--game-padding);font:var(--text-meta);display:flex}.ampel{width:var(--dot);height:var(--dot);border-radius:var(--radius-pill);background:var(--text-tertiary)}.ampel-ok{background:var(--success)}.ampel-warn{background:var(--warn)}.ampel-error{background:var(--error)}.batch-progress{align-items:center;gap:var(--gap-row);padding:0 var(--game-padding);font:var(--text-meta);display:flex}.batch-track{height:var(--progress-h);border-radius:var(--radius-pill);background:var(--surface-raised);flex:1;overflow:hidden}.batch-fill{background:var(--accent);height:100%;display:block}.batch-planned{color:var(--warn)}.toasts{right:var(--game-padding);bottom:calc(var(--status-h) * 2);width:var(--toast-width);gap:var(--gap-tight);z-index:30;flex-direction:column;display:flex;position:fixed}.toast{background:var(--surface-raised)}.dump-overlay{z-index:100;background:var(--background);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dump-page{width:var(--dump-width);max-width:100%;padding:var(--gap-section);gap:var(--gap-row);font-family:var(--font-mono);flex-direction:column;display:flex}.dump-title{color:var(--error)}.dump-name{font:var(--text-title-md);font-family:var(--font-mono)}.dump-headline{color:var(--text-secondary)}.dump-section{font:var(--text-title-md);font-family:var(--font-mono);border-bottom:var(--hairline-width) solid var(--outline)}.dump-source{padding:var(--gap-row);background:var(--surface-sunken);font:var(--text-meta);font-family:var(--font-mono);white-space:pre-wrap;margin:0}.dump-marked{background:var(--error);color:var(--on-accent);display:block}.result-swatch{display:inline-block}.fx{pointer-events:none;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.fx-text{font:var(--text-title-xl)}.fx-card{max-width:var(--fx-card-width);padding:var(--gap-section);border-radius:var(--radius-card);background:var(--surface-raised);border:var(--focus-width) solid var(--warn);font:var(--text-title-lg);text-align:center}.fx-title{margin:0 0 var(--gap-block)}.fx-buttons{justify-content:center;gap:var(--gap-row);display:flex}.fx-flicker{z-index:90;background:var(--flash);color:var(--background);animation:.12s step-end infinite fx-flicker}@keyframes fx-flicker{0%{opacity:1}50%{opacity:.15}}.fx-standstill{z-index:80;background:var(--scrim)}.fx-standstill .fx-card{border-color:var(--error)}.fx-mail{z-index:85;background:var(--scrim)}.fx-mail .fx-card{border-color:var(--error)}.fx-end{z-index:110;background:var(--scrim);pointer-events:auto}.fx-black{z-index:120;background:var(--black);color:var(--on-black);pointer-events:auto}.fx-confetti{z-index:70;align-items:flex-start;overflow:hidden}.fx-confetti .fx-card{margin-top:var(--gap-section);z-index:1;position:relative}.confetti-piece{top:-5%;left:calc(var(--i) * 3.3%);width:var(--confetti-w);height:var(--confetti-h);background:var(--player-1);animation:confetti-fall calc(1.6s + var(--i) * 40ms) linear calc(var(--i) * 30ms) forwards;position:absolute}.confetti-piece:nth-child(6n+2){background:var(--player-2)}.confetti-piece:nth-child(6n+3){background:var(--player-3)}.confetti-piece:nth-child(6n+4){background:var(--player-4)}.confetti-piece:nth-child(6n+5){background:var(--player-5)}.confetti-piece:nth-child(6n+6){background:var(--player-6)}@keyframes confetti-fall{to{transform:translateY(110vh)rotate(720deg)}}.egg-notices{left:var(--game-padding);bottom:calc(var(--status-h) * 2);width:var(--notice-width);gap:var(--gap-tight);z-index:30;flex-direction:column;display:flex;position:fixed}.egg-notice{background:var(--surface-raised)}.game.wobble .board{animation:3s ease-in-out board-wobble}@keyframes board-wobble{0%,to{transform:rotate(0)}10%,50%,90%{transform:rotate(-.8deg)}30%,70%{transform:rotate(.8deg)}}.cup{margin-left:var(--gap-tight);display:inline-block;position:relative}.steam{color:var(--text-secondary);font-size:.8em;animation:1.6s ease-in-out infinite steam-rise;position:absolute;top:-.9em;left:.2em}@keyframes steam-rise{0%{opacity:0;transform:translateY(.4em)}50%{opacity:1}to{opacity:0;transform:translateY(-.5em)}}.name-revision{color:var(--error);font-weight:700}.test-tag{font:var(--text-meta);color:var(--warn)}.dump-culprit{font:var(--text-title-md);font-family:var(--font-mono);color:var(--warn)}.statusbar-mute{margin-left:auto}
