:root{font-family:system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;color:#263c49;background:#dbe5e7;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;border:1px solid #839ca2;border-radius:4px;background:#f5f5e8;color:#263c49;padding:10px 13px}button:hover{border-color:#274c61;background:#fffef5}button:disabled{opacity:.45;cursor:default}button:focus-visible,a:focus-visible{outline:3px solid #b58529;outline-offset:3px}a{color:inherit}input,select{padding:10px;max-width:100%;border:1px solid #8a9ba2;border-radius:4px;background:#fffef4;color:inherit}.bar{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px 22px;background:#243c4a;color:#f2ecdd;min-height:72px;flex-wrap:wrap}.brand{text-decoration:none;font:600 25px/1.2 "Songti SC",serif;letter-spacing:3px}.brand small{font:10px system-ui;display:block;letter-spacing:2px;color:#c4d3d4;margin-top:5px}.bar-nav{display:flex;gap:9px;align-items:center;font-size:12px;flex-wrap:wrap}.bar-nav button{background:transparent;color:inherit;border-color:#607984;padding:7px 9px}.status{font-size:11px;color:#d4e1df}.lobby{max-width:1100px;margin:40px auto;display:grid;grid-template-columns:1.1fr 1fr;gap:55px;padding:25px}.lobby h1{font:600 clamp(34px,5vw,58px)/1.2 "Songti SC",serif;letter-spacing:2px;margin:18px 0}.eyebrow{font-size:11px;letter-spacing:3px;text-transform:uppercase;color:#55737e}.lobby p{font-size:14px;line-height:1.8;color:#536b71}.lobby-art{height:460px;overflow:hidden;border:10px solid #f2f1df;box-shadow:0 5px 22px #243a4730;transform:rotate(-1deg)}.lobby-art img{width:100%;margin-top:-22%}.entry{display:grid;gap:14px;padding:25px;background:#f7f4e5;border:1px solid #b9c3be;box-shadow:0 4px 20px #243a4710}.entry label{display:grid;gap:7px;font-size:12px}.entry form{display:grid;gap:12px}.entry-tabs,.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.primary{background:#315b6a;color:#fff8e7;border-color:#315b6a}.primary:hover{background:#204758;color:#fff8e7}.seats{display:grid;gap:8px;margin-bottom:12px}.seat{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid #c6cbc1;padding:10px 0}.roc{color:#315e88}.pla{color:#ad5c54}.table-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;height:calc(100dvh - 72px);min-height:530px}.viewport{position:relative;overflow:hidden;touch-action:none;overscroll-behavior:contain;background:#c5d6df}.map-world{position:absolute;top:0;left:0;width:916px;height:1302px;transform-origin:0 0;will-change:transform}.board{display:block;width:916px;height:1302px;user-select:none}.board .cell{fill:transparent;stroke:transparent;stroke-width:1;vector-effect:non-scaling-stroke}.board .cell:hover{fill:#fff7ba33;stroke:#f5d98e}.board .cell.reachable{fill:#faf18e26;stroke:#e6d061;stroke-dasharray:3 3}.board .cell.target{fill:#d8584433;stroke:#9a3b30;stroke-width:2}.board .cell.picked{fill:#f5cb6040;stroke:#966522;stroke-width:2.5}.board .piece{pointer-events:none;cursor:pointer;filter:drop-shadow(1px 2px 1px #1f354669)}.board .piece rect{pointer-events:auto;fill:transparent;stroke:transparent;stroke-width:2}.board .piece.selected rect{stroke:#d8aa30;stroke-width:3}.board .piece.active rect{stroke:#f4f4d5}.board .piece.done{opacity:.7}.board .route{fill:none;stroke:#be9d34;stroke-width:3;stroke-dasharray:5 4;pointer-events:none}.map-tools{position:absolute;left:14px;bottom:14px;z-index:3;display:flex;gap:1px;border:1px solid #798f99;box-shadow:0 2px 12px #2b3c5233;border-radius:4px;overflow:hidden}.map-tools button{border:0;border-radius:0;background:#f4f2e8d9;font-size:12px;padding:9px;min-width:35px}.map-tools output{display:grid;place-items:center;background:#f4f2e8e8;min-width:45px;font-size:11px}.map-caption{position:absolute;left:14px;top:12px;max-width:calc(100% - 28px);z-index:2;display:flex;gap:12px;align-items:center;padding:8px 13px;background:#263e4be8;color:#faf6e7;font-size:12px;border-radius:3px;pointer-events:none}.map-caption b{font-weight:600}.panel{background:#f6f3e6;border-left:1px solid #b3c3c6;overflow:auto;padding:22px 18px}.panel h2{font:600 23px/1.4 "Songti SC",serif;margin:8px 0 15px}.panel h3{font-size:14px;margin:22px 0 12px}.panel p{font-size:12px;line-height:1.75;color:#597079}.panel>section{margin-bottom:20px}.panel .controls{display:grid;gap:9px}.panel .controls label{display:grid;gap:5px;font-size:11px}.phase-note{padding-bottom:12px;border-bottom:1px solid #c1cbca}.side-chip{display:inline-block;padding:3px 8px;border:1px solid currentColor;font-size:11px}.counter-row{display:flex;flex-wrap:wrap;gap:9px;align-items:start}.counter-button{padding:0;border:2px solid transparent;border-radius:0;background:transparent;width:64px;flex:none}.counter-button.selected{border-color:#b98423;background:transparent}.counter-button svg{display:block;width:60px;height:60px}.counter-button small{display:block;font-size:9px;padding:4px 0;line-height:1.3;min-height:20px}.counter-button.used{opacity:.45}.counter-large{width:94px;height:94px;display:block}.unit-detail{display:flex;gap:14px;align-items:center;margin:10px 0 15px}.unit-detail h4{font-size:13px;margin:0 0 8px}.unit-detail p{margin:4px 0;font-size:11px}.summary{display:flex;gap:14px;flex-wrap:wrap;font-size:12px}.summary b{display:block;font-size:20px;font-weight:500}.selected-target{background:#ede2bc;border:1px solid #b5a37b;padding:10px;font-size:12px;line-height:1.7}.log{list-style:none;margin:10px 0;padding:0}.log li{font-size:11px;line-height:1.7;padding:6px 0;border-bottom:1px solid #d2d7cb}.ruling{border:1px solid #af8255;padding:12px;background:#f1e4c9}.ruling p{color:#745234}.battle-summary{padding:12px 0;border-top:1px solid #bac9cd;border-bottom:1px solid #bac9cd}.battle-summary b{font-size:20px;display:block;margin:8px 0}.results{padding:15px;background:#e9ebd6;border:1px solid #b6be9b}.aside-fold{border-top:1px solid #c4d1d2;padding:12px 0;margin-top:15px}.aside-fold summary{font-size:12px;cursor:pointer}.rules-links{display:flex;gap:12px;font-size:12px;flex-wrap:wrap}.help{font-size:11px;color:#6d7d7c;line-height:1.7}.selected-hexes{font-size:12px;line-height:1.8}.error{color:#9c4937}dialog{max-width:min(900px,92vw);max-height:90vh;border:1px solid #98a9ac;background:#f8f5e8;padding:25px;color:#2a4450}dialog::backdrop{background:#122738a3}dialog p{line-height:1.8;font-size:13px}dialog img{max-width:100%}.crt{border-collapse:collapse;width:100%;font-size:12px}.crt th,.crt td{border:1px solid #a2bbc5;text-align:center;padding:5px}.crt th{background:#99c6d9}.crt .desperate{color:#b93634}.crt .highlight{outline:3px solid #ba8037;outline-offset:-3px}.crt button{border:0;border-radius:0;background:transparent;padding:3px;font:inherit;color:inherit}.counts{font-size:12px;line-height:1.8}.asset-note{font-size:11px;color:#708080}#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:#203d4a;color:#fff5e5;padding:12px 18px;border-radius:4px;max-width:90vw;z-index:20;opacity:0;pointer-events:none;font-size:13px;transition:opacity .2s}#toast.show{opacity:1}.empty{padding:10px;color:#6e8388;font-size:12px}
@media(max-width:800px){.bar{padding:11px 14px;gap:10px}.brand{font-size:20px}.bar-nav{gap:7px}.bar-nav button{font-size:11px;padding:6px}.status{display:none}.lobby{grid-template-columns:1fr;gap:25px;margin:15px auto;padding:18px}.lobby-art{height:290px}.lobby h1{font-size:36px}.table-layout{height:auto;min-height:0;grid-template-columns:1fr}.viewport{height:65dvh;min-height:400px}.panel{border-left:0;border-top:1px solid #afc0c4;overflow:visible;padding:18px}.panel .controls{grid-template-columns:repeat(2,minmax(0,1fr))}.panel .controls .wide,.ruling,.phase-note{grid-column:1/-1}.panel h2{font-size:22px}.map-caption{font-size:10px;padding:7px;gap:7px;top:8px;left:8px;max-width:calc(100% - 16px)}.map-tools{bottom:9px;left:9px}.entry{padding:20px}.counter-button{width:59px}.counter-button svg{width:55px;height:55px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.stack-roster{border-top:1px solid #c1cbca;margin-top:14px;padding-top:12px}.stack-roster h4{font-size:12px;margin:0 0 10px}.stack-roster .counter-row{max-width:304px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.stack-roster .counter-button{width:100%;padding:4px;border-radius:3px}.stack-roster .counter-button svg{width:100%;height:auto;aspect-ratio:1}.stack-roster .counter-button small{font-size:10px;line-height:1.5}.stack-roster p{margin:8px 0 0}.board .piece rect:focus-visible{stroke:#d8aa30;stroke-width:3;outline:none}
