:root{
  color-scheme:dark;
  --bg:#050912;
  --panel:#0a1322;
  --panel2:#0f1b2c;
  --panel3:#142238;
  --text:#ecf6ff;
  --muted:#9fb0c4;
  --line:#26364f;
  --accent:#49e6d2;
  --accent2:#9db6ff;
  --warn:#ffd36f;
  --bad:#ff7f92;
  --good:#7dffbf;
  --shadow:0 20px 60px rgba(0,0,0,.35);
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:radial-gradient(circle at top left,#14213a 0,#050912 42%,#03050a 100%);color:var(--text);min-height:100vh}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
button,.file-button,select,input,textarea{font:inherit}
button,.file-button{border:1px solid var(--line);background:#101d31;color:var(--text);border-radius:14px;padding:.7rem .9rem;cursor:pointer;transition:transform .12s ease,border-color .12s ease,background .12s ease}
button:hover,.file-button:hover{transform:translateY(-1px);border-color:var(--accent);background:#142640}
button.primary{background:linear-gradient(135deg,#0d7d7c,#3456b8);border-color:#60eee0;color:white;font-weight:700}
button.danger{border-color:#7b2b3e;color:#ffc0cb}
.file-button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;position:relative;overflow:hidden}
.file-button input{position:absolute;inset:0;opacity:0;cursor:pointer}
input,select,textarea{width:100%;border:1px solid var(--line);border-radius:12px;background:#060d19;color:var(--text);padding:.62rem .7rem;outline:none}
textarea{resize:vertical;min-height:3rem}
label{display:grid;gap:.35rem;color:var(--muted);font-size:.88rem}
label input,label select,label textarea{color:var(--text);font-size:.96rem}
pre{margin:0;white-space:pre-wrap;word-break:break-word;color:#cfddf1;background:#060d19;border:1px solid var(--line);border-radius:14px;padding:1rem;max-height:24rem;overflow:auto}
canvas{width:100%;height:auto;border:1px solid var(--line);border-radius:16px;background:#07101c}
.topbar{position:sticky;top:0;z-index:5;display:flex;justify-content:space-between;gap:1rem;align-items:center;padding:1rem clamp(1rem,3vw,2rem);background:rgba(5,9,18,.92);backdrop-filter:blur(18px);border-bottom:1px solid var(--line)}
.brand-block h1{margin:.1rem 0;font-size:clamp(1.7rem,4vw,3rem);letter-spacing:-.04em}.brand-block p{margin:.1rem 0;color:var(--muted)}
.eyebrow{margin:0;color:var(--accent);text-transform:uppercase;letter-spacing:.13em;font-size:.73rem;font-weight:800}.top-actions{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;justify-content:flex-end}.status-pill,.mini-pill{display:inline-flex;border:1px solid rgba(73,230,210,.4);background:rgba(73,230,210,.08);color:#bffff8;border-radius:999px;padding:.45rem .7rem;font-size:.8rem;font-weight:700;white-space:nowrap}.mini-pill{padding:.25rem .55rem;color:#d6e6ff;border-color:#405575;background:#0a1322}.main-nav{position:sticky;top:85px;z-index:4;display:flex;gap:.4rem;flex-wrap:wrap;padding:.7rem clamp(1rem,3vw,2rem);background:rgba(5,9,18,.82);backdrop-filter:blur(18px);border-bottom:1px solid rgba(38,54,79,.7)}.main-nav a{border:1px solid var(--line);border-radius:999px;padding:.55rem .85rem;color:#d6e6ff;background:#08111f}.main-nav a:hover{border-color:var(--accent);text-decoration:none}.page-shell{width:min(1500px,100%);margin:0 auto;padding:clamp(1rem,3vw,2rem);display:grid;gap:1.4rem}.hero-panel,.section-card,.army-card,.matchup-card,.chart-card{border:1px solid var(--line);background:linear-gradient(180deg,rgba(15,27,44,.94),rgba(9,16,29,.96));border-radius:24px;box-shadow:var(--shadow)}.hero-panel{display:grid;grid-template-columns:1.5fr 1fr;gap:1rem;padding:1.4rem}.hero-panel h2,.section-heading h2{margin:.25rem 0 .5rem;font-size:clamp(1.55rem,3vw,2.4rem);letter-spacing:-.03em}.hero-panel p,.section-heading p,.army-card p,.summary-text,#aboutSection p{color:var(--muted);line-height:1.55}.workflow-strip{display:grid;gap:.55rem;align-content:center}.workflow-strip span{border:1px solid var(--line);border-radius:16px;background:#07101e;padding:.85rem;color:#dce9fa;font-weight:700}.section-card{padding:1.2rem;display:grid;gap:1.1rem}.section-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.button-row{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center}.compact-row button,.compact-row .file-button{padding:.52rem .7rem;border-radius:12px;font-size:.86rem}.army-overview-grid,.matchup-grid,.chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.army-card,.matchup-card,.chart-card{padding:1rem;box-shadow:none}.card-header,.subheading-row{display:flex;justify-content:space-between;align-items:center;gap:.7rem}.card-header h3,.subheading-row h3,.matchup-card h3,.chart-card h3{margin:.2rem 0;font-size:1.05rem}.unit-list{display:grid;gap:.45rem;max-height:26rem;overflow:auto;padding-right:.2rem}.unit-list.compact{max-height:14rem}.unit-button{display:grid;gap:.2rem;text-align:left;border-radius:14px;border:1px solid var(--line);background:#07101e;color:var(--text);padding:.75rem}.unit-button strong{display:block}.unit-button span{color:var(--muted);font-size:.82rem}.unit-button.selected{border-color:var(--accent);background:rgba(73,230,210,.08)}.editor-layout{display:grid;grid-template-columns:minmax(260px,360px) 1fr;gap:1rem}.editor-side,.editor-main{border:1px solid var(--line);border-radius:20px;background:rgba(5,11,21,.72);padding:1rem;display:grid;gap:.8rem}.form-grid{display:grid;gap:.75rem}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid.stats{grid-template-columns:repeat(5,minmax(72px,1fr))}.weapon-editor{border-top:1px solid var(--line);margin-top:.4rem;padding-top:1rem;display:grid;gap:.85rem}.validation-box{border:1px solid var(--line);border-radius:16px;background:#08111f;padding:.8rem}.validation-box summary{cursor:pointer;color:#dce9fa;font-weight:800;margin-bottom:.6rem}.matchup-card{display:grid;gap:.8rem}.metrics-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.8rem}.metrics-grid article{border:1px solid var(--line);border-radius:18px;background:#07101e;padding:.9rem}.metrics-grid span{display:block;color:var(--muted);font-size:.78rem}.metrics-grid strong{display:block;margin-top:.3rem;font-size:1.15rem}.threshold-row{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap;margin-top:.7rem}.threshold-row label{min-width:220px}.export-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}.dialog-card{min-width:min(520px,calc(100vw - 2rem));background:var(--panel);border:1px solid var(--line);border-radius:20px;color:var(--text);padding:1.2rem}dialog{border:0;border-radius:22px;background:transparent}dialog::backdrop{background:rgba(0,0,0,.72)}
@media(max-width:1100px){.hero-panel,.army-overview-grid,.matchup-grid,.chart-grid,.editor-layout{grid-template-columns:1fr}.metrics-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid.stats{grid-template-columns:repeat(3,minmax(0,1fr))}.main-nav{top:96px}}
@media(max-width:700px){.topbar,.section-heading{align-items:stretch;flex-direction:column}.top-actions{justify-content:flex-start}.main-nav{top:auto;position:static}.page-shell{padding:.75rem}.section-card,.hero-panel{border-radius:18px;padding:.9rem}.form-grid.two,.form-grid.three,.form-grid.stats,.metrics-grid,.export-grid{grid-template-columns:1fr}.button-row{display:grid;grid-template-columns:1fr}.button-row button,.button-row .file-button{width:100%}.unit-list{max-height:none}.status-pill{white-space:normal}}
/* 20260528_17_battlestate additions */
.form-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.matchup-grid.battle-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.wide-card{grid-column:1/-1}
.preset-row{display:flex;gap:.55rem;flex-wrap:wrap;margin-top:.25rem}
.preset-row button{padding:.5rem .7rem;border-radius:999px;font-size:.84rem}
.chart-explainer,.forecast-table-card{border:1px solid var(--line);border-radius:18px;background:#07101e;padding:1rem;color:var(--muted);line-height:1.55}
.chart-explainer h3,.forecast-table-card h3{margin:.1rem 0 .45rem;color:var(--text)}
.chart-help{color:var(--muted);font-size:.9rem;line-height:1.45;margin:.2rem 0 .75rem}
.metrics-grid.extended{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:1100px){.form-grid.four{grid-template-columns:repeat(2,minmax(0,1fr))}.metrics-grid.extended{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.form-grid.four,.metrics-grid.extended{grid-template-columns:1fr}.preset-row{display:grid;grid-template-columns:1fr}.matchup-grid.battle-grid{grid-template-columns:1fr}}
/* 20260528_18_groups-presets-visuals additions */
.group-editor-panel,.visual-panel,.slider-deck{border:1px solid var(--line);border-radius:18px;background:rgba(7,16,30,.72);padding:1rem;display:grid;gap:.75rem}
.field-status{display:flex;align-items:center;min-height:2.65rem;border:1px solid var(--line);border-radius:12px;background:#060d19;color:#ffd36f;padding:.62rem .7rem;font-weight:800}
.applied-log{border:1px solid rgba(255,211,111,.35);background:rgba(255,211,111,.08);border-radius:14px;padding:.65rem .8rem;color:#ffe1a0;margin:.3rem 0 0}
.visual-grid{display:grid;grid-template-columns:1fr minmax(180px,.65fr) 1fr;gap:1rem;align-items:stretch}.visual-side,.visual-pipeline{border:1px solid var(--line);border-radius:18px;background:#07101e;padding:1rem;min-height:8rem}.visual-side h4{margin:.1rem 0 .4rem}.visual-side p{color:var(--muted);margin:.2rem 0 .75rem}.visual-side.offense{border-color:rgba(73,230,210,.45)}.visual-side.defense{border-color:rgba(255,127,146,.45)}.visual-pipeline{display:grid;gap:.5rem;align-content:center}.pipeline-stage{border:1px solid var(--line);border-radius:999px;padding:.55rem .7rem;text-align:center;background:#0a1322;color:#ecf6ff;font-weight:800}.pip-row{display:flex;flex-wrap:wrap;gap:.18rem;align-items:center}.pip{font-size:1rem;line-height:1}.pip.offense.active,.sym.offense{color:#49e6d2}.pip.defense.active,.sym.defense{color:#ff7f92}.pip.inactive,.sym.muted{color:#53637c}.pip-more{font-size:.8rem;color:var(--muted);margin-left:.25rem}.sym.weapon{color:#ffd36f}.sym.warning{color:#ffb35c}.condition-card-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.6rem}.condition-card{border:1px solid var(--line);border-radius:14px;background:#07101e;padding:.7rem;display:grid;gap:.2rem}.condition-card strong{color:var(--text);font-size:.83rem}.condition-card span{color:var(--muted);font-size:.82rem}.icon-key{border:1px solid var(--line);border-radius:14px;padding:.65rem .8rem;background:#08111f}.icon-key summary{cursor:pointer;font-weight:800}.slider-deck{grid-template-columns:1fr auto;align-items:center}.slider-deck label{grid-template-columns:1fr}.slider-deck input[type=range]{padding:0;accent-color:#49e6d2}.slider-deck span{color:#dce9fa;font-weight:800;min-width:9rem}.explanation-box p{color:var(--muted);line-height:1.55;margin:.4rem 0}.chart-card canvas{position:relative}.chart-card::after{content:'Overlays: gold = expected value, red = kill threshold, shaded/blue = uncertainty or comparison';display:block;color:#9fb0c4;font-size:.78rem;margin-top:.35rem}.weapon-editor .field-status{font-size:.88rem}@media(max-width:1100px){.visual-grid{grid-template-columns:1fr}.condition-card-row{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.condition-card-row,.slider-deck{grid-template-columns:1fr}.slider-deck span{min-width:0}.visual-side,.visual-pipeline{min-height:auto}}
/* 20260528_19_ui-clarity-repair additions */
.top-actions,.section-heading .button-row,.compact-row{position:relative;z-index:20;pointer-events:auto}.army-card{position:relative;overflow:visible}.army-a-card{border-left:4px solid #49e6d2}.army-b-card{border-left:4px solid #ff7f92}.active-edit-card{box-shadow:0 0 0 2px rgba(255,211,111,.28),var(--shadow)}
.editor-focus-hint{margin:.15rem 0 .55rem;color:#ffd36f;font-size:.9rem;border:1px solid rgba(255,211,111,.28);background:rgba(255,211,111,.08);border-radius:12px;padding:.55rem .7rem}.tiny-action{padding:.32rem .55rem;border-radius:10px;font-size:.78rem}.unit-summary-card{border:1px solid var(--line);border-radius:14px;background:#07101e;padding:.65rem;display:grid;gap:.35rem}.unit-summary-card.selected{border-color:#ffd36f;background:rgba(255,211,111,.07)}.unit-summary-heading{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.unit-summary-card span{color:var(--muted);font-size:.84rem}.army-a-unit{border-left:3px solid #49e6d2}.army-b-unit{border-left:3px solid #ff7f92}.group-chip-row{display:flex;flex-wrap:wrap;gap:.32rem;margin-top:.25rem}.group-chip{display:inline-flex;align-items:center;gap:.25rem;border:1px solid var(--line);border-radius:999px;padding:.28rem .52rem;font-size:.76rem;font-weight:800;background:#08111f;color:#dce9fa}.group-chip.selected{outline:2px solid rgba(255,211,111,.5)}.role-line{border-color:rgba(73,230,210,.35);color:#bffbf4}.role-leader{border-color:rgba(255,211,111,.55);color:#ffe1a0;background:rgba(255,211,111,.08)}.role-special{border-color:rgba(97,214,255,.48);color:#c4efff;background:rgba(97,214,255,.07)}.role-heavy{border-color:rgba(183,145,255,.48);color:#e0d1ff;background:rgba(183,145,255,.08)}.role-vehicle{border-color:rgba(154,255,187,.42);color:#caffe0;background:rgba(154,255,187,.06)}.role-melee{border-color:rgba(255,127,146,.48);color:#ffd0d7;background:rgba(255,127,146,.07)}
.visual-group-stack{display:grid;gap:.45rem}.visual-group-row{border:1px solid var(--line);border-radius:12px;background:#08111f;padding:.55rem .65rem;display:grid;gap:.2rem}.visual-group-row.selected{outline:2px solid rgba(255,211,111,.55)}.visual-group-row strong{font-size:.9rem}.visual-group-row span{color:var(--muted);font-size:.8rem}.sym.leader{color:#ffd36f}.sym.heavy{color:#b791ff}.swatch{display:inline-block;width:.85rem;height:.85rem;border-radius:3px;margin:0 .25rem -.1rem .6rem;border:1px solid rgba(255,255,255,.2)}.swatch-a{background:#49e6d2}.swatch-b{background:#ff7f92}.swatch-gold{background:#ffd36f}.swatch-green{background:#7dffb2}.forecast-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:16px;background:#060d19}.forecast-table{width:100%;border-collapse:collapse;min-width:960px;color:#dce9fa}.forecast-table caption{text-align:left;color:var(--muted);padding:.8rem 1rem;border-bottom:1px solid var(--line);line-height:1.4}.forecast-table th,.forecast-table td{padding:.65rem .75rem;border-bottom:1px solid rgba(38,54,79,.8);text-align:right;white-space:nowrap}.forecast-table thead th{position:sticky;top:0;background:#0a1424;color:#ecf6ff;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}.forecast-table th:first-child,.forecast-table td:first-child{text-align:left}.forecast-table tbody tr:nth-child(even){background:rgba(255,255,255,.025)}.forecast-table tbody tr.selected-round{background:rgba(255,211,111,.12);outline:1px solid rgba(255,211,111,.35)}.forecast-table tbody tr:hover{background:rgba(73,230,210,.08)}
@media(max-width:700px){.forecast-table{min-width:760px}.unit-summary-heading{align-items:flex-start}.group-chip{font-size:.72rem}.compact-row{display:flex;flex-wrap:wrap}.compact-row button,.compact-row .file-button{width:auto}}

/* 20260528_20_geometry-editor-flow additions */
:root{
  --army-a:#38bdf8;
  --army-a-soft:rgba(56,189,248,.15);
  --army-b:#fb7185;
  --army-b-soft:rgba(251,113,133,.15);
  --selected:#fbbf24;
  --line-troop:#67e8f9;
  --leader-color:#facc15;
  --special-color:#c084fc;
  --heavy-color:#f97316;
  --vehicle-color:#94a3b8;
  --melee-color:#f87171;
  --support-color:#86efac;
  --inactive-color:#64748b;
}
.local-save-panel{border:1px solid var(--line);background:#07101e;border-radius:18px;padding:.7rem .8rem;display:grid;gap:.45rem;min-width:min(360px,100%)}
.local-save-panel strong{color:var(--selected)}
.local-save-panel span{color:var(--muted);font-size:.84rem;line-height:1.35}
.army-selector-card{cursor:pointer;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease,background .15s ease}
.army-selector-card:hover{transform:translateY(-1px);border-color:rgba(255,255,255,.28)}
.army-selector-card:focus-visible{outline:3px solid var(--selected);outline-offset:3px}
.army-a-card{border-left:6px solid var(--army-a)!important;background:linear-gradient(90deg,var(--army-a-soft),rgba(7,16,30,.74) 34%)!important}
.army-b-card{border-left:6px solid var(--army-b)!important;background:linear-gradient(90deg,var(--army-b-soft),rgba(7,16,30,.74) 34%)!important}
.army-a-card.active-edit-card{box-shadow:0 0 0 2px rgba(56,189,248,.5),0 0 28px rgba(56,189,248,.20),var(--shadow)}
.army-b-card.active-edit-card{box-shadow:0 0 0 2px rgba(251,113,133,.5),0 0 28px rgba(251,113,133,.20),var(--shadow)}
.editing-badge{background:rgba(251,191,36,.16);color:#fde68a;border-color:rgba(251,191,36,.55)!important;letter-spacing:.08em}
.loaded-badge{background:rgba(148,163,184,.12);color:#cbd5e1;border-color:rgba(148,163,184,.35)!important}
.geometry-key-panel{margin:1rem 0;border:1px solid var(--line);border-radius:20px;background:rgba(5,11,21,.72);padding:1rem;display:grid;grid-template-columns:minmax(220px,.55fr) 1fr;gap:1rem;align-items:center}
.geometry-key-panel h3{margin:.1rem 0 .25rem}.geometry-key-panel p{margin:0;color:var(--muted);line-height:1.45}
.geometry-key-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.55rem}.geometry-key-grid span{border:1px solid var(--line);background:#07101e;border-radius:999px;padding:.45rem .55rem;font-size:.82rem;color:#dce9fa;display:flex;align-items:center;gap:.45rem;white-space:nowrap}
.squad-geometry-strip{display:flex;gap:.45rem;flex-wrap:wrap;align-items:center;margin:.45rem 0 .2rem}.geometry-cluster{display:inline-flex;align-items:center;gap:.12rem;padding:.32rem .42rem;border:1px solid rgba(148,163,184,.24);background:#06101e;border-radius:999px;min-height:2rem}.geometry-cluster:hover{border-color:var(--selected)}.geometry-cluster.selected{box-shadow:0 0 0 2px rgba(251,191,36,.28);border-color:rgba(251,191,36,.55)}
.model-shape{display:inline-block;width:.78rem;height:.78rem;flex:0 0 auto;border:1px solid rgba(255,255,255,.38);box-shadow:0 0 0 1px rgba(0,0,0,.35) inset}.shape-line{border-radius:50%}.shape-leader{border-radius:3px}.shape-special{transform:rotate(45deg);border-radius:2px}.shape-heavy{clip-path:polygon(50% 0%,0% 100%,100% 100%)}.shape-walker{clip-path:polygon(25% 5%,75% 5%,100% 50%,75% 95%,25% 95%,0% 50%)}.shape-vehicle{width:1.15rem;border-radius:3px}.color-basic{background:var(--line-troop)}.color-leader{background:var(--leader-color)}.color-special{background:var(--special-color)}.color-heavy{background:var(--heavy-color)}.color-template{background:#fb923c}.color-melee{background:var(--melee-color)}.color-vehicle{background:var(--vehicle-color)}.color-support{background:var(--support-color)}.color-selected{background:var(--selected);box-shadow:0 0 12px rgba(251,191,36,.62)}.color-inactive{background:transparent;border-color:var(--inactive-color);opacity:.55}.model-shape.is-selected{outline:2px solid rgba(251,191,36,.72);outline-offset:2px}.model-shape.is-inactive{filter:grayscale(1)}.geometry-more{font-size:.72rem;color:var(--muted);font-weight:800;margin-left:.16rem}.visual-group-row .squad-geometry-strip{margin-top:.35rem}.visual-side.offense{border-color:rgba(56,189,248,.52);background:linear-gradient(180deg,var(--army-a-soft),#07101e 55%)}.visual-side.defense{border-color:rgba(251,113,133,.52);background:linear-gradient(180deg,var(--army-b-soft),#07101e 55%)}
.statistics-explainer{border:1px solid var(--line);border-radius:22px;background:#07101e;padding:1rem}.statistics-explainer summary{cursor:pointer;color:#ecf6ff;font-size:1.02rem;font-weight:900;letter-spacing:.01em;margin-bottom:.9rem}.explanation-card-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.85rem}.explanation-card-grid article{border:1px solid rgba(148,163,184,.24);border-radius:18px;background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(0,0,0,.08));padding:.9rem;display:grid;gap:.42rem;align-content:start;min-height:12rem}.explanation-card-grid article>span{width:2rem;height:2rem;border-radius:12px;background:rgba(251,191,36,.12);border:1px solid rgba(251,191,36,.34);display:inline-grid;place-items:center;color:#fde68a;font-weight:900}.explanation-card-grid h3{margin:0;color:#f8fafc;font-size:1rem}.explanation-card-grid p{margin:0;color:#cbd5e1;line-height:1.48;font-size:.9rem}.explanation-card-grid em{color:#9fb0c4;font-style:normal;font-size:.82rem;line-height:1.38;border-top:1px solid rgba(148,163,184,.16);padding-top:.45rem}
@media(max-width:1100px){.geometry-key-panel{grid-template-columns:1fr}.geometry-key-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.explanation-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.geometry-key-grid,.explanation-card-grid{grid-template-columns:1fr}.geometry-key-grid span{white-space:normal}.squad-geometry-strip{gap:.3rem}.model-shape{width:.7rem;height:.7rem}.army-selector-card{transform:none!important}}

/* 20260528_21_interaction-results-polish additions */
.active-army-compact-header{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;border:1px solid var(--line);border-radius:18px;background:linear-gradient(90deg,rgba(251,191,36,.10),rgba(7,16,30,.82));padding:.75rem .9rem;margin-top:.25rem}
.active-army-compact-header strong{color:#fde68a;letter-spacing:.02em}.active-army-compact-header span:not(.mini-pill){color:#cbd5e1;font-size:.9rem}.army-metadata-collapsible{border:1px solid rgba(148,163,184,.22);border-radius:14px;background:#07101e;padding:.7rem;margin-top:.45rem;display:grid;gap:.55rem}.army-metadata-collapsible summary{cursor:pointer;color:#dce9fa;font-weight:900;margin-bottom:.55rem}.army-metadata-collapsible[open]{display:grid}.editor-side{align-content:start}.editor-side .unit-list{max-height:38rem}.calculation-action-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;border:1px solid rgba(251,191,36,.26);border-radius:22px;background:linear-gradient(90deg,rgba(251,191,36,.11),rgba(7,16,30,.88));padding:1rem}.calculation-action-row strong{display:block;color:#f8fafc;font-size:1.05rem}.calculation-action-row span{display:block;color:#cbd5e1;font-size:.9rem;margin-top:.15rem}.run-math{position:relative;overflow:visible;isolation:isolate;min-width:9.5rem;transition:transform .16s ease,box-shadow .18s ease}.run-math.dirty{animation:dirtyPulse 1.45s ease-in-out infinite;box-shadow:0 0 0 0 rgba(251,191,36,.55),0 0 18px rgba(251,191,36,.18)}@keyframes dirtyPulse{0%{box-shadow:0 0 0 0 rgba(251,191,36,.55),0 0 18px rgba(251,191,36,.18)}70%{box-shadow:0 0 0 10px rgba(251,191,36,0),0 0 20px rgba(251,191,36,.22)}100%{box-shadow:0 0 0 0 rgba(251,191,36,0),0 0 18px rgba(251,191,36,.18)}}.run-math .button-label{position:relative;z-index:2}.robot-arm{position:absolute;top:50%;width:1.3rem;height:.35rem;background:linear-gradient(90deg,#8b6f3a,#f8d989,#8b6f3a);border:1px solid rgba(0,0,0,.35);border-radius:999px;opacity:0;z-index:1}.robot-arm::after{content:'';position:absolute;top:-.28rem;width:.45rem;height:.9rem;border:2px solid #caa45e;border-radius:.2rem}.robot-arm-left{left:.1rem;transform:translate(-130%,-50%)}.robot-arm-left::after{right:-.25rem}.robot-arm-right{right:.1rem;transform:translate(130%,-50%)}.robot-arm-right::after{left:-.25rem}.run-math.is-calculating-anim{animation:buttonClunk .9s ease-in-out}.run-math.is-calculating-anim .robot-arm-left{animation:armLeft .9s ease-in-out}.run-math.is-calculating-anim .robot-arm-right{animation:armRight .9s ease-in-out}@keyframes buttonClunk{0%,100%{transform:scale(1)}30%{transform:scale(1.045)}55%{transform:scale(.99)}75%{transform:scale(1.02)}}@keyframes armLeft{0%,100%{opacity:0;transform:translate(-135%,-50%)}25%,70%{opacity:1;transform:translate(-78%,-50%)}45%{opacity:1;transform:translate(-62%,-50%) rotate(-6deg)}}@keyframes armRight{0%,100%{opacity:0;transform:translate(135%,-50%)}25%,70%{opacity:1;transform:translate(78%,-50%)}45%{opacity:1;transform:translate(62%,-50%) rotate(6deg)}}@media (prefers-reduced-motion: reduce){.run-math,.run-math.dirty,.run-math.is-calculating-anim,.robot-arm{animation:none!important;transition:none!important}.robot-arm{display:none}}
.result-state-compact{display:grid;justify-items:end;gap:.4rem;color:var(--muted);font-size:.85rem}.outdated-badge{background:rgba(251,191,36,.16)!important;color:#fde68a!important;border-color:rgba(251,191,36,.55)!important}.result-status-banner{border:1px solid rgba(125,255,191,.34);border-radius:16px;padding:.8rem 1rem;font-weight:900;letter-spacing:.02em}.result-status-banner.current{background:rgba(125,255,191,.08);color:#caffe3}.result-status-banner.outdated{background:rgba(251,191,36,.12);border-color:rgba(251,191,36,.44);color:#fde68a}.result-metrics article{position:relative;overflow:hidden;display:grid;gap:.35rem}.result-metrics article::before{content:'';position:absolute;inset:0 0 auto 0;height:3px;background:rgba(148,163,184,.35)}.result-metrics article.metric-great::before,.result-metrics article.metric-good::before{background:linear-gradient(90deg,#7dffbf,#49e6d2)}.result-metrics article.metric-moderate::before{background:linear-gradient(90deg,#fbbf24,#f97316)}.result-metrics article.metric-risky::before,.result-metrics article.metric-wasteful::before{background:linear-gradient(90deg,#f97316,#c084fc)}.result-metrics article.metric-poor::before{background:linear-gradient(90deg,#fb7185,#ef4444)}.result-metrics article.stale-card{filter:saturate(.75);opacity:.72}.metric-badge{display:inline-flex;width:max-content;border-radius:999px;padding:.18rem .48rem;font-style:normal;font-size:.68rem;font-weight:900;letter-spacing:.06em;background:rgba(148,163,184,.14);border:1px solid rgba(148,163,184,.26);color:#dce9fa}.metric-meter{display:block;height:.42rem;border-radius:999px;background:#101b2e;border:1px solid rgba(148,163,184,.22);overflow:hidden}.metric-meter span{display:block;height:100%;width:0;background:linear-gradient(90deg,#fb7185,#fbbf24,#7dffbf,#49e6d2);transition:width .22s ease}.metric-interpretation{margin:.05rem 0 0!important;color:#9fb0c4!important;font-size:.76rem!important;line-height:1.3!important}.floating-squad-card{position:fixed;top:1rem;right:1rem;z-index:80;width:min(340px,calc(100vw - 2rem));border:1px solid rgba(251,191,36,.36);border-radius:20px;background:rgba(5,11,21,.94);box-shadow:0 18px 44px rgba(0,0,0,.45);padding:.85rem;backdrop-filter:blur(14px)}.floating-squad-card h3{margin:.05rem 0 .25rem;color:#fde68a;font-size:.96rem}.floating-squad-card p{margin:.1rem 0 .45rem;color:#dce9fa;line-height:1.35}.floating-squad-card .squad-geometry-strip{margin:.35rem 0}.floating-squad-meta{border-top:1px solid rgba(148,163,184,.18);padding-top:.5rem;margin-top:.45rem;color:#cbd5e1;font-size:.82rem}.floating-squad-card .geometry-cluster{pointer-events:auto}.editor-layout{scroll-margin-top:1rem}
@media(max-width:900px){.calculation-action-row{align-items:stretch;flex-direction:column}.result-state-compact{justify-items:start}.floating-squad-card{display:none!important}.active-army-compact-header{align-items:flex-start;flex-direction:column}.editor-side .unit-list{max-height:none}}
.unit-selector-card{border:1px solid var(--line);border-radius:14px;background:#07101e;padding:.55rem;display:grid;gap:.32rem}.unit-selector-card.selected{border-color:var(--selected);background:rgba(251,191,36,.07);box-shadow:0 0 0 1px rgba(251,191,36,.18)}.unit-select-main{display:grid;gap:.2rem;width:100%;text-align:left;border:0;background:transparent;color:var(--text);padding:.25rem;border-radius:10px}.unit-select-main:hover{background:rgba(255,255,255,.04)}.unit-select-main strong{display:block}.unit-select-main span{color:var(--muted);font-size:.82rem}


/* AISOP.live integration notice */
.portal-disclaimer {
  max-width: 76ch;
  margin: 0.8rem 0 0;
  padding: 0.75rem 0.9rem;
  border: 1px solid rgba(251, 191, 36, 0.35);
  border-radius: 16px;
  background: rgba(251, 191, 36, 0.08);
  color: #fde68a;
  font-weight: 700;
}

/* 20260528_24 compact uHammer header + dismissible local file notice */
.topbar {
  position: relative;
  top: auto;
  z-index: 3;
  align-items: flex-start;
  padding: 0.55rem clamp(1rem, 2.5vw, 1.6rem) 0.65rem;
  gap: 0.85rem;
}
.brand-block h1 {
  margin: 0.04rem 0;
  font-size: clamp(1.8rem, 3.2vw, 2.65rem);
  line-height: 0.96;
}
.brand-block .topbar-subtitle {
  margin: 0.1rem 0 0.25rem;
  color: var(--muted);
  line-height: 1.25;
}
.topbar .eyebrow {
  line-height: 1.1;
}
.top-actions {
  padding-top: 0.05rem;
}
.main-nav {
  top: 48px;
  z-index: 6;
  padding-block: 0.48rem;
}
.page-shell {
  padding-top: clamp(0.75rem, 2vw, 1.15rem);
}
.compact-file-notice {
  max-width: min(66rem, 100%);
  margin: 0.45rem 0 0;
  padding: 0.48rem 0.58rem 0.48rem 0.7rem;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  font-size: 0.86rem;
  line-height: 1.32;
}
.compact-file-notice span {
  min-width: 0;
}
.notice-dismiss,
.file-mode-pill {
  border: 1px solid rgba(251, 191, 36, 0.42);
  background: rgba(251, 191, 36, 0.12);
  color: #fde68a;
  box-shadow: none;
  white-space: nowrap;
}
.notice-dismiss {
  padding: 0.42rem 0.62rem;
  border-radius: 999px;
  font-size: 0.78rem;
  min-height: 0;
}
.file-mode-pill {
  margin-top: 0.38rem;
  padding: 0.38rem 0.6rem;
  border-radius: 999px;
  font-size: 0.78rem;
  font-weight: 800;
}
.notice-dismiss:hover,
.file-mode-pill:hover {
  border-color: rgba(251, 191, 36, 0.7);
  background: rgba(251, 191, 36, 0.18);
}
body.file-notice-dismissed .brand-block h1 {
  font-size: clamp(1.75rem, 3vw, 2.45rem);
}
body.file-notice-dismissed .topbar {
  padding-block: 0.48rem;
}
#armiesSection,
#matchupSection,
#resultsSection,
#planningSection,
#exportSection,
#aboutSection,
.editor-layout {
  scroll-margin-top: 7.25rem;
}
@media(max-width:1100px) {
  .main-nav { top: 56px; }
}
@media(max-width:700px) {
  .topbar { align-items: stretch; flex-direction: column; }
  .compact-file-notice { align-items: stretch; flex-direction: column; }
  .notice-dismiss,
  .file-mode-pill { width: 100%; justify-content: center; }
  .main-nav { top: auto; position: static; }
  #armiesSection,
  #matchupSection,
  #resultsSection,
  #planningSection,
  #exportSection,
  #aboutSection,
  .editor-layout { scroll-margin-top: 1rem; }
}

/* 20260528_24 mobile usability pass for uHammer
   Keeps the full workbench available on phones while reducing header/nav height,
   preventing accidental horizontal page overflow, and making dense controls easier to tap. */
* { box-sizing: border-box; }
html, body { max-width: 100%; overflow-x: clip; }
.page-shell, .section-card, .army-card, .matchup-card, .chart-card, .editor-side, .editor-main { min-width: 0; }
.form-grid > *, .section-heading > *, .card-header > *, .subheading-row > *, .topbar > *, .top-actions > * { min-width: 0; }
.group-chip, .mini-pill, .status-pill, .unit-button strong, .unit-button span, .unit-summary-card span, .geometry-cluster, .pipeline-stage { overflow-wrap: anywhere; }

@media(max-width: 860px) {
  .aisop-bridge__inner {
    padding-block: 0.45rem;
    gap: 0.45rem;
  }
  .aisop-bridge__nav {
    width: 100%;
    overflow-x: auto;
    flex-wrap: nowrap;
    justify-content: flex-start;
    padding-bottom: 0.25rem;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
  }
  .aisop-bridge__nav a {
    white-space: nowrap;
  }
  .topbar {
    padding: 0.48rem 0.8rem 0.55rem;
  }
  .top-actions {
    width: 100%;
    justify-content: flex-start;
  }
  .top-actions .status-pill {
    flex: 1 1 100%;
  }
  .main-nav {
    position: static;
    flex-wrap: nowrap;
    overflow-x: auto;
    gap: 0.35rem;
    padding: 0.45rem 0.75rem;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
  }
  .main-nav a {
    flex: 0 0 auto;
    padding: 0.48rem 0.68rem;
    white-space: nowrap;
    font-size: 0.86rem;
  }
  .hero-panel {
    gap: 0.7rem;
  }
  .workflow-strip {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .workflow-strip span {
    padding: 0.58rem 0.65rem;
    font-size: 0.85rem;
  }
}

@media(max-width: 700px) {
  body {
    font-size: 15px;
  }
  .brand-block h1 {
    font-size: clamp(1.9rem, 11vw, 2.45rem);
  }
  .brand-block .topbar-subtitle {
    font-size: 0.96rem;
  }
  .compact-file-notice {
    padding: 0.55rem 0.65rem;
    gap: 0.55rem;
    font-size: 0.83rem;
  }
  .notice-dismiss,
  .file-mode-pill,
  .top-actions button,
  .local-save-panel button,
  .button-row button,
  .button-row .file-button,
  .run-math {
    min-height: 44px;
  }
  .notice-dismiss,
  .file-mode-pill {
    width: 100%;
  }
  .top-actions {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.45rem;
  }
  .top-actions button,
  .top-actions .status-pill {
    width: 100%;
    justify-content: center;
    text-align: center;
    white-space: normal;
  }
  .page-shell {
    width: 100%;
    padding: 0.7rem;
    gap: 0.85rem;
  }
  .hero-panel,
  .section-card,
  .army-card,
  .matchup-card,
  .chart-card,
  .editor-side,
  .editor-main {
    border-radius: 16px;
    padding: 0.82rem;
  }
  .hero-panel h2,
  .section-heading h2 {
    font-size: clamp(1.28rem, 7vw, 1.85rem);
    line-height: 1.08;
  }
  .section-heading,
  .card-header,
  .subheading-row,
  .calculation-action-row {
    align-items: stretch;
  }
  .local-save-panel {
    width: 100%;
    min-width: 0;
  }
  .army-overview-grid,
  .matchup-grid,
  .chart-grid,
  .editor-layout,
  .visual-grid,
  .export-grid,
  .metrics-grid,
  .metrics-grid.extended,
  .condition-card-row,
  .form-grid,
  .form-grid.two,
  .form-grid.three,
  .form-grid.four,
  .form-grid.stats {
    grid-template-columns: 1fr !important;
  }
  .button-row,
  .compact-row {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.45rem;
  }
  .button-row button,
  .button-row .file-button,
  .compact-row button,
  .compact-row .file-button {
    width: 100%;
    justify-content: center;
  }
  .unit-list,
  .editor-side .unit-list {
    max-height: 70vh;
    overflow: auto;
    -webkit-overflow-scrolling: touch;
  }
  .unit-list.compact {
    max-height: 16rem;
  }
  .unit-selector-card,
  .unit-summary-card,
  .unit-button {
    padding: 0.65rem;
  }
  .group-chip-row,
  .squad-geometry-strip {
    gap: 0.28rem;
  }
  .group-chip {
    max-width: 100%;
    white-space: normal;
    border-radius: 12px;
    line-height: 1.22;
  }
  .geometry-cluster {
    max-width: 100%;
    overflow-x: auto;
    border-radius: 12px;
  }
  .result-state-compact {
    justify-items: stretch;
  }
  .result-state-compact .mini-pill,
  .result-state-compact span {
    justify-content: center;
    text-align: center;
  }
  .forecast-table-card {
    padding: 0.75rem;
  }
  .forecast-table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .dialog-card {
    min-width: 0;
    width: calc(100vw - 1.5rem);
    padding: 1rem;
  }
}

@media(max-width: 420px) {
  .page-shell { padding: 0.55rem; }
  .hero-panel,
  .section-card,
  .army-card,
  .matchup-card,
  .chart-card,
  .editor-side,
  .editor-main { padding: 0.72rem; }
  .workflow-strip { grid-template-columns: 1fr; }
  .eyebrow { letter-spacing: 0.08em; font-size: 0.68rem; }
  .main-nav a { font-size: 0.8rem; padding: 0.44rem 0.58rem; }
  .model-shape { width: 0.66rem; height: 0.66rem; }
}


/* 20260528_29 thinbar correction
   The previous dismissible local-file notice was too visually complicated and could leave
   a second restore pill under the warning. The top file-warning block is now removed from
   the markup entirely; this override keeps the uHammer header as a thin portal bar. */
#fileNotice,
#restoreFileNotice,
.compact-file-notice,
.notice-dismiss,
.file-mode-pill {
  display: none !important;
}
.topbar {
  position: relative;
  top: auto;
  z-index: 3;
  align-items: center;
  padding: 0.34rem clamp(0.9rem, 2.2vw, 1.35rem);
  gap: 0.7rem;
  min-height: 0;
}
.brand-block {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: baseline;
  column-gap: 0.62rem;
  row-gap: 0.02rem;
  min-width: 0;
}
.brand-block .eyebrow {
  grid-column: 1 / -1;
  margin: 0;
  font-size: 0.58rem;
  line-height: 1;
  letter-spacing: 0.12em;
}
.brand-block h1 {
  margin: 0;
  font-size: clamp(1.45rem, 2.6vw, 1.95rem);
  line-height: 0.95;
  letter-spacing: -0.035em;
}
.brand-block .topbar-subtitle {
  margin: 0;
  color: var(--muted);
  font-size: 0.86rem;
  line-height: 1.15;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.top-actions {
  align-items: center;
  gap: 0.4rem;
  padding-top: 0;
  flex-wrap: nowrap;
}
.top-actions .status-pill {
  padding: 0.3rem 0.52rem;
  font-size: 0.74rem;
  min-height: 0;
  max-width: min(32rem, 48vw);
  overflow: hidden;
  text-overflow: ellipsis;
}
.top-actions button {
  padding: 0.4rem 0.58rem;
  border-radius: 12px;
  font-size: 0.8rem;
  min-height: 34px;
  white-space: nowrap;
}
.main-nav {
  top: 42px;
  padding: 0.38rem clamp(0.9rem, 2.2vw, 1.35rem);
}
.page-shell {
  padding-top: clamp(0.65rem, 1.8vw, 1rem);
}
#armiesSection,
#matchupSection,
#resultsSection,
#planningSection,
#exportSection,
#aboutSection,
.editor-layout {
  scroll-margin-top: 5.6rem;
}
@media(max-width: 860px) {
  .topbar {
    align-items: stretch;
    padding: 0.38rem 0.75rem;
  }
  .brand-block {
    grid-template-columns: auto minmax(0, 1fr);
  }
  .top-actions {
    width: 100%;
    overflow-x: auto;
    justify-content: flex-start;
    padding-bottom: 0.12rem;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
  }
  .top-actions .status-pill {
    flex: 0 0 auto;
    max-width: 16rem;
    white-space: nowrap;
  }
  .top-actions button {
    flex: 0 0 auto;
  }
  .main-nav {
    position: static;
    top: auto;
  }
}
@media(max-width: 560px) {
  .brand-block {
    grid-template-columns: 1fr;
  }
  .brand-block h1 {
    font-size: clamp(1.55rem, 9vw, 2rem);
  }
  .brand-block .topbar-subtitle {
    font-size: 0.82rem;
    white-space: normal;
  }
  .top-actions .status-pill {
    display: none;
  }
}


/* 20260601_00 layoutfix: metric bars use neutral tracks with clipped color fill only. */
.metric-meter{background:rgba(16,27,46,.82)!important;border:1px solid rgba(148,163,184,.30)!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.025)}
.metric-meter span{max-width:100%;background:linear-gradient(90deg,#fb7185 0%,#fbbf24 52%,#7dffbf 78%,#49e6d2 100%)!important;border-radius:999px;box-shadow:0 0 10px rgba(73,230,210,.20)}
.result-metrics article.metric-good .metric-meter span,.result-metrics article.metric-great .metric-meter span{background:linear-gradient(90deg,#7dffbf,#49e6d2)!important}.result-metrics article.metric-moderate .metric-meter span{background:linear-gradient(90deg,#fbbf24,#f97316)!important}.result-metrics article.metric-risky .metric-meter span,.result-metrics article.metric-wasteful .metric-meter span{background:linear-gradient(90deg,#f97316,#c084fc)!important}.result-metrics article.metric-poor .metric-meter span{background:linear-gradient(90deg,#fb7185,#ef4444)!important}
