*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{color:#eee;background:#0e0e0e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--surface-0:#0e0e0e;--surface-1:#151517;--surface-2:#1c1c1f;--surface-3:#242428;--surface-4:#2c2c31;--surface-overlay:#18181b;--scrim:#0000009e;--border-subtle:#232327;--border:#34343a;--border-strong:#45454d;--text-1:#ececf0;--text-2:#a6a6b2;--text-3:#74747f;--text-disabled:#54545c;--text-on-accent:#0b0b0d;--accent:var(--faction-accent,#d4af37);--accent-dim:var(--faction-accent-dim,#d4af3766);--accent-bg:var(--faction-accent-bg,#d4af3714);--accent-text:var(--faction-text,#f0d877);--color-success:#3ad17a;--color-success-bg:#3ad17a1f;--color-warning:#e6b53c;--color-warning-bg:#e6b53c1f;--color-danger:#e25563;--color-danger-bg:#e255631f;--color-info:#4a90e2;--color-info-bg:#4a90e21f;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-xl:14px;--radius-pill:999px;--shadow-1:0 1px 2px #0006;--shadow-2:0 4px 12px #00000073;--shadow-3:0 12px 32px #0000008c;--shadow-inset-accent:inset 0 0 0 1px var(--accent-dim);--font-ui:-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-display:"Oswald", "Bebas Neue", "Roboto Condensed", var(--font-ui);--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--fs-xs:11px;--fs-sm:12px;--fs-md:13px;--fs-base:14px;--fs-lg:16px;--fs-xl:20px;--fs-2xl:28px;--fs-3xl:36px;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--lh-tight:1.15;--lh-normal:1.45;--tracking-wide:.04em;--tracking-wider:.08em;--dur-fast:.12s;--dur-med:.2s;--dur-slow:.32s;--ease-standard:cubic-bezier(.2, 0, 0, 1);--ease-out:cubic-bezier(.16, 1, .3, 1);--focus-ring:0 0 0 2px var(--surface-0), 0 0 0 4px var(--accent-dim);--z-overlay:900;--z-modal:1000;--z-popover:1100;--z-tooltip:1200}@media (prefers-reduced-motion:reduce){:root{--dur-fast:0s;--dur-med:0s;--dur-slow:0s}}.ui-btn{justify-content:center;align-items:center;gap:var(--space-2);font-family:var(--font-ui);font-weight:var(--fw-semibold);white-space:nowrap;border-radius:var(--radius-md);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--dur-fast) var(--ease-standard), border-color var(--dur-fast) var(--ease-standard), color var(--dur-fast) var(--ease-standard), box-shadow var(--dur-fast) var(--ease-standard);border:1px solid #0000;line-height:1;display:inline-flex}.ui-btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.ui-btn:disabled{opacity:.45;cursor:not-allowed}.ui-btn--block{width:100%}.ui-btn--sm{font-size:var(--fs-xs);padding:4px 8px}.ui-btn--md{font-size:var(--fs-sm);padding:6px 12px}.ui-btn--lg{font-size:var(--fs-base);padding:9px 18px}.ui-btn--secondary{background:var(--surface-3);border-color:var(--border-strong);color:var(--text-1)}.ui-btn--secondary:hover:not(:disabled){background:var(--surface-4)}.ui-btn--ghost{color:var(--text-2);background:0 0}.ui-btn--ghost:hover:not(:disabled){background:var(--surface-3);color:var(--text-1)}.ui-btn--secondary[aria-pressed=true],.ui-btn--ghost[aria-pressed=true]{background:var(--accent-bg);border-color:var(--accent-dim);color:var(--accent-text)}.ui-btn--primary{background:var(--accent);border-color:var(--accent);color:var(--text-on-accent)}.ui-btn--primary:hover:not(:disabled){filter:brightness(1.1);box-shadow:0 0 12px var(--accent-dim)}.ui-btn--success{background:var(--color-success);border-color:var(--color-success);color:var(--text-on-accent)}.ui-btn--success:hover:not(:disabled){filter:brightness(1.08)}.ui-btn--danger{border-color:var(--color-danger);color:var(--color-danger);background:0 0}.ui-btn--danger:hover:not(:disabled){background:var(--color-danger-bg)}.ui-input{width:100%;font-family:var(--font-ui);background:var(--surface-3);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-1);transition:border-color var(--dur-fast) var(--ease-standard), box-shadow var(--dur-fast) var(--ease-standard)}.ui-input::placeholder{color:var(--text-3)}.ui-input--sm{font-size:var(--fs-sm);padding:5px 8px}.ui-input--md{font-size:var(--fs-base);padding:8px 10px}.ui-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-dim);outline:none}.ui-input--invalid{border-color:var(--color-danger)}.ui-input--invalid:focus{box-shadow:0 0 0 2px var(--color-danger-bg)}.ui-field{gap:var(--space-1);flex-direction:column;display:flex}.ui-field--inline{align-items:center;gap:var(--space-3);flex-direction:row}.ui-field-label{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-2);letter-spacing:var(--tracking-wide);text-transform:uppercase}.ui-field-control{min-width:0;display:flex}.ui-field-control>*{flex:1;min-width:0}.ui-field-help{font-size:var(--fs-xs);color:var(--text-3)}.ui-field-error{font-size:var(--fs-xs);color:var(--color-danger)}.ui-select-trigger{justify-content:space-between;align-items:center;gap:var(--space-2);width:100%;font-family:var(--font-ui);background:var(--surface-3);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-1);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-standard);display:inline-flex}.ui-select-trigger--sm{font-size:var(--fs-sm);padding:5px 8px}.ui-select-trigger--md{font-size:var(--fs-base);padding:8px 10px}.ui-select-trigger:hover{border-color:var(--border-strong)}.ui-select-trigger:focus-visible{box-shadow:var(--focus-ring);outline:none}.ui-select-trigger[data-placeholder]{color:var(--text-3)}.ui-select-icon{color:var(--text-3);font-size:10px}.ui-select-content{background:var(--surface-overlay);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-3);padding:var(--space-1);z-index:var(--z-popover);min-width:var(--radix-select-trigger-width);max-height:var(--radix-select-content-available-height)}.ui-select-viewport{padding:2px}.ui-select-item{justify-content:space-between;align-items:center;gap:var(--space-3);font-size:var(--fs-sm);color:var(--text-1);border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;outline:none;padding:6px 10px;display:flex}.ui-select-item[data-highlighted]{background:var(--accent-bg);color:var(--accent-text)}.ui-select-item[data-state=checked]{color:var(--accent-text)}.ui-select-item[data-disabled]{color:var(--text-disabled);pointer-events:none}.ui-select-item-indicator{color:var(--accent);font-size:11px}.ui-select-scroll{height:18px;color:var(--text-3);cursor:default;justify-content:center;align-items:center;display:flex}.ui-seg{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-md);gap:2px;padding:2px;display:inline-flex}.ui-seg-item{font-family:var(--font-ui);font-weight:var(--fw-semibold);color:var(--text-2);border-radius:calc(var(--radius-md) - 2px);cursor:pointer;transition:background var(--dur-fast) var(--ease-standard), color var(--dur-fast) var(--ease-standard);background:0 0;border:none}.ui-seg--sm .ui-seg-item{font-size:var(--fs-xs);padding:3px 10px}.ui-seg--md .ui-seg-item{font-size:var(--fs-sm);padding:5px 14px}.ui-seg-item:hover{color:var(--text-1);background:var(--surface-3)}.ui-seg-item[data-state=on]{background:var(--accent);color:var(--text-on-accent)}.ui-seg-item:focus-visible{box-shadow:var(--focus-ring);outline:none}.ui-tabs-list{gap:var(--space-1);border-bottom:1px solid var(--border-subtle);display:flex}.ui-tab-trigger{font-family:var(--font-ui);font-size:var(--fs-sm);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-3);padding:var(--space-2) var(--space-3);cursor:pointer;transition:color var(--dur-fast) var(--ease-standard), border-color var(--dur-fast) var(--ease-standard);background:0 0;border:none;border-bottom:2px solid #0000}.ui-tab-trigger:hover{color:var(--text-1)}.ui-tab-trigger[data-state=active]{color:var(--accent-text);border-bottom-color:var(--accent)}.ui-tab-trigger:focus-visible{box-shadow:var(--focus-ring);outline:none}.ui-tooltip{background:var(--surface-overlay);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow-2);color:var(--text-1);font-size:var(--fs-xs);line-height:var(--lh-normal);max-width:280px;z-index:var(--z-tooltip);animation:ui-fade-in var(--dur-fast) var(--ease-out);padding:6px 9px}.ui-tooltip-arrow{fill:var(--surface-overlay)}.ui-overlay{background:var(--scrim);z-index:var(--z-modal);animation:ui-fade-in var(--dur-med) var(--ease-out);position:fixed;inset:0}.ui-modal{background:var(--surface-overlay);border:1px solid var(--border);border-radius:var(--radius-lg);width:92vw;max-height:88vh;box-shadow:var(--shadow-3);z-index:var(--z-modal);animation:ui-modal-in var(--dur-med) var(--ease-out);flex-direction:column;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.ui-modal--sm{max-width:420px}.ui-modal--md{max-width:560px}.ui-modal--lg{max-width:820px}.ui-modal--xl{max-width:1100px}.ui-modal--full{width:96vw;max-width:96vw;height:92vh;max-height:92vh}.ui-modal-head{justify-content:space-between;align-items:flex-start;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border-subtle);display:flex}.ui-modal-titles{flex-direction:column;gap:2px;display:flex}.ui-modal-title{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:var(--fw-bold);letter-spacing:var(--tracking-wide);color:var(--text-1);margin:0}.ui-modal-desc{font-size:var(--fs-sm);color:var(--text-2);margin:0}.ui-modal-close,.ui-drawer .ui-modal-close{width:28px;height:28px;color:var(--text-2);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:1px solid #0000;flex:none;justify-content:center;align-items:center;font-size:20px;line-height:1;display:inline-flex}.ui-modal-close:hover{background:var(--surface-3);color:var(--text-1)}.ui-modal-body{padding:var(--space-5);overflow:auto}.ui-modal-footer{justify-content:flex-end;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);border-top:1px solid var(--border-subtle);display:flex}.ui-drawer{background:var(--surface-overlay);max-width:96vw;box-shadow:var(--shadow-3);z-index:var(--z-modal);flex-direction:column;display:flex;position:fixed;top:0;bottom:0}.ui-drawer--right{border-left:1px solid var(--border);animation:ui-slide-left var(--dur-med) var(--ease-out);right:0}.ui-drawer--left{border-right:1px solid var(--border);animation:ui-slide-right var(--dur-med) var(--ease-out);left:0}.ui-drawer-head{padding:var(--space-4) var(--space-4);border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;display:flex}.ui-drawer-title{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:var(--fw-bold);letter-spacing:var(--tracking-wide);color:var(--text-1);margin:0}.ui-drawer-body{padding:var(--space-4);flex:1;overflow:auto}.ui-drawer-footer{gap:var(--space-2);padding:var(--space-3) var(--space-4);border-top:1px solid var(--border-subtle);justify-content:flex-end;display:flex}.ui-popover{background:var(--surface-overlay);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-3);color:var(--text-1);padding:var(--space-3);font-size:var(--fs-sm);max-width:320px;z-index:var(--z-popover);animation:ui-fade-in var(--dur-fast) var(--ease-out)}.ui-popover-arrow{fill:var(--surface-overlay)}.ui-card{background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-lg)}.ui-card--pad-none{padding:0}.ui-card--pad-sm{padding:var(--space-3)}.ui-card--pad-md{padding:var(--space-4)}.ui-card--interactive{cursor:pointer;transition:border-color var(--dur-fast), background var(--dur-fast), transform var(--dur-fast)}.ui-card--interactive:hover{border-color:var(--border-strong);background:var(--surface-3)}.ui-card--accent{border-left:3px solid var(--accent)}.ui-chip{align-items:center;gap:var(--space-1);font-family:var(--font-ui);font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-2);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-pill);cursor:pointer;transition:background var(--dur-fast), border-color var(--dur-fast), color var(--dur-fast);padding:3px 10px;display:inline-flex}.ui-chip:hover{border-color:var(--border-strong);color:var(--text-1)}.ui-chip--on{background:var(--accent);border-color:var(--accent);color:var(--text-on-accent)}.ui-chip:focus-visible{box-shadow:var(--focus-ring);outline:none}.ui-badge{font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;border-radius:var(--radius-sm);align-items:center;gap:3px;padding:1px 6px;line-height:1.5;display:inline-flex}.ui-badge--neutral{background:var(--surface-3);color:var(--text-2)}.ui-badge--accent{background:var(--accent-bg);color:var(--accent-text)}.ui-badge--success{background:var(--color-success-bg);color:var(--color-success)}.ui-badge--warning{background:var(--color-warning-bg);color:var(--color-warning)}.ui-badge--danger{background:var(--color-danger-bg);color:var(--color-danger)}.ui-badge--info{background:var(--color-info-bg);color:var(--color-info)}.ui-badge--outline{background:0 0;border:1px solid}.ui-kbd{min-width:18px;height:18px;font-family:var(--font-mono);font-size:10px;font-weight:var(--fw-semibold);color:var(--text-2);background:var(--surface-1);border:1px solid var(--border-strong);border-radius:var(--radius-sm);border-bottom-width:2px;justify-content:center;align-items:center;padding:0 4px;line-height:1;display:inline-flex}@keyframes ui-fade-in{0%{opacity:0}to{opacity:1}}@keyframes ui-modal-in{0%{opacity:0;transform:translate(-50%,-48%)scale(.97)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@keyframes ui-slide-left{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes ui-slide-right{0%{transform:translate(-100%)}to{transform:translate(0)}}.ui-toast-viewport{left:50%;bottom:var(--space-5);z-index:1300;gap:var(--space-2);pointer-events:none;flex-direction:column;align-items:center;max-width:min(92vw,560px);display:flex;position:fixed;transform:translate(-50%)}.ui-toast{pointer-events:auto;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-3) var(--space-3) var(--space-4);background:var(--surface-overlay);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-3);color:var(--text-1);border-left-width:3px;font-size:.85rem;line-height:1.35;animation:.16s ease-out ui-toast-in;display:flex}.ui-toast--error{border-left-color:var(--color-danger);background:linear-gradient(var(--color-danger-bg), var(--color-danger-bg)), var(--surface-overlay)}.ui-toast--success{border-left-color:var(--color-success);background:linear-gradient(var(--color-success-bg), var(--color-success-bg)), var(--surface-overlay)}.ui-toast--info{border-left-color:var(--color-info);background:linear-gradient(var(--color-info-bg), var(--color-info-bg)), var(--surface-overlay)}.ui-toast-msg{white-space:pre-line;flex:1}.ui-toast-close{color:var(--text-3);cursor:pointer;background:0 0;border:none;flex:none;padding:0 2px;font-size:1.1rem;line-height:1}.ui-toast-close:hover{color:var(--text-1)}@keyframes ui-toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.ui-toast{animation:none}}:root{--faction-accent:#d4af37;--faction-accent-dim:#d4af3766;--faction-accent-bg:#d4af3714;--faction-text:#f0d877}body[data-active-faction=tau]{--faction-accent:#c6a86a;--faction-accent-dim:#c6a86a66;--faction-accent-bg:#c6a86a14;--faction-text:#f0d8a0}body[data-active-faction=space-marines]{--faction-accent:#3a6ea5;--faction-accent-dim:#3a6ea566;--faction-accent-bg:#3a6ea51a;--faction-text:#a0c8f0}body[data-active-faction=chaos-space-marines]{--faction-accent:#8b1a1a;--faction-accent-dim:#8b1a1a66;--faction-accent-bg:#8b1a1a1a;--faction-text:#f0a0a0}.app{grid-template:"top top"44px"side board"1fr/320px 1fr;width:100vw;height:100vh;display:grid}.topbar{color:#eee;background:#111;border-bottom:1px solid #333;grid-area:top;align-items:center;gap:16px;padding:0 16px;display:flex}.rendermode-toggle{border:1px solid #3a3a3a;border-radius:6px;display:inline-flex;overflow:hidden}.rendermode-seg{color:#aaa;cursor:pointer;background:#1a1a1a;border:none;padding:4px 12px;font-size:13px;font-weight:600;transition:background .12s,color .12s}.rendermode-seg:hover{color:#ddd;background:#242424}.rendermode-seg.active{color:#fff;background:#4a90e2}.rendermode-seg+.rendermode-seg{border-left:1px solid #3a3a3a}.topbar h1{margin:0;font-size:16px;font-weight:600}.phase-indicator{color:#9aa;font-size:12px}.tool-btn{color:#ddd;cursor:pointer;background:#222;border:1px solid #444;border-radius:4px;margin-left:auto;padding:4px 12px;font-size:12px}.tool-btn:hover{background:#2c2c2c}.tool-btn.active{color:#111;background:#d4af37;border-color:#d4af37}.tool-btn.primary{color:#111;background:#2c5;border-color:#2c5;font-weight:600}.tool-btn.primary:hover{background:#3d6}.owner-tag{color:#aab;vertical-align:middle;background:#2a2a2a;border:1px solid #444;border-radius:2px;padding:1px 4px;font-size:10px}.flag-on{color:#f93;font-weight:600}.flag-off{color:#444}.phase-action{padding:6px 0}.kind-charge .dice-summary{color:#f55}.kind-phase .dice-summary{color:#5cf}.kind-fight .dice-summary{color:#fc6}.kind-move .dice-summary{color:#8c8}.hint.warn{color:#f93;font-style:normal}.move-modes{gap:4px;padding:6px 0;display:flex}.mode-btn{color:#ccc;cursor:pointer;background:#222;border:1px solid #333;border-radius:3px;flex:1;padding:4px 6px;font-size:11px}.mode-btn:hover:not(:disabled){background:#2c2c2c}.mode-btn.on{color:#111;background:#2a5;border-color:#2a5;font-weight:600}.mode-btn:disabled{color:#555;cursor:not-allowed}.scoreboard{background:#1c1c1c;border:1px solid #2c2c2c;border-radius:4px;align-items:center;gap:6px;margin-left:8px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-flex}.score-p1{color:#4a90e2}.score-p2{color:#e24a4a}.score-sep{color:#555;font-weight:400}.score-sub{color:#777;font-size:10px;font-weight:400}.obj-list{flex-direction:column;gap:2px;display:flex}.obj-row{color:#aaa;background:#1c1c1c;border-left:3px solid #555;border-radius:3px;grid-template-columns:32px 1fr 28px;align-items:center;gap:6px;padding:3px 6px;font-size:12px;display:grid}.obj-row.ctrl-player1{border-left-color:#4a90e2}.obj-row.ctrl-player2{border-left-color:#e24a4a}.obj-row.ctrl-neutral{border-left-color:#d4af37}.obj-id{color:#ccc;font-weight:600}.obj-bar{gap:6px;display:flex}.obj-p1{color:#4a90e2}.obj-p2{color:#e24a4a}.obj-vs{color:#555}.obj-owner{text-align:right;color:#ddd;font-weight:600}.cp-board{background:#1c1822;border-color:#2a2433}.strat-list{flex-direction:column;gap:4px;display:flex}.strat-row{background:#1c1c1c;border:1px solid #2a2a2a;border-radius:3px;padding:6px 8px;font-size:12px}.strat-row.disabled{opacity:.45}.strat-head{grid-template-columns:1fr 48px 56px;align-items:center;gap:6px;display:grid}.strat-name{color:#ddd;font-weight:600}.strat-cost{text-align:right;color:#fb6;font-size:11px;font-weight:600}.strat-btn{color:#111;cursor:pointer;background:#2a5;border:none;border-radius:3px;padding:3px 6px;font-size:11px;font-weight:600}.strat-btn:hover:not(:disabled){background:#3d6}.strat-btn:disabled{color:#666;cursor:not-allowed;background:#333}.strat-timing{color:#788;margin-top:3px;font-size:11px;font-style:italic}.strat-used{color:#c66;margin-top:2px;font-size:10px;font-weight:600}.roster-overlay{z-index:1000;background:#000000bf;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.roster-modal{color:#ddd;background:#161616;border:1px solid #333;border-radius:6px;flex-direction:column;width:min(1100px,95vw);max-height:90vh;display:flex}.roster-head{border-bottom:1px solid #2a2a2a;align-items:center;gap:12px;padding:12px 16px;display:flex}.roster-head h1{margin:0;font-size:16px}.roster-sub{color:#888;font-size:12px}.roster-actions{gap:8px;margin-left:auto;display:flex}.roster-body{grid-template-columns:1fr 1fr;gap:12px;padding:12px;display:grid;overflow-y:auto}.roster-col{background:#1c1c1c;border:1px solid #2a2a2a;border-radius:4px;padding:8px}.roster-col.tone-p1{border-top:2px solid #4a90e2}.roster-col.tone-p2{border-top:2px solid #e24a4a}.col-head{align-items:center;gap:8px;margin-bottom:8px;display:flex}.col-head h2{margin:0;font-size:14px}.col-head select{color:#ddd;background:#222;border:1px solid #444;border-radius:3px;padding:3px 6px;font-size:12px}.points-total{color:#888;margin-left:auto;font-size:12px;font-weight:600}.points-total.over{color:#e85}.roster-split{grid-template-columns:1fr 1fr;gap:8px;display:grid}.roster-available h3,.roster-picks h3{text-transform:uppercase;color:#9aa;letter-spacing:.06em;margin:0 0 6px;font-size:11px}.ds-pick{color:#ddd;cursor:pointer;text-align:left;background:#222;border:1px solid #2a2a2a;border-radius:3px;grid-template-columns:1fr 60px;align-items:center;gap:6px;width:100%;margin-bottom:3px;padding:6px 8px;font-family:inherit;font-size:12px;display:grid}.ds-pick:hover{background:#2c2c2c}.ds-pick-name{color:#ddd;font-weight:500}.ds-pick-pts{color:#fb6;text-align:right;font-size:11px}.ds-remove{color:#f99;cursor:pointer;background:#3a2222;border:1px solid #4a2a2a;border-radius:2px;width:18px;height:18px;padding:0;font-size:14px;line-height:1}.ds-remove:hover{background:#5a2a2a}.tip-anchor{cursor:help;border-bottom:1px dotted #555;position:relative}.tip-bubble{z-index:9999;color:#ddd;pointer-events:none;text-align:left;background:#1c1c1c;border:1px solid #444;border-radius:4px;width:260px;padding:8px 10px;font-size:11px;font-style:normal;font-weight:400;line-height:1.45;position:fixed;box-shadow:0 4px 18px #00000080}.board-host{background:#1a1a1a;overflow:hidden}.board-host canvas{display:block}.sidebar{color:#ccc;background:#161616;border-left:1px solid #333;flex-direction:column;grid-area:side;min-height:0;font-size:13px;display:flex;overflow:hidden}.sidebar h2{text-transform:uppercase;color:#9aa;letter-spacing:.06em;margin:16px 0 6px;font-size:12px}.sidebar h2:first-child{margin-top:0}.sidebar ul{margin:0;padding:0;list-style:none}.sidebar li{align-items:center;gap:8px;padding:4px 0;display:flex}.swatch{border:1px solid #444;border-radius:2px;width:12px;height:12px;display:inline-block}.swatch.ring{background:0 0;border-radius:50%}.swatch.ring.p1{border:1px solid #4a90e280}.swatch.ring.sel{border:2px solid #fff}.swatch.ring.rng{border:1.5px solid #ffaa44b3}.legend-list li{color:#aaa;padding:2px 0;font-size:11px}.sec-list{flex-direction:column;gap:4px;margin-top:4px;display:flex}.sec-row{background:#1c1c1c;border:1px solid #2a2a2a;border-radius:3px;padding:6px 8px}.sec-head{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.sec-name{color:#ddd;flex:1;font-size:12px;font-weight:600}.sec-buttons{flex-wrap:wrap;gap:2px;display:flex}.sec-btn{cursor:pointer;background:#1a1a1a;border:1px solid;border-radius:2px;padding:2px 5px;font-size:10px;font-weight:600}.sec-btn.sec-p1{color:#4a90e2;border-color:#2a3a52}.sec-btn.sec-p2{color:#e24a4a;border-color:#522a2a}.sec-btn:hover{background:#232323}.rule-lookup{background:#1a1a1a;border:1px solid #2a2a2a;border-radius:3px;margin-bottom:4px;padding:6px 8px;font-size:12px}.rule-lookup summary{color:#ddd;cursor:pointer;padding:2px 0;font-weight:600}.rule-lookup p{color:#aab;margin:6px 0 0;font-size:11px;line-height:1.45}.rule-lookup dl{margin:6px 0 0;font-size:11px}.rule-lookup dt{color:#fb6;margin-top:6px;font-weight:600}.rule-lookup dd{color:#aab;margin:2px 0 0;line-height:1.4}.replay-loader{color:#ddd;max-width:600px;margin:40px auto;padding:16px;font-family:sans-serif}.replay-loader h1{font-size:16px}.replay-loader code{background:#1c1c1c;border-radius:3px;padding:2px 6px}.replay-loader .error{color:#e85}.roster-cloud{border-bottom:1px solid #2a2a2a;align-items:center;gap:8px;margin-bottom:8px;padding:6px 0;font-size:12px;display:flex}.roster-cloud .tool-btn{padding:3px 8px;font-size:11px}.roster-cloud select{color:#ddd;background:#222;border:1px solid #444;border-radius:3px;padding:3px 6px;font-size:11px}.replay-loader button{color:#111;cursor:pointer;background:#2c5;border:1px solid #2c5;border-radius:4px;margin-top:12px;padding:6px 12px;font-weight:600}.hint{color:#777;padding:4px 0;font-size:12px;font-style:italic}.ds-card{background:#1e1e1e;border:1px solid #2c2c2c;border-radius:4px;padding:8px}.ds-header{align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);display:flex}.ds-header .ds-title{margin-bottom:0}.ds-title{color:#eee;margin-bottom:4px;font-weight:600}.ds-meta{color:#9aa;margin-bottom:2px;font-size:12px}.weapon-list{flex-direction:column;gap:2px;margin-top:8px;display:flex}.weapon-row{cursor:pointer;border-radius:3px;grid-template-rows:auto auto;grid-template-columns:14px 1fr;column-gap:6px;padding:4px 6px;font-size:12px;display:grid}.weapon-row:hover{background:#242424}.weapon-row.on{background:#2a2a35}.weapon-row input{grid-row:1/3}.weapon-name{color:#ddd;font-weight:500}.weapon-stats{color:#889;grid-column:2;font-size:11px}.fire-btn{color:#fff;cursor:pointer;background:#c33;border:none;border-radius:4px;width:100%;margin-top:12px;padding:8px;font-size:13px;font-weight:600}.fire-btn:disabled{color:#666;cursor:not-allowed;background:#333}.fire-btn:not(:disabled):hover{background:#d44}.dice-log{flex-direction:column;gap:8px;max-height:260px;display:flex;overflow-y:auto}.dice-entry{background:#1c1c1c;border:1px solid #2a2a2a;border-radius:3px;padding:6px 8px}.dice-summary{color:#ddd;margin-bottom:4px;font-size:12px}.dice-detail{color:#889;margin:0;padding:0 0 0 8px;font-size:11px;list-style:none}.dice-detail li{padding:1px 0}.modal-backdrop{z-index:1000;background:#000000bf;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal.token-overrides{color:#ddd;background:#161616;border:1px solid #333;border-radius:6px;flex-direction:column;width:min(900px,95vw);max-height:90vh;display:flex}.modal.wound-allocation{color:#ddd;background:#161616;border:1px solid #d4af37;border-radius:6px;width:min(440px,90vw)}.wound-alloc-list{flex-direction:column;gap:4px;display:flex}.wound-alloc-row{color:#eee;text-align:left;cursor:pointer;background:#1f1f1f;border:1px solid #333;border-radius:4px;grid-template-columns:1fr auto auto;align-items:center;gap:12px;padding:8px 12px;font-size:13px;display:grid}.wound-alloc-row:hover{background:#2a2a2a;border-color:#d4af37}.wound-alloc-role{text-transform:capitalize;font-weight:600}.wound-alloc-wounds{font-variant-numeric:tabular-nums;color:#aaa;font-size:12px}.wound-alloc-warn{color:#ffd;text-transform:uppercase;letter-spacing:.04em;background:#6e1a1a;border-radius:2px;padding:1px 6px;font-size:10px}.modal-header{border-bottom:1px solid #2a2a2a;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.modal-header h2{margin:0;font-size:16px}.overrides-toolbar{border-bottom:1px solid #222;align-items:center;gap:8px;padding:10px 16px;display:flex}.overrides-filter{color:#ddd;background:#0c0c0c;border:1px solid #2a2a2a;border-radius:4px;flex:1;padding:6px 8px}.overrides-toolbar select{color:#ddd;background:#0c0c0c;border:1px solid #2a2a2a;border-radius:4px;padding:6px 8px}.overrides-hint{color:#888;border-bottom:1px solid #1c1c1c;margin:0;padding:8px 16px;font-size:11px}.overrides-hint code{color:#b5b5b5;background:#0c0c0c;border-radius:2px;padding:1px 4px}.overrides-list{flex-direction:column;gap:6px;padding:8px 12px;display:flex;overflow-y:auto}.override-row{background:#1c1c1c;border:1px solid #2a2a2a;border-radius:4px;gap:12px;padding:8px;display:flex}.override-row--custom{border-color:#4a90e2}.override-group{background:#181818;border:1px solid #2a2a2a;border-radius:4px;flex-direction:column;gap:6px;padding:8px;display:flex}.override-group--custom{border-color:#4a90e2}.override-group-header{border-bottom:1px solid #2a2a2a;flex-wrap:wrap;align-items:baseline;gap:8px;padding:0 0 4px 4px;display:flex}.override-group-header>strong{font-size:13px}.override-row--role{background:#1a1a1a;margin-left:12px}.override-slot-label{color:#aaa;align-items:baseline;gap:6px;margin-bottom:4px;font-size:11px;display:flex}.override-slot-name{color:#ddd;font-weight:500}.override-badge--multirole{color:#d4af37;border-color:#d4af37}.override-badge--chapter{color:#6cbe6c;border-color:#6cbe6c}.override-chapter-block{background:#6cbe6c0a;border-left:2px solid #6cbe6c;border-radius:4px;margin:10px 0 4px 16px;padding:6px 8px}.override-chapter-header{align-items:center;gap:10px;margin-bottom:6px;display:flex}.override-chapter-name{color:#6cbe6c;text-transform:uppercase;letter-spacing:.4px;font-size:12px}.override-add-chapter{color:#aaa;border-top:1px dashed #2b2b2b;align-items:center;gap:8px;margin-top:8px;padding:8px 4px 4px;font-size:12px;display:flex}.override-add-chapter-label{color:#ccc}.override-add-chapter-empty{color:#777;font-style:italic}.override-add-chapter select{color:#ddd;background:#161616;border:1px solid #333;border-radius:3px;padding:3px 6px}.override-preview{background:#0c0c0c;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:56px;height:56px;display:flex;overflow:hidden}.override-preview img{object-fit:cover;width:100%;height:100%}.override-preview-empty{background:#222;width:100%;height:100%}.override-info{flex:1;min-width:0}.override-title{align-items:baseline;gap:8px;margin-bottom:4px;display:flex}.override-faction{color:#888;text-transform:uppercase;letter-spacing:.4px;font-size:10px}.override-badge{color:#4a90e2;text-transform:uppercase;letter-spacing:.4px;border:1px solid #4a90e2;border-radius:2px;padding:1px 4px;font-size:9px}.override-row-controls{align-items:center;gap:6px;display:flex}.override-row-controls input[type=text]{color:#ddd;background:#0c0c0c;border:1px solid #2a2a2a;border-radius:3px;flex:1;padding:4px 6px;font-size:11px}.override-upload-btn{cursor:pointer;align-items:center;display:inline-flex}.override-error{color:#c66;margin-top:4px;font-size:10px}.override-row-controls--3d{margin-top:4px}.override-badge--3d{color:#d4af37;border-color:#d4af37}.override-status{color:#8aa9c9;margin-top:4px;font-size:10px}.phase-banner{text-align:center;color:#f0f0f0;pointer-events:none;z-index:9000;background:#000000c7;border:1px solid #ffffff26;border-radius:6px;padding:14px 38px;animation:.9s ease-out forwards phase-banner-flash;position:fixed;top:56px;left:50%;transform:translate(-50%);box-shadow:0 4px 20px #00000080}.phase-banner--player1{border-left:4px solid #4a90e2;border-right:4px solid #4a90e2}.phase-banner--player2{border-left:4px solid #e24a4a;border-right:4px solid #e24a4a}.phase-banner-sub{letter-spacing:2px;opacity:.72;margin-bottom:4px;font-size:11px}.phase-banner-main{letter-spacing:4px;font-size:22px;font-weight:700}@keyframes phase-banner-flash{0%{opacity:0;transform:translate(-50%,-8px)}18%{opacity:1;transform:translate(-50%)}80%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-8px)}}.dice-tray{flex-direction:column;gap:10px;margin-top:4px;display:flex}.dice-tray-entry{background:#ffffff0a;border:1px solid #2a2a2a;border-radius:4px;padding:8px 10px}.dice-tray-summary{color:#aaa;margin-bottom:6px;font-size:10px;line-height:1.3}.dice-tray-row{align-items:center;gap:8px;margin-bottom:3px;display:flex}.dice-tray-step{color:#888;text-transform:uppercase;letter-spacing:.5px;width:42px;font-size:10px}.dice-tray-faces{flex-wrap:wrap;flex:1;gap:1px;display:flex}.die{text-align:center;width:18px;font-size:18px;line-height:1;display:inline-block}.die--good{color:#6cba6c}.die--bad{color:#c66}.die--save-good{color:#6cba6c}.die--save-bad{color:#c66}.mathhammer-preview{background:var(--faction-accent-bg);border-left:2px solid var(--faction-accent);color:#d8d4c0;border-radius:3px;align-items:center;gap:6px;margin-bottom:6px;padding:6px 8px;font-size:11px;display:flex}.mathhammer-preview .mh-label{color:var(--faction-accent);text-transform:uppercase;letter-spacing:.7px;font-size:9px}.mathhammer-preview .mh-stat b{color:#fff;font-size:12px}.mathhammer-preview .mh-sep{color:#555}.detachment-card{background:var(--faction-accent-bg);border-left:3px solid var(--faction-accent);border-radius:3px;margin-bottom:8px;padding:8px 10px}.detachment-name{color:var(--faction-accent);text-transform:uppercase;letter-spacing:1px;margin-bottom:3px;font-size:11px;font-weight:700}.detachment-rule{color:#d8d4c0;font-size:10px;line-height:1.4}.board-area{flex-direction:column;grid-area:board;min-width:0;min-height:0;display:flex;position:relative}.board-area .board-host{flex:1;min-width:0;min-height:0;position:relative}.mode-picker-overlay{z-index:60;background:#000000a8;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.mode-picker-card{background:#14181f;border:1px solid #2c3440;border-radius:12px;width:min(560px,92vw);padding:24px;box-shadow:0 12px 48px #00000080}.mode-picker-title{color:#e6edf3;margin:0 0 16px;font-size:20px}.mode-picker-options{gap:12px;display:grid}.mode-picker-option{text-align:left;cursor:pointer;color:#e6edf3;background:#1b212b;border:1px solid #2c3440;border-radius:10px;grid-template-rows:auto auto;grid-template-columns:36px 1fr;gap:2px 12px;padding:14px 16px;display:grid}.mode-picker-option:hover{background:#232b37;border-color:#3a6ea5}.mode-picker-icon{grid-row:1/3;align-self:center;font-size:26px}.mode-picker-name{font-weight:600}.mode-picker-desc{color:#93a1b0;font-size:13px}.mode-picker-cancel{color:#93a1b0;cursor:pointer;background:0 0;border:none;margin-top:16px}.mode-picker-cancel:hover{color:#e6edf3}.ai-turn-banner{z-index:55;color:#a8d4ff;background:#1e2e3a;border:1px solid #2e5e8a;border-radius:999px;padding:6px 16px;font-size:13px;font-weight:600;position:fixed;top:8px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0006}.empty-state{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:10;pointer-events:auto;background:#080a0ed9;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.empty-state-card{text-align:center;background:#14181f;border:1px solid #2a3140;border-radius:10px;max-width:480px;padding:32px 36px;box-shadow:0 8px 32px #00000080}.empty-state-title{color:#d4af37;letter-spacing:.02em;margin:0 0 8px;font-size:28px}.empty-state-sub{color:#b8bdc7;margin:0 0 22px;font-size:14px;line-height:1.5}.empty-state-actions{justify-content:center;gap:12px;margin-bottom:18px;display:flex}.empty-state-primary,.empty-state-secondary{padding:10px 18px;font-size:14px;font-weight:600}.empty-state-hint{color:#777;margin:0;font-size:12px;font-style:italic}.top-score-strip{color:#eee;background:#141414;border-bottom:1px solid #2a2a2a;flex-wrap:wrap;justify-content:center;align-items:center;gap:22px;padding:8px 14px;font-size:12px;display:flex}.tss-block{align-items:center;gap:6px;display:flex}.tss-side.tss-p1{color:#74a8e2;font-weight:700}.tss-side.tss-p2{color:#e27474;font-weight:700}.tss-sep{color:#555;font-size:10px}.tss-label{color:#888;letter-spacing:1px;margin-left:2px;font-size:9px}.tss-objectives{border-left:1px solid #333;gap:4px;margin-left:4px;padding-left:12px;display:flex}.tss-obj{background:#ffffff08;border:1px solid #0000;border-radius:3px;align-items:center;gap:3px;padding:2px 6px;font-size:10px;display:inline-flex}.tss-obj.ctrl-player1{border-color:#4a90e2}.tss-obj.ctrl-player2{border-color:#e24a4a}.tss-obj-id{color:#d4af37;font-weight:600}.tss-obj-p1{color:#74a8e2}.tss-obj-p2{color:#e27474}.tss-obj-vs{color:#444}.action-bar{color:#ddd;background:linear-gradient(#1c1c1c 0%,#161616 100%);border-bottom:1px solid #2a2a2a;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:8px 14px;display:grid}.action-bar--player1,.action-bar--player2{border-left:4px solid var(--faction-accent)}.ab-phase{align-items:baseline;gap:8px;font-size:13px;display:inline-flex}.ab-turn{color:#888;letter-spacing:1px;font-size:10px}.ab-player{color:#fff;background:#ffffff0f;border-radius:3px;padding:2px 6px;font-size:11px}.action-bar--player1 .ab-player{color:#74a8e2}.action-bar--player2 .ab-player{color:#e27474}.ab-phase-name{text-transform:uppercase;letter-spacing:2px;color:#f0f0f0;font-weight:700}.ab-breadcrumb{align-items:baseline;gap:2px;display:inline-flex}.ab-crumb{letter-spacing:.06em;text-transform:uppercase;color:#6a6a72;border-radius:var(--radius-sm,4px);cursor:help;padding:2px 7px;font-size:11px;font-weight:600}.ab-crumb+.ab-crumb{position:relative}.ab-crumb+.ab-crumb:before{content:"›";color:#44444a;position:absolute;left:-3px}.ab-crumb--active{color:var(--text-on-accent,#0b0b0d);background:var(--faction-accent,#d4af37);font-weight:700}.ab-primary{justify-content:center;align-items:center;gap:10px;display:flex}.ab-phase-hint{color:#888;font-size:11px;font-style:italic}.ab-action-btn{color:#ddd;cursor:pointer;letter-spacing:.5px;background:#2a2a2a;border:1px solid #3a3a3a;border-radius:4px;padding:6px 16px;font-size:12px;font-weight:600;transition:background 80ms,border-color 80ms}.ab-action-btn:hover:not(:disabled){background:#3a3a3a;border-color:#555}.ab-action-btn:disabled{opacity:.4;cursor:not-allowed}.ab-fire{color:#ffd690;background:#5a3e1e;border-color:#8a5e2e}.ab-fire:hover:not(:disabled){background:#7a5424}.ab-charge{color:#ffb0b0;background:#5a1e1e;border-color:#8a2e2e}.ab-charge:hover:not(:disabled){background:#7a2424}.ab-fight{color:#f0c0f0;background:#4a2a4a;border-color:#6a3e6a}.ab-fight:hover:not(:disabled){background:#5a345a}.ab-oath{color:#ffe79a;background:#3a3416;border-color:#8a7a2e}.ab-oath:hover:not(:disabled){background:#524a1f}.ab-pact{color:#ffb0c8;background:#3a1622;border-color:#8a2e4e}.ab-pact:hover:not(:disabled){background:#521f30}.ab-pact-active{color:#ff9ab8;align-self:center;padding:0 8px;font-weight:600}.ab-doctrines{gap:6px;margin-left:8px;display:inline-flex}.ab-doctrine{color:#a8d4ff;text-transform:capitalize;background:#1e2e3a;border-color:#2e5e8a}.ab-doctrine:hover:not(:disabled){background:#24405a}.ab-doctrine-active{color:#a8d4ff;text-transform:capitalize;font-weight:600}.ab-next-phase{color:#c6e9d0;background:#1f4a2f;border-color:#2f6a40}.ab-next-phase:hover:not(:disabled){background:#295e3a}.tabbed-rail{flex-direction:column;height:100%;display:flex}.tabbed-rail-tabs{background:#141414;border-bottom:1px solid #2a2a2a;grid-template-columns:repeat(4,1fr);display:grid}.tab-btn{color:#888;letter-spacing:1px;text-transform:uppercase;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;flex-direction:column;align-items:center;gap:2px;padding:10px 6px;font-size:11px;font-weight:600;transition:color .1s,border-color .1s;display:flex}.tab-btn:hover{color:#ccc}.tab-btn--active{color:#fff;border-bottom-color:var(--faction-accent);background:var(--faction-accent-bg)}.tab-label{font-size:11px}.tab-badge{color:var(--faction-accent);text-transform:none;letter-spacing:0;text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:9px;font-weight:400;display:block;overflow:hidden}.tab-btn--active .tab-badge{color:var(--faction-text)}.tabbed-rail-content{flex:1;min-height:0;padding:12px 14px;overflow-y:auto}.tabbed-rail-content h2{text-transform:uppercase;letter-spacing:1.5px;color:#aaa;margin:18px 0 6px;font-size:11px;font-weight:600}.tabbed-rail-content h2:first-child{margin-top:0}.phase-banner--turn{background:#000000e0;border-width:2px;padding:28px 60px;animation:1.3s ease-out forwards phase-banner-mega;top:80px}.phase-banner--turn.phase-banner--player1{border-left:6px solid #4a90e2;border-right:6px solid #4a90e2}.phase-banner--turn.phase-banner--player2{border-left:6px solid #e24a4a;border-right:6px solid #e24a4a}.phase-banner-mega-sub{letter-spacing:4px;opacity:.75;margin-bottom:8px;font-size:13px}.phase-banner-mega-main{letter-spacing:8px;color:var(--faction-accent);text-shadow:0 0 24px var(--faction-accent-dim);font-size:36px;font-weight:900}@keyframes phase-banner-mega{0%{opacity:0;transform:translate(-50%,-16px)scale(.95)}12%{opacity:1;transform:translate(-50%)scale(1)}80%{opacity:1;transform:translate(-50%)scale(1)}to{opacity:0;transform:translate(-50%,-16px)scale(.95)}}.ab-next-phase{animation:2.4s ease-in-out infinite end-phase-pulse}.ab-next-phase:disabled{animation:none}@keyframes end-phase-pulse{0%,to{box-shadow:0 0 #1f4a2f99}50%{box-shadow:0 0 12px 3px #3a8a5499}}.ability-dock{border-top:1px solid #2a2a2a;border-left:4px solid var(--faction-accent);color:#ddd;background:linear-gradient(#1a1a1a 0%,#161616 100%);flex-wrap:wrap;align-items:center;gap:10px;min-height:48px;padding:8px 14px;font-size:12px;display:flex}.ability-dock--passive{opacity:.7;border-left-color:#555}.dock-label{color:var(--faction-accent);text-transform:uppercase;letter-spacing:1.5px;font-size:10px;font-weight:700}.dock-hint{color:#888;font-size:11px;font-style:italic}.dock-hint--right{margin-left:auto}.dock-tile{color:#ccc;cursor:pointer;letter-spacing:.4px;background:#222;border:1px solid #333;border-radius:3px;padding:6px 12px;font-size:11px;font-weight:600;transition:background 80ms,border-color 80ms,color 80ms}.dock-tile:hover:not(:disabled){background:#2c2c2c;border-color:#555}.dock-tile:disabled{color:#555;cursor:not-allowed;opacity:.5}.dock-tile--active{background:var(--faction-accent);color:#111;border-color:var(--faction-accent);box-shadow:0 0 8px var(--faction-accent-dim);font-weight:700}.dock-tile--active:hover{background:var(--faction-accent)}.dock-weapon,.dock-weapon-card{border:1px solid #333;border-left:3px solid var(--faction-accent-dim);text-align:left;background:linear-gradient(170deg,#222 0%,#1a1a1a 100%);flex-direction:column;align-items:flex-start;gap:3px;min-width:140px;max-width:240px;padding:6px 10px;transition:transform .12s ease-out,box-shadow .12s,border-color .12s;display:inline-flex}.dock-weapon-card:hover:not(:disabled){border-left-color:var(--faction-accent);transform:translateY(-2px);box-shadow:0 4px 12px #00000080}.dock-weapon-card.dock-tile--active{background:var(--faction-accent);color:#111;border-color:var(--faction-accent);border-left-color:var(--faction-accent);box-shadow:0 0 10px var(--faction-accent-dim)}.dock-weapon-name{white-space:nowrap;letter-spacing:.3px;font-size:11px;font-weight:700}.dock-weapon-stats{color:#888;letter-spacing:.4px;white-space:nowrap;font-size:9px}.dock-tile--active .dock-weapon-stats{color:#000000a6}.dock-weapon-keywords{flex-wrap:wrap;gap:2px;margin-top:2px;display:flex}.dock-kw-chip{color:var(--faction-text);border:1px solid var(--faction-accent-dim);letter-spacing:.5px;text-transform:uppercase;cursor:help;background:#ffffff0f;border-radius:8px;padding:1px 5px;font-size:8px;font-weight:700;display:inline-block}.dock-tile--active .dock-kw-chip{color:#000000b3;background:#00000026;border-color:#00000040}.strat-card{border:1px solid #2a2a2a;border-left:3px solid var(--faction-accent);color:#d8d8d8;background:linear-gradient(170deg,#1f1f1f 0%,#181818 100%);border-radius:4px;margin-bottom:8px;padding:10px 12px;font-size:12px;line-height:1.45;transition:transform .1s ease-out,box-shadow .1s ease-out,border-color .1s;position:relative}.strat-card:hover{box-shadow:0 6px 16px #00000080, 0 0 0 1px var(--faction-accent-dim) inset;border-left-color:var(--faction-accent);z-index:2;transform:translateY(-1px)}.strat-card--disabled,.strat-card--used{opacity:.45;filter:grayscale(.35)}.strat-card--used{border-left-color:#555}.strat-card[data-faction=core]{border-left-color:#888}.strat-card[data-faction=tau]{border-left-color:#c6a86a}.strat-card[data-faction=space-marines]{border-left-color:#3a6ea5}.strat-card[data-faction=chaos-space-marines]{border-left-color:#8b1a1a}.strat-card-head{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:4px;display:flex}.strat-card-name{color:#fff;letter-spacing:.3px;font-size:13px;font-weight:700}.strat-card-cost{color:#ffd070;white-space:nowrap;background:#ffc85014;border:1px solid #ffc85040;border-radius:10px;padding:2px 8px;font-size:11px;font-weight:700}.strat-card-timing{color:#7e8a7e;letter-spacing:.3px;margin-bottom:6px;font-size:10px;font-style:italic}.strat-card-text{color:#ccc;margin-bottom:8px;font-size:11px}.strat-card-foot{justify-content:flex-end;align-items:center;display:flex}.strat-card-btn{color:#f0fff0;cursor:pointer;letter-spacing:.5px;background:#2a6b3b;border:1px solid #3d8f55;border-radius:3px;padding:4px 14px;font-size:11px;font-weight:700;transition:background 80ms,transform 80ms}.strat-card-btn:hover{background:#347e48;transform:translate(2px)}.strat-card-used{color:#c66;letter-spacing:1px;font-size:10px;font-weight:700}.strat-card-cant{color:#888;font-size:10px;font-style:italic}.kw-highlight{color:var(--faction-accent);background:var(--faction-accent-bg);border-bottom:1px dotted var(--faction-accent);cursor:help;text-transform:uppercase;letter-spacing:.5px;border-radius:2px;margin:0 1px;padding:0 4px;font-size:.92em;font-weight:700;display:inline}.shot-callout{pointer-events:none;z-index:200;border:1px solid var(--faction-accent);color:#eee;background:#0f0f0ff0;border-radius:5px;min-width:200px;max-width:280px;padding:8px 10px;font-size:11px;line-height:1.4;animation:.16s ease-out shot-callout-in;position:fixed;box-shadow:0 6px 18px #000000b3,inset 0 0 0 1px #0000004d}@keyframes shot-callout-in{0%{opacity:0;transform:translate(-4px,-4px)scale(.96)}to{opacity:1;transform:translate(0)scale(1)}}.sc-head{border-bottom:1px solid #2a2a2a;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px;padding-bottom:4px;display:flex}.sc-weapon{color:var(--faction-accent);letter-spacing:.3px;font-size:11px;font-weight:700}.sc-attackers{color:#aaa;background:#ffffff0a;border:1px solid #2a2a2a;border-radius:8px;padding:1px 6px;font-size:10px}.sc-stats{grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:6px;display:grid}.sc-stat{background:#ffffff08;border-radius:3px;flex-direction:column;align-items:center;padding:4px 0;display:flex}.sc-stat-label{color:#888;text-transform:uppercase;letter-spacing:.5px;font-size:8px}.sc-stat-value{color:#fff;font-size:13px;font-weight:700}.sc-footer{border-top:1px solid #2a2a2a;flex-direction:column;gap:3px;padding-top:4px;display:flex}.sc-headline{color:#ddd;font-size:12px}.sc-headline b{color:var(--faction-accent);font-size:14px}.sc-mod{letter-spacing:.5px;text-transform:uppercase;border-radius:2px;align-self:flex-start;padding:1px 4px;font-size:9px;font-weight:700}.sc-mod-guided{color:#c6a86a;background:#c6a86a1f;border:1px solid #c6a86a66}.sc-mod-dev{color:#e27474;background:#e274741a;border:1px solid #e2747466}.sc-mods{flex-wrap:wrap;gap:3px;display:flex}.sc-mod-attacks{color:#7fb4dd;background:#7fb4dd1f;border:1px solid #7fb4dd66}.sc-mod-hit{color:#c6a86a;background:#c6a86a1f;border:1px solid #c6a86a66}.sc-mod-wound{color:#dd9a5a;background:#dd9a5a1f;border:1px solid #dd9a5a66}.sc-mod-save{color:#e27474;background:#e274741a;border:1px solid #e2747466}.sc-mod-special{color:#b694d9;background:#b694d91f;border:1px solid #b694d966}.sc-mod-risk{color:#e2c14a;background:#e2c14a1a;border:1px dashed #e2c14a99}.strat-card[draggable=true]{cursor:grab}.strat-card[draggable=true]:active{cursor:grabbing}.strat-card--dragging{opacity:.4;transform:rotate(-2deg)scale(.98)}.strat-card-drag-hint{color:#666;letter-spacing:.4px;margin-right:auto;font-size:9px;font-style:italic}.strat-card[draggable=true]:hover .strat-card-drag-hint{color:var(--faction-accent)}.board-area--strat-targeting{outline:2px dashed var(--faction-accent);outline-offset:-6px;animation:1.2s ease-in-out infinite strat-drop-pulse}.board-area--strat-targeting .board-host{cursor:copy}.board-area--strat-targeting:after{content:"DROP TO PLAY STRATAGEM";border:1px solid var(--faction-accent);color:var(--faction-accent);letter-spacing:3px;pointer-events:none;z-index:100;box-shadow:0 0 24px var(--faction-accent-dim);background:#000000c7;border-radius:6px;padding:12px 24px;font-size:14px;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes strat-drop-pulse{0%,to{outline-color:var(--faction-accent-dim)}50%{outline-color:var(--faction-accent)}}.app--strip{grid-template-columns:44px 1fr}.app--strip .tabbed-rail-content{display:none}.app--strip .tab-btn{padding:12px 4px;font-size:0}.app--strip .tab-btn .tab-label{display:none}.app--strip .tab-btn .tab-badge{margin-top:4px;padding:1px 4px;font-size:9px}.app--strip .tab-btn:before{content:attr(data-tab-icon);color:inherit;font-size:16px;font-weight:700;display:block}.app--strip .tabbed-rail-tabs{flex-direction:column}.app--compact{grid-template-columns:0 1fr}.app--compact .sidebar{display:none}.app--compact .board-area{padding-left:0}.roster-filters{border-bottom:1px solid #2a2a2a;flex-direction:column;gap:6px;margin-bottom:8px;padding-bottom:8px;display:flex}.roster-search{color:#ddd;background:#222;border:1px solid #444;border-radius:3px;width:100%;padding:5px 8px;font-size:12px}.roster-search:focus{border-color:var(--faction-accent);outline:none}.roster-chips{flex-wrap:wrap;gap:4px;display:flex}.roster-chip{color:#aaa;letter-spacing:.3px;cursor:pointer;background:#222;border:1px solid #2c2c2c;border-radius:11px;padding:2px 9px;font-size:10px;font-weight:600;transition:background 80ms,border-color 80ms,color 80ms}.roster-chip:hover{color:#ddd;background:#2c2c2c}.roster-chip--on{background:var(--faction-accent-bg);border-color:var(--faction-accent);color:var(--faction-accent)}.roster-chip--clear{color:#888;background:0 0;border-color:#444}.roster-chip--clear:hover{color:#c66;border-color:#c66}.roster-filter-count{color:#666;font-size:10px;font-style:italic}.roster-sort{color:#ddd;letter-spacing:.3px;cursor:pointer;appearance:none;background-color:#222;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M0 0l5 6 5-6z' fill='%23888'/></svg>");background-position:right 6px center;background-repeat:no-repeat;background-size:8px;border:1px solid #2c2c2c;border-radius:11px;padding:2px 22px 2px 9px;font-size:10px;font-weight:600;transition:background-color 80ms,border-color 80ms,color 80ms}.roster-sort:hover{background-color:#2c2c2c;border-color:#3a3a3a}.roster-sort:focus{border-color:var(--faction-accent);outline:none}.roster-sort:disabled{opacity:.5;cursor:not-allowed}.ab-deploy-hint{color:#e8d27a}.ab-deploy-hint b{color:#fff}.deployment-hint-overlay{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:200;cursor:pointer;background:#080a0ec7;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.deployment-hint-card{cursor:default;background:#14181f;border:1px solid #2a3140;border-radius:10px;max-width:520px;padding:28px 32px;box-shadow:0 8px 32px #00000080}.deployment-hint-title{color:#d4af37;letter-spacing:.02em;margin:0 0 12px;font-size:22px}.deployment-hint-body{color:#b8bdc7;margin:0 0 12px;font-size:14px;line-height:1.55}.deployment-hint-body b{color:#e8e8e8}.deployment-hint-ok{margin-top:6px;padding:8px 18px;font-size:14px;font-weight:600}.reserves-drawer{z-index:12;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#14181ff2;border:1px solid #3a4250;border-radius:8px;min-width:240px;max-width:280px;padding:10px 12px;position:absolute;top:12px;right:12px;box-shadow:0 4px 16px #0006}.reserves-drawer-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;display:flex}.reserves-drawer-title{color:#d4af37;letter-spacing:.06em;text-transform:uppercase;font-size:12px;font-weight:700}.reserves-drawer-close{color:#888;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:16px;line-height:1}.reserves-drawer-close:hover{color:#ddd;background:#2a2a2a}.reserves-drawer-hint{color:#888;margin-bottom:8px;font-size:10px;font-style:italic;line-height:1.4}.reserves-drawer-list{flex-direction:column;gap:4px;display:flex}.reserves-drawer-row{cursor:pointer;text-align:left;color:#ddd;background:#1a1f28;border:1px solid #2a3140;border-radius:4px;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;font-size:12px;transition:background-color 80ms,border-color 80ms;display:flex}.reserves-drawer-row:hover:not(:disabled){background:#232a36;border-color:#3a4456}.reserves-drawer-row:disabled{opacity:.55;cursor:not-allowed}.reserves-drawer-row--selected{background:var(--faction-accent-bg);border-color:var(--faction-accent);color:var(--faction-accent)}.reserves-drawer-name{font-weight:600}.reserves-drawer-cta{color:#999;font-size:10px;font-style:italic}.reserves-drawer-row--selected .reserves-drawer-cta{color:var(--faction-accent);font-style:normal;font-weight:600}.reserves-chip{z-index:12;color:#d4af37;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;background:#14181ff2;border:1px solid #3a4250;border-radius:16px;padding:6px 12px;font-size:11px;font-weight:700;transition:background-color 80ms,border-color 80ms;position:absolute;top:12px;right:12px;box-shadow:0 4px 12px #0000004d}.reserves-chip:hover{background:#2a2f3a;border-color:#d4af37}.settings-drawer-overlay{z-index:300;cursor:pointer;background:#080a0e8c;justify-content:flex-end;display:flex;position:fixed;inset:0}.settings-drawer{cursor:default;background:#14181f;border-left:1px solid #2a3140;flex-direction:column;width:340px;max-width:90vw;height:100vh;padding:16px 18px;animation:.16s ease-out settings-slide-in;display:flex;overflow-y:auto;box-shadow:-4px 0 16px #00000080}@keyframes settings-slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}.settings-drawer-head{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.settings-drawer-title{color:#d4af37;letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:16px}.settings-drawer-close{color:#888;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 8px;font-size:22px;line-height:1}.settings-drawer-close:hover{color:#ddd;background:#2a2a2a}.settings-drawer-section{margin-bottom:var(--space-5)}.settings-drawer-section-title{margin:0 0 var(--space-2) 0;font-size:var(--fs-xs);font-weight:var(--fw-bold);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--text-3)}.settings-drawer-section-list{gap:var(--space-2);flex-direction:column;display:flex}.settings-drawer-item{text-align:left;background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-3);color:var(--text-1);cursor:pointer;transition:background-color var(--dur-fast), border-color var(--dur-fast);text-decoration:none;display:block}.settings-drawer-item:hover{background:var(--surface-3);border-color:var(--border-strong)}.settings-drawer-item--active{background:var(--accent-bg);border-color:var(--accent-dim);color:var(--accent-text)}.settings-drawer-item-label{font-size:var(--fs-md);font-weight:var(--fw-semibold);display:block}.settings-drawer-item-hint{font-size:var(--fs-xs);color:var(--text-3);line-height:var(--lh-normal);margin-top:2px;display:block}.settings-drawer-toggle{justify-content:space-between;align-items:center;gap:var(--space-3);background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-3);display:flex}.settings-drawer-toggle-text{min-width:0}.settings-lighting{gap:var(--space-2);background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-3);flex-direction:column;display:flex}.settings-lighting-row{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.settings-lighting-dir{gap:var(--space-1);flex-direction:column;display:flex}.settings-lighting-dir input[type=range]{width:100%;accent-color:var(--accent)}.settings-lighting-deg{color:var(--text-3);font-variant-numeric:tabular-nums}.settings-drawer-footnote{padding-top:var(--space-3);font-size:var(--fs-xs);color:var(--text-3);text-align:center;margin-top:auto}.settings-drawer-footnote kbd{background:var(--surface-1);border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-family:var(--font-mono);color:var(--text-2);padding:1px 5px;font-size:10px}.pause-confirm-actions{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.pause-confirm-actions .tool-btn{flex:1;min-width:110px;padding:8px 12px;font-size:13px}.docs-page{color:#e8e8e8;background:#0c0f14;flex-direction:column;min-height:100vh;display:flex}.docs-page-head{background:#14181f;border-bottom:1px solid #2a3140;align-items:baseline;gap:14px;padding:14px 22px;display:flex}.docs-page-head h1{color:#d4af37;letter-spacing:.02em;margin:0;font-size:18px}.docs-page-sub{color:#888;font-size:12px}.docs-page-head .spacer{flex:1}.docs-page-body{box-sizing:border-box;width:100%;max-width:920px;margin:0 auto;padding:24px 22px}.docs-section{margin-bottom:28px}.docs-section h2{letter-spacing:.06em;text-transform:uppercase;color:#b8bdc7;margin:0 0 12px;font-size:14px}.docs-list{color:#ccc;margin:0;padding-left:22px;font-size:13px;line-height:1.6}.docs-list li{margin-bottom:4px}.docs-dl{margin:0}.docs-dl-row{border-bottom:1px solid #1a1f28;grid-template-columns:130px 1fr;gap:12px;padding:6px 0;font-size:12px;display:grid}.docs-dl-row dt{color:#d4af37;letter-spacing:.03em;font-weight:700}.docs-dl-row dd{color:#b8bdc7;margin:0;line-height:1.5}.docs-hint{color:#888;margin:0;font-size:12px;font-style:italic}.docs-hint code{color:#d4af37;background:#1a1f28;border:1px solid #2a3140;border-radius:3px;padding:1px 5px;font-size:11px}.library-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;display:grid}.library-card{background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-4);color:var(--text-1);cursor:pointer;transition:background-color var(--dur-fast), border-color var(--dur-fast);text-align:left;flex-direction:column;font-family:inherit;text-decoration:none;display:flex}.library-card:hover{background:var(--surface-3);border-color:var(--border-strong)}.library-card--button{width:100%}.library-card--coming-soon{opacity:.55;cursor:default}.library-card--coming-soon:hover{background:var(--surface-2);border-color:var(--border-subtle)}.library-card-title{color:var(--accent-text);font-family:var(--font-display);font-weight:var(--fw-bold);font-size:var(--fs-lg);margin-bottom:var(--space-1);letter-spacing:var(--tracking-wide)}.library-card-sub{margin:0 0 var(--space-2) 0;font-size:var(--fs-sm);color:var(--text-2);line-height:var(--lh-normal)}.library-card-stat{font-size:var(--fs-xs);color:var(--text-3);margin-top:auto;font-style:italic}.maps-toolbar{margin-bottom:var(--space-3);align-items:center;gap:8px;display:flex}.maps-toolbar .spacer{flex:1}.maps-cloud-status{font-size:var(--fs-xs);color:var(--text-3);margin-right:4px}.map-row-name{align-items:center;gap:8px;display:flex}.maps-intro{margin:0 0 var(--space-4) 0;font-size:var(--fs-sm);color:var(--text-2);line-height:var(--lh-normal);max-width:70ch}.maps-intro a{color:var(--accent-text)}.maps-empty{padding:var(--space-6);border:1px dashed var(--border-subtle);border-radius:var(--radius-lg);color:var(--text-2);text-align:center}.maps-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.map-row{justify-content:space-between;align-items:center;gap:var(--space-4);background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4);display:flex}.map-row:hover{border-color:var(--border-strong)}.map-row-main{min-width:0}.map-row-name{font-family:var(--font-display);font-weight:var(--fw-bold);font-size:var(--fs-md);color:var(--text-1);letter-spacing:var(--tracking-wide)}.map-row-meta{font-size:var(--fs-xs);color:var(--text-3);flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;display:flex}.map-row-actions{flex-shrink:0;align-items:center;gap:6px;display:flex}.profile-card{background:#14181f;border:1px solid #2a3140;border-radius:8px;max-width:480px;padding:16px 18px}.profile-card-row{grid-template-columns:100px 1fr;gap:12px;padding:6px 0;font-size:13px;display:grid}.profile-card-label{color:#888;letter-spacing:.04em;text-transform:uppercase;align-self:center;font-size:11px}.profile-card-value{color:#ddd;font-weight:500}.profile-card-actions{gap:8px;margin-top:12px;display:flex}.profile-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.profile-list-row{background:#14181f;border:1px solid #2a3140;border-radius:4px;justify-content:space-between;align-items:center;padding:8px 12px;font-size:12px;display:flex}.profile-list-name{color:#ddd;font-weight:600}.profile-list-meta{color:#888;font-size:11px}.render3-preview{color:#e8e8e8;background:#0c0f14;flex-direction:column;display:flex;position:fixed;inset:0}.render3-preview-head{background:#14181f;border-bottom:1px solid #2a3140;align-items:baseline;gap:14px;padding:12px 18px;display:flex}.render3-preview-head h1{color:#d4af37;letter-spacing:.02em;margin:0;font-size:16px}.render3-preview-sub{color:#888;font-size:11px}.render3-preview-head .spacer{flex:1}.render3-preview-host{flex:1;position:relative;overflow:hidden}.render3-preview-host canvas{display:block}.render3-preview-foot{color:#888;background:#14181f;border-top:1px solid #2a3140;padding:8px 18px;font-size:11px}.render3-preview-error{color:#fa8;background:#2a1a18;border-bottom:1px solid #5a2a28;padding:18px;font-size:13px}.phase-banner-coach{color:#e8d27a;text-align:center;max-width:560px;margin-top:6px;font-size:12px;font-weight:400;line-height:1.45}.coach-tip-stack{flex-direction:column;gap:6px;margin-bottom:10px;display:flex}.coach-tip{background:#1f1a0e;border:1px solid #4a3a18;border-left:3px solid #e8d27a;border-radius:4px;padding:8px 26px 8px 10px;position:relative}.coach-tip--disabled{background:#2a1c10;border-color:#5a3818 #5a3818 #5a3818 #e8a07a}.coach-tip--disabled .coach-tip-title{color:#e8a07a}.coach-tip--phase-end{background:#2a1010;border-color:#5a1818 #5a1818 #5a1818 #ff7070}.coach-tip--phase-end .coach-tip-title{color:#ff9080}.coach-tip-dismiss{color:#888;cursor:pointer;background:0 0;border:none;border-radius:3px;width:18px;height:18px;padding:0;font-size:14px;line-height:1;position:absolute;top:4px;right:4px}.coach-tip-dismiss:hover{color:#eee;background:#444}.coach-tip-title{letter-spacing:.04em;text-transform:uppercase;color:#e8d27a;margin-bottom:4px;font-size:11px;font-weight:700}.coach-tip-body{color:#d4c79a;font-size:12px;line-height:1.5}.unit-hover-tip{pointer-events:none;z-index:150;color:#ddd;background:#0f0f0ff0;border:1px solid #2a2a2a;border-radius:4px;min-width:140px;max-width:240px;padding:5px 8px;font-size:10px;line-height:1.3;animation:.12s ease-out uht-in;position:fixed;transform:translate(-50%,-100%);box-shadow:0 3px 10px #0009}@keyframes uht-in{0%{opacity:0;transform:translate(-50%,calc(4px - 100%))}to{opacity:1;transform:translate(-50%,-100%)}}.unit-hover-tip--player1{border-left:3px solid #4a90e2}.unit-hover-tip--player2{border-left:3px solid #e24a4a}.uht-head{border-bottom:1px solid #2a2a2a;justify-content:space-between;align-items:baseline;gap:6px;margin-bottom:3px;padding-bottom:3px;display:flex}.uht-name{color:#fff;letter-spacing:.2px;font-size:11px;font-weight:700}.uht-owner{color:#aaa;background:#ffffff0f;border-radius:6px;padding:0 5px;font-size:9px}.unit-hover-tip--player1 .uht-owner{color:#74a8e2}.unit-hover-tip--player2 .uht-owner{color:#e27474}.uht-stats{flex-wrap:wrap;gap:6px;display:flex}.uht-stat{color:#888;font-size:10px}.uht-stat b{color:#fff;font-weight:600}.uht-living{color:#888;margin-left:auto}.uht-living b{color:#d4af37}.reserves-list{flex-direction:column;gap:4px;margin-bottom:8px;display:flex}.reserves-row{border:1px solid #d4af3740;border-left:3px solid var(--faction-accent);color:#ddd;cursor:pointer;text-align:left;background:#d4af370f;border-radius:3px;justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;font-size:12px;transition:background 80ms,border-color 80ms;display:flex}.reserves-row:hover{background:#d4af371f}.reserves-row--selected{background:var(--faction-accent-bg);border-color:var(--faction-accent);box-shadow:0 0 8px var(--faction-accent-dim)}.reserves-name{color:#fff;font-weight:600}.reserves-hint{color:var(--faction-accent);font-size:10px;font-style:italic}.ds-reserve-toggle{color:#888;cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid #2c2c2c;border-radius:8px;align-items:center;gap:4px;padding:2px 6px;font-size:10px;display:inline-flex}.ds-reserve-toggle:hover{color:#ccc;border-color:#444}.ds-reserve-toggle.on{border-color:var(--faction-accent);color:var(--faction-accent);background:#d4af371f}.ds-reserve-toggle input[type=checkbox]{width:10px;height:10px;accent-color:var(--faction-accent);margin:0}.ds-picked{color:#ddd;background:#222;border:1px solid #2a2a2a;border-radius:3px;align-items:center;gap:6px;width:100%;padding:6px 8px;display:flex}.ds-picked .ds-pick-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.ds-picked .ds-pick-pts{color:#888;white-space:nowrap;font-size:11px}.ds-picked .ds-remove{color:#888;cursor:pointer;background:0 0;border:0;padding:0 4px;font-size:14px;line-height:1}.ds-picked .ds-remove:hover{color:#c66}.camera-controls{z-index:20;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);-webkit-user-select:none;user-select:none;background:#111111d1;border:1px solid #333;border-radius:8px;flex-direction:column;gap:6px;padding:8px;display:flex;position:absolute;bottom:12px;right:12px}.camera-controls-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.camera-controls-title{text-transform:uppercase;letter-spacing:.5px;color:#888;font-size:11px}.camera-controls-hide{color:#888;cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:16px;line-height:1}.camera-controls-hide:hover{color:#ddd}.camera-controls-row{justify-content:center;gap:4px;display:flex}.camera-controls-dpad{grid-template-columns:repeat(3,1fr);justify-items:center;gap:4px;display:grid}.camera-ctrl-btn{color:#ddd;cursor:pointer;background:#222;border:1px solid #3a3a3a;border-radius:5px;flex-direction:column;justify-content:center;align-items:center;gap:2px;width:38px;height:40px;font-size:15px;line-height:1;transition:background .1s;display:flex}.camera-ctrl-btn:hover{background:#333}.camera-ctrl-btn:active{color:#fff;background:#4a90e2}.camera-ctrl-glyph{line-height:1}.camera-ctrl-key{font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-3);font-size:8px;font-weight:600;line-height:1}.camera-ctrl-btn:hover .camera-ctrl-key{color:var(--text-2)}.camera-ctrl-btn:active .camera-ctrl-key{color:#fff}.camera-ctrl-reset{background:#2a2a2a}.camera-controls-show{z-index:20;color:#ccc;cursor:pointer;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#111111d1;border:1px solid #333;border-radius:8px;width:36px;height:36px;font-size:18px;position:absolute;bottom:12px;right:12px}.camera-controls-show:hover{color:#fff;border-color:#4a90e2}.shooting-targets{z-index:18;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#111111e0;border:1px solid #333;border-radius:8px;flex-direction:column;width:248px;max-height:calc(100% - 96px);display:flex;position:absolute;top:64px;left:12px;overflow:hidden}.shooting-targets-head{border-bottom:1px solid #2a2a2a;justify-content:space-between;align-items:baseline;gap:8px;padding:8px 10px;display:flex}.shooting-targets-title{color:#ddd;white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;overflow:hidden}.shooting-targets-sub{color:#888;white-space:nowrap;font-size:11px}.shooting-targets-list{flex-direction:column;display:flex;overflow-y:auto}.shooting-target-row{text-align:left;cursor:pointer;color:#ccc;background:0 0;border:none;border-bottom:1px solid #222;grid-template-columns:18px 1fr auto auto;grid-template-areas:"los name dist dmg""los notes notes notes";align-items:center;gap:1px 6px;padding:6px 10px;transition:background .1s;display:grid}.shooting-target-row:hover:not(:disabled){background:#4a90e224}.shooting-target-row--active{background:#4a90e242}.shooting-target-row--disabled{cursor:default;opacity:.55}.shooting-target-los{grid-area:los;font-size:15px}.shooting-target-row.los-visible .shooting-target-los{color:#6cd36c}.shooting-target-row.los-cover .shooting-target-los{color:#e8c84a}.shooting-target-row.los-blocked .shooting-target-los{color:#c75c5c}.shooting-target-name{grid-area:name;font-size:12px;font-weight:500}.shooting-target-dist{color:#aaa;font-variant-numeric:tabular-nums;grid-area:dist;font-size:11px}.shooting-target-dmg{color:#8fc8ff;font-variant-numeric:tabular-nums;grid-area:dmg;font-size:11px;font-weight:600}.shooting-target-notes{color:#999;grid-area:notes;font-size:10px;line-height:1.25}.admin-portal{color:#ddd;background:#161616;border:1px solid #333;border-radius:6px;flex-direction:column;width:min(720px,92vw);max-height:90vh;padding:16px;display:flex}.admin-portal .modal-header h2{align-items:center;gap:10px;display:flex}.admin-pending-badge{color:#1a1a1a;background:#e8c84a;border-radius:10px;padding:2px 9px;font-size:11px;font-weight:600}.admin-error{color:#e8a0a0;background:#c75c5c26;border:1px solid #c75c5c;border-radius:6px;margin:8px 0;padding:8px 10px;font-size:13px}.admin-empty{text-align:center;color:#888;padding:24px;font-size:14px}.admin-user-list{flex-direction:column;max-height:56vh;display:flex;overflow-y:auto}.admin-user-row{border-bottom:1px solid #242424;grid-template-columns:1fr auto auto;align-items:center;gap:12px;padding:10px 8px;display:grid}.admin-user-id{flex-direction:column;gap:2px;min-width:0;display:flex}.admin-user-name{color:#e8e8e8;align-items:center;gap:8px;font-size:14px;font-weight:500;display:flex}.admin-self-tag,.admin-role-tag{text-transform:uppercase;letter-spacing:.4px;border-radius:8px;padding:1px 6px;font-size:10px}.admin-self-tag{color:#8fc8ff;background:#2a3a4a}.admin-role-tag{color:#c89fff;background:#3a2a4a}.admin-user-email{color:#888;text-overflow:ellipsis;font-size:12px;overflow:hidden}.admin-status{text-transform:uppercase;letter-spacing:.4px;white-space:nowrap;border-radius:10px;padding:3px 10px;font-size:11px;font-weight:600}.admin-status--approved{color:#6cd36c;background:#6cd36c29}.admin-status--pending{color:#e8c84a;background:#e8c84a29}.admin-status--rejected{color:#d98080;background:#c75c5c29}.admin-user-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.admin-user-actions .tool-btn{padding:4px 10px;font-size:12px}.admin-approve{color:#9ad99a!important;border-color:#4a7a4a!important}.admin-reject{color:#d99a9a!important;border-color:#7a4a4a!important}.admin-user-actions .tool-btn:disabled{opacity:.4;cursor:default}.admin-footnote{color:#777;margin:12px 4px 0;font-size:12px;line-height:1.5}.bs-list{gap:var(--space-2,8px);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.bs-row{align-items:center;gap:var(--space-3,12px);padding:var(--space-2,8px) var(--space-3,12px);background:var(--surface-2,#1c1c1f);border:1px solid var(--border-subtle,#232327);border-radius:var(--radius-md,6px);display:flex}.bs-unit{flex:1;font-weight:600}.bs-roll{color:var(--text-2,#aaa);font-variant-numeric:tabular-nums;font-size:.85rem}.bs-note{margin:var(--space-3,12px) 0 0;color:var(--text-2,#aaa);font-size:.8rem;line-height:1.4}.dock-unit-chip{color:var(--faction-accent,#c6a86a);white-space:nowrap;padding-right:4px;font-size:12px;font-weight:700}.dock-attack-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-left:auto;display:flex}.dock-target-chip{white-space:nowrap;border-radius:4px;padding:4px 8px;font-size:12px}.dock-target-chip.is-set{color:#bff0c8;background:#4caf5024;border:1px solid #4caf5066}.dock-target-chip.is-empty{color:#d8c089;background:#e6b53c1a;border:1px dashed #e6b53c66}.dock-fire-btn{appearance:none;cursor:pointer;font:inherit;color:#ffd690;white-space:nowrap;background:#5a3e1e;border:1px solid #8a5e2e;border-radius:5px;padding:9px 16px;font-size:13px;font-weight:700;transition:background .12s,box-shadow .12s,transform 80ms}.dock-fire-btn:hover:not(:disabled){background:#7a5424;box-shadow:0 0 12px #8a5e2e99}.dock-fire-btn:active:not(:disabled){transform:translateY(1px)}.dock-fire-btn:disabled{opacity:.4;cursor:not-allowed}.dock-fire-btn--fight{color:#f0c0f0;background:#4a2a4a;border-color:#6a3e6a}.dock-fire-btn--fight:hover:not(:disabled){background:#5a345a;box-shadow:0 0 12px #6a3e6a99}.dock-fire-btn--charge{color:#ffb0b0;background:#5a1e1e;border-color:#8a2e2e}.dock-fire-btn--charge:hover:not(:disabled){background:#7a2424;box-shadow:0 0 12px #8a2e2e99}.dock-pact{color:#ffb0c8;background:#3a1622;border-color:#8a2e4e}.dock-pact:hover:not(:disabled){background:#521f30}.dock-pact-active{color:#ff9ab8;white-space:nowrap;font-size:12px;font-weight:600}.unit-portrait{border-radius:var(--radius-md);background:var(--surface-1);border:1px solid var(--border);flex:none;justify-content:center;align-items:center;display:inline-flex;overflow:hidden}.unit-portrait img{object-fit:cover;width:100%;height:100%;display:block}.unit-portrait--fallback{background:var(--surface-3)}.unit-portrait--fallback[data-owner=player1]{background:#4a90e22e;border-color:#4a90e266}.unit-portrait--fallback[data-owner=player2]{background:#e255632e;border-color:#e2556366}.unit-portrait-initials{font-family:var(--font-display);font-weight:var(--fw-bold);font-size:var(--fs-sm);letter-spacing:var(--tracking-wide);color:var(--text-2)}.wt{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.wt-pips{flex-wrap:wrap;gap:3px;display:flex}.wt-pip{background:var(--surface-3);border:1px solid var(--border-subtle);border-radius:2px;width:10px;height:10px}.wt-pip--full{background:var(--color-success);border-color:var(--color-success)}.wt-pip--hurt{background:var(--color-warning);border-color:var(--color-warning)}.wt-pip--dead{background:var(--surface-2);border-color:var(--border-subtle);opacity:.5}.wt-bar{border-radius:var(--radius-pill);background:var(--surface-1);border:1px solid var(--border-subtle);flex:1;min-width:90px;height:9px;overflow:hidden}.wt-fill{height:100%;transition:width var(--dur-fast) var(--ease-standard)}.wt-fill--ok{background:var(--color-success)}.wt-fill--low{background:var(--color-warning)}.wt-fill--dead{background:var(--color-danger)}.wt-num{font-size:var(--fs-xs);color:var(--text-3);font-variant-numeric:tabular-nums;white-space:nowrap}.sui{gap:var(--space-3);margin-top:var(--space-2);flex-direction:column;display:flex}.sui-section{gap:var(--space-1);flex-direction:column;display:flex}.sui-label{font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-2);cursor:default}.sui-dim{color:var(--text-3);font-weight:var(--fw-regular);text-transform:none;letter-spacing:0}.sui-pips{flex-wrap:wrap;gap:3px;display:flex}.sui-pip{border:1px solid var(--border-strong);border-radius:3px;width:12px;height:12px}.sui-pip--full{background:var(--color-success);border-color:var(--color-success)}.sui-pip--hurt{background:var(--color-warning);border-color:var(--color-warning)}.sui-pip--dead{opacity:.5;background:0 0;border-style:dashed}.sui-chips{gap:var(--space-1);flex-wrap:wrap;display:flex}.sui-details{border-top:1px solid var(--border-subtle);padding-top:var(--space-2)}.sui-details>summary{-webkit-user-select:none;user-select:none;list-style:none}.sui-details>summary::-webkit-details-marker{display:none}.sui-details>summary:before{content:"▸ ";color:var(--text-3)}.sui-details[open]>summary:before{content:"▾ "}.sui-wgroup{font-size:var(--fs-xs);color:var(--text-3);letter-spacing:var(--tracking-wide);text-transform:uppercase;margin:var(--space-2) 0 2px}.sui-weapon{background:var(--surface-1);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2);margin-bottom:4px}.sui-weapon-name{font-size:var(--fs-sm);color:var(--text-1);font-weight:var(--fw-medium)}.sui-weapon-stats{font-size:var(--fs-xs);color:var(--text-2);font-family:var(--font-mono)}.sui-weapon-kw{font-size:var(--fs-xs);margin-top:2px}.sui-ability{font-size:var(--fs-sm);color:var(--text-1);cursor:help;padding:2px 0}.sui-ability-name{border-bottom:1px dotted var(--border-strong)}.sui-keywords{font-size:var(--fs-xs);color:var(--text-3);margin-top:var(--space-1);line-height:var(--lh-normal)}.go-headline{font-family:var(--font-display);font-size:var(--fs-2xl);font-weight:var(--fw-bold);letter-spacing:var(--tracking-wide);text-align:center;margin-bottom:var(--space-4);color:var(--text-1)}.go-headline--player1{color:var(--color-info)}.go-headline--player2{color:var(--color-danger)}.go-headline--draw{color:var(--text-2)}.go-grid{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}.go-side{align-items:center;gap:var(--space-1);background:var(--surface-1);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-4);flex-direction:column;display:flex}.go-side--win{border-color:var(--accent-dim);box-shadow:var(--shadow-inset-accent)}.go-side-head{align-items:center;gap:var(--space-2);display:flex}.go-side-name{font-size:var(--fs-sm);font-weight:var(--fw-bold);letter-spacing:var(--tracking-wider);text-transform:uppercase}.go-side-name--p1{color:var(--color-info)}.go-side-name--p2{color:var(--color-danger)}.go-vp{font-family:var(--font-display);font-size:var(--fs-3xl);font-weight:var(--fw-bold);color:var(--text-1);line-height:1}.go-vp-label{font-size:var(--fs-xs);color:var(--text-3);letter-spacing:var(--tracking-wide);text-transform:uppercase;margin-bottom:var(--space-2)}.go-stats{flex-direction:column;gap:2px;width:100%;display:flex}.go-stat{font-size:var(--fs-sm);color:var(--text-2);justify-content:space-between;display:flex}.go-stat b{color:var(--text-1)}.unit-preview3d{gap:var(--space-1);flex-direction:column;display:flex}.unit-preview3d-canvas{aspect-ratio:1;border-radius:var(--radius-lg);border:1px solid var(--border-subtle);background:radial-gradient(120% 90% at 50% 18%, #ffe4ba1a, transparent 60%), radial-gradient(140% 120% at 50% 110%, #141822e6, var(--surface-1) 70%);cursor:grab;width:100%;position:relative;overflow:hidden}.unit-preview3d-canvas:active{cursor:grabbing}.unit-preview3d-canvas canvas{display:block;width:100%!important;height:100%!important}.unit-preview3d-caption{font-size:var(--fs-xs);color:var(--text-3);text-align:center;letter-spacing:var(--tracking-wide)}.unit-preview3d-caption[data-status=model]{color:var(--accent-text)}.rp-overlay{background:var(--scrim);z-index:var(--z-modal);padding:var(--space-4);animation:ui-fade-in var(--dur-med) var(--ease-out);place-items:center;display:grid;position:fixed;inset:0}.rp-modal{background:var(--surface-overlay);border:1px solid var(--border);border-radius:var(--radius-xl);width:min(1280px,96vw);height:min(900px,92vh);box-shadow:var(--shadow-3);flex-direction:column;display:flex;overflow:hidden}.rp-head{align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border-subtle);display:flex}.rp-head-titles{flex-direction:column;gap:2px;min-width:0;display:flex}.rp-title{font-family:var(--font-display);font-size:var(--fs-2xl);font-weight:var(--fw-bold);letter-spacing:var(--tracking-wide);color:var(--text-1);margin:0;line-height:1}.rp-subtitle{font-size:var(--fs-sm);color:var(--text-2)}.rp-battlefield{font-size:var(--fs-xs);color:var(--accent-text);font-weight:var(--fw-bold);letter-spacing:var(--tracking-wide)}.rp-head-actions{gap:var(--space-2);margin-left:auto;display:flex}.rp-steps{align-items:center;gap:var(--space-2);display:flex}.rp-step{align-items:center;gap:var(--space-2);font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text-3);border-radius:var(--radius-pill);cursor:pointer;background:0 0;border:1px solid #0000;padding:4px 12px;display:inline-flex}.rp-step:disabled{cursor:default}.rp-step--done{color:var(--text-2)}.rp-step--active{color:var(--accent-text);background:var(--accent-bg);border-color:var(--accent-dim)}.rp-step-num{background:var(--surface-3);width:18px;height:18px;color:var(--text-2);border-radius:50%;justify-content:center;align-items:center;font-size:10px;display:inline-flex}.rp-step--active .rp-step-num{background:var(--accent);color:var(--text-on-accent)}.rp-step-sep{color:var(--text-3)}.rp-body{padding:var(--space-5);gap:var(--space-4);flex-direction:column;flex:1;display:flex;overflow:auto}.rp-player{gap:var(--space-4);flex-direction:column;flex:1;min-height:0;display:flex}.rp-side-tone{font-size:var(--fs-xs);font-weight:var(--fw-bold);letter-spacing:var(--tracking-wider);text-transform:uppercase}.rp-side-tone--p1{color:var(--color-info)}.rp-side-tone--p2{color:var(--color-danger)}.rp-identity-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end;display:grid}.rp-budget{flex-direction:column;gap:4px;display:flex}.rp-budget-bar{background:var(--surface-1);border-radius:var(--radius-pill);border:1px solid var(--border-subtle);height:8px;overflow:hidden}.rp-budget-fill{background:var(--accent);height:100%;transition:width var(--dur-med) var(--ease-standard)}.rp-budget-fill--over{background:var(--color-danger)}.rp-budget-label{font-size:var(--fs-sm);color:var(--text-2);justify-content:space-between;display:flex}.rp-budget-label .over{color:var(--color-danger);font-weight:var(--fw-semibold)}.rp-banner{align-items:center;gap:var(--space-2);font-size:var(--fs-sm);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);display:flex}.rp-banner--error{background:var(--color-danger-bg);border:1px solid var(--color-danger);color:#ffc4c9}.rp-banner--warn{background:var(--color-warning-bg);border:1px solid var(--color-warning);color:#ffe6a6}.rp-banner ul{margin:4px 0 0;padding-left:16px}.rp-banner li{align-items:center;gap:var(--space-2);display:flex}.rp-banner-text{flex:1}.rp-split{gap:var(--space-4);flex:1;grid-template-rows:minmax(0,1fr);grid-template-columns:1.25fr minmax(240px,300px) 1fr;min-height:0;display:grid;overflow:hidden}.rp-pane{flex-direction:column;min-height:0;display:flex}.rp-preview-pane{min-height:0}.rp-preview-body{gap:var(--space-3);background:var(--surface-1);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);min-height:0;padding:var(--space-3);flex-direction:column;flex:1;display:flex;overflow:auto}.rp-preview-info{gap:var(--space-2);flex-direction:column;display:flex}.rp-preview-head{align-items:center;gap:var(--space-2);display:flex}.rp-preview-titles{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.rp-preview-name{font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--text-1)}.rp-preview-pills{gap:var(--space-1);flex-wrap:wrap;display:flex}.rp-unit--preview{border-color:var(--accent-dim);background:var(--surface-3)}@media (width<=860px){.rp-split{grid-template-columns:1fr}.rp-pane-scroll{max-height:320px}.rp-preview-pane .unit-preview3d-canvas{max-width:300px}}.rp-pane-head{justify-content:space-between;align-items:baseline;gap:var(--space-2);font-size:var(--fs-sm);font-weight:var(--fw-bold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-2);margin-bottom:var(--space-2);display:flex}.rp-pane-count{font-size:var(--fs-xs);color:var(--text-3);font-weight:var(--fw-regular);letter-spacing:0;text-transform:none}.rp-pane-scroll{background:var(--surface-1);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);min-height:0;padding:var(--space-2);flex:1;overflow:auto}.rp-toolbar{gap:var(--space-2);margin-bottom:var(--space-2);flex-direction:column;display:flex}.rp-toolbar-row{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.rp-chips,.rp-active-pills{gap:var(--space-1);flex-wrap:wrap;display:flex}.rp-group{margin-bottom:var(--space-3)}.rp-group-head{z-index:1;align-items:center;gap:var(--space-2);font-size:var(--fs-xs);font-weight:var(--fw-bold);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--text-3);background:linear-gradient(var(--surface-1), var(--surface-1) 70%, transparent);padding:var(--space-2) var(--space-1) 4px;display:flex;position:sticky;top:-8px}.rp-group-head-count{color:var(--text-3);font-weight:var(--fw-regular)}.rp-group-head-pts{color:var(--text-3);font-weight:var(--fw-regular);margin-left:auto}.rp-unit{align-items:center;gap:var(--space-3);text-align:left;background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-md);width:100%;padding:var(--space-2) var(--space-3);cursor:pointer;transition:border-color var(--dur-fast), background var(--dur-fast);margin-bottom:4px;display:flex}.rp-unit:hover{border-color:var(--border-strong);background:var(--surface-3)}.rp-unit:focus-visible{box-shadow:var(--focus-ring);outline:none}.rp-unit-main{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.rp-unit-name{font-size:var(--fs-base);color:var(--text-1);font-weight:var(--fw-medium)}.rp-unit-meta{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.rp-unit-stats{font-size:var(--fs-xs);color:var(--text-3);font-family:var(--font-mono)}.rp-unit-pts{font-size:var(--fs-sm);color:var(--accent-text);font-weight:var(--fw-semibold);white-space:nowrap}.rp-unit-add{color:var(--text-3);font-size:var(--fs-lg);flex:none}.rp-unit:hover .rp-unit-add{color:var(--accent)}.rp-pick{gap:var(--space-1);background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);flex-direction:column;margin-bottom:4px;display:flex}.rp-pick-top{align-items:center;gap:var(--space-2);display:flex}.rp-pick-name{min-width:0;font-size:var(--fs-sm);color:var(--text-1);flex:1}.rp-pick-pts{font-size:var(--fs-sm);color:var(--text-2);white-space:nowrap}.rp-reserve{font-size:var(--fs-xs);color:var(--text-3);cursor:pointer;align-items:center;gap:4px;display:inline-flex}.rp-reserve.on{color:var(--accent-text)}.rp-pick-remove{width:22px;height:22px;color:var(--text-3);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:1px solid #0000;flex:none;justify-content:center;align-items:center;font-size:16px;line-height:1;display:inline-flex}.rp-pick-remove:hover{background:var(--color-danger-bg);color:var(--color-danger)}.rp-empty{color:var(--text-3);font-size:var(--fs-sm);padding:var(--space-4);text-align:center;font-style:italic}.rp-cloud{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.rp-cloud .hint{font-size:var(--fs-xs);color:var(--text-3)}.rp-review{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}.rp-review-side{gap:var(--space-3);flex-direction:column;display:flex}.rp-review-head{justify-content:space-between;align-items:center;display:flex}.rp-review-stat{font-size:var(--fs-sm);color:var(--text-2);justify-content:space-between;display:flex}.rp-review-stat b{color:var(--text-1)}.rp-review-list{flex-direction:column;gap:2px;max-height:280px;display:flex;overflow:auto}.rp-review-unit{font-size:var(--fs-xs);color:var(--text-2);border-bottom:1px solid var(--border-subtle);justify-content:space-between;padding:2px 0;display:flex}.rp-foot{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);border-top:1px solid var(--border-subtle);display:flex}.rp-foot-spacer{flex:1}.rp-foot-hint{font-size:var(--fs-xs);color:var(--text-3)}.rp-wargear{margin-top:var(--space-1);padding:var(--space-2);background:var(--surface-1);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);font-size:var(--fs-xs)}.rp-wargear-title{color:var(--text-3);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;margin-bottom:4px}.rp-wargear-opt{margin-bottom:var(--space-2)}.rp-wargear-opt-desc{color:var(--text-2);margin-bottom:3px}.rp-wargear-select{font-size:var(--fs-xs);background:var(--surface-3);color:var(--text-1);border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:4px;margin-right:4px;padding:2px 6px}.av-uploaded-chip{align-items:center;gap:var(--space-1);min-width:0;font-size:var(--fs-xs);color:var(--text-2);background:var(--surface-1);border:1px dashed var(--border-strong);border-radius:var(--radius-sm);flex:1;padding:4px 8px;display:inline-flex}.av-uploaded-chip-dot{color:var(--color-success)}.av-row-controls{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.av-help-body{font-size:var(--fs-sm);color:var(--text-2);line-height:var(--lh-normal);max-width:320px}.av-help-body strong{color:var(--text-1)}.av-help-body p{margin:0 0 var(--space-2)}.av-toolbar{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.av-toolbar .ui-input{flex:1;min-width:160px}.av-backup-status{font-size:var(--fs-xs);color:var(--text-2)}.av-variant-count{font-size:var(--fs-xs);color:var(--text-3);flex:1}.token-overrides .overrides-list{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(270px,1fr));align-content:start;display:grid}.token-overrides .override-group{min-width:0}.av-toolbar-spacer{flex:1}.av-count{font-size:var(--fs-xs);color:var(--text-3);white-space:nowrap}.av-empty{color:var(--text-3);font-size:var(--fs-sm);padding:var(--space-5);text-align:center;font-style:italic}.token-overrides .av-tabs{min-height:0;padding:0 var(--space-3);flex-direction:column;flex:1;display:flex}.token-overrides .ui-tabs-list{padding:0 var(--space-1)}.token-overrides .av-tab{min-height:0;padding-top:var(--space-2);flex-direction:column;flex:1;display:flex}.token-overrides .av-tab--units .overrides-list{flex:1;min-height:0}.bf-body{min-height:0;padding:var(--space-2) 0 var(--space-3);flex:1;overflow-y:auto}.bf-section-title{font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-3);margin:var(--space-2) 0 var(--space-1)}.bf-grid{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(180px,1fr));display:grid}.bf-slot{gap:var(--space-1);background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:var(--space-2);flex-direction:column;display:flex}.bf-slot--custom{border-color:var(--accent-dim)}.bf-slot-head{align-items:center;gap:var(--space-2);display:flex}.bf-slot-name{min-width:0;font-size:var(--fs-sm);color:var(--text-1);flex:1}.bf-slot-preview{border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--surface-1);flex:none;width:28px;height:28px;overflow:hidden}.bf-slot-preview img{object-fit:cover;width:100%;height:100%;display:block}.bf-slot-preview-empty{width:100%;height:100%}.bf-note{font-size:var(--fs-xs);color:var(--text-3);margin:var(--space-2) 0 0;line-height:var(--lh-normal)}.bf-note code{background:var(--surface-3);border-radius:var(--radius-sm);padding:0 4px}.auth-shell{color:#eee;background:radial-gradient(circle at 20% 10%,#2a1a1a 0%,#0000 50%),radial-gradient(circle at 80% 90%,#1a1a2a 0%,#0000 50%),#0d0d0d;justify-content:center;align-items:center;font-family:system-ui,-apple-system,sans-serif;display:flex;position:fixed;inset:0}.auth-card{background:#161616;border:1px solid #333;border-radius:8px;width:100%;max-width:360px;padding:28px 28px 24px;box-shadow:0 8px 32px #00000080}.auth-title{letter-spacing:.02em;color:#d4af37;margin:0 0 4px;font-size:22px;font-weight:700}.auth-sub{color:#9aa;margin:0 0 20px;font-size:13px}.auth-form{flex-direction:column;gap:12px;display:flex}.auth-field{color:#bbb;flex-direction:column;gap:4px;font-size:12px;display:flex}.auth-field input{color:#eee;background:#0d0d0d;border:1px solid #333;border-radius:4px;outline:none;padding:8px 10px;font-size:14px}.auth-field input:focus{border-color:#d4af37}.auth-btn{color:#ddd;cursor:pointer;background:#222;border:1px solid #444;border-radius:4px;margin-top:4px;padding:9px 12px;font-size:13px}.auth-btn:hover:not(:disabled){background:#2c2c2c}.auth-btn.primary{color:#111;background:#d4af37;border-color:#d4af37;font-weight:600}.auth-btn.primary:hover:not(:disabled){background:#e0bc4a}.auth-btn:disabled{opacity:.6;cursor:default}.auth-links{justify-content:space-between;margin-top:4px;display:flex}.auth-link{color:#9ab;cursor:pointer;background:0 0;border:none;padding:4px 0;font-size:12px}.auth-link:hover{color:#d4af37;text-decoration:underline}.auth-error{color:#f4b0b0;background:#2a1414;border:1px solid #5a2222;border-radius:4px;padding:8px 10px;font-size:12px}.auth-success{color:#b0f4c8;background:#14261a;border:1px solid #2a5a3a;border-radius:4px;padding:8px 10px;font-size:12px}.auth-hint{color:#888;font-size:11px}.auth-userbadge-floating{z-index:9999;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#111111d9;border:1px solid #333;border-radius:6px;padding:4px 8px;position:fixed;top:8px;right:12px}.auth-userbadge{color:#bbb;align-items:center;gap:8px;font-size:12px;display:flex}.auth-userbadge .role-pill{color:#111;text-transform:uppercase;background:#d4af37;border-radius:8px;padding:1px 6px;font-size:10px;font-weight:700}.auth-userbadge .logout-btn{color:#bbb;cursor:pointer;background:0 0;border:1px solid #444;border-radius:4px;padding:3px 8px;font-size:11px}.auth-userbadge .logout-btn:hover{background:#2c2c2c}.approval-gate{z-index:9999;color:#e8e8e8;text-align:center;background:#000;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.approval-gate-inner{flex-direction:column;gap:14px;max-width:420px;display:flex}.approval-gate-title{letter-spacing:.3px;margin:0;font-size:24px;font-weight:600}.approval-gate-body{color:#9a9a9a;margin:0;font-size:14px;line-height:1.55}.approval-gate-email{color:#5f5f5f;font-variant:small-caps;letter-spacing:.5px;margin:0;font-size:12px}.approval-gate-signout{color:#777;cursor:pointer;background:0 0;border:1px solid #333;border-radius:6px;align-self:center;margin-top:18px;padding:7px 18px;font-size:13px;transition:color .12s,border-color .12s}.approval-gate-signout:hover{color:#ccc;border-color:#555}.auth-row{gap:12px;display:flex}.auth-row .auth-field{flex:1;min-width:0}.editor-page{color:#e8e8e8;background:#14181f;flex-direction:column;height:100vh;font-family:inherit;display:flex}.editor-topbar{background:#1a1f28;border-bottom:1px solid #2a3140;flex:none;align-items:center;gap:12px;padding:10px 200px 10px 16px;display:flex}.editor-topbar h1{color:#d4af37;margin:0;font-size:16px;font-weight:600}.editor-topbar .editor-mode{color:#888;margin-left:4px;font-size:13px}.editor-topbar .spacer{flex:1}.editor-topbar a,.editor-topbar button{color:#d4af37;cursor:pointer;background:0 0;border:1px solid #2a3140;border-radius:4px;padding:6px 12px;font-size:13px;text-decoration:none}.editor-topbar button:disabled{opacity:.4;cursor:not-allowed}.editor-topbar button.primary{color:#14181f;background:#d4af37;border-color:#d4af37;font-weight:600}.editor-topbar button.primary:disabled{color:#888;background:#5a4d20;border-color:#5a4d20}.editor-body{flex:1;grid-template-columns:minmax(0,1fr) 360px;display:grid;overflow:hidden}.editor-form{padding:16px 24px;overflow-y:auto}.editor-preview{background:#11141a;border-left:1px solid #2a3140;padding:16px;overflow-y:auto}.editor-section{background:#1a1f28;border:1px solid #2a3140;border-radius:6px;margin-bottom:16px;padding:12px 16px}.editor-section h2{text-transform:uppercase;letter-spacing:.08em;color:#d4af37;margin:0 0 12px;font-size:13px;font-weight:600}.editor-row{grid-template-columns:140px minmax(0,1fr);align-items:center;gap:12px;margin-bottom:8px;display:grid}.editor-row label{color:#aaa;font-size:13px}.editor-row input[type=text],.editor-row input[type=number],.editor-row select,.editor-row textarea{color:#e8e8e8;box-sizing:border-box;background:#0c0f14;border:1px solid #2a3140;border-radius:4px;width:100%;padding:6px 8px;font-family:inherit;font-size:13px}.editor-row input[type=checkbox]{transform:scale(1.2)}.editor-row textarea{resize:vertical;min-height:60px}.editor-row .row-hint{color:#666;grid-column:2;margin-top:2px;font-size:11px}.editor-stats-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.editor-help-text{color:#888;margin:4px 0 12px;font-size:12px;line-height:1.5}.editor-help-text code{background:#1a1f2c;border-radius:3px;padding:1px 4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.editor-help-text a{color:#6fa3e0}.editor-help-text.editor-error{color:#e07070}.editor-button-secondary{color:#e8e8e8;cursor:pointer;-webkit-user-select:none;user-select:none;background:#2a3140;border:1px solid #3a4150;border-radius:4px;margin-right:12px;padding:6px 12px;font-size:12px;font-weight:600;transition:background 80ms;display:inline-block}.editor-button-secondary:hover{background:#354060}.editor-stat{flex-direction:column;gap:4px;display:flex}.editor-stat label{color:#aaa;letter-spacing:.04em;font-size:11px;font-weight:600}.editor-chip-input{background:#0c0f14;border:1px solid #2a3140;border-radius:4px;flex-wrap:wrap;align-items:center;gap:4px;min-height:30px;padding:4px;display:flex}.editor-chip{color:#e8e8e8;background:#2a3140;border-radius:3px;align-items:center;gap:4px;padding:2px 6px;font-size:11px;display:inline-flex}.editor-chip button{color:#aaa;cursor:pointer;background:0 0;border:0;padding:0;font-size:12px;line-height:1}.editor-chip-input input{color:#e8e8e8;background:0 0;border:0;outline:none;flex:1;min-width:80px;padding:2px 4px;font-size:12px}.editor-table{border-collapse:collapse;width:100%;font-size:12px}.editor-table th,.editor-table td{text-align:left;border-bottom:1px solid #2a3140;padding:4px 6px}.editor-table th{text-transform:uppercase;color:#aaa;letter-spacing:.06em;font-size:10px;font-weight:600}.editor-table input[type=text],.editor-table input[type=number],.editor-table select{color:#e8e8e8;box-sizing:border-box;background:#0c0f14;border:1px solid #2a3140;border-radius:3px;width:100%;padding:3px 5px;font-family:inherit;font-size:12px}.editor-table .col-num{width:60px}.editor-table .col-narrow{width:80px}.editor-table .col-actions{text-align:right;width:60px}.editor-row-actions button,.editor-add-row{color:#d4af37;cursor:pointer;background:#2a3140;border:0;border-radius:3px;padding:4px 10px;font-size:12px}.editor-add-row{margin-top:8px}.editor-remove-row{color:#c44;cursor:pointer;background:0 0;border:0;padding:0 4px;font-size:14px}.editor-errors{background:#2a1f1f;border:1px solid #844;border-radius:4px;margin-top:8px;padding:8px 12px;font-size:12px;position:sticky;bottom:0}.editor-errors-title{color:#f88;margin-bottom:4px;font-weight:600}.editor-errors ul{color:#fcc;margin:0;padding-left:16px}.editor-preview-card{background:#1a1f28;border:1px solid #2a3140;border-radius:6px;padding:12px}.editor-preview-img{object-fit:cover;background:#0c0f14;border:2px solid #d4af37;border-radius:50%;width:64px;height:64px;margin:0 auto 8px;display:block}.editor-preview-3d{width:100%;max-width:220px;margin:0 auto 10px}.editor-preview-name{color:#d4af37;text-align:center;margin-bottom:2px;font-size:14px;font-weight:600}.editor-preview-faction{color:#888;text-align:center;text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px;font-size:11px}.editor-preview-stats{text-align:center;grid-template-columns:repeat(4,1fr);gap:4px;margin-bottom:8px;font-size:11px;display:grid}.editor-preview-stat .lbl{color:#888;text-transform:uppercase;font-size:9px;display:block}.editor-preview-stat .val{color:#e8e8e8;font-size:14px;font-weight:600;display:block}.editor-preview-section{border-top:1px solid #2a3140;margin-top:8px;padding-top:8px;font-size:11px}.editor-preview-section h4{color:#aaa;text-transform:uppercase;letter-spacing:.06em;margin:0 0 4px;font-size:10px}.editor-preview-weapon{background:#0c0f14;border-radius:3px;margin-bottom:4px;padding:4px}.editor-preview-weapon-name{color:#e8e8e8;font-size:11px;font-weight:600}.editor-preview-weapon-stats{color:#aaa;margin-top:2px;font-size:10px}.editor-preview-ability{border-bottom:1px dotted #2a3140;margin-bottom:6px;padding-bottom:4px}.editor-preview-ability:last-child{border-bottom:0}.editor-preview-ability-name{color:#d4af37;font-size:11px;font-weight:600}.editor-preview-ability-text{color:#ccc;margin-top:2px;font-size:10px}.editor-preview-keywords{color:#888;word-break:break-word;margin-top:4px;font-size:10px}.picker-page{color:#e8e8e8;background:#14181f;flex-direction:column;height:100vh;font-family:inherit;display:flex}.picker-body{flex:1;padding:24px;overflow-y:auto}.picker-section{margin-bottom:32px}.picker-section h2{color:#d4af37;text-transform:uppercase;letter-spacing:.08em;margin-bottom:12px;font-size:14px}.picker-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;display:grid}.picker-card{background:#1a1f28;border:1px solid #2a3140;border-radius:6px;flex-direction:column;gap:6px;padding:12px;display:flex}.picker-card-name{color:#e8e8e8;font-size:13px;font-weight:600}.picker-card-meta{color:#888;text-transform:capitalize;font-size:11px}.picker-card-actions{gap:6px;margin-top:6px;display:flex}.picker-card-actions a,.picker-card-actions button{text-align:center;color:#d4af37;cursor:pointer;background:#2a3140;border:0;border-radius:3px;flex:1;padding:4px;font-size:11px;text-decoration:none}.picker-new-card{color:#888;background:0 0;border:2px dashed #2a3140;border-radius:6px;justify-content:center;align-items:center;min-height:80px;font-size:13px;text-decoration:none;display:flex}.picker-new-card:hover{color:#d4af37;border-color:#d4af37}.editor-status-badge{text-transform:uppercase;border-radius:2px;margin-left:4px;padding:1px 5px;font-size:9px;font-weight:600;display:inline-block}.editor-status-badge.draft{color:#ffe9a0;background:#5a4d20}.editor-status-badge.published{color:#a0ffc0;background:#2a5a3d}.map-editor{height:100vh;color:var(--text-1);background:#0c0f14;flex-direction:column;display:flex}.map-editor-head{border-bottom:1px solid var(--border-subtle);background:#14181f;flex-shrink:0;align-items:center;gap:10px;padding:10px 16px;display:flex}.map-editor-head .spacer{flex:1}.map-editor-name{max-width:320px;font-family:var(--font-display);font-weight:var(--fw-bold)}.map-editor-body{flex:1;grid-template-columns:minmax(280px,1fr) minmax(280px,1fr) 300px;gap:12px;min-height:0;padding:12px;display:grid}.map-editor-pane-title{font-size:var(--fs-xs);color:var(--text-3);text-transform:uppercase;letter-spacing:var(--tracking-wide);margin-bottom:6px}.map-editor-plan-pane,.map-editor-preview-pane{flex-direction:column;min-width:0;min-height:0;display:flex}.terrain-plan{border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:#0a0c10;flex:1;min-height:0;display:flex;overflow:hidden}.terrain-plan-svg{touch-action:none;width:100%;height:100%}.plan-board{fill:#1a1712}.plan-grid{stroke:#2a2f38;stroke-width:.1px}.plan-grid-mid{stroke:#3a4150;stroke-width:.18px}.plan-border{fill:none;stroke:#4a5160;stroke-width:.25px}.plan-piece{cursor:grab}.plan-piece:active{cursor:grabbing}.plan-piece-rect{stroke:#0006;stroke-width:.15px;transition:stroke var(--dur-fast)}.plan-piece-tick{stroke:#fff8;stroke-width:.2px}.plan-piece--selected .plan-piece-rect{stroke:var(--accent,#d4af37);stroke-width:.5px}.map-preview-3d{border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:#0a0c10;flex:1;min-height:0;position:relative;overflow:hidden}.map-preview-3d canvas{display:block}.map-editor-inspector{flex-direction:column;gap:14px;padding:4px 4px 4px 0;display:flex;overflow-y:auto}.inspector-section{background:var(--surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-3);flex-direction:column;gap:10px;display:flex}.inspector-title{font-family:var(--font-display);font-weight:var(--fw-bold);font-size:var(--fs-sm);color:var(--accent-text);letter-spacing:var(--tracking-wide);justify-content:space-between;align-items:baseline;display:flex}.inspector-count{font-family:var(--font-body);font-weight:var(--fw-normal);font-size:var(--fs-xs);color:var(--text-3)}.inspector-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.inspector-range{width:100%}.inspector-meta{font-size:var(--fs-xs);color:var(--text-3)}.inspector-empty{color:var(--text-3);font-size:var(--fs-sm);font-style:italic}@media (width<=980px){.map-editor-body{grid-template-columns:1fr;grid-auto-rows:minmax(280px,auto);overflow-y:auto}}
