@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700&family=DM+Sans:wght@400;500;600;700&display=swap');
:root{color-scheme:dark;--bg:#101413;--panel:#1a201e;--panel2:#212925;--border:#35403a;--ink:#f0f3e9;--muted:#b0bbb2;--accent:#e6f18b;--orange:#ff905a;--danger:#ffa39a;font-family:'DM Sans',system-ui,sans-serif;font-size:16px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;border:1px solid var(--border);background:var(--panel2);border-radius:8px;min-height:44px;padding:10px 14px}button:hover{border-color:var(--accent)}button:disabled{opacity:.4;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}a{color:var(--accent);text-underline-offset:4px}h1,h2,h3,p{margin-top:0}h1,h2,h3,.display{font-family:'Barlow Condensed','Arial Narrow',sans-serif}h1{font-size:clamp(2.75rem,7vw,4.5rem);line-height:1;margin-bottom:16px;text-transform:uppercase;letter-spacing:.01em}h2{font-size:1.8rem;margin-bottom:16px}h3{font-size:1.45rem;margin-bottom:6px}p{line-height:1.6}small,.small{font-size:.875rem;color:var(--muted)}.label{text-transform:uppercase;font-size:.75rem;letter-spacing:.13em;font-weight:700;color:var(--muted)}.shell{max-width:1200px;margin:auto;padding:0 32px 60px}.topbar{display:flex;align-items:center;justify-content:space-between;padding:24px 0;border-bottom:1px solid var(--border);gap:16px}.brand{display:flex;align-items:center;gap:10px;font-size:1.2rem;font-weight:700;letter-spacing:.08em}.brand svg{color:var(--orange)}.status{display:flex;align-items:center;gap:10px}.status span{color:var(--muted);font-size:.875rem}.team-select{min-width:210px;background:var(--panel);border:1px solid var(--border);color:var(--ink);padding:12px;border-radius:8px}.hero{display:flex;align-items:end;justify-content:space-between;gap:24px;padding:34px 0 26px}.eyebrow{color:var(--accent);margin-bottom:12px}.hero p{margin:0;color:var(--muted)}.team-stamp{height:96px;width:96px;border:1px solid var(--border);display:grid;place-content:center;text-align:center;color:var(--accent);border-radius:50%;flex-shrink:0}.team-stamp strong{font:600 2.6rem 'Barlow Condensed',sans-serif}.team-stamp span{font-size:.7rem;letter-spacing:.14em}.nav{display:flex;border-bottom:1px solid var(--border);gap:28px;margin-bottom:26px}.nav button{border:0;border-radius:0;background:none;color:var(--muted);display:flex;gap:8px;align-items:center;padding:14px 4px;border-bottom:3px solid transparent}.nav button.active{color:var(--accent);border-color:var(--accent)}.nav svg{width:19px;height:19px}.toolbar{display:flex;gap:12px;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:wrap}.search{max-width:430px;flex:1;min-width:180px}.search input,input,textarea{width:100%;background:var(--panel);border:1px solid var(--border);color:var(--ink);padding:12px 14px;border-radius:8px}.segmented{display:flex;gap:4px;padding:4px;background:var(--panel);border-radius:9px}.segmented button{background:none;border:0;padding:8px 12px}.segmented button.active{background:var(--accent);color:var(--bg)}.layout{display:grid;grid-template-columns:minmax(0,1fr) 295px;gap:26px}.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-content:start}.card{border:1px solid var(--border);background:var(--panel);border-radius:10px;overflow:hidden}.op-card{position:relative}.op-open{width:100%;text-align:left;background:none;border:0;border-radius:0;display:block;padding:20px 18px 14px}.op-open:hover{background:#242c27}.op-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}.ordinal{font:500 1.1rem 'Barlow Condensed',sans-serif;color:var(--muted)}.badge{font-size:.75rem;line-height:1.4;background:#303a28;color:var(--accent);border-radius:4px;padding:4px 7px;text-transform:uppercase;letter-spacing:.04em}.badge.orange{background:#463027;color:#ffb08b}.badge.dead{background:#492f2b;color:var(--danger)}.op-open h3{font-size:1.5rem;line-height:1.15;min-height:1.75em;margin-bottom:12px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;background:var(--bg);border:1px solid #303a32;border-radius:6px;padding:10px 4px}.stat{text-align:center;border-right:1px solid var(--border)}.stat:last-child{border:0}.stat span{display:block;font-size:.7rem;letter-spacing:.08em;color:var(--muted);margin-bottom:4px}.stat strong{font:600 1.6rem 'Barlow Condensed',sans-serif}.op-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-top:1px solid var(--border)}.wound-control{display:flex;align-items:center;gap:8px}.square{min-width:44px;padding:8px;font-size:1.15rem}.wound-control strong{min-width:38px;text-align:center}.ready-toggle{font-size:.875rem;padding:8px 10px}.op-card.expended{border-color:#4b5145}.op-card.incapacitated{opacity:.65}.side{display:flex;flex-direction:column;gap:16px}.side .card{padding:20px}.side h3{font-size:1.5rem}.side p{font-size:.875rem}.accent-card{border-top:3px solid var(--accent)}.mini-score{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0}.mini-score div{border-right:1px solid var(--border)}.mini-score div:last-child{border:0}.mini-score strong{display:block;font:600 2rem 'Barlow Condensed',sans-serif}.mini-score span{font-size:.75rem;color:var(--muted)}.primary{background:var(--accent);border-color:var(--accent);color:#151b13;font-weight:700}.full{width:100%}.link-button{background:none;border:0;color:var(--accent);padding:8px 0;text-align:left}.muted{color:var(--muted)}.note{padding:14px 16px;border:1px solid var(--border);border-radius:8px;color:var(--muted);font-size:.875rem;line-height:1.6;margin-bottom:20px;background:var(--panel)}.empty{grid-column:1/-1;text-align:center;padding:40px;color:var(--muted)}.rule-list{display:grid;gap:12px}.rule-card{padding:18px 20px}.rule-card p{margin:10px 0;font-size:1rem}.rule-meta{display:flex;justify-content:space-between;gap:12px;align-items:center}.rule-meta h3{margin:0}.rule-actions{display:flex;align-items:center;gap:14px;margin-top:15px}.rule-actions a{font-size:.875rem}.section-label{margin:26px 0 12px}.battle-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.counter-card{padding:22px}.counter{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:16px}.counter output{font:600 3.2rem 'Barlow Condensed',sans-serif}.turns{display:flex;gap:8px;margin:18px 0}.turns span{flex:1;text-align:center;background:var(--bg);padding:12px 0;border:1px solid var(--border);border-radius:6px}.turns .active{background:var(--accent);color:var(--bg);font-weight:700}.battle-lower{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:20px}.battle-lower .card{padding:22px}.check{display:flex;gap:12px;align-items:start;margin:14px 0;color:var(--muted)}.check input{width:22px;height:22px;accent-color:var(--accent);flex-shrink:0}.check label{line-height:1.6}.rule-card summary{cursor:pointer;font-weight:600;min-height:32px;line-height:1.5}.rule-card[open] summary{color:var(--accent)}.footer{margin-top:32px;border-top:1px solid var(--border);padding-top:20px;display:flex;justify-content:space-between;gap:16px;font-size:.75rem;color:var(--muted);line-height:1.7}dialog{background:var(--bg);color:var(--ink);border:1px solid var(--border);border-radius:14px;padding:0;width:min(640px,calc(100% - 24px));max-height:90dvh}dialog::backdrop{background:#000b;backdrop-filter:blur(3px)}.dialog-head{position:sticky;top:0;background:var(--bg);z-index:1;padding:18px 22px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;gap:12px;align-items:center}.dialog-head h2{margin:0}.dialog-body{padding:22px}.dialog-body h1{font-size:2.6rem}.dialog-body .stats{margin:18px 0}.weapon{border:1px solid var(--border);border-radius:8px;margin:12px 0;padding:14px;background:var(--panel)}.weapon h3{font-size:1.35rem}.weapon-numbers{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:14px 0}.weapon-numbers span{display:block;color:var(--muted);font-size:.75rem}.weapon-numbers strong{font-size:1.3rem}.tags{display:flex;gap:6px;flex-wrap:wrap}.tag{min-height:34px;font-size:.875rem;padding:5px 8px;color:var(--accent)}.source{font-size:.875rem;margin:18px 0;line-height:1.7;color:var(--muted)}.roster-option{display:flex;justify-content:space-between;gap:12px;align-items:center;border-bottom:1px solid var(--border);padding:12px 0}.roster-option strong{display:block}.roster-option .wound-control{flex-shrink:0}.order{display:flex;gap:8px;margin:18px 0}.order button{flex:1}.order button.active{background:var(--accent);color:var(--bg)}textarea{resize:vertical;min-height:130px;line-height:1.5}#toast{position:fixed;bottom:32px;left:50%;transform:translateX(-50%);background:var(--accent);color:var(--bg);padding:12px 20px;border-radius:8px;z-index:10;max-width:90%;box-shadow:0 4px 24px #0008;display:none}#toast.visible{display:block}.intro{max-width:680px}.help-text{background:var(--panel2);padding:12px;border-radius:6px;margin-top:12px;font-size:.875rem;line-height:1.6}.danger{color:var(--danger)}
@media(min-width:1000px){.op-open h3{font-size:1.65rem}.mobile-only{display:none}}
@media(max-width:850px){.shell{padding:0 20px 120px}.layout{grid-template-columns:1fr}.side{display:grid;grid-template-columns:1fr 1fr}.battle-grid{grid-template-columns:1fr 1fr}.battle-grid .counter-card:first-child{grid-column:1/-1}.nav{position:fixed;bottom:0;left:0;right:0;z-index:5;background:#151b18f5;backdrop-filter:blur(12px);margin:0;justify-content:space-around;gap:0;border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}.nav button{flex:1;flex-direction:column;gap:5px;font-size:.75rem;padding:12px 2px;border-bottom:0;border-top:3px solid transparent}.nav svg{height:22px;width:22px}.hero{padding:28px 0 24px}.hero h1{font-size:3rem}.team-stamp{width:72px;height:72px}.team-stamp strong{font-size:2rem}.team-stamp span{font-size:.6rem}.status span{display:none}.team-select{min-width:0;max-width:190px;font-size:.875rem}.topbar{padding:16px 0}.brand{font-size:1rem}.brand svg{width:22px}.footer{flex-direction:column}#toast{bottom:95px}.battle-lower{grid-template-columns:1fr}}
@media(max-width:520px){.shell{padding-left:16px;padding-right:16px}.cards{grid-template-columns:1fr}.op-open{padding:16px}.op-open h3{min-height:0;margin-bottom:16px;font-size:1.8rem}.op-top{margin-bottom:10px}.side{grid-template-columns:1fr}.hero{gap:12px}.hero h1{font-size:2.7rem}.hero p{font-size:.875rem}.team-stamp{display:none}.toolbar .search{flex-basis:100%;max-width:none}.segmented{flex:1}.segmented button{flex:1;font-size:.875rem}.counter-card{padding:16px}.counter{gap:4px}.battle-grid{gap:12px}.counter output{font-size:2.8rem}.brand{letter-spacing:.04em}.team-select{max-width:175px}.dialog-body,.dialog-head{padding:18px}.dialog-head h2{font-size:1.5rem}.rule-meta{align-items:start}.rule-actions{flex-wrap:wrap}.stat strong{font-size:1.8rem}}
@media(prefers-reduced-motion:no-preference){button,a{transition:background .15s,border-color .15s}dialog[open]{animation:appear .15s ease-out}@keyframes appear{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}}
.hero>div:first-child{min-width:0;flex:1}.hero-heading{display:flex;align-items:center;flex-wrap:wrap;gap:8px 20px}.hero-heading h1{margin-bottom:0}.mode-switch{position:relative;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 2px;font-size:.875rem;white-space:nowrap;cursor:pointer;flex-shrink:0}.mode-switch input{position:absolute;opacity:0;width:1px;height:1px;padding:0}.switch-track{display:block;width:36px;height:22px;border-radius:20px;background:var(--border);padding:3px;flex-shrink:0}.switch-track:after{content:'';display:block;width:16px;height:16px;border-radius:50%;background:var(--ink)}.mode-switch input:checked+.switch-track{background:var(--accent)}.mode-switch input:checked+.switch-track:after{transform:translateX(14px);background:var(--bg)}.mode-switch input:focus-visible+.switch-track{outline:2px solid var(--ink);outline-offset:4px}.starter-settings{padding:18px;margin-bottom:20px}.starter-settings .small{display:block}.starter-settings p{margin:12px 0 0}
/* Adapt to usable space, including iPad Split View and phone landscape. */
html{-webkit-text-size-adjust:100%;scroll-padding-bottom:100px}
body:has(dialog[open]){overflow:hidden}
.shell{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right));padding-top:env(safe-area-inset-top)}
input[type="search"],select.team-select,textarea{font-size:1rem}
.tag,.rule-card summary{min-height:44px}
.hero{padding-top:20px;padding-bottom:18px}.hero h1{font-size:clamp(2rem,5vw,3.2rem)}.hero .eyebrow{margin-bottom:8px}
.team-stamp{width:64px;height:64px}.team-stamp strong{font-size:1.8rem}.team-stamp span{font-size:.65rem}
.toolbar,.roster-pane,.operative-pane,.team-workspace{min-width:0}
.op-footer{flex-wrap:wrap}.ready-toggle{flex-grow:1}
.op-card.selected{border-color:var(--accent);box-shadow:inset 3px 0 var(--accent)}
.operative-pane{border:1px solid var(--border);border-radius:12px;background:var(--bg)}
.pane-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--border);background:var(--panel)}
.operative-pane .dialog-body{padding:18px}.operative-pane h1{font-size:2.25rem;overflow-wrap:anywhere}
.team-extras{margin-top:24px}.team-extras .side{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
@media(min-width:700px) and (min-height:500px){
 .shell{max-width:1440px;padding-left:max(24px,env(safe-area-inset-left));padding-right:max(24px,env(safe-area-inset-right));padding-bottom:40px}
 .topbar{padding:16px 0}.hero{padding:16px 0}.team-select{max-width:none}
 .nav{position:sticky;top:0;bottom:auto;z-index:5;display:flex;justify-content:flex-start;gap:24px;margin-bottom:20px;padding:0;background:var(--bg);border-top:0;border-bottom:1px solid var(--border);backdrop-filter:none}
 .nav button{flex:0 1 auto;flex-direction:row;font-size:.875rem;gap:8px;padding:14px 4px;border-top:0;border-bottom:3px solid transparent}.nav svg{width:20px;height:20px}
 .nav button.active{border-bottom-color:var(--accent)}
 .team-workspace{grid-template-columns:minmax(280px,.85fr) minmax(0,1.2fr);gap:20px;align-items:start}
 .team-workspace .roster-pane{display:flex;flex-direction:column;max-height:calc(100dvh - 92px);position:sticky;top:76px}
 .team-workspace .roster-pane>p{margin-bottom:12px;flex-shrink:0}
 .team-workspace .cards{display:grid;grid-template-columns:1fr;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;min-height:0;padding:2px 4px 2px 2px}
 .team-workspace .op-open{padding:14px}.team-workspace .op-open h3{font-size:1.5rem;min-height:0;margin-bottom:12px}.team-workspace .op-top{margin-bottom:10px}
 .operative-pane{position:sticky;top:76px;max-height:calc(100dvh - 92px);overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
 .operative-pane .pane-heading{position:sticky;top:0;z-index:1}
 .battle-lower{grid-template-columns:1fr 1fr}.battle-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.battle-grid .counter-card:first-child{grid-column:auto}
 #toast{bottom:24px}
}
@media(max-width:699px),(max-height:499px){
 .shell{padding-bottom:calc(104px + env(safe-area-inset-bottom))}
 .topbar{gap:8px;padding:12px 0}.brand{font-size:.9rem;gap:6px}.brand svg{width:20px}.status>span{display:none}.team-select{min-width:0;max-width:180px;padding:10px 8px}
 .team-stamp{display:none}.hero{padding:16px 0}.hero h1{font-size:2.25rem}.hero-heading{gap:4px 16px}
 .nav{position:fixed;top:auto;bottom:0;left:0;right:0;z-index:5;justify-content:space-around;gap:0;margin:0;background:#151b18f5;backdrop-filter:blur(12px);border-top:1px solid var(--border);padding:0 max(8px,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(8px,env(safe-area-inset-left))}
 .nav button{flex:1;flex-direction:column;font-size:.75rem;gap:4px;padding:10px 2px;border-bottom:0;border-top:3px solid transparent}.nav button.active{border-top-color:var(--accent)}
 .layout{grid-template-columns:1fr}.cards{grid-template-columns:1fr}.side{grid-template-columns:1fr}.toolbar{gap:8px}.toolbar .search{flex-basis:100%;max-width:none}
 .segmented{flex:1}.segmented button{font-size:.875rem;padding:8px}.toolbar #edit-roster{font-size:.875rem;padding:10px}
 .op-open{padding:14px}.op-open h3{font-size:1.6rem;min-height:0;margin-bottom:12px}.op-top{margin-bottom:10px}.stat strong{font-size:1.6rem}
 dialog{width:100%;max-width:100%;max-height:94dvh;margin:auto 0 0;border-radius:16px 16px 0 0;overflow-y:auto;overscroll-behavior:contain}
 .dialog-body{padding:18px max(18px,env(safe-area-inset-right)) calc(22px + env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left))}.dialog-head{padding:12px max(16px,env(safe-area-inset-right)) 12px max(16px,env(safe-area-inset-left))}.dialog-head h2{font-size:1.5rem}.dialog-body h1{font-size:2.2rem;overflow-wrap:anywhere}
 .battle-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.battle-grid .counter-card:first-child{grid-column:1/-1}.battle-lower{grid-template-columns:1fr}
 #toast{bottom:calc(84px + env(safe-area-inset-bottom))}
}
