:root { color-scheme:dark; --ui-bg:#101923; --ui-surface:#1b2937; --ui-text:#edf5fa; --ui-muted:#b9c9d8; --ui-border:#657c91; --ui-accent:#8bd3f7; --layer-content:1; --layer-header:20; --layer-curtain:40; --layer-menu:60; --shared-shell-height:6.5rem; --faction-ucm:#8adf9a; --faction-phr:#e6d695; --faction-scourge:#c88bea; --faction-shaltari:#f0a55c; --faction-resistance:#79c8f2; --faction-bioficer:#e26b72; --semantic-exact:#67d982; --semantic-warning:#e3bd4f; --semantic-invalid:#df6767; --semantic-muted:#8b9aa7; --compat-green-bg:#193b28; --compat-green-border:#67d982; --compat-green-dot:#7be697; --compat-yellow-bg:#4a3d16; --compat-yellow-border:#e3bd4f; --compat-yellow-dot:#f1d35b; --compat-red-bg:#4b2025; --compat-red-border:#df6767; --compat-red-dot:#ff8a84; --transport-load-color:#e45b5b; --transport-capacity-color:#68c985; --card-radius:.55rem; --card-border-width:1px; --card-padding:.65rem; --state-ready-bg:#173827; --state-ready-border:#79d695; --state-ready-text:#e7ffed; --state-warning-bg:#493914; --state-warning-border:#f1d35b; --state-warning-text:#fff8d8; --state-error-bg:#4a2024; --state-error-border:#ff856f; --state-error-text:#fff0ea; --state-damaged-bg:#4f4316; --state-damaged-border:#f1d35b; --state-damaged-text:#fff8d8; --state-degraded-bg:#563715; --state-degraded-border:#f3a33b; --state-degraded-text:#fff2d7; --state-destroyed-bg:#7a241f; --state-destroyed-border:#ffcf55; --state-destroyed-text:#fff8cf; }
:root { --action-radius:.35rem; --action-padding:.3rem .55rem; --action-min-height:2.25rem; }
:root { --panel-radius:.7rem; --card-radius:.55rem; }
:root { --transport-square-color:#68c985; --transport-triangle-color:#e45b5b; --transport-inverted-triangle-color:#b784e6; --transport-circle-color:#5ca8e6; --transport-diamond-color:#e89a4f; --transport-pentagon-color:#e89a4f; }
:root[data-theme="light"] { color-scheme:light; --ui-bg:#eff3f6; --ui-surface:#fff; --ui-text:#152b3c; --ui-muted:#40596d; --ui-border:#688093; --ui-accent:#075a85; --faction-ucm:#23733a; --faction-phr:#786017; --faction-scourge:#78489b; --faction-shaltari:#a65b16; --faction-resistance:#176a9a; --faction-bioficer:#9c3038; --semantic-exact:#23733a; --semantic-warning:#8a6510; --semantic-invalid:#a83232; --semantic-muted:#667783; --compat-green-bg:#c5e7cc; --compat-green-border:#23733a; --compat-green-dot:#126128; --compat-yellow-bg:#ffe39a; --compat-yellow-border:#8a6510; --compat-yellow-dot:#765100; --compat-red-bg:#f3c1c1; --compat-red-border:#a83232; --compat-red-dot:#8a1f1f; --state-ready-bg:#e8f5ec; --state-ready-border:#23733a; --state-ready-text:#12351f; --state-warning-bg:#fff7db; --state-warning-border:#8a6510; --state-warning-text:#3f2d00; --state-error-bg:#fde8e8; --state-error-border:#a83232; --state-error-text:#541616; --state-damaged-bg:#fff7db; --state-damaged-border:#8a6510; --state-damaged-text:#3f2d00; --state-degraded-bg:#fff0d9; --state-degraded-border:#b65316; --state-degraded-text:#512307; --state-destroyed-bg:#f8dede; --state-destroyed-border:#a83232; --state-destroyed-text:#541616; }

/* Symbol Language v2: Type A/B use one transparent mask and currentColor.
   Frozen Type C transport grammar is rendered separately and never recoloured. */
.dzc-symbol { --dzc-symbol-size:16px; display:inline-flex; align-items:center; flex:0 0 auto; gap:.3em; vertical-align:-.18em; line-height:1; }
.dzc-symbol-xs { --dzc-symbol-size:14px; }
.dzc-symbol-sm { --dzc-symbol-size:16px; }
.dzc-symbol-md { --dzc-symbol-size:20px; }
.dzc-symbol-lg { --dzc-symbol-size:24px; }
.dzc-symbol-xl { --dzc-symbol-size:32px; }
.dzc-symbol-browse { --dzc-symbol-size:40px; }
.dzc-symbol-reference { --dzc-symbol-size:64px; }
.dzc-symbol-image,.dzc-symbol-glyph { width:var(--dzc-symbol-size); height:var(--dzc-symbol-size); aspect-ratio:1 / 1; object-fit:contain; flex:0 0 var(--dzc-symbol-size); }
.dzc-symbol-mask { display:inline-block; background:currentColor; -webkit-mask:var(--dzc-symbol-mask) center / contain no-repeat; mask:var(--dzc-symbol-mask) center / contain no-repeat; }
.dzc-symbol-surface-light .dzc-symbol-mask { background:#0b2942; }
.dzc-symbol-surface-dark .dzc-symbol-mask { background:#fff; }
.dzc-symbol-surface-semantic.dzc-symbol-role-valid .dzc-symbol-mask { background:var(--semantic-exact); }
.dzc-symbol-surface-semantic.dzc-symbol-role-warning .dzc-symbol-mask { background:var(--semantic-warning); }
.dzc-symbol-surface-semantic.dzc-symbol-role-invalid .dzc-symbol-mask { background:var(--semantic-invalid); }
.dzc-symbol-surface-semantic.dzc-symbol-role-ready .dzc-symbol-mask,
.dzc-symbol-surface-semantic.dzc-symbol-role-valid .dzc-symbol-mask { background:var(--semantic-exact); }
.dzc-symbol-surface-semantic.dzc-symbol-role-damaged .dzc-symbol-mask,
.dzc-symbol-surface-semantic.dzc-symbol-role-degraded .dzc-symbol-mask,
.dzc-symbol-surface-semantic.dzc-symbol-role-warning .dzc-symbol-mask { background:var(--semantic-warning); }
.dzc-symbol-surface-semantic.dzc-symbol-role-critical .dzc-symbol-mask,
.dzc-symbol-surface-semantic.dzc-symbol-role-destroyed .dzc-symbol-mask { background:var(--semantic-invalid); }
.dzc-symbol-glyph { display:inline-grid; place-items:center; font-size:var(--dzc-symbol-size); }
.dzc-symbol-label { line-height:1.2; }
.dzc-symbol-fallback { display:inline-block; font-size:.85em; overflow-wrap:anywhere; }
.dzc-symbol-composition { position:relative; display:inline-grid; place-items:center; flex:0 0 auto; vertical-align:-.18em; line-height:1; }
.dzc-symbol-composition .dzc-symbol-primary { display:inline-flex; grid-area:1/1; }
.dzc-symbol-composition .dzc-symbol-modifier { position:absolute; inset-inline-end:-3px; inset-block-end:-3px; display:inline-flex; color:inherit; filter:drop-shadow(0 0 1px var(--ui-surface)); }
.dzc-symbol-composition .dzc-symbol-modifier + .dzc-symbol-modifier { inset-inline-end:9px; inset-block-end:-4px; }
.symbol-index-preview { display:inline-grid; grid-template-columns:repeat(3,max-content); align-items:center; gap:.35rem; min-width:64px; }
.symbol-inline-heading { display:inline-flex; align-items:center; gap:.35rem; }
.rule-summary-heading { display:flex; align-items:center; column-gap:.4rem; min-width:0; }
.rule-heading-symbol { display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto; box-sizing:content-box; padding-inline-end:3px; line-height:1; white-space:nowrap; }
.rule-heading-symbol > .dzc-symbol,
.rule-heading-symbol > .dzc-symbol-composition { vertical-align:0; }
.rule-heading-text { min-width:0; overflow-wrap:break-word; }
.reference-table-wrap { max-width:100%; overflow-x:auto; border:1px solid var(--ui-border); border-radius:var(--panel-radius); }
.reference-table { width:100%; border-collapse:collapse; background:var(--ui-surface); }
.reference-table th,.reference-table td { padding:.55rem .65rem; border-bottom:1px solid var(--ui-border); text-align:left; vertical-align:middle; }
.reference-table th { font-size:.72rem; text-transform:uppercase; letter-spacing:.05em; color:var(--ui-muted); }
.reference-table code { font-size:.78rem; color:var(--ui-muted); }
.symbol-index-table td:first-child { min-width:5.5rem; }
body { background:var(--ui-bg); color:var(--ui-text); }
/* Builder/Plan interactions use accent states rather than default link underlines. */
a { text-decoration:none; }
a:link, a:visited { color:var(--ui-accent); }
a:hover, a:focus-visible { text-decoration:none; }
.shared-toolbar { position:relative; z-index:var(--layer-header); }
.shared-toolbar:has([data-overlay-owner="menu"][open]) { z-index:var(--layer-menu); }
.shared-shell { position:fixed; inset-block-start:0; inset-inline:0; inline-size:100%; z-index:var(--layer-header); max-inline-size:100%; isolation:isolate; background:var(--ui-bg); }
.shared-shell:has([data-overlay-owner="menu"][open]) { z-index:var(--layer-menu); }
.army-status-compact { position:relative; z-index:var(--layer-header); }
.shared-menu { z-index:var(--layer-menu, 30); }
[data-in-place-error="true"] { display:block; width:100%; max-width:100%; min-width:0; margin:.5rem 0; padding:.5rem .65rem; color:var(--semantic-invalid); background:color-mix(in srgb,var(--semantic-invalid) 12%,var(--ui-surface)); border:1px solid color-mix(in srgb,var(--semantic-invalid) 65%,var(--ui-border)); border-radius:.35rem; overflow-wrap:anywhere; }
.shared-toolbar { display:flex; flex-wrap:wrap; align-items:center; gap:.5rem; padding:.5rem; margin:0 0 1rem; background:var(--ui-surface); border:1px solid var(--ui-border); border-radius:.6rem; position:relative; z-index:var(--layer-header); }
.shared-menu[open] { position:relative; z-index:var(--layer-menu); }
.shared-menu[open] .shared-drawer { position:fixed; inset-block-start:3.25rem; inset-inline-end:.75rem; z-index:var(--layer-menu); width:min(26rem,calc(100vw - 1.5rem)); max-block-size:calc(100dvh - 4rem); overflow:auto; }
[data-overlay-owner="menu"] { position:relative; z-index:var(--layer-menu); }
[data-overlay-owner="menu"] > [data-menu-overlay] { position:fixed; inset-block-start:3.25rem; inset-inline-end:.75rem; z-index:var(--layer-menu); width:min(26rem,calc(100vw - 1.5rem)); max-block-size:calc(100dvh - 4rem); overflow:auto; }
.shared-toolbar a,.shared-toolbar button,.shared-toolbar summary { display:inline-flex; align-items:center; min-height:44px; padding:.45rem .7rem; color:var(--ui-accent); font:inherit; }
.shared-toolbar a:hover,.shared-toolbar a:focus-visible,.reference-identity:hover,.reference-identity:focus-visible,.group-add-mixed-variant-name:hover,.group-add-mixed-variant-name:focus-visible { color:var(--ui-text); background:color-mix(in srgb,var(--ui-accent) 16%,transparent); border-radius:.25rem; text-decoration:none; }
.action-text, .action-chip, .select-chip, .disclosure-control { color:var(--ui-accent); }
.action-text:hover, .action-text:focus-visible, .action-chip:hover, .action-chip:focus-visible,
.select-chip:hover, .select-chip:focus-visible, .disclosure-control:hover, .disclosure-control:focus-visible {
  background:color-mix(in srgb,var(--ui-accent) 14%,transparent); color:var(--ui-text);
}

/* Final migration authority for Browse entities and inline rule disclosure. */
.builder-entity-card {
  position:relative;
  min-width:0;
  display:grid;
  gap:.35rem .65rem;
  padding:.55rem .7rem;
  background:var(--ui-surface);
  border:1px solid var(--ui-border);
  border-radius:.4rem;
}
[data-builder-browse-card] [data-card-identity] { min-width:0; }
[data-builder-browse-card] [data-card-profile] { min-width:0; }
[data-builder-browse-card] [data-card-context-body] { min-width:0; }
[data-builder-browse-card] .reference-identity { min-width:0; max-width:100%; gap:.45rem; }
[data-builder-browse-card] .reference-identity > span { min-width:0; overflow-wrap:normal; word-break:normal; }
[data-builder-browse-card] [data-card-actions] { display:flex; flex-wrap:wrap; align-items:center; gap:.3rem; }
.builder-gate-card { gap:.3rem .6rem; }
.builder-gate-card [data-card-actions] { display:flex; flex-wrap:wrap; align-items:center; gap:.3rem; }
.disclosure-control-region { min-width:0; }
.builder-weapons-rules { grid-column:1 / -1; width:100%; margin:.15rem 0 0; }
.builder-weapons-rules > summary { display:inline-flex; width:max-content; max-width:100%; }
.builder-weapons-rules .builder-disclosure-body {
  position:static;
  width:100%;
  max-width:none;
  max-height:none;
  overflow:visible;
  margin:.35rem 0 0;
  padding:.45rem .6rem;
  border-inline-start:2px solid var(--unit-accent, var(--ui-accent));
  background:color-mix(in srgb, var(--ui-surface) 82%, var(--ui-bg));
}
.builder-profile-help { display:inline-block; margin-inline-start:.25rem; vertical-align:middle; }
.builder-profile-help > summary { display:inline-flex; align-items:center; justify-content:center; width:1.45rem; height:1.45rem; padding:0; color:var(--unit-accent,var(--ui-accent)); border:1px solid currentColor; border-radius:50%; cursor:pointer; list-style:none; }
.builder-profile-help > summary::-webkit-details-marker { display:none; }
.builder-profile-help { position:relative; }
.builder-profile-help > p { position:absolute; z-index:var(--layer-menu); top:calc(100% + .25rem); inset-inline-end:0; width:max-content; max-width:min(22rem,calc(100vw - 1rem)); margin:0; padding:.45rem .55rem; color:var(--ui-muted); background:var(--ui-surface); border:1px solid var(--unit-accent,var(--ui-border)); border-radius:.3rem; box-shadow:0 .5rem 1rem rgba(0,0,0,.25); overflow-wrap:anywhere; }
.builder-disclosure-body p { margin:.15rem 0; }
.builder-disclosure-variant + .builder-disclosure-variant { margin-top:.35rem; padding-top:.35rem; border-top:1px solid var(--ui-border); }
.builder-entity-card .primary-action,
.builder-entity-card .primary-commit { min-height:2rem; padding:.25rem .65rem; }
@media (min-width:1100px) {
  [data-builder-browse-card][data-transport-row-layout="simple"] { grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) auto; align-items:start; }
  [data-builder-browse-card][data-transport-row-layout="configurable"] { grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); }
  [data-builder-browse-card][data-transport-row-layout="configurable"] [data-card-context-body] { grid-column:1 / -1; }
  [data-builder-browse-card][data-transport-row-layout="simple"],
  [data-builder-browse-card][data-transport-row-layout="configurable"] { max-inline-size:100%; min-inline-size:0; }
}
@media (max-width:480px) {
  .builder-entity-card { padding:.45rem .55rem; }
  [data-builder-browse-card][data-transport-row-layout="simple"],
  [data-builder-browse-card][data-transport-row-layout="configurable"] { grid-template-columns:minmax(0,1fr); }
  .builder-weapons-rules .builder-disclosure-body { padding:.4rem .5rem; }
}

/* Gate states share one compact card rhythm while retaining Army-level ownership. */
.group-add-gate-list { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr)); gap:.55rem; }
.builder-gate-card { align-items:start; min-width:0; padding:.55rem .7rem; }
.builder-gate-card [data-card-identity], .builder-gate-card [data-card-profile], .builder-gate-card [data-card-actions] { min-width:0; }
.builder-gate-card [data-card-actions] { display:flex; flex-wrap:wrap; gap:.3rem; align-items:center; }
.builder-gate-card input[type=number] { width:4.5rem; }
.builder-gate-card .group-add-gate-logistics { color:var(--transport-capacity-color); font-weight:650; }
.builder-gate-card button.primary-commit { color:var(--ui-bg); background:var(--faction-shaltari); border-color:var(--faction-shaltari); opacity:1; }
.builder-gate-card button.primary-commit:disabled { color:var(--ui-muted); background:var(--ui-surface); border-color:var(--ui-border); opacity:.82; cursor:not-allowed; }
@media (max-width:520px) { .group-add-gate-list { grid-template-columns:minmax(0,1fr); } .builder-gate-card { padding:.45rem .55rem; } }
@media (max-width:767px) { .builder-profile-help > p { position:fixed; inset-block-start:.5rem; inset-inline:.5rem; width:min(22rem,calc(100vw - 1rem)); max-width:none; max-inline-size:calc(100vw - 1rem); max-block-size:calc(100dvh - 1rem); overflow:auto; } }
.action-chip, .select-chip, .primary-commit, .secondary-action, .destructive-action {
  display:inline-flex; align-items:center; justify-content:center; gap:.3rem;
  min-height:var(--action-min-height); padding:var(--action-padding);
  border:1px solid var(--ui-border); border-radius:var(--action-radius);
  text-decoration:none; font:inherit; cursor:pointer;
}
.primary-commit { border-color:var(--ui-accent); color:var(--ui-bg); background:var(--ui-accent); font-weight:700; }
.primary-commit:hover, .primary-commit:focus-visible { color:var(--ui-bg); filter:brightness(1.08); }
.secondary-action { color:var(--ui-accent); background:transparent; }
.secondary-action:hover, .secondary-action:focus-visible { background:color-mix(in srgb,var(--ui-accent) 14%,transparent); color:var(--ui-text); }
.destructive-action { color:var(--semantic-invalid); border-color:color-mix(in srgb,var(--semantic-invalid) 65%,var(--ui-border)); background:transparent; }
.destructive-action:hover, .destructive-action:focus-visible { background:color-mix(in srgb,var(--semantic-invalid) 15%,transparent); color:var(--ui-text); }
.disclosure-control { cursor:pointer; }
.select-chip { background:transparent; }
.select-chip:has(input:checked), .select-chip[aria-selected="true"] { border-color:var(--ui-accent); background:color-mix(in srgb,var(--ui-accent) 18%,transparent); color:var(--ui-text); }
[data-unit-component] .action-text, [data-unit-component] .action-chip,
[data-unit-component] .select-chip, [data-unit-component] .disclosure-control,
[data-unit-component] .unit-identity-link, [data-unit-component] .reference-identity { color:var(--unit-accent); }
.quantity-control input { appearance:textfield; -moz-appearance:textfield; }
.quantity-control input::-webkit-outer-spin-button,
.quantity-control input::-webkit-inner-spin-button { margin:0; -webkit-appearance:none; }
.quantity-control { align-items:center; }
.quantity-control button { min-width:2rem; min-height:2.25rem; padding:.25rem .4rem; }
.group-add-squad-upgrade-choice.select-chip { color:var(--unit-accent, var(--ui-accent)); }
.group-add-squad-category > summary.disclosure-control,
.candidate-help > summary.disclosure-control { color:var(--ui-muted); }
.shared-toolbar button { background:var(--ui-bg); border:1px solid var(--ui-border); border-radius:.4rem; cursor:pointer; }
.shared-menu { margin-left:auto; }
.shared-drawer { width:min(340px,95vw); background:var(--ui-surface); border:1px solid var(--ui-border); padding:1rem; box-shadow:0 10px 30px #0008; }
.shared-drawer a { display:block; }
:where(a,button,input,select,summary):focus-visible { outline:3px solid var(--ui-accent); outline-offset:3px; }
#reference-dialog { padding:0; width:min(1100px,96vw); height:90dvh; max-width:96vw; background:var(--ui-bg); color:var(--ui-text); border:1px solid var(--ui-border); border-radius:.7rem; }
#reference-dialog::backdrop { background:#000a; }
#reference-dialog header { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.5rem 1rem; }
#reference-dialog h2 { margin:0; font-size:1.1rem; }
#reference-dialog button { min-height:44px; }
#reference-dialog iframe { width:100%; height:calc(100% - 65px); border:0; background:var(--ui-bg); }
.reference-page { box-sizing:border-box; max-width:1400px; margin:auto; padding:1rem; font:1rem/1.5 system-ui,sans-serif; }
.reference-page * { box-sizing:border-box; }
.reference-page a { color:var(--ui-accent); }
.reference-search { display:flex; flex-wrap:wrap; gap:.65rem; align-items:end; padding:1rem; background:var(--ui-surface); border:1px solid var(--ui-border); border-radius:.6rem; }
.reference-search label { display:grid; gap:.3rem; flex:1 1 140px; }
.reference-search label:first-child { flex:2 1 240px; }
.reference-search input,.reference-search select,.reference-search button { width:100%; min-height:44px; font:inherit; padding:.5rem; background:var(--ui-bg); color:var(--ui-text); border:1px solid var(--ui-border); border-radius:.3rem; }
.reference-search button { width:auto; }
.reference-breadcrumbs { display:flex; flex-wrap:wrap; gap:.4rem; margin:1rem 0; color:var(--ui-muted); }
.reference-breadcrumbs a { color:var(--ui-accent); }
.reference-variants { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:1rem; }
.reference-results { display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:.55rem; }
.reference-browse-item { margin:0; padding:.4rem; background:var(--ui-surface); border:1px solid var(--ui-border); border-radius:.45rem; }
.reference-browse-link { display:flex; align-items:center; gap:.65rem; min-height:64px; color:inherit; text-decoration:none; }
.reference-browse-link:hover { color:var(--ui-accent); }
.reference-browse-link strong,.reference-browse-link small { display:block; }
.reference-browse-link small { color:var(--ui-muted); margin-top:.15rem; }
.reference-browse-glyph { display:grid; place-items:center; width:2.4rem; height:2.4rem; border:1px dashed var(--ui-border); border-radius:.4rem; color:var(--ui-accent); }
.reference-rule-summary { padding:.45rem 0; border-bottom:1px solid var(--ui-border); }
.reference-rule-summary p { margin:.2rem 0; color:var(--ui-muted); }
.reference-factions { display:flex; flex-wrap:wrap; gap:.5rem; margin:1rem 0; }
.reference-factions a { padding:.5rem; min-height:44px; border:1px solid var(--ui-border); border-radius:2rem; }
.reference-results { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr)); gap:.65rem; align-items:start; }
.reference-compact-card { min-width:0; background:linear-gradient(145deg,var(--ui-surface),color-mix(in srgb,var(--ui-surface) 82%,var(--ui-bg))); border:1px solid var(--ui-border); border-left:3px solid var(--ui-accent); border-radius:.55rem; }
[data-unit-component][data-unit-faction].reference-compact-card,
[data-unit-component][data-unit-faction].reference-card { border-inline-start-color:var(--unit-accent); }
.reference-weapon-profile { border-inline-start: 2px solid var(--ui-border); padding-inline-start: .65rem; }
.reference-weapon-profile > summary { min-height: 40px; display: flex; align-items: center; }
.reference-browse-rules { margin: .35rem .55rem .55rem; border-top: 1px solid var(--ui-border); }
.reference-browse-rules > summary { min-height: 40px; padding: .45rem .2rem; cursor: pointer; color: var(--ui-muted); }
.reference-browse-rules[open] > summary { color: var(--ui-text); }
.reference-browse-rules .reference-rule-links { padding: 0 .2rem .4rem; }
.reference-browse-rules .reference-rule-summary { padding: .35rem 0; }
.reference-browse-rules .reference-rule-summary p { margin: .2rem 0; color: var(--ui-muted); }
.reference-compact-link { display:flex; gap:.65rem; align-items:flex-start; min-height:112px; padding:.6rem; color:inherit; text-decoration:none; }
.reference-compact-link:hover { background:color-mix(in srgb,var(--ui-accent) 10%,transparent); }
.reference-compact-link:focus-visible { outline:3px solid var(--ui-accent); outline-offset:2px; }
.reference-compact-body { min-width:0; flex:1; }
.reference-compact-body strong,.reference-compact-body small { display:block; }
.reference-compact-body strong { font-size:1rem; line-height:1.2; }
.reference-compact-body small { color:var(--ui-muted); margin-top:.18rem; }
.reference-stat-ribbon { display:flex; gap:.25rem; margin:.45rem 0 0; }
.reference-stat-ribbon div { min-width:2.25rem; padding:.2rem .28rem; text-align:center; border:1px solid color-mix(in srgb,var(--ui-accent) 45%,var(--ui-border)); border-radius:.25rem; background:var(--ui-bg); }
.reference-stat-ribbon dt { color:var(--ui-muted); font-size:.65rem; text-transform:uppercase; }
.reference-stat-ribbon dd { margin:0; font-weight:800; font-size:.9rem; }
.reference-load { color:var(--ui-accent)!important; font-weight:650; }
.reference-card { min-width:0; padding:.65rem; border:1px solid var(--ui-border); border-radius:.6rem; background:var(--ui-surface); overflow-wrap:anywhere; }
.reference-card h2 { margin:.3rem 0; }
.reference-card-visual-heading { display:flex; align-items:center; gap:.8rem; margin:.35rem 0 .7rem; }
.reference-card-visual-heading h2 { min-width:0; margin:0; }
.reference-visual { display:grid; place-items:center; flex:0 0 auto; aspect-ratio:1; overflow:hidden; color:var(--ui-accent); border:1px solid color-mix(in srgb,var(--ui-accent) 48%,var(--ui-border)); border-radius:var(--card-radius); background:radial-gradient(circle at 35% 28%,color-mix(in srgb,var(--ui-accent) 16%,var(--ui-surface)),var(--ui-bg)); }
.reference-visual-browse { width:4rem; height:4rem; }
.reference-visual-detail { width:6rem; height:6rem; }
.reference-visual-artwork { object-fit:contain; }
.reference-visual-symbol .dzc-symbol { margin:auto; }
.reference-visual-symbol .dzc-symbol-composition { margin:auto; }
.reference-visual-family .reference-symbol { width:2.8rem; height:2.8rem; border:0; background:transparent; font-size:1.75rem; }
.reference-visual-family-weapon { color:var(--semantic-warning); border-color:color-mix(in srgb,var(--semantic-warning) 55%,var(--ui-border)); }
.reference-visual-family-unit-rule,.reference-visual-family-rule { color:var(--ui-accent); }
.reference-visual-neutral { color:var(--ui-muted); border-style:dashed; font-size:1.6rem; }
.reference-eyebrow,.reference-source { color:var(--ui-muted); font-size:.85rem; }
.reference-identity { display:flex; align-items:center; gap:1rem; }
.unit-art-placeholder { flex:0 0 64px; width:64px; aspect-ratio:1; display:grid; place-items:center; background:var(--ui-bg); color:var(--ui-muted); border:1px dashed var(--ui-border); border-radius:.5rem; font-size:2rem; }
.reference-stats { display:flex; flex-wrap:wrap; gap:.4rem; margin:.6rem 0; }
.reference-stats div { min-width:48px; padding:.35rem; text-align:center; border:1px solid var(--ui-border); border-radius:.3rem; }
.reference-stats dt { font-size:.8rem; color:var(--ui-muted); }
.reference-stats dd { margin:0; font-weight:bold; }
.reference-card summary { min-height:44px; padding:.6rem 0; cursor:pointer; }
.reference-card details { border-top:1px solid var(--ui-border); }
.rule-chip { display:inline-block; border:1px solid var(--ui-border); border-radius:1rem; padding:.25rem .6rem; margin:.2rem; }
.reference-rule-text { white-space:pre-line; }
.reference-results .unit-art-large { width:72px; flex-basis:72px; }
.scroll-edge-viewport { position:relative; min-width:0; }
.scroll-edge-button { position:absolute; top:50%; transform:translateY(-50%); z-index:var(--layer-content); width:2rem; height:3rem; border:1px solid var(--ui-border); border-radius:.35rem; color:var(--ui-text); background:linear-gradient(90deg,var(--ui-bg),transparent); font-size:1.6rem; cursor:pointer; }
.scroll-edge-start { left:0; background:linear-gradient(90deg,var(--ui-bg),transparent); }
.scroll-edge-end { right:0; background:linear-gradient(270deg,var(--ui-bg),transparent); }
.scroll-edge-button[hidden] { display:none; }
[hidden] { display:none!important; }
@media(max-width:600px) { .reference-page { padding:.6rem; } .shared-toolbar { gap:.15rem; } .shared-toolbar a,.shared-toolbar button,.shared-toolbar summary { padding:.4rem; font-size:.9rem; } .shared-menu summary span { display:none; } #reference-dialog { width:100vw; max-width:100vw; height:100dvh; max-height:100dvh; border-radius:0; } .shared-save-panel { position:fixed; inset-block-start:3.1rem; inset-inline:.5rem; width:auto; } .shared-report-dialog { width:calc(100vw - 1rem); max-width:calc(100vw - 1rem); max-height:calc(100dvh - 1rem); border-radius:.5rem; } .shared-report-form { max-height:calc(100dvh - 1rem); padding:.75rem; } .shared-report-choice-grid { grid-template-columns:1fr; } .shared-report-actions { position:sticky; inset-block-end:0; padding-top:.4rem; background:var(--ui-surface); } }
@media(max-width:600px) { .reference-card .unit-art-large { width:min(42vw,180px); flex-basis:min(42vw,180px); max-height:180px; } .reference-card .reference-identity { gap:.55rem; } .reference-card .reference-stats { gap:.2rem; } .reference-card .reference-stats div { min-width:42px; padding:.25rem; } }
@media(max-width:600px) { .reference-visual-detail { width:4.5rem; height:4.5rem; } .reference-card-visual-heading { align-items:flex-start; gap:.6rem; } }
@media(max-width:600px) { .reference-compact-link { min-height:96px; padding:.5rem; } .reference-compact-card .unit-art-small { width:52px; flex-basis:52px; } .reference-variants { grid-template-columns:1fr; gap:.55rem; } }
/* Existing page surfaces adopt shared appearance without altering semantic status classes. */
:root[data-theme="light"] body :where(main,section,article,details,nav,form,div,aside,header,footer,table,td,th) { background-color:var(--ui-surface); color:var(--ui-text); border-color:var(--ui-border); }
:root[data-theme="light"] body :where(p,span,strong,small,h1,h2,h3,h4,h5,li,label,summary,dt,dd) { color:var(--ui-text); }
:root[data-theme="light"] body a { color:var(--ui-accent); }
:root[data-theme="light"] body :where(button,input,select,textarea) { background-color:var(--ui-bg); color:var(--ui-text); border-color:var(--ui-border); }
@media print { .shared-toolbar,#reference-dialog { display:none; } }
#reference-dialog:not([open]),.shared-menu:not([open]) .shared-drawer { display:none; }
.army-status > summary { cursor:pointer; padding:.6rem; min-height:44px; font-weight:700; }
details.army-status:not([open]) > :not(summary) { display:none; }
.category-rail { display:flex; flex-wrap:wrap; gap:.4rem; margin:.8rem 0; position:static; }
.category-rail button { min-height:44px; padding:.5rem .8rem; background:var(--ui-surface); color:var(--ui-text); border:1px solid var(--ui-border); border-radius:.4rem; cursor:pointer; }
.category-rail button[aria-pressed="true"] { color:var(--ui-bg); background:var(--ui-accent); }
.category-rail-item { display:inline-flex; align-items:center; gap:.1rem; flex-shrink:0; }
.category-rail-item a { min-height:44px; min-width:36px; display:grid; place-items:center; color:var(--ui-accent); }
.category-rail,.group-slot-strip,.digital-group-sidebar { position:relative; }
.category-enhanced .group-add-multipicker-grid { grid-template-columns:minmax(0,1fr); }
.group-add-multipicker-grid > [data-builder-order="squads"] { order:1; }
.group-add-multipicker-grid > [data-builder-order="transports"] { order:2; }
.group-add-multipicker-grid > [data-builder-order="gates"] { order:3; }
.category-enhanced [data-category-panel] > summary,.category-enhanced .group-add-multipicker-squads > summary { display:none; }
.category-enhanced .group-add-squad-categories { display:block; }
.candidate-help { display:inline-block; position:relative; margin:0 .25rem; }
.candidate-help summary { min-width:44px; min-height:44px; cursor:pointer; padding:.5rem; }
.candidate-help p { position:absolute; z-index:var(--layer-menu); top:100%; left:0; width:min(260px,65vw); padding:.8rem; margin:0; border:1px solid var(--ui-border); border-radius:.4rem; background:var(--ui-surface); color:var(--ui-text); }
.candidate-reference { display:inline-block; padding:.4rem; min-height:44px; }
.active-group-validation > summary { min-height:44px; padding:.5rem; cursor:pointer; }
.group-slot-heading strong,.digital-group-nav-label-compact { overflow-wrap:normal; word-break:normal; white-space:normal; }
@media(max-width:850px) { .army-status { z-index:var(--layer-curtain); background:var(--ui-surface); max-height:none; overflow:visible; } .army-status > summary { background:var(--ui-surface); } .army-header-title { flex-wrap:wrap; } .category-rail { flex-wrap:nowrap; overflow-x:auto; padding-bottom:.3rem; } .category-rail button { flex-shrink:0; } }
/* Faction identity is one shared token system in every surface and theme.
   Compatibility never overrides these identity tokens. */
body[data-faction="ucm"] { --faction-accent:var(--faction-ucm); --ui-accent:var(--faction-accent); }
body[data-faction="phr"] { --faction-accent:var(--faction-phr); --ui-accent:var(--faction-accent); }
body[data-faction="shaltari"] { --faction-accent:var(--faction-shaltari); --ui-accent:var(--faction-accent); }
body[data-faction="scourge"] { --faction-accent:var(--faction-scourge); --ui-accent:var(--faction-accent); }
body[data-faction="resistance"] { --faction-accent:var(--faction-resistance); --ui-accent:var(--faction-accent); }
body[data-faction="bioficer"] { --faction-accent:var(--faction-bioficer); --ui-accent:var(--faction-accent); }
.unit-art-small { width:32px; flex-basis:32px; font-size:1.1rem; vertical-align:middle; }
.unit-art-tiny { display:inline-grid; width:20px; flex-basis:20px; font-size:.8rem; vertical-align:middle; }
.unit-art-large { width:88px; flex-basis:88px; }
.unit-art { display:block; width:100%; height:100%; object-fit:contain; }
a.reference-identity { display:inline-flex; align-items:center; gap:.5rem; color:inherit; text-decoration:none; border-radius:.4rem; padding:.25rem; max-width:100%; }
a.reference-identity:hover { background:var(--ui-surface); color:var(--ui-accent); }
a.reference-identity:focus-visible { outline:2px solid var(--ui-accent); outline-offset:3px; }
[data-reference-surface] { cursor:pointer; }
.shared-toolbar { flex-wrap:nowrap; gap:.25rem; padding:.2rem .5rem; border:0; border-bottom:1px solid var(--ui-border); border-radius:0; }
.shared-context { display:flex; align-items:center; gap:.6rem; margin-right:auto; min-width:0; }
.shared-context strong { letter-spacing:.12em; }
.shared-context > span { color:var(--ui-muted); font-size:.85rem; }
.shared-primary-nav { display:flex; flex-wrap:wrap; align-items:center; gap:.15rem; min-width:0; }
.shared-primary-nav a,.shared-secondary-nav > form { display:inline-flex; }
.shared-secondary-nav { display:flex; align-items:center; gap:.15rem; }
.shared-secondary-nav form { margin:0; }
.shared-save-hub { position:relative; z-index:var(--layer-menu); }
.shared-save-hub > summary { list-style:none; cursor:pointer; }
.shared-save-hub > summary::-webkit-details-marker { display:none; }
.shared-save-panel { position:absolute; inset-block-start:calc(100% + .35rem); inset-inline-end:0; z-index:var(--layer-menu); display:grid; gap:.35rem; width:min(13rem,calc(100vw - 1rem)); padding:.6rem; background:var(--ui-surface); border:1px solid var(--ui-border); border-radius:.4rem; box-shadow:0 .6rem 1.5rem rgba(0,0,0,.3); }
.shared-save-panel strong { margin-top:.2rem; color:var(--ui-muted); font-size:.8rem; text-transform:uppercase; letter-spacing:.08em; }
.shared-save-panel a,.shared-save-panel button { display:flex; align-items:center; min-height:2.35rem; padding:.4rem .5rem; color:var(--ui-accent); background:transparent; border:1px solid transparent; border-radius:.25rem; font:inherit; text-align:start; cursor:pointer; }
.shared-save-panel a:hover,.shared-save-panel a:focus-visible,.shared-save-panel button:hover,.shared-save-panel button:focus-visible { background:color-mix(in srgb,var(--ui-accent) 14%,transparent); color:var(--ui-text); }
.shared-save-panel form { margin:0; }
.shared-report-dialog:not([open]) { display:none; }
.shared-report-dialog { box-sizing:border-box; width:min(38rem,calc(100vw - 2rem)); max-width:calc(100vw - 2rem); max-height:min(44rem,calc(100vh - 2rem)); max-height:min(44rem,calc(100dvh - 2rem)); padding:0; overflow:hidden; color:var(--ui-text); background:var(--ui-surface); border:1px solid var(--ui-border); border-radius:.6rem; box-shadow:0 1rem 3rem rgba(0,0,0,.45); }
.shared-report-dialog::backdrop { background:rgba(0,0,0,.62); }
.shared-report-form { display:grid; gap:.7rem; box-sizing:border-box; max-height:min(44rem,calc(100vh - 2rem)); max-height:min(44rem,calc(100dvh - 2rem)); overflow:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; padding:1rem; }
.shared-report-dialog-header { position:sticky; inset-block-start:0; z-index:1; display:flex; align-items:center; justify-content:space-between; gap:.75rem; padding-block:.15rem; background:var(--ui-surface); }
.shared-report-dialog-header h2 { margin:0; font-size:1.2rem; }
.shared-report-dialog-header .shared-report-close { display:grid; place-items:center; min-width:44px; min-height:44px; padding:0; border:1px solid var(--ui-border); border-radius:.35rem; background:transparent; color:var(--ui-text); font-size:1.35rem; line-height:1; text-decoration:none; cursor:pointer; }
.shared-report-step { min-width:0; margin:0; padding:.65rem; border:1px solid var(--ui-border); border-radius:.4rem; }
.shared-report-step legend { padding:0 .3rem; color:var(--ui-muted); font-weight:700; }
.shared-report-choice-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.4rem; }
.shared-report-choice { display:flex; align-items:center; gap:.4rem; min-width:0; min-height:2.35rem; padding:.45rem .55rem; border:1px solid var(--ui-border); border-radius:.35rem; color:var(--ui-text); cursor:pointer; }
.shared-report-choice:has(input:checked) { border-color:var(--ui-accent); background:color-mix(in srgb,var(--ui-accent) 18%,var(--ui-surface)); }
.shared-report-choice input { accent-color:var(--ui-accent); }
.shared-report-manual { display:grid; gap:.3rem; }
.shared-report-manual input,.shared-report-form textarea { min-width:0; width:100%; box-sizing:border-box; color:var(--ui-text); background:var(--ui-bg); border:1px solid var(--ui-border); border-radius:.25rem; padding:.45rem; font:inherit; }
.shared-report-generated { margin:0; color:var(--ui-muted); }
.shared-report-context { padding:.4rem .55rem; border-inline-start:3px solid var(--ui-accent); background:color-mix(in srgb,var(--ui-accent) 8%,var(--ui-surface)); }
.shared-report-context p { margin:.35rem 0 0; }
.shared-report-actions { display:flex; justify-content:flex-end; gap:.5rem; }
.shared-report-actions button,.shared-report-actions .shared-report-close { display:inline-flex; align-items:center; min-height:44px; padding:.45rem .8rem; border:1px solid var(--ui-border); border-radius:.35rem; background:var(--ui-bg); color:var(--ui-text); font:inherit; text-decoration:none; cursor:pointer; box-sizing:border-box; }
.shared-report-actions button[type="submit"] { background:var(--ui-accent); color:var(--ui-bg); border-color:var(--ui-accent); font-weight:700; }
.shared-nav-icon { width:1.15rem; height:1.15rem; flex:0 0 1.15rem; fill:none; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; stroke-width:1.8; }
.shared-nav-label { white-space:nowrap; }
.shared-toolbar .shared-secondary-action { border:0; background:transparent; cursor:pointer; }
.shared-toolbar .shared-secondary-action:hover,.shared-toolbar .shared-secondary-action:focus-visible,
.shared-toolbar .shared-menu summary:hover,.shared-toolbar .shared-menu summary:focus-visible { color:var(--ui-text); background:color-mix(in srgb,var(--ui-accent) 16%,transparent); border-radius:.25rem; }
.shared-primary-nav a[aria-current="page"] { background:color-mix(in srgb,var(--ui-accent) 20%,transparent); color:var(--ui-text); font-weight:700; border-radius:.25rem; }
.shared-menu { margin-left:0; }
.shared-toolbar .shared-reference { text-decoration:none; border-radius:.4rem; }
.shared-toolbar a:focus-visible,.shared-toolbar button:focus-visible,.shared-toolbar summary:focus-visible { outline:2px solid var(--ui-accent); outline-offset:2px; }
.faction-filter-chip { border:1px solid var(--faction-accent,var(--ui-border)); border-radius:var(--action-radius); padding:.3rem .55rem; color:var(--faction-accent) !important; text-decoration:none !important; }
.faction-filter-chip:hover,.faction-filter-chip:focus-visible,.faction-filter-chip.is-selected { background:color-mix(in srgb,var(--faction-accent) 18%,transparent); color:var(--ui-text) !important; }
.faction-ucm { --faction-accent:var(--faction-ucm); } .faction-phr { --faction-accent:var(--faction-phr); }
.faction-scourge { --faction-accent:var(--faction-scourge); } .faction-shaltari { --faction-accent:var(--faction-shaltari); }
.faction-resistance { --faction-accent:var(--faction-resistance); } .faction-bioficer { --faction-accent:var(--faction-bioficer); }
@media(max-width:767px) {
  .shared-toolbar { flex-wrap:wrap; row-gap:0; padding:.15rem .3rem; margin-bottom:.65rem; }
  .shared-context { order:1; }
  .shared-secondary-nav { order:2; margin-left:auto; }
  .shared-menu { order:2; }
  .shared-primary-nav { order:3; flex:1 1 100%; justify-content:space-around; gap:0; border-top:1px solid color-mix(in srgb,var(--ui-border) 55%,transparent); }
  .shared-nav-label { display:none; }
  .shared-toolbar a,.shared-toolbar button,.shared-toolbar summary { min-width:44px; min-height:44px; justify-content:center; padding:.35rem; }
  .shared-primary-nav a { flex:1 1 0; }
}
@media(min-width:768px) {
  .shared-primary-nav a,.shared-secondary-action,.shared-menu summary { gap:.35rem; }
}
@media (min-width:768px) and (max-width:1023px) {
  :root { --shared-shell-height:5.75rem; }
  .shared-toolbar { flex-wrap:nowrap; gap:.1rem; padding:.15rem .35rem; }
  .shared-context { flex:0 1 auto; margin-right:.25rem; }
  .shared-primary-nav { flex:1 1 auto; flex-wrap:nowrap; justify-content:center; gap:0; }
  .shared-primary-nav a { flex:0 1 auto; padding-inline:.5rem; }
  .shared-secondary-nav { flex:0 0 auto; gap:0; }
  .shared-secondary-nav .shared-nav-label,.shared-menu .shared-nav-label { display:none; }
  .shared-secondary-nav .shared-secondary-action,.shared-menu summary { min-width:44px; justify-content:center; padding-inline:.35rem; }
}
@media(max-width:480px) {
  .shared-context { gap:.25rem; }
  .shared-context > span { font-size:.75rem; }
  .shared-primary-nav a { min-height:42px; }
}
@media(max-width:767px) {
  :root { --shared-shell-height:4.75rem; }
  .shared-toolbar { gap:0; }
  .shared-context { min-height:44px; }
  .shared-primary-nav { min-height:42px; }
  .shared-shell .army-status-summary { min-height:42px; padding-block:.2rem; }
}
@media(max-width:1099px) {
  .mobile-builder-modes { display:flex; gap:.35rem; margin:.5rem 0; overflow-x:auto; }
  .mobile-builder-modes button { flex:1 0 5.5rem; min-height:42px; padding:.45rem .7rem; border:1px solid var(--ui-border); border-radius:.4rem; background:var(--ui-surface); color:var(--ui-text); font-weight:700; }
  .mobile-builder-modes button[aria-pressed="true"] { background:var(--ui-accent); color:var(--ui-bg); }
  [data-builder-pane][data-pane-active="false"] { display:none; pointer-events:none; }
  .active-group-commanders { padding:.55rem; border-left:3px solid var(--ui-accent); }
  .active-group-commander-actions { display:flex; flex-wrap:wrap; gap:.35rem; }
  .active-group-commander-actions button { min-height:40px; }
  .active-group-plan[data-builder-pane="plan"] { border-left:3px solid var(--ui-accent); padding:.6rem; }
  .builder-workspace.has-side-panel { display:block; }
  .active-group-plan, .gate-network, .active-group-selection, .active-group-catalogue { width:100%; max-width:100%; margin:.6rem 0; overflow:visible; }
  .group-add-multipicker-grid { display:grid; grid-template-columns:minmax(0,1fr); }
  .group-add-multipicker-grid > details { margin:.6rem 0; }
  .group-slot-strip { display:flex; overflow-x:auto; max-width:100%; }
  .shaltari-current-state-nav { display:flex; gap:.35rem; overflow-x:auto; margin:.45rem 0; }
  .shaltari-current-state-nav .action-chip { flex:1 0 8rem; }
  .scroll-edge-viewport > .scroll-edge-rail { padding-inline:2.25rem; scroll-padding-inline:2.25rem; }
  .group-slot { flex:0 0 7rem; min-width:7rem; overflow-wrap:normal; word-break:normal; }
  .digital-workspace { display:block; grid-template-columns:none; }
  .digital-group-sidebar { position:static; display:flex; flex-direction:row; max-width:100%; overflow-x:auto; overflow-y:hidden; }
  .digital-group-sidebar .digital-group-nav-link { flex:0 0 auto; min-width:7rem; padding:.55rem .7rem; text-align:left; }
  .digital-group-sidebar .digital-group-nav-link span, .digital-group-sidebar .digital-group-nav-label-full { display:inline; }
  .digital-group-sidebar .digital-group-nav-label-compact { display:none; }
  .digital-group-content { grid-column:auto; min-width:0; width:100%; }
  .digital .group, .digital .gate-network { width:100%; max-width:100%; }
  .unit-art-small { width:40px; flex-basis:40px; }
}
@media(min-width:1100px) {
  body { font-size:1rem; }
  main { width:min(1760px, calc(100% - 48px)); }
  .builder-workspace-nav-desktop-hidden { display:none; }
  .builder-workspace-regions[data-workspace-desktop="simultaneous"] { display:grid; grid-template-columns:minmax(20rem,.33fr) minmax(0,.67fr); gap:1rem; align-items:start; }
  .builder-workspace-left-column { grid-column:1; min-width:0; display:grid; gap:.75rem; }
  .builder-workspace-regions[data-workspace-desktop="simultaneous"] > .builder-workspace-left-column { grid-column:1; min-width:0; }
  .builder-workspace-left-column > [data-builder-pane="plan"][data-pane-active="false"],
  .builder-workspace-left-column > [data-builder-pane="gates"][data-pane-active="false"] { display:block; pointer-events:auto; }
  .builder-workspace-regions[data-workspace-desktop="simultaneous"] > .group-add-multipicker { grid-column:2; display:block; min-width:0; }
  .builder-workspace-regions[data-workspace-desktop="simultaneous"] > [data-builder-pane][data-pane-active="false"] { display:block; pointer-events:auto; }
  .group-add-multipicker-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .group-add-multipicker-gates { grid-column:1 / -1; }
}
@media(min-width:1600px) {
  .builder-workspace-regions[data-workspace-desktop="simultaneous"] { grid-template-columns:minmax(24rem,.33fr) minmax(0,.67fr); gap:1.25rem; }
}
.shaltari-current-state-nav { display:flex; gap:.35rem; margin:.45rem 0 .65rem; }
.shaltari-current-state-nav .is-selected { border-color:var(--unit-accent,var(--ui-accent)); background:color-mix(in srgb,var(--ui-accent) 16%,transparent); }
.shaltari-current-state-pane { min-width:0; }
.builder-workspace-regions > [data-builder-pane="gates"][data-pane-active="false"] { display:none; }
.builder-workspace-regions > [data-builder-pane="gates"][data-pane-active="true"] { grid-column:1; min-width:0; }
.shaltari-current-gate-network { min-width:0; }
.shaltari-current-gate-network .gate-network-summary { display:flex; flex-wrap:wrap; gap:.4rem 1rem; padding:.5rem; background:var(--ui-surface); }
.shaltari-current-gate-network .builder-help { margin-top:.55rem; }
/* Native-scale desktop density: pack information through layout and rhythm,
   while leaving the touch-sized constrained layout unchanged. */
@media (min-width: 1100px) {
  [data-builder-density="desktop"] { font-size:.94rem; }
  .builder-workspace-regions { gap:.75rem; }
  .active-group-plan { padding:.5rem; }
  .plan-group-commander, .plan-starting-rm, .plan-carrier-relationships,
  .plan-auxiliary-relationships { margin:.45rem 0; padding:.5rem; }
  .group-add-multipicker { padding:.5rem; }
  .group-add-multipicker-grid { gap:.65rem; }
  .group-add-choice-list { gap:.3rem; }
  .group-add-squad-row, .group-add-transport-row { padding:.4rem .5rem; }
  .group-add-mixed-variant { padding:.35rem .45rem; }
  .group-add-multipicker-actions { gap:.3rem; }
  .group-add-multipicker button, .group-add-multipicker input,
  .group-add-multipicker select { min-height:38px; }
  .unit-identity .unit-art { width:60px; height:60px; flex-basis:60px; }
  .unit-stat-strip { gap:.35rem .7rem; margin:.45rem 0; }
  .group-slot { min-height:3.5rem; }
}
@media (min-width: 1400px) {
  [data-builder-density="desktop"] { font-size:.92rem; }
  main { width:min(1840px, calc(100% - 64px)); }
  .builder-workspace-regions[data-workspace-desktop="simultaneous"] { gap:.9rem; }
  .group-add-multipicker-grid { gap:.8rem; }
  .group-add-mixed-variants { gap:.45rem; }
}

/* 0.9 Compact Unit primitives. Faction identity is separate from candidate state. */
[data-unit-component][data-unit-density="compact"] {
    --unit-accent: var(--ui-accent);
    min-width: 0;
    color: var(--ui-text);
}
[data-unit-component][data-unit-faction="ucm"] { --unit-accent: var(--faction-ucm); }
[data-unit-component][data-unit-faction="phr"] { --unit-accent: var(--faction-phr); }
[data-unit-component][data-unit-faction="scourge"] { --unit-accent: var(--faction-scourge); }
[data-unit-component][data-unit-faction="shaltari"] { --unit-accent: var(--faction-shaltari); }
[data-unit-component][data-unit-faction="resistance"] { --unit-accent: var(--faction-resistance); }
[data-unit-component][data-unit-faction="bioficer"] { --unit-accent: var(--faction-bioficer); }
.unit-identity { min-width: 0; border-inline-start: 2px solid var(--unit-accent); padding-inline-start: .65rem; }
.unit-identity { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .75rem; }
.unit-identity .reference-identity { font-size: 1.05rem; font-weight: 700; color: var(--ui-text); }
.unit-identity-link { display:flex; flex:1 1 16rem; min-width:0; align-items:center; gap:.75rem; color:inherit; text-decoration:none; border-radius:.4rem; padding:.25rem; }
.unit-identity-link:hover { background:color-mix(in srgb,var(--unit-accent) 16%,transparent); color:var(--ui-text); }
.unit-identity-link:focus-visible { outline:2px solid var(--unit-accent); outline-offset:2px; }
.unit-identity-link:visited, .group-add-mixed-variant-name:visited { color:var(--unit-accent); }
.unit-identity .unit-art { object-fit: contain; width: 72px; height: 72px; flex: 0 0 72px; }
.unit-identity-meta { display: flex; flex-wrap: wrap; gap: .35rem .7rem; margin: .35rem 0 0; color: var(--ui-muted); font-size: .85rem; }
.unit-identity-meta { flex-basis: 100%; }
.unit-reference-action, .compact-reference-action { display: inline-flex; align-items: center; justify-content: center; gap: .35rem; min-height: 40px; min-width: 40px; padding: .45rem .65rem; color: var(--ui-muted); border: 1px solid var(--ui-border); border-radius: .35rem; font-size: .82rem; text-decoration: none; }
.unit-reference-action:hover, .compact-reference-action:hover { color: var(--unit-accent); border-color: var(--unit-accent); }
.unit-reference-icon { display: inline-block; width: .75rem; height: .75rem; border: 2px solid currentColor; border-radius: 50%; position: relative; flex: 0 0 auto; }
.unit-reference-icon::after { content: ""; position: absolute; width: .4rem; height: 2px; background: currentColor; right: -.32rem; bottom: -.16rem; transform: rotate(45deg); transform-origin: left center; }
.unit-stat-strip { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1.1rem; margin: .8rem 0; }
.unit-stat-strip .unit-stat { display: grid; gap: .15rem; }
.unit-stat-strip dt { font-size: .75rem; color: var(--ui-muted); }
.unit-stat-strip dd { margin: 0; font-size: 1.2rem; font-weight: 750; font-variant-numeric: tabular-nums; }
.unit-stat-strip .unit-stat-load { border-inline-start: 1px solid var(--ui-border); padding-inline-start: 1rem; }
.transport-symbol { display:inline-flex; align-items:center; gap:.16rem; font-variant-numeric:tabular-nums; font-weight:700; }
.transport-symbol-square { color:var(--transport-square-color); }
.transport-symbol-triangle { color:var(--transport-triangle-color); }
.transport-symbol-inverted-triangle { color:var(--transport-inverted-triangle-color); }
.transport-symbol-circle { color:var(--transport-circle-color); }
.transport-symbol-diamond { color:var(--transport-diamond-color); }
.transport-symbol-pentagon { color:var(--transport-pentagon-color); }
.transport-symbol > span:first-child { font-size:1.15em; line-height:1; }
.transport-relationship { display:inline-flex; flex-wrap:wrap; align-items:center; gap:.2rem .35rem; }
.transport-relationship-capacity { display:inline-flex; align-items:center; gap:.25rem; white-space:nowrap; }
.group-add-mixed-parent-identity { display:flex; align-items:center; gap:.45rem; margin-bottom:.4rem; }
.group-add-mixed-parent-identity .reference-identity { font-weight:700; }
[data-focus-squad-row][data-focused="true"] { outline:2px solid var(--ui-accent); outline-offset:3px; }
[data-unit-configuration] { min-width: 0; }
[data-unit-component] [data-unit-variant] {
    min-width: 0;
    color: var(--ui-muted);
    background: var(--ui-bg);
    border: 1px solid var(--ui-border);
    border-inline-start-width: 3px;
}
[data-unit-variant] .unit-variant-points { font-size: .8rem; font-weight: 400; white-space: nowrap; }
[data-unit-component] [data-unit-selected="true"] {
    color: var(--ui-text);
    border-color: var(--unit-accent);
    background: color-mix(in srgb, var(--unit-accent) 9%, var(--ui-bg));
    box-shadow: inset 3px 0 var(--unit-accent);
}
[data-unit-component] [data-unit-variant]:focus-within { outline: 1px solid var(--unit-accent); outline-offset: 2px; }
[data-unit-component] .group-add-mixed-variant-identity { flex-wrap: wrap; }
.unit-variant-signature { flex-basis:100%; color:var(--ui-muted); font-size:.78rem; font-style:italic; }
.group-add-gate-identity { min-width:0; display:grid; gap:.2rem; }
.group-add-gate-identity .reference-identity { min-width:0; }
.group-add-gate-logistics { color:var(--transport-capacity-color); font-weight:700; }
[data-card-role="gate"] .reference-identity:visited,
[data-card-role="transport"] .reference-identity:visited { color:var(--unit-accent); }
[data-builder-disclosure="weapons-rules"] { position:static; display:block; min-width:0; max-width:none; }
[data-builder-disclosure="weapons-rules"] > summary { display:inline-flex; max-width:100%; }
.builder-disclosure-body { width:100%; box-sizing:border-box; padding:.45rem .6rem; border-block-start:1px solid var(--ui-border); color:var(--ui-muted); overflow-wrap:anywhere; }
.builder-disclosure-body p { margin:.25rem 0; }
[data-unit-component] .compact-reference-action { justify-self: end; }
[data-unit-component] .group-add-squad-upgrade-selector { grid-column: 1 / -1; }
[data-unit-component] .quantity-stepper input { width: 3rem; min-width: 0; }
[data-unit-component] .quantity-stepper button { min-width: 2rem; min-height: 2.5rem; }
[data-unit-component] [data-unit-configuration] > .primary-action { margin-top: .6rem; }
/* Builder glue: reflow within the catalogue column, including narrow desktop panes. */
[data-unit-component] .group-add-squad-row-heading { min-width: 0; width: 100%; }
[data-unit-component] .group-add-squad-primary-line { display: flex; flex-wrap: wrap; gap: .4rem 1rem; align-items: center; }
[data-unit-component] .group-add-edit-squad-form { flex-basis: 100%; min-width: 0; }
[data-unit-component] .group-add-mixed-variants { grid-template-columns: repeat(auto-fit, minmax(min(100%, 19rem), 1fr)); }
@media (max-width: 480px) {
    [data-unit-component] .unit-identity { flex-basis: 100%; }
    [data-unit-component] .group-add-mixed-variant { gap: .5rem; }
    [data-unit-component] .group-add-mixed-variant-identity { display: grid; grid-template-columns: minmax(0, 1fr) auto; }
    [data-unit-component] .unit-variant-points { grid-column: 1; }
    [data-unit-component] .candidate-reference { grid-column: 2; grid-row: 1 / 3; }
    [data-unit-component] [data-unit-configuration] > .primary-action { width: 100%; }
}

/* One compact Army Status surface across Builder breakpoints. */
.army-status-compact { margin-top: 12px !important; padding: 0 !important; max-height: none !important; overflow: visible !important; }
.army-status-compact > .army-status-summary { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .9rem; width:100%; min-height:44px; padding:.45rem .65rem; list-style:none; cursor:pointer; text-align:start; }
.army-status-compact > .army-status-summary::-webkit-details-marker { display: none; }
.army-status-context, .army-status-metric, .army-status-rules, .army-status-details { display: inline-flex; align-items: center; gap: .35rem; min-height: 32px; }
.army-status-faction-compact { display:none; }
.army-status-context { margin-right: auto; color: var(--ui-muted); }
.army-status-title { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.army-status-context strong { color: var(--ui-text); }
.army-status-label { color: var(--ui-muted); font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; }
.army-status-metric strong { font-variant-numeric: tabular-nums; }
.army-status-rules { padding-inline-start: .7rem; border-inline-start: 1px solid var(--ui-border); }
.army-status-details { color: var(--ui-accent); font-weight: 650; white-space: nowrap; }
.army-status-chevron { font-size: 1.1rem; line-height: 1; }
.army-status-compact .army-header-title { margin:0; padding:.65rem .8rem 0; }
.army-status-compact .army-summary-grid { display:flex; flex-wrap:wrap; gap:.35rem 1rem; padding:.65rem .8rem 0; }
.army-status-compact .summary-card { min-height:0; padding:0; border:0; background:transparent; }
.army-status-compact .summary-label { display:inline; margin:0 .35rem 0 0; font-size:.72rem; }
.army-status-compact .summary-value { display:inline; }
.army-status-compact .rules-status { margin:.65rem .8rem .8rem; padding:.65rem .8rem; max-height:min(32dvh,22rem); overflow:auto; }
.army-details-overlay { position:fixed; inset-block-start:var(--shared-shell-height,6.5rem); inset-inline:0; inset-block-end:0; z-index:var(--layer-curtain); display:grid; place-items:start center; padding:.75rem; background:color-mix(in srgb,var(--ui-bg) 68%,transparent); overflow:auto; }
.army-details-overlay[hidden] { display:none; }
.army-details-overlay-panel { width:min(48rem,100%); max-height:calc(100dvh - var(--shared-shell-height,6.5rem) - 1.5rem); overflow:auto; padding:.75rem; background:var(--ui-surface); border:1px solid var(--ui-border); border-radius:.5rem; box-shadow:0 .8rem 2rem rgba(0,0,0,.28); }
.army-details-overlay-header { display:flex; align-items:center; justify-content:space-between; gap:.75rem; margin:-.25rem -.25rem .5rem; padding:.25rem .25rem .5rem; border-bottom:1px solid var(--ui-border); }
.army-details-overlay-header h2 { margin:0; }
.army-status-details-body { margin:0; }
.army-details-overlay .army-status-details-body .rules-status { display:grid; grid-template-columns:repeat(auto-fit,minmax(12rem,1fr)); gap:.5rem 1rem; margin:0; max-height:none; overflow:visible; }
.plan-group-header { display:flex; flex-wrap:wrap; align-items:baseline; gap:.35rem .8rem; margin-bottom:.7rem; padding-bottom:.55rem; border-bottom:1px solid var(--ui-border); }
.plan-group-header h3, .plan-group-header p { margin:0; }
.plan-group-header p { color:var(--ui-muted); font-size:.9rem; }
.plan-group-header [data-plan-group-points] { margin-left:auto; font-variant-numeric:tabular-nums; }
.plan-group-commander, .plan-starting-rm, .plan-carrier-relationships, .plan-auxiliary-relationships { margin:.7rem 0; padding:.65rem; border-left:2px solid var(--ui-accent); background:color-mix(in srgb,var(--ui-surface) 72%,transparent); }
.plan-group-commander h4, .plan-starting-rm h4, .plan-carrier-relationships h4, .plan-auxiliary-relationships h4 { margin:.1rem 0 .45rem; }
[data-gate-component], .gate-choice-compact { min-width:0; display:grid; grid-template-columns:minmax(0,1fr) auto; gap:.35rem .65rem; align-items:center; padding:.5rem; border-block-start:2px solid var(--faction-shaltari); }
[data-gate-component] .group-add-gate-identity, .gate-choice-compact .group-add-gate-identity { min-width:0; }
[data-gate-component] form, .gate-choice-compact form { grid-column:1 / -1; display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:.35rem .55rem; min-width:0; }
[data-gate-component] .group-add-gate-logistics, .gate-choice-compact .group-add-gate-logistics { justify-self:end; white-space:nowrap; }
.plan-unit-logistics { display:flex; flex-wrap:wrap; gap:.35rem .65rem; align-items:center; }
.plan-commander-add { margin-top:.45rem; }
.plan-commander-add > summary { cursor:pointer; color:var(--ui-accent); }
.plan-unit-logistics { margin:.4rem 0; color:var(--ui-muted); font-size:.88rem; }
@media (max-width: 850px) { .army-details-overlay-panel { max-height:calc(100dvh - var(--shared-shell-height,6.5rem) - .75rem); } }
@media (max-width: 520px) { .army-status-compact > .army-status-summary { gap: .15rem .6rem; padding: .35rem .5rem; } .army-status-context { flex-basis: 100%; margin-right: 0; } .army-status-metric, .army-status-rules, .army-status-details { min-height: 32px; } .army-status-rules { padding-inline-start: .55rem; } .army-status-compact .army-header-title { padding-inline: .6rem; } .army-status-compact .army-summary-grid { padding-inline: .6rem; } .army-status-compact .rules-status { margin-inline: .6rem; } }
@media (max-width: 480px) {
  .army-status-compact > .army-status-summary { flex-wrap: nowrap; gap: .15rem .35rem; padding: .25rem .35rem; font-size: .78rem; overflow:hidden; }
  .army-status-context { flex:1 1 auto; flex-basis:auto; min-width:0; margin-right:0; gap:.2rem; white-space:nowrap; }
  .army-status-context > strong { min-width:0; overflow:hidden; text-overflow:ellipsis; }
  .army-status-metric, .army-status-rules { flex:0 1 auto; min-width:0; gap:.2rem; white-space:nowrap; }
  .army-status-metric strong, .army-status-rules strong { font-size:.9em; }
  .army-status-label { font-size:.64rem; letter-spacing:.04em; }
  .army-status-rules { padding-inline-start:.35rem; }
  .army-status-faction-full { display:none; }
  .army-status-faction-compact { display:inline; }
}

/* Builder catalogue contract: identity, compatibility and content are
   separate channels.  This block is intentionally last so the catalogue
   cannot inherit the older candidate-border treatments above. */
:root {
  --compat-green-surface: #1a442b;
  --compat-yellow-surface: #554313;
  --compat-red-surface: #562329;
  --compat-green-ink: #effff3;
  --compat-yellow-ink: #fff8df;
  --compat-red-ink: #fff0ef;
}
:root[data-theme="light"] {
  --compat-green-surface: #b9e7c4;
  --compat-yellow-surface: #ffdc70;
  --compat-red-surface: #efb5b5;
  --compat-green-ink: #103b1c;
  --compat-yellow-ink: #493000;
  --compat-red-ink: #551212;
}

/* Every catalogue marker, including the legend, has one geometry. */
.group-add-state-marker,
.group-add-compatibility-guide .group-add-state-marker {
  display:inline-grid;
  place-items:center;
  inline-size:20px;
  block-size:20px;
  min-inline-size:20px;
  min-block-size:20px;
  margin-inline-end:.2rem;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  line-height:1;
  vertical-align:middle;
}
.group-add-state-marker-green { color:var(--semantic-exact); }
.group-add-state-marker-yellow { color:var(--semantic-warning); }
.group-add-state-marker-red { color:var(--semantic-invalid); }
:is(.group-add-squad-row, .group-add-transport-row) > .group-add-state-marker { color:inherit; }

/* Compatibility owns the surface and text contrast; it never owns the
   faction identity rails. */
:is(.group-add-squad-row, .group-add-transport-row)[data-candidate-state="green"] {
  background:var(--compat-green-surface);
  color:var(--compat-green-ink);
}
:is(.group-add-squad-row, .group-add-transport-row)[data-candidate-state="yellow"] {
  background:var(--compat-yellow-surface);
  color:var(--compat-yellow-ink);
}
:is(.group-add-squad-row, .group-add-transport-row)[data-candidate-state="red"] {
  background:var(--compat-red-surface);
  color:var(--compat-red-ink);
}
:is(.group-add-squad-row, .group-add-transport-row)[data-candidate-state] {
  border-block-color:var(--ui-border);
}
:is(.group-add-squad-row, .group-add-transport-row)[data-candidate-state] :is(.group-add-choice-meta, .configured-points) {
  color:inherit;
}

/* Canonical faction identity placement.  The same --unit-accent token is
   populated from the faction token in both themes. */
[data-entity-card][data-card-role="squad"],
[data-unit-component][data-card-role="squad"] {
  border-inline-start:3px solid var(--unit-accent, var(--ui-accent)) !important;
  border-inline-end:0 !important;
}
[data-entity-card][data-card-role="transport"],
[data-unit-component][data-card-role="transport"] {
  border-inline-start:3px solid var(--unit-accent, var(--ui-accent)) !important;
  border-inline-end:3px solid var(--unit-accent, var(--ui-accent)) !important;
}
[data-entity-card][data-card-role="auxiliary-transport"],
[data-unit-component][data-card-role="auxiliary-transport"] {
  border-inline-start:3px solid var(--unit-accent, var(--ui-accent)) !important;
  border-inline-end:0 !important;
  border-block-start:3px solid var(--unit-accent, var(--ui-accent)) !important;
}

/* A catalogue entry is one surface.  Forms and layout regions stay
   transparent so the compatibility tint remains visible through the card. */
:is(.group-add-squad-row, .group-add-transport-row) :is(form, .group-add-choice-main, .group-add-transport-profile, .group-add-transport-control-band) {
  background:transparent;
}
.group-add-transport-row[data-transport-row-layout] :is(.group-add-choice-main, .group-add-inline-transport-form) {
  border:0;
  box-shadow:none;
}
.group-add-transport-row[data-transport-row-layout] .group-add-transport-profile {
  border-block-start-color:color-mix(in srgb, currentColor 28%, transparent);
}

/* Plan and Group Structure use the same body-level faction accent channel. */
.active-group-plan[data-builder-pane="plan"],
.group-slot-strip .group-slot-active {
  border-inline-start-color:var(--ui-accent);
}

/* Mixed-family rows keep identity, signature and quantity controls in separate
   grid areas on narrow screens; no text is positioned over another control. */
@media (max-width: 480px) {
  [data-unit-component] .group-add-mixed-variant {
    grid-template-columns:minmax(0,1fr) auto;
    grid-template-areas:"identity controls" "signature controls";
    align-items:start;
  }
  [data-unit-component] .group-add-mixed-variant-identity {
    grid-area:identity;
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:.15rem .45rem;
    min-width:0;
  }
  [data-unit-component] .group-add-mixed-variant-signature {
    grid-area:signature;
    min-width:0;
    max-width:100%;
    overflow-wrap:anywhere;
    line-height:1.2;
  }
  [data-unit-component] .group-add-mixed-variant-controls {
    grid-area:controls;
    align-self:start;
    flex-wrap:nowrap;
    min-width:max-content;
  }
}

.active-army-header { margin:0; }
.active-army-header > .army-status-compact { margin-top:0 !important; }
.shared-shell .shared-toolbar { margin:0; }
.shared-shell .army-header { margin:0; padding:.35rem .5rem; }
.shared-shell .army-status-compact { position:static; z-index:auto; }
.shared-shell ~ main { padding-block-start:var(--shared-shell-height,6.5rem); }
.active-army-semantic-title { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.shared-version { color: var(--ui-muted); font-size: .82em; }
.builder-catalogue-selector { display:flex; flex-wrap:wrap; gap:.35rem; margin:.45rem 0 .65rem; }
.builder-catalogue-selector .action-chip { min-height:2.1rem; padding:.25rem .65rem; }
.builder-catalogue-selector .action-chip.is-selected,
.builder-catalogue-selector .action-chip[aria-current="page"] { border-color:var(--unit-accent, var(--ui-accent)); background:color-mix(in srgb,var(--ui-accent) 16%,transparent); color:var(--ui-text); }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.quantity-fixed { display:inline-flex; align-items:center; gap:.25rem; min-height:2rem; padding:.2rem .45rem; color:var(--ui-muted); border:1px solid var(--ui-border); border-radius:var(--action-radius); font-variant-numeric:tabular-nums; }
@media (max-width:480px) { .builder-catalogue-selector { position:sticky; top:0; z-index:var(--layer-content); background:var(--ui-bg); padding:.25rem 0; } .builder-catalogue-selector .action-chip { flex:1 1 8rem; } }

/* Entity role rails are semantic decoration: faction identity remains the
   colour source, while the role is also exposed in the card's text/markup. */
[data-entity-card][data-card-role], [data-unit-component][data-card-role] { position:relative; }
[data-entity-card][data-card-role="squad"], [data-unit-component][data-card-role="squad"],
[data-entity-card][data-card-role="auxiliary-transport"], [data-unit-component][data-card-role="auxiliary-transport"] { border-inline-start:3px solid var(--unit-accent, var(--ui-accent)); }
[data-entity-card][data-card-role="transport"], [data-unit-component][data-card-role="transport"] { border-inline-end:3px solid var(--unit-accent, var(--ui-accent)); }
[data-entity-card][data-card-role="auxiliary-transport"], [data-unit-component][data-card-role="auxiliary-transport"] { border-inline-end:3px solid var(--unit-accent, var(--ui-accent)); }
[data-entity-card][data-card-role="gate"], [data-unit-component][data-card-role="gate"] { border-block-start:3px solid var(--unit-accent, var(--ui-accent)); }
[data-entity-card][data-card-role="transport"] .group-add-choice-detail { color:var(--transport-capacity-color); }
.active-group-plan button,
.active-group-plan [data-plan-transport-action] a {
  display:inline-flex; align-items:center; justify-content:center; min-height:2rem;
  padding:.25rem .5rem; border:1px solid var(--ui-border); border-radius:var(--action-radius);
  background:transparent; color:var(--ui-accent); font:inherit; text-decoration:none; cursor:pointer;
}
.active-group-plan button:hover, .active-group-plan button:focus-visible,
.active-group-plan [data-plan-transport-action] a:hover,
.active-group-plan [data-plan-transport-action] a:focus-visible {
  background:color-mix(in srgb,var(--ui-accent) 14%,transparent); color:var(--ui-text);
}
.active-group-plan form[action$="/remove"] button,
.active-group-plan form[action*="/remove/"] button { color:var(--semantic-invalid); }
.active-group-plan [data-plan-transport-action] { margin:.25rem 0; }

/* Catalogue actions share the same visual hierarchy while retaining native
   form semantics and the existing compatibility state markers. */
.group-add-multipicker [data-entity-card] button,
.group-add-multipicker [data-entity-card] input[type="submit"] {
  min-height:2rem; padding:.25rem .5rem; border-radius:var(--action-radius);
  font:inherit; cursor:pointer;
}
.group-add-multipicker [data-entity-card] .primary-action,
.group-add-multipicker [data-entity-card] button[type="submit"] {
  border:1px solid var(--unit-accent, var(--ui-accent));
  background:var(--unit-accent, var(--ui-accent)); color:var(--ui-bg); font-weight:650;
}
.group-add-multipicker [data-entity-card] .primary-action:hover,
.group-add-multipicker [data-entity-card] .primary-action:focus-visible,
.group-add-multipicker [data-entity-card] button[type="submit"]:hover,
.group-add-multipicker [data-entity-card] button[type="submit"]:focus-visible { filter:brightness(1.08); }

@media (min-width:1100px) {
  /* The selected catalogue owns the Build column; closed alternatives do not
     consume a second narrow desktop column. */
  .group-add-multipicker-grid > [data-add-units-section="catalogue"] { grid-column:1 / -1; }
  .group-add-squad-category .group-add-choice-list,
  .group-add-gate-list { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .group-add-choice-list > .builder-compact-mixed-card,
  .group-add-transport-row[data-transport-span="wide"] { grid-column:1 / -1; }
  .group-add-squad-category .group-add-choice-list >
  .builder-compact-card[data-card-role="auxiliary-transport"] { grid-column:1 / -1; }
}

.shaltari-no-group-gates { margin-top:.8rem; }
.account-disclosure { margin-top:.35rem; padding:.35rem; border-top:1px solid var(--ui-border); }
.account-disclosure > summary { cursor:pointer; color:var(--ui-accent); }
.account-panel-toggle { position:absolute; inline-size:1px; block-size:1px; overflow:hidden; clip-path:inset(50%); }
.account-panel-tab { display:inline-block; margin:.25rem .25rem .45rem 0; padding:.3rem .5rem; color:var(--ui-accent); cursor:pointer; border:1px solid transparent; border-radius:var(--action-radius); }
.account-panel-toggle:checked + .account-panel-tab { border-color:var(--ui-accent); background:color-mix(in srgb,var(--ui-accent) 14%,transparent); }
.account-panel { margin-top:.15rem; padding:.45rem; background:color-mix(in srgb,var(--ui-surface) 78%,var(--ui-bg)); }
.account-panel-register { display:none; }
#account-register-view:checked ~ .account-panel-login { display:none; }
#account-register-view:checked ~ .account-panel-register { display:block; }
.account-panel-tab:focus-within, .account-panel-toggle:focus-visible + .account-panel-tab { outline:2px solid var(--ui-accent); outline-offset:2px; }
.group-slot-strip { grid-template-columns:repeat(auto-fit,minmax(10rem,1fr)); }
.group-slot { min-width:10rem; overflow-wrap:normal; word-break:normal; }
.group-slot-add button { min-height:2rem; padding:var(--action-padding); border:1px solid var(--ui-accent); border-radius:var(--action-radius); background:transparent; color:var(--ui-accent); font:inherit; cursor:pointer; }
.builder-action-error { display:flex; flex-wrap:wrap; align-items:baseline; gap:.25rem .45rem; inline-size:100%; max-inline-size:100%; margin:.45rem 0 0; padding:.45rem .55rem; color:var(--ui-text); background:color-mix(in srgb,var(--semantic-invalid) 16%,transparent); border:1px solid color-mix(in srgb,var(--semantic-invalid) 60%,var(--ui-border)); border-radius:.35rem; overflow-wrap:normal; word-break:normal; }
.builder-action-error-summary { color:var(--semantic-invalid); font-weight:700; }
.builder-action-error-message { color:var(--ui-text); }
.builder-action-error-code { color:var(--ui-muted); font-size:.78em; }
.plan-commander-physical-row { color:var(--ui-text); font-weight:650; }
@media (max-width:850px) { .group-slot-strip { display:flex; overflow-x:auto; } .group-slot { min-width:7rem; flex:0 0 7rem; } }

@media (min-width: 768px) {
  [data-unit-component] .group-add-mixed-variant { grid-template-columns:minmax(0,1fr) max-content; align-items:start; }
  [data-unit-component] .group-add-mixed-variant-identity { grid-template-columns:minmax(0,1fr) auto; min-width:0; }
  [data-unit-component] .group-add-mixed-variant-signature { min-width:0; overflow-wrap:anywhere; }
  [data-unit-component] .group-add-mixed-variant-controls { min-width:max-content; flex:0 0 auto; }
}

/* Browse mixed-family proof card. These reusable mixed-card regions compact
   the canonical form without changing its fields or submission behavior. */
[data-builder-context="browse"][data-builder-card-kind="squad"].builder-compact-card {
  display:block;
  padding:.5rem .6rem;
  border-inline-start:3px solid var(--unit-accent, var(--ui-accent));
}
[data-builder-context="browse"][data-builder-card-kind="squad"].builder-compact-card > .group-add-state-marker { float:inline-start; margin:.25rem .45rem 0 0; }
.builder-compact-card .group-add-squad-row-heading { min-width:0; }
.builder-compact-card .group-add-squad-primary-line {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  grid-template-areas:"identity disclosure" "profile disclosure" "options options";
  gap:.2rem .55rem;
  align-items:center;
}
.builder-compact-card .catalogue-card-identity { grid-area:identity; min-width:0; }
.builder-compact-card .catalogue-card-stats { grid-area:profile; min-width:0; }
.builder-compact-card .catalogue-card-options { grid-area:options; min-width:0; }
.builder-compact-card .unit-identity-compact-link { min-width:0; }
.builder-compact-card .unit-stat-strip { margin:.1rem 0; gap:.25rem .65rem; }
.builder-compact-card .unit-stat-strip .unit-stat {
  display:inline-flex;
  align-items:baseline;
  gap:.2rem;
  min-width:max-content;
}
.builder-compact-card .unit-stat-strip .unit-stat dd { font-size:1rem; }
.builder-compact-card .unit-identity .unit-art { width:48px; height:48px; flex-basis:48px; }
.builder-compact-card .unit-identity-link { gap:.45rem; padding:.15rem; }
.builder-compact-card .unit-identity-meta { gap:.15rem .45rem; margin:.15rem 0 0; font-size:.78rem; }
.builder-compact-card .unit-identity .reference-identity { font-size:1rem; }
.group-add-transport-row .group-add-choice-main,
.group-add-transport-row .catalogue-card-options,
.group-add-transport-row .catalogue-card-stats { min-width:0; }
.builder-compact-card .candidate-help { grid-area:disclosure; margin:0; align-self:start; }
.builder-compact-card .candidate-help > summary { min-height:2rem; padding:.25rem .4rem; white-space:nowrap; }
.builder-compact-card .group-add-mixed-squad-form { margin-top:.35rem; }
.builder-compact-card .group-add-mixed-variants { gap:.25rem; }
.builder-compact-card .group-add-mixed-variant {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:.15rem .45rem;
  align-items:center;
  padding:.25rem .35rem;
  border:0;
  border-inline-start:2px solid var(--ui-border);
  border-radius:0;
  background:transparent;
}
.builder-compact-card [data-unit-selected="true"] { border-inline-start-color:var(--unit-accent); box-shadow:none; }
.builder-compact-card .group-add-mixed-variant-identity {
  display:grid;
  grid-template-columns:minmax(0,1fr) max-content;
  grid-template-areas:"name meta" "signature signature";
  gap:.15rem .5rem;
  align-items:baseline;
  min-width:0;
}
.builder-compact-card .catalogue-option-name { min-width:0; }
.builder-compact-card .group-add-mixed-variant-name {
  grid-area:name;
  min-width:0;
  white-space:normal;
  overflow-wrap:normal;
  word-break:normal;
}
.builder-compact-card .catalogue-option-meta,
.builder-compact-card .unit-variant-points { grid-area:meta; font-size:.78rem; white-space:nowrap; }
.builder-compact-card .unit-variant-signature {
  grid-column:auto;
  min-width:0;
  overflow-wrap:anywhere;
  color:var(--ui-muted);
  font-size:.75rem;
  font-style:normal;
  line-height:1.15;
}
.builder-compact-card .group-add-mixed-variant-controls { min-width:max-content; gap:0; }
.builder-compact-card .catalogue-option-controls {
  grid-column:2;
  grid-row:1;
  min-width:max-content;
  justify-self:end;
}
.builder-compact-card .catalogue-option-options {
  grid-column:1 / -1;
  min-width:0;
}
.builder-compact-card .group-add-mixed-variant-signature {
  grid-area:signature;
}
.builder-compact-card .group-add-mixed-variant-controls button,
.builder-compact-card .group-add-mixed-variant-controls input {
  min-width:1.7rem;
  width:1.9rem;
  min-height:1.8rem;
  height:1.8rem;
  padding:.1rem .2rem;
  font-size:.9rem;
}
.builder-compact-card .group-add-mixed-variant-controls button { border-radius:0; }
.builder-compact-card .group-add-squad-upgrade-selector { grid-column:1 / -1; display:flex; flex-wrap:wrap; gap:.2rem; margin:.1rem 0 0; }
.builder-compact-card .group-add-squad-upgrade-choice.select-chip { min-height:1.8rem; padding:.15rem .4rem; font-size:.76rem; }
.builder-compact-card .group-add-squad-upgrade-help { margin:0; }
.builder-compact-card .group-add-squad-upgrade-help > summary { min-height:1.8rem; padding:.15rem .35rem; }
.builder-compact-card [data-builder-region="configuration"] > .primary-action,
.builder-compact-card > .primary-action { min-height:2rem; margin-top:.35rem; padding:.25rem .65rem; font-size:.9rem; }
.builder-compact-card .catalogue-card-actions {
  display:flex;
  justify-content:flex-end;
  min-width:0;
  margin-top:.35rem;
}
.builder-compact-card .group-add-quick-squad-form {
  display:grid;
  grid-template-columns:minmax(0,1fr) max-content;
  grid-template-areas:"quantity actions" "options options";
  gap:.3rem .55rem;
  align-items:center;
  width:100%;
  min-width:0;
  margin-top:.35rem;
}
.builder-compact-card .group-add-quick-squad-form > .catalogue-card-quantity {
  grid-area:quantity;
  min-width:0;
}
.builder-compact-card .group-add-quick-squad-form > .catalogue-card-options {
  grid-area:options;
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:.2rem .35rem;
  min-width:0;
}
.builder-compact-card .group-add-quick-squad-form > .catalogue-card-actions {
  grid-area:actions;
  align-self:end;
  margin-top:0;
}
.builder-compact-card .group-add-quick-squad-form .group-add-squad-upgrade-selector {
  min-width:0;
}

/* Roster density: selected units are review rows, not catalogue cards. */
[data-roster] { min-width:0; }
[data-roster-density="roster"] { display:grid; gap:.15rem; }
[data-roster-row] {
  min-width:0;
  max-inline-size:100%;
  display:grid;
  grid-template-columns:2.75rem minmax(0,1.15fr) minmax(0,1.7fr) max-content max-content max-content;
  grid-template-areas:"art identity composition logistics points actions";
  gap:.15rem .55rem;
  align-items:center;
  min-height:3rem;
  padding:.2rem .35rem;
  border-inline-start:2px solid var(--unit-accent, var(--ui-accent));
  background:color-mix(in srgb,var(--ui-surface) 72%,transparent);
}
[data-roster-row][data-roster-kind="transport"] { min-height:1.8rem; padding-block:.08rem; border-inline-start-width:1px; background:transparent; }
[data-roster-row][data-roster-kind="auxiliary-transport"] { border-inline-start-color:var(--semantic-advisory); background:transparent; }
[data-roster-region="art"] { grid-area:art; min-width:0; }
[data-roster-region="art"] .unit-art-small,.roster-row-art .unit-art-small { width:2.35rem; height:2.35rem; flex-basis:2.35rem; }
[data-roster-row][data-roster-kind="transport"] .unit-art-small { width:1.8rem; height:1.8rem; flex-basis:1.8rem; }
[data-roster-region="identity"] { grid-area:identity; min-width:0; }
.review-roster-identity { min-width:0; overflow-wrap:normal; word-break:normal; }
.review-roster-identity .roster-identity-link { overflow-wrap:normal; word-break:normal; }
[data-roster-region="identity"] .reference-identity { min-width:0; gap:.3rem; }
[data-roster-region="identity"] strong { overflow-wrap:normal; word-break:normal; }
[data-roster-region="composition"] { grid-area:composition; min-width:0; display:flex; flex-wrap:wrap; gap:.1rem .55rem; }
.roster-composition-line { min-width:0; }
.roster-composition-line em { margin-inline-start:.3rem; color:var(--ui-muted); font-style:normal; white-space:nowrap; }
.roster-commander-model { font-weight:650; }
[data-roster-region="logistics"] { grid-area:logistics; white-space:nowrap; font-variant-numeric:tabular-nums; }
[data-roster-region="points"] { grid-area:points; white-space:nowrap; font-variant-numeric:tabular-nums; font-weight:650; }
[data-roster-region="actions"] { grid-area:actions; min-width:max-content; display:flex; align-items:center; justify-content:flex-end; gap:.15rem; }
.roster-row-actions { display:flex; align-items:center; justify-content:flex-end; gap:.15rem; }
.roster-icon-action { display:inline-grid; place-items:center; min-width:2.25rem; min-height:2.25rem; padding:.2rem; color:var(--ui-text); background:transparent; border:1px solid transparent; font-size:1rem; line-height:1; text-decoration:none; cursor:pointer; }
.roster-icon-action:hover,.roster-icon-action:focus-visible { border-color:var(--ui-accent); color:var(--ui-accent); outline:2px solid color-mix(in srgb,var(--ui-accent) 40%,transparent); outline-offset:1px; }
.roster-action-form { display:inline-flex; margin:0; }
.roster-confirmation { position:relative; margin:0; }
.roster-confirmation:not([open]) > .roster-confirmation-body { display:none; }
.roster-confirmation > summary { list-style:none; }
.roster-confirmation > summary::-webkit-details-marker { display:none; }
.roster-confirmation-body { position:absolute; z-index:2; inset-inline-end:0; top:calc(100% + .2rem); display:flex; align-items:center; gap:.35rem; min-width:max-content; padding:.35rem .45rem; border:1px solid var(--ui-border); background:var(--ui-surface); box-shadow:0 .25rem .8rem rgb(0 0 0 / .3); }
.roster-confirmation-body form { display:flex; gap:.25rem; margin:0; }
.roster-confirmation-body button { min-height:2rem; padding:.2rem .45rem; }
.roster-remove-confirm { color:var(--semantic-invalid); }
.roster-muted { color:var(--ui-muted); }
.roster-relationship-mark { color:var(--ui-muted); font-size:1.1rem; }
.roster-row-nested { margin-inline-start:.5rem; }
.roster-transport-cargo,.roster-transport-children { margin-inline-start:0; padding-inline-start:.5rem; border-inline-start:1px solid var(--ui-border); }
.roster-transport-cargo .roster-row-squad { margin-inline-start:0; }
.roster-transport-children .roster-row-transport { margin-inline-start:0; }
.roster-cargo-summary { display:block; }
.roster-transport-relationships { margin-top:.5rem; padding-top:.35rem; border-top:1px solid var(--ui-border); }
.roster-transport-relationships > h4 { margin:.1rem 0 .2rem; }
.roster-commander-status { display:flex; flex-wrap:wrap; align-items:center; gap:.25rem .75rem; padding:.35rem 0; }
.roster-commander-status h4 { margin:0; }
.roster-commander-line { display:flex; align-items:center; justify-content:space-between; gap:.5rem; min-height:2.4rem; }
.plan-gate-advisories { display:flex; flex-wrap:wrap; gap:.25rem .65rem; align-items:baseline; padding:.3rem 0; color:var(--ui-muted); }
.plan-gate-advisories small { flex-basis:100%; }
.army-overview-group { position:relative; min-width:0; border:1px solid var(--ui-border); background:var(--ui-bg); }
.army-overview-group-link { display:block; color:inherit; text-decoration:none; }
.army-overview-group-link:hover,.army-overview-group-link:focus-visible { outline:2px solid var(--ui-accent); outline-offset:-2px; }
.army-overview-group-header { display:grid; grid-template-columns:minmax(0,1fr) max-content max-content; grid-template-areas:"identity points remove"; align-items:center; gap:.5rem; padding:.35rem .5rem; border-bottom:1px solid var(--ui-border); background:var(--ui-surface); }
.army-overview-group-title { min-width:0; overflow-wrap:normal; word-break:normal; }
.army-overview-group-points { white-space:nowrap; font-variant-numeric:tabular-nums; font-weight:650; }
.army-overview-group-header small { color:var(--ui-muted); }
.army-overview-group-title { grid-area:identity; }
.army-overview-group-points { grid-area:points; }
.army-overview-group-link > .roster { padding:.25rem .35rem; }
.army-overview-group-link .roster-row { pointer-events:none; }
.army-overview-gate-status,.army-overview-commander-status { padding:.2rem .5rem; color:var(--ui-muted); font-size:.82rem; }
.army-overview-remove { grid-area:remove; position:static; justify-self:end; min-width:2rem; }
.army-overview-remove .roster-icon-action { min-width:2rem; min-height:2rem; color:var(--semantic-invalid); }
.army-overview-group-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,24rem),1fr)); gap:.65rem; }

