:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#f5efe3;background:#071012;--red: #ff4f46;--green: #30dc88;--yellow: #ffd84f;--blue: #5bb2ff;--ink: #f5efe3;--muted: #b9ab98;--panel: rgba(15, 21, 23, .92);--panel-solid: #12191b;--line: rgba(240, 224, 196, .16);--board-line: rgba(240, 224, 196, .22);--shadow: 0 28px 74px rgba(0, 0, 0, .48);--surface: rgba(15, 22, 24, .86);--surface-muted: rgba(244, 224, 190, .08);--surface-raised: rgba(25, 34, 36, .96);--field: rgba(7, 12, 14, .86);--field-border: rgba(242, 225, 194, .24);--gold: #e7c46a;--gold-muted: rgba(217, 182, 83, .2);--surface-inset: rgba(2, 7, 8, .36);--button-primary-bg: linear-gradient(180deg, #e8c46a, #b88431);--button-primary-text: #20150b;--button-secondary-bg: rgba(242, 225, 194, .1);--button-secondary-text: #f8ead0;--button-secondary-border: rgba(247, 223, 174, .32);--error-bg: rgba(56, 16, 20, .96);--error-border: rgba(255, 144, 144, .42);--error-text: #ffb8b8;--success: #52e6a2;--danger: #ff7871;--page-bg: #071012;--page-scrim: linear-gradient(rgba(3, 8, 10, .7), rgba(3, 8, 10, .84));--shell-bg: linear-gradient(132deg, rgba(28, 66, 55, .22), transparent 38%), linear-gradient(rgba(4, 9, 11, .58), rgba(3, 7, 10, .78));--shell-compact-bg: linear-gradient(136deg, rgba(20, 60, 54, .26), transparent 46%), linear-gradient(rgba(4, 9, 11, .66), rgba(3, 7, 10, .82));--hero-title: rgba(255, 244, 218, .96);--hero-title-compact: rgba(255, 244, 218, .88);--hero-shadow: 0 3px 18px rgba(0, 0, 0, .64);--hero-shadow-compact: 0 2px 12px rgba(0, 0, 0, .42);--topbar-eyebrow: rgba(226, 199, 148, .9);--topbar-eyebrow-compact: rgba(218, 190, 138, .86);--panel-bg: linear-gradient(180deg, rgba(255, 236, 194, .075), transparent 34%), linear-gradient(145deg, rgba(18, 29, 30, .96), rgba(8, 13, 15, .94));--theme-toggle-bg: linear-gradient(145deg, rgba(242, 225, 194, .08), rgba(2, 7, 8, .28)), rgba(15, 22, 24, .88);--theme-toggle-track-bg: rgba(2, 7, 8, .54);--theme-toggle-thumb-bg: #d5c5ab;--theme-toggle-active-bg: linear-gradient(90deg, rgba(39, 193, 120, .86), rgba(217, 182, 83, .84)), rgba(39, 193, 120, .35);--subtle-card-bg: linear-gradient(145deg, rgba(255, 255, 255, .055), transparent 42%), rgba(242, 225, 194, .065);--game-panel-bg: linear-gradient(180deg, rgba(18, 25, 26, .96), rgba(8, 13, 15, .94)), var(--asset-tabletop-cover);--asset-red-pawn: none;--asset-green-pawn: none;--asset-yellow-pawn: none;--asset-blue-pawn: none;--asset-board-layer: none;--asset-tabletop-fixed: none;--asset-tabletop-cover: none}:root[data-theme=light]{color-scheme:light;color:#251c12;background:#f2e7d2;--red: #d7332f;--green: #168451;--yellow: #a97815;--blue: #2167bb;--ink: #251c12;--muted: #665847;--panel: rgba(255, 250, 239, .92);--panel-solid: #fff9eb;--line: rgba(86, 64, 38, .18);--board-line: rgba(86, 64, 38, .24);--shadow: 0 24px 58px rgba(82, 58, 28, .18);--surface: rgba(255, 248, 236, .88);--surface-muted: rgba(86, 64, 38, .08);--surface-raised: rgba(255, 253, 246, .96);--field: rgba(255, 255, 250, .92);--field-border: rgba(86, 64, 38, .26);--gold: #a96f18;--gold-muted: rgba(169, 111, 24, .2);--surface-inset: rgba(91, 67, 34, .1);--button-primary-bg: linear-gradient(180deg, #d5a143, #a96f18);--button-primary-text: #fff9ed;--button-secondary-bg: rgba(255, 250, 239, .72);--button-secondary-text: #2d2115;--button-secondary-border: rgba(103, 76, 41, .28);--error-bg: rgba(255, 237, 232, .96);--error-border: rgba(200, 57, 52, .34);--error-text: #8b241f;--success: #137848;--danger: #b4342f;--page-bg: #f2e7d2;--page-scrim: linear-gradient(rgba(255, 250, 239, .72), rgba(243, 231, 210, .88));--shell-bg: linear-gradient(132deg, rgba(26, 126, 92, .12), transparent 38%), linear-gradient(rgba(255, 250, 239, .74), rgba(243, 231, 210, .92));--shell-compact-bg: linear-gradient(136deg, rgba(26, 126, 92, .14), transparent 46%), linear-gradient(rgba(255, 250, 239, .8), rgba(243, 231, 210, .94));--hero-title: rgba(48, 35, 21, .98);--hero-title-compact: rgba(48, 35, 21, .92);--hero-shadow: 0 2px 0 rgba(255, 248, 230, .72);--hero-shadow-compact: 0 1px 0 rgba(255, 248, 230, .72);--topbar-eyebrow: rgba(122, 83, 27, .94);--topbar-eyebrow-compact: rgba(122, 83, 27, .88);--panel-bg: linear-gradient(180deg, rgba(255, 255, 255, .6), transparent 35%), linear-gradient(145deg, rgba(255, 251, 241, .96), rgba(247, 238, 220, .94));--theme-toggle-bg: linear-gradient(145deg, rgba(255, 255, 255, .68), rgba(231, 211, 176, .28)), rgba(255, 250, 239, .9);--theme-toggle-track-bg: rgba(104, 79, 46, .16);--theme-toggle-thumb-bg: #fffaf0;--theme-toggle-active-bg: linear-gradient(90deg, rgba(231, 196, 106, .9), rgba(255, 243, 204, .96)), rgba(231, 196, 106, .24);--subtle-card-bg: linear-gradient(145deg, rgba(255, 255, 255, .46), transparent 42%), rgba(120, 84, 37, .07);--game-panel-bg: linear-gradient(180deg, rgba(255, 249, 235, .94), rgba(240, 224, 195, .9)), var(--asset-tabletop-cover)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;color:var(--ink);background:var(--page-scrim),var(--asset-tabletop-fixed),var(--page-bg)}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(217,182,83,.68);outline-offset:2px}button:disabled{cursor:not-allowed;opacity:.48}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.app-shell{min-height:100vh;padding:28px;background:var(--shell-bg)}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;max-width:1180px;margin:0 auto 24px}.topbar h1,.panel h2{margin:0;letter-spacing:0}.topbar h1{max-width:760px;color:var(--hero-title);font-size:clamp(2rem,5vw,4.5rem);line-height:.96;text-shadow:var(--hero-shadow)}.topbar-actions{display:flex;align-items:flex-start;justify-content:flex-end;flex-wrap:wrap;gap:10px}.app-shell-compact .topbar{align-items:center;margin-bottom:16px}.app-shell-compact .topbar h1{color:var(--hero-title-compact);text-shadow:var(--hero-shadow-compact)}.app-shell-compact .eyebrow{color:var(--topbar-eyebrow-compact);text-shadow:0 1px 7px rgba(0,0,0,.36)}.app-shell-compact{display:grid;grid-template-rows:auto 1fr;align-content:start;background:var(--shell-compact-bg)}.app-shell-compact main{width:100%;max-width:1140px}.app-shell-compact .topbar h1{max-width:none;font-size:1.45rem;line-height:1.1}.app-shell-compact .eyebrow{margin-bottom:4px}.panel .eyebrow{color:var(--muted);text-shadow:none}.eyebrow{margin:0 0 8px;color:var(--muted);font-weight:800;text-transform:uppercase;font-size:.78rem}.topbar .eyebrow{color:var(--topbar-eyebrow);text-shadow:0 2px 10px rgba(0,0,0,.46)}.theme-toggle{display:grid;grid-template-columns:auto 54px;align-items:center;gap:10px;min-height:34px;border:1px solid var(--line);border-radius:999px;padding:6px 7px 6px 12px;background:var(--theme-toggle-bg);color:var(--ink);box-shadow:0 10px 24px #00000038}.theme-toggle-copy{display:grid;gap:1px;text-align:left}.theme-toggle-copy span{color:var(--muted);font-size:.58rem;font-weight:1000;line-height:1;text-transform:uppercase}.theme-toggle-copy strong{color:var(--ink);font-size:.76rem;font-weight:1000;line-height:1;text-transform:capitalize}.theme-toggle-track{position:relative;display:block;width:54px;height:30px;border:1px solid var(--field-border);border-radius:999px;background:var(--theme-toggle-track-bg);box-shadow:inset 0 1px 3px #0000003d,0 4px 12px #00000024;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}.theme-toggle-thumb{position:absolute;top:4px;left:4px;width:20px;aspect-ratio:1;border-radius:50%;background:var(--theme-toggle-thumb-bg);box-shadow:0 2px 8px #00000047,inset 0 1px #ffffff80;transition:transform .15s ease,background .15s ease}.theme-toggle[aria-checked=true] .theme-toggle-track{border-color:#a96f186b;background:var(--theme-toggle-active-bg);box-shadow:inset 0 1px 2px #ffffff42,0 0 0 3px #d9b65324,0 6px 14px #70502629}.theme-toggle[aria-checked=true] .theme-toggle-thumb{transform:translate(24px)}.connection-pill{justify-self:end;align-self:start;width:max-content;border:1px solid var(--line);border-radius:999px;padding:8px 13px;background:var(--surface-raised);color:var(--muted);font-weight:800;text-transform:uppercase;font-size:.72rem;box-shadow:0 10px 24px #00000047}.connection-pill.online{color:var(--success)}.connection-pill.offline{color:var(--danger)}.connection-pill.local{color:var(--success)}main{max-width:1180px;margin:0 auto}.panel{background:var(--panel-bg);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);color:var(--ink)}.table-card{position:relative;overflow:hidden}.table-card:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:linear-gradient(90deg,rgba(217,182,83,.72),rgba(39,193,120,.32),transparent 82%);pointer-events:none}.card-heading{display:flex;align-items:center;gap:12px;margin:0 0 18px}.card-heading-compact{margin-bottom:14px}.card-heading .eyebrow{margin-bottom:3px}.card-heading h2{margin:0;font-size:1.18rem;line-height:1.1}.card-number{display:grid;place-items:center;width:36px;aspect-ratio:1;border:1px solid rgba(217,182,83,.34);border-radius:8px;background:linear-gradient(180deg,#d9b6532e,#d9b6530f),#02070861;color:var(--gold);font-size:.78rem;font-weight:1000}.home-layout{display:grid;grid-template-columns:minmax(260px,360px) 1fr;grid-template-areas:"launch public" "code public" "local public";gap:18px}.launch-panel{grid-area:launch}.public-panel{grid-area:public;min-height:440px}.code-panel{grid-area:code}.local-panel{grid-area:local}form,.public-panel,.lobby-main,.lobby-actions,.game-panel{padding:20px}.launch-form,.code-form,.local-form{display:grid;align-content:start}label{display:grid;gap:8px;margin-bottom:16px;color:var(--muted);font-size:.84rem;font-weight:800}input,select{width:100%;min-height:44px;border:1px solid var(--field-border);border-radius:8px;padding:0 12px;background:var(--field);color:var(--ink)}input::placeholder{color:#b9ab98b8}.segmented{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:16px;padding:5px;border-radius:8px;background:var(--surface-muted)}.segmented button{border:0;border-radius:6px;min-height:38px;background:transparent;color:var(--muted);font-weight:900}.segmented button.active{background:var(--surface-raised);color:var(--ink);box-shadow:0 4px 14px #0000003d}.local-seat-setup{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:16px}.local-seat-field{margin:0;border:1px solid var(--line);border-left-width:6px;border-radius:8px;padding:10px;background:var(--subtle-card-bg)}.local-seat-field-red{border-left-color:var(--red)}.local-seat-field-green{border-left-color:var(--green)}.local-seat-field-yellow{border-left-color:var(--yellow)}.local-seat-field-blue{border-left-color:var(--blue)}.local-seat-field-disabled{opacity:.54}.local-rule-toggle{margin-bottom:16px}.primary-button,.secondary-button,.ghost-button{border-radius:8px;min-height:42px;padding:0 16px;font-weight:900;transition:transform 70ms ease,filter .12s ease,box-shadow .14s ease,background .14s ease;will-change:transform}.primary-button:active:not(:disabled),.secondary-button:active:not(:disabled),.ghost-button:active:not(:disabled),.lobby-row:active:not(:disabled),.segmented button:active:not(:disabled){transform:translateY(1px) scale(.99)}.primary-button{width:100%;border:0;background:var(--button-primary-bg);color:var(--button-primary-text);box-shadow:inset 0 1px #ffffff5c,0 10px 22px #00000052}.secondary-button{border:1px solid var(--button-secondary-border);background:var(--button-secondary-bg);color:var(--button-secondary-text)}.ghost-button{border:1px solid var(--line);background:#f2e1c214;color:var(--ink)}.panel-heading,.table-title-row{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px}.lobby-list{display:grid;gap:10px}.empty-state{display:grid;place-content:center;min-height:300px;border:1px dashed rgba(240,224,196,.22);border-radius:8px;padding:24px;background:linear-gradient(135deg,rgba(217,182,83,.055),transparent 38%),#0207083d;text-align:center}.empty-state strong{color:var(--ink);font-size:1.05rem}.empty-state p{margin:5px 0 0}.lobby-row{position:relative;display:flex;justify-content:space-between;align-items:center;gap:16px;width:100%;min-height:72px;border:1px solid var(--line);border-radius:8px;padding:14px;background:linear-gradient(90deg,#d9b65314,#f2e1c20b),#02070847;box-shadow:inset 0 1px #ffffff0f;text-align:left;color:var(--ink);overflow:hidden;transition:border-color .14s ease,box-shadow .14s ease,background .14s ease}.lobby-row:hover:not(:disabled){border-color:#d9b6536b;box-shadow:inset 0 1px #ffffff14,0 10px 22px #0000002e}.lobby-row-main{min-width:0}.lobby-row-top{display:flex;align-items:center;flex-wrap:wrap;gap:8px;min-width:0}.lobby-row-top strong{overflow-wrap:anywhere}.status-pill,.seat-badge{display:inline-flex;align-items:center;width:max-content;border-radius:999px;padding:3px 7px;background:#d9b65321;color:var(--gold);font-size:.62rem;font-weight:1000;line-height:1;text-transform:uppercase}.rule-pill-on{background:#52e6a21f;color:#9ef0c2}.rule-pill-off{background:#65a7ff24;color:#b9d6ff}.seat-meter{display:grid;grid-template-columns:auto auto;align-items:baseline;justify-content:center;min-width:56px;border:1px solid rgba(240,224,196,.16);border-radius:8px;padding:7px 9px;background:#02070852}.seat-meter strong{color:var(--ink);font-size:1.15rem}.seat-meter small{color:var(--muted);font-weight:900}.lobby-row-main,.seat,.player-chip{display:grid;gap:3px}.lobby-row small,.seat small,.player-chip small,.muted{color:var(--muted)}.lobby-row em,.seat em,.player-chip em{font-style:normal;font-size:.74rem;color:var(--muted)}.error-banner{max-width:1180px;margin:0 auto 18px;border:1px solid var(--error-border);border-radius:8px;padding:12px 14px;background:var(--error-bg);color:var(--error-text);font-weight:800}.lobby-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:18px}.lobby-actions{display:grid;align-content:start;gap:12px}.rules-button{width:100%}.rules-dialog-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:18px;background:#020708b8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.rules-dialog{display:grid;grid-template-rows:auto minmax(0,1fr);width:min(100%,620px);max-height:min(760px,calc(100vh - 36px));max-height:min(760px,calc(100dvh - 36px));padding:20px}.rules-dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}.rules-dialog-header h2{margin:0;font-size:1.4rem;line-height:1.1}.rules-close-button{flex:0 0 auto}.rules-dialog-body{display:grid;gap:10px;min-height:0;overflow-y:auto;padding-right:4px;scrollbar-color:rgba(242,225,194,.34) rgba(242,225,194,.08)}.rules-section{border:1px solid var(--line);border-radius:8px;padding:12px;background:linear-gradient(145deg,#f2e1c213,#02070838),#f2e1c20b}.rules-section h3{margin:0 0 8px;color:var(--ink);font-size:.94rem;line-height:1.15}.rules-section ul{display:grid;gap:7px;margin:0;padding-left:18px;color:var(--muted);font-size:.9rem;line-height:1.45}.lobby-meta-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:16px}.lobby-meta-row span{min-height:46px;border:1px solid rgba(240,224,196,.14);border-radius:8px;padding:9px 10px;background:#02070842;color:var(--ink);font-size:.82rem;font-weight:900}.lobby-meta-row strong{font-size:1rem}.lobby-meta-row small{margin-left:2px;color:var(--muted);font-weight:800}.side-picker,.piece-color-picker{display:grid;gap:10px;border:1px solid var(--line);border-radius:8px;padding:12px;background:linear-gradient(145deg,#f2e1c216,#02070847),#f2e1c20a;box-shadow:inset 0 1px #ffffff14}.piece-color-picker-pending{border-color:color-mix(in srgb,var(--side-accent, var(--gold)) 48%,transparent)}.rule-toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:8px;padding:12px;background:linear-gradient(145deg,#e7c46a17,#02070847),#f2e1c20b;box-shadow:inset 0 1px #ffffff14;transition:border-color .16s ease,background .16s ease,box-shadow .16s ease}.rule-toggle-pending{border-color:#e7c46a85;background:linear-gradient(145deg,#e7c46a29,#27c17814),#f2e1c20f;box-shadow:inset 0 1px #ffffff1a,0 0 0 3px #d9b6531a,0 10px 22px #0003}.rule-toggle-copy{display:grid;gap:3px;min-width:0}.rule-toggle-copy .side-picker-title{margin-bottom:1px}.rule-toggle-copy strong{color:var(--ink);font-size:.98rem;line-height:1.1}.rule-toggle-copy em,.rule-status{color:var(--muted);font-size:.72rem;font-style:normal;font-weight:900;text-transform:uppercase}.rule-status{display:inline-flex;align-items:center;gap:6px;min-height:16px}.rule-status-pending{color:#f2d17c}.rule-status-pending:before{content:"";width:10px;aspect-ratio:1;border:2px solid rgba(242,209,124,.32);border-top-color:#f2d17c;border-radius:50%;animation:rule-status-spin .8s linear infinite}.toggle-switch{position:relative;display:inline-flex;align-items:center;flex:0 0 auto;margin:0;cursor:pointer}.toggle-switch input{position:absolute;width:1px;height:1px;min-height:0;margin:0;padding:0;border:0;opacity:0}.toggle-track{position:relative;display:block;width:54px;height:30px;border:1px solid rgba(240,224,196,.22);border-radius:999px;background:linear-gradient(180deg,#0a1012f5,#1c2426e6),#0207088a;box-shadow:inset 0 1px 3px #00000070,0 5px 14px #00000038;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}.toggle-thumb{position:absolute;top:4px;left:4px;width:20px;aspect-ratio:1;border-radius:50%;background:#d5c5ab;box-shadow:0 2px 8px #0000006b,inset 0 1px #ffffff75;transition:transform .15s ease,background .15s ease}.toggle-switch input:checked+.toggle-track{border-color:#e7c46aad;background:linear-gradient(90deg,#27c178db,#d9b653d6),#27c17859;box-shadow:inset 0 1px 2px #ffffff29,0 0 0 3px #d9b6531f,0 6px 16px #0000003d}.toggle-switch input:checked+.toggle-track .toggle-thumb{transform:translate(24px);background:#fff1cf}.toggle-switch input:focus-visible+.toggle-track{outline:3px solid rgba(217,182,83,.68);outline-offset:3px}.toggle-switch input:disabled+.toggle-track{opacity:.56}.toggle-switch-disabled{cursor:not-allowed}.side-picker-title{margin:0;color:var(--muted);font-size:.78rem;font-weight:900;text-transform:uppercase}.side-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.bot-manager{display:grid;gap:10px;border:1px solid var(--line);border-radius:8px;padding:12px;background:linear-gradient(145deg,#27c17812,#0207083d),#5c8b7a0f}.bot-grid{display:grid;gap:8px}.side-swatch{position:relative;display:grid;grid-template-columns:18px 1fr;align-items:center;gap:2px 8px;min-height:62px;border:1px solid var(--line);border-radius:8px;padding:9px;background:linear-gradient(145deg,rgba(255,255,255,.055),transparent),#f2e1c211;color:var(--ink);text-align:left;box-shadow:inset 0 1px #ffffff14;overflow:hidden;transition:transform 70ms ease,filter .12s ease,border-color .12s ease,box-shadow .14s ease,background .14s ease;will-change:transform}.side-swatch:hover:not(:disabled){border-color:#d9b6535c;background:linear-gradient(145deg,rgba(255,255,255,.08),transparent),#f2e1c217}.side-swatch.active{border-color:var(--side-accent, rgba(255, 230, 176, .62));padding-right:74px;background:linear-gradient(90deg,color-mix(in srgb,var(--side-accent, var(--gold)) 28%,transparent),#151c1ef0),#f2e1c214;box-shadow:inset 0 1px #ffffff24,0 0 0 3px color-mix(in srgb,var(--side-accent, var(--gold)) 22%,transparent),0 10px 24px #0000003d;transform:translateY(-1px)}.side-swatch.active:after{content:"Selected";position:absolute;right:8px;top:8px;border-radius:999px;padding:3px 7px;background:#e7c46aeb;color:#20150b;font-size:.62rem;font-weight:900;text-transform:uppercase;letter-spacing:0;box-shadow:0 2px 10px #00000047}.side-swatch-red.active{border-color:var(--side-accent, var(--red))}.side-swatch-green.active{border-color:var(--side-accent, var(--green))}.side-swatch-yellow.active{border-color:var(--side-accent, var(--yellow))}.side-swatch-blue.active{border-color:var(--side-accent, var(--blue))}.side-swatch:disabled{opacity:.44}.side-swatch:active:not(:disabled){transform:translateY(1px) scale(.99)}.side-swatch.active:active:not(:disabled){transform:translateY(0) scale(.99)}.side-swatch.pending,.primary-button.pending{filter:brightness(1.06);animation:quick-action-confirm .38s ease}.bot-swatch{min-height:52px}.bot-swatch.bot-occupied{border-color:#ffe6b052;padding-right:52px;background:linear-gradient(90deg,#e7c46a1f,#151c1ef0),#f2e1c214}.bot-swatch.bot-occupied:after{content:"Bot";position:absolute;right:8px;top:8px;border-radius:999px;padding:3px 7px;background:#e7c46adb;color:#20150b;font-size:.62rem;font-weight:900;text-transform:uppercase}.side-swatch strong{text-transform:capitalize}.side-swatch.active strong{font-weight:1000}.side-swatch em{grid-column:2;color:var(--muted);font-size:.68rem;font-style:normal;line-height:1.15}.side-dot{grid-row:span 2;width:18px;aspect-ratio:1;border:2px solid rgba(255,248,221,.94);border-radius:50%;box-shadow:0 0 0 1px #0000008a,inset 0 1px 1px #ffffff75}.side-swatch.active .side-dot{transform:scale(1.16);box-shadow:0 0 0 2px #fff8ddf5,0 0 0 4px #190f0880,0 5px 12px #1f12093d}.side-swatch-red .side-dot{background:var(--side-accent, var(--red))}.side-swatch-green .side-dot{background:var(--side-accent, var(--green))}.side-swatch-yellow .side-dot{background:var(--side-accent, var(--yellow))}.side-swatch-blue .side-dot{background:var(--side-accent, var(--blue))}.piece-color-control{display:grid;grid-template-columns:28px minmax(52px,68px) minmax(0,1fr);align-items:center;gap:10px;margin:0}.piece-color-control input[type=color]{min-height:36px;height:36px;padding:3px;cursor:pointer}.piece-color-control strong{color:var(--ink);font-size:.78rem;line-height:1;text-transform:uppercase}.piece-color-preview{width:28px;aspect-ratio:1;border:2px solid rgba(255,248,221,.94);border-radius:50%;background:var(--side-accent, var(--gold));box-shadow:0 0 0 1px #0000008a,0 0 14px color-mix(in srgb,var(--side-accent, var(--gold)) 36%,transparent),inset 0 1px 1px #ffffff75}.code-strip{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px;border:1px dashed rgba(184,206,196,.42);border-radius:8px;padding:12px}.code-strip span{font-size:1.6rem;font-weight:1000}.seat-grid,.player-stack{display:grid;gap:10px}.seat-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.seat,.player-chip{position:relative;border:1px solid var(--line);border-left-width:8px;border-radius:8px;padding:14px;background:var(--subtle-card-bg);box-shadow:inset 0 1px #ffffff12}.seat-title-row{display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:8px}.seat-title-row strong{min-width:0;overflow-wrap:anywhere}.color-dot{width:16px;aspect-ratio:1;border:2px solid rgba(255,248,221,.92);border-radius:50%;box-shadow:0 0 0 1px #00000080,inset 0 1px 1px #ffffff7a}.color-dot-red{background:var(--side-accent, var(--red))}.color-dot-green{background:var(--side-accent, var(--green))}.color-dot-yellow{background:var(--side-accent, var(--yellow))}.color-dot-blue{background:var(--side-accent, var(--blue))}.seat-badge-online{background:#52e6a21f;color:var(--success)}.seat-badge-offline{background:#ff78711f;color:var(--danger)}.seat-red,.chip-red{border-left-color:var(--side-accent, var(--red))}.seat-green,.chip-green{border-left-color:var(--side-accent, var(--green))}.seat-yellow,.chip-yellow{border-left-color:var(--side-accent, var(--yellow))}.seat-blue,.chip-blue{border-left-color:var(--side-accent, var(--blue))}.game-layout{display:grid;grid-template-columns:minmax(320px,760px) minmax(260px,340px);gap:18px;align-items:start;justify-content:center}.game-layout-local{grid-template-columns:minmax(320px,820px) minmax(260px,320px)}.local-board-shell{position:relative;min-width:0}.board-wrap{width:100%;min-width:0}.pixi-board-host{position:relative;width:min(100%,82vh);aspect-ratio:4 / 3;margin:0 auto;border-radius:12px;overflow:hidden;background:#2b1a0e;box-shadow:0 0 0 clamp(6px,1vw,10px) #1f1209eb,0 4px #8f5a2c,0 18px 44px #170d0761,inset 0 0 0 2px #fff5d642;touch-action:none}.turn-corner-marker{--marker-accent: var(--gold);--marker-board-x: 0px;--marker-board-y: 0px;--marker-board-size: 1px;--marker-corner-offset: clamp(8px, calc(var(--marker-board-size) * .018), 14px);position:absolute;z-index:4;display:grid;place-items:center;width:clamp(42px,6.2vw,58px);aspect-ratio:1;border:1px solid color-mix(in srgb,var(--marker-accent) 72%,#ffffff 16%);border-radius:50%;background:radial-gradient(circle at 50% 52%,rgba(255,248,221,.18),transparent 58%),color-mix(in srgb,var(--marker-accent) 24%,rgba(2,7,8,.78));box-shadow:0 0 0 2px #080d0fb8,0 0 18px color-mix(in srgb,var(--marker-accent) 34%,transparent),0 9px 18px #00000057;pointer-events:none}.turn-corner-marker:after{content:"";position:absolute;inset:-5px;border:1px solid color-mix(in srgb,var(--marker-accent) 48%,transparent);border-radius:50%;opacity:.72}.turn-corner-marker img{position:relative;z-index:1;width:70%;height:70%;object-fit:contain;filter:drop-shadow(0 5px 6px rgba(0,0,0,.38))}.turn-corner-marker span{position:absolute;z-index:2;right:-5px;bottom:-3px;border:1px solid color-mix(in srgb,var(--marker-accent) 54%,rgba(255,255,255,.22));border-radius:999px;padding:2px 5px;background:#080d0fe0;color:var(--ink);font-size:clamp(.48rem,.9vw,.56rem);font-weight:1000;line-height:1;text-transform:uppercase;box-shadow:0 4px 10px #00000047}.turn-corner-marker-top-left{top:calc(var(--marker-board-y) + var(--marker-corner-offset));left:calc(var(--marker-board-x) + var(--marker-corner-offset))}.turn-corner-marker-top-right{top:calc(var(--marker-board-y) + var(--marker-corner-offset));left:calc(var(--marker-board-x) + var(--marker-board-size) - var(--marker-corner-offset));transform:translate(-100%)}.turn-corner-marker-bottom-left{top:calc(var(--marker-board-y) + var(--marker-board-size) - var(--marker-corner-offset));left:calc(var(--marker-board-x) + var(--marker-corner-offset));transform:translateY(-100%)}.turn-corner-marker-bottom-right{top:calc(var(--marker-board-y) + var(--marker-board-size) - var(--marker-corner-offset));left:calc(var(--marker-board-x) + var(--marker-board-size) - var(--marker-corner-offset));transform:translate(-100%,-100%)}.turn-corner-marker-red{--marker-accent: var(--red)}.turn-corner-marker-green{--marker-accent: var(--green)}.turn-corner-marker-yellow{--marker-accent: var(--yellow)}.turn-corner-marker-blue{--marker-accent: var(--blue)}.local-corner-controls{position:absolute;inset:clamp(10px,1.7vw,16px);z-index:5;pointer-events:none}.local-seat-control{--side-accent: var(--gold);position:absolute;display:grid;grid-template-columns:16px minmax(0,1fr) auto;align-items:center;gap:7px;width:clamp(112px,20vw,160px);min-height:44px;border:1px solid color-mix(in srgb,var(--side-accent) 44%,rgba(255,255,255,.18));border-left-width:6px;border-radius:8px;padding:6px 7px;background:linear-gradient(145deg,color-mix(in srgb,var(--side-accent) 18%,transparent),#080d0fd6),#080d0fd1;color:#fff8ea;box-shadow:0 8px 18px #00000057,inset 0 1px #ffffff1f;opacity:.78;pointer-events:auto}.local-seat-control:disabled{cursor:default;opacity:.78}.local-seat-control-active{opacity:1;border-color:color-mix(in srgb,var(--side-accent) 76%,#ffffff 12%);box-shadow:0 0 0 3px color-mix(in srgb,var(--side-accent) 18%,transparent),0 10px 24px #0000005c,inset 0 1px #ffffff24}.local-seat-control-yellow{top:0;left:0;transform:rotate(180deg)}.local-seat-control-blue{top:0;right:0;transform:rotate(180deg)}.local-seat-control-green{bottom:0;left:0}.local-seat-control-red{right:0;bottom:0}.local-seat-copy{display:grid;gap:1px;min-width:0;text-align:left}.local-seat-copy strong,.local-seat-copy em{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.local-seat-copy strong{font-size:.78rem;line-height:1.05}.local-seat-copy em{color:#fff8eab8;font-size:.58rem;font-style:normal;font-weight:1000;line-height:1;text-transform:uppercase}.local-seat-die{display:grid;place-items:center;width:28px;aspect-ratio:1;border-radius:6px;background:#fffdf8f0}.local-seat-die .dice-face{width:19px}.local-seat-die .dice-face-hidden:after{color:#284051;font-size:.82rem}.local-seat-die .dice-pip{width:4px}.pixi-board-loading:before,.pixi-board-loading:after{content:"";position:absolute;inset:clamp(18px,6vw,44px);border-radius:10px;pointer-events:none}.pixi-board-loading:before{background:linear-gradient(90deg,transparent,rgba(255,248,222,.28),transparent),#fff6da14;background-size:220% 100%;animation:board-loading-sheen 1.15s ease-in-out infinite}.pixi-board-loading:after{inset:50%;width:42px;height:42px;margin:-21px 0 0 -21px;border:4px solid rgba(255,248,222,.28);border-top-color:#fff8dec7;border-radius:50%;animation:board-loading-spin .8s linear infinite}.pixi-board-canvas{position:relative;z-index:1;display:block;width:100%;height:100%}.ludo-board{--cell: calc(100% / 15);position:relative;display:grid;grid-template-columns:repeat(15,1fr);width:min(100%,78vh);aspect-ratio:1;margin:0 auto;border:0;border-radius:12px;background:linear-gradient(135deg,rgba(255,255,255,.16),transparent 34%),var(--asset-board-layer),#2b1a0e;box-shadow:0 0 0 clamp(6px,1vw,10px) #1f1209eb,0 4px #8f5a2c,0 18px 44px #170d0761,inset 0 0 0 2px #fff5d642;overflow:hidden}.board-cell{border:0;background:transparent;box-shadow:none}.yard-cell.red-zone,.yard-cell.green-zone,.yard-cell.yellow-zone,.yard-cell.blue-zone{background:transparent}.yard-spot{background-image:none}.track-cell{background:transparent;box-shadow:none}.safe-cell,.home-lane.red-lane,.home-lane.green-lane,.home-lane.yellow-lane,.home-lane.blue-lane{background:transparent}.finish-cell{background:transparent;border-color:transparent}.token{position:absolute;left:calc((var(--x) + .5) * var(--cell));top:calc((var(--y) + .5) * var(--cell));width:clamp(28px,5.8vw,52px);height:clamp(28px,5.8vw,52px);transform:translate(-50%,-50%) translate(var(--dx),var(--dy)) scale(var(--stack-scale, 1));border:2px solid rgba(255,248,221,.96);border-radius:50%;background-color:#fff7dae0;background-repeat:no-repeat;background-position:center;background-size:78%;box-shadow:0 0 0 1px #27180da8,inset 0 1px 1px #ffffff9e;filter:drop-shadow(0 4px 4px rgba(25,13,5,.3));color:#fff;font-weight:1000;z-index:2}.token:disabled{opacity:1}.token-index{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.token-red{background-image:var(--asset-red-pawn)}.token-green{background-image:var(--asset-green-pawn)}.token-yellow{background-image:var(--asset-yellow-pawn);color:#172026}.token-blue{background-image:var(--asset-blue-pawn)}.token-legal{outline:0;animation:pulse 1s ease-in-out infinite;filter:drop-shadow(0 0 .42rem rgba(255,255,255,.96)) drop-shadow(0 0 .8rem rgba(27,21,16,.9)) drop-shadow(0 4px 4px rgba(25,13,5,.28))}.token-finished{filter:drop-shadow(0 0 .65rem rgba(255,246,185,.98)) drop-shadow(0 4px 4px rgba(25,13,5,.28))}.game-panel{position:sticky;top:18px;overflow:hidden;background:var(--game-panel-bg);border-color:#f2e1c233;box-shadow:0 24px 60px #0000007a,inset 0 0 0 1px #fff7db14,inset 0 -16px 32px #0000002e}.game-panel-header{display:grid;gap:14px;margin-bottom:16px}.turn-card{--turn-accent: var(--gold);position:relative;display:grid;grid-template-columns:72px 1fr;gap:12px;align-items:center;border:1px solid rgba(240,224,196,.18);border-radius:8px;padding:10px 10px 10px 14px;background:linear-gradient(135deg,#d9b6531f,#02070829),linear-gradient(135deg,#1e2727f5,#101617f0);color:#fff8ea;box-shadow:inset 0 1px #fff3d31c,0 12px 24px #00000042;overflow:hidden}.turn-card:before{content:"";position:absolute;inset:0 auto 0 0;width:5px;background:var(--turn-accent);box-shadow:0 0 16px #d9b65333}.turn-card-red{--turn-accent: var(--red)}.turn-card-green{--turn-accent: var(--green)}.turn-card-yellow{--turn-accent: var(--yellow)}.turn-card-blue{--turn-accent: var(--blue)}.turn-card-ready{border-color:#d9b653b8;box-shadow:inset 0 1px #fff3d329,0 0 0 3px #d9b65329,0 14px 30px #00000047}.turn-card-capture{border-color:#e5382ed6;background:linear-gradient(135deg,#ff5a502e,#02070829),linear-gradient(135deg,#3a190ff5,#231210f0);box-shadow:inset 0 1px #ffe8cf38,0 0 0 3px #e5382e38,0 16px 34px #42160a47}.turn-card-capture .turn-copy strong{color:#ffe3d8;text-shadow:0 0 12px rgba(255,118,86,.34)}.turn-copy{display:grid;gap:4px}.turn-copy span{color:#fff8eaad;font-size:.75rem;font-weight:900;text-transform:uppercase}.turn-copy strong{color:#fff8ea;font-size:1.1rem}.dice{position:relative;display:grid;place-items:center;width:68px;aspect-ratio:1;border-radius:8px;padding:0;background:radial-gradient(circle at 30% 25%,rgba(255,255,255,.86),transparent 12%),linear-gradient(145deg,#fffdf8,#e5d8bf);border:1px solid rgba(94,63,34,.2);color:#211914;font-size:2rem;font-weight:1000;box-shadow:inset 0 2px 2px #ffffffe6,inset 0 -5px 9px #52382424,0 13px 24px #190d052e}.dice:disabled{cursor:default;opacity:1}.dice-ready{animation:dice-ready-pulse 1.1s ease-in-out infinite;border-color:#d9b653db;box-shadow:inset 0 2px 2px #ffffffe6,inset 0 -5px 9px #52382424,0 0 0 3px #d9b6535c,0 0 20px #d9b6533d,0 14px 28px #190d0542}.dice-face{position:relative;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:42px;aspect-ratio:1}.dice-face-hidden:after{content:"?";position:absolute;inset:0;display:grid;place-items:center;color:#284051;font-size:1.55rem;font-weight:1000;line-height:1}.dice-pip{justify-self:center;align-self:center;width:10px;aspect-ratio:1;border-radius:50%;background:#211914;box-shadow:inset 0 1px 1px #ffffff2e,0 1px 1px #ffffff80;opacity:0}.dice-pip-active{opacity:1}.dice-pip-top-left{grid-column:1;grid-row:1}.dice-pip-top-right{grid-column:3;grid-row:1}.dice-pip-middle-left{grid-column:1;grid-row:2}.dice-pip-center{grid-column:2;grid-row:2}.dice-pip-middle-right{grid-column:3;grid-row:2}.dice-pip-bottom-left{grid-column:1;grid-row:3}.dice-pip-bottom-right{grid-column:3;grid-row:3}.game-panel .player-stack{gap:8px}.game-panel .player-chip{background:var(--subtle-card-bg);border-color:#f2e1c229;box-shadow:inset 0 1px #ffffff14}.game-panel .player-chip-active{border-color:#d9b6536b;box-shadow:inset 0 1px #ffffff1a,0 0 0 2px #d9b65321}.game-panel .player-chip-self{background:linear-gradient(145deg,rgba(82,230,162,.07),transparent 46%),#f2e1c212}.start-roll-card{margin-top:14px;border:1px solid rgba(242,225,194,.16);border-radius:8px;background:#f2e1c20f;overflow:hidden}.start-roll-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:10px}.start-roll-chip{display:grid;gap:3px;min-width:0;border:1px solid rgba(242,225,194,.13);border-left-width:6px;border-radius:8px;padding:9px 10px;background:var(--subtle-card-bg)}.start-roll-chip strong,.start-roll-chip em{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.start-roll-chip strong{color:var(--ink);font-size:.82rem;line-height:1.1}.start-roll-chip em{color:var(--muted);font-size:.7rem;font-style:normal;font-weight:900;text-transform:uppercase}.start-roll-chip-active{border-color:#d9b65370;box-shadow:inset 0 1px #ffffff1a,0 0 0 2px #d9b65321}.turn-log-card{margin-top:16px;border:1px solid rgba(242,225,194,.16);border-radius:8px;background:#f2e1c20f;overflow:hidden}.turn-log-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid rgba(242,225,194,.1);padding:10px 12px;background:#02070838}.turn-log-heading .side-picker-title{margin:0}.turn-log-heading span{color:var(--muted);font-size:.72rem;font-weight:900;text-transform:uppercase}.turn-log{display:flex;flex-direction:column;gap:0;max-height:210px;overflow:auto;scrollbar-color:rgba(242,225,194,.34) rgba(242,225,194,.08)}.turn-log p{margin:0;border-bottom:1px solid rgba(242,225,194,.1);padding:9px 10px;color:var(--muted);font-size:.9rem}.turn-log p:last-child{border-bottom:0}:root[data-theme=light] .topbar .eyebrow,:root[data-theme=light] .app-shell-compact .eyebrow{text-shadow:none}:root[data-theme=light] .connection-pill,:root[data-theme=light] .theme-toggle{box-shadow:0 12px 28px #5b43221f}:root[data-theme=light] .card-number{background:linear-gradient(180deg,#d5a1432e,#d5a1430f),#fffffab8}:root[data-theme=light] .empty-state,:root[data-theme=light] .lobby-row,:root[data-theme=light] .seat-meter,:root[data-theme=light] .lobby-meta-row span,:root[data-theme=light] .side-picker,:root[data-theme=light] .piece-color-picker,:root[data-theme=light] .rule-toggle,:root[data-theme=light] .bot-manager,:root[data-theme=light] .rules-section,:root[data-theme=light] .side-swatch,:root[data-theme=light] .turn-log-card{background:linear-gradient(145deg,rgba(255,255,255,.46),transparent 42%),#78542512}:root[data-theme=light] .lobby-row:hover:not(:disabled),:root[data-theme=light] .side-swatch:hover:not(:disabled){background:linear-gradient(145deg,rgba(255,255,255,.62),transparent 42%),#a96f181a}:root[data-theme=light] .toggle-track{border-color:#5640263d;background:#684f2e29;box-shadow:inset 0 1px 3px #56402629,0 4px 12px #5b43221f}:root[data-theme=light] .toggle-thumb{background:#fffaf0}:root[data-theme=light] .rule-toggle-pending{border-color:#a96f185c;background:linear-gradient(145deg,rgba(255,255,255,.58),transparent 42%),#d5a14321;box-shadow:inset 0 1px #ffffff8a,0 0 0 3px #d5a1431f,0 10px 22px #5b43221f}:root[data-theme=light] .rule-status-pending{color:#8a5a11}:root[data-theme=light] .rule-status-pending:before{border-color:#8a5a113d;border-top-color:#8a5a11}:root[data-theme=light] .side-swatch-red.active{background:linear-gradient(90deg,color-mix(in srgb,var(--side-accent, var(--red)) 22%,transparent),#fffaeff0)}:root[data-theme=light] .side-swatch-green.active{background:linear-gradient(90deg,color-mix(in srgb,var(--side-accent, var(--green)) 20%,transparent),#fffaeff0)}:root[data-theme=light] .side-swatch-yellow.active{background:linear-gradient(90deg,color-mix(in srgb,var(--side-accent, var(--yellow)) 22%,transparent),#fffaeff0)}:root[data-theme=light] .side-swatch-blue.active{background:linear-gradient(90deg,color-mix(in srgb,var(--side-accent, var(--blue)) 20%,transparent),#fffaeff0)}:root[data-theme=light] .turn-card{background:linear-gradient(135deg,#a96f181f,#fffffa5c),linear-gradient(135deg,#fffcf3f5,#eee0c6f0);color:var(--ink)}:root[data-theme=light] .turn-copy span{color:#665847d6}:root[data-theme=light] .turn-copy strong{color:var(--ink)}:root[data-theme=light] .turn-card-capture{background:linear-gradient(135deg,#d7332f29,#fffffa57),linear-gradient(135deg,#fff6eff5,#f0dacbf0)}:root[data-theme=light] .turn-card-capture .turn-copy strong{color:#8b241f;text-shadow:none}:root[data-theme=light] .turn-log-heading{background:#78542514}@keyframes pulse{50%{transform:translate(-50%,-66%) translate(var(--dx),var(--dy)) scale(calc(var(--stack-scale, 1) * 1.09))}}@keyframes board-loading-sheen{0%{background-position:160% 0}to{background-position:-60% 0}}@keyframes board-loading-spin{to{transform:rotate(360deg)}}@keyframes dice-ready-pulse{50%{filter:brightness(1.07)}}@keyframes quick-action-confirm{0%{transform:translateY(1px) scale(.985)}60%{transform:translateY(-1px) scale(1.01)}to{transform:translateY(0) scale(1)}}@keyframes rule-status-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.pixi-board-loading:before,.pixi-board-loading:after,.rule-status-pending:before,.token-legal,.dice-ready{animation:none}}@media(max-width:860px){.app-shell{padding:18px}.topbar,.home-layout,.lobby-layout,.game-layout{grid-template-columns:1fr}.topbar{display:grid}.connection-pill{justify-self:start}.topbar-actions{justify-content:flex-start}.home-layout{grid-template-areas:"launch" "code" "local" "public"}.lobby-meta-row{grid-template-columns:1fr}.public-panel{min-height:320px}.empty-state{min-height:220px}.seat-title-row{grid-template-columns:18px minmax(0,1fr)}.seat-badge{grid-column:2}.game-panel{position:static}.pixi-board-host{width:100%;max-width:100%;aspect-ratio:1}.local-seat-control{width:clamp(98px,32vw,132px);min-height:40px;grid-template-columns:13px minmax(0,1fr) auto;gap:5px;padding:5px 6px}.local-seat-control .color-dot{width:13px}.local-seat-copy strong{font-size:.7rem}.local-seat-copy em{font-size:.52rem}.local-seat-die{width:24px}.ludo-board{width:100%}}
