:root{font-family:DM Sans,system-ui,sans-serif;color:#273b34;background:#f6f4ee;font-synthesis:none;--ink: #273b34;--muted: #7a8076;--line: #deded2;--gold: #b18b45;--jade: #377363}*{box-sizing:border-box}body{margin:0}button,select{font:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.45}button:focus-visible,select:focus-visible,a:focus-visible,.hex:focus-visible{outline:3px solid #9b7233;outline-offset:3px}button{border:0}a{color:inherit;text-decoration:none}.site-header{height:64px;background:#1d2a25;color:#f3f2e6;display:flex;align-items:center;justify-content:space-between;padding:0 4%;border-bottom:3px solid #ba9a59}.brand{font-size:19px;letter-spacing:3px;font-weight:700;display:flex;align-items:center;gap:12px}.brand-mark{color:#c3a56b;font-size:35px}.prototype{font-size:9px;color:#c6c9b9;letter-spacing:1.5px;border-left:1px solid #536056;padding-left:18px;margin-left:8px}nav{display:flex;align-items:center;gap:24px}nav .text-button{color:#dedfce;font-size:12px}.local-badge{font-size:11px;color:#c3cbbb;display:flex;gap:8px;align-items:center}.local-badge i{width:6px;height:6px;border-radius:50%;background:#9fbd8a}.secondary{padding:11px 17px;border:1px solid #c9cbbd;background:transparent;border-radius:5px;color:var(--ink);font-size:12px;font-weight:600}nav .secondary{color:#f2f1e5;border-color:#586153}.secondary span{margin-left:18px}main{max-width:1570px;margin:auto;padding:12px 4% 0}.page-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.eyebrow{font-size:10px;letter-spacing:1.7px;font-weight:700;color:#858775}.page-heading h1{font-family:Libre Baskerville,Georgia,serif;font-size:26px;font-weight:400;margin:0}.page-heading h1 span{color:#b18b45}.page-heading p{font-size:12px;color:var(--muted);margin:0}.rounds{display:flex;align-items:center;gap:10px;text-align:right}.rounds>div{display:flex;gap:7px;margin-top:0}.round{border:1px solid #d5d7c9;width:30px;height:32px;display:inline-grid;place-items:center;font-size:12px;color:#999d8e;border-radius:3px}.round.now{background:#2c4035;border-color:#2c4035;color:#f7f3e6;box-shadow:0 3px 6px #22332a20}.round.past{background:#e3e6dc;color:#5a6f59}.game-layout{display:grid;grid-template-columns:244px minmax(380px,1fr) 273px;gap:22px;align-items:start}.roster{border:1px solid var(--line);border-radius:7px;background:#faf9f4;margin-bottom:20px;overflow:hidden}.roster-heading{display:flex;align-items:center;gap:8px;padding:16px 13px;border-bottom:1px solid var(--line)}.roster-heading h2{font-size:12px;margin:0;font-weight:700}.roster-heading>span:last-child{margin-left:auto;text-transform:uppercase;font-size:8px;letter-spacing:.7px;color:#8e9183}.side-dot{width:7px;height:7px;background:#bb9046;border-radius:50%}.attacker .side-dot{background:var(--jade)}.unit-list{padding:7px}.unit{display:flex;align-items:center;gap:10px;padding:8px 6px;width:100%;text-align:left;background:none;border:1px solid transparent;border-radius:5px;color:var(--ink)}.unit:hover:not(:disabled){background:#efeee4}.unit.selected{border-color:#9d9e7f;background:#eeeddf}.unit-info{flex:1;min-width:0}.unit-info strong{display:block;font-size:12px;margin-bottom:5px;font-weight:600}.unit-info>span{font-size:9px;color:var(--muted)}.unit-status{font-size:12px;color:#819476}.unit.dead{opacity:.35}.counter{display:block;position:relative;background:#eedca7;border:1px solid #c4a56a;width:50px;height:50px;border-radius:5px;flex-shrink:0;overflow:hidden}.counter.attacker{background:#c7dfca;border-color:#8bac91}.counter img{width:100%;height:38px;object-fit:contain;mix-blend-mode:multiply}.counter-stats{position:absolute;bottom:2px;left:5px;right:5px;display:flex;justify-content:space-between;font-size:11px;font-weight:700}.counter-stats>span{font-size:9px;font-weight:400}.roster footer{border-top:1px solid var(--line);padding:11px 14px;font-size:9px;color:#858b7b}.roster footer span{margin:0 8px}.arena{background:#f0efdf;border:1px solid #d5d5bf;border-radius:7px;overflow:hidden;box-shadow:0 3px 12px #273b3405}.arena-top{display:flex;justify-content:center;padding:10px 14px;align-items:center;border-bottom:1px solid #d8d9c4;font-size:8px;color:#858b70;letter-spacing:1px}.map-chip{font-size:10px;color:#647455;font-weight:700;letter-spacing:1.5px}.divider{margin:0 8px;opacity:.5}.battleboard{display:block;width:100%;background:radial-gradient(ellipse at center,#f8f6e8,#ecebd9)}.hex{cursor:default;outline:none}.hex polygon{fill:#e2e4cf;stroke:#f4f2e4;stroke-width:3;transition:fill .15s}.hex.interactive:hover polygon,.hex.interactive:focus-visible polygon{fill:#d5d9bb;stroke:#9aa382;stroke-width:2}.hex-label{font-size:9px;fill:#9a9f85;pointer-events:none;letter-spacing:1px}.hex.reachable polygon{fill:#cddbb7;stroke:#94ad77;stroke-width:1.5}.move-dot{fill:#7c965c;pointer-events:none}.hex.target polygon{fill:#e9d2b9;stroke:#b67c52;stroke-width:2;stroke-dasharray:5 3}.hex.chosen polygon{fill:#ddd8b5;stroke:#a18e4e;stroke-width:2}.board-counter{pointer-events:none}.board-counter rect{fill:#ead59c;stroke:#b09658;stroke-width:1.3}.board-counter.attacker rect{fill:#bed9c2;stroke:#6a937d}.board-counter image{mix-blend-mode:multiply}.power{font-size:12px;font-weight:700;fill:#304031}.traits{font-size:9px;fill:#53654a}.damage{fill:#9b463b;stroke:#f7f3e5;stroke-width:2}.damage-text{font-size:10px;fill:#fff;font-weight:700}.slain{opacity:.4}.entry-label{font-size:9px;letter-spacing:2px;fill:#aa8a4d}.entry-label.attacker{fill:#61816b}.map-legend{padding:16px;display:flex;justify-content:center;gap:18px;border-top:1px solid #d8d9c4;font-size:8px;color:#838a73}.map-legend>span{display:flex;align-items:center;gap:5px}.map-legend i{height:7px;width:7px;border-radius:2px}.legend-move{background:#a5bd88}.legend-target{background:#d4a17a}.phase-card{padding:16px;background:#eae9dc;border:1px solid #d3d4c0;border-top:3px solid #b28c43;border-radius:6px;margin-bottom:18px}.phase-card.attacker{border-top-color:var(--jade)}.phase-card .eyebrow{color:#8d793f}.phase-card.attacker .eyebrow{color:var(--jade)}.phase-card h2{font-family:Libre Baskerville,Georgia,serif;font-weight:400;font-size:24px;margin:8px 0 12px}.phase-track{display:flex;justify-content:space-between;border-bottom:1px solid #d2d4be;font-size:9px;color:#8f9580;margin-bottom:12px}.phase-track span{padding-bottom:10px}.phase-track .current{color:#3f5540;border-bottom:2px solid #687952;font-weight:700}.phase-card p{font-size:11px;line-height:1.5;margin:10px 0 12px;color:#68715f}.primary{background:#2c493b;color:#f6f2df;border:1px solid #2c493b;padding:13px 16px;border-radius:4px;font-size:11px;font-weight:600;transition:background .15s}.primary:hover:not(:disabled){background:#3d5b48}.phase-card .primary,.phase-card>.secondary{width:100%}.phase-warning{color:#997345!important;border-top:1px solid #d4d1b9;padding-top:12px;font-size:10px!important}.phase-card .error{color:#a13f32;border-left:2px solid #a13f32;padding-left:8px}.dice-panel{border:1px solid var(--line);border-radius:6px;padding:18px;margin-bottom:22px;background:#faf9f4}.dice-panel p{font-size:10px;line-height:1.8}.muted{color:var(--muted)}.dice{display:flex;flex-wrap:wrap;gap:5px;margin:12px 0}.die{width:28px;height:29px;display:grid;place-items:center;background:#eae9df;color:#9d9c8e;border:1px solid #d9d9cc;border-radius:5px;font-size:12px;font-weight:600}.die.hit{background:#e3d5af;border-color:#bc9b52;color:#806022}.roll-result{font-size:10px;color:#7d6d3c;font-weight:600}.battle-log .eyebrow{display:flex;justify-content:space-between}.battle-log .eyebrow>span{font-size:9px;color:#a1a58f;letter-spacing:0}.log-lines{margin-top:14px;max-height:230px;overflow:auto}.log-lines p{font-size:10px;line-height:1.7;display:flex;gap:8px;margin:0;padding:8px 0;border-bottom:1px solid #e4e4d8;color:#969b8b}.log-lines p.latest{color:#58634e}.log-lines p>span{color:#b4a372}.page-footer{display:flex;justify-content:space-between;border-top:1px solid #dfdfd1;margin-top:14px;padding:10px 0 14px;font-size:9px;color:#939985}.text-button{background:none;color:#526b4f;font-size:11px;padding:8px 0}.strike-choice{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:#6d775f;gap:8px}.strike-choice select{font-size:11px;padding:7px;border:1px solid #cacdb7;border-radius:3px;background:#f6f4e9;color:#344a36}.phase-card p.tiny{font-size:9px;line-height:1.7;margin-top:8px}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#17261fe0;z-index:20;display:flex;align-items:center;justify-content:center;padding:24px;overflow:auto}dialog{position:relative;margin:auto;border:1px solid #c8c7b3;border-radius:10px;background:#f8f6ed;color:var(--ink);padding:34px;max-width:800px;width:100%;max-height:90vh;overflow:auto;box-shadow:0 25px 100px #0005}dialog h2{font-family:Libre Baskerville,Georgia,serif;font-size:28px;font-weight:400;margin:12px 0}dialog p,dialog li{font-size:12px;line-height:1.9;color:#6b7360}dialog li{padding-left:5px;margin:12px 0}dialog ol{padding-left:20px}dialog small{font-weight:400;color:#89907d;margin-left:8px;font-size:10px}.force-editors{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-top:22px}.force-editors h3{font-size:13px}.force-slot{display:flex;align-items:center;gap:8px;margin-bottom:9px}.force-slot img{width:35px;height:35px;object-fit:contain;mix-blend-mode:multiply}.force-slot select{width:100%;min-width:0;padding:8px 5px;border:1px solid #d6d8c6;background:#fffdf5;color:#344535;border-radius:4px;font-size:11px}.force-slot button{background:none;font-size:20px;color:#92977d}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:25px}.setup-note{border-top:1px solid #dddfce;padding-top:15px;font-size:10px!important}@media(min-width:1500px){.game-layout{grid-template-columns:260px minmax(400px,1fr) 300px;gap:28px}.phase-card p{font-size:12px}}@media(max-width:1150px){main{padding-left:24px;padding-right:24px}.game-layout{grid-template-columns:205px minmax(300px,1fr) 230px;gap:13px}.unit{gap:7px}.unit-info strong{font-size:11px}.unit-info>span{font-size:8px}.roster-heading{padding:13px 10px}.roster-heading>span:last-child{display:none}.phase-card{padding:16px}.map-legend{gap:9px;font-size:7px}.site-header{padding:0 24px}}@media(max-width:900px){.game-layout{grid-template-columns:190px minmax(300px,1fr)}.battle-controls{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:18px}.battle-log{grid-column:1/-1}.log-lines{max-height:150px}.page-heading h1{font-size:28px}.prototype,.local-badge{display:none}.phase-card,.dice-panel{margin:0}.round{width:25px;height:28px}.rounds>div{gap:4px}.page-footer{gap:25px}}@media(max-width:600px){.site-header{height:66px;padding:0 16px}.brand{font-size:14px;letter-spacing:2px;gap:6px}.brand-mark{font-size:28px}nav{gap:12px}nav .text-button{font-size:10px}nav .secondary{padding:8px;font-size:10px}nav .secondary span{display:none}main{padding:10px 14px 0}.page-heading{align-items:flex-start;gap:12px;margin-bottom:12px}.page-heading h1{font-size:23px;line-height:1.2;margin:0}.page-heading p{font-size:10px}.eyebrow{font-size:8px}.rounds>div{display:flex;gap:4px}.round{height:23px;width:20px;font-size:10px}.game-layout{grid-template-columns:1fr}.arena{grid-row:1}.forces{display:grid;grid-template-columns:1fr 1fr;gap:10px}.roster{margin:0}.roster-heading h2{font-size:11px}.unit{padding:6px 3px;gap:6px}.counter.small{width:36px;height:39px}.counter.small img{height:29px}.counter-stats{font-size:9px;left:3px;right:3px}.unit-info strong{font-size:10px}.unit-status{display:none}.unit-list{padding:4px}.roster footer{padding:10px;font-size:8px}.battle-controls{grid-column:auto;grid-template-columns:1fr}.battle-log{grid-column:auto}.page-footer{font-size:8px;line-height:1.8}.map-legend{font-size:8px}.force-editors{grid-template-columns:1fr;gap:10px}dialog{padding:23px}.scrim{padding:12px}.dialog-actions{flex-wrap:wrap}}dialog{position:fixed;top:0;right:0;bottom:0;left:0;height:fit-content}dialog::backdrop{background:transparent}.undo-move{margin-top:10px}.roster.acting .roster-heading{background:#e9efe5}.unit:disabled:not(.dead){opacity:.78}.unit.candidate{box-shadow:inset 3px 0 #337d78;background:#edf3ea}.unit.candidate .unit-status{color:#337d78}.unit.selected{border:2px solid #3569a0;padding:7px 5px;background:#e7eef7;box-shadow:none}.unit.selected .unit-status{color:#3569a0}.unit.attack-target{border:1px dashed #b87643;background:#f5e7d7}.unit.attack-target .unit-status{color:#a85d2c}.unit-info .availability-label{display:block;margin-top:4px;font-size:9px;line-height:1.4;color:#686f60}.unit.candidate .availability-label{color:#276b66;font-weight:600}.unit.attack-target .availability-label{color:#995324}.hex.interactive{cursor:pointer}.hex.chosen polygon{fill:#dde5ee;stroke:#3569a0;stroke-width:2}.board-counter rect.candidate-ring{fill:none;stroke:#287871;stroke-width:2;stroke-dasharray:3 3}.board-counter rect.selection-ring{fill:none;stroke:#3569a0;stroke-width:3}.hex.chosen .candidate-ring{visibility:hidden}.legend-ready{border:2px dotted #287871;background:transparent}.legend-selected{border:2px solid #3569a0;background:#e0e9f5}.map-legend{flex-wrap:wrap;row-gap:8px}.map-legend i{width:10px;height:10px}.candidate-summary{color:#32675f;font-size:11px;font-weight:600;margin-top:15px}@media(max-width:600px){.unit.selected{padding:5px 2px}.unit-info .availability-label{font-size:8px}}.hex.candidate .board-counter.slain{opacity:1}.hex.candidate .board-counter.slain image{opacity:.55}.unit-list{max-height:clamp(160px,28vh,300px);overflow-y:auto;overscroll-behavior-y:contain;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:#9ca98b transparent}.unit-list:focus-visible{outline:2px solid #3569a0;outline-offset:-2px}.game-actions{display:flex;justify-content:space-between;gap:12px;border-top:1px solid #d2d4be;margin-top:16px;padding-top:8px}.concede-button{color:#9a4438}.primary.danger{background:#943f35;border-color:#943f35}.primary.danger:hover:not(:disabled){background:#78332b}@media(max-width:600px){.unit-list{max-height:240px}}.hex.tree-hex polygon{fill:#c7d0ad}.tree-art{mix-blend-mode:multiply;pointer-events:none;opacity:.85}.arena.woods{border-color:#a9b597}.arena.woods .arena-top{background:#dce4cc}.map-picker{display:flex;align-items:center;gap:18px;font-size:12px;margin-top:20px;font-weight:600}.map-picker select{border:1px solid #c6ceb6;border-radius:4px;background:#fffdf5;color:#344535;padding:9px 12px;min-width:180px}.map-description{min-height:46px}.hex.tree-hex .terrain-edge{fill:none;stroke:#f4f2e4;stroke-width:3;pointer-events:none}.room-banner{border:1px solid #a6b99a;border-radius:6px;background:#e5edde;padding:10px 14px;margin-bottom:12px}.room-banner>div:first-child{display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px}.room-banner strong{font-size:15px;letter-spacing:2px}.room-banner span,.room-banner p{font-size:12px}.reset-vote{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-top:16px;border-top:1px solid #bcccaf;padding-top:14px}#join-room{margin:25px 0;border-top:1px solid #d6dac8;padding-top:20px}#join-room label{display:block;font-size:12px;margin-bottom:10px}.join-controls{display:flex;gap:12px}#room-code{padding:10px 12px;border:1px solid #bdc8af;border-radius:4px;font:inherit;font-weight:600;letter-spacing:3px;text-transform:uppercase;width:160px;min-width:0}.error{color:#a13f32;font-size:12px}@media(max-width:900px){.site-header{height:auto;min-height:64px;padding-top:8px;padding-bottom:8px;gap:12px;flex-wrap:wrap}nav{flex-wrap:wrap;gap:12px}}#account-form{display:grid;gap:8px;margin:18px 0}#account-form input{width:100%;box-sizing:border-box;padding:10px;font:inherit}.saved-games{display:grid;gap:8px;max-height:190px;overflow-y:auto;margin-bottom:18px}.signed-in-user{font-size:12px;color:#c3cbbb;overflow-wrap:anywhere}.signed-in-user strong{color:#f3f2e6}
