:root{--bg-page:#0f1419;--bg-panel:#0d1117;--bg-card:#121820;--bg-card-hover:#161d27;--bg-table:#090e14;--bg-muted-hover:#343f4f;--bg-entry:#0f1620;--bg-main:#0a0e14;--bg-deep:#0e1318;--bg-row-alt:#2a3b4b;--bg-row-hover:#1a2330;--bg-row-alt-hover:#234;--bg-panel-elevated:#141b24;--bg-hero-hover:#161d28;--border:#2a3441;--border-hover:#4a5a6e;--border-strong:#4a6580;--border-input:#2a3a4d;--border-muted:#2a3a4a;--border-soft:#3a4554;--table-divider:#1e2836;--table-divider-soft:#1e2834;--text-primary:#e7ecf1;--text-heading:#e6edf3;--text-bright:#e2e8f0;--text-body:#e7ecf1;--text-secondary:#c5d0db;--text-muted:#9db0c5;--text-subtle:#94a3b8;--text-dim:#6b8299;--text-sys:#6a7a8a;--text-table:#8a9aaa;--text-submit:#c9d4e0;--text-warn:#f5a962;--text-caution:#f5c962;--text-link:#7eb3ff;--text-fail:#f07e7e;--text-white:#fff;--player-1-fill:#60a5fa;--player-2-fill:#f87171;--player-1-accent:#93c5fd;--player-2-accent:#fca5a5;--btn-primary-bg:#3d7dd6;--btn-primary-bg-hover:#4a8ae0;--btn-primary-bg-alt-hover:#3a68c8;--btn-ghost-color:#c5d0db;--btn-ghost-border:#3a4654;--btn-ghost-border-hover:#5a6a7d;--btn-danger-color:#e06060;--btn-danger-border:#6a2828;--btn-danger-hover-bg:#3a1818;--btn-danger-hover-border:#c04040;--btn-danger-hover-color:#f08080;--btn-cancel-bg:#2a1010;--btn-cancel-hover:#4a2020;--btn-cancel-border:#6a2525;--btn-confirm-bg:#1a2e1a;--btn-confirm-hover:#243824;--btn-confirm-color:#7dd6a0;--btn-confirm-border:#2a5a3a;--hex-preview-bg:#1a2332;--vptag-p1:#1d4ed8;--vptag-p2:#b91c1c;--vptag-neutral:#ca8a04;--vptag-neutral-text:#1a1a1a;--sidebar-active-bg:#243040;--scr-input-bg:#141d28;--scr-input-hover:#ffd479;--accent-blue:#4a90e2;--accent-sky:#8ec5f0;--accent-link-alt:#7dbbda;--accent-link-soft:#4a8de0;--print-bg:#fff;--print-text:#111;--print-muted:#333;--print-border:#eee;--print-surface:#f5f5f5;--print-surface-alt:#f9f9f9;--print-surface-soft:#f0f0f5;--print-caption:#555;--print-faint:#999;--bg-section:#1a2430;--bg-section-alt:#1a2230;--bg-section-deep:#1a2030;--bg-section-line:#1a2028;--bg-info-deep:#0e1e35;--bg-info:#1a2a3a;--bg-info-mid:#243a4a;--border-control:#4a5568;--border-control-soft:#5c6778;--border-info:#2a4a6a;--border-info-strong:#2a4a7a;--text-caption:#6b7d90;--text-panel:#e8eef4;--text-lead-blue:#7eb8f0;--warn-bg:#5a4a2a;--warn-bg-deep:#1a1408;--danger-bg-deep:#3a1a1a;--danger-bg-darker:#1a0808;--danger-bg-mid:#4a2a2a;--success-bg:#1a4a2e;--success-bg-deep:#0a1410;--success-bright:#5eeb9a;--docs-callout-bg:#121a28;--docs-callout-border:#3b4a6b;--docs-muted:#b8c5d4;--print-faint-alt:#666;--print-border-strong:#ddd}.site-header{border-bottom:1px solid var(--border);background:var(--bg-card)}.header-inner{justify-content:space-between;align-items:center;gap:1rem;max-width:64rem;margin:0 auto;padding:.75rem 1.5rem;display:flex}.header-start{align-items:center;gap:1.5rem;min-width:0;display:flex}.brand-link{white-space:nowrap;cursor:pointer;background:0 0;border:none;align-items:center;gap:.5rem;padding:0;text-decoration:none;display:flex}.brand-logo{width:auto;height:24px}.brand-text{color:var(--text-primary);font-weight:700;font:inherit}.brand-link:hover .brand-text,.brand-link:visited .brand-text{color:var(--text-primary)}nav{gap:1rem;display:flex}nav button.nav-link{color:var(--text-muted);cursor:pointer;font-size:.95rem;font:inherit;background:0 0;border:none;padding:0;text-decoration:none}nav button.nav-link[aria-current=page]{color:var(--text-primary);font-weight:600}.header-auth{flex-shrink:0;align-items:center;gap:.75rem;display:flex}.user{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;max-width:10rem;font-size:.9rem;overflow:hidden}.user-profile-btn{text-overflow:ellipsis;max-width:10rem;overflow:hidden}.backdrop{z-index:1100;background:color-mix(in srgb, var(--danger-bg-deep) 55%, transparent);justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.dialog{background:var(--bg-panel-elevated);border:1px solid var(--btn-cancel-border);width:100%;max-width:24rem;color:var(--text-panel);border-radius:.5rem;padding:1.25rem 1.35rem;box-shadow:0 12px 40px #00000080}.dialog h2{margin:0 0 .65rem;font-size:1.15rem;font-weight:650}.dialog p{color:var(--text-subtle);margin:0 0 1rem;font-size:.92rem;line-height:1.45}.dialog-actions{gap:.5rem;margin-top:.25rem;display:flex}.dialog-actions .btn{flex:1;width:auto}.profile-dialog{max-width:26rem}.dialog-option-list{flex-direction:column;gap:.35rem;margin:0 0 .75rem;display:flex}.dialog-option-list .btn{justify-content:flex-start;width:100%}.play-setup-dialog{max-width:20rem}.play-setup-game-title{color:var(--text-heading);margin:0 0 .35rem;font-weight:600}.play-setup-hint{color:var(--text-muted);margin:0 0 .75rem;font-size:.85rem;line-height:1.4}.profile-section{margin:0 0 1rem}.profile-section-title{margin:0 0 .4rem;font-size:.95rem;font-weight:600}.profile-identity{flex-direction:column;gap:.15rem;margin:0;display:flex}.profile-name{color:var(--text-panel);font-weight:600}.profile-email{font-size:.85rem}.profile-hint{margin:.35rem 0 0;font-size:.82rem}.profile-field{flex-direction:column;gap:.35rem;margin:.75rem 0 0;font-size:.9rem;display:flex}.profile-select{font:inherit;border:1px solid var(--border);background:var(--bg-card);color:var(--text-primary);border-radius:.375rem;padding:.4rem .5rem;font-size:.9rem}.btn{cursor:pointer;font:inherit;white-space:nowrap;border:1px solid #0000;border-radius:.375rem;justify-content:center;align-items:center;padding:.45rem .9rem;font-size:.875rem;font-weight:500;text-decoration:none;transition:background .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--btn-primary-bg);color:var(--text-white);border-color:var(--btn-primary-bg)}.btn-primary:hover:not(:disabled){background:var(--btn-primary-bg-hover)}.btn-ghost{color:var(--btn-ghost-color);border-color:var(--btn-ghost-border);background:0 0}.btn-ghost:hover:not(:disabled){border-color:var(--btn-ghost-border-hover);color:var(--text-primary)}.btn-danger{color:var(--btn-danger-color);border-color:var(--btn-danger-border);background:0 0}.btn-danger:hover:not(:disabled){background:var(--btn-danger-hover-bg);border-color:var(--btn-danger-hover-border);color:var(--btn-danger-hover-color)}.btn-compact{padding:.25rem .5rem;font-size:.82rem}.btn-row-equal{flex-direction:row;align-items:stretch;gap:.35rem;width:100%;display:flex}.btn-row-equal>.btn{text-align:center;white-space:normal;flex:1 1 0;justify-content:center;min-width:0}.btn-player-1{background:var(--player-1-fill);border-color:var(--player-1-fill);color:var(--text-white)}.btn-player-1:hover:not(:disabled){filter:brightness(1.08)}.btn-player-2{background:var(--player-2-fill);border-color:var(--player-2-fill);color:var(--text-white)}.btn-player-2:hover:not(:disabled){filter:brightness(1.08)}.btn-back{background:var(--bg-info);color:var(--accent-link-alt);border:1px solid var(--border-info);font:inherit;cursor:pointer;white-space:nowrap;border-radius:.3rem;padding:.25rem .5rem;font-size:.72rem}.btn-back:hover:not(:disabled){background:var(--bg-info-mid)}.card{background:var(--bg-card);border-bottom:1px solid var(--border);flex-shrink:0;padding:.65rem .75rem}.sidebar-card{background:var(--bg-card);border-bottom:1px solid var(--border);flex-direction:column;flex-shrink:0;padding:.35rem .5rem;display:flex}.card-stack{flex-direction:column;gap:.4rem;display:flex}.btn-row{flex-flow:wrap;align-items:center;gap:.35rem;display:flex}.split-wrap{overflow:hidden}.split-main{flex:1;grid-template-columns:minmax(0,1fr) minmax(16rem,22rem);gap:0;min-height:0;display:grid;overflow:hidden}.split-main-units,.split-main-roster{grid-template-columns:minmax(0,1fr) minmax(38rem,56rem)}.split-main-primary,.split-main-aside{flex-direction:column;min-width:0;min-height:0;display:flex}.split-main-aside{border-left:1px solid var(--border)}.split-main-primary .panel-content,.split-main-aside .panel-content{overflow-y:auto}.card-expandable{flex-direction:column;flex:1 1 0;min-height:0;display:flex}.card-header{margin-bottom:.75rem}.card-sidebar-header{justify-content:space-between;align-items:center;margin-bottom:.2rem;padding-bottom:.15rem;display:flex}.card-sidebar-title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:0;font-size:.65rem;font-weight:600;line-height:1}.panel-badges{flex-wrap:wrap;gap:.4rem;display:flex}.header-badge{border:1px solid var(--border);background:var(--bg-card);color:var(--text-muted);white-space:nowrap;border-radius:999px;align-items:baseline;gap:.35rem;padding:.2rem .5rem;font-weight:500;display:inline-flex}.badge-label{text-transform:uppercase;letter-spacing:.06em;opacity:.55;font-weight:700}.badge-waiting{border-color:var(--warn-bg);color:var(--text-caution);background:var(--warn-bg-deep)}.badge-pending{border-color:var(--ui-selected);color:var(--text-bright);background:color-mix(in srgb, var(--ui-selected) 18%, var(--bg-panel))}.badge-joined{border-color:var(--btn-confirm-border);color:var(--btn-confirm-color);background:var(--success-bg-deep)}.badge-rejected{border-color:var(--btn-cancel-border);color:var(--btn-cancel-color);background:color-mix(in srgb, var(--btn-cancel-border) 14%, var(--bg-panel))}.badge-conn-none{border-color:var(--btn-cancel-border);color:var(--text-fail);background:var(--danger-bg-darker)}.badge-conn-partial{border-color:var(--warn-bg);color:var(--text-caution);background:var(--warn-bg-deep)}.badge-conn-both{border-color:var(--btn-confirm-border);color:var(--btn-confirm-color);background:var(--success-bg-deep)}.badge-unsaved{border:1px solid var(--warn-bg);background:var(--warn-bg-deep);color:var(--text-caution);letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;border-radius:.2rem;flex:none;align-items:center;margin:0;padding:0 .28rem;font-size:.58rem;font-weight:700;line-height:1;display:inline-flex}.badge-unsaved-hidden{visibility:hidden}.sidebar-badge{letter-spacing:.02em;text-transform:uppercase;border-radius:.25rem;padding:.15rem .5rem;font-size:.72rem;font-weight:600;display:inline-block}.sidebar-badge.status-waiting{background:var(--border);color:var(--text-heading)}.sidebar-badge.status-playing{background:var(--success-bg);color:var(--success-bright)}.sidebar-badge.status-ended{background:var(--danger-bg-mid);color:var(--text-fail)}.sidebar-badge.connected{background:var(--success-bg);color:var(--success-bright)}.sidebar-badge.disconnected{background:var(--danger-bg-mid);color:var(--text-fail)}.muted{color:var(--text-muted);margin:0;font-size:.85rem}.warn{color:var(--text-warn);margin:0;font-size:.85rem;font-style:italic}.sidebar-text{color:var(--text-body);margin:0 0 .5rem;font-size:.76rem;line-height:1.4}.sidebar-text-muted{color:var(--text-muted)}.sidebar-text-warn{color:var(--text-warn);font-style:italic}.sidebar-player-title{margin:0;font-size:.82rem;font-weight:600}.sidebar-player-title.player1{color:var(--text-link)}.sidebar-player-title.player2{color:var(--text-fail)}.panel-header{border-bottom:1px solid var(--border);color:var(--text-heading);text-align:left;flex-shrink:0;margin:0;padding:.45rem 0 .25rem;font-size:.82rem;font-weight:600}.panel-header.player1{color:var(--text-link)}.panel-header.player2{color:var(--text-fail)}.panel-subheader{color:var(--text-muted);letter-spacing:.02em;font-size:.72rem;font-weight:400;line-height:1.3}.detail-section{margin-bottom:1rem}.detail-summary{border-bottom:1px solid var(--border);flex-direction:column;gap:.35rem;margin-bottom:1rem;padding-bottom:.75rem;display:flex}.detail-meta{color:var(--text-muted);font-weight:400}.detail-modifier-active{color:var(--text-heading);font-weight:500}.detail-list{color:var(--text-heading);margin:0;padding:0;font-size:.82rem;list-style:none}.detail-list li{border-bottom:1px solid var(--table-divider);padding:.2rem 0}.detail-list li.detail-hex-pts{border-bottom:none;padding-bottom:0;font-weight:600}.detail-list li.detail-unit-nested{padding-left:.85rem;font-weight:400}.detail-unit-pts{justify-content:space-between;gap:.5rem;display:flex}.detail-empty{color:var(--text-muted);margin:0;font-size:.82rem;font-style:italic}.detail-muted{color:var(--text-muted);font-weight:400}.declaration-summary{flex-direction:column;gap:.35rem;margin-bottom:.55rem;display:flex}.declaration-unit{padding-left:.75rem}.sidebar-stat{color:var(--text-submit);margin:0;font-size:.82rem;line-height:1.5}.sidebar-stat-indent{color:var(--text-muted);padding-left:.85rem}.sidebar-stat-frontage{border-top:1px solid var(--table-divider);margin-top:.55rem;padding-top:.35rem}.sidebar-stat strong{color:var(--text-heading);font-variant-numeric:tabular-nums}.sidebar-section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);border-bottom:1px solid var(--table-divider);margin:0 0 .4rem;padding-bottom:.2rem;font-size:.62rem}.sidebar-action-btn{cursor:pointer;border:none;border-radius:.25rem;align-items:center;gap:.4rem;padding:.4rem .75rem;font-size:.76rem;font-weight:600;transition:background .15s;display:inline-flex}.sidebar-action-btn.primary{background:var(--btn-primary-bg);color:var(--text-white)}.sidebar-action-btn.primary:hover:not(:disabled){background:var(--btn-primary-bg-hover)}.sidebar-action-btn:disabled{opacity:.5;cursor:not-allowed}.sidebar-divider{border:none;border-top:1px solid var(--border);margin:.75rem 0}.sidebar-collapsible-header{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--text-heading);justify-content:space-between;align-items:center;padding:.5rem 0;font-size:.76rem;font-weight:600;display:flex}.sidebar-collapsible-header:hover{color:var(--text-link)}.idle-reconnect-card{flex-direction:column;gap:.65rem;display:flex}.idle-reconnect-text{color:var(--text-muted);margin:0;font-size:.85rem;line-height:1.4}.summary-item{border-bottom:none;justify-content:space-between;align-items:center;padding:.2rem 0;font-size:.76rem;display:flex}.summary-item.summary-total{border-bottom:2px solid var(--border);padding-top:.2rem;padding-bottom:.2rem}.summary-label{color:var(--text-muted)}.summary-value{color:var(--text-heading);font-weight:600}.summary-value-left{margin-left:.5rem;margin-right:auto}.snapshot-meta-table{border-collapse:collapse;width:auto;margin:.35rem 0}.snapshot-meta-table th,.snapshot-meta-table td{text-align:left;vertical-align:baseline;font-size:inherit;padding:.15rem 0;line-height:1.35}.snapshot-meta-table th{color:var(--text-muted);white-space:nowrap;padding-right:1.25rem;font-weight:500}.snapshot-meta-table td{color:var(--text-heading);white-space:nowrap;font-weight:600}.summary-total{color:var(--text-warn);font-weight:700}.table-cell{font-size:.76rem}.table-header{letter-spacing:.02em;font-size:.72rem}.font-body{font-size:.76rem}.font-small{font-size:.72rem}.text-left{text-align:left}.hex-preview{flex-direction:column;align-items:stretch;gap:.2rem;display:flex}.hex-preview-top{flex-direction:row;align-items:flex-start;gap:.4rem;min-width:0;display:flex}.hex-preview-svg{background:var(--hex-preview-bg);border-radius:6px;flex-shrink:0;display:block}.hex-preview-meta{flex:1;grid-template-columns:auto 1fr;align-content:start;gap:.2rem .55rem;min-width:0;margin:0;font-size:.78rem;display:grid}.hex-preview-meta div{display:contents}.hex-preview-meta dt{color:var(--text-subtle);margin:0;font-weight:500}.hex-preview-meta dd{color:var(--text-bright);margin:0}.vp-tag{border-radius:3px;margin-left:.35rem;padding:0 .3rem;font-size:.7rem;font-weight:600;display:inline-block}.vp-tag.p1{background:var(--vptag-p1);color:var(--text-white)}.vp-tag.p2{background:var(--vptag-p2);color:var(--text-white)}.vp-tag.neutral{background:var(--vptag-neutral);color:var(--vptag-neutral-text)}.action-buttons{gap:.4rem;display:flex}.btn-cancel{background:var(--danger-bg-deep);color:var(--text-fail);border:1px solid var(--btn-cancel-border);font:inherit;cursor:pointer;border-radius:.375rem;flex:1;padding:.4rem .6rem;font-size:.78rem}.btn-cancel:hover:not(:disabled){background:var(--btn-cancel-hover)}.btn-cancel:disabled{opacity:.45;cursor:not-allowed}.btn-confirm{background:var(--btn-confirm-bg);color:var(--btn-confirm-color);border:1px solid var(--btn-confirm-border);font:inherit;cursor:pointer;border-radius:.375rem;flex:1;padding:.4rem .6rem;font-size:.78rem}.btn-confirm:hover:not(:disabled){background:var(--btn-confirm-hover)}.btn-confirm:disabled{opacity:.45;cursor:not-allowed}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.card-toggle{text-align:center;min-width:5rem}body{background:var(--bg-page);color:var(--text-primary);margin:0;font-family:system-ui,sans-serif}.app{flex-direction:column;min-height:100vh;display:flex}.app>main{box-sizing:border-box;flex:1;width:100%;max-width:64rem;margin:0 auto;padding:1.5rem}
