/* WARFARE UX GOAL A
   Semantic command-interface tokens and shared components. */
:root {
    color-scheme: dark;

    --bg-deep: #0b0f0e;
    --bg-base: #111714;
    --bg-raised: #17201c;
    --bg-overlay: #1d2822;
    --surface-panel: #1b241f;
    --surface-panel-strong: #222d27;
    --surface-ivory: #e9e0cd;
    --surface-ivory-raised: #f4ecdc;
    --surface-ink: #171c19;
    --surface-input: #111815;
    --surface-app: var(--bg-deep);
    --surface-primary: var(--surface-panel);
    --surface-raised: var(--surface-panel-strong);
    --surface-active: var(--selected-bg);

    --text-primary: #f3eee2;
    --text-secondary: #c5c3b9;
    --text-muted: #8e9991;
    --text-ink: #242720;
    --text-ink-muted: #69695f;
    --text-on-accent: #15130e;

    --border-subtle: rgba(225, 217, 196, 0.13);
    --border-default: rgba(225, 217, 196, 0.24);
    --border-strong: rgba(225, 217, 196, 0.42);
    --accent: #c49a50;
    --accent-bright: #e0bb72;
    --accent-deep: #75572b;
    --positive: #6eac84;
    --positive-bg: rgba(63, 125, 83, 0.18);
    --warning: #d5a34c;
    --warning-bg: rgba(181, 121, 33, 0.18);
    --danger: #d47468;
    --danger-bg: rgba(154, 57, 49, 0.2);
    --selected: #f0c979;
    --selected-bg: rgba(221, 171, 73, 0.14);
    --disabled: #626b65;

    --side-ours: #6ea9a4;
    --side-ours-bg: rgba(56, 111, 109, 0.18);
    --side-theirs: #b68173;
    --side-theirs-bg: rgba(130, 66, 55, 0.18);
    --faction-canonical: #d8b76e;
    --faction-custom: #9a8ec2;

    --space-1: 0.25rem;
    --space-2: 0.5rem;
    --space-3: 0.75rem;
    --space-4: 1rem;
    --space-5: 1.25rem;
    --space-6: 1.5rem;
    --space-8: 2rem;
    --space-10: 2.5rem;
    --space-12: 3rem;
    --space-16: 4rem;

    --radius-sm: 4px;
    --radius-md: 8px;
    --radius-lg: 13px;
    --radius-xl: 19px;
    --radius-pill: 999px;

    --shadow-1: 0 2px 8px rgba(0, 0, 0, 0.22);
    --shadow-2: 0 10px 28px rgba(0, 0, 0, 0.3);
    --shadow-3: 0 18px 55px rgba(0, 0, 0, 0.43);
    --shadow-focus: 0 0 0 3px rgba(224, 187, 114, 0.3);

    --font-display: Georgia, "Times New Roman", serif;
    --font-ui: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    --font-mono: "Cascadia Code", "SFMono-Regular", Consolas, monospace;
    --text-xs: 0.72rem;
    --text-sm: 0.84rem;
    --text-md: 0.96rem;
    --text-lg: 1.12rem;
    --text-xl: clamp(1.35rem, 2vw, 1.75rem);
    --text-2xl: clamp(1.8rem, 3.5vw, 2.75rem);

    --transition-fast: 120ms ease;
    --transition-base: 220ms ease;
    --shell-width: 1500px;
    --header-height: 58px;
    --unit-card-min: 250px;
    --unit-card-max: 370px;
    --inspector-width: 350px;
    --console-height: 260px;
}

