:root{--battle-side-a:var(--ff-action);--battle-side-b:var(--ff-urgency);--battle-grid:color-mix(in srgb,var(--ff-border) 55%,transparent);--battle-run-bar-clearance:6.5rem}*,:after,:before{box-sizing:border-box}html{min-width:320px;scroll-behavior:smooth}body{min-height:100vh;margin:0;color:var(--ff-text);background:radial-gradient(circle at 15% 0,color-mix(in srgb,var(--ff-action) 13%,transparent),transparent 28rem),radial-gradient(circle at 88% 10%,color-mix(in srgb,var(--ff-urgency) 11%,transparent),transparent 30rem),var(--body-bg);font-family:var(--ff-font-ui)}button,input,select{font:inherit}a,button,select,summary{-webkit-tap-highlight-color:transparent}button,select,summary{cursor:pointer}[hidden]{display:none!important}.battle-visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.is-locked{overflow:hidden}.battle-skip-link{position:fixed;z-index:calc(var(--z-modal) + 2);top:.5rem;inset-inline-start:.5rem;transform:translateY(-150%);padding:.7rem 1rem;border-radius:var(--radius-control);color:var(--ff-on-accent);background:var(--ff-action);font-weight:800;transition:transform var(--ff-t-tap)}.battle-skip-link:focus-visible{transform:translateY(0)}.battle-app-shell{width:min(100%,1680px);margin:0 auto;padding:max(12px,var(--ff-safe-top)) max(12px,var(--ff-content-gutter)) max(calc(var(--battle-run-bar-clearance) + 1rem),var(--ff-safe-bottom))}.battle-topbar{position:relative;justify-content:space-between;gap:1rem;min-height:72px;padding:.75rem 1rem;border:1px solid var(--ff-border-subtle);border-radius:var(--ff-radius-card);background:var(--ff-panel-translucent-strong);box-shadow:var(--ff-shadow-low);backdrop-filter:blur(var(--ff-blur-raised))}.battle-brand,.battle-brand-copy,.battle-form-actions,.battle-phase-chips,.battle-result-actions,.battle-title-row,.battle-topbar,.battle-topbar-actions{display:flex;align-items:center}.battle-brand{min-width:0;min-height:var(--ff-tap-min);gap:.8rem;color:inherit;text-decoration:none}.battle-brand img{width:48px;height:48px;-o-object-fit:contain;object-fit:contain;filter:drop-shadow(0 0 12px color-mix(in srgb,var(--ff-action) 34%,transparent))}.battle-brand-copy{min-width:0;align-items:flex-start;flex-direction:column;gap:.1rem}.battle-brand-copy strong{font-size:.95rem;letter-spacing:.02em}.battle-brand-copy small{overflow:hidden;color:var(--ff-text-dim);font-size:.72rem;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.battle-topbar-actions{gap:.5rem}.battle-language-field{display:grid;gap:.15rem;min-width:8.5rem}.battle-language-field>span{color:var(--ff-text-tertiary);font-size:.58rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase}.battle-language-field select{min-height:2.45rem;padding-block:.4rem;padding-inline:.65rem 2rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius-control);outline:none;color:var(--ff-text);background:var(--ff-control);font-size:.72rem;font-weight:800}.battle-language-field select:focus-visible{box-shadow:var(--ff-focus-ring)}.battle-back-link,.battle-export-button,.battle-file-button,.battle-icon-button,.battle-primary-button,.battle-secondary-button{display:inline-flex;align-items:center;justify-content:center;min-height:var(--ff-tap-min);border:1px solid var(--ff-border);border-radius:var(--ff-radius-control);font-weight:800;text-decoration:none;transition:transform var(--ff-t-tap),border-color var(--ff-t-hover),background-color var(--ff-t-hover),box-shadow var(--ff-t-hover)}.battle-back-link,.battle-export-button,.battle-file-button,.battle-icon-button,.battle-secondary-button{color:var(--ff-text);background:var(--ff-control)}.battle-icon-button{width:var(--ff-tap-min);padding:0}.battle-back-link svg,.battle-icon-button svg,.battle-primary-button svg{width:1.1rem;height:1.1rem}.battle-back-link,.battle-export-button,.battle-file-button,.battle-secondary-button{gap:.45rem;padding:.55rem .8rem}.battle-back-link:hover,.battle-export-button:hover,.battle-file-button:hover,.battle-icon-button:hover,.battle-secondary-button:hover,.battle-side-action-button:hover{border-color:var(--ff-border-hover);background:var(--ff-control-hover)}.battle-back-link:active,.battle-export-button:active,.battle-file-button:active,.battle-icon-button:active,.battle-primary-button:active,.battle-secondary-button:active{transform:scale(.98)}.battle-main{display:grid;gap:var(--ff-section-gap);padding-block:clamp(1.5rem,3vw,2.5rem)}.battle-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1rem 2rem;align-items:end}.battle-eyebrow,.battle-section-kicker,.battle-side-kicker,.pin-gate-field span,.pin-gate-kicker{margin:0;color:var(--ff-text-dim);font-size:.7rem;font-weight:800;letter-spacing:.13em;text-transform:uppercase}.battle-title-row{flex-wrap:wrap;gap:.7rem;margin-top:.35rem}.battle-title-row h1{margin:0;font-size:clamp(2rem,5vw,4rem);line-height:.98;letter-spacing:-.045em}.battle-beta-badge,.battle-inactive-chip,.battle-outcome-label,.battle-row-state,.battle-status-chip{display:inline-flex;align-items:center;width:-moz-fit-content;width:fit-content;border-radius:var(--ff-radius-pill);font-weight:800}.battle-beta-badge{padding:.35rem .62rem;border:1px solid color-mix(in srgb,var(--ff-urgency) 52%,transparent);color:var(--ff-urgency);background:color-mix(in srgb,var(--ff-urgency) 12%,transparent);font-size:.68rem;letter-spacing:.1em}.battle-hero-copy{max-width:62rem;margin:.8rem 0 0;color:var(--ff-text-supporting);line-height:1.65}.battle-phase-chips{flex-wrap:wrap;justify-content:flex-end;gap:.45rem}.battle-status-chip{min-height:2rem;padding:.35rem .65rem;border:1px solid var(--ff-border-subtle);color:var(--ff-text-dim);background:var(--ff-surface-soft);font-size:.72rem}.battle-foundation-note{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.85rem;padding:1rem;border:1px solid color-mix(in srgb,var(--ff-warning) 32%,var(--ff-border));border-radius:var(--ff-radius-card);background:linear-gradient(90deg,color-mix(in srgb,var(--ff-warning) 9%,transparent),transparent 62%),var(--ff-panel-translucent)}.battle-foundation-note svg{width:1.35rem;height:1.35rem;color:var(--ff-warning)}.battle-foundation-note p,.battle-foundation-note strong{margin:0}.battle-foundation-note p{margin-top:.25rem;color:var(--ff-text-dim);font-size:.84rem;line-height:1.55}.battle-results,.battle-simulator-form{display:grid;gap:var(--ff-panel-gap)}.battle-results-panel,.battle-run-panel,.battle-setup-toolbar,.battle-side-panel{border:1px solid var(--ff-border);border-radius:var(--ff-radius-sheet);background:var(--ff-panel);box-shadow:var(--ff-shadow-card);backdrop-filter:blur(var(--ff-blur-surface))}.battle-run-panel{grid-template-columns:minmax(0,1.1fr) repeat(2,minmax(10rem,.55fr))}.battle-run-panel,.battle-setup-toolbar{display:grid;gap:1rem;align-items:end;padding:var(--ff-card-padding)}.battle-setup-toolbar{grid-template-columns:minmax(0,1fr) auto}.battle-preset-controls,.battle-setup-actions{display:flex;align-items:end;gap:.55rem}.battle-setup-actions{flex-wrap:wrap;justify-content:flex-end}.battle-side-action-button{border-color:color-mix(in srgb,var(--ff-action) 35%,var(--ff-border))}.battle-file-button{position:relative;cursor:pointer}.battle-file-button input{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0}.battle-file-button:has(input:focus-visible){box-shadow:var(--ff-focus-ring)}.battle-paste-setup,.battle-preset-controls,.battle-setup-hint{grid-column:1/-1}.battle-preset-controls{display:grid;grid-template-columns:minmax(10rem,1fr) auto minmax(11rem,1fr) auto auto;grid-template-areas:"name save select load delete"}.battle-preset-name-field{grid-area:name}[data-preset-save]{grid-area:save}.battle-preset-select-field{grid-area:select}[data-preset-load]{grid-area:load}[data-preset-delete]{grid-area:delete}.battle-setup-hint{margin:-.35rem 0 0;color:var(--ff-text-tertiary);font-size:.68rem;line-height:1.5}.battle-paste-setup{border-top:1px solid var(--ff-border-subtle)}.battle-paste-setup>summary{width:-moz-fit-content;width:fit-content;padding-top:.8rem;color:var(--ff-text-dim);font-size:.75rem;font-weight:800;cursor:pointer}.battle-paste-setup-body{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.7rem;align-items:end;padding-top:.7rem}.battle-mode-fieldset,.battle-run-count{min-width:0;margin:0;padding:0;border:0}.battle-mode-fieldset>legend,.battle-run-count>legend{margin-bottom:.4rem;color:var(--ff-text-dim);font-size:.7rem;font-weight:800;letter-spacing:.04em}.battle-run-options{display:grid;grid-template-columns:repeat(5,minmax(3.2rem,1fr));gap:.35rem}.battle-run-option{position:relative}.battle-run-option input{position:absolute;width:1px;height:1px;opacity:0}.battle-run-option span{display:grid;place-items:center;min-height:var(--ff-tap-min);padding:.35rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius-control);color:var(--ff-text-supporting);background:var(--ff-control);font-family:var(--ff-font-data);font-size:.82rem;font-weight:800;cursor:pointer}.battle-run-option small{color:var(--ff-text-tertiary);font-family:var(--ff-font-ui);font-size:.55rem;letter-spacing:.03em;text-transform:uppercase}.battle-run-option input:checked+span{border-color:color-mix(in srgb,var(--ff-action) 48%,var(--ff-border));color:var(--ff-action);background:color-mix(in srgb,var(--ff-action) 12%,var(--ff-control))}.battle-run-option input:focus-visible+span{box-shadow:var(--ff-focus-ring)}.battle-run-advanced{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.battle-input-suffix{position:relative;display:block}.battle-input-suffix input{padding-inline-end:2rem}.battle-input-suffix>span{position:absolute;top:50%;inset-inline-end:.75rem;color:var(--ff-text-tertiary);font-family:var(--ff-font-data);font-size:.72rem;transform:translateY(-50%);pointer-events:none}.battle-panel-heading h2,.battle-panel-heading h3,.battle-results-heading h2,.battle-side-heading h2{margin:.2rem 0 0;letter-spacing:-.025em}.battle-panel-heading p,.battle-results-heading p,.battle-side-heading p{margin:.35rem 0 0;color:var(--ff-text-dim);font-size:.8rem;line-height:1.5}.battle-field{display:grid;gap:.4rem;min-width:0}.battle-field-label,.battle-field>span{color:var(--ff-text-dim);font-size:.7rem;font-weight:800;letter-spacing:.04em}.battle-field input,.battle-field select,.battle-field textarea,.battle-stat-input{width:100%;min-width:0;min-height:var(--ff-tap-min);border:1px solid var(--ff-border);border-radius:var(--ff-radius-control);outline:none;color:var(--ff-text);background:var(--ff-control);font-family:var(--ff-font-data);font-size:.82rem;font-weight:700}.battle-field input,.battle-field select,.battle-field textarea{padding:.65rem .75rem}.battle-field textarea{min-height:8rem;resize:vertical;line-height:1.5}.battle-field input:focus-visible,.battle-field select:focus-visible,.battle-field textarea:focus-visible,.battle-stat-input:focus-visible,a:focus-visible,button:focus-visible,summary:focus-visible{box-shadow:var(--ff-focus-ring)}.battle-simulator-form :is(input,select,textarea)[aria-invalid=true],.battle-simulator-form.is-validated :is(input,select,textarea):invalid{border-color:var(--ff-danger);box-shadow:0 0 0 3px color-mix(in srgb,var(--ff-danger) 18%,transparent)}.battle-field-hint{color:var(--ff-text-tertiary);font-size:.68rem;line-height:1.4}.battle-field input:disabled,.battle-field select:disabled,.battle-secondary-button:disabled,.battle-text-button:disabled{opacity:var(--disabled-opacity);cursor:not-allowed}.battle-formations{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--ff-panel-gap);align-items:start}.battle-side-panel{position:relative;min-width:0;overflow:hidden}.battle-side-panel:before{position:absolute;inset:0 0 auto;height:3px;background:var(--side-color);content:""}.battle-side-panel[data-side=A]{--side-color:var(--battle-side-a)}.battle-side-panel[data-side=B]{--side-color:var(--battle-side-b)}.battle-side-header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.8rem;align-items:start;padding:var(--ff-card-padding);border-bottom:1px solid var(--ff-border-subtle);background:linear-gradient(135deg,color-mix(in srgb,var(--side-color) 8%,transparent),transparent 55%)}.battle-legion-sources{display:grid;gap:.7rem;margin:var(--ff-card-padding) var(--ff-card-padding) 0;padding:.8rem;border:1px solid color-mix(in srgb,var(--side-color) 26%,var(--ff-border-subtle));border-radius:var(--ff-radius-card);background:color-mix(in srgb,var(--side-color) 4%,var(--ff-panel-translucent))}.battle-source-card-heading,.battle-source-card-metrics,.battle-source-section-heading,.battle-source-toggle,.battle-stat-source-heading,.battle-stat-source-row{display:flex;align-items:center;justify-content:space-between;gap:.65rem}.battle-source-card-heading h4,.battle-source-section-heading h3,.battle-stat-node-group>h4{margin:0}.battle-source-section-heading>p{max-width:21rem;margin:0;color:var(--ff-text-tertiary);font-size:.65rem;line-height:1.45;text-align:end}.battle-legion-source-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.battle-source-card{display:grid;gap:.65rem;min-width:0;padding:.7rem;border:1px solid var(--ff-border-subtle);border-radius:var(--ff-radius-control);background:var(--ff-surface-soft)}.battle-source-card-heading{display:grid;grid-template-columns:minmax(0,1fr);justify-items:start;align-items:flex-start;min-width:0}.battle-source-card-heading>div{width:100%;max-width:100%;min-width:0}.battle-source-card-heading h4{margin-top:.12rem;font-size:.82rem}.battle-source-overline{color:var(--ff-text-tertiary);font-size:.55rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase}.battle-run-partial-status,.battle-source-status{flex:0 0 auto;padding:.22rem .42rem;border:1px solid var(--ff-border-subtle);border-radius:var(--radius-pill);color:var(--ff-text-tertiary);background:var(--ff-control);font-size:.55rem;font-weight:800;letter-spacing:.025em}.battle-source-status{display:block;justify-self:start;width:-moz-fit-content;width:fit-content;max-width:100%;min-width:0;overflow-wrap:anywhere;white-space:normal;line-height:1.35;text-align:start}.battle-source-status.is-active{border-color:color-mix(in srgb,var(--ff-success) 36%,var(--ff-border));color:var(--ff-success)}.battle-run-partial-status,.battle-source-status.is-partial{border-color:color-mix(in srgb,var(--ff-warning) 42%,var(--ff-border));color:var(--ff-warning)}.battle-source-toggle{justify-content:flex-start;min-height:2rem;color:var(--ff-text-supporting);font-size:.68rem;font-weight:800}.battle-source-toggle input{width:1rem;height:1rem;accent-color:var(--side-color)}.battle-source-toggle input:focus-visible{box-shadow:var(--ff-focus-ring)}.battle-source-card-metrics{align-items:baseline;color:var(--ff-text-dim);font-size:.62rem}.battle-source-card-metrics strong{color:var(--ff-text-supporting);font-size:.68rem}.battle-inline-warning,.battle-source-help{margin:0;color:var(--ff-text-tertiary);font-size:.62rem;line-height:1.45}.battle-inline-warning{padding-inline-start:.55rem;border-inline-start:2px solid var(--ff-warning);color:var(--ff-warning)}.battle-equipment-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem}.battle-equipment-controls>.battle-field:first-child{grid-column:1/-1}.battle-equipment-controls .battle-field>span{font-size:.58rem}.battle-equipment-controls :is(input,select){min-height:2.15rem;padding-block:.35rem;font-size:.68rem}.battle-input-prefix{position:relative;display:block}.battle-input-prefix>span{position:absolute;z-index:1;top:50%;inset-inline-start:.55rem;color:var(--ff-text-tertiary);transform:translateY(-50%);pointer-events:none}.battle-input-prefix input{padding-inline-start:1.35rem}.battle-compact-button{justify-self:start;min-height:2.15rem;padding:.35rem .6rem;font-size:.64rem}.battle-side-setup{margin:var(--ff-card-padding) var(--ff-card-padding) 0;border:1px solid color-mix(in srgb,var(--side-color) 24%,var(--ff-border-subtle));border-radius:var(--ff-radius-card);overflow:clip;background:color-mix(in srgb,var(--side-color) 4%,var(--ff-surface-soft))}.battle-side-setup>summary{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.7rem;align-items:center;min-height:var(--ff-tap-min);padding:.7rem .8rem;list-style:none;cursor:pointer}.battle-side-setup>summary::-webkit-details-marker{display:none}.battle-side-setup>summary small,.battle-side-setup>summary strong{display:block}.battle-side-setup>summary strong{font-size:.8rem}.battle-side-setup>summary small{overflow:hidden;margin-top:.18rem;color:var(--ff-text-dim);font-family:var(--ff-font-data);font-size:.65rem;text-overflow:ellipsis;white-space:nowrap}.battle-side-setup[open] .battle-summary-chevron{transform:rotate(180deg)}.battle-side-setup-body{display:grid;gap:.8rem;padding:0 .8rem .8rem;border-top:1px solid var(--ff-border-subtle)}.battle-row-footer,.battle-side-setup-footer{display:flex;justify-content:space-between;gap:.75rem;align-items:center}.battle-side-setup-footer p{margin:0;color:var(--ff-text-tertiary);font-size:.68rem;line-height:1.5}.battle-side-kicker{color:var(--side-color)}.battle-mode-group{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding:.2rem;border:1px solid var(--ff-border);border-radius:calc(var(--ff-radius-control) + 2px);background:var(--ff-surface-soft)}.battle-mode-fieldset,.battle-mode-group{min-width:min(100%,17rem)}.battle-mode-option{position:relative}.battle-mode-option input{position:absolute;width:1px;height:1px;opacity:0}.battle-mode-option span{display:grid;place-items:center;min-height:2.25rem;padding:.35rem .55rem;border-radius:var(--ff-radius-control);color:var(--ff-text-dim);font-size:.7rem;font-weight:800;text-align:center;cursor:pointer}.battle-mode-option input:checked+span{color:var(--ff-text);background:color-mix(in srgb,var(--side-color) 15%,var(--ff-control));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--side-color) 30%,transparent)}.battle-mode-option input:focus-visible+span{box-shadow:var(--ff-focus-ring)}.battle-squad-list{display:grid;gap:.65rem;padding:var(--ff-card-padding)}.battle-squad-card{min-width:0;border:1px solid var(--ff-border-subtle);border-radius:var(--ff-radius-card);overflow:clip;background:var(--ff-panel-translucent)}.battle-squad-card[open]{border-color:color-mix(in srgb,var(--side-color) 34%,var(--ff-border));box-shadow:0 10px 24px color-mix(in srgb,var(--side-color) 7%,transparent)}.battle-squad-summary{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.65rem;align-items:center;min-height:3.5rem;padding:.65rem .75rem;list-style:none}.battle-squad-summary::-webkit-details-marker{display:none}.battle-row-marker{display:grid;place-items:center;width:2rem;height:2rem;border-radius:50%;color:var(--ff-on-accent);background:var(--side-color);font-family:var(--ff-font-data);font-size:.75rem;font-weight:800}.battle-squad-summary-copy{min-width:0}.battle-squad-summary-copy span,.battle-squad-summary-copy strong{display:block}.battle-squad-summary-copy .battle-row-heading{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}.battle-squad-summary-copy .battle-row-state{display:inline-flex;padding:.16rem .38rem;color:var(--side-color);background:color-mix(in srgb,var(--side-color) 12%,transparent);font-family:var(--ff-font-ui);font-size:.52rem;letter-spacing:.04em;text-transform:uppercase}.battle-row-state[hidden],.battle-text-button[hidden]{display:none}.battle-text-button{min-height:var(--ff-tap-min);padding:.35rem .2rem;border:0;color:var(--side-color,var(--ff-action));background:transparent;font-size:.7rem;font-weight:800;text-decoration:underline;text-underline-offset:.18em;cursor:pointer}.battle-danger-text-button{color:var(--ff-danger)}.battle-squad-summary-copy strong{font-size:.86rem}.battle-squad-summary-copy span{overflow:hidden;margin-top:.18rem;color:var(--ff-text-dim);font-family:var(--ff-font-data);font-size:.67rem;text-overflow:ellipsis;white-space:nowrap}.battle-summary-chevron{width:1rem;height:1rem;color:var(--ff-text-dim);transition:transform var(--ff-t-expand)}.battle-squad-card[open] .battle-summary-chevron{transform:rotate(180deg)}.battle-squad-body{display:grid;gap:.8rem;padding:0 .75rem .8rem;border-top:1px solid var(--ff-border-subtle)}.battle-squad-controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(5.5rem,.55fr) minmax(7rem,.75fr);gap:.6rem;padding-top:.8rem}.battle-stat-node-groups{display:grid;gap:.8rem;min-width:0}.battle-stat-node-group{display:grid;gap:.45rem;min-width:0}.battle-stat-node-group>h4{color:var(--ff-text-tertiary);font-size:.61rem;letter-spacing:.055em;text-transform:uppercase}.battle-stat-node-list{display:grid;gap:.45rem;min-width:0}.battle-stat-secondary-list{grid-template-columns:repeat(2,minmax(0,1fr))}.battle-stat-secondary-list>details[open]{grid-column:1/-1}.battle-stat-node{min-width:0;overflow:clip;border:1px solid var(--ff-border-subtle);border-radius:var(--ff-radius-control);background:var(--ff-surface-soft)}.battle-stat-node[open]{border-color:color-mix(in srgb,var(--side-color) 34%,var(--ff-border));background:color-mix(in srgb,var(--side-color) 4%,var(--ff-surface-soft))}.battle-stat-node>summary{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:.55rem;align-items:center;min-height:var(--ff-tap-min);padding:.52rem .65rem;list-style:none}.battle-stat-node>summary::-webkit-details-marker{display:none}.battle-stat-node>summary>span:first-child{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;min-width:0}.battle-stat-node>summary small,.battle-stat-node>summary strong{display:block}.battle-stat-node>summary strong{color:var(--ff-text-supporting);font-size:.72rem}.battle-stat-node>summary small:not(.battle-inactive-chip){color:var(--ff-text-tertiary);font-size:.57rem}.battle-stat-equation-result output,.battle-stat-node>summary output,.battle-stat-source-row output{color:var(--side-color);font-family:var(--ff-font-data);font-size:.74rem;font-weight:800;font-variant-numeric:tabular-nums}.battle-stat-node[open]>summary .battle-summary-chevron{transform:rotate(180deg)}.battle-stat-node-body{display:grid;gap:.65rem;padding:.65rem;border-top:1px solid var(--ff-border-subtle)}.battle-stat-equation{display:grid;grid-template-columns:minmax(7rem,1fr) auto minmax(7rem,1fr) auto minmax(8rem,1fr);gap:.45rem;align-items:stretch;direction:ltr}.battle-stat-equation-result,.battle-stat-equation-term{display:grid;gap:.28rem;align-content:start;min-width:0;padding:.55rem;border:1px solid var(--ff-border-subtle);border-radius:var(--ff-radius-control);background:var(--ff-control);direction:ltr}:dir(rtl) .battle-stat-equation-result,:dir(rtl) .battle-stat-equation-term{direction:rtl}.battle-stat-equation-result>span:first-child,.battle-stat-equation-term>span:first-child{color:var(--ff-text-dim);font-size:.59rem;font-weight:800;line-height:1.35}.battle-stat-equation-result small,.battle-stat-equation-term small{color:var(--ff-text-tertiary);font-size:.55rem;line-height:1.35}.battle-stat-equation-result{border-color:color-mix(in srgb,var(--side-color) 31%,var(--ff-border));background:color-mix(in srgb,var(--side-color) 7%,var(--ff-control))}.battle-stat-equation-result output{align-self:center;font-size:1rem}.battle-equation-operator{display:grid;place-items:center;color:var(--ff-text-tertiary);font-family:var(--ff-font-data);font-size:.9rem;font-weight:900}.battle-stat-source-breakdown{overflow:hidden;border:1px solid var(--ff-border-subtle);border-radius:var(--ff-radius-control);background:var(--ff-panel-translucent)}.battle-stat-source-heading{padding:.42rem .55rem;border-bottom:1px solid var(--ff-border-subtle);color:var(--ff-text-dim);font-size:.58rem}.battle-stat-source-heading span{color:var(--ff-text-tertiary)}.battle-stat-source-breakdown ul{display:grid;margin:0;padding:0;list-style:none}.battle-stat-source-row{min-height:2.5rem;padding:.38rem .55rem;border-bottom:1px solid var(--battle-grid)}.battle-stat-source-row:last-child{border-bottom:0}.battle-stat-source-row>span{min-width:0}.battle-stat-source-row small,.battle-stat-source-row strong{display:block}.battle-stat-source-row strong{overflow:hidden;color:var(--ff-text-supporting);font-size:.62rem;text-overflow:ellipsis;white-space:nowrap}.battle-stat-source-row small{margin-top:.08rem;color:var(--ff-text-tertiary);font-size:.53rem}.battle-stat-source-row.is-baseline output,.battle-stat-source-row.is-override output{color:var(--ff-text-dim)}.battle-stat-source-row.is-excluded{opacity:.62}.battle-stat-source-row.is-excluded output{color:var(--ff-text-tertiary);text-decoration:line-through}.battle-secondary-stat-input{max-width:12rem}.battle-stat-inactive-note{margin:0;color:var(--ff-text-tertiary);font-size:.62rem;line-height:1.45}.battle-stat-table-wrap{min-width:0;overflow-x:auto;border:1px solid var(--ff-border-subtle);border-radius:var(--ff-radius-control)}.battle-stat-table{width:100%;min-width:29rem;border-collapse:collapse;table-layout:fixed;font-size:.72rem}.battle-stat-table td,.battle-stat-table th{height:2.65rem;padding:.35rem .45rem;border-bottom:1px solid var(--battle-grid);text-align:right;vertical-align:middle}.battle-stat-table tr:last-child td,.battle-stat-table tr:last-child th{border-bottom:0}.battle-stat-table thead th{height:2rem;color:var(--ff-text-tertiary);background:var(--ff-surface-soft);font-size:.62rem;letter-spacing:.04em;text-transform:uppercase}.battle-stat-table td:first-child,.battle-stat-table th:first-child{width:35%;text-align:left}.battle-stat-label{display:flex;align-items:center;gap:.3rem;color:var(--ff-text-supporting);font-weight:700}.battle-inactive-chip{padding:.15rem .3rem;color:var(--ff-text-tertiary);background:var(--ff-surface-soft);font-size:.52rem;letter-spacing:.04em;text-transform:uppercase}.battle-base-value,.battle-final-value{font-family:var(--ff-font-data);font-variant-numeric:tabular-nums}.battle-base-value{color:var(--ff-text-dim)}.battle-final-value{color:var(--side-color);font-weight:800}.battle-stat-input{min-height:2rem;padding:.28rem .4rem;text-align:right}.battle-base-input{border-color:color-mix(in srgb,var(--side-color) 24%,var(--ff-border));color:var(--ff-text-supporting);background:color-mix(in srgb,var(--side-color) 5%,var(--ff-control))}.battle-stat-unit{color:var(--ff-text-tertiary);font-size:.6rem}.battle-tactical-note{margin:0;color:var(--ff-text-tertiary);font-size:.68rem;line-height:1.5}.battle-validation-summary{padding:.8rem 1rem;border:1px solid color-mix(in srgb,var(--ff-danger) 42%,var(--ff-border));border-radius:var(--ff-radius-card);color:var(--ff-danger);background:color-mix(in srgb,var(--ff-danger) 9%,var(--ff-panel));font-size:.82rem;font-weight:700}.battle-form-actions{position:fixed;z-index:var(--z-sticky);inset-inline-start:50%;bottom:max(.75rem,var(--ff-safe-bottom));display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.75rem;width:min(calc(100% - 24px),calc(1680px - var(--ff-content-gutter) - var(--ff-content-gutter)));padding:.75rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius-card);background:var(--ff-panel-translucent-strong);box-shadow:var(--ff-shadow-lift);backdrop-filter:blur(var(--ff-blur-raised));transform:translate(-50%)}:dir(rtl) .battle-form-actions{transform:translate(50%)}.battle-primary-button{gap:.5rem;min-width:min(100%,15rem);padding:.7rem 1rem;border-color:color-mix(in srgb,var(--ff-action) 60%,transparent);color:var(--ff-on-accent);background:var(--ff-gradient-primary);box-shadow:0 10px 26px color-mix(in srgb,var(--ff-action) 20%,transparent)}.battle-primary-button:disabled{opacity:var(--disabled-opacity);cursor:wait}.battle-run-status{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center;min-width:0;color:var(--ff-text-dim);font-size:.74rem;line-height:1.4}.battle-run-bar-summary{font-family:var(--ff-font-data);font-size:.82rem;font-variant-numeric:tabular-nums}.battle-run-invalid-button{display:grid;gap:.12rem;min-height:var(--ff-tap-min);padding:.45rem .7rem;border:1px solid color-mix(in srgb,var(--ff-danger) 42%,var(--ff-border));border-radius:var(--ff-radius-control);color:var(--ff-danger);background:color-mix(in srgb,var(--ff-danger) 9%,var(--ff-control));text-align:start}.battle-run-invalid-button strong{font-size:.72rem}.battle-run-invalid-button span{color:var(--ff-text-tertiary);font-size:.62rem}.battle-results-panel{display:grid;gap:1rem;padding:var(--ff-card-padding)}.battle-results-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1rem;align-items:start}.battle-result-actions{flex-wrap:wrap;justify-content:flex-end;gap:.4rem}.battle-export-button{min-height:2.35rem;padding:.4rem .65rem;font-size:.68rem}.battle-verdict-banner{--verdict-color:var(--ff-text-dim);display:grid;gap:.25rem;padding:clamp(.9rem,2vw,1.25rem);border:1px solid color-mix(in srgb,var(--verdict-color) 42%,var(--ff-border));border-inline-start:4px solid var(--verdict-color);border-radius:var(--ff-radius-card);color:var(--verdict-color);background:color-mix(in srgb,var(--verdict-color) 9%,var(--ff-panel))}.battle-verdict-banner.is-success{--verdict-color:var(--ff-success)}.battle-verdict-banner.is-danger{--verdict-color:var(--ff-danger)}.battle-verdict-banner.is-neutral{--verdict-color:var(--ff-text-dim)}.battle-results-partial{display:flex;gap:.65rem;align-items:baseline;padding:.65rem .8rem;border:1px solid color-mix(in srgb,var(--ff-warning) 38%,var(--ff-border));border-radius:var(--ff-radius-control);color:var(--ff-warning);background:color-mix(in srgb,var(--ff-warning) 8%,var(--ff-panel));font-size:.7rem;line-height:1.45}.battle-results-partial span{color:var(--ff-text-dim)}.battle-verdict-banner strong{font-family:var(--ff-font-data);font-size:clamp(1.05rem,2.5vw,1.5rem);line-height:1.25}.battle-verdict-banner span{color:var(--ff-text-supporting);font-size:.76rem}.battle-metric-grid,.battle-outcome-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem}.battle-metric-card,.battle-outcome-card{min-width:0;padding:.85rem;border:1px solid var(--ff-border-subtle);border-radius:var(--ff-radius-card);background:var(--ff-surface-soft)}.battle-outcome-label{padding:.22rem .42rem;color:var(--metric-color,var(--ff-text-dim));background:color-mix(in srgb,var(--metric-color,var(--ff-text-dim)) 10%,transparent);font-size:.62rem;letter-spacing:.05em;text-transform:uppercase}.battle-metric-card strong,.battle-outcome-card strong{display:block;overflow:hidden;margin-top:.5rem;font-family:var(--ff-font-data);font-size:clamp(1.1rem,2.4vw,1.65rem);font-variant-numeric:tabular-nums;text-overflow:ellipsis}.battle-metric-card small,.battle-outcome-card small{display:block;margin-top:.2rem;color:var(--ff-text-tertiary);font-size:.65rem}.battle-survival-board{display:grid;gap:.7rem;padding:.85rem;border:1px solid var(--ff-border-subtle);border-radius:var(--ff-radius-card);background:var(--ff-panel-translucent)}.battle-survival-row{display:grid;grid-template-columns:4.5rem minmax(0,1fr) 7rem;gap:.65rem;align-items:center;font-size:.72rem}.battle-survival-row output,.battle-survival-row strong{font-family:var(--ff-font-data);font-variant-numeric:tabular-nums}.battle-survival-row output{color:var(--ff-text-dim);text-align:right}.battle-survival-track{height:.65rem;border-radius:var(--ff-radius-pill);overflow:hidden;background:var(--ff-surface-raised)}.battle-survival-fill{display:block;height:100%;border-radius:inherit;background:var(--bar-color);transition:width var(--ff-t-expand)}.battle-log-details{border:1px solid var(--ff-border-subtle);border-radius:var(--ff-radius-card);overflow:clip}.battle-log-details>summary{display:flex;align-items:center;justify-content:space-between;gap:.8rem;min-height:var(--ff-tap-min);padding:.7rem .85rem;color:var(--ff-text-supporting);background:var(--ff-surface-soft);font-size:.78rem;font-weight:800;list-style:none}.battle-log-details>summary::-webkit-details-marker{display:none}.battle-assumptions-body{padding:.75rem 1rem .85rem;color:var(--ff-text-dim);font-size:.76rem;line-height:1.6}.battle-assumptions-body ul{margin:0;padding-inline-start:1.2rem}.battle-assumptions-body li+li{margin-top:.25rem}.battle-log-table-wrap{max-height:30rem;overflow:auto}.battle-log-table{width:100%;min-width:54rem;border-collapse:collapse;font-family:var(--ff-font-data);font-size:.67rem;font-variant-numeric:tabular-nums}.battle-log-table td,.battle-log-table th{padding:.55rem .6rem;border-bottom:1px solid var(--battle-grid);text-align:left;white-space:nowrap}.battle-log-table th{position:sticky;z-index:1;top:0;color:var(--ff-text-dim);background:var(--ff-panel-strong)}.battle-model-note{margin:0;color:var(--ff-text-tertiary);font-size:.68rem;line-height:1.55}.battle-footer{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.25rem .25rem 0;border-top:1px solid var(--ff-border-subtle);color:var(--ff-text-tertiary);font-size:.7rem}.battle-footer a{color:var(--ff-text-dim)}.battle-toast-region{position:fixed;z-index:var(--z-toast);inset-inline-end:max(.75rem,var(--ff-safe-right));bottom:max(var(--battle-run-bar-clearance),calc(var(--ff-safe-bottom) + 5.5rem));display:grid;gap:.5rem;width:min(23rem,calc(100vw - 1.5rem));pointer-events:none}.battle-toast{padding:.75rem .9rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius-control);color:var(--ff-text);background:var(--ff-panel-strong);box-shadow:var(--ff-shadow-lift);font-size:.78rem;font-weight:700;animation:battle-toast-in var(--ff-duration-expand) var(--ff-ease-expand)}@keyframes battle-toast-in{0%{transform:translateY(.5rem);opacity:0}}.battle-noscript{display:grid;place-items:center;align-content:center;gap:.8rem;min-height:100vh;padding:1.5rem;text-align:center}.battle-noscript h1,.battle-noscript p{margin:0}.battle-noscript p{max-width:32rem;color:var(--ff-text-dim);line-height:1.6}.battle-noscript a,.battle-noscript button{min-height:var(--ff-tap-min);padding:.65rem .9rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius-control);color:var(--ff-text);background:var(--ff-control);font-weight:800;text-decoration:none}.battle-boot-actions{display:flex;gap:.5rem}.pin-gate-overlay{position:fixed;z-index:var(--z-modal);inset:0;display:grid;place-items:center;min-height:100svh;padding:max(1rem,var(--ff-safe-top)) max(1rem,var(--ff-safe-right)) max(1rem,var(--ff-safe-bottom)) max(1rem,var(--ff-safe-left));background:radial-gradient(circle at 50% 30%,color-mix(in srgb,var(--ff-action) 18%,transparent),transparent 24rem),radial-gradient(circle at 55% 68%,color-mix(in srgb,var(--ff-urgency) 12%,transparent),transparent 23rem),color-mix(in srgb,var(--ff-bg) 92%,transparent);backdrop-filter:blur(14px)}.pin-gate-dialog{width:min(29rem,100%);overflow:hidden;border:1px solid color-mix(in srgb,var(--ff-action) 36%,var(--ff-border));border-radius:var(--ff-radius-sheet);color:var(--ff-text);background:linear-gradient(145deg,color-mix(in srgb,var(--ff-action) 9%,transparent),transparent 42%),linear-gradient(315deg,color-mix(in srgb,var(--ff-urgency) 7%,transparent),transparent 38%),var(--ff-panel-strong);box-shadow:var(--ff-shadow-lift)}.pin-gate-dialog:before{display:block;height:3px;background:var(--ff-gradient-primary);content:""}.pin-gate-form{display:grid;gap:.9rem;padding:clamp(1.15rem,4vw,1.6rem)}.pin-gate-dialog h2{margin:0;color:var(--ff-text);font-size:clamp(1.55rem,5vw,2.1rem);line-height:1.05;letter-spacing:-.035em}.pin-gate-copy{margin:0;color:var(--ff-text-supporting);font-size:.9rem;line-height:1.6}.pin-gate-field{display:grid;gap:.45rem}.pin-gate-input{width:100%;min-height:3.2rem;padding:.75rem .9rem;border:1px solid var(--ff-border);border-radius:var(--ff-radius-control);outline:none;color:var(--ff-text);background:var(--ff-control);font:800 1.15rem/1 var(--ff-font-data);letter-spacing:.1em}.pin-gate-input:focus-visible{box-shadow:var(--ff-focus-ring)}.pin-gate-error{margin:-.2rem 0 0;color:var(--ff-danger);font-size:.8rem;font-weight:800}.pin-gate-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.pin-gate-btn{min-height:var(--ff-tap-min);border:1px solid var(--ff-border);border-radius:var(--ff-radius-control);color:var(--ff-text);background:var(--ff-control);font-weight:800}.pin-gate-btn-primary{border-color:color-mix(in srgb,var(--ff-action) 55%,transparent);color:var(--ff-on-accent);background:var(--ff-gradient-primary)}.pin-gate-btn:focus-visible{box-shadow:var(--ff-focus-ring)}@media(max-width:1024px){.battle-run-panel{grid-template-columns:repeat(2,minmax(0,1fr))}.battle-panel-heading{grid-column:1/-1}.battle-run-count{min-width:0}.battle-formations,.battle-setup-toolbar{grid-template-columns:1fr}.battle-setup-actions{justify-content:flex-start}.battle-preset-controls{grid-template-columns:minmax(10rem,1fr) auto minmax(10rem,1fr) auto auto}.battle-side-header{grid-template-columns:minmax(0,1fr) minmax(15rem,.75fr)}.battle-equipment-controls{grid-template-columns:1fr}}@media(max-width:700px){:root{--battle-run-bar-clearance:8.5rem}.battle-app-shell{padding-inline:max(8px,var(--ff-safe-left))}.battle-topbar{min-height:62px;padding:.55rem .65rem}.battle-brand img{width:40px;height:40px}.battle-back-link span,.battle-brand-copy small{display:none}.battle-language-field{min-width:5.5rem}.battle-language-field>span{display:none}.battle-back-link{width:var(--ff-tap-min);padding:0}.battle-hero,.battle-results-heading,.battle-side-header{grid-template-columns:1fr}.battle-phase-chips,.battle-result-actions{justify-content:flex-start}.battle-run-panel,.battle-setup-toolbar{grid-template-columns:1fr}.battle-setup-actions{justify-content:flex-start}.battle-preset-controls{grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"name save save" "select load delete"}.battle-paste-setup-body{grid-template-columns:1fr}.battle-run-advanced{grid-template-columns:repeat(2,minmax(0,1fr))}.battle-panel-heading{grid-column:auto}.battle-mode-group{width:100%}.battle-equipment-controls,.battle-legion-source-grid,.battle-stat-secondary-list{grid-template-columns:1fr}.battle-stat-secondary-list>details[open]{grid-column:auto}.battle-stat-equation{grid-template-columns:1fr}.battle-equation-operator{min-height:1rem}.battle-source-section-heading{align-items:flex-start;flex-direction:column}.battle-source-section-heading>p{text-align:start}.battle-squad-controls{grid-template-columns:repeat(2,minmax(0,1fr))}.battle-squad-controls .battle-field:last-child{grid-column:1/-1}.battle-metric-grid,.battle-outcome-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.battle-form-actions{grid-template-columns:1fr;width:calc(100% - 16px);padding:.55rem;align-items:stretch}.battle-form-actions .battle-result-actions{display:grid;grid-template-columns:auto minmax(0,1fr)}.battle-form-actions .battle-primary-button{min-width:0}.battle-row-footer,.battle-side-setup-footer{align-items:flex-start;flex-direction:column}.battle-primary-button{width:100%}.battle-run-status{justify-content:center;text-align:center}.battle-footer{align-items:flex-start;flex-direction:column}}@media(max-width:430px){.battle-title-row h1{font-size:2.15rem}.battle-results-panel,.battle-run-panel,.battle-setup-toolbar,.battle-side-header,.battle-squad-list{padding:.8rem}.battle-run-options{grid-template-columns:repeat(3,minmax(0,1fr))}.battle-preset-controls,.battle-run-advanced{grid-template-columns:1fr}.battle-preset-controls{grid-template-areas:"name" "save" "select" "load" "delete"}.battle-preset-controls>button,.battle-setup-actions,.battle-setup-actions>*{width:100%}.battle-legion-sources,.battle-side-setup{margin:.8rem .8rem 0}.battle-results-partial,.battle-source-card-heading,.battle-source-card-metrics{align-items:flex-start;flex-direction:column}.battle-stat-table-wrap{overflow:visible;border:0}.battle-stat-table{display:block;min-width:0}.battle-stat-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.battle-stat-table tbody{display:grid;gap:.5rem}.battle-stat-table tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem;padding:.55rem;border:1px solid var(--ff-border-subtle);border-radius:var(--ff-radius-control);background:var(--ff-surface-soft)}.battle-stat-table td,.battle-stat-table th{height:auto;padding:0;border:0}.battle-stat-table td:first-child,.battle-stat-table th:first-child{width:auto}.battle-stat-table th:first-child{grid-column:1/-1}.battle-stat-table td{display:grid;gap:.25rem;align-content:end;text-align:left}.battle-stat-table td:before{color:var(--ff-text-tertiary);font-size:.55rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;content:attr(data-mobile-label)}.battle-stat-input{min-height:var(--ff-tap-min);text-align:left}.battle-inactive-chip{display:none}.battle-squad-body,.battle-squad-summary{padding-inline:.6rem}.battle-survival-row{grid-template-columns:3.5rem minmax(0,1fr)}.battle-survival-row output{grid-column:1/-1;text-align:left}.pin-gate-actions{grid-template-columns:1fr}.battle-boot-actions{width:100%;flex-direction:column}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}