@layer reset,tokens,base,components,app,utilities;@layer tokens{:root{--space-1: 2px;--space-2: 4px;--space-3: 6px;--space-4: 8px;--space-5: 10px;--space-6: 12px;--space-7: 16px;--space-8: 20px;--space-9: 24px;--space-10: 32px;--text-2xs: 10px;--text-xs: 11px;--text-sm: 12px;--text-md: 13px;--text-lg: 15px;--text-xl: 17px;--text-2xl: 28px;--text-3xl: 40px;--text-4xl: 56px;--icon-sm: 15px;--icon-md: 18px;--icon-lg: 20px;--weight-normal: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--leading-tight: 1.1;--leading-snug: 1.45;--leading-normal: 1.5;--tracking-tight: -.01em;--tracking-wide: .04em;--tracking-wider: .08em;--tracking-widest: .14em;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-pill: 999px;--radius-circle: 50%;--tap: 44px;--control-sm: 38px;--control-xs: 30px;--control-lg: 54px;--duration-instant: .12s;--duration-fast: .16s;--duration-slow: .7s;--duration-turn: .5s;--duration-turn-flash: .9s;--duration-pulse: 1.8s;--ease-out: ease-out;--ease-land: cubic-bezier(.2, 1.4, .4, 1);--ease-land-strong: cubic-bezier(.2, 1.5, .4, 1);--snap-back: .22s;--z-modal: 10;--z-drag: 60;color-scheme:light;--bg: #e9e2d7;--panel: #f6f2ec;--panel-2: #e3dacc;--line: #cdc0ad;--text: #241d18;--muted: #6b5e54;--primary: #0b57d0;--ink-on-primary: #ffffff;--primary-strong: #083f9c;--primary-press: #06317a;--player-0: #d0490c;--player-1: #0d7ea8;--board-tint-0: #d0490c14;--board-tint-1: #0d7ea814;--room-0: #e7d6c7;--room-1: #d8dad3;--board-flash-0: #d0490c73;--board-flash-1: #0d7ea873;--cell-turn-0: color-mix(in srgb, var(--player-0) 7%, var(--cell-base));--cell-turn-1: color-mix(in srgb, var(--player-1) 7%, var(--cell-base));--cell-hover-turn-0: color-mix(in srgb, var(--player-0) 7%, var(--cell-hover-base));--cell-hover-turn-1: color-mix(in srgb, var(--player-1) 7%, var(--cell-hover-base));--both: #6f4bc0;--ink-on-player: #ffffff;--tile: #ffffff;--tile-stroke: #dfdfdf;--cell-base: #d8cdbb;--cell-hover-base: #cec2ad;--cell: var(--cell-base);--cell-hover: var(--cell-hover-base);--cell-stroke: #c3b6a1;--channel: #7d7d7d;--channel-in-hand: #949494;--win: #c98a00;--aim: #241d18;--danger: #c62f34;--ink-on-danger: #ffffff;--danger-strong: #a8262b;--danger-press: #8f2024;--accent-wash: #0b57d014;--accent-wash-press: #0b57d029;--good: #1c6e3e;--bad: #b03236;--good-bg: #dcefe2;--good-ink: #14562f;--bad-bg: #f7dedf;--bad-ink: #8f2226;--error-ink: #a52a2f;--overlay: #3a302acc;--raise: #00000012;--raise-line: #00000024;--shadow: #3a302a33;--shadow-strong: #3a302a59;--lift-rim: #0000;--chrome-max: 640px;--surface-bg: var(--panel);--surface-sunken-bg: var(--panel-2);--surface-radius: var(--radius-lg);--modal-border: 1px solid var(--line);--rim-glow-0: color-mix(in srgb, var(--player-0) 20%, transparent);--rim-glow-1: color-mix(in srgb, var(--player-1) 20%, transparent);--rim-glow-core: 3px;--rim-glow-halo: 10px;--rim-surge-halo: 18px;--btn-radius: var(--radius-md);--btn-radius-round: var(--radius-circle);--btn-padding-x: var(--space-9);--btn-padding-x-wide: var(--space-10);--btn-gap: var(--space-3);--btn-weight: var(--weight-semibold);--btn-bg: var(--panel-2);--btn-border-color: var(--line);--btn-ink: var(--text);--btn-primary-bg: var(--primary);--btn-primary-bg-hover: var(--primary-strong);--btn-primary-bg-active: var(--primary-press);--btn-danger-bg: var(--danger);--btn-danger-bg-hover: var(--danger-strong);--btn-danger-bg-active: var(--danger-press);--btn-accent-ink: var(--primary);--btn-accent-ink-hover: var(--primary-strong);--btn-accent-ink-active: var(--primary-press);--btn-accent-bg-hover: var(--accent-wash);--btn-accent-bg-active: var(--accent-wash-press);--btn-secondary-bg: transparent;--btn-quiet-ink: var(--muted);--btn-quiet-ink-hover: var(--text);--btn-quiet-bg-hover: var(--panel-2);--btn-quiet-bg-active: var(--raise-line);--btn-bg-floating: color-mix(in srgb, var(--panel-2) 85%, transparent);--btn-primary-bg-floating: color-mix(in srgb, var(--primary) 85%, transparent);--btn-primary-bg-floating-hover: color-mix(in srgb, var(--primary-strong) 85%, transparent);--btn-primary-bg-floating-active: color-mix(in srgb, var(--primary-press) 85%, transparent);--btn-off-bg: var(--panel-2);--btn-off-border-color: var(--line);--btn-off-ink: var(--muted);--btn-off-bg-floating: transparent;--scores-ink-waiting: #5f5349;--field-bg: var(--panel-2);--field-radius: var(--radius-lg);--field-border-color: #d9cfbe;--field-border: 1px solid var(--field-border-color);--field-min-height: var(--control-lg);--field-padding-y: var(--space-6);--field-padding-x: var(--space-7);--field-gap: var(--space-4);--field-label-size: var(--text-lg);--field-label-ink: var(--text);--field-label-weight: var(--weight-semibold);--field-text: 18px;--focus-ring-width: 2px;--focus-ring-color: var(--primary);--focus-ring-offset: 1px;--modal-radius: var(--radius-xl);--modal-padding: var(--space-7);--modal-width: 460px;--switch-width: var(--tap);--switch-height: var(--space-9);--switch-knob: var(--space-8);--switch-off-bg: var(--panel-2);--switch-on-bg: var(--primary);--switch-knob-bg: var(--muted);--switch-knob-on-bg: var(--ink-on-primary);--badge-radius: var(--radius-pill);--badge-padding-y: var(--space-1);--badge-padding-x: var(--space-3);--backdrop-fade: radial-gradient( ellipse 62% 52% at 50% 50%, #00000000 0%, #00000000 42%, #00000047 74%, #00000070 100% );--mono: ui-monospace, SFMono-Regular, Menlo, monospace;--font: "Google Sans Flex", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif}:root[data-theme=dark]{color-scheme:dark;--bg: #14100e;--panel: #1e1815;--panel-2: #2a221e;--line: #3a302a;--text: #f0e9e3;--muted: #a2938a;--scores-ink-waiting: #a2938a;--field-border-color: #443a33;--primary: #2ad4ff;--ink-on-primary: #06121e;--primary-strong: #7de5ff;--primary-press: #b3efff;--player-0: #ff6a2b;--player-1: #2ad4ff;--board-tint-0: #ff6a2b14;--board-tint-1: #2ad4ff14;--room-0: #261710;--room-1: #161f21;--board-flash-0: #ff6a2b59;--board-flash-1: #2ad4ff59;--cell-turn-0: color-mix(in srgb, var(--player-0) 7%, var(--cell-base));--cell-turn-1: color-mix(in srgb, var(--player-1) 7%, var(--cell-base));--cell-hover-turn-0: color-mix(in srgb, var(--player-0) 7%, var(--cell-hover-base));--cell-hover-turn-1: color-mix(in srgb, var(--player-1) 7%, var(--cell-hover-base));--both: #9d7cd8;--ink-on-player: #06121e;--tile: #2f2823;--tile-stroke: #4b3f36;--cell-base: #171310;--cell-hover-base: #241d18;--cell: var(--cell-base);--cell-hover: var(--cell-hover-base);--cell-stroke: #3d322b;--channel: #8a7a6e;--channel-in-hand: #a3907f;--win: #ffe066;--aim: #f0e9e3;--danger: #e5484d;--ink-on-danger: #06121e;--danger-strong: #ec6165;--danger-press: #f07f82;--accent-wash: #2ad4ff14;--accent-wash-press: #2ad4ff29;--good: #63d68b;--bad: #ff8f8f;--good-bg: #17301f;--good-ink: #9be8b4;--bad-bg: #3a1f24;--bad-ink: #ffb4b4;--error-ink: #ff9a9a;--overlay: #000000dd;--raise: #ffffff14;--raise-line: #ffffff2e;--shadow: #00000059;--shadow-strong: #0000008c;--lift-rim: #ffffff59;--backdrop-fade: radial-gradient( ellipse 62% 52% at 50% 50%, #00000000 0%, #00000000 42%, #00000038 74%, #00000059 100% )}}@layer reset{*{box-sizing:border-box}button,input,select,textarea{font:inherit}}@layer base{html,body{margin:0;height:100%;overflow:hidden;overscroll-behavior:none;background:var(--bg);color:var(--text);font:var(--text-lg) / var(--leading-normal) var(--font);-webkit-tap-highlight-color:transparent}button{cursor:pointer;touch-action:manipulation}:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:var(--focus-ring-offset)}}@layer components{.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--btn-gap);position:relative;--btn-height: var(--tap);min-height:var(--btn-height);padding:var(--space-4) var(--btn-padding-x);border-radius:var(--btn-radius);border:1px solid var(--btn-border-color);background:var(--btn-bg);color:var(--btn-ink);font-weight:var(--btn-weight);transition:background-color var(--duration-instant) var(--ease-out),border-color var(--duration-instant) var(--ease-out),color var(--duration-instant) var(--ease-out)}.btn--primary{background:var(--btn-primary-bg);border-color:var(--btn-primary-bg);color:var(--ink-on-primary)}.btn--secondary{background:var(--btn-secondary-bg);border-color:var(--btn-accent-ink);color:var(--btn-accent-ink)}.btn--tertiary{background:transparent;border-color:transparent;color:var(--btn-accent-ink)}.btn--danger{background:var(--btn-danger-bg);border-color:var(--btn-danger-bg);color:var(--ink-on-danger)}.btn--quiet{background:transparent;border-color:transparent;color:var(--btn-quiet-ink)}@media(hover:hover){.btn--primary:hover:not(:disabled){background:var(--btn-primary-bg-hover);border-color:var(--btn-primary-bg-hover)}.btn--danger:hover:not(:disabled){background:var(--btn-danger-bg-hover);border-color:var(--btn-danger-bg-hover)}.btn--secondary:hover:not(:disabled){background:var(--btn-accent-bg-hover);border-color:var(--btn-accent-ink-hover);color:var(--btn-accent-ink-hover)}.btn--tertiary:hover:not(:disabled){background:var(--btn-accent-bg-hover);color:var(--btn-accent-ink-hover)}.btn--quiet:hover:not(:disabled){background:var(--btn-quiet-bg-hover);color:var(--btn-quiet-ink-hover)}}.btn--primary:active:not(:disabled){background:var(--btn-primary-bg-active);border-color:var(--btn-primary-bg-active)}.btn--danger:active:not(:disabled){background:var(--btn-danger-bg-active);border-color:var(--btn-danger-bg-active)}.btn--secondary:active:not(:disabled){background:var(--btn-accent-bg-active);border-color:var(--btn-accent-ink-active);color:var(--btn-accent-ink-active)}.btn--tertiary:active:not(:disabled){background:var(--btn-accent-bg-active);color:var(--btn-accent-ink-active)}.btn--quiet:active:not(:disabled){background:var(--btn-quiet-bg-active);color:var(--btn-quiet-ink-hover)}.btn--lg{--btn-height: var(--control-lg);font-size:var(--text-xl)}.btn--sm{--btn-height: var(--control-sm);padding:var(--space-3) var(--space-5)}.btn--xs{--btn-height: var(--control-xs);padding:var(--space-2) var(--space-5);font-size:var(--text-sm)}.btn--icon{aspect-ratio:1;padding-inline:0;font-size:var(--icon-lg);line-height:1;flex:none;min-width:var(--btn-height)}.btn--sm.btn--icon,.btn--xs.btn--icon{font-size:var(--icon-sm)}.btn--round{border-radius:var(--btn-radius-round);width:var(--btn-height);height:var(--btn-height);padding:0}@media(prefers-reduced-motion:no-preference){.btn--primary.btn--calling:not(:disabled){animation:btn-calling var(--duration-pulse) var(--ease-out) infinite}.btn--primary.btn--calling:hover,.btn--primary.btn--calling:active{animation:none}@keyframes btn-calling{0%,to{background-color:var(--btn-primary-bg);border-color:var(--btn-primary-bg)}50%{background-color:var(--btn-primary-bg-hover);border-color:var(--btn-primary-bg-hover)}}}.btn--block{width:100%}.btn--wide{padding-inline:var(--btn-padding-x-wide)}.btn:disabled{cursor:default;color:var(--btn-off-ink)}.btn--primary:disabled,.btn--danger:disabled{background:var(--btn-off-bg);border-color:var(--btn-off-border-color)}.btn--secondary:disabled{background:transparent;border-color:var(--btn-off-border-color)}.btn--tertiary:disabled,.btn--quiet:disabled{background:transparent;border-color:transparent}.btn__count{position:absolute;right:var(--space-2);bottom:var(--space-1);font-size:var(--text-2xs);line-height:1;color:var(--muted)}.surface{background:var(--surface-bg);border-radius:var(--surface-radius)}.surface--sunken{background:var(--surface-sunken-bg)}.field{display:flex;flex-direction:column;gap:var(--field-gap);margin:0;border:0;padding:0;text-align:left;min-width:0}.field__label{font-size:var(--field-label-size);font-weight:var(--field-label-weight);color:var(--field-label-ink)}.field-row{display:flex;gap:var(--space-6)}.field-row .field{flex:1}.field--inline{flex-direction:row;align-items:center;gap:var(--space-5)}.field--inline .field__label{font-size:var(--text-md);color:var(--text)}.switch{display:flex;align-items:center;justify-content:space-between;gap:var(--space-6);min-height:var(--tap);position:relative;cursor:pointer}.switch__label{font-size:var(--text-lg)}.switch__input{position:absolute;right:0;width:var(--switch-width);height:var(--switch-height);margin:0;opacity:0;cursor:pointer}.switch__track{flex:none;display:flex;align-items:center;width:var(--switch-width);height:var(--switch-height);padding:var(--space-1);border-radius:var(--radius-pill);background:var(--switch-off-bg);border:1px solid var(--line)}.switch__knob{width:var(--switch-knob);height:var(--switch-knob);border-radius:var(--radius-circle);background:var(--switch-knob-bg)}.switch__input:checked~.switch__track{background:var(--switch-on-bg);border-color:var(--switch-on-bg)}.switch__input:checked~.switch__track .switch__knob{background:var(--switch-knob-on-bg);transform:translate(calc(var(--switch-width) - var(--switch-knob) - var(--space-1) * 2 - 2px))}.switch__input:focus-visible~.switch__track{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:var(--focus-ring-offset)}@media(prefers-reduced-motion:no-preference){.switch__knob{transition:transform var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out)}.switch__track{transition:background var(--duration-fast) var(--ease-out)}}select,textarea,input:not([type=checkbox]):not([type=range]){min-height:var(--field-min-height);width:100%;padding:var(--field-padding-y) var(--field-padding-x);border-radius:var(--field-radius);border:var(--field-border);background:var(--field-bg);color:var(--text);font-size:var(--field-text)}textarea{line-height:var(--leading-snug);resize:vertical}::placeholder{color:var(--muted);opacity:.7}input[type=range]{width:100%;height:var(--tap);accent-color:var(--primary)}input[type=checkbox]{flex:none;width:var(--space-8);height:var(--space-8);accent-color:var(--primary)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);display:flex;align-items:flex-end;justify-content:center;z-index:var(--z-modal)}@media(prefers-reduced-motion:no-preference){.modal-backdrop{animation:modal-veil var(--duration-fast) var(--ease-out)}@keyframes modal-veil{0%{opacity:0}to{opacity:1}}.modal:not(.modal--center){animation:modal-rise var(--duration-fast) var(--ease-out)}@keyframes modal-rise{0%{transform:translateY(var(--space-9))}to{transform:none}}.modal--center{animation:modal-grow var(--duration-fast) var(--ease-land)}@keyframes modal-grow{0%{transform:scale(.96);opacity:0}to{transform:none;opacity:1}}}.modal{--field-bg: var(--surface-sunken-bg);width:100%;max-height:92dvh;overflow-y:auto;padding:var(--modal-padding);padding-bottom:calc(var(--modal-padding) + env(safe-area-inset-bottom));background:var(--surface-bg);border:var(--modal-border);border-radius:var(--modal-radius) var(--modal-radius) 0 0}.modal-backdrop--center{align-items:center;padding:var(--space-8);padding-top:max(var(--space-8),env(safe-area-inset-top));padding-bottom:max(var(--space-8),env(safe-area-inset-bottom))}.modal--center{width:min(var(--modal-width),100%);max-height:100%;border-radius:var(--modal-radius);padding-bottom:var(--modal-padding)}.modal__title{margin:0 0 var(--space-7);font-size:var(--text-xl)}.modal .field{margin-bottom:var(--space-7)}.modal__actions{display:flex;justify-content:flex-end;gap:var(--space-4);margin-top:var(--space-7)}.modal__actions .btn{flex:1}.badge{display:inline-flex;align-items:center;flex:none;padding:var(--badge-padding-y) var(--badge-padding-x);border-radius:var(--badge-radius);font-size:var(--text-2xs);line-height:var(--leading-snug);white-space:nowrap}.badge--caps{font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-wide)}.badge--neutral{background:var(--panel-2);border:1px solid var(--line);color:var(--muted)}.badge--accent{background:var(--primary);color:var(--ink-on-primary)}.badge--outline{border:1px solid var(--line);color:var(--muted);letter-spacing:var(--tracking-wide)}.badge--seat{background:var(--badge-seat, var(--primary));color:var(--ink-on-player)}.banner{padding:var(--space-4) var(--space-6);font-size:var(--text-md);text-align:center}.banner--error{background:var(--bad-bg);color:var(--bad-ink)}.banner--good{background:var(--good-bg);color:var(--good-ink)}.banner--muted{background:var(--panel);color:var(--muted)}.banner--plain{background:var(--panel)}.banner--floating{border-radius:var(--radius-lg);box-shadow:0 4px 20px var(--shadow)}.dot{display:inline-block;flex:none;width:var(--space-5);height:var(--space-5);border-radius:var(--radius-circle);background:var(--dot-color, currentColor)}.spinner{display:inline-block;flex:none;width:var(--space-6);height:var(--space-6);margin-right:var(--space-4);border:2px solid var(--line);border-top-color:var(--primary);border-radius:var(--radius-circle);vertical-align:-1px;animation:spin var(--duration-slow) linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation:pulse 1.4s ease-in-out infinite}}@keyframes pulse{50%{opacity:.35}}@media(min-width:640px){.modal-backdrop{align-items:center;padding:var(--space-8)}.modal:not(.modal--center){width:var(--modal-width);border-radius:var(--radius-lg)}.modal__actions .btn{flex:none}}}@layer app{#root{height:100dvh;display:flex;flex-direction:column}.app{flex:1;min-height:0;display:flex;flex-direction:column;padding-top:env(safe-area-inset-top);position:relative}.menu__items{display:flex;flex-direction:column;gap:var(--space-4)}.menu{position:relative}.menu__close{position:absolute;top:var(--space-5);right:var(--space-5)}.menu__settings{margin-top:var(--space-6);padding-top:var(--space-3);border-top:1px solid var(--line)}.menu__note{display:flex;align-items:center;justify-content:center;gap:var(--space-3);margin:0;padding-top:var(--space-3);color:var(--muted);font-size:var(--text-sm)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.scores{flex:none;display:flex;align-items:stretch;gap:var(--space-5);width:min(100% - var(--space-5) * 2,var(--chrome-max));margin:var(--space-5) auto}.scores__side{flex:1;display:flex;align-items:center;gap:var(--space-4);border-radius:var(--radius-lg);overflow:hidden;padding:var(--space-6) var(--space-5);font-size:var(--text-md);min-width:0;position:relative;isolation:isolate}.scores__side:last-child{justify-content:flex-end}.scores__side:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background:var(--side-accent);opacity:0;pointer-events:none;transition:opacity var(--duration-turn) var(--ease-out)}.scores__side--active:before{opacity:.28;animation:scores-surge var(--duration-turn-flash) var(--ease-out)}@keyframes scores-surge{0%{opacity:.42}to{opacity:.28}}@media(prefers-reduced-motion:no-preference){.scores__side--active{animation:scores-pop var(--duration-turn) var(--ease-land-strong)}@keyframes scores-pop{0%{transform:scale(1.06)}to{transform:none}}}.scores__side--waiting b{color:var(--scores-ink-waiting);font-weight:var(--weight-normal)}.scores__mark{flex:none;display:inline-flex;font-size:var(--icon-md)}.scores__side b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scores__points{font-size:var(--text-lg);font-weight:var(--weight-bold);font-variant-numeric:tabular-nums}.board-wrap{flex:1;min-height:0;padding:var(--space-3);display:flex;position:relative}.board{width:100%;height:100%;user-select:none;touch-action:manipulation;-webkit-user-select:none;position:relative;z-index:1}.board-tint{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none}.board-tint:before,.board-tint:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity var(--duration-turn) var(--ease-out)}.board-tint{--tint-axis-0: to right;--tint-axis-1: to bottom}.board-tint[data-rotated=true]{--tint-axis-0: to bottom;--tint-axis-1: to right}.board-tint:before{background:linear-gradient(var(--tint-axis-0),var(--board-tint-0),transparent 50%,var(--board-tint-0))}.board-tint:after{background:linear-gradient(var(--tint-axis-1),var(--board-tint-1),transparent 50%,var(--board-tint-1))}.board-tint[data-turn="0"]:before,.board-tint[data-turn="1"]:after{opacity:1}.board-flash{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;opacity:0}.board-flash[data-turn="0"]{background:linear-gradient(var(--tint-axis-0),var(--board-flash-0),transparent 50%,var(--board-flash-0))}.board-flash[data-turn="1"]{background:linear-gradient(var(--tint-axis-1),var(--board-flash-1),transparent 50%,var(--board-flash-1))}.board-flash{--tint-axis-0: to right;--tint-axis-1: to bottom}.board-flash[data-rotated=true]{--tint-axis-0: to bottom;--tint-axis-1: to right}@media(prefers-reduced-motion:no-preference){.board-flash{animation:turn-flash var(--duration-turn-flash) var(--ease-out)}}@keyframes turn-flash{0%{opacity:0}18%{opacity:1}to{opacity:0}}.rim{transition:filter var(--duration-turn) var(--ease-out)}.board-wrap[data-turn="0"] .rim--p0{filter:drop-shadow(0 0 var(--rim-glow-core) var(--rim-glow-0)) drop-shadow(0 0 var(--rim-glow-halo) var(--rim-glow-0))}.board-wrap[data-turn="1"] .rim--p1{filter:drop-shadow(0 0 var(--rim-glow-core) var(--rim-glow-1)) drop-shadow(0 0 var(--rim-glow-halo) var(--rim-glow-1))}.rim-surge{opacity:0;pointer-events:none}.rim-surge--p0{filter:drop-shadow(0 0 var(--rim-glow-core) var(--rim-glow-0)) drop-shadow(0 0 var(--rim-surge-halo) var(--rim-glow-0))}.rim-surge--p1{filter:drop-shadow(0 0 var(--rim-glow-core) var(--rim-glow-1)) drop-shadow(0 0 var(--rim-surge-halo) var(--rim-glow-1))}@media(prefers-reduced-motion:no-preference){.rim-surge{animation:rim-surge var(--duration-turn-flash) var(--ease-out)}@keyframes rim-surge{0%{opacity:0}18%{opacity:1}to{opacity:0}}}.board-wrap[data-turn="0"]{--cell: var(--cell-turn-0);--cell-hover: var(--cell-hover-turn-0)}.board-wrap[data-turn="1"]{--cell: var(--cell-turn-1);--cell-hover: var(--cell-hover-turn-1)}.cell polygon{transition:fill var(--duration-turn) var(--ease-out)}.cell{cursor:default}.cell--live{cursor:pointer}.staged{touch-action:none;cursor:grab}.staged:active{cursor:grabbing}.staged--lifted{opacity:.16}.flying-btn{position:absolute;left:var(--flying-left);top:var(--flying-top);z-index:var(--z-modal);--btn-bg: var(--btn-bg-floating);--btn-secondary-bg: var(--btn-bg-floating);--btn-primary-bg: var(--btn-primary-bg-floating);--btn-primary-bg-hover: var(--btn-primary-bg-floating-hover);--btn-primary-bg-active: var(--btn-primary-bg-floating-active);box-shadow:0 0 0 1.5px var(--raise-line),0 2px 10px var(--shadow-strong)}@media(prefers-reduced-motion:no-preference){.flying-btn{animation:tile-land var(--duration-fast) var(--ease-land)}}.banner-float{position:absolute;top:0;left:0;right:0;z-index:var(--z-modal);display:flex;justify-content:center;padding:var(--space-5);pointer-events:none}.banner-float>*{pointer-events:auto;max-width:100%}@media(prefers-reduced-motion:no-preference){.banner-float{animation:banner-in var(--duration-fast) var(--ease-out)}}@keyframes banner-in{0%{opacity:0;transform:translateY(-8px)}}.hint{--hint-travel: 190px;position:absolute;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding-bottom:calc(var(--space-7) + env(safe-area-inset-bottom));pointer-events:none}.hint__text{margin:0 0 var(--hint-travel);padding:var(--space-3) var(--space-6);border-radius:var(--radius-pill);background:var(--panel);border:1px solid var(--line);color:var(--muted);font-size:var(--text-sm);box-shadow:0 2px 10px var(--shadow)}.hint__hand{font-size:var(--text-3xl);line-height:0;color:var(--aim);filter:drop-shadow(0 0 2px var(--tile)) drop-shadow(0 2px 8px var(--shadow-strong))}@media(prefers-reduced-motion:no-preference){.hint__hand{animation:hint-drag 3s var(--ease-out) infinite}.hint__text{animation:hint-caption 3s var(--ease-out) infinite}}@keyframes hint-drag{0%{opacity:0;transform:translateY(0) scale(1)}15%{opacity:1;transform:translateY(0) scale(1)}25%{opacity:1;transform:translateY(0) scale(.86)}65%{opacity:1;transform:translateY(calc(-1 * var(--hint-travel))) scale(.86)}75%{opacity:1;transform:translateY(calc(-1 * var(--hint-travel))) scale(1)}90%,to{opacity:0;transform:translateY(calc(-1 * var(--hint-travel))) scale(1)}}@keyframes hint-caption{0%,to{opacity:0}15%,75%{opacity:1}}.toast-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);display:flex;align-items:flex-start;justify-content:center;padding-top:var(--space-5);pointer-events:none}.toast{animation:toast-in 1.4s var(--ease-out) forwards}.toast--long{animation-duration:2.4s}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px) scale(.95)}12%,70%{opacity:1;transform:none}to{opacity:0;transform:translateY(-4px)}}@media(prefers-reduced-motion:reduce){.toast{animation:none}}.flow{stroke-dasharray:1;animation-duration:var(--flow-step, .15s);animation-timing-function:linear;animation-fill-mode:both;animation-delay:var(--flow-delay, 0s)}.flow--downstream{animation-name:flow-downstream}.flow--upstream{animation-name:flow-upstream}@keyframes flow-downstream{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}@keyframes flow-upstream{0%{stroke-dashoffset:1}to{stroke-dashoffset:2}}.flow__pool{animation:flow-pool var(--duration-instant) var(--ease-out) both;animation-delay:calc(var(--flow-delay, 0s) + var(--flow-step, .15s))}@keyframes flow-pool{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){.flow,.flow__pool{animation:none}}.commit-bar{flex:none;padding:var(--space-4) var(--space-5);max-width:calc(var(--chrome-max) + var(--space-5) + var(--space-5));margin-inline:auto;width:100%;--btn-off-bg: var(--btn-off-bg-floating);position:relative}.dock{flex:none;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:var(--space-5);padding:var(--space-6) var(--space-5) var(--space-4);padding-bottom:calc(var(--space-4) + env(safe-area-inset-bottom));border-top:1px solid var(--line);position:relative;isolation:isolate;box-shadow:inset 0 2px 0 var(--seat, transparent)}.dock:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background:var(--seat, transparent);opacity:.12;pointer-events:none}.dock.dock--armed{box-shadow:inset 0 2px 0 var(--danger)}.dock--armed:before{background:var(--danger)}.dock__tiles{grid-column:2;display:flex;gap:var(--space-2);min-width:0;justify-content:center}.dock__controls{grid-column:3;display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}.tile-btn{position:relative;min-height:0;padding:var(--space-1);border:2px solid transparent;border-radius:var(--radius-lg);background:transparent;line-height:0;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.tile-btn--selected{background:var(--raise)}.tile-btn--selected:before{content:"";position:absolute;inset:calc(-1 * var(--space-1));border:2px solid var(--seat);border-radius:var(--radius-lg);opacity:.45;pointer-events:none}.tile-btn--dragging:before,.tile-btn--staged:before{display:none}.tile-btn--fresh{animation:tile-arrive var(--duration-fast) var(--ease-land-strong)}@keyframes tile-arrive{0%{opacity:0;transform:scale(.3)}}.tile-btn:active:not(.tile-btn--dragging){transform:scale(.94);background:var(--raise)}.tile-btn--dragging{opacity:1;border-style:dashed;border-color:var(--seat);background:var(--raise)}.tile-btn--dragging svg{opacity:.12}.tile-btn--staged{border-style:dashed;border-color:var(--seat);background:var(--raise)}.tile-btn--staged>svg,.tile-btn--staged .tile-btn__new{opacity:.12}.tile-btn--pending{display:inline-flex;opacity:.55;animation:pulse 1.2s ease-in-out infinite;pointer-events:none}.tile-btn--cue:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;box-shadow:0 0 0 2px var(--seat);opacity:.5;pointer-events:none}@media(prefers-reduced-motion:no-preference){.tile-btn--cue:after{opacity:0;animation:tile-cue 1.3s var(--ease-out) 3}}@keyframes tile-cue{0%{opacity:.5;transform:scale(1)}to{opacity:0;transform:scale(1.4)}}.tile-btn[aria-disabled=true]{cursor:default}.tile-btn[aria-disabled=true]>svg{filter:grayscale(1);opacity:.5}.tile-btn__said{position:absolute;bottom:calc(100% + var(--space-3));left:50%;z-index:var(--z-modal);padding:var(--space-2) var(--space-5);border-radius:var(--radius-pill);border:1px solid var(--line);background:var(--panel-2);color:var(--text);font-size:var(--text-sm);font-weight:var(--weight-medium);line-height:var(--leading-snug);white-space:nowrap;pointer-events:none;box-shadow:0 2px 10px var(--shadow);transform:translate(-50%)}@media(prefers-reduced-motion:no-preference){.tile-btn__said{animation:said-in var(--duration-fast) var(--ease-land)}}@keyframes said-in{0%{opacity:0;transform:translate(-50%) translateY(var(--space-2))}}@media(prefers-reduced-motion:no-preference){.tile-btn{transition:opacity var(--duration-instant) ease,transform var(--duration-instant) ease,background var(--duration-instant) ease}.tile-btn--snapback>svg{animation:tile-snap-back var(--snap-back) var(--ease-land-strong)}@keyframes tile-snap-back{0%{transform:translateY(-28px) scale(.7);opacity:.2}to{transform:none;opacity:1}}.staged{animation:tile-land var(--duration-fast) var(--ease-land);transform-box:fill-box;transform-origin:center}@keyframes tile-land{0%{transform:scale(.72);opacity:.4}to{transform:none;opacity:1}}.tile-lock{animation:tile-lock var(--duration-fast) var(--ease-land-strong);transform-box:fill-box;transform-origin:center}@keyframes tile-lock{0%{transform:scale(1.12)}55%{transform:scale(.95)}to{transform:none}}.tile-arrive{animation:tile-arrive var(--duration-fast) var(--ease-land-strong);transform-box:fill-box;transform-origin:center}@keyframes tile-arrive{0%{transform:scale(.34);opacity:.3}to{transform:none;opacity:1}}}.boom-wreck__red{fill:var(--danger);opacity:0;animation:boom-red var(--duration-turn-flash) var(--ease-out) forwards}@keyframes boom-red{0%{opacity:0}18%{opacity:.85}to{opacity:.85}}.boom-wreck{animation:boom-go var(--duration-turn-flash) var(--ease-out) forwards;transform-box:fill-box;transform-origin:center}@keyframes boom-go{0%,38%{opacity:1}to{opacity:0}}@media(prefers-reduced-motion:no-preference){.boom-wreck{animation:boom-go var(--duration-turn-flash) var(--ease-out) forwards,boom-shrink var(--duration-turn-flash) var(--ease-out) forwards}@keyframes boom-shrink{0%,38%{transform:none}to{transform:scale(.1)}}}.drag-tile{position:fixed;top:0;left:0;z-index:var(--z-drag);pointer-events:none;will-change:transform}.drag-tile__inner{transform:translate(-50%,-50%);filter:drop-shadow(0 8px 14px var(--shadow-strong)) drop-shadow(0 0 1.5px var(--lift-rim))}@media(prefers-reduced-motion:no-preference){.drag-tile__inner{animation:drag-tile-lift var(--duration-instant) var(--ease-out)}@keyframes drag-tile-lift{0%{transform:translate(-50%,-50%) scale(.8)}to{transform:translate(-50%,-50%) scale(1)}}}.note{margin:calc(-1 * var(--space-3)) 0 var(--space-7);padding:var(--space-4) var(--space-5);border-radius:var(--radius-md);background:var(--panel-2);color:var(--muted);font-size:var(--text-sm);line-height:var(--leading-snug)}.splash{--field-bg: var(--panel);isolation:isolate;position:relative;display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-8);padding:var(--space-9);text-align:center;color:var(--text)}.splash-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;width:100%;height:100%;pointer-events:none;-webkit-mask-image:var(--backdrop-fade);mask-image:var(--backdrop-fade)}.splash>.field{width:min(380px,100%)}.splash__logo{margin-bottom:calc(-1 * var(--space-5))}.splash__title{margin:0;font-size:var(--text-3xl);font-weight:var(--weight-bold);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight)}.splash__error{margin:0;color:var(--error-ink)}.splash__note{margin:0;max-width:34ch;color:var(--muted);font-size:var(--text-sm);line-height:var(--leading-normal)}.splash__foot{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);width:min(380px,100%)}.splash__doors{display:flex;flex-direction:column;gap:var(--space-5);width:min(380px,100%)}.splash__start{margin:var(--space-6) 0}.splash__join{display:flex;gap:var(--space-4)}.splash__code{flex:1;min-width:0;font-family:var(--mono);letter-spacing:var(--tracking-widest);text-transform:uppercase}.splash__join .btn{flex:none}.howto{--modal-width: 520px}.howto__stage{display:flex;align-items:center;justify-content:center;height:220px;margin-bottom:var(--space-7);border-radius:var(--radius-lg);background:var(--bg)}.demo-board{width:100%;height:100%;padding:var(--space-6)}.howto__seats{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-4) var(--space-7);margin:0 0 var(--space-7);padding:0;list-style:none}.howto__seat{display:flex;align-items:center;gap:var(--space-4);color:var(--muted);font-size:var(--text-sm)}.howto__seat b{color:var(--text);font-weight:var(--weight-semibold)}.howto__caption{min-height:4.5em}.howto__chapter{margin:0 0 var(--space-4);font-size:var(--text-lg)}.howto__body{margin:0;color:var(--muted);font-size:var(--text-sm);line-height:var(--leading-normal)}.howto__steps{display:flex;gap:var(--space-3);margin-top:var(--space-7)}.howto__step{flex:1;min-height:var(--control-xs);padding:0;border:0;background:transparent;cursor:pointer}.howto__step:after{content:"";display:block;height:var(--space-2);border-radius:var(--radius-pill);background:var(--line)}.howto__step--on:after{background:var(--primary)}.howto__step-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.invite{display:flex;flex-direction:column;gap:var(--space-5);width:min(340px,100%);padding:var(--space-6) var(--space-7);border:1px solid var(--raise-line);border-radius:var(--radius-lg);background:var(--panel);box-shadow:0 4px 20px var(--shadow)}.invite__label{display:flex;align-items:center;justify-content:center;gap:var(--space-4);color:var(--muted);font-size:var(--text-sm)}.invite__code{padding:var(--space-5);border-radius:var(--radius-md);background:var(--panel-2);font-family:var(--mono);font-size:var(--text-2xl);font-weight:var(--weight-bold);letter-spacing:var(--tracking-wider);text-align:center;-webkit-user-select:all;user-select:all}.invite__manual{text-align:left}.invite__url{font-family:var(--mono);-webkit-user-select:all;user-select:all}.banner--over{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-4);width:min(100% - var(--space-5) * 2,var(--chrome-max));margin:0 auto var(--space-5);text-align:left}@media(prefers-reduced-motion:no-preference){.banner--over{animation:banner-arrive var(--duration-turn) var(--ease-out)}@keyframes banner-arrive{0%{opacity:0;transform:translateY(calc(-1 * var(--space-5)))}to{opacity:1;transform:none}}}.banner__result{font-size:var(--text-xl)}.banner__actions{display:flex;align-items:center;gap:var(--space-4)}@media(max-width:479px){.banner__result,.banner__actions{width:100%}.banner__actions>*{flex:1}}.banner__error{width:100%;color:var(--error-ink);font-size:var(--text-sm)}.gameover{text-align:center;position:relative}.gameover__eyebrow{margin:0;color:var(--muted);font-size:var(--text-xs);font-weight:var(--weight-bold);letter-spacing:var(--tracking-widest);text-transform:uppercase}.gameover__headline{margin:var(--space-3) 0 var(--space-2);color:var(--won-color, inherit);font-size:var(--text-3xl);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight)}@media(prefers-reduced-motion:no-preference){.gameover--won .gameover__headline{animation:headline-land var(--duration-fast) var(--ease-land-strong) backwards}}@keyframes headline-land{0%{opacity:0;transform:scale(.8)}}.gameover__crown{flex:none;line-height:1}.gameover__reason{margin:0 0 var(--space-7);color:var(--muted);font-size:var(--text-md)}.gameover__scores{display:flex;flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-8)}.gameover__score{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-6);opacity:.6;text-align:left}.gameover__score--won{opacity:1;border-color:var(--won-color, var(--raise-line))}.gameover__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gameover__points{margin-left:auto;font-size:var(--text-xl);font-weight:var(--weight-bold);font-variant-numeric:tabular-nums}.gameover__actions{display:flex;flex-direction:column;gap:var(--space-4)}.gameover__actions .btn{width:100%}.gameover__peek{margin-top:var(--space-4)}.confetti{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.confetti__bit{position:absolute;top:calc(-1 * var(--space-8));width:var(--space-8);height:var(--space-8);color:var(--won-color);opacity:0}@media(prefers-reduced-motion:no-preference){.confetti__bit{animation:confetti-fall 1.6s var(--ease-out) forwards}}.confetti__bit[data-bit="0"]{left:6%;animation-delay:0s}.confetti__bit[data-bit="1"]{left:15%;animation-delay:.18s}.confetti__bit[data-bit="2"]{left:23%;animation-delay:.06s}.confetti__bit[data-bit="3"]{left:31%;animation-delay:.3s}.confetti__bit[data-bit="4"]{left:40%;animation-delay:.12s}.confetti__bit[data-bit="5"]{left:48%;animation-delay:.36s}.confetti__bit[data-bit="6"]{left:57%;animation-delay:.02s}.confetti__bit[data-bit="7"]{left:65%;animation-delay:.24s}.confetti__bit[data-bit="8"]{left:73%;animation-delay:.1s}.confetti__bit[data-bit="9"]{left:82%;animation-delay:.33s}.confetti__bit[data-bit="10"]{left:90%;animation-delay:.15s}.confetti__bit[data-bit="11"]{left:96%;animation-delay:.27s}@keyframes confetti-fall{0%{opacity:1;transform:translateY(0) rotate(0)}to{opacity:0;transform:translateY(560px) rotate(540deg)}}.builder__head{display:flex;align-items:center;gap:var(--space-4);font-size:var(--text-sm);color:var(--muted);margin-bottom:var(--space-5)}.builder__head .btn:first-of-type{margin-left:auto}.builder__group{margin-bottom:var(--space-6)}.builder__group header{display:flex;align-items:center;justify-content:space-between;font-size:var(--text-sm);color:var(--muted);margin-bottom:var(--space-3)}.builder__group header em{font-style:normal;opacity:.7}.builder__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(58px,1fr));gap:var(--space-3)}.chip{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-1)}.chip--off{opacity:.32}.chip__tile{min-height:0;padding:0;border:0;background:transparent;line-height:0;border-radius:var(--radius-sm)}.chip__weight{display:flex;align-items:center;gap:var(--space-1);font-size:var(--text-xs);color:var(--muted);font-variant-numeric:tabular-nums}.chip__weight span{width:var(--space-6);text-align:center}.chip__step{min-height:22px;width:var(--space-8);padding:0;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text);font-size:var(--text-md);line-height:1}.chip__step:disabled{opacity:.4;cursor:default}.debug__stats{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2);color:var(--muted);font-size:var(--text-md);margin-bottom:var(--space-6)}.debug__error{color:var(--error-ink);margin:var(--space-2) 0;font-size:var(--text-md)}.debug .btn--block{margin-bottom:var(--space-4)}.debug pre{max-height:30dvh;overflow:auto;background:var(--bg);padding:var(--space-4);border-radius:var(--radius-md);font-size:var(--text-xs)}.debug summary{cursor:pointer;color:var(--muted);font-size:var(--text-md);padding:var(--space-4) 0}.namefield{display:flex;align-items:center;min-height:var(--field-min-height);padding-right:var(--space-3);border:var(--field-border);border-radius:var(--field-radius);background:var(--field-bg)}.namefield:focus-within{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:var(--focus-ring-offset)}.namefield[data-invalid=true]{border-color:var(--danger)}.namefield__input,.namefield__name{flex:1;min-width:0;min-height:0;border:none;background:transparent;padding:var(--field-padding-y) var(--field-padding-x)}.namefield__input:focus-visible,.namefield__name:focus-visible{outline:none}.namefield__name{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);color:var(--text);text-align:left;font-size:var(--field-text)}.namefield__name b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.namefield__name span{flex:none;font-size:var(--text-md);opacity:.7}.consent{flex:none;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--space-4) var(--space-6);padding:var(--space-6);padding-bottom:calc(var(--space-6) + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--panel);box-shadow:0 -6px 24px var(--shadow)}.consent__text{flex:1 1 260px;margin:0;color:var(--muted);font-size:var(--text-sm);line-height:1.45}.consent__actions{display:flex;flex-shrink:0;gap:var(--space-4)}@media(min-width:640px){.board-wrap{padding:var(--space-5)}.dock{gap:var(--space-7);padding:var(--space-5);padding-top:var(--space-6)}}}