/* UX Goal C: one mobile grammar for app, setup, and tactical workspaces. */
.app-shell { background:var(--surface-app); color:var(--text-primary); }
.shell-mode-badge { display:inline-flex; min-height:20px; align-items:center; margin-right:.45rem; padding:.12rem .42rem; border:1px solid var(--accent-deep); border-radius:var(--radius-pill); background:rgba(196,154,80,.12); color:var(--accent-bright); font:800 .58rem/1 var(--font-ui); letter-spacing:.1em; text-transform:uppercase; }
.shell-mode-badge--app { margin-left:var(--space-2); background:rgba(110,169,164,.1); border-color:rgba(110,169,164,.4); color:#a9d3cf; }
.peer-workspace { display:flex; min-width:0; min-height:0; flex-direction:column; border:1px solid var(--border-subtle); border-radius:var(--radius-lg); background:var(--surface-primary); box-shadow:var(--shadow-1); }
.peer-tab-rail { position:relative; z-index:3; display:flex; flex:0 0 auto; gap:.2rem; min-width:0; padding:.35rem; overflow-x:auto; overscroll-behavior-inline:contain; border-bottom:1px solid var(--border-subtle); background:color-mix(in srgb,var(--surface-raised) 92%,transparent); scrollbar-width:thin; }
.peer-tab-rail [role="tab"] { position:relative; min-width:max-content; min-height:42px; padding:.5rem .72rem; border:0; border-radius:var(--radius-md); background:transparent; color:var(--text-secondary); cursor:pointer; font:750 var(--text-sm)/1 var(--font-ui); }
.peer-tab-rail [role="tab"]::after { position:absolute; right:.7rem; bottom:.17rem; left:.7rem; height:2px; border-radius:2px; background:transparent; content:""; }
.peer-tab-rail [role="tab"].is-active { background:var(--surface-active); color:var(--text-primary); }
.peer-tab-rail [role="tab"].is-active::after { background:var(--accent-bright); }
.peer-tab-rail [role="tab"]:focus-visible { outline:2px solid var(--accent-bright); outline-offset:-2px; }
.peer-workspace__viewport { flex:1 1 auto; min-width:0; min-height:0; overflow:hidden; touch-action:pan-y pinch-zoom; }
.peer-workspace__panel { height:100%; min-width:0; min-height:0; padding:var(--space-4); overflow-x:hidden; overflow-y:auto; overscroll-behavior-y:contain; scrollbar-gutter:stable; touch-action:pan-y pinch-zoom; -webkit-overflow-scrolling:touch; }
.peer-workspace__panel[hidden] { display:none !important; }
.domain-workspace-host { min-width:0; min-height:0; }
.domain-workspace-host .peer-workspace { height:100%; }
.domain-workspace-host .roster-sidebar { width:auto; }
.domain-workspace-host .roster-main { display:contents; }
.domain-workspace-host .roster-layout { display:contents; }
.app-shell .panel,.app-shell .dashboard-section { color:var(--text-primary); }
.app-shell :is(.support-copy,.form-note,.empty-inline,small) { color:var(--text-secondary); }
.app-shell [aria-disabled="true"],.app-shell :disabled { color:#a6ada8; opacity:.62; }

@media (max-width:899px) {
    body.app-shell.has-peer-workspace:not(.battle-page) { height:100dvh; overflow:hidden; }
    body.app-shell.has-peer-workspace:not(.battle-page) > .site-header { height:var(--header-height); }
    body.app-shell.has-peer-workspace:not(.battle-page) > .main-shell { height:calc(100dvh - var(--header-height) - 64px - env(safe-area-inset-bottom)); min-height:0; padding:.45rem; overflow:hidden; }
    body.app-shell.has-peer-workspace:not(.battle-page) > .site-footer { display:none; }
    .dashboard-page .peer-workspace,.faction-page .domain-workspace-host { height:100%; }
    .dashboard-page .main-shell:has(> .peer-workspace) > :not(.peer-workspace):not(.flash),
    .faction-page .main-shell:has(.domain-workspace-host .peer-workspace) > .roster-layout { display:none; }
    .dashboard-page .peer-workspace { border-radius:var(--radius-md); }
    .peer-workspace__panel { padding:var(--space-3); scrollbar-gutter:auto; }
    .peer-workspace__panel > :first-child { margin-top:0; }
    .faction-page .main-shell { display:grid; grid-template-rows:auto minmax(0,1fr); }
    .faction-page .roster-hero { margin:0 0 .45rem; padding:.65rem; border-radius:var(--radius-md); }
    .faction-page .roster-hero__identity .lede,.faction-page .roster-hero__summary { display:none; }
    .faction-page .roster-title-line h1 { font-size:1.15rem; }
    .domain-workspace-host .roster-sidebar { display:grid; gap:var(--space-3); }
}

@media (max-width:360px) {
    .peer-tab-rail [role="tab"] { min-height:44px; padding-inline:.58rem; font-size:.76rem; }
    .shell-mode-badge--app { display:none; }
}

@media (prefers-reduced-motion:reduce) {
    .peer-tab-rail [role="tab"],.peer-workspace__panel { scroll-behavior:auto !important; transition-duration:.01ms !important; }
}

/* Goal 11: campaign/domain control surfaces */
.context-switcher{position:relative;margin-left:auto}.context-switcher summary{min-height:44px;display:flex;align-items:center;padding:.55rem .8rem;border:1px solid var(--line,rgba(255,255,255,.18));border-radius:.55rem;cursor:pointer}.context-switcher>div{position:absolute;right:0;top:calc(100% + .45rem);z-index:70;width:min(22rem,86vw);padding:.75rem;background:#171c1a;border:1px solid rgba(255,255,255,.18);border-radius:.7rem;box-shadow:0 1rem 3rem rgba(0,0,0,.35);display:grid;gap:.3rem}.context-switcher>div strong{margin-top:.4rem;color:#d8b86a;font-size:.75rem;text-transform:uppercase;letter-spacing:.08em}.context-switcher>div a,.context-switcher>div span{display:flex;justify-content:space-between;gap:1rem;padding:.6rem;color:#f4f1e8;text-decoration:none;border-radius:.4rem}.context-switcher>div a:hover,.context-switcher>div a:focus-visible{background:rgba(255,255,255,.08)}
.campaign-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(20rem,100%),1fr));gap:1rem;margin:1.25rem 0}.campaign-card,.domain-list a{display:block;color:var(--text-primary);text-decoration:none;background:var(--surface-panel);border:1px solid var(--border-default);border-radius:.85rem;padding:1rem}.campaign-card:hover,.campaign-card:focus-visible,.domain-list a:hover,.domain-list a:focus-visible{border-color:var(--accent);background:var(--surface-panel-strong)}.campaign-card p{color:var(--text-secondary)}.campaign-card dt{color:var(--text-muted)}.campaign-card dl{display:flex;gap:1rem;flex-wrap:wrap}.campaign-card dl div{min-width:5rem}.campaign-card dt{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em}.campaign-card dd{margin:0;color:var(--text-primary);font-weight:700}.campaign-setup-grid,.campaign-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:1rem 0}.campaign-guidance ol{display:grid;gap:.55rem}.domain-list{display:grid;gap:.55rem;margin-bottom:1rem}.domain-list a{display:flex;align-items:center;justify-content:space-between}.domain-list a span:first-child{display:grid}.domain-list small{color:var(--text-muted)}
.control-list{display:grid;gap:.75rem}.control-card{padding:.8rem;border:1px solid var(--line,#c9c1b2);border-radius:.65rem;display:grid;gap:.55rem}.control-card>div:first-child{display:grid}.controller-chips{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.controller-chips>span{padding:.25rem .5rem;border-radius:999px;background:rgba(42,111,74,.14)}.control-unassigned{color:#9a3d30;font-weight:700}.member-role-form,.form-inline{display:flex;align-items:end;gap:.5rem;flex-wrap:wrap}.compact-audit{display:grid;gap:.4rem}.compact-audit li{display:flex;justify-content:space-between;gap:.75rem}
.battle-control-panel,.cross-side-warning{margin:1rem 0;padding:1rem;border-radius:.8rem;border:1px solid var(--line,#c9c1b2)}.battle-control-domains{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.battle-control-domains article{padding:.75rem;border-radius:.6rem;background:rgba(255,255,255,.5);display:grid}.battle-control-domains ul{padding:0;list-style:none}.battle-control-domains li{display:flex;justify-content:space-between;gap:.75rem;padding:.35rem 0}.cross-side-warning{display:flex;justify-content:space-between;align-items:center;gap:1rem;background:#fff2c9;border-color:#b78318;color:#35280d}.readiness-warnings{margin-top:.75rem;border-top:1px solid currentColor;padding-top:.75rem}
@media(max-width:760px){.campaign-setup-grid,.campaign-columns,.battle-control-domains{grid-template-columns:1fr}.context-switcher{order:4;margin-left:0}.context-switcher>div{position:fixed;left:.75rem;right:.75rem;top:4.5rem;width:auto;max-height:70vh;overflow:auto}.cross-side-warning{align-items:stretch;flex-direction:column}.member-list li{flex-wrap:wrap}.member-role-form{width:100%}.member-role-form select,.button--small{min-height:44px}.battle-control-domains li{align-items:start;flex-direction:column}.campaign-card,.domain-list a{min-height:48px}}

/* Goal 10: army and battle lifecycle workspace */
.context-links,.setup-stages,.readiness-actions,.danger-actions{display:flex;flex-wrap:wrap;gap:.65rem}
.context-links a,.readiness-actions>a{color:var(--gold-strong,#b38336);font-weight:700;text-decoration:none}
.setup-callout,.setup-workspace{margin:1rem 0;padding:clamp(1rem,2.5vw,1.75rem);border:1px solid rgba(183,137,65,.38);background:linear-gradient(135deg,rgba(36,31,27,.97),rgba(22,21,20,.98));border-radius:1rem;box-shadow:0 18px 48px rgba(0,0,0,.18)}
.setup-callout .coverage-meter{margin:.8rem 0 1.1rem}
.progress-fraction{font-family:var(--font-display,serif);font-size:1.4rem;color:var(--gold-light,#d8b46d)}
.blocker-box{padding:1rem;border-left:4px solid #b15e50;background:rgba(117,45,37,.16);border-radius:.4rem}
.blocker-box ul,.inline-blockers,.readiness-panel ul{margin:.55rem 0;padding-left:1.2rem}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem;align-items:end}
.form-grid__wide{grid-column:1/-1}
.form-grid label,.commander-row form{min-width:0}
.prepared-paths{margin-top:1rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.1);color:var(--text-muted,#aaa)}
.roster-entry{min-width:0;border-radius:.85rem;background:rgba(10,10,10,.18)}
.roster-entry>.unit-card{margin:0}
.roster-entry__facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;padding:.8rem;border:1px solid rgba(255,255,255,.08);border-top:0}
.roster-entry__facts span{display:flex;flex-direction:column;font-size:.82rem;color:var(--text-muted,#aaa)}
.roster-entry__facts b{font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text,#eee)}
.is-eligible{color:#7fc390!important}.is-blocked{color:#e78c7e!important}
.inline-blockers{padding:.15rem 1.8rem .7rem;color:#e7a397;font-size:.82rem}
.inline-editor{margin:.6rem}.inline-editor summary{cursor:pointer;font-weight:700;color:var(--gold-light,#d8b46d)}
.compact-list,.history-list{display:grid;gap:.55rem;list-style:none;padding:0;margin:.6rem 0 1rem}
.compact-list li,.history-list a{display:flex;justify-content:space-between;gap:.75rem;padding:.65rem;border:1px solid rgba(255,255,255,.08);border-radius:.5rem;text-decoration:none}
.compact-list small,.history-list span{color:var(--text-muted,#aaa)}
.management-panel textarea,.resolve-form textarea{min-height:6rem}
.danger-actions{margin-top:1rem;padding-top:1rem;border-top:1px solid rgba(180,74,62,.32)}
.setup-workspace{position:relative;z-index:2}
.setup-workspace__header{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}
.battle-management{position:relative}.battle-management__panel{position:absolute;z-index:20;right:0;top:calc(100% + .5rem);width:min(22rem,85vw);display:grid;gap:.8rem;padding:1rem;border:1px solid rgba(183,137,65,.35);border-radius:.7rem;background:#191817;box-shadow:0 16px 45px rgba(0,0,0,.42)}
.setup-stages{margin:1rem 0;padding:.65rem;border-block:1px solid rgba(255,255,255,.08)}
.setup-stages a{display:flex;align-items:center;gap:.35rem;color:var(--text-muted,#aaa);text-decoration:none;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em}
.setup-stages span{display:grid;place-items:center;width:1.45rem;height:1.45rem;border:1px solid currentColor;border-radius:50%}
.setup-stages a.is-current{color:var(--gold-light,#d8b46d)}
.setup-workspace__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
.setup-step{min-width:0;padding:1rem;border:1px solid rgba(255,255,255,.09);border-radius:.75rem;background:rgba(0,0,0,.13)}
.setup-step h3{margin-top:0}.participant-columns{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.participant-columns>div{padding:.7rem;border-radius:.5rem;background:rgba(255,255,255,.04)}
.force-summary,.commander-row{display:flex;align-items:center;justify-content:space-between;gap:.7rem;padding:.65rem 0;border-bottom:1px solid rgba(255,255,255,.07)}
.force-summary>div,.commander-row>span{display:flex;flex-direction:column}.force-summary span,.commander-row small,.commander-row em{font-size:.78rem;color:var(--text-muted,#aaa)}
.commander-row form{display:flex;gap:.4rem;align-items:center}.commander-row select{max-width:12rem}
.readiness-panel{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-top:1rem;padding:1rem;border:1px solid rgba(188,79,66,.5);border-radius:.75rem;background:rgba(111,43,35,.14)}
.readiness-panel.is-ready,.readiness-panel.is-resolved{border-color:rgba(76,157,98,.5);background:rgba(43,102,58,.14)}
.readiness-panel h3{margin:.2rem 0}.readiness-panel li{margin:.45rem 0}.readiness-panel li strong,.readiness-panel li span{display:block}.readiness-panel li strong{font-size:.7rem;letter-spacing:.08em;text-transform:uppercase}
.readiness-panel .blocker-guidance{display:block;max-width:52rem;margin:.25rem 0 .35rem;color:var(--text-muted,#aaa);line-height:1.45}
.roster-card.has-readiness-blocker{border-color:#d89645;box-shadow:0 0 0 2px rgba(216,150,69,.28),0 12px 28px rgba(0,0,0,.2)}
.roster-card.has-readiness-blocker:focus{outline:3px solid #f0c979;outline-offset:3px}
.dependency-unit-blocker{padding:.45rem .55rem;border-left:3px solid #d89645;background:rgba(216,150,69,.12)}
.selected-unit-actions{display:flex;align-items:center;justify-content:space-between;gap:.65rem;flex-wrap:wrap}.selected-unit-actions form{margin:0}
.readiness-actions{min-width:12rem;flex-direction:column}.readiness-actions .button[disabled]{opacity:.48;cursor:not-allowed}
.resolve-form{min-width:min(22rem,100%)}
.battle-list--grouped{display:grid;gap:1rem}.battle-group{display:grid;gap:.55rem}.battle-group>h3{display:flex;align-items:center;gap:.5rem;margin:.2rem 0;color:var(--accent-bright);font-size:.8rem;letter-spacing:.09em;text-transform:uppercase}.battle-group>h3 span{display:grid;place-items:center;min-width:1.45rem;height:1.45rem;border-radius:50%;background:rgba(196,154,80,.15)}

@media(max-width:800px){
  .setup-workspace{margin-inline:-.55rem;border-radius:.7rem}.setup-workspace__header,.readiness-panel{flex-direction:column}.setup-stages{display:grid;grid-template-columns:repeat(3,1fr)}.setup-stages a{font-size:.64rem}.setup-workspace__grid,.form-grid{grid-template-columns:1fr}.form-grid__wide{grid-column:auto}.participant-columns,.roster-entry__facts{grid-template-columns:1fr}.commander-row{align-items:flex-start;flex-wrap:wrap}.commander-row form{width:100%}.commander-row select{max-width:none;flex:1}.readiness-actions{width:100%}.readiness-actions form,.readiness-actions button{width:100%}.battle-management__panel{position:fixed;left:.75rem;right:.75rem;top:4.5rem;width:auto;max-height:calc(100vh - 6rem);overflow:auto}
}

* { box-sizing: border-box; }

html {
    min-height: 100%;
    background: var(--bg-deep);
    scroll-behavior: smooth;
}

body {
    min-width: 0;
    min-height: 100vh;
    margin: 0;
    overflow-x: hidden;
    background:
        radial-gradient(circle at 20% -10%, rgba(132, 98, 49, 0.12), transparent 32rem),
        linear-gradient(180deg, var(--bg-base), var(--bg-deep));
    color: var(--text-primary);
    font-family: var(--font-ui);
    font-size: var(--text-md);
    line-height: 1.5;
    text-rendering: optimizeLegibility;
}

body::before {
    position: fixed;
    inset: 0;
    z-index: -1;
    background-image:
        linear-gradient(rgba(255, 255, 255, 0.012) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, 0.012) 1px, transparent 1px);
    background-size: 34px 34px;
    content: "";
    pointer-events: none;
}

button, input, select, textarea { font: inherit; }
button, summary, a { -webkit-tap-highlight-color: transparent; }
a { color: inherit; }
img, svg { max-width: 100%; }
[hidden] { display: none !important; }

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.skip-link {
    position: fixed;
    top: var(--space-2);
    left: var(--space-2);
    z-index: 999;
    padding: var(--space-3) var(--space-4);
    transform: translateY(-150%);
    border-radius: var(--radius-md);
    background: var(--accent-bright);
    color: var(--text-on-accent);
    font-weight: 800;
}
.skip-link:focus { transform: translateY(0); }

:focus-visible {
    outline: 2px solid var(--accent-bright);
    outline-offset: 3px;
}

h1, h2, h3, h4, p, dl, dd, ul, ol { margin-top: 0; }
h1, h2, h3, h4 { margin-bottom: var(--space-2); line-height: 1.12; }
h1, h2 { font-family: var(--font-display); letter-spacing: -0.018em; }
h1 { font-size: var(--text-2xl); }
h2 { font-size: var(--text-xl); }
h3 { font-size: var(--text-lg); }
p { color: var(--text-secondary); }

.eyebrow {
    margin-bottom: var(--space-2);
    color: var(--accent-bright);
    font-size: var(--text-xs);
    font-weight: 800;
    letter-spacing: 0.15em;
    line-height: 1.2;
    text-transform: uppercase;
}

.lede { max-width: 66ch; color: var(--text-secondary); font-size: var(--text-lg); }
.text-link, .back-link { color: var(--accent-bright); font-size: var(--text-sm); font-weight: 750; text-decoration: none; }
.text-link:hover, .back-link:hover { color: var(--text-primary); text-decoration: underline; text-underline-offset: 3px; }
code { font-family: var(--font-mono); }
kbd { padding: 0.08rem 0.3rem; border: 1px solid var(--border-default); border-radius: 3px; background: var(--bg-deep); font-family: var(--font-ui); font-size: 0.68rem; }

/* Shared shell */
.site-header {
    position: sticky;
    top: 0;
    z-index: 100;
    height: var(--header-height);
    border-bottom: 1px solid var(--border-subtle);
    background: rgba(13, 18, 16, 0.94);
    box-shadow: 0 5px 18px rgba(0, 0, 0, 0.2);
    backdrop-filter: blur(14px);
}

.site-header__inner {
    display: flex;
    align-items: stretch;
    width: min(100%, calc(var(--shell-width) + 3rem));
    height: 100%;
    margin: 0 auto;
    padding: 0 var(--space-6);
}

.brand {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    gap: var(--space-3);
    min-width: 178px;
    margin-right: var(--space-5);
    color: var(--text-primary);
    text-decoration: none;
}

.brand__mark {
    display: grid;
    width: 34px;
    height: 38px;
    place-items: center;
    clip-path: polygon(50% 0, 94% 17%, 87% 77%, 50% 100%, 13% 77%, 6% 17%);
    background: linear-gradient(145deg, var(--accent-bright), var(--accent-deep));
    color: #17140f;
    font-family: var(--font-display);
    font-size: 1.12rem;
    font-weight: 900;
}

.brand__name { display: flex; flex-direction: column; line-height: 1.05; }
.brand__name strong { font-family: var(--font-display); font-size: 1.12rem; letter-spacing: 0.02em; }
.brand__name small { margin-top: 0.18rem; color: var(--text-muted); font-size: 0.63rem; font-weight: 700; letter-spacing: 0.13em; text-transform: uppercase; }

.primary-nav { display: flex; align-items: stretch; gap: var(--space-1); }
.primary-nav a {
    position: relative;
    display: flex;
    align-items: center;
    gap: 0.42rem;
    padding: 0 var(--space-3);
    color: var(--text-muted);
    font-size: var(--text-sm);
    font-weight: 700;
    text-decoration: none;
    transition: color var(--transition-fast), background var(--transition-fast);
}
.primary-nav a::after { position: absolute; right: var(--space-3); bottom: 0; left: var(--space-3); height: 2px; background: var(--accent-bright); content: ""; opacity: 0; transform: scaleX(0.3); transition: var(--transition-base); }
.primary-nav a:hover { background: rgba(255, 255, 255, 0.035); color: var(--text-primary); }
.primary-nav a.is-active { color: var(--text-primary); }
.primary-nav a.is-active::after { opacity: 1; transform: scaleX(1); }
.primary-nav a > span { color: var(--accent); }

.account-nav { display: flex; align-items: center; gap: var(--space-2); margin-left: auto; }
.account-nav__identity { display: flex; align-items: center; gap: var(--space-2); padding: 0 var(--space-2); }
.account-nav__identity > span:last-child { display: flex; flex-direction: column; line-height: 1.15; }
.account-nav__identity strong { max-width: 120px; overflow: hidden; font-size: var(--text-sm); text-overflow: ellipsis; white-space: nowrap; }
.account-nav__identity small { color: var(--text-muted); font-size: 0.68rem; }
.account-nav__avatar, .member-avatar { display: grid; flex: 0 0 auto; width: 30px; height: 30px; place-items: center; border: 1px solid var(--border-default); border-radius: 50%; background: var(--surface-panel-strong); color: var(--accent-bright); font-size: var(--text-sm); font-weight: 800; }

.icon-button, .admin-menu > summary {
    display: grid;
    min-width: 36px;
    min-height: 36px;
    place-items: center;
    border: 1px solid transparent;
    border-radius: var(--radius-md);
    background: transparent;
    color: var(--text-muted);
    cursor: pointer;
}
.icon-button:hover, .admin-menu > summary:hover, .admin-menu > summary.is-active { border-color: var(--border-subtle); background: var(--surface-panel); color: var(--text-primary); }
.logout-form { margin: 0; }
.admin-menu { position: relative; }
.admin-menu > summary { display: flex; gap: var(--space-2); padding: 0 var(--space-3); list-style: none; font-size: var(--text-xs); font-weight: 700; }
.admin-menu > summary::-webkit-details-marker { display: none; }
.admin-menu__panel, .unit-card__menu > div, .battle-tools-menu__panel {
    position: absolute;
    z-index: 20;
    top: calc(100% + var(--space-2));
    right: 0;
    min-width: 190px;
    padding: var(--space-2);
    border: 1px solid var(--border-default);
    border-radius: var(--radius-md);
    background: var(--surface-panel-strong);
    box-shadow: var(--shadow-3);
}
.admin-menu__panel p { margin: var(--space-2); color: var(--text-muted); font-size: var(--text-xs); font-weight: 800; letter-spacing: 0.11em; text-transform: uppercase; }
.admin-menu__panel a { display: block; padding: var(--space-2) var(--space-3); border-radius: var(--radius-sm); color: var(--text-secondary); font-size: var(--text-sm); text-decoration: none; }
.admin-menu__panel a:hover { background: rgba(255,255,255,.05); color: var(--text-primary); }

.main-shell { width: min(calc(100% - 2rem), var(--shell-width)); margin: 0 auto; padding: var(--space-6) 0 var(--space-12); }
.battle-page .main-shell { width: 100%; max-width: none; padding: 0; }
.site-footer { display: flex; align-items: center; justify-content: center; gap: var(--space-2); min-height: 48px; border-top: 1px solid var(--border-subtle); color: var(--text-muted); font-size: var(--text-xs); }
.footer-mark { color: var(--accent); }
.battle-page .site-footer { display: none; }

.flash {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    max-width: 900px;
    margin: 0 auto var(--space-5);
    padding: var(--space-3) var(--space-4);
    border: 1px solid var(--positive);
    border-radius: var(--radius-md);
    background: var(--positive-bg);
    color: var(--text-primary);
    box-shadow: var(--shadow-1);
}
.flash > span:first-child { display: grid; width: 24px; height: 24px; place-items: center; border-radius: 50%; background: var(--positive); color: var(--text-on-accent); font-weight: 900; }
.flash--error { border-color: var(--danger); background: var(--danger-bg); }
.flash--error > span:first-child { background: var(--danger); }

/* Controls and forms */
.button {
    display: inline-flex;
    min-height: 42px;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    padding: 0.62rem 1rem;
    border: 1px solid transparent;
    border-radius: var(--radius-md);
    cursor: pointer;
    font-size: var(--text-sm);
    font-weight: 800;
    line-height: 1.1;
    text-align: center;
    text-decoration: none;
    transition: transform var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast), color var(--transition-fast), opacity var(--transition-fast);
}
.button:hover:not(:disabled) { transform: translateY(-1px); }
.button:active:not(:disabled) { transform: translateY(0); }
.button--primary { border-color: var(--accent-bright); background: linear-gradient(180deg, #d7ad61, #b88739); color: var(--text-on-accent); box-shadow: 0 4px 14px rgba(114, 76, 25, 0.25); }
.button--primary:hover:not(:disabled) { background: linear-gradient(180deg, #edc779, #c69543); }
.button--secondary, .button--quiet { border-color: var(--border-default); background: rgba(255,255,255,.035); color: var(--text-primary); }
.button--secondary:hover:not(:disabled), .button--quiet:hover:not(:disabled) { border-color: var(--accent); background: rgba(196,154,80,.09); }
.button--quiet { min-height: 36px; padding: 0.48rem 0.8rem; background: transparent; }
.button--tactical { min-height: 46px; border-color: var(--accent-bright); background: linear-gradient(135deg, #9f7131, #c5984d); color: #14120e; box-shadow: 0 5px 18px rgba(169, 116, 43, .22); text-transform: uppercase; letter-spacing: .06em; }
.button--tactical:hover:not(:disabled) { background: linear-gradient(135deg, #b1813b, #dfb66b); }
.button--small { min-height: 34px; padding: 0.4rem 0.72rem; font-size: var(--text-xs); }
.button--large { min-height: 50px; padding-inline: 1.3rem; }
.button:disabled, button:disabled { cursor: not-allowed; filter: saturate(.35); opacity: .5; }
.button.is-loading { cursor: progress; }

form { margin: 0; }
label { display: grid; gap: 0.36rem; color: var(--text-secondary); font-size: var(--text-sm); font-weight: 700; }
label > span { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-2); }
label small { color: var(--text-muted); font-size: var(--text-xs); font-weight: 500; }
input, select, textarea {
    width: 100%;
    min-height: 42px;
    padding: 0.58rem 0.72rem;
    border: 1px solid var(--border-default);
    border-radius: var(--radius-md);
    outline: none;
    background: var(--surface-input);
    color: var(--text-primary);
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast);
}
textarea { min-height: 90px; resize: vertical; }
input::placeholder, textarea::placeholder { color: #67736b; }
input:hover, select:hover, textarea:hover { border-color: var(--border-strong); }
input:focus, select:focus, textarea:focus { border-color: var(--accent-bright); box-shadow: var(--shadow-focus); }
select { padding-right: 2rem; }
.form-stack { display: grid; gap: var(--space-4); }
.form-note { margin: 0; color: var(--text-muted); font-size: var(--text-sm); }
.code-field { font-family: var(--font-mono); letter-spacing: .05em; }

.panel {
    padding: var(--space-5);
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-lg);
    background: linear-gradient(145deg, rgba(34,45,39,.92), rgba(23,32,28,.92));
    box-shadow: var(--shadow-1);
}
.panel__heading { margin-bottom: var(--space-4); }
.panel__heading h2, .panel__heading h3 { margin: 0; }

.status-badge, .identity-badge, .support-badge, .content-badge, .count-badge, .audit-status {
    display: inline-flex;
    align-items: center;
    gap: 0.38rem;
    width: max-content;
    max-width: 100%;
    padding: 0.26rem 0.56rem;
    border: 1px solid var(--border-default);
    border-radius: var(--radius-pill);
    font-size: var(--text-xs);
    font-style: normal;
    font-weight: 800;
    line-height: 1.15;
    white-space: nowrap;
}
.status-badge--active { border-color: rgba(110,172,132,.5); background: var(--positive-bg); color: #a9d6b9; }
.status-badge--setup { border-color: rgba(213,163,76,.5); background: var(--warning-bg); color: #edc87e; }
.status-badge--completed { color: var(--text-muted); }
.identity-badge--canonical, .content-badge--canonical { border-color: rgba(216,183,110,.45); background: rgba(216,183,110,.11); color: #e8ca89; }
.identity-badge--custom, .content-badge--custom { border-color: rgba(154,142,194,.45); background: rgba(154,142,194,.1); color: #c2b8e4; }
.support-badge--supported { border-color: rgba(110,172,132,.45); background: var(--positive-bg); color: #acd8ba; }
.support-badge--partial { border-color: rgba(213,163,76,.45); background: var(--warning-bg); color: #edc87e; }
.support-badge--unsupported { color: var(--text-muted); }
.count-badge { min-width: 30px; justify-content: center; color: var(--text-secondary); }

.empty-state {
    display: flex;
    grid-column: 1 / -1;
    align-items: center;
    gap: var(--space-4);
    min-height: 140px;
    padding: var(--space-6);
    border: 1px dashed var(--border-default);
    border-radius: var(--radius-lg);
    background: rgba(255,255,255,.018);
}
.empty-state h3, .empty-state p { margin-bottom: var(--space-1); }
.empty-state p { color: var(--text-muted); }
.empty-state__icon, .empty-state__mark { display: grid; flex: 0 0 auto; width: 52px; height: 52px; place-items: center; border: 1px solid var(--border-default); border-radius: 50%; color: var(--accent); font-size: 1.35rem; }
.empty-state > .button { margin-left: auto; }
.emptyempty { display:none; }
.empty-state--compact { min-height: 110px; padding: var(--space-5); }
.empty-state--error { display: block; max-width: 700px; margin: var(--space-12) auto; text-align: center; }
.empty-state--error .empty-state__icon { margin: 0 auto var(--space-4); border-color: var(--danger); color: var(--danger); }
.request-reference { color: var(--text-muted); font-family: var(--font-mono); font-size: var(--text-xs); }
.empty-inline { margin: 0; color: var(--text-muted); font-size: var(--text-sm); }

/* Login */
.welcome-layout { display: grid; min-height: calc(100vh - 155px); grid-template-columns: minmax(0, 1.2fr) minmax(320px, 430px); align-items: center; gap: clamp(2rem, 8vw, 8rem); padding: var(--space-10) clamp(0rem, 4vw, 4rem); }
.welcome-copy { max-width: 720px; }
.welcome-copy h1 { max-width: 13ch; margin-bottom: var(--space-4); font-size: clamp(2.8rem, 7vw, 5.7rem); line-height: .93; }
.welcome-emblem { display: grid; width: 74px; height: 82px; margin-bottom: var(--space-8); place-items: center; clip-path: polygon(50% 0, 95% 18%, 87% 78%, 50% 100%, 13% 78%, 5% 18%); background: linear-gradient(145deg, var(--accent-bright), var(--accent-deep)); color: #15130e; font-family: var(--font-display); font-size: 2.5rem; font-weight: 900; }
.feature-line { display: flex; flex-wrap: wrap; gap: var(--space-5); padding: 0; color: var(--text-secondary); font-size: var(--text-sm); list-style: none; }
.feature-line span { color: var(--accent); }
.auth-stack { display: grid; gap: var(--space-3); }
.auth-panel { padding: var(--space-6); }
.auth-register > summary { padding: var(--space-3); color: var(--text-muted); cursor: pointer; font-size: var(--text-sm); text-align: center; }
.auth-register[open] > summary { margin-bottom: var(--space-3); }

/* Command home */
.command-header, .catalog-command-header {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: var(--space-8);
    padding: var(--space-5) 0 var(--space-6);
    border-bottom: 1px solid var(--border-subtle);
}
.command-header h1, .catalog-command-header h1 { margin-bottom: var(--space-2); }
.command-header p:last-child, .catalog-command-header .lede { margin-bottom: 0; }
.command-totals, .catalog-counts, .summary-stats { display: flex; margin: 0; }
.command-totals > div, .catalog-counts > div, .summary-stats > div { min-width: 92px; padding: 0 var(--space-4); border-left: 1px solid var(--border-default); text-align: center; }
.command-totals dt, .catalog-counts dt, .summary-stats dt { color: var(--text-muted); font-size: var(--text-xs); font-weight: 750; letter-spacing: .08em; text-transform: uppercase; }
.command-totals dd, .catalog-counts dd, .summary-stats dd { margin: 0; color: var(--text-primary); font-family: var(--font-display); font-size: 1.7rem; font-variant-numeric: tabular-nums; font-weight: 800; }

.onboarding-panel { display: grid; grid-template-columns: minmax(220px,.8fr) 1.5fr; gap: var(--space-8); margin: var(--space-6) 0; padding: var(--space-6); border: 1px solid rgba(196,154,80,.34); border-radius: var(--radius-lg); background: linear-gradient(120deg, rgba(117,87,43,.2), rgba(23,32,28,.9)); }
.onboarding-panel p { margin-bottom: 0; }
.onboarding-choices { display: grid; grid-template-columns: minmax(0,1fr); gap: var(--space-3); }
.choice-card, .task-link { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-4); border: 1px solid var(--border-default); border-radius: var(--radius-md); background: rgba(0,0,0,.15); color: var(--text-primary); text-decoration: none; transition: var(--transition-base); }
.choice-card:hover, .task-link:hover { border-color: var(--accent); background: rgba(196,154,80,.08); transform: translateY(-2px); }
.choice-card > span:nth-child(2), .task-link > span:nth-child(2) { display: flex; flex: 1; flex-direction: column; }
.choice-card small, .task-link small { color: var(--text-muted); }
.choice-card__icon, .task-panel__icon { display: grid; width: 38px; height: 38px; place-items: center; border-radius: var(--radius-md); background: var(--surface-panel); color: var(--accent-bright); }
.choice-card--recommended { border-color: rgba(196,154,80,.5); }

.continue-battle { position: relative; display: grid; grid-template-columns: 62px minmax(0,1fr) auto; align-items: center; gap: var(--space-5); margin: var(--space-6) 0; padding: var(--space-5); overflow: hidden; border: 1px solid rgba(196,154,80,.42); border-radius: var(--radius-lg); background: linear-gradient(112deg, rgba(117,87,43,.24), rgba(29,40,34,.96) 46%, rgba(16,23,20,.96)); box-shadow: var(--shadow-2); }
.continue-battle::after { position: absolute; top: -70px; right: 10%; width: 280px; height: 180px; border: 1px solid rgba(196,154,80,.1); border-radius: 50%; content: ""; transform: rotate(-12deg); }
.continue-battle__standard { display: grid; width: 58px; height: 64px; place-items: center; clip-path: polygon(50% 0,95% 17%,86% 78%,50% 100%,14% 78%,5% 17%); background: linear-gradient(145deg,var(--accent-bright),var(--accent-deep)); color: #17140e; font-size: 1.45rem; }
.continue-battle__title-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3); }
.continue-battle__title-row h2 { margin: 0; }
.battle-summary { display: flex; flex-wrap: wrap; gap: var(--space-6); margin: var(--space-3) 0 0; }
.battle-summary div { display: flex; gap: var(--space-2); }
.battle-summary dt { color: var(--text-muted); font-size: var(--text-xs); text-transform: uppercase; }
.battle-summary dd { margin: 0; color: var(--text-secondary); font-size: var(--text-sm); }

.command-grid { display: grid; grid-template-columns: minmax(0,1fr); align-items: start; gap: var(--space-6); }
.command-grid__main { display: grid; gap: var(--space-8); min-width: 0; }
.dashboard-section { min-width: 0; }
.section-heading { display: flex; align-items: end; justify-content: space-between; gap: var(--space-4); margin-bottom: var(--space-4); }
.section-heading h2 { margin: 0; }
.section-heading p:last-child { margin: var(--space-1) 0 0; color: var(--text-muted); font-size: var(--text-sm); }
.battle-list { display: grid; gap: var(--space-2); }
.battle-row { display: grid; grid-template-columns: 38px minmax(180px,1.4fr) minmax(130px,.8fr) minmax(145px,.8fr) auto auto; align-items: center; gap: var(--space-3); padding: var(--space-3); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); background: rgba(255,255,255,.018); transition: var(--transition-fast); }
.battle-row:hover { border-color: var(--border-default); background: rgba(255,255,255,.035); }
.battle-row__icon { display: grid; width: 34px; height: 34px; place-items: center; border: 1px solid var(--border-subtle); border-radius: 50%; color: var(--accent); }
.battle-row__identity, .battle-row__command, .battle-row__activity { display: flex; min-width: 0; flex-direction: column; }
.battle-row__identity span, .battle-row small { overflow: hidden; color: var(--text-muted); font-size: var(--text-xs); text-overflow: ellipsis; white-space: nowrap; }
.battle-row__command span, .battle-row__activity time { overflow: hidden; color: var(--text-secondary); font-size: var(--text-sm); text-overflow: ellipsis; white-space: nowrap; }

.force-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(240px,1fr)); gap: var(--space-3); }
.force-card { position: relative; display: grid; min-height: 195px; grid-template-columns: auto 1fr; align-content: start; gap: var(--space-2) var(--space-3); padding: var(--space-5); overflow: hidden; border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); background: linear-gradient(145deg,rgba(34,45,39,.9),rgba(20,28,24,.95)); color: var(--text-primary); text-decoration: none; transition: var(--transition-base); }
.force-card:hover { border-color: var(--accent); box-shadow: var(--shadow-2); transform: translateY(-2px); }
.force-card__standard { display: grid; width: 44px; height: 50px; grid-row: 1 / span 3; place-items: center; clip-path: polygon(50% 0,94% 17%,87% 78%,50% 100%,13% 78%,6% 17%); background: rgba(196,154,80,.18); color: var(--accent-bright); }
.force-card > strong { grid-column: 2; font-family: var(--font-display); font-size: 1.12rem; }
.force-card > .content-badge { position: absolute; top: var(--space-4); right: var(--space-4); }
.force-card__type { grid-column: 2; padding-right: 5rem; color: var(--text-muted); font-size: var(--text-xs); }
.force-card dl { display: grid; grid-column: 1 / -1; grid-template-columns: repeat(3,1fr); margin: var(--space-3) 0; padding: var(--space-3) 0; border-block: 1px solid var(--border-subtle); }
.force-card dl div { text-align: center; }
.force-card dt { color: var(--text-muted); font-size: .65rem; text-transform: uppercase; }
.force-card dd { margin: 0; color: var(--text-primary); font-weight: 800; text-transform: capitalize; }
.force-card__enter { grid-column: 1 / -1; color: var(--accent-bright); font-size: var(--text-sm); font-weight: 750; }

.selection-preview { display: flex; flex-direction: column; padding: var(--space-3); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); background: rgba(0,0,0,.14); }
.selection-preview strong { color: var(--text-primary); font-size: var(--text-sm); }
.selection-preview span { color: var(--text-muted); font-size: var(--text-xs); }

.command-actions { margin-top: var(--space-10); padding-top: var(--space-6); border-top: 1px solid var(--border-subtle); }
.action-tile-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: var(--space-3); }
.task-panel, .task-link { min-width: 0; border: 1px solid var(--border-subtle); border-radius: var(--radius-md); background: var(--surface-panel); }
.task-panel > summary { display: flex; min-height: 84px; align-items: center; gap: var(--space-3); padding: var(--space-4); cursor: pointer; list-style: none; }
.task-panel > summary::-webkit-details-marker { display: none; }
.task-panel > summary > span:nth-child(2) { display: flex; min-width: 0; flex: 1; flex-direction: column; }
.task-panel > summary small { color: var(--text-muted); font-size: var(--text-xs); }
.task-panel[open] { grid-column: span 2; border-color: var(--accent-deep); }
.task-panel__content { padding: 0 var(--space-4) var(--space-4); }
.domain-create-options { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--space-4); }
.domain-create-option { display:flex; min-width:0; flex-direction:column; gap:var(--space-4); padding:var(--space-4); border:1px solid var(--border-subtle); border-radius:var(--radius-md); background:rgba(0,0,0,.14); }
.domain-create-option > div > h3 { margin:.15rem 0 var(--space-2); }
.domain-create-option > div > p:last-child { margin:0; color:var(--text-muted); font-size:var(--text-sm); }
.domain-create-option form { margin-top:auto; }
.domain-create-links { display:flex; flex-wrap:wrap; gap:var(--space-3); margin-top:var(--space-4); }
.task-link { min-height: 84px; }
.advanced-content { margin-top: var(--space-8); border-top: 1px solid var(--border-subtle); }
.advanced-content > summary { padding: var(--space-4) 0; color: var(--text-muted); cursor: pointer; font-size: var(--text-sm); }
.advanced-content__grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: var(--space-4); }

/* Unit cards shared by roster and battlefield */
.unit-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(min(100%,var(--unit-card-min)),1fr)); align-items: start; gap: var(--space-3); }
.unit-card { position: relative; isolation: isolate; display: flex; min-width: 0; min-height: 248px; flex-direction: column; overflow: hidden; border: 1px solid rgba(57,55,47,.34); border-top: 3px solid #7a6641; border-radius: var(--radius-md); outline: none; background: linear-gradient(155deg,var(--surface-ivory-raised),var(--surface-ivory)); color: var(--text-ink); box-shadow: var(--shadow-1); transition: border-color var(--transition-fast), box-shadow var(--transition-base), transform var(--transition-base), filter var(--transition-fast); }
.unit-card::after { position: absolute; z-index: 1; inset: 0; background: linear-gradient(105deg,transparent 55%,rgba(94,68,32,.035)); content: ""; pointer-events: none; }
.unit-art { position: absolute; z-index: 0; inset: 0; display: block; overflow: hidden; pointer-events: none; user-select: none; }
.unit-art img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; filter: saturate(.98) contrast(1.02); pointer-events: none; }
.unit-art--focus-top img { object-position: center top; }
.unit-art--focus-bottom img { object-position: center bottom; }
.unit-art--focus-left img { object-position: left center; }
.unit-art--focus-right img { object-position: right center; }
.unit-card.has-unit-art::after { background: linear-gradient(180deg,rgba(246,241,227,.81) 0%,rgba(244,238,222,.72) 35%,rgba(242,235,218,.88) 72%,rgba(238,231,214,.95) 100%),linear-gradient(105deg,rgba(255,255,255,.2),rgba(63,47,25,.08)); }
.unit-card.has-unit-art .unit-card__identity p,
.unit-card.has-unit-art .unit-card__identity > span { color: #3f4038; }
.unit-card.has-unit-art .identity-badge,
.unit-card.has-unit-art .support-badge,
.unit-card.has-unit-art .condition-badge { background:rgba(250,247,237,.82); }
.unit-card.has-unit-art .unit-card__stat-ribbon,
.unit-card.has-unit-art .casualty-readout,
.unit-card.has-unit-art .unit-card__combat-meta { background: rgba(250,247,237,.72); backdrop-filter: blur(2px); }
.unit-card[tabindex] { cursor: pointer; }
.unit-card[tabindex]:hover { border-color: #8f713a; box-shadow: 0 8px 22px rgba(0,0,0,.32); transform: translateY(-2px); }
.unit-card:focus-visible { outline: 3px solid var(--selected); outline-offset: 2px; }
.unit-card.is-selected { border-color: #ba8936; box-shadow: 0 0 0 3px rgba(240,201,121,.48),0 13px 28px rgba(0,0,0,.38); transform: translateY(-2px); }
.unit-card__selection { position: absolute; z-index: 4; top: 0; left: 50%; padding: .18rem .65rem; border-radius: 0 0 5px 5px; transform: translate(-50%,-105%); background: #b47d2f; color: #fff8e7; font-size: .6rem; font-weight: 900; letter-spacing: .1em; text-transform: uppercase; transition: transform var(--transition-fast); }
.unit-card.is-selected .unit-card__selection { transform: translate(-50%,0); }
.unit-card__header { position: relative; z-index: 2; display: grid; grid-template-columns: 30px minmax(0,1fr) auto; align-items: start; gap: var(--space-2); padding: var(--space-4) var(--space-4) var(--space-3); border-bottom: 1px solid rgba(45,45,39,.14); }
.unit-card__sigil { display: grid; width: 28px; height: 32px; place-items: center; clip-path: polygon(50% 0,94% 17%,87% 78%,50% 100%,13% 78%,6% 17%); background: #725d37; color: #f6e8c7; font-size: .72rem; }
.unit-card__identity { min-width: 0; }
.unit-card__identity p { margin: 0 0 .1rem; overflow: hidden; color: #756b57; font-size: .62rem; font-weight: 850; letter-spacing: .09em; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; }
.unit-card__identity h3 { margin: 0; overflow: hidden; color: #20241e; font-family: var(--font-display); font-size: 1.08rem; text-overflow: ellipsis; white-space: nowrap; }
.unit-card__identity > span { color: #68665c; font-size: .68rem; }
.condition-badge { display: inline-flex; align-items: center; gap: .3rem; padding: .24rem .45rem; border: 1px solid rgba(50,65,54,.28); border-radius: var(--radius-pill); color: #315b3e; font-size: .63rem; font-weight: 900; letter-spacing: .04em; text-transform: uppercase; white-space: nowrap; }
.condition-badge--diminished { border-color: rgba(151,97,27,.35); background: rgba(194,133,42,.12); color: #89581d; }
.condition-badge--broken { border-color: rgba(136,47,40,.35); background: rgba(155,55,46,.12); color: #8f322c; }
.unit-card__body { position: relative; z-index: 2; display: flex; flex: 1; flex-direction: column; padding: var(--space-3) var(--space-4); }
.unit-card__stat-ribbon, .unit-stat-ribbon { display: grid; grid-template-columns: repeat(4,1fr); margin: 0 0 var(--space-3); border: 1px solid rgba(45,45,39,.18); border-radius: var(--radius-sm); background: rgba(255,255,255,.28); }
.unit-card__stat-ribbon div, .unit-stat-ribbon div { padding: .32rem .2rem; border-right: 1px solid rgba(45,45,39,.13); text-align: center; }
.unit-card__stat-ribbon div:last-child, .unit-stat-ribbon div:last-child { border: 0; }
.unit-card__stat-ribbon dt, .unit-stat-ribbon dt { color: #787366; font-size: .56rem; font-weight: 900; letter-spacing: .06em; }
.unit-card__stat-ribbon dd, .unit-stat-ribbon dd { margin: 0; color: #25281f; font-family: var(--font-mono); font-size: 1rem; font-variant-numeric: tabular-nums; font-weight: 900; }
.unit-card__readout { display: grid; grid-template-columns: minmax(0,1.25fr) minmax(105px,.75fr); align-items: stretch; gap: var(--space-2); }
.casualty-readout { display: flex; min-height: 72px; flex-direction: column; justify-content: center; padding: var(--space-2) var(--space-3); border: 1px solid rgba(91,65,30,.22); border-radius: var(--radius-sm); background: rgba(119,84,34,.07); }
.casualty-readout > span:first-child { color: #716956; font-size: .6rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.casualty-readout strong { display: flex; align-items: baseline; gap: var(--space-2); font-variant-numeric: tabular-nums; }
.casualty-readout b { color: #765722; font-family: var(--font-display); font-size: 1.4rem; }
.casualty-readout em { color: #24271f; font-family: var(--font-mono); font-size: 1.48rem; font-style: normal; font-weight: 900; letter-spacing: -.08em; }
.casualty-readout--empty em { font-family: var(--font-ui); font-size: .78rem; letter-spacing: 0; }
.unit-card__combat-meta { display: grid; margin: 0; border: 1px solid rgba(45,45,39,.16); border-radius: var(--radius-sm); }
.unit-card__combat-meta div { display: flex; align-items: center; justify-content: space-between; padding: .16rem .4rem; border-bottom: 1px solid rgba(45,45,39,.1); }
.unit-card__combat-meta div:last-child { border: 0; }
.unit-card__combat-meta dt { color: #777267; font-size: .58rem; font-weight: 800; text-transform: uppercase; }
.unit-card__combat-meta dd { margin: 0; color: #24271f; font-family: var(--font-mono); font-size: .72rem; font-weight: 900; }
.unit-card__conditions { display: flex; flex-wrap: wrap; gap: var(--space-1); margin-top: var(--space-2); }
.unit-card__conditions:empty { display: none; }
.unit-card__conditions span { padding: .16rem .38rem; border-radius: var(--radius-sm); background: rgba(121,77,31,.1); color: #77511f; font-size: .62rem; font-weight: 800; }
.trait-chip-row { display: flex; flex-wrap: wrap; gap: var(--space-1); }
.unit-card__body > .trait-chip-row { margin-top: auto; padding-top: var(--space-2); }
.trait-chip-row span { padding: .18rem .42rem; border: 1px solid rgba(61,59,50,.18); border-radius: var(--radius-pill); background: rgba(255,255,255,.25); color: #55584f; font-size: .6rem; font-weight: 800; text-transform: capitalize; }
.unit-card__footer { position: relative; z-index: 2; display: flex; min-height: 38px; align-items: center; gap: var(--space-1); padding: var(--space-2) var(--space-3); border-top: 1px solid rgba(45,45,39,.14); background: rgba(49,45,36,.04); }
.unit-card__footer .identity-badge, .unit-card__footer .support-badge { padding: .2rem .42rem; font-size: .56rem; }
.unit-card__footer .identity-badge--canonical { border-color: rgba(125,87,27,.35); color: #78561e; }
.unit-card__footer .identity-badge--custom { border-color: rgba(77,65,116,.3); color: #68588d; }
.unit-card__footer .support-badge--supported { border-color: rgba(49,101,65,.35); background: rgba(61,126,81,.1); color: #326942; }
.unit-card__footer .support-badge--partial { border-color: rgba(151,97,27,.3); background: rgba(194,133,42,.09); color: #84571f; }
.card-inspect-button { margin-left: auto; padding: .2rem; border: 0; background: transparent; color: #7d5b24; cursor: pointer; font-size: .65rem; font-weight: 900; }
.unit-card--diminished { border-top-color: #a86d27; background: linear-gradient(155deg,#efe0c5,#dfd2bb); }
.unit-card--diminished::before { position: absolute; z-index: 3; inset: 0; background: repeating-linear-gradient(118deg,transparent 0,transparent 21px,rgba(121,73,27,.028) 22px,rgba(121,73,27,.028) 23px); content: ""; pointer-events:none; }
.unit-card--broken { border-top-color: #8e3730; filter: saturate(.64); }
.unit-card--broken::before { position: absolute; inset: 0; z-index: 3; background: linear-gradient(140deg,transparent 49.5%,rgba(116,42,37,.22) 50%,transparent 50.8%); content:""; pointer-events:none; }
.unit-card--broken .unit-card__body { opacity: .72; }
.unit-card.is-value-updated { animation: value-pulse 1.5s ease; }
@keyframes value-pulse { 0%,100% { box-shadow: var(--shadow-1); } 28% { box-shadow: 0 0 0 5px rgba(213,163,76,.55),0 14px 28px rgba(0,0,0,.4); } }

.unit-card__menu { position: relative; margin-left: auto; }
.unit-card__menu > summary { padding: .2rem .4rem; color: #68665c; cursor: pointer; list-style:none; }
.unit-card__menu > div { top: calc(100% + 4px); color: var(--text-primary); }
.unit-card__menu form + form { border-top: 1px solid var(--border-subtle); }
.unit-card__menu button { width: 100%; padding: var(--space-2); border:0; background:transparent; color:var(--text-secondary); cursor:pointer; font-size:var(--text-xs); text-align:left; }
.unit-card__menu button:hover { color:var(--text-primary); }
.unit-card__menu button.is-destructive { color:var(--danger); }

/* Faction roster */
.roster-hero { display: grid; grid-template-columns: 88px minmax(0,1fr) auto; align-items: center; gap: var(--space-6); margin-bottom: var(--space-8); padding: var(--space-6); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); background: linear-gradient(110deg,rgba(75,57,30,.45),rgba(26,36,31,.95) 38%,rgba(19,27,23,.95)); }
.roster-hero__standard { display: grid; width: 80px; height: 90px; place-items:center; clip-path: polygon(50% 0,94% 17%,87% 78%,50% 100%,13% 78%,6% 17%); background: linear-gradient(145deg,var(--accent-bright),var(--accent-deep)); color:#17140e; font-size:1.4rem; }
.roster-title-line { display:flex; flex-wrap:wrap; align-items:center; gap:var(--space-3); }
.roster-title-line h1 { margin:0; }
.roster-hero__identity .lede { margin:var(--space-2) 0; font-size:var(--text-md); }
.roster-template { display:flex; flex-wrap:wrap; gap:var(--space-2); margin:0; color:var(--text-secondary); font-size:var(--text-sm); }
.roster-template span::before { margin-right:var(--space-2); color:var(--accent); content:"◆"; }
.roster-hero__summary { display:grid; gap:var(--space-4); }
.roster-hero__actions { display:flex; justify-content:flex-end; gap:var(--space-2); }
.roster-layout { display:grid; grid-template-columns:minmax(0,1fr) 330px; align-items:start; gap:var(--space-6); }
.roster-main { display:grid; gap:var(--space-8); min-width:0; }
.roster-sidebar { display:grid; gap:var(--space-4); }
.roster-unit-grid { grid-template-columns:repeat(auto-fill,minmax(min(100%,275px),1fr)); }
.coverage-meter { height:8px; margin:var(--space-4) 0; overflow:hidden; border-radius:var(--radius-pill); background:rgba(0,0,0,.3); }
.coverage-meter span { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,var(--accent-deep),var(--positive)); }
.roster-readiness p { margin:0; color:var(--text-muted); font-size:var(--text-sm); }
.quick-add-panel { display:grid; grid-template-columns:minmax(200px,.7fr) minmax(0,1.3fr); gap:var(--space-6); padding:var(--space-6); border:1px solid rgba(196,154,80,.35); border-radius:var(--radius-lg); background:linear-gradient(135deg,rgba(75,57,30,.28),rgba(28,38,32,.9)); }
.quick-add-panel__intro p:last-child { margin:0; color:var(--text-muted); font-size:var(--text-sm); }
.quick-add-form { display:grid; grid-template-columns:1fr 1fr auto; align-items:end; gap:var(--space-3); }
.quick-add-panel > .text-link { grid-column:2; }
.disclosure-panel { padding:0; overflow:visible; }
.disclosure-panel > summary { display:flex; align-items:center; justify-content:space-between; gap:var(--space-3); padding:var(--space-4); cursor:pointer; list-style:none; }
.disclosure-panel > summary::-webkit-details-marker { display:none; }
.disclosure-panel > summary > span:first-child { display:flex; flex-direction:column; }
.disclosure-panel > summary small { color:var(--text-muted); font-size:.65rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; }
.disclosure-panel__body, .disclosure-panel > .member-list, .join-code-block { margin:0 var(--space-4) var(--space-4); }
.ontology-help { margin-block:var(--space-4); border-style:dashed; }
.ontology-help > summary { min-height:48px; }
.ontology-help > summary:hover { background:color-mix(in srgb, var(--accent) 6%, transparent); }
.ontology-help[open] > summary { border-bottom:1px solid var(--border-subtle); }
.disclosure-cue { display:flex; align-items:center; gap:var(--space-2); color:var(--text-muted); font-size:var(--text-xs); font-weight:700; }
.disclosure-cue > span:last-child { display:grid; width:1.75rem; height:1.75rem; place-items:center; border:1px solid var(--border-subtle); border-radius:50%; font-size:1rem; transition:transform .18s ease; }
.ontology-help[open] .disclosure-cue > span:last-child { transform:rotate(45deg); }
.ontology-help__body { padding-top:var(--space-4); }
.ontology-help__body > p:first-child { margin-top:0; color:var(--text-muted); }
.ontology-help__body h3 { margin:var(--space-4) 0 var(--space-2); font-size:1rem; }
.ontology-help__body h3:first-child { margin-top:0; }
.ontology-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--space-2); margin:0; }
.ontology-list > div { min-width:0; padding:var(--space-3); border:1px solid var(--border-subtle); border-radius:var(--radius-sm); background:color-mix(in srgb, var(--surface-panel-strong) 82%, transparent); }
.ontology-list dt { font-weight:800; }
.ontology-list dd { margin:.3rem 0 0; color:var(--text-muted); line-height:1.5; }
.ontology-list--compact dd { font-size:var(--text-sm); }
.ontology-note { margin:var(--space-3) 0 0; padding:var(--space-3); border-left:3px solid var(--accent); background:color-mix(in srgb, var(--accent) 7%, transparent); }
.ontology-note:last-child { margin-bottom:0; }
.ontology-abbreviations { display:flex; flex-wrap:wrap; gap:var(--space-2); margin:0; }
.ontology-abbreviations abbr { min-width:3.25rem; padding:.4rem .55rem; border:1px solid var(--border-subtle); border-radius:var(--radius-sm); color:var(--text-primary); font-weight:800; text-align:center; text-decoration:none; }
@media (max-width:760px) {
    .ontology-list { grid-template-columns:1fr; }
    .ontology-help > summary { align-items:flex-start; }
    .disclosure-cue > span:first-child { position:absolute; width:1px; height:1px; padding:0; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
}
.member-list { display:grid; gap:var(--space-2); padding:0; list-style:none; }
.member-list li { display:flex; align-items:center; gap:var(--space-2); padding:var(--space-2) 0; border-bottom:1px solid var(--border-subtle); }
.member-list li > span:nth-child(2) { display:flex; min-width:0; flex:1; flex-direction:column; }
.member-list small { color:var(--text-muted); font-size:var(--text-xs); }
.member-list em { color:var(--accent-bright); font-size:var(--text-xs); font-style:normal; text-transform:capitalize; }
.member-list form { margin:0; }
.member-role-form select { min-height:2.75rem; }
.join-code-block { padding:var(--space-3); border:1px solid var(--border-subtle); border-radius:var(--radius-md); background:rgba(0,0,0,.14); }
.join-code-block p { margin:0 0 var(--space-2); color:var(--text-secondary); font-size:var(--text-xs); font-weight:800; text-transform:uppercase; }
.join-code-block small { display:block; margin-top:var(--space-2); color:var(--text-muted); }

/* Catalog */
.catalog-command-header { margin-bottom:var(--space-6); }
.catalog-toolbar { position:sticky; top:calc(var(--header-height) + var(--space-2)); z-index:30; margin-bottom:var(--space-8); padding:var(--space-3); border:1px solid var(--border-subtle); border-radius:var(--radius-lg); background:rgba(23,32,28,.94); box-shadow:var(--shadow-2); backdrop-filter:blur(12px); }
.catalog-filters { display:grid; grid-template-columns:minmax(210px,1.4fr) repeat(3,minmax(130px,.7fr)) auto auto; align-items:end; gap:var(--space-2); }
.catalog-filters label > span { color:var(--text-muted); font-size:.67rem; letter-spacing:.05em; text-transform:uppercase; }
.catalog-muster-filter { display:grid; grid-template-columns:minmax(220px,1fr) minmax(220px,.8fr) minmax(230px,.8fr); align-items:center; gap:var(--space-3); margin:calc(-1 * var(--space-5)) 0 var(--space-6); padding:var(--space-3); border:1px solid var(--border-subtle); border-radius:var(--radius-lg); background:var(--surface-panel); }
.catalog-muster-filter h2,.catalog-muster-filter p { margin:0; }.catalog-muster-filter h2 { font-size:1rem; }.catalog-muster-filter > label:not(.catalog-muster-toggle) { display:grid; gap:.3rem; }.catalog-muster-filter > label > span { color:var(--text-secondary); font-size:var(--text-sm); font-weight:750; }.catalog-muster-toggle { display:flex; min-height:46px; align-items:center; gap:var(--space-2); padding:.55rem .7rem; border:1px solid var(--border-subtle); border-radius:var(--radius-md); background:var(--surface-raised); }.catalog-muster-toggle input { width:1.15rem; height:1.15rem; accent-color:var(--accent); }.catalog-muster-filter [data-catalog-muster-status] { grid-column:1 / -1; color:var(--text-muted); font-size:var(--text-xs); }
.catalog-search { position:relative; }
.catalog-search input { padding-left:2.2rem; }
.catalog-search b { position:absolute; bottom:.55rem; left:.72rem; color:var(--text-muted); font-size:1.1rem; }
.section-heading--catalog { margin-bottom:var(--space-5); }
.catalog-unit-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,310px),1fr)); align-items:start; gap:var(--space-3); }
.catalog-unit-card { position:relative; isolation:isolate; overflow:hidden; border:1px solid var(--border-subtle); border-top:3px solid var(--accent-deep); border-radius:var(--radius-lg); background:linear-gradient(150deg,var(--surface-ivory-raised),var(--surface-ivory)); color:var(--text-ink); box-shadow:var(--shadow-1); transition:var(--transition-base); }
.catalog-unit-card:hover { border-color:rgba(196,154,80,.6); transform:translateY(-2px); box-shadow:var(--shadow-2); }
.catalog-unit-card[open] { grid-column:span 2; border-color:var(--accent); box-shadow:var(--shadow-3); }
.catalog-unit-card > summary { position:relative; isolation:isolate; display:grid; gap:var(--space-3); padding:var(--space-4); overflow:hidden; cursor:pointer; list-style:none; }
.catalog-unit-card.has-unit-art > summary { min-height:280px; align-content:space-between; }
.catalog-unit-card.has-unit-art > summary::after { position:absolute; z-index:1; inset:0; background:linear-gradient(180deg,rgba(246,241,227,.8) 0%,rgba(244,238,222,.67) 43%,rgba(239,232,215,.94) 100%),linear-gradient(100deg,rgba(255,255,255,.18),rgba(63,47,25,.08)); content:""; pointer-events:none; }
.catalog-unit-card > summary > :not(.unit-art) { position:relative; z-index:2; }
.catalog-unit-card > summary > .catalog-unit-card__art { position:absolute; z-index:0; inset:0; }
.catalog-unit-card.has-unit-art .catalog-unit-card__identity p,
.catalog-unit-card.has-unit-art .catalog-unit-card__identity small,
.catalog-unit-card.has-unit-art .catalog-unit-card__footer { color:#383a33; }
.catalog-unit-card.has-unit-art .identity-badge,
.catalog-unit-card.has-unit-art .support-badge { background:rgba(250,247,237,.84); }
.catalog-unit-card.has-unit-art .unit-stat-ribbon { background:rgba(250,247,237,.76); backdrop-filter:blur(2px); }
.catalog-unit-card > summary::-webkit-details-marker { display:none; }
.catalog-unit-card__topline { display:flex; justify-content:space-between; gap:var(--space-2); }
.catalog-unit-card__topline .identity-badge--canonical { border-color:rgba(125,87,27,.35); color:#78561e; }
.catalog-unit-card__topline .support-badge--supported { border-color:rgba(49,101,65,.35); background:rgba(61,126,81,.1); color:#326942; }
.catalog-unit-card__topline .support-badge--partial { border-color:rgba(151,97,27,.3); background:rgba(194,133,42,.09); color:#84571f; }
.catalog-unit-card__identity { display:grid; grid-template-columns:38px minmax(0,1fr) auto; align-items:center; gap:var(--space-3); }
.catalog-unit-card__sigil { display:grid; width:36px; height:42px; place-items:center; clip-path:polygon(50% 0,94% 17%,87% 78%,50% 100%,13% 78%,6% 17%); background:#725d37; color:#f6e8c7; }
.catalog-unit-card__identity h3 { margin:0; color:#22251e; font-family:var(--font-display); }
.catalog-unit-card__identity p { margin:0; color:#68665c; font-size:var(--text-sm); }
.catalog-unit-card__identity small { color:#858075; font-size:var(--text-xs); }
.catalog-unit-card__size { display:grid; width:48px; height:48px; place-items:center; border:1px solid rgba(76,65,44,.22); border-radius:50%; background:rgba(117,85,37,.07); }
.catalog-unit-card__size small { color:#777065; font-size:.55rem; font-weight:800; text-transform:uppercase; }
.catalog-unit-card__size strong { margin-top:-.45rem; font-family:var(--font-mono); font-size:1.1rem; }
.catalog-unit-card .unit-stat-ribbon { grid-template-columns:repeat(6,1fr); margin:0; }
.catalog-unit-card .unit-stat-ribbon dd { font-size:.86rem; }
.catalog-unit-card__footer { display:flex; justify-content:space-between; color:#6a685e; font-size:var(--text-xs); font-weight:750; }
.catalog-unit-card[open] .catalog-unit-card__footer b { display:inline-block; transform:rotate(180deg); }
.catalog-unit-detail { position:relative; z-index:2; display:grid; grid-template-columns:1fr 1fr; gap:var(--space-4); padding:var(--space-5); border-top:1px solid rgba(45,45,39,.18); background:#eee8d9; }
.catalog-unit-detail h4 { margin-bottom:var(--space-2); color:#3e4038; font-family:var(--font-ui); font-size:.7rem; letter-spacing:.08em; text-transform:uppercase; }
.catalog-unit-detail p { margin:0; color:#626158; font-size:var(--text-sm); }
.catalog-unit-detail .trait-chip-row span { color:#55584f; }
.catalog-unit-actions { display:grid; grid-column:1 / -1; grid-template-columns:minmax(0,1fr) auto; align-items:end; gap:var(--space-3); padding-top:var(--space-4); border-top:1px solid rgba(45,45,39,.16); }
.catalog-add-form { display:grid; grid-template-columns:1fr 1fr auto; align-items:end; gap:var(--space-2); }
.catalog-unit-detail input, .catalog-unit-detail select, .catalog-faction-card input, .catalog-faction-card select { border-color:rgba(45,45,39,.25); background:rgba(255,255,255,.44); color:var(--text-ink); }
.catalog-unit-detail label, .catalog-faction-card label { color:#55564e; }
.catalog-unit-detail .button--secondary, .catalog-faction-card .button--secondary { border-color:rgba(74,61,41,.35); color:#34362e; }
.catalog-blocker { display:flex; align-items:center; gap:var(--space-2); padding:var(--space-3); border-radius:var(--radius-md); background:rgba(150,78,41,.09); color:#784d31 !important; font-size:var(--text-sm); }
.organization-browser { margin-top:var(--space-10); border:1px solid var(--border-subtle); border-radius:var(--radius-lg); background:var(--surface-panel); }
.organization-browser > summary { display:flex; align-items:center; justify-content:space-between; gap:var(--space-4); padding:var(--space-5); cursor:pointer; list-style:none; }
.organization-browser > summary::-webkit-details-marker { display:none; }
.organization-browser > summary > span:first-child { display:flex; flex-direction:column; }
.organization-browser > summary p { margin:0; }
.organization-browser > summary small { color:var(--text-muted); }
.catalog-faction-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr)); gap:var(--space-3); padding:0 var(--space-5) var(--space-5); }
.catalog-faction-card { display:flex; flex-direction:column; gap:var(--space-3); padding:var(--space-4); border:1px solid rgba(57,55,47,.25); border-radius:var(--radius-md); background:var(--surface-ivory); color:var(--text-ink); }
.catalog-faction-card header h3 { margin:var(--space-3) 0 0; color:#24271f; font-family:var(--font-display); }
.catalog-faction-card header p { margin:0; color:#69685e; font-size:var(--text-sm); }
.domain-stat-line { display:grid; grid-template-columns:repeat(7,1fr); margin:0; border:1px solid rgba(45,45,39,.17); }
.domain-stat-line div { padding:.3rem .1rem; border-right:1px solid rgba(45,45,39,.12); text-align:center; }
.domain-stat-line div:last-child { border:0; }
.domain-stat-line dt { color:#777166; font-size:.52rem; font-weight:900; }
.domain-stat-line dd { margin:0; font-family:var(--font-mono); font-weight:900; }
.catalog-create-form { display:grid; gap:var(--space-3); margin-top:auto; }

/* Battle shell */
.battle-app { min-height:calc(100vh - var(--header-height)); padding:var(--space-3); background:var(--bg-deep); }
.battle-header { display:flex; align-items:center; justify-content:space-between; gap:var(--space-5); min-height:74px; padding:var(--space-2) var(--space-3) var(--space-3); border-bottom:1px solid var(--border-subtle); }
.battle-header__identity { min-width:0; }
.back-link { display:inline-block; margin-bottom:.15rem; font-size:.68rem; }
.battle-title-line { display:flex; flex-wrap:wrap; align-items:center; gap:var(--space-3); }
.battle-title-line h1 { margin:0; overflow:hidden; font-size:clamp(1.35rem,2vw,1.85rem); text-overflow:ellipsis; white-space:nowrap; }
.battle-versus { display:flex; flex-wrap:wrap; gap:var(--space-2); margin:.2rem 0 0; color:var(--text-secondary); font-size:var(--text-xs); }
.battle-versus span { color:var(--text-muted); font-style:italic; }
.battle-header__tools { display:flex; flex:0 0 auto; align-items:center; gap:var(--space-3); }
.state-version { color:var(--text-muted); font-family:var(--font-mono); font-size:var(--text-xs); }
.sync-indicator { display:inline-flex; align-items:center; gap:var(--space-2); color:var(--text-muted); font-size:var(--text-xs); font-weight:700; }
.sync-indicator i { width:8px; height:8px; border-radius:50%; background:var(--warning); box-shadow:0 0 0 3px rgba(213,163,76,.12); }
.sync-indicator[data-state="online"] i { background:var(--positive); box-shadow:0 0 0 3px var(--positive-bg); }
.sync-indicator[data-state="error"] { color:var(--danger); }
.sync-indicator[data-state="error"] i { background:var(--danger); box-shadow:0 0 0 3px var(--danger-bg); }
.battle-tools-menu { position:relative; }
.battle-tools-menu > summary { list-style:none; }
.battle-tools-menu > summary::-webkit-details-marker { display:none; }
.battle-tools-menu__panel { top:calc(100% + var(--space-2)); width:260px; }
.battle-tools-menu__panel p { margin:var(--space-2) 0 0; color:var(--text-muted); font-size:var(--text-xs); }
.action-feedback { position:fixed; z-index:200; top:calc(var(--header-height) + var(--space-3)); left:50%; max-width:min(92vw,680px); padding:var(--space-3) var(--space-4); border:1px solid var(--border-default); border-radius:var(--radius-pill); transform:translate(-50%,-170%); background:var(--surface-panel-strong); box-shadow:var(--shadow-3); color:var(--text-primary); font-size:var(--text-sm); opacity:0; pointer-events:none; transition:var(--transition-base); }
.action-feedback.is-visible { transform:translate(-50%,0); opacity:1; }
.action-feedback[data-type="error"] { border-color:var(--danger); background:#40201d; }
.action-feedback[data-type="success"] { border-color:var(--positive); background:#173225; }
.targeting-bar { display:flex; align-items:center; gap:var(--space-3); margin:var(--space-2) 0; padding:var(--space-3) var(--space-4); border:1px solid var(--accent-bright); border-radius:var(--radius-md); background:linear-gradient(90deg,rgba(117,87,43,.35),var(--surface-panel)); box-shadow:var(--shadow-2); }
.targeting-bar__marker { display:grid; width:34px; height:34px; place-items:center; border:1px solid var(--accent); border-radius:50%; color:var(--accent-bright); }
.targeting-bar p { display:flex; flex:1; flex-direction:column; margin:0; }
.targeting-bar p span { color:var(--text-muted); font-size:var(--text-xs); }
.battle-setup { margin:var(--space-2) 0; border:1px solid var(--border-subtle); border-radius:var(--radius-md); background:var(--surface-panel); }
.battle-setup > summary { display:flex; align-items:center; justify-content:space-between; min-height:46px; padding:var(--space-2) var(--space-4); cursor:pointer; list-style:none; }
.battle-setup > summary::-webkit-details-marker { display:none; }
.battle-setup > summary > span:first-child { display:flex; flex-direction:column; }
.battle-setup > summary small { color:var(--text-muted); font-size:var(--text-xs); }
.disclosure-cue { color:var(--accent-bright); font-size:var(--text-xs); font-weight:800; }
.battle-setup__content { display:flex; flex-wrap:wrap; gap:var(--space-3); padding:var(--space-3); border-top:1px solid var(--border-subtle); }
.inline-task-form { display:flex; flex:1 1 420px; align-items:end; gap:var(--space-2); }
.inline-task-form label { flex:1; }
.battle-stage { display:grid; min-height:550px; grid-template-columns:minmax(0,1fr) var(--inspector-width); align-items:start; gap:var(--space-3); margin-top:var(--space-3); }
.battlefield { position:relative; min-width:0; min-height:550px; overflow:hidden; border:1px solid var(--border-subtle); border-radius:var(--radius-lg); background:linear-gradient(145deg,#18251e,#121a16 55%,#17221c); box-shadow:inset 0 0 70px rgba(0,0,0,.32); }
.battlefield__texture { position:absolute; inset:0; background-image:radial-gradient(circle at 10% 15%,rgba(196,154,80,.055),transparent 18rem),repeating-linear-gradient(115deg,transparent 0,transparent 34px,rgba(255,255,255,.009) 35px,rgba(255,255,255,.009) 36px); pointer-events:none; }
.side-grid { position:relative; z-index:1; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); min-height:548px; }
.battle-side { min-width:0; padding:var(--space-3); }
.battle-side + .battle-side { border-left:1px solid var(--border-default); }
.battle-side--ours { background:linear-gradient(180deg,var(--side-ours-bg),transparent 45%); }
.battle-side--theirs { background:linear-gradient(180deg,var(--side-theirs-bg),transparent 45%); }
.battle-side__header { display:flex; min-height:66px; align-items:center; justify-content:space-between; gap:var(--space-3); margin-bottom:var(--space-3); padding-bottom:var(--space-3); border-bottom:1px solid var(--border-subtle); }
.battle-side__identity { display:flex; align-items:center; gap:var(--space-3); }
.side-standard { display:block; width:34px; height:40px; clip-path:polygon(50% 0,94% 17%,87% 78%,50% 100%,13% 78%,6% 17%); background:var(--side-theirs); }
.battle-side--ours .side-standard { background:var(--side-ours); }
.battle-side--force-one .side-standard { background:var(--side-ours); }
.battle-side__identity p { margin:0; color:var(--side-theirs); font-size:.62rem; font-weight:900; letter-spacing:.14em; }
.battle-side--ours .battle-side__identity p, .battle-side--force-one .battle-side__identity p { color:var(--side-ours); }
.battle-side__identity h2 { margin:0; font-size:1.15rem; }
.faction-chips { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:var(--space-1); }
.faction-chips > span { display:flex; flex-direction:column; padding:.25rem .48rem; border:1px solid var(--border-subtle); border-radius:var(--radius-sm); color:var(--text-secondary); font-size:var(--text-xs); font-weight:750; line-height:1.2; }
.faction-chips small { color:var(--text-muted); font-size:.55rem; text-align:right; }
.faction-chips .faction-chip--canonical { border-color:rgba(216,183,110,.35); }
.faction-chips .faction-chip--empty { color:var(--text-muted); font-style:italic; }
.side-empty { display:flex; grid-column:1 / -1; min-height:150px; align-items:center; justify-content:center; gap:var(--space-3); border:1px dashed var(--border-default); border-radius:var(--radius-md); color:var(--text-muted); }
.side-empty > span { font-size:1.8rem; }
.side-empty strong { color:var(--text-secondary); }
.side-empty p { margin:0; color:var(--text-muted); font-size:var(--text-xs); }
.removed-units { margin-top:var(--space-4); border-top:1px solid var(--border-subtle); }
.removed-units > summary { display:flex; align-items:center; justify-content:space-between; padding:var(--space-3) 0; color:var(--text-muted); cursor:pointer; font-size:var(--text-xs); font-weight:800; text-transform:uppercase; }
.removed-units > summary strong { display:grid; width:24px; height:24px; place-items:center; border:1px solid var(--border-default); border-radius:50%; }
.unit-grid--removed { opacity:.78; }
.unit-grid--removed .unit-card { min-height:210px; }

.unit-inspector { position:sticky; top:calc(var(--header-height) + var(--space-3)); max-height:calc(100vh - var(--header-height) - 30px); overflow:auto; border:1px solid var(--border-subtle); border-radius:var(--radius-lg); background:linear-gradient(160deg,var(--surface-panel-strong),var(--surface-panel)); box-shadow:var(--shadow-2); scrollbar-width:thin; }
.unit-inspector__empty { display:grid; min-height:420px; place-content:center; padding:var(--space-6); text-align:center; }
.inspector-empty-mark { display:grid; width:58px; height:58px; margin:0 auto var(--space-4); place-items:center; border:1px solid var(--border-default); border-radius:50%; color:var(--accent); font-size:1.5rem; }
.unit-inspector__empty p { color:var(--text-muted); font-size:var(--text-sm); }
.inspector-heading { padding:var(--space-5); border-bottom:1px solid var(--border-subtle); background:linear-gradient(135deg,rgba(117,87,43,.22),transparent); }
.inspector-heading h2 { margin:0; font-size:1.35rem; }
.inspector-heading > p:last-child { margin:var(--space-1) 0 0; color:var(--text-muted); font-size:var(--text-xs); }
.inspector-section { padding:var(--space-4) var(--space-5); border-bottom:1px solid var(--border-subtle); }
.inspector-section h3, .inspector-actions h3 { margin-bottom:var(--space-3); color:var(--text-muted); font-family:var(--font-ui); font-size:.67rem; letter-spacing:.11em; text-transform:uppercase; }
.inspector-facts { display:grid; gap:var(--space-2); margin:0; }
.inspector-facts div { display:grid; grid-template-columns:78px 1fr; gap:var(--space-2); }
.inspector-facts dt { color:var(--text-muted); font-size:var(--text-xs); }
.inspector-facts dd { margin:0; color:var(--text-secondary); font-size:var(--text-xs); text-align:right; }
.inspector-condition { display:flex; align-items:center; justify-content:space-between; gap:var(--space-3); }
.inspector-condition .condition-badge { border-color:var(--border-default); color:var(--positive); }
.inspector-condition .condition-badge--diminished { color:var(--warning); }
.inspector-condition .condition-badge--broken { color:var(--danger); }
.inspector-condition > strong { color:var(--accent-bright); font-family:var(--font-mono); font-size:1.15rem; font-variant-numeric:tabular-nums; }
.inspector-facts--compact { margin-top:var(--space-3); padding-top:var(--space-3); border-top:1px solid var(--border-subtle); }
.inspector-stat-grid { display:grid; grid-template-columns:repeat(6,1fr); margin:0; border:1px solid var(--border-subtle); border-radius:var(--radius-sm); }
.inspector-stat-grid div { padding:.34rem .1rem; border-right:1px solid var(--border-subtle); text-align:center; }
.inspector-stat-grid div:last-child { border:0; }
.inspector-stat-grid dt { color:var(--text-muted); font-size:.53rem; font-weight:850; }
.inspector-stat-grid dd { margin:0; color:var(--text-primary); font-family:var(--font-mono); font-size:.9rem; font-weight:900; }
.inspector-damage { display:flex; justify-content:space-between; margin:var(--space-2) 0 0; color:var(--text-muted); font-size:var(--text-xs); }
.inspector-damage strong { color:var(--text-secondary); font-family:var(--font-mono); }
.inspector-section .trait-chip-row span { border-color:var(--border-subtle); background:rgba(255,255,255,.04); color:var(--text-secondary); }
.inspector-actions { padding:var(--space-5); background:rgba(0,0,0,.12); }
.inspector-actions__heading { display:flex; align-items:center; justify-content:space-between; }
.inspector-actions__heading span { color:var(--positive); font-size:.6rem; font-weight:800; text-transform:uppercase; }
.action-option { display:grid; gap:var(--space-2); }
.action-option .button { width:100%; }
.action-option p, .table-action p { margin:0; color:var(--text-muted); font-size:var(--text-xs); }
.table-action { margin-top:var(--space-4); padding-top:var(--space-3); border-top:1px solid var(--border-subtle); }
.table-action > summary { margin-bottom:var(--space-2); color:var(--text-muted); cursor:pointer; font-size:var(--text-xs); }
.table-action .button { width:100%; margin-bottom:var(--space-2); }

.is-targeting .unit-card.is-ineligible-target { cursor:not-allowed; filter:saturate(.15) brightness(.64); opacity:.58; }
.is-targeting .unit-card.is-eligible-target { cursor:crosshair; border-color:var(--selected); box-shadow:0 0 0 3px rgba(240,201,121,.42),0 12px 24px rgba(0,0,0,.35); animation:target-breathe 1.8s ease-in-out infinite; }
.is-targeting .unit-card.is-eligible-target::before { position:absolute; z-index:4; top:var(--space-2); right:var(--space-2); display:grid; width:32px; height:32px; place-items:center; border:1px solid var(--selected); border-radius:50%; background:#65491e; color:#ffe7a8; content:"⌖"; }
.is-targeting .unit-card.is-attacker { border-color:var(--side-ours); box-shadow:0 0 0 3px rgba(110,169,164,.36); }
@keyframes target-breathe { 50% { box-shadow:0 0 0 6px rgba(240,201,121,.26),0 12px 24px rgba(0,0,0,.35); } }

.action-dialog, .command-dialog { width:min(92vw,480px); padding:0; border:1px solid var(--accent); border-radius:var(--radius-lg); background:var(--surface-panel-strong); color:var(--text-primary); box-shadow:var(--shadow-3); }
.action-dialog::backdrop, .command-dialog::backdrop { background:rgba(5,8,7,.76); backdrop-filter:blur(3px); }
.action-dialog form, .command-dialog form { display:grid; justify-items:center; padding:var(--space-8); text-align:center; }
.action-dialog__mark, .dialog-mark { display:grid; width:54px; height:54px; margin-bottom:var(--space-3); place-items:center; border:1px solid var(--accent); border-radius:50%; color:var(--accent-bright); font-size:1.4rem; }
.action-dialog h2, .command-dialog h2 { font-size:1.35rem; }
.action-dialog p, .command-dialog p { color:var(--text-muted); font-size:var(--text-sm); }
.action-dialog__actions, .dialog-actions { display:flex; gap:var(--space-2); margin-top:var(--space-3); }
.dialog-close { position:absolute; top:var(--space-2); right:var(--space-2); display:grid; width:44px; height:44px; place-items:center; padding:0; border:0; background:transparent; color:var(--text-muted); cursor:pointer; font-size:1.2rem; }

.game-console { position:relative; z-index:40; margin-top:var(--space-3); overflow:hidden; border:1px solid var(--border-default); border-radius:var(--radius-lg) var(--radius-lg) 0 0; background:#101613; box-shadow:0 -10px 30px rgba(0,0,0,.28); }
.game-console__header { display:flex; min-height:54px; align-items:center; justify-content:space-between; gap:var(--space-4); padding:var(--space-2) var(--space-3); border-bottom:1px solid var(--border-subtle); background:var(--surface-panel); }
.console-heading { display:flex; min-width:180px; align-items:center; gap:var(--space-2); padding:0; border:0; background:transparent; color:var(--text-primary); cursor:pointer; text-align:left; }
.console-heading__icon { display:grid; width:32px; height:32px; place-items:center; border:1px solid var(--border-subtle); border-radius:var(--radius-sm); color:var(--accent); }
.console-heading > span:nth-child(2) { display:flex; flex-direction:column; }
.console-heading small { color:var(--text-muted); font-size:.62rem; }
.console-chevron { margin-left:auto; transition:transform var(--transition-fast); }
.game-console.is-collapsed .console-chevron { transform:rotate(180deg); }
.console-controls { display:flex; align-items:center; gap:var(--space-4); }
.console-filters { display:flex; gap:var(--space-1); }
.console-filters button { min-height:30px; padding:.25rem .58rem; border:1px solid transparent; border-radius:var(--radius-pill); background:transparent; color:var(--text-muted); cursor:pointer; font-size:var(--text-xs); font-weight:750; }
.console-filters button:hover { color:var(--text-primary); }
.console-filters button.is-active { border-color:var(--border-default); background:rgba(255,255,255,.06); color:var(--text-primary); }
.auto-scroll { display:flex; align-items:center; gap:var(--space-2); color:var(--text-muted); font-size:var(--text-xs); font-weight:600; }
.auto-scroll input { width:15px; min-height:15px; margin:0; accent-color:var(--accent); }
.game-console__body { height:var(--console-height); overflow:auto; scrollbar-color:#4b554f #111714; scrollbar-width:thin; }
@media (min-width: 721px) {
    .battle-page .game-console__body { min-height:120px; max-height:50vh; resize:vertical; }
}
.game-console.is-collapsed .game-console__body, .game-console.is-collapsed .console-controls { display:none; }
.event-list { margin:0; padding:0; list-style:none; }
.event-entry { display:grid; grid-template-columns:32px minmax(0,1fr); gap:var(--space-3); padding:var(--space-3) var(--space-4); border-bottom:1px solid rgba(225,217,196,.07); }
.event-entry:hover { background:rgba(255,255,255,.022); }
.event-entry--important { border-left:3px solid var(--warning); background:var(--warning-bg); }
.event-entry__marker { display:grid; width:28px; height:28px; place-items:center; border:1px solid var(--border-subtle); border-radius:50%; color:var(--text-muted); font-size:.75rem; }
.event-entry--actions .event-entry__marker { color:var(--accent-bright); }
.event-entry--rolls .event-entry__marker { color:#a8bdd8; }
.event-entry--state .event-entry__marker { color:var(--positive); }
.event-entry__summary { display:flex; flex-wrap:wrap; align-items:baseline; gap:var(--space-2); color:var(--text-secondary); font-size:var(--text-sm); }
.event-entry__summary strong { color:var(--text-primary); }
.event-entry__meta { display:flex; gap:var(--space-3); margin:.18rem 0 0; color:var(--text-muted); font-family:var(--font-mono); font-size:.61rem; }
.rule-event-details { margin-top:var(--space-2); }
.rule-event-details > summary { width:max-content; color:var(--accent-bright); cursor:pointer; font-size:var(--text-xs); font-weight:750; }
.rule-event-details > p { display:grid; grid-template-columns:110px 1fr; gap:var(--space-3); margin:var(--space-3) 0; color:var(--text-secondary); font-size:var(--text-xs); }
.rule-event-details > p strong { color:var(--text-muted); text-transform:uppercase; }
.rule-event-calculation { display:grid; grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); gap:var(--space-2); margin:var(--space-2) 0; padding:0; list-style:none; }
.rule-event-calculation li { display:flex; align-items:center; justify-content:space-between; gap:var(--space-2); padding:var(--space-2); border:1px solid var(--border-subtle); border-radius:var(--radius-sm); background:rgba(255,255,255,.025); color:var(--text-muted); font-size:var(--text-xs); }
.rule-event-calculation strong { color:var(--text-primary); font-family:var(--font-mono); }
.rule-event-calculation .dice-result { border-color:rgba(168,189,216,.35); }
.rule-event-calculation .dice-result strong { color:#bed0e7; font-size:1rem; }
.rule-event-changes { margin:var(--space-2) 0; color:var(--text-secondary); font-size:var(--text-xs); }
.rule-event-source { color:var(--text-muted) !important; }
.rule-event-rule, .rule-event-sequence { display:grid; grid-template-columns:110px minmax(0,1fr); gap:var(--space-3); margin:var(--space-3) 0; color:var(--text-secondary); font-size:var(--text-xs); }
.rule-event-rule > strong, .rule-event-sequence > strong { color:var(--text-muted); text-transform:uppercase; }
.rule-event-rule ul, .rule-event-sequence ol { display:grid; gap:var(--space-1); margin:0; padding-left:1.1rem; }
.rule-event-rule li { align-items:baseline; display:flex; flex-wrap:wrap; gap:var(--space-2); justify-content:space-between; }
.rule-event-rule code { color:var(--accent-bright); font-family:var(--font-mono); font-size:.65rem; overflow-wrap:anywhere; }
.developer-event-data { margin-top:var(--space-3); padding:var(--space-2); border:1px dashed var(--border-default); color:var(--text-muted); font-size:var(--text-xs); }
.developer-event-data code { display:block; }
.console-empty { display:grid; min-height:100%; place-content:center; justify-items:center; color:var(--text-muted); text-align:center; }
.console-empty span { font-size:1.5rem; }
.console-empty strong { color:var(--text-secondary); }
.console-empty p { margin:0; color:var(--text-muted); font-size:var(--text-xs); }

/* Admin compatibility */
.detail-hero { display:flex; align-items:end; justify-content:space-between; gap:var(--space-6); margin-bottom:var(--space-6); padding:var(--space-5) 0; border-bottom:1px solid var(--border-subtle); }
.detail-layout { display:grid; grid-template-columns:minmax(0,1fr) 340px; align-items:start; gap:var(--space-6); }
.detail-layout__aside { display:grid; gap:var(--space-4); }
.detail-layout--admin { grid-template-columns:minmax(0,1fr) 360px; }
.meta-plaque, .status-plaque, .warning-plaque { display:grid; min-width:270px; gap:var(--space-2); margin:0; padding:var(--space-4); border:1px solid var(--border-default); border-radius:var(--radius-md); background:var(--surface-panel); }
.warning-plaque { border-color:rgba(213,163,76,.45); background:var(--warning-bg); }
.meta-plaque div { display:flex; justify-content:space-between; gap:var(--space-4); }
.meta-plaque dt { color:var(--text-muted); font-size:var(--text-xs); }
.meta-plaque dd { margin:0; color:var(--text-secondary); font-size:var(--text-xs); }
.table-wrap, .audit-table-wrap { overflow:auto; border:1px solid var(--border-subtle); border-radius:var(--radius-md); }
table { width:100%; border-collapse:collapse; font-size:var(--text-sm); }
th, td { padding:var(--space-3); border-bottom:1px solid var(--border-subtle); text-align:left; vertical-align:top; }
th { background:var(--surface-panel-strong); color:var(--text-muted); font-size:var(--text-xs); letter-spacing:.05em; text-transform:uppercase; }
td { color:var(--text-secondary); }
.rule-filter-bar, .form-pair { display:flex; flex-wrap:wrap; align-items:end; gap:var(--space-3); margin-bottom:var(--space-4); }
.rule-filter-bar label, .form-pair label { min-width:160px; flex:1; }
.audit-list { display:grid; gap:var(--space-2); padding:0; list-style:none; }
.check-row { display:flex; justify-content:space-between; gap:var(--space-4); padding:var(--space-3); border-bottom:1px solid var(--border-subtle); }
.rule-row--ready { border-left:3px solid var(--positive); }
.rule-row--blocked { border-left:3px solid var(--danger); }
.audit-status--pass, .audit-status--verified, .audit-status--complete { color:var(--positive); }
.audit-status--fail, .audit-status--missing { color:var(--danger); }
.status-dot { display:inline-block; width:8px; height:8px; border-radius:50%; background:var(--disabled); }
.status-dot--online { background:var(--positive); }

@media (max-width: 1180px) {
    :root { --inspector-width: 315px; --unit-card-min: 230px; }
    .primary-nav a { padding-inline:var(--space-2); }
    .primary-nav a > span { display:none; }
    .account-nav__identity > span:last-child { display:none; }
    .battle-row { grid-template-columns:36px minmax(160px,1fr) minmax(120px,.7fr) auto auto; }
    .battle-row__activity { display:none; }
    .catalog-filters { grid-template-columns:minmax(190px,1.2fr) repeat(3,minmax(120px,.7fr)) auto; }
    .catalog-filters > .text-link { display:none; }
    .action-tile-grid { grid-template-columns:repeat(2,1fr); }
}

@media (max-width: 960px) {
    .site-header__inner { padding-inline:var(--space-3); }
    .brand { min-width:auto; }
    .brand__name small { display:none; }
    .primary-nav { flex:1; justify-content:center; }
    .command-grid, .roster-layout { grid-template-columns:1fr; }
    .roster-sidebar { grid-template-columns:repeat(2,1fr); }
    .roster-sidebar > :last-child:nth-child(odd) { grid-column:1 / -1; }
    .catalog-toolbar { position:static; }
    .catalog-filters { grid-template-columns:repeat(2,1fr); }
    .catalog-muster-filter { grid-template-columns:1fr 1fr; }
    .catalog-muster-filter > div,.catalog-muster-filter [data-catalog-muster-status] { grid-column:1 / -1; }
    .catalog-search { grid-column:1 / -1; }
    .battle-stage { grid-template-columns:minmax(0,1fr) 300px; }
    .side-grid { grid-template-columns:1fr; }
    .battle-side + .battle-side { border-top:1px solid var(--border-default); border-left:0; }
    .detail-layout, .detail-layout--admin { grid-template-columns:1fr; }
}

@media (max-width: 720px) {
    :root { --header-height: 94px; }
    .site-header { height:var(--header-height); }
    .site-header__inner { display:grid; grid-template-columns:auto 1fr; grid-template-rows:52px 42px; padding:0 var(--space-2); }
    .brand { grid-column:1; grid-row:1; margin:0; }
    .brand__mark { width:30px; height:34px; }
    .account-nav { grid-column:2; grid-row:1; }
    .account-nav__identity { margin-left:auto; }
    .admin-menu > summary span:last-child { display:none; }
    .primary-nav { grid-column:1 / -1; grid-row:2; justify-content:flex-start; overflow-x:auto; border-top:1px solid var(--border-subtle); scrollbar-width:none; }
    .primary-nav::-webkit-scrollbar { display:none; }
    .primary-nav a { flex:0 0 auto; padding:0 var(--space-3); font-size:var(--text-xs); }
    .main-shell { width:min(calc(100% - 1rem),var(--shell-width)); padding-top:var(--space-4); }
    .battle-page .main-shell { width:100%; padding:0; }
    .welcome-layout { min-height:auto; grid-template-columns:1fr; gap:var(--space-6); padding:var(--space-6) 0; }
    .welcome-copy h1 { font-size:clamp(2.5rem,14vw,4rem); }
    .welcome-emblem { width:56px; height:62px; margin-bottom:var(--space-5); font-size:1.8rem; }
    .feature-line { display:grid; gap:var(--space-2); }
    .command-header, .catalog-command-header { align-items:flex-start; flex-direction:column; gap:var(--space-4); }
    .command-totals > div:first-child, .catalog-counts > div:first-child { border-left:0; padding-left:0; }
    .onboarding-panel, .onboarding-choices { grid-template-columns:1fr; }
    .continue-battle { grid-template-columns:48px 1fr; }
    .continue-battle__standard { width:46px; height:52px; }
    .continue-battle > .button { grid-column:1 / -1; }
    .battle-summary { display:grid; gap:var(--space-2); }
    .battle-row { grid-template-columns:34px minmax(0,1fr) auto; }
    .battle-row__command, .battle-row__activity, .battle-row > .status-badge { display:none; }
    .force-grid, .action-tile-grid, .advanced-content__grid { grid-template-columns:1fr; }
    .task-panel[open] { grid-column:auto; }
    .domain-create-options { grid-template-columns:1fr; }
    .empty-state { align-items:flex-start; flex-direction:column; }
    .empty-state > .button { width:100%; margin:0; }
    .roster-hero { grid-template-columns:52px minmax(0,1fr); align-items:start; padding:var(--space-4); }
    .roster-hero__standard { width:50px; height:58px; }
    .roster-hero__summary { grid-column:1 / -1; }
    .roster-hero__actions { justify-content:stretch; }
    .roster-hero__actions .button { flex:1; }
    .roster-sidebar { grid-template-columns:1fr; }
    .quick-add-panel { grid-template-columns:1fr; padding:var(--space-4); }
    .quick-add-form { grid-template-columns:1fr; }
    .quick-add-panel > .text-link { grid-column:auto; }
    .catalog-filters { grid-template-columns:1fr; }
    .catalog-muster-filter { grid-template-columns:1fr; margin-top:calc(-1 * var(--space-4)); }
    .catalog-muster-filter > div,.catalog-muster-filter [data-catalog-muster-status] { grid-column:auto; }
    .catalog-search { grid-column:auto; }
    .catalog-unit-grid, .catalog-faction-grid { grid-template-columns:1fr; }
    .catalog-unit-card[open] { grid-column:auto; }
    .catalog-unit-detail { grid-template-columns:1fr; }
    .catalog-unit-actions { grid-template-columns:1fr; }
    .catalog-add-form { grid-template-columns:1fr; }
    .organization-browser > summary { align-items:flex-start; flex-direction:column; }
    .organization-browser > summary .button { width:100%; }

    .battle-app { padding:var(--space-2); padding-bottom:62px; }
    .battle-header { align-items:flex-start; flex-direction:column; gap:var(--space-2); padding:var(--space-2); }
    .battle-header__tools { width:100%; }
    .battle-header__tools .battle-tools-menu { margin-left:auto; }
    .state-version { display:none; }
    .targeting-bar { position:sticky; top:calc(var(--header-height) + var(--space-1)); z-index:35; }
    .targeting-bar .button { padding-inline:var(--space-2); }
    .targeting-bar .button kbd { display:none; }
    .battle-setup__content, .inline-task-form { align-items:stretch; flex-direction:column; }
    .battle-stage { display:flex; min-height:0; flex-direction:column; }
    .unit-inspector { position:relative; top:auto; order:-1; width:100%; max-height:none; }
    .unit-inspector__empty { min-height:180px; }
    .unit-inspector__content { display:flex; flex-direction:column; }
    .inspector-heading { order:1; }
    .inspector-section--state { order:2; }
    .inspector-actions { order:3; }
    .inspector-section:not(.inspector-section--state) { order:4; }
    .battlefield { min-height:0; overflow:visible; }
    .side-grid { min-height:0; }
    .battle-side { padding:var(--space-2); }
    .battle-side--theirs { order:-1; }
    .battle-side__header { align-items:flex-start; }
    .battle-side__units { grid-template-columns:1fr; }
    .unit-card { min-height:235px; }
    .game-console { position:fixed; right:0; bottom:0; left:0; z-index:90; margin:0; border-radius:var(--radius-lg) var(--radius-lg) 0 0; }
    .game-console__header { align-items:stretch; flex-direction:column; }
    .console-heading { width:100%; min-height:44px; }
    .console-controls { align-items:flex-start; flex-direction:column; gap:var(--space-2); }
    .console-filters { width:100%; overflow-x:auto; }
    .game-console__body { height:min(62vh,560px); }
    .game-console:not(.is-collapsed) { max-height:78vh; box-shadow:0 -18px 55px rgba(0,0,0,.65); }
    .event-entry { padding-inline:var(--space-3); }
    .auto-scroll { display:none; }
    .action-dialog form, .command-dialog form { padding:var(--space-6) var(--space-4); }
    .detail-hero { align-items:flex-start; flex-direction:column; }
    .meta-plaque, .status-plaque, .warning-plaque { width:100%; min-width:0; }
}

@media (max-width: 430px) {
    .brand__name { display:none; }
    .primary-nav a { padding-inline:.65rem; }
    .command-totals > div, .catalog-counts > div, .summary-stats > div { min-width:74px; padding-inline:var(--space-3); }
    .continue-battle__title-row { align-items:flex-start; flex-direction:column; }
    .roster-title-line { align-items:flex-start; flex-direction:column; }
    .roster-hero__actions { flex-direction:column; }
    .unit-card__header { grid-template-columns:28px minmax(0,1fr); }
    .unit-card__header > .condition-badge { grid-column:2; }
    .unit-card__readout { grid-template-columns:1fr; }
    .unit-card__combat-meta { grid-template-columns:repeat(3,1fr); }
    .unit-card__combat-meta div { display:grid; justify-items:center; border-right:1px solid rgba(45,45,39,.1); border-bottom:0; }
    .catalog-unit-card .unit-stat-ribbon { grid-template-columns:repeat(3,1fr); }
    .catalog-unit-card .unit-stat-ribbon div:nth-child(3) { border-right:0; }
    .battle-side__header { flex-direction:column; }
    .faction-chips { justify-content:flex-start; }
    .inspector-stat-grid { grid-template-columns:repeat(3,1fr); }
    .inspector-stat-grid div:nth-child(3) { border-right:0; }
    .action-dialog__actions, .dialog-actions { width:100%; flex-direction:column; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior:auto !important; animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
}

@media (forced-colors: active) {
    .brand__mark, .side-standard, .roster-hero__standard { border:1px solid CanvasText; }
    .condition-badge, .status-badge, .identity-badge, .support-badge { forced-color-adjust:auto; }
}

/* Persistent game-client shell and workspace layers */
.primary-nav--modes button {
    display:flex;
    min-height:42px;
    align-items:center;
    gap:var(--space-2);
    padding:0 var(--space-3);
    border:0;
    border-bottom:2px solid transparent;
    background:transparent;
    color:var(--text-muted);
    cursor:pointer;
    font-size:var(--text-sm);
    font-weight:750;
}
.primary-nav--modes button:hover { color:var(--text-primary); }
.primary-nav--modes button:focus-visible { border-radius:var(--radius-sm); outline:2px solid var(--selected); outline-offset:-3px; }

.app-menu-workspace,
.app-workspace,
.context-sheet {
    max-width:none;
    max-height:none;
    padding:0;
    border:1px solid var(--border-default);
    background:var(--surface-panel-strong);
    color:var(--text-primary);
    box-shadow:var(--shadow-3);
}
.app-menu-workspace::backdrop,
.app-workspace::backdrop,
.context-sheet::backdrop { background:rgba(4,7,6,.78); backdrop-filter:blur(4px); }
.app-menu-workspace { width:min(760px,calc(100vw - 2rem)); border-radius:var(--radius-xl); }
.app-workspace { width:min(1180px,calc(100vw - 2rem)); height:min(900px,calc(100vh - 2rem)); border-radius:var(--radius-xl); }
.app-menu-workspace__frame,
.app-workspace__frame { display:flex; height:100%; min-height:0; flex-direction:column; }
.workspace-chrome {
    display:grid;
    min-height:68px;
    grid-template-columns:auto minmax(0,1fr) auto;
    align-items:center;
    gap:var(--space-3);
    padding:var(--space-3) var(--space-4);
    border-bottom:1px solid var(--border-default);
    background:linear-gradient(110deg,rgba(117,87,43,.28),var(--surface-panel));
}
.workspace-chrome > div { grid-column:2; }
.workspace-chrome p,
.workspace-chrome h2 { margin:0; }
.workspace-chrome h2 { overflow:hidden; font-size:1.2rem; text-overflow:ellipsis; white-space:nowrap; }
.workspace-close,
.workspace-back {
    display:grid;
    width:44px;
    height:44px;
    place-items:center;
    padding:0;
    border:1px solid var(--border-default);
    border-radius:50%;
    background:rgba(0,0,0,.15);
    color:var(--text-primary);
    cursor:pointer;
    font-size:1.3rem;
}
.workspace-back { grid-column:1; grid-row:1; }
.workspace-close { grid-column:3; grid-row:1; }
.workspace-back:disabled { border-color:var(--border-subtle); color:var(--disabled); cursor:not-allowed; }
.workspace-close:hover,
.workspace-back:not(:disabled):hover { border-color:var(--accent); color:var(--accent-bright); }
.workspace-progress { display:flex; align-items:center; gap:var(--space-3); padding:var(--space-2) var(--space-4); border-bottom:1px solid var(--border-subtle); color:var(--text-muted); font-size:var(--text-xs); }
.workspace-progress span:first-child { width:16px; height:16px; border:2px solid var(--border-default); border-top-color:var(--accent); border-radius:50%; animation:spin .7s linear infinite; }
.app-workspace__content { min-height:0; flex:1; overflow:auto; overscroll-behavior:contain; padding:var(--space-5); }
.workspace-import { width:min(100%,var(--shell-width)); margin:0 auto; }
.workspace-import > section,
.workspace-import > details { scroll-margin-top:var(--space-4); }
.workspace-error { display:grid; min-height:55vh; place-content:center; justify-items:center; gap:var(--space-3); text-align:center; }
.workspace-error > span { display:grid; width:52px; height:52px; place-items:center; border:1px solid var(--danger); border-radius:50%; color:var(--danger); font-size:1.4rem; }

.app-menu-workspace__content { display:grid; grid-template-columns:1.4fr 1fr; gap:var(--space-4); padding:var(--space-5); }
.app-menu-workspace__content section { min-width:0; padding:var(--space-3); border:1px solid var(--border-subtle); border-radius:var(--radius-lg); background:rgba(0,0,0,.1); }
.app-menu-workspace__content section > h3 { margin:0 0 var(--space-3); color:var(--text-muted); font-size:.68rem; letter-spacing:.13em; text-transform:uppercase; }
.app-menu-workspace nav { display:grid; gap:var(--space-2); }
.app-menu-workspace nav a,
.app-menu-workspace nav button,
.menu-signout {
    display:grid;
    min-height:58px;
    grid-template-columns:34px 1fr;
    align-items:center;
    gap:var(--space-3);
    width:100%;
    padding:var(--space-2) var(--space-3);
    border:1px solid var(--border-subtle);
    border-radius:var(--radius-md);
    background:var(--surface-panel);
    color:var(--text-secondary);
    cursor:pointer;
    text-align:left;
    text-decoration:none;
}
.app-menu-workspace nav a:hover,
.app-menu-workspace nav button:hover { border-color:var(--accent); background:var(--selected-bg); }
.app-menu-workspace nav a > span:first-child,
.app-menu-workspace nav button > span:first-child { color:var(--accent); font-size:1.1rem; text-align:center; }
.app-menu-workspace nav a > span:last-child,
.app-menu-workspace nav button > span:last-child { display:flex; min-width:0; flex-direction:column; }
.app-menu-workspace nav strong { color:var(--text-primary); }
.app-menu-workspace nav small,
.menu-account-card small { color:var(--text-muted); font-size:var(--text-xs); }
.menu-account-card { display:flex; align-items:center; gap:var(--space-3); padding:var(--space-3); border:1px solid var(--border-subtle); border-radius:var(--radius-md); }
.menu-account-card > span:last-child { display:flex; flex-direction:column; }
.menu-signout { display:flex; justify-content:center; margin-top:var(--space-2); color:var(--danger); }
.app-menu-admin { grid-column:1 / -1; }
.app-menu-admin nav { grid-template-columns:repeat(3,1fr); }
.menu-info-workspace { max-width:860px; margin:0 auto; }
.menu-info-workspace > h1 { margin:.15rem 0 var(--space-3); }
.menu-info-workspace > p:not(.eyebrow) { max-width:68ch; color:var(--text-secondary); }
.menu-info-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--space-3); margin-top:var(--space-5); }
.menu-info-grid section { padding:var(--space-4); border:1px solid var(--border-subtle); border-radius:var(--radius-lg); background:var(--surface-panel); }
.menu-info-grid h2 { margin:0 0 var(--space-2); font-size:var(--text-md); }
.menu-info-grid p { margin:0; color:var(--text-muted); font-size:var(--text-sm); }
.menu-info-facts { display:grid; gap:var(--space-2); margin:var(--space-5) 0; }
.menu-info-facts > div { display:grid; grid-template-columns:minmax(110px,.38fr) 1fr; gap:var(--space-3); padding:var(--space-3); border:1px solid var(--border-subtle); border-radius:var(--radius-md); background:var(--surface-panel); }
.menu-info-facts dt { color:var(--text-muted); font-size:var(--text-xs); font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.menu-info-facts dd { margin:0; color:var(--text-primary); }

/* Source-defined canonical board: two armies, four ranks, five unnamed files. */
.canonical-board {
    position:relative;
    z-index:1;
    height:clamp(570px,67vh,820px);
    overflow:auto;
    overscroll-behavior:contain;
    scrollbar-color:#53645b #111714;
    scrollbar-width:thin;
    user-select:none;
}
.battle-formation { min-width:870px; padding:var(--space-3); }
.battle-formation--theirs { background:linear-gradient(180deg,var(--side-theirs-bg),transparent 22%); }
.battle-formation--ours { background:linear-gradient(0deg,var(--side-ours-bg),transparent 22%); }
.battle-formation__header {
    position:sticky;
    left:0;
    display:flex;
    min-height:48px;
    align-items:center;
    justify-content:space-between;
    gap:var(--space-4);
    padding:var(--space-2) var(--space-3);
    border:1px solid var(--border-subtle);
    border-radius:var(--radius-md);
    background:rgba(14,20,17,.92);
}
.battle-formation__header p { margin:0; color:var(--side-theirs); font-size:.6rem; font-weight:900; letter-spacing:.14em; }
.battle-formation--ours .battle-formation__header p { color:var(--side-ours); }
.battle-formation__header h2 { margin:0; font-size:1rem; }
.battle-ranks { display:grid; gap:var(--space-2); margin-top:var(--space-2); }
.battle-rank { display:grid; min-width:840px; grid-template-columns:92px minmax(0,1fr); gap:var(--space-2); align-items:stretch; }
.battle-rank__label {
    position:sticky;
    left:var(--space-3);
    z-index:5;
    display:flex;
    min-height:154px;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    padding:var(--space-2);
    border:1px solid var(--border-default);
    border-radius:var(--radius-md);
    background:#18211d;
    text-align:center;
}
.battle-rank__label strong { color:var(--accent-bright); font-family:var(--font-display); font-size:.8rem; letter-spacing:.06em; text-transform:uppercase; writing-mode:vertical-rl; transform:rotate(180deg); }
.battle-rank__label span { margin-top:var(--space-2); color:var(--text-muted); font-size:.52rem; line-height:1.25; }
.battle-rank__files { display:grid; grid-template-columns:repeat(5,minmax(142px,1fr)); gap:var(--space-2); }
.battle-position {
    position:relative;
    min-width:0;
    min-height:154px;
    padding:var(--space-1);
    border:1px solid rgba(225,217,196,.17);
    border-radius:var(--radius-md);
    background:linear-gradient(145deg,rgba(255,255,255,.025),rgba(0,0,0,.16));
    transition:border-color var(--transition-fast),background var(--transition-fast),box-shadow var(--transition-fast);
}
.battle-position__file { position:absolute; z-index:2; top:5px; left:7px; color:rgba(225,217,196,.33); font-family:var(--font-mono); font-size:.55rem; }
.battle-position__empty { position:absolute; inset:0; display:grid; place-items:center; color:rgba(225,217,196,.28); font-size:.64rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.battle-position__capacity { position:absolute; right:7px; bottom:5px; color:var(--text-muted); font-family:var(--font-mono); font-size:.52rem; }
.battle-line {
    position:sticky;
    left:0;
    display:grid;
    min-width:870px;
    grid-template-columns:1fr auto 1fr;
    align-items:center;
    gap:var(--space-3);
    padding:var(--space-2) var(--space-5);
    border-block:1px solid var(--accent-deep);
    background:linear-gradient(90deg,rgba(182,129,115,.13),rgba(196,154,80,.2),rgba(110,169,164,.13));
    color:var(--text-muted);
    font-size:.58rem;
    font-weight:850;
    letter-spacing:.12em;
}
.battle-line span:last-child { text-align:right; }
.battle-line b { display:grid; width:38px; height:38px; place-items:center; border:1px solid var(--accent); border-radius:50%; background:#1f241e; color:var(--accent-bright); font-family:var(--font-display); }
.board-capability-warning { position:sticky; z-index:10; top:0; left:0; display:grid; min-width:100%; grid-template-columns:32px auto; gap:var(--space-2); padding:var(--space-3); border-bottom:1px solid var(--warning); background:#352c1b; }
.board-capability-warning > span { grid-row:1 / span 2; display:grid; width:28px; height:28px; place-items:center; border:1px solid var(--warning); border-radius:50%; }
.board-capability-warning p { margin:0; color:var(--text-muted); font-size:var(--text-xs); }

.battle-tray { margin-top:var(--space-2); border:1px solid var(--border-subtle); border-radius:var(--radius-md); background:rgba(0,0,0,.16); }
.battle-tray > summary { position:sticky; left:0; display:flex; min-height:48px; align-items:center; justify-content:space-between; gap:var(--space-3); padding:var(--space-2) var(--space-3); cursor:pointer; list-style:none; }
.battle-tray > summary::-webkit-details-marker { display:none; }
.battle-tray > summary > span { display:flex; flex-direction:column; }
.battle-tray > summary small { color:var(--text-muted); font-size:.6rem; }
.battle-tray > summary b { display:grid; width:26px; height:26px; place-items:center; border:1px solid var(--border-default); border-radius:50%; font-size:var(--text-xs); }
.battle-tray__units { display:grid; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:var(--space-2); padding:var(--space-2); border-top:1px solid var(--border-subtle); }
.battle-tray__empty { margin:0; padding:var(--space-4); color:var(--text-muted); text-align:center; }

/* Board pieces retain the card hierarchy at a denser table scale. */
.battle-position .unit-card,
.battle-tray .unit-card { min-width:0; min-height:144px; border-radius:var(--radius-sm); box-shadow:var(--shadow-1); touch-action:pan-y; user-select:none; }
.battle-position .unit-card.has-unit-art::after,
.battle-tray .unit-card.has-unit-art::after { background:linear-gradient(180deg,rgba(246,241,227,.86),rgba(243,237,221,.82) 45%,rgba(238,231,214,.96)); }
.battle-position .unit-card__selection,
.battle-tray .unit-card__selection { top:-8px; right:4px; }
.battle-position .unit-card__header,
.battle-tray .unit-card__header { grid-template-columns:22px minmax(0,1fr); gap:var(--space-1); padding:.45rem; }
.battle-position .unit-card__sigil,
.battle-tray .unit-card__sigil { width:20px; height:24px; font-size:.55rem; }
.battle-position .unit-card__identity p,
.battle-position .unit-card__identity > span,
.battle-tray .unit-card__identity p,
.battle-tray .unit-card__identity > span { font-size:.5rem; }
.battle-position .unit-card__identity h3,
.battle-tray .unit-card__identity h3 { overflow:hidden; font-size:.75rem; text-overflow:ellipsis; white-space:nowrap; }
.battle-position .unit-card__header > .condition-badge,
.battle-tray .unit-card__header > .condition-badge { grid-column:1 / -1; width:max-content; padding:.12rem .35rem; font-size:.48rem; }
.battle-position .unit-card__body,
.battle-tray .unit-card__body { padding:.4rem; }
.battle-position .unit-card__stat-ribbon,
.battle-tray .unit-card__stat-ribbon { margin-bottom:.35rem; }
.battle-position .unit-card__stat-ribbon div,
.battle-tray .unit-card__stat-ribbon div { padding:.16rem .05rem; }
.battle-position .unit-card__stat-ribbon dt,
.battle-tray .unit-card__stat-ribbon dt { font-size:.42rem; }
.battle-position .unit-card__stat-ribbon dd,
.battle-tray .unit-card__stat-ribbon dd { font-size:.66rem; }
.battle-position .unit-card__readout,
.battle-tray .unit-card__readout { display:block; }
.battle-position .casualty-readout,
.battle-tray .casualty-readout { min-height:31px; padding:.2rem .35rem; }
.battle-position .casualty-readout > span,
.battle-tray .casualty-readout > span { font-size:.46rem; }
.battle-position .casualty-readout strong,
.battle-tray .casualty-readout strong { gap:.25rem; font-size:.68rem; }
.battle-position .unit-card__combat-meta,
.battle-tray .unit-card__combat-meta,
.battle-position .trait-chip-row,
.battle-tray .trait-chip-row { display:none; }
.battle-position .unit-card__conditions,
.battle-tray .unit-card__conditions { min-height:16px; margin-top:.25rem; }
.battle-position .unit-card__conditions span,
.battle-tray .unit-card__conditions span { max-width:100%; overflow:hidden; padding:.1rem .28rem; font-size:.44rem; text-overflow:ellipsis; white-space:nowrap; }
.battle-position .unit-card__footer,
.battle-tray .unit-card__footer { min-height:27px; gap:.18rem; padding:.25rem .4rem; }
.battle-position .identity-badge,
.battle-position .support-badge,
.battle-tray .identity-badge,
.battle-tray .support-badge { padding:.08rem .26rem; font-size:.43rem; }
.battle-position .card-inspect-button,
.battle-tray .card-inspect-button { width:28px; min-width:28px; overflow:hidden; color:transparent; font-size:0; }
.battle-position .card-inspect-button::before,
.battle-tray .card-inspect-button::before { color:var(--accent-bright); content:"↗"; font-size:.72rem; }

.battle-position.is-legal-drop { border-color:var(--positive); background:rgba(57,126,79,.22); box-shadow:inset 0 0 0 2px rgba(110,172,132,.32); }
.battle-position.is-legal-drop::after { position:absolute; z-index:6; inset:var(--space-2); display:grid; place-items:center; border:1px dashed var(--positive); border-radius:var(--radius-sm); background:rgba(20,50,31,.72); color:#b9e1c5; content:"Release to move"; font-size:.62rem; font-weight:850; pointer-events:none; }
.battle-position.is-drop-hover { background:rgba(72,151,96,.4); box-shadow:inset 0 0 0 3px var(--positive),0 0 22px rgba(110,172,132,.24); }
.battle-position.is-illegal-drop { filter:saturate(.3) brightness(.72); }
.unit-card.is-drag-lifted { opacity:.28; }
.unit-drag-ghost { position:fixed; z-index:1000; top:0; left:0; display:grid; max-width:240px; grid-template-columns:30px 1fr; gap:var(--space-1) var(--space-2); padding:var(--space-2) var(--space-3); border:1px solid var(--selected); border-radius:var(--radius-md); background:#283128; box-shadow:var(--shadow-3); pointer-events:none; will-change:transform; }
.unit-drag-ghost > span { grid-row:1 / span 2; display:grid; place-items:center; color:var(--selected); }
.unit-drag-ghost small { color:var(--text-muted); font-size:.6rem; }
.unit-card.is-position-updated { animation:position-settle 1.3s ease-out; }
@keyframes position-settle { 0% { box-shadow:0 0 0 5px rgba(110,172,132,.55); transform:translateY(-4px); } }

.context-sheet { width:min(620px,calc(100vw - 2rem)); border-radius:var(--radius-xl); }
.context-sheet__frame { display:grid; gap:var(--space-4); padding:var(--space-5); }
.context-sheet__frame > header { display:flex; align-items:center; justify-content:space-between; gap:var(--space-3); }
.context-sheet__frame h2,
.context-sheet__frame p { margin:0; }
.context-sheet__frame > p { color:var(--text-muted); font-size:var(--text-sm); }
.context-sheet__frame > header button { width:44px; height:44px; border:1px solid var(--border-default); border-radius:50%; background:transparent; color:var(--text-primary); cursor:pointer; font-size:1.2rem; }
.destination-list { display:grid; max-height:52vh; gap:var(--space-2); overflow:auto; }
.destination-option { display:flex; min-height:56px; align-items:center; justify-content:space-between; gap:var(--space-3); padding:var(--space-2) var(--space-3); border:1px solid var(--border-subtle); border-radius:var(--radius-md); background:var(--surface-panel); color:var(--text-primary); cursor:pointer; text-align:left; }
.destination-option:hover { border-color:var(--positive); background:var(--positive-bg); }
.destination-option > span { display:flex; flex-direction:column; }
.destination-option small { color:var(--text-muted); }
.destination-option b { color:var(--positive); font-family:var(--font-mono); }
.trait-detail-button { min-height:32px; padding:.24rem .5rem; border:1px solid var(--border-subtle); border-radius:var(--radius-pill); background:rgba(255,255,255,.04); color:var(--text-secondary); cursor:pointer; font-size:var(--text-xs); }
.authoritative-die { display:grid; grid-template-columns:auto auto; align-items:center; gap:0 .35rem; color:#c8dcf4; }
.authoritative-die__face { grid-row:1 / span 2; font-size:1.2rem; }
.authoritative-die__value { font-family:var(--font-mono); font-size:1rem; font-weight:900; }
.authoritative-die small { color:var(--text-muted); font-size:.48rem; letter-spacing:.08em; text-transform:uppercase; }
.battle-mode-bar { display:none; }

.catalog-unit-profile-workspace { display:grid; gap:var(--space-4); }
.catalog-unit-profile-workspace__hero {
    position:relative;
    isolation:isolate;
    display:grid;
    gap:var(--space-3);
    overflow:hidden;
    padding:var(--space-5);
    border:1px solid rgba(45,45,39,.18);
    border-radius:var(--radius-lg);
    background:var(--surface-ivory);
    color:var(--text-ink);
}
.catalog-unit-profile-workspace__hero.has-unit-art { min-height:320px; align-content:space-between; }
.catalog-unit-profile-workspace__hero.has-unit-art::after { position:absolute; z-index:1; inset:0; background:linear-gradient(180deg,rgba(246,241,227,.8),rgba(244,238,222,.67) 43%,rgba(239,232,215,.94)); content:""; pointer-events:none; }
.catalog-unit-profile-workspace__hero > :not(.unit-art) { position:relative; z-index:2; }
.catalog-unit-profile-workspace__hero > .unit-art { position:absolute; z-index:0; inset:0; }
.catalog-unit-profile-workspace__hero .catalog-unit-card__footer > span:last-child { display:none; }
.catalog-unit-profile-workspace > .catalog-unit-detail {
    border:1px solid rgba(45,45,39,.18);
    border-radius:var(--radius-lg);
    background:var(--surface-ivory-raised);
}

@media (min-width: 721px) {
    .battle-page .main-shell { padding-bottom:66px; }
    .battle-page .game-console {
        position:fixed;
        z-index:130;
        right:var(--space-3);
        bottom:0;
        left:var(--space-3);
        max-height:min(44vh,330px);
        margin:0;
    }
    .battle-page .game-console__body { height:min(var(--console-height),calc(44vh - 55px)); }
}

@media (max-width: 1180px) {
    .battle-formation { min-width:820px; }
    .battle-rank { min-width:790px; grid-template-columns:78px minmax(0,1fr); }
    .battle-rank__files { grid-template-columns:repeat(5,minmax(136px,1fr)); }
    .battle-line { min-width:820px; }
}

@media (max-width: 720px) {
    .battle-page { --header-height:52px; }
    .battle-page .site-header { height:var(--header-height); }
    .battle-page .site-header__inner { display:flex; height:52px; padding-inline:var(--space-3); }
    .battle-page .brand { margin:0; }
    .battle-page .brand__name { display:flex; }
    .battle-page .brand__name small,
    .battle-page .primary-nav--modes { display:none; }
    .battle-page .account-nav { margin-left:auto; }
    .battle-page .account-nav__identity { display:flex; }
    .battle-page .battle-app { min-height:calc(100dvh - var(--header-height)); padding:var(--space-2); padding-bottom:calc(68px + env(safe-area-inset-bottom)); }
    .battle-page .battle-header { position:relative; display:grid; grid-template-columns:minmax(0,1fr) auto; padding:var(--space-2); }
    .battle-page .battle-header__identity { min-width:0; }
    .battle-page .back-link,
    .battle-page .battle-versus,
    .battle-page .battle-tools-menu { display:none; }
    .battle-page .battle-title-line { min-width:0; }
    .battle-page .battle-title-line h1 { overflow:hidden; font-size:1rem; text-overflow:ellipsis; white-space:nowrap; }
    .battle-page .battle-header__tools { width:auto; }
    .battle-page .battle-setup { margin-block:var(--space-2); }
    .battle-page .battle-stage { display:block; margin:0; }
    .battle-page .battlefield { min-height:0; height:calc(100dvh - 164px); overflow:hidden; }
    .battle-page .canonical-board { height:100%; overflow:auto; }
    .battle-formation { min-width:780px; padding:var(--space-2); }
    .battle-rank { min-width:758px; grid-template-columns:66px minmax(0,1fr); }
    .battle-rank__files { grid-template-columns:repeat(5,132px); }
    .battle-rank__label { left:var(--space-2); min-height:150px; }
    .battle-line { min-width:780px; }
    .battle-formation__header { left:0; }
    .battle-page .unit-inspector { position:relative; top:auto; width:100%; height:calc(100dvh - 126px); max-height:none; overflow:auto; border-radius:var(--radius-lg); }
    .battle-page .unit-inspector__empty { min-height:70vh; }
    .battle-page .game-console { position:relative; inset:auto; z-index:40; height:calc(100dvh - 126px); max-height:none; margin:0; border-radius:var(--radius-lg); }
    .battle-page .game-console__body { height:calc(100% - 112px); }
    .battle-page .game-console.is-collapsed .game-console__body,
    .battle-page .game-console.is-collapsed .console-controls { display:block; }
    .battle-page .game-console__header { min-height:112px; }
    .battle-page .battle-mode-bar {
        position:fixed;
        z-index:180;
        right:0;
        bottom:0;
        left:0;
        display:grid;
        height:calc(62px + env(safe-area-inset-bottom));
        grid-template-columns:repeat(3,1fr);
        padding:4px max(4px,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(4px,env(safe-area-inset-left));
        border-top:1px solid var(--border-default);
        background:rgba(17,23,20,.96);
        box-shadow:0 -10px 30px rgba(0,0,0,.38);
        backdrop-filter:blur(12px);
    }
    .battle-mode-bar button { display:flex; min-width:0; min-height:52px; flex-direction:column; align-items:center; justify-content:center; gap:1px; padding:0; border:0; border-radius:var(--radius-sm); background:transparent; color:var(--text-muted); cursor:pointer; font-size:.64rem; }
    .battle-mode-bar button > span:first-child { font-size:1rem; }
    .battle-mode-bar button.is-active { background:var(--selected-bg); color:var(--accent-bright); }
    .battle-app[data-mobile-mode="board"] .unit-inspector,
    .battle-app[data-mobile-mode="board"] .game-console,
    .battle-app[data-mobile-mode="unit"] .battlefield,
    .battle-app[data-mobile-mode="unit"] .game-console,
    .battle-app[data-mobile-mode="actions"] .battlefield,
    .battle-app[data-mobile-mode="actions"] .game-console,
    .battle-app[data-mobile-mode="log"] .battle-stage,
    .battle-app[data-mobile-mode="log"] .battle-setup { display:none !important; }
    .battle-app[data-mobile-mode="unit"] .unit-inspector { display:block; }
    .battle-app[data-mobile-mode="unit"] .inspector-actions { display:none; }
    .battle-app[data-mobile-mode="actions"] .unit-inspector { display:block; }
    .battle-app[data-mobile-mode="actions"] .inspector-section:not(.inspector-section--state):not(.inspector-section--position) { display:none; }
    .battle-app[data-mobile-mode="actions"] .inspector-heading { padding-block:var(--space-3); }
    .battle-app[data-mobile-mode="actions"] .inspector-actions { display:block; }
    .battle-app[data-mobile-mode="log"] .game-console { display:block; }
    .targeting-bar { top:calc(var(--header-height) + var(--space-1)); }
    .app-menu-workspace,
    .app-workspace { inset:0; width:100vw; height:100dvh; margin:0; border:0; border-radius:0; }
    .app-menu-workspace__content { display:block; padding:var(--space-3); overflow:auto; }
    .app-menu-workspace__content section { margin-bottom:var(--space-3); }
    .app-menu-admin nav { grid-template-columns:1fr; }
    .app-workspace__content { padding:var(--space-3); }
    .menu-info-grid { grid-template-columns:1fr; }
    .menu-info-facts > div { grid-template-columns:1fr; gap:var(--space-1); }
    .context-sheet { inset:auto 0 0; width:100%; max-height:86dvh; margin:0; border-width:1px 0 0; border-radius:var(--radius-xl) var(--radius-xl) 0 0; }
    .context-sheet__frame { padding:var(--space-4); padding-bottom:calc(var(--space-4) + env(safe-area-inset-bottom)); }
    .destination-list { max-height:52dvh; }
    .site-footer { margin-bottom:62px; }
    .battle-page .site-footer { display:none; }
}

@media (max-width: 390px) {
    .battle-page .brand__name { display:none; }
    .battle-page .account-nav__identity > span:last-child { display:none; }
    .battle-formation { min-width:744px; }
    .battle-rank { min-width:724px; grid-template-columns:58px minmax(0,1fr); }
    .battle-rank__files { grid-template-columns:repeat(5,128px); }
    .battle-line { min-width:744px; }
    .battle-rank__label strong { font-size:.7rem; }
    .battle-mode-bar button { font-size:.58rem; }
}

/* Goal 9: one canonical Reserve space, explicit top and inspectable lower units. */
.battle-front-note { margin:.4rem 1rem; color:var(--text-muted); font-size:.72rem; text-align:center; }
.has-reserve-stack { box-shadow:inset 0 -4px 0 #96805b; padding-bottom:8px; }
.reserve-stack-inspector { width:100%; color:var(--accent-bright); font-size:.72rem; }
.reserve-stack-inspector summary { cursor:pointer; padding:.45rem; min-height:32px; text-align:center; }
.reserve-stack-inspector__units { display:grid; gap:.5rem; }
.reserve-protection-label { display:block; padding:.3rem; font-size:.65rem; color:var(--text-muted); background:var(--bg-panel); }
.is-reserve-protected { border-style:dashed; }
@media(max-width:700px) {
 .battle-rank { min-width:0; grid-template-columns:35px minmax(0,1fr); gap:3px; }
 .battle-rank__files { grid-template-columns:repeat(5,minmax(0,1fr)); gap:3px; }
 .battle-rank__label { left:0; min-height:104px; padding:3px; }
 .battle-rank__label span { display:none; }
 .battle-rank__label strong { font-size:.62rem; }
 .battle-position { min-width:0; padding:2px; }
 .battle-position .unit-card { min-width:0; width:100%; }
 .battle-position .unit-card__artwork, .battle-position .unit-card__stats, .battle-position .unit-card__footer, .battle-position .unit-card__eyebrow { display:none; }
 .battle-position .unit-card__header { padding:4px 2px; }
 .battle-position .unit-card__header h3 { font-size:.62rem; overflow-wrap:anywhere; }
 .battle-position .unit-card__body { padding:3px; }
 .reserve-stack-inspector summary { font-size:.6rem; padding:3px 0; }
 .battle-front-note { font-size:.65rem; }
}
/* Compact, aligned formation: empty ranks retain a visible canonical row. */
.canonical-board .battle-formation { min-width:0; padding:6px 8px; }
.canonical-board .battle-rank { min-width:0; grid-template-columns:70px minmax(0,1fr); gap:5px; }
.canonical-board .battle-rank__files { grid-template-columns:repeat(5,minmax(0,1fr)); gap:5px; }
.canonical-board .battle-rank__label,.canonical-board .battle-position { min-height:36px; }
.canonical-board .battle-rank__label strong { writing-mode:horizontal-tb; transform:none; font-size:.64rem; }
.canonical-board .battle-rank__label span { font-size:.48rem; margin-top:3px; }
.canonical-board .battle-ranks { gap:5px; margin-top:4px; }
.canonical-board .battle-line { min-width:0; padding:3px 18px; }
.canonical-board .battle-line b { width:22px; height:22px; font-size:.65rem; }
.canonical-board .unit-card { min-height:112px; min-width:0; width:100%; }
.canonical-board .unit-card__footer,.canonical-board .unit-card__conditions,.canonical-board .trait-chip-row,.canonical-board .unit-card__combat-meta { display:none; }
.canonical-board .unit-card__header { padding:7px 4px 2px; }
.canonical-board .unit-card__identity p { display:none; }
.canonical-board .unit-card__body { padding:3px 5px; }
.canonical-board .unit-card__identity h3 { font-size:.76rem; }
.canonical-board .unit-card__readout { margin:3px 0; }
.canonical-board .unit-card__readout .casualty-readout > span { display:none; }
.canonical-board .battle-formation--ours .battle-formation__header { margin-top:5px; }
@media(max-width:700px) {
 .canonical-board { height:auto; max-height:none; overflow:visible; }
 .canonical-board .battle-formation { padding:4px; }
 .canonical-board .battle-rank { grid-template-columns:27px minmax(0,1fr); gap:2px; }
 .canonical-board .battle-rank__files { gap:2px; }
 .canonical-board .battle-rank__label { padding:2px; }
 .canonical-board .battle-rank__label strong { writing-mode:vertical-rl; transform:rotate(180deg); font-size:.62rem; }
 .canonical-board .battle-rank__label span { display:none; }
 .canonical-board .battle-position { padding:1px; }
 .canonical-board .unit-card { min-height:90px; border-radius:4px; }
 .canonical-board .unit-card__art,.canonical-board .unit-card__stat-ribbon,.canonical-board .unit-card__sigil,.canonical-board .unit-card__identity > span,.canonical-board .condition-badge { display:none; }
 .canonical-board .unit-card__identity h3 { font-size:.63rem; white-space:normal; overflow-wrap:anywhere; line-height:1.2; }
 .canonical-board .unit-card__header { display:block; padding:10px 2px 3px; }
 .canonical-board .unit-card__body { padding:2px; }
 .canonical-board .casualty-readout strong { display:flex; flex-direction:column; gap:0; }
 .canonical-board .casualty-readout strong b { font-size:.85rem; }
 .canonical-board .casualty-readout strong em { font-size:.62rem; }
 .canonical-board .battle-position__empty,.canonical-board .battle-position__capacity { display:none; }
 .canonical-board .battle-formation__header { flex-wrap:wrap; min-height:45px; padding:5px; gap:3px; }
 .canonical-board .battle-formation__header h2 { font-size:.9rem; }
 .canonical-board .battle-formation__header .faction-chips { font-size:.6rem; }
 .canonical-board .battle-line { padding:3px; font-size:.48rem; letter-spacing:0; }
 .canonical-board .reserve-stack-inspector summary { overflow-wrap:anywhere; line-height:1.3; }
}
@media(max-width:700px) {
 .canonical-board .unit-card__selection { top:0; left:2px; right:2px; padding:1px; font-size:.44rem; letter-spacing:0; text-align:center; transform:translateY(-105%); }
 .canonical-board .unit-card.is-selected .unit-card__selection { transform:translateY(0); }
}

/* Faction registry and canonical historical navigation. */
.registry-hero { display:flex; align-items:end; justify-content:space-between; gap:var(--space-5); margin-bottom:var(--space-5); padding:var(--space-6); border:1px solid var(--border-subtle); border-radius:var(--radius-xl); background:linear-gradient(135deg,rgba(160,126,71,.16),rgba(45,78,61,.2)); }
.registry-hero h1 { margin:.15rem 0; font-size:clamp(2rem,5vw,4.2rem); }
.registry-hero p:last-child { max-width:700px; margin:0; color:var(--text-secondary); }
.registry-controls { position:sticky; z-index:20; top:var(--header-height); margin-bottom:var(--space-5); padding:var(--space-3); border:1px solid var(--border-subtle); border-radius:var(--radius-lg); background:rgba(22,28,25,.94); backdrop-filter:blur(12px); }
.registry-search { display:grid; grid-template-columns:minmax(220px,1fr) minmax(145px,.3fr) minmax(160px,.3fr) auto; align-items:end; gap:var(--space-3); }
.registry-search label { display:grid; gap:.35rem; color:var(--text-muted); font-size:var(--text-xs); font-weight:750; }
.faction-registry__grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,330px),1fr)); gap:var(--space-4); }
.faction-registry-card { --faction-color:var(--accent); position:relative; isolation:isolate; display:grid; min-height:260px; grid-template-columns:64px minmax(0,1fr); gap:var(--space-4); padding:var(--space-5); overflow:hidden; border:1px solid color-mix(in srgb,var(--faction-color) 45%,var(--border-subtle)); border-radius:var(--radius-xl); background:linear-gradient(150deg,color-mix(in srgb,var(--faction-color) 16%,var(--surface-panel)),var(--surface-panel) 48%); box-shadow:var(--shadow-1); transition:transform .18s,border-color .18s; }
.faction-registry-card:hover,.faction-registry-card:focus-within { border-color:var(--faction-color); transform:translateY(-2px); }
.faction-registry-card.is-archived { filter:saturate(.62); }
.faction-registry-card__link { position:absolute; z-index:1; inset:0; border-radius:inherit; }
.faction-registry-card__link:focus-visible { outline:3px solid var(--focus); outline-offset:-4px; }
.faction-registry-card__emblem { position:relative; display:grid; width:64px; height:64px; place-items:center; overflow:hidden; border:2px solid var(--faction-color); border-radius:18px 18px 50%; background:color-mix(in srgb,var(--faction-color) 24%,#151b18); color:#fff; font-size:1.7rem; font-weight:900; }
.faction-registry-card__emblem img,.roster-hero__standard img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; background:inherit; }
.faction-registry-card__identity { display:grid; align-content:start; gap:var(--space-2); }
.faction-registry-card__identity > div { display:flex; align-items:baseline; gap:var(--space-2); }
.faction-registry-card__identity h3 { margin:0; font-size:1.35rem; }
.faction-registry-card__identity p { margin:0; color:var(--text-secondary); }
.faction-registry-card__stats { z-index:2; grid-column:1 / -1; display:grid; grid-template-columns:repeat(3,1fr); margin:0; border-block:1px solid var(--border-subtle); }
.faction-registry-card__stats div { padding:var(--space-3); text-align:center; }
.faction-registry-card__stats dt { color:var(--text-muted); font-size:.65rem; text-transform:uppercase; }
.faction-registry-card__stats dd { margin:.2rem 0 0; font-size:1.3rem; font-weight:850; }
.faction-registry-card__open { align-self:end; grid-column:1 / -1; color:var(--accent-bright); font-weight:750; }
.lifecycle-hero { --faction-color:var(--accent); border-top:3px solid var(--faction-color); }
.former-name,.faction-motto { margin:.2rem 0; color:var(--text-muted); }
.faction-motto { color:var(--accent-bright); font-family:var(--font-display); font-style:italic; }
.faction-profile-nav { position:sticky; top:calc(var(--header-height) + 6px); z-index:30; }
.archived-banner { display:flex; align-items:center; gap:var(--space-4); margin-bottom:var(--space-4); padding:var(--space-4); border:1px solid #806d49; border-radius:var(--radius-lg); background:rgba(128,109,73,.16); }
.archived-banner > span { font-size:1.8rem; }.archived-banner div { flex:1; }.archived-banner p { margin:.25rem 0 0; color:var(--text-secondary); }
.faction-overview { margin-bottom:var(--space-5); }
.faction-facts { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:var(--space-3); margin:0; }
.faction-facts div { padding:var(--space-3); border:1px solid var(--border-subtle); border-radius:var(--radius-md); background:var(--surface-raised); }
.faction-facts dt { color:var(--text-muted); font-size:.68rem; letter-spacing:.07em; text-transform:uppercase; }.faction-facts dd { margin:.25rem 0 0; overflow-wrap:anywhere; }
.faction-notes { margin-top:var(--space-4); padding:var(--space-4); border-left:3px solid var(--faction-color,var(--accent)); background:rgba(255,255,255,.025); }.faction-notes h3,.faction-notes p { margin:.2rem 0; }
.battle-history-cards { display:grid; gap:var(--space-3); }.battle-history-card { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:var(--space-4); padding:var(--space-4); border:1px solid var(--border-subtle); border-radius:var(--radius-lg); background:var(--surface-panel); }.battle-history-card h3,.battle-history-card p { margin:.2rem 0; }.battle-history-card__actions { display:flex; min-width:145px; flex-direction:column; align-items:stretch; gap:var(--space-2); }.battle-opponents { display:flex; flex-wrap:wrap; gap:var(--space-2); align-items:center; margin-top:var(--space-3); color:var(--text-muted); }.battle-opponents a { position:relative; z-index:2; padding:.25rem .55rem; border:1px solid var(--border-subtle); border-radius:var(--radius-pill); color:var(--text-primary); }.history-filter { display:flex; justify-content:space-between; margin-bottom:var(--space-3); padding:var(--space-3); border-radius:var(--radius-md); background:var(--selected-bg); }.rivalry-summary { margin-top:var(--space-5); }.rivalry-summary > div { display:flex; flex-wrap:wrap; gap:var(--space-2); }.rivalry-summary a { display:flex; gap:var(--space-3); padding:var(--space-3); border:1px solid var(--border-subtle); border-radius:var(--radius-md); color:var(--text-primary); }.rivalry-summary p { color:var(--text-muted); font-size:var(--text-xs); }
.identity-timeline { display:grid; gap:var(--space-3); margin:0; padding:0; list-style:none; }.identity-timeline li { display:grid; grid-template-columns:34px 1fr; gap:var(--space-3); align-items:center; }.identity-timeline li > span { display:grid; width:34px; height:34px; place-items:center; border:1px solid var(--border-default); border-radius:50%; color:var(--accent-bright); }.identity-timeline div { display:grid; gap:.15rem; padding:var(--space-3); border-left:2px solid var(--border-default); }.identity-timeline small { color:var(--text-muted); }
.management-section + .management-section { margin-top:var(--space-5); padding-top:var(--space-4); border-top:1px solid var(--border-subtle); }.management-section h3,.management-section p { margin:.2rem 0; }

.battle-report { display:grid; gap:var(--space-5); }.battle-report__hero { display:flex; align-items:end; justify-content:space-between; gap:var(--space-5); padding:var(--space-6); border:1px solid var(--border-subtle); border-radius:var(--radius-xl); background:linear-gradient(135deg,rgba(112,75,42,.22),rgba(27,52,43,.3)); }.battle-report__hero h1 { margin:.25rem 0; font-size:clamp(2rem,5vw,4rem); }.battle-report__meta,.battle-report__actions,.button-row { display:flex; flex-wrap:wrap; gap:var(--space-2); align-items:center; }.report-outcome { padding:var(--space-6); border-left:5px solid var(--accent); border-radius:var(--radius-lg); background:var(--surface-panel); }.report-outcome h2 { max-width:900px; margin:.25rem 0; }.report-outcome p:last-child { color:var(--text-muted); }.report-section { padding:var(--space-5); border:1px solid var(--border-subtle); border-radius:var(--radius-xl); background:var(--surface-panel); }.report-participants { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:var(--space-3); }.report-participants > a { --faction-color:var(--accent); display:grid; grid-template-columns:46px 1fr auto; gap:var(--space-3); align-items:center; min-height:78px; padding:var(--space-3); border:1px solid color-mix(in srgb,var(--faction-color) 40%,var(--border-subtle)); border-radius:var(--radius-lg); color:var(--text-primary); }.report-participant__mark { display:grid; width:46px; height:46px; place-items:center; border-radius:14px 14px 50%; background:color-mix(in srgb,var(--faction-color) 35%,#171d1a); font-weight:900; }.report-participants a > span:nth-child(2) { display:grid; }.report-participants small,.report-participants em { color:var(--text-muted); font-size:.72rem; }.report-forces { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr)); gap:var(--space-4); }.report-forces article { overflow:hidden; border:1px solid var(--border-subtle); border-radius:var(--radius-lg); }.report-forces article > header { display:flex; justify-content:space-between; padding:var(--space-4); background:var(--surface-raised); }.report-forces h3,.report-forces p { margin:.1rem 0; }.report-forces ul { display:grid; gap:0; margin:0; padding:0; list-style:none; }.report-forces li { display:flex; align-items:center; justify-content:space-between; gap:var(--space-3); min-height:58px; padding:var(--space-3) var(--space-4); border-top:1px solid var(--border-subtle); }.report-forces li > span:first-child { display:grid; }.report-forces small { color:var(--text-muted); }.report-events { display:grid; gap:var(--space-2); margin:0; padding:0; list-style:none; }.report-events li { display:grid; grid-template-columns:52px minmax(0,1fr) auto; gap:var(--space-3); align-items:center; min-height:64px; padding:var(--space-3); border:1px solid var(--border-subtle); border-radius:var(--radius-md); }.report-events li > div { display:grid; }.report-events small { color:var(--text-muted); }.report-event__sequence { font-family:var(--font-mono); color:var(--accent-bright); }.event-entry.is-focused-event { outline:3px solid var(--focus); outline-offset:-3px; background:var(--selected-bg); animation:history-focus 1.4s ease-out; }@keyframes history-focus{0%{box-shadow:0 0 0 9px rgba(222,178,92,.45)}100%{box-shadow:none}}

@media(max-width:720px) {
 .registry-hero,.battle-report__hero { align-items:stretch; flex-direction:column; padding:var(--space-4); }.registry-hero .button,.battle-report__actions .button { width:100%; }
 .registry-controls { position:static; }.registry-search { grid-template-columns:1fr 1fr; }.registry-search label:first-child,.registry-search .button { grid-column:1 / -1; }.registry-search .button { min-height:48px; }
 .faction-registry-card { min-height:235px; padding:var(--space-4); }.faction-registry-card__stats div { padding:var(--space-2); }.faction-registry-card__stats dt { font-size:.56rem; }
 .faction-profile-nav { position:static; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--space-1); }.faction-profile-nav a { display:grid; min-height:44px; place-items:center; padding:.4rem; text-align:center; }
 .archived-banner { align-items:stretch; flex-wrap:wrap; }.archived-banner form,.archived-banner button { width:100%; }
 .battle-history-card { grid-template-columns:1fr; }.battle-history-card__actions { display:grid; grid-template-columns:1fr 1fr; }.battle-history-card__actions .status-badge { grid-column:1 / -1; }.battle-history-card__actions .button { min-height:44px; }
 .report-section,.report-outcome { padding:var(--space-4); }.report-events li { grid-template-columns:42px minmax(0,1fr); }.report-events li > a { grid-column:2; min-height:44px; align-content:center; }.report-participants > a { grid-template-columns:44px 1fr; }.report-participants .status-badge { grid-column:2; width:max-content; }
}

/* UX refinement: one compact game shell and route-level mobile modes. */
.primary-nav--modes button,
.account-menu-button,
.header-menu-trigger,
.global-mode-bar button {
    border: 0;
    background: transparent;
    color: inherit;
    cursor: pointer;
}

.account-menu-button,
.header-menu-trigger {
    display: flex;
    min-height: 44px;
    align-items: center;
    gap: var(--space-2);
    padding: 0 var(--space-2);
    border-radius: var(--radius-md);
    color: var(--text-secondary);
    font-size: var(--text-sm);
    font-weight: 750;
}

.account-menu-button:hover,
.header-menu-trigger:hover { background: rgba(255,255,255,.045); color: var(--text-primary); }
.account-menu-button:focus-visible,
.header-menu-trigger:focus-visible { outline: 2px solid var(--selected); outline-offset: 2px; }
.battle-shell-context { display: grid; min-width: 0; align-content: center; margin-right: auto; line-height: 1.12; }
.battle-shell-context span { color: var(--text-muted); font-size: .6rem; font-weight: 800; letter-spacing: .11em; text-transform: uppercase; }
.battle-shell-context strong { max-width: min(44vw, 520px); overflow: hidden; color: var(--text-primary); font-family: var(--font-display); font-size: .94rem; text-overflow: ellipsis; white-space: nowrap; }
.header-menu-trigger { margin-left: auto; }
.global-mode-bar { display: none; }
.app-workspace[data-workspace-kind="task"] { width: min(560px,calc(100vw - 2rem)); height: auto; max-height: min(860px,calc(100dvh - 2rem)); }
.app-workspace[data-workspace-kind="task"] .app-workspace__content { padding: var(--space-4); }
.inline-form-error { margin: var(--space-3) 0 0; padding: var(--space-3); border: 1px solid var(--danger); border-radius: var(--radius-md); background: var(--danger-bg); color: #ffd6d0; font-size: var(--text-sm); }
.workspace-success { margin-bottom: var(--space-3); padding: var(--space-3); border: 1px solid var(--positive); border-radius: var(--radius-md); background: var(--positive-bg); color: #d8f3df; }

@media (max-width: 899px) {
    :root { --header-height: 58px; }
    body:not(.battle-page) { padding-bottom: calc(64px + env(safe-area-inset-bottom)); }
    body:not(.battle-page) .site-header { height: var(--header-height); }
    body:not(.battle-page) .site-header__inner {
        display: flex;
        height: 100%;
        align-items: stretch;
        grid-template-columns: none;
        grid-template-rows: none;
        padding-inline: var(--space-3);
    }
    body:not(.battle-page) .brand,
    body:not(.battle-page) .account-nav { grid-column: auto; grid-row: auto; }
    body:not(.battle-page) .primary-nav,
    body:not(.battle-page) .account-menu-button__name { display: none; }
    body:not(.battle-page) .account-nav { margin-left: auto; }
    body:not(.battle-page) .account-menu-button { width: 44px; justify-content: center; padding: 0; }
    .global-mode-bar {
        position: fixed;
        z-index: 110;
        right: 0;
        bottom: 0;
        left: 0;
        display: grid;
        grid-template-columns: repeat(5, 1fr);
        min-height: 64px;
        padding: 4px max(4px, env(safe-area-inset-right)) calc(4px + env(safe-area-inset-bottom)) max(4px, env(safe-area-inset-left));
        border-top: 1px solid var(--border-default);
        background: rgba(12,17,15,.98);
        box-shadow: 0 -10px 28px rgba(0,0,0,.35);
        backdrop-filter: blur(16px);
    }
    .global-mode-bar a,
    .global-mode-bar button {
        position: relative;
        display: grid;
        min-width: 44px;
        min-height: 54px;
        place-content: center;
        gap: 2px;
        border-radius: var(--radius-md);
        color: var(--text-muted);
        font-size: .58rem;
        font-weight: 780;
        text-align: center;
        text-decoration: none;
    }
    .global-mode-bar a > span:first-child,
    .global-mode-bar button > span:first-child { color: var(--accent); font-size: 1rem; }
    .global-mode-bar :is(a,button).is-active { background: var(--selected-bg); color: var(--text-primary); }
    .global-mode-bar :is(a,button):focus-visible { outline: 2px solid var(--selected); outline-offset: -2px; }
    .app-workspace[data-workspace-kind="task"] { inset: 0; width: 100vw; height: 100dvh; max-height: none; margin: 0; border: 0; border-radius: 0; }
}

/* Management pages lead with what exists; secondary creation and guidance stay compact. */
.campaigns-page .action-tile-grid { grid-template-columns: repeat(2,minmax(0,1fr)); max-width: 54rem; }
.contextual-help { margin-block: var(--space-8) var(--space-4); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); background: var(--surface-panel-muted); }
.contextual-help > summary { min-height: 48px; padding: var(--space-4); cursor: pointer; color: var(--text-muted); font-size: var(--text-sm); font-weight: 720; }
.contextual-help > :not(summary) { margin: 0 var(--space-4) var(--space-4); }
@media (max-width: 760px) {
    .campaigns-page .action-tile-grid { grid-template-columns: 1fr; }
}
.campaign-context-selector{display:flex;align-items:flex-end;gap:.4rem;min-width:0}.campaign-context-selector label{display:grid;gap:.15rem;min-width:0}.campaign-context-selector label>span,.campaign-context-empty>span{font-size:.66rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}.campaign-context-selector select{min-width:10rem;max-width:15rem;height:2.65rem;padding:.4rem 2rem .4rem .65rem;border:1px solid var(--line);border-radius:.55rem;background:var(--surface-raised);color:var(--text)}.campaign-context-selector button{min-height:2.65rem;padding:.45rem .7rem;border:1px solid var(--line);border-radius:.55rem;background:var(--surface);color:var(--text);font-weight:800;cursor:pointer}.campaign-context-selector button:hover,.campaign-context-selector button:focus-visible{border-color:var(--accent);color:var(--accent)}.campaign-context-empty{display:grid;gap:.15rem;padding:.45rem .7rem;border:1px solid var(--line);border-radius:.55rem;color:var(--text);text-decoration:none}.campaign-context-empty strong{font-size:.85rem}.app-menu-campaign{padding-bottom:1rem;border-bottom:1px solid var(--line)}.app-menu-campaign>p{margin:.55rem 0 0;color:var(--text-muted);font-size:.82rem}.campaign-context-selector--menu{align-items:stretch}.campaign-context-selector--menu label{flex:1}.campaign-context-selector--menu select{width:100%;max-width:none}

@media (max-width:1100px){.campaign-context-selector--header label>span{display:none}.campaign-context-selector--header select{min-width:8rem;max-width:11rem}.campaign-context-selector--header button{font-size:.78rem}}
@media (max-width:899px){.campaign-context-selector--header,.campaign-context-empty.campaign-context-selector--header{display:none}.campaign-context-selector--menu select{min-height:2.9rem}.campaign-context-selector--menu button{min-height:2.9rem}}
