
:root{--bg:#151318;--panel:#201d22;--panel2:#29242a;--text:#f0e5d5;--muted:#b4a99e;--gold:#bc985b;--accent:#892e42;--border:#584a44;--ok:#92b69b;--bad:#ff9c9c;--sans:Inter,'Segoe UI',sans-serif;--serif:'EB Garamond',Georgia,serif}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(circle at 80% 2%,#2e2030 0,transparent 28%),var(--bg);color:var(--text);font:15px/1.53 var(--sans)}button,select,input{font:inherit}button{cursor:pointer;background:var(--accent);border:1px solid #aa6b72;border-radius:7px;color:#fff1e7;padding:10px 15px;font-weight:600;min-height:42px}button:hover{filter:brightness(1.13)}button:disabled{opacity:.4;cursor:not-allowed}button.secondary,.file-button{background:#4a3d35;border-color:#867052}button.ghost{background:transparent;border-color:#665750;color:#f3e3ca}button.small{min-height:36px;font-size:13px;padding:7px 10px}button.pill{border-radius:100px;background:transparent;border-color:transparent}button.pill.active{border-color:#9a7b54;background:#473326}.brand{display:flex;gap:12px;text-decoration:none;color:var(--text);align-items:center}.brand b{font:700 20px/1 var(--serif);letter-spacing:.02em}.brand small{display:block;font:600 9px/1.6 var(--sans);letter-spacing:.21em;color:#cfb68f}.sigil{display:grid;place-items:center;height:39px;width:39px;border:1px solid var(--gold);color:var(--gold);font:29px var(--serif)}.mast{background:#141215f0;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:40}.mast-inner{max-width:1170px;padding:12px 22px;margin:auto;display:flex;gap:20px;justify-content:space-between;align-items:center}.mast-actions{display:flex;gap:5px}.layout{max-width:1170px;margin:auto;padding:0 22px 42px}.lead{padding:38px 0 30px;display:flex;justify-content:space-between;align-items:end;gap:24px}.lead h1{font:700 clamp(34px,5vw,58px)/1.04 var(--serif);margin:6px 0 9px}.lead p{max-width:720px;color:var(--muted);margin:0}.eyebrow{color:var(--gold)!important;text-transform:uppercase;font-size:11px;letter-spacing:.18em;font-weight:700}.offline{font-size:11px;font-weight:700;border:1px solid #82654c;padding:8px 10px;border-radius:6px;color:#e7b989;max-width:230px;text-align:right}.panel{background:linear-gradient(120deg,#242026,#201c21);border:1px solid var(--border);border-radius:9px;margin-bottom:16px;padding:23px}.panel-title{display:flex;justify-content:space-between;align-items:baseline;gap:15px;border-bottom:1px solid #5b4d45;padding-bottom:12px;margin-bottom:18px}.panel h2{font:700 clamp(24px,3vw,30px)/1.12 var(--serif);margin:0}.panel h3{font:700 21px/1.18 var(--serif);margin:0 0 9px}.muted,.hint{color:var(--muted)}.hint{font-size:12px;margin:12px 0 0}.row{display:flex;gap:9px;align-items:center}.row.wrap{flex-wrap:wrap}.row select{max-width:400px}.formgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.formgrid label,.field label{display:grid;gap:7px;font-size:12px;color:#d9c3a9;font-weight:700}input,select{border:1px solid #726259;border-radius:6px;background:#171519;color:#f6e8d2;padding:12px;min-height:43px;width:100%;max-width:100%}input:focus,select:focus,button:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.doctrine{background:#1c1920;margin-top:16px;padding:14px;border-left:3px solid var(--gold);font-size:13px}.doctrine p{margin:6px 0}.progress{height:11px;border:1px solid #6f554f;border-radius:20px;overflow:hidden;background:#100f13}.progress span{display:block;height:100%;width:1%;background:linear-gradient(90deg,#936a44,var(--gold))}.progress span.over{background:#c45653}.validation-copy{margin:10px 0 15px;font-size:14px}.validation-copy b{color:var(--ok)}.validation-copy b.bad{color:var(--bad)}.controls{padding-top:3px}.formation{border:1px solid #69594e;margin:0 0 13px;border-radius:7px;background:#1b191d}.formation-head{padding:15px;display:flex;justify-content:space-between;gap:18px;align-items:center}.formation-head h3{margin:0}.formation-head .sub{color:#baa99b;font-size:12px;margin:3px 0}.formation-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.formation-body{border-top:1px solid #69594e;padding:13px 16px;background:#241f23}.unit-ref{font-size:12px;color:#d5c4ad;background:#1b191c;border:1px solid #4e4542;padding:9px 11px;border-radius:5px;margin:8px 0 14px}.fighter-row{padding:11px 0;border-top:1px solid #49413f;display:grid;grid-template-columns: minmax(0,1.2fr) minmax(0,1.1fr) minmax(0,1.1fr) auto;gap:12px;align-items:end}.fighter-row:first-child{border-top:0}.fighter-name{font-weight:700;font-size:13px}.fighter-notes{font-size:11px;color:#bba99c}.fighter-weapon{font-size:12px;color:#ddc5a4}.inline-price{color:#d8a766;font-weight:700}.subgrid{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.count{border:1px solid #7b6657;padding:3px 8px;border-radius:4px;display:inline-block;min-width:64px;text-align:center}.recruit-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px}.recruit-choice{padding:13px;border:1px solid #5f5148;border-radius:6px;background:#18161a}.recruit-choice strong{display:block;font:700 19px var(--serif)}.recruit-choice p{font-size:12px;color:#b9aba0;min-height:42px}.recruit-choice button{width:100%;font-size:12px}.file-button{display:inline-flex;justify-content:center;align-items:center;border-radius:7px;padding:10px 15px;font-weight:700;cursor:pointer;min-height:42px}.note{background:#18171b;border:1px solid #5a4c45;padding:13px;border-radius:7px;color:#e6dacf;font-size:13px}.triple{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:18px}.triple .note{display:flex;flex-direction:column;gap:7px}.triple .note button{margin-top:auto}.battle-fighter{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px;border-bottom:1px solid #4a3e38}.battle-fighter:last-child{border-bottom:0}.battle-fighter strong{font-size:13px}.battle-fighter p{font-size:11px;color:var(--muted);margin:3px 0}.hp-pill{color:#fff;background:#5b343a;padding:4px 10px;border-radius:4px}.empty{color:var(--muted);font-style:italic}.last{margin-bottom:45px}footer{padding:20px;text-align:center;font-size:12px;border-top:1px solid #403834;color:#dbc19e}footer p{margin:4px}.formation[hidden],#builder-view[hidden],#play-view[hidden]{display:none!important}#print-sheet{display:none}
@media(max-width:900px){.formgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.recruit-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.triple{grid-template-columns:1fr}.fighter-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.lead{align-items:start;flex-direction:column}.offline{text-align:left}}
@media(max-width:570px){.mast-inner{padding:11px 12px}.brand b{font-size:15px}.brand small{font-size:7px}.sigil{width:31px;height:31px;font-size:23px}.pill{font-size:11px;padding:9px 8px!important}.layout{padding:0 10px 25px}.lead{padding:26px 5px 20px}.panel{padding:14px;margin-bottom:12px}.panel-title{align-items:flex-start;flex-direction:column;gap:4px}.formgrid{grid-template-columns:1fr}.recruit-grid{grid-template-columns:1fr 1fr}.formation-head{align-items:flex-start;flex-direction:column;gap:10px}.formation-actions{justify-content:flex-start}.fighter-row{grid-template-columns:1fr}.row select{flex-basis:100%;max-width:none}.row button{flex-grow:1}.recruit-choice p{min-height:55px}}
@media print{@page{size:A4;margin:10mm}body{background:white!important;color:black!important;font-family:Georgia,serif!important;font-size:10px}body>.mast,body>.layout,body>footer{display:none!important}#print-sheet{display:block!important;background:white;color:#111;font:11px/1.3 Arial,sans-serif}#print-sheet h1,#print-sheet h2,#print-sheet h3{font-family:Georgia,serif;margin:4px 0 7px;color:#121212}#print-sheet h1{font-size:22px}#print-sheet h2{font-size:15px;border-bottom:1px solid #333;padding-top:12px}#print-sheet h3{font-size:12px}.print-cover{display:flex;justify-content:space-between;border-bottom:3px solid #333;margin:0 0 10px}.print-rule{border:1px solid #444;padding:8px;margin:6px 0}.print-unit{border:1px solid #777;margin:9px 0;padding:8px;break-inside:avoid;page-break-inside:avoid}.print-unit header{display:flex;justify-content:space-between}.print-fighter{padding:6px 0;border-top:1px solid #aaa;break-inside:avoid}.print-stats{display:flex;flex-wrap:wrap;gap:12px}.print-stats b{font-size:11px}.print-track{margin-top:4px;letter-spacing:.4px}.print-break{break-before:page;page-break-before:always}.print-small{font-size:9px;color:#333}.print-columns{columns:2;column-gap:15px}}

.doctrine summary{cursor:pointer;font-weight:600;color:#e5c995}.doctrine details p{margin-top:12px}.doctrine summary::marker{color:var(--gold)}

/* 2.2 character and company naming */
.name-entry{display:flex;align-items:stretch;gap:7px;min-width:0}.name-entry input{min-width:0;flex:1}.name-entry button{flex:none;min-width:46px;padding:8px 12px}.personal-name-field{display:grid;gap:7px;margin-top:10px;font-size:12px;color:#d9c3a9}.fighter-row .personal-name-field{grid-column:auto}
.officer-command{display:inline-block;margin-top:8px;padding:6px 10px;background:#332b24;border:1px solid #98754b;border-radius:5px;color:#e8c890;font-size:12px}.officer-command strong{color:#fff1d2}
.restored-draft-note{display:block;margin-top:10px;padding:10px 12px;background:#342b24;border:1px solid #98754b;border-radius:5px;color:#f2d6ae;font-size:13px;line-height:1.4}.validation-copy .restored-draft-note b{color:#fff3d6}
@media print{#print-sheet .print-special{margin-top:5px;padding:5px 7px;border-left:2px solid #555;background:#f5f5f5;font-size:9px;line-height:1.25}#print-sheet .print-special p{margin:3px 0}#print-sheet .print-fighter{break-inside:avoid}#print-sheet .print-unit{break-inside:auto}}

/* 2.4: hands-on 400-point recruiting and a complete battle-to-upgrade loop. */
.required-choice{border-color:#b79862;background:linear-gradient(140deg,#30291f,#1b1818)}
.required-choice strong::after{content:' REQUIRED';display:inline-block;margin-left:7px;font:700 9px var(--sans);letter-spacing:.08em;color:#e8c58f}
.battle-earned{padding:12px 14px;border-radius:6px;border:1px solid #826a44;background:#32281f;color:#f3ddba;margin:12px 0}
.battle-earned strong{color:#ffdfa1}
#campaign-mode-status .formgrid{grid-template-columns:repeat(2,minmax(0,1fr));max-width:550px;margin:12px 0}
#campaign-mode-status .formgrid input{padding:9px;min-height:39px}
.battle-finish{border-color:#ae8d5e;background:linear-gradient(130deg,#29251f,#221e22)}
.battle-finish .note{margin-bottom:16px}
.play-survivors{padding:12px 15px;margin:16px 0;border:1px solid #665442;border-radius:6px}
.play-survivors legend{font-weight:700;color:#ebca98;padding:0 6px}
.play-survivor{display:flex;align-items:center;gap:10px;padding:7px 0;line-height:1.4}
.play-survivor input,.play-parity input{width:18px;height:18px;min-height:0;accent-color:#b9945e;flex:none}
.play-parity{display:flex;gap:10px;align-items:flex-start}
.play-parity[hidden]{display:none}
.personal-allowance{margin:9px 0;color:#f5ddb6;font-size:16px}
.personal-allowance strong{color:#ffdea1}
.allowance-track{height:9px;border:1px solid #816747;border-radius:20px;background:#171319;overflow:hidden;margin:6px 0 13px}
.allowance-track span{display:block;height:100%;background:linear-gradient(90deg,#9b6d3c,#e4ba73);transition:width .2s ease}
@media(max-width:570px){#campaign-mode-status .formgrid{grid-template-columns:1fr}.battle-finish .row button{flex:1 1 100%}}