/* Transport candidates are compact browse choices: use the available Build
   column at tablet/desktop widths without changing squad catalogue cards. */
@media (min-width:768px) {
  .group-add-multipicker-transports > .group-add-catalogue-body > .group-add-choice-list {
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .group-add-multipicker-transports > .group-add-catalogue-body > .group-add-choice-list > [data-transport-span="wide"] {
    grid-column:1 / -1;
  }
}
@media (max-width:767px) {
  .group-add-multipicker-transports > .group-add-catalogue-body > .group-add-choice-list {
    grid-template-columns:minmax(0,1fr);
  }
}
[data-add-units-section="catalogue"][data-catalogue-active="false"] { display:none; }
.group-slot-strip { display:grid; grid-template-columns:repeat(auto-fit,minmax(13rem,1fr)); gap:.3rem; }
.group-slot { min-width:0; min-height:3.4rem; padding:.3rem .45rem; gap:.1rem .35rem; }
.group-slot-heading { align-items:baseline; gap:.35rem; }
.group-slot-heading strong { font-size:.86rem; }
.group-slot > span:not(.group-slot-heading) { font-size:.78rem; }
.group-slot-add { align-content:center; }
.group-slot-add button { min-height:1.8rem; padding:.15rem .4rem; }

@media (max-width:1099px) and (min-width:768px) {
  [data-roster-row] { grid-template-columns:2.5rem minmax(0,1fr) minmax(0,1.4fr) max-content max-content max-content; }
  [data-roster-region="composition"] { overflow-wrap:anywhere; }
}
@media (max-width:767px) {
  .group-slot-strip { display:flex; overflow-x:auto; }
  .group-slot { flex:0 0 8.5rem; min-width:8.5rem; min-height:3.1rem; }
  [data-roster-row] { grid-template-columns:2.5rem minmax(0,1fr) auto; grid-template-areas:"art identity points" "art composition composition" "art logistics actions"; align-items:start; min-height:0; padding:.3rem .35rem; gap:.12rem .4rem; }
  [data-roster-row][data-roster-kind="transport"] { grid-template-areas:"art identity points" "art composition actions" "art logistics actions"; }
  [data-roster-region="actions"] { align-self:center; }
  .roster-confirmation-body { position:fixed; inset-inline:1rem; top:auto; bottom:1rem; min-width:0; justify-content:space-between; }
  .roster-row-nested { margin-inline-start:.55rem; }
  .army-overview-group-grid { grid-template-columns:1fr; }
  .army-overview-group-header { grid-template-columns:minmax(0,1fr) max-content max-content; grid-template-areas:"identity points remove"; align-items:start; }
}
@media (max-width:480px) {
  .army-overview-group-header { grid-template-columns:minmax(0,1fr) max-content; grid-template-areas:"identity remove" "points remove"; }
  .builder-compact-card .group-add-squad-primary-line {
    grid-template-columns:minmax(0,1fr);
    grid-template-areas:"identity" "profile" "disclosure" "options";
    align-items:start;
  }
  .builder-compact-card .group-add-squad-primary-line > .builder-profile-help { grid-area:disclosure; }
  .builder-compact-card .unit-stat-strip { justify-content:flex-start; }
  .builder-compact-card .group-add-mixed-variant-identity { grid-template-columns:minmax(0,1fr) auto; grid-template-areas:"name points" "signature signature"; gap:.1rem .4rem; }
  .builder-compact-card .group-add-mixed-variant-name { grid-area:name; }
  .builder-compact-card .unit-variant-points { grid-area:points; }
  .builder-compact-card .unit-variant-signature { grid-area:signature; }
  .builder-compact-card .group-add-mixed-variant { align-items:start; }
  .builder-compact-card .group-add-mixed-variant-controls { align-self:start; }
  .builder-compact-card .group-add-quick-squad-form {
    grid-template-columns:minmax(0,1fr);
    grid-template-areas:"quantity" "options" "actions";
    align-items:start;
  }
  .builder-compact-card .group-add-quick-squad-form > .catalogue-card-actions { justify-self:end; }
  .builder-compact-card .candidate-help > summary { max-width:7rem; white-space:normal; text-align:start; }
}

/* Shared card language: Reference is the geometry baseline for Build, Review
   and Play. These rules control visual treatment only; each surface keeps its
   own layout and server-side interaction model. */
:is(.builder-entity-card, [data-entity-card], .reference-card,
       .reference-compact-card, .army-overview-group, .review-group,
       .review-hero, .review-gates, .digital-tactical-card,
       .gate-reference-card, .digital-orphan-card, .digital-gate-card) {
  border-radius:var(--card-radius);
  border-width:var(--card-border-width);
  background:var(--digital-health-bg, var(--ui-surface));
  color:var(--ui-text);
}
:is(.reference-card, .reference-compact-card, .army-overview-group,
       .review-group, .review-hero, .review-gates, .digital-tactical-card,
       .gate-reference-card) { border-color:var(--ui-border); }
body .group-slot.group-slot-ready { background:var(--state-ready-bg); border-color:var(--state-ready-border); color:var(--state-ready-text); }
body .group-slot.group-slot-incomplete,
body .group-slot.group-slot-advisory { background:var(--state-warning-bg); border-color:var(--state-warning-border); color:var(--state-warning-text); }
body .group-slot.group-slot-partial { background:var(--state-degraded-bg); border-color:var(--state-degraded-border); color:var(--state-degraded-text); }
body .group-slot.group-slot-error { background:var(--state-error-bg); border-color:var(--state-error-border); color:var(--state-error-text); }
body .group-slot.group-slot-commander { background:color-mix(in srgb, var(--ui-accent) 12%, var(--ui-surface)); border-color:var(--ui-accent); color:var(--ui-text); }
body .group-slot.group-slot-empty { background:var(--ui-bg); color:var(--ui-muted); }

/* Faction identity is structural decoration. Semantic state remains a
   separate background/text/border channel. */
[data-entity-card][data-card-role="squad"],
[data-unit-component][data-card-role="squad"] {
  border-inline-start:3px solid var(--unit-accent, var(--ui-accent));
  border-inline-end:0;
  border-block-start:var(--card-border-width) solid var(--ui-border);
}
[data-entity-card][data-card-role="transport"],
[data-unit-component][data-card-role="transport"] {
  border-inline-start:3px solid var(--unit-accent, var(--ui-accent));
  border-inline-end:3px solid var(--unit-accent, var(--ui-accent));
  border-block-start:var(--card-border-width) solid var(--ui-border);
}
[data-entity-card][data-card-role="auxiliary-transport"],
[data-unit-component][data-card-role="auxiliary-transport"] {
  border-inline-start:3px solid var(--unit-accent, var(--ui-accent));
  border-inline-end:0;
  border-block-start:3px solid var(--unit-accent, var(--ui-accent));
}

/* Keep Play's older local palette aliases connected to the shared theme. */
.digital {
  --page:var(--ui-bg);
  --panel:var(--ui-surface);
  --panel-alt:color-mix(in srgb, var(--ui-surface) 86%, var(--ui-bg));
  --line:var(--ui-border);
  --muted:var(--ui-muted);
  --text:var(--ui-text);
  --strong:var(--ui-text);
  --accent:var(--ui-accent);
  --ready:var(--state-ready-bg);
  --active:color-mix(in srgb, var(--ui-accent) 14%, var(--ui-surface));
  --warning:var(--state-warning-bg);
  --danger:var(--state-error-bg);
}
.digital .digital-health-full { --digital-health-bg:var(--state-ready-bg); --digital-health-border:var(--state-ready-border); --digital-health-primary:var(--state-ready-text); --digital-health-secondary:var(--state-ready-text); --digital-health-accent:var(--state-ready-border); }
.digital .digital-health-damaged { --digital-health-bg:var(--state-damaged-bg); --digital-health-border:var(--state-damaged-border); --digital-health-primary:var(--state-damaged-text); --digital-health-secondary:var(--state-damaged-text); --digital-health-accent:var(--state-damaged-border); }
.digital .digital-health-degraded { --digital-health-bg:var(--state-degraded-bg); --digital-health-border:var(--state-degraded-border); --digital-health-primary:var(--state-degraded-text); --digital-health-secondary:var(--state-degraded-text); --digital-health-accent:var(--state-degraded-border); }
.digital .digital-health-critical { --digital-health-bg:var(--state-degraded-bg); --digital-health-border:var(--state-error-border); --digital-health-primary:var(--state-error-text); --digital-health-secondary:var(--state-error-text); --digital-health-accent:var(--state-error-border); }
.digital .digital-health-destroyed { --digital-health-bg:var(--state-destroyed-bg); --digital-health-border:var(--state-destroyed-border); --digital-health-primary:var(--state-destroyed-text); --digital-health-secondary:var(--state-destroyed-text); --digital-health-accent:var(--state-destroyed-border); }
.digital .digital-group-nav-link[data-activation-state="activated"] { background:var(--panel-alt); color:var(--ui-text); border-color:var(--ui-border); }
.digital .digital-group-activation.is-activated { background:var(--ui-accent); color:var(--ui-bg); border-color:var(--ui-accent); }

@media print {
  /* Export can opt into these tokens later without inheriting the dark shell. */
  :root { --print-card-background:#fff; --print-card-text:#111; --print-card-border:#667; --print-card-accent:currentColor; }
}

/* Transport catalogue cards use the same identity / stats / options / action
   rhythm as Squad cards. The compatibility marker is a status rail, not a
   fourth content column. */
.group-add-transport-row[data-transport-row-layout] {
  display:grid;
  grid-template-columns:minmax(0,1fr);
  grid-template-areas:"main" "form";
  gap:.45rem;
  min-width:0;
  padding:var(--card-padding);
}
.group-add-transport-row[data-transport-row-layout] > .group-add-state-marker {
  position:absolute;
  inset-block-start:.7rem;
  inset-inline-start:.7rem;
  z-index:1;
  display:grid;
  place-items:center;
  width:20px;
  height:20px;
  padding:0;
  border-radius:0;
  background:transparent;
  line-height:1;
}
.group-add-transport-row[data-transport-row-layout] > .group-add-choice-main {
  grid-area:main;
  display:grid;
  grid-template-columns:minmax(0,1fr) max-content;
  gap:.3rem .65rem;
  align-items:start;
  min-width:0;
  padding-inline-start:1.25rem;
}
.group-add-transport-row[data-transport-row-layout] > .group-add-choice-main > strong,
.group-add-transport-row[data-transport-row-layout] > .group-add-choice-main > .catalogue-card-stats,
.group-add-transport-row[data-transport-row-layout] > .group-add-choice-main > .catalogue-card-options,
.group-add-transport-row[data-transport-row-layout] > .group-add-choice-main > .builder-profile-help { grid-column:1 / -1; min-width:0; }
.group-add-transport-row[data-transport-row-layout] > .group-add-choice-main > .group-add-choice-meta { grid-column:1; min-width:0; color:var(--ui-muted); }
.group-add-transport-row[data-transport-row-layout] > .group-add-inline-transport-form {
  grid-area:form;
  display:grid;
  grid-template-columns:minmax(0,1fr) max-content;
  grid-template-areas:"controls actions" "points actions";
  gap:.35rem .65rem;
  align-items:end;
  min-width:0;
  margin:0;
}
.group-add-transport-row[data-transport-row-layout] .group-add-transport-control-band { grid-area:controls; min-width:0; }
.group-add-transport-row[data-transport-row-layout] .configured-points { grid-area:points; align-self:center; }
.group-add-transport-row[data-transport-row-layout] .catalogue-card-actions { grid-area:actions; align-self:end; justify-self:end; }
@media (max-width:700px) {
  .group-add-transport-row[data-transport-row-layout] > .group-add-choice-main { grid-template-columns:minmax(0,1fr); }
  .group-add-transport-row[data-transport-row-layout] > .group-add-inline-transport-form { grid-template-columns:minmax(0,1fr); grid-template-areas:"controls" "points" "actions"; }
  .group-add-transport-row[data-transport-row-layout] .catalogue-card-actions { justify-self:end; }
}

/* Shared semantic symbols replace placeholder browse glyph boxes. */
.reference-symbol { display:inline-grid; place-items:center; flex:0 0 2.4rem; width:2.4rem; height:2.4rem; color:var(--ui-accent); border:1px solid color-mix(in srgb,var(--ui-accent) 55%,var(--ui-border)); border-radius:var(--card-radius); background:color-mix(in srgb,var(--ui-accent) 8%,var(--ui-surface)); font-size:1.25rem; line-height:1; }
.reference-symbol-weapon { color:var(--semantic-warning); border-color:color-mix(in srgb,var(--semantic-warning) 55%,var(--ui-border)); }
.reference-symbol-rule { color:var(--ui-accent); }
.reference-symbol small { margin-inline-start:.08rem; font-size:.52em; font-weight:750; line-height:1; }
.reference-symbol-modifier-reactive,
.reference-symbol-modifier-slow { position:relative; }
.reference-symbol-modifier-reactive::after { content:"↯"; position:absolute; inset-inline-end:-.2rem; inset-block-start:-.25rem; font-size:.62rem; }
.reference-symbol-modifier-slow::after { content:"↓"; position:absolute; inset-inline-end:-.2rem; inset-block-start:-.25rem; font-size:.62rem; }
.digital-reference-link { color:var(--ui-accent); text-decoration:none; }
.digital-reference-link:hover,.digital-reference-link:focus-visible { color:var(--ui-text); text-decoration:underline; }

/* Large surfaces share the same restrained radius hierarchy, including the
   existing Export choice page without changing its workflow. */
:is(.groups-section, .builder-workspace, .active-group-overview,
    .active-group-selection, .active-group-catalogue, .digital-play-curtain,
    .digital-group-content, .digital-group-sidebar, .shared-drawer,
    .shared-save-panel, .shared-report-dialog, .army-details-overlay-panel,
    .export-header, .export-card) {
  border-radius:var(--panel-radius);
}
:is(.export-header, .export-card) { background:var(--ui-surface); color:var(--ui-text); border-color:var(--ui-border); }
:root[data-theme="light"] :is(.export-header, .export-card) { background:var(--ui-surface); color:var(--ui-text); }

/* The army-state chip is compact because Standard is the normal case. */
.army-status-rules { min-width:max-content; padding:.16rem .4rem; border:1px solid transparent; border-radius:var(--action-radius); font-size:.78rem; line-height:1.2; }
.army-status-rules-standard { color:var(--semantic-exact); }
.army-status-rules-warnings { color:var(--semantic-warning); border-color:color-mix(in srgb,var(--semantic-warning) 55%,var(--ui-border)); background:color-mix(in srgb,var(--semantic-warning) 10%,var(--ui-surface)); }
.army-status-rules-non-standard { color:var(--semantic-invalid); border-color:color-mix(in srgb,var(--semantic-invalid) 60%,var(--ui-border)); background:color-mix(in srgb,var(--semantic-invalid) 10%,var(--ui-surface)); }
.army-status-rules[data-army-details-trigger] { cursor:pointer; font:inherit; }

.active-group-plan[data-builder-pane="plan"] {
  border-inline-start:3px solid var(--ui-accent);
}

/* Major workspace wrappers share the panel radius; small controls retain
   their existing action radius. */
:is(.groups-section, .builder-workspace, .builder-workspace-left-column,
    .group-add-multipicker, .active-group-plan,
    .active-group-selection, .active-group-catalogue, .builder-workspace-regions,
    .active-group-overview, .gate-network, .digital-play-curtain,
    .digital-group-content, .digital-group-sidebar, .shared-drawer,
    .shared-save-panel, .shared-report-dialog, .army-details-overlay-panel) {
  border-radius:var(--panel-radius);
}

/* Final Builder identity/state cascade.  Keep faction identity values
   constant across themes; only surrounding surfaces may be theme-specific. */
:root[data-theme="light"] {
  --faction-ucm:#8adf9a;
  --faction-phr:#e6d695;
  --faction-scourge:#c88bea;
  --faction-shaltari:#f0a55c;
  --faction-resistance:#79c8f2;
  --faction-bioficer:#e26b72;
}

.group-add-state-marker.group-add-state-marker-green,
.group-add-compatibility-guide .group-add-state-marker.group-add-state-marker-green {
  background:transparent !important;
  color:var(--semantic-exact);
}
.group-add-state-marker.group-add-state-marker-yellow,
.group-add-compatibility-guide .group-add-state-marker.group-add-state-marker-yellow {
  background:transparent !important;
  color:var(--semantic-warning);
}
.group-add-state-marker.group-add-state-marker-red,
.group-add-compatibility-guide .group-add-state-marker.group-add-state-marker-red {
  background:transparent !important;
  color:var(--semantic-invalid);
}
:is(.group-add-squad-row, .group-add-transport-row) > .group-add-state-marker { color:inherit !important; }

/* Builder browse cards need one step more visual weight than dense tables. */
.builder-compact-card .unit-identity .dzc-symbol,
.group-add-transport-row .unit-identity .dzc-symbol { --dzc-symbol-size:20px; }

[data-entity-card][data-card-role="squad"],
[data-unit-component][data-card-role="squad"] {
  border-inline-start:3px solid var(--unit-accent, var(--faction-accent, var(--ui-accent))) !important;
  border-inline-end:0 !important;
}
[data-entity-card][data-card-role="transport"],
[data-unit-component][data-card-role="transport"] {
  border-inline-start:3px solid var(--unit-accent, var(--faction-accent, var(--ui-accent))) !important;
  border-inline-end:3px solid var(--unit-accent, var(--faction-accent, var(--ui-accent))) !important;
}
[data-entity-card][data-card-role="auxiliary-transport"],
[data-unit-component][data-card-role="auxiliary-transport"] {
  border-inline-start:3px solid var(--unit-accent, var(--faction-accent, var(--ui-accent))) !important;
  border-inline-end:0 !important;
  border-block-start:3px solid var(--unit-accent, var(--faction-accent, var(--ui-accent))) !important;
}
.active-group-plan[data-builder-pane="plan"],
.group-slot-strip .group-slot-active {
  border-inline-start:3px solid var(--faction-accent, var(--ui-accent)) !important;
}
