/* Generated building atlas — original project artwork */
.node-ring{width:76px!important;height:68px!important;transform:none!important;border:0!important;background:transparent!important;box-shadow:none!important;position:relative}.node-ring>span{display:none}.node-ring::before,.workshop-sprite,.supply-sprite{content:"";position:absolute;inset:-8px;background-image:url('assets/foundry-sprite-atlas.png');background-repeat:no-repeat;background-size:400% 300%;filter:drop-shadow(0 12px 11px #000a);transition:.25s}.building-node:hover .node-ring,.building-node.selected .node-ring{transform:scale(1.12)!important;box-shadow:none!important}.building-node.assigned .node-ring{background:transparent!important}.building-node.assigned .node-ring::after{content:"";position:absolute;inset:6px;border-radius:50%;background:#f4a85f20;box-shadow:0 0 24px #f4a85f75;z-index:-1}.building-node.selected .node-ring::after{background:#63f4de20;box-shadow:0 0 28px #63f4de8a}.building-node[data-id="imperial"] .node-ring::before{background-position:0 0}.building-node[data-id^="prototype"] .node-ring::before{background-position:33.333% 0}.building-node[data-id^="repair"] .node-ring::before{background-position:66.666% 0}.building-node[data-id="boiler"] .node-ring::before{background-position:100% 0}.building-node[data-id="transit"] .node-ring::before{background-position:0 50%}.building-node[data-id="munitions"] .node-ring::before{background-position:33.333% 50%}.building-node[data-id="mercenary"] .node-ring::before{background-position:66.666% 50%}.building-node strong{margin-top:2px!important}.workshop-layer{position:absolute;inset:0;pointer-events:none}.workshop-marker{position:absolute;transform:translate(-50%,-50%);width:62px;height:62px;background:transparent;border:0;pointer-events:auto;cursor:pointer;opacity:.3;transition:.2s}.workshop-marker.active{opacity:1}.workshop-marker:hover{transform:translate(-50%,-50%) scale(1.12)}.workshop-sprite{inset:0;background-position:100% 50%}.workshop-marker small{position:absolute;top:55px;left:50%;transform:translateX(-50%);white-space:nowrap;color:#80a5aa;font-size:7px;font-weight:800}.supply-marker{position:absolute;width:22px;height:22px;animation:supplyPulse 2s infinite}.supply-sprite{inset:0;background-position:0 100%;filter:drop-shadow(0 0 8px #ffc75f)}@keyframes supplyPulse{50%{transform:scale(1.18);opacity:.72}}
.live-button{color:#ff8a84!important;border-color:#6a3838!important;background:#281617!important}.live-button::first-letter{color:#ff5f5a}.ops-suite{margin-top:14px;padding:0;overflow:hidden}.suite-header{display:flex;align-items:flex-end;justify-content:space-between;padding:25px 27px;border-bottom:1px solid var(--line);background:linear-gradient(90deg,#10282d,#091a1e)}.suite-header h2{font:400 29px Georgia,serif;margin:6px 0}.suite-header p{margin:0;color:var(--muted);font-size:10px}.scenario-picker{min-width:220px}.scenario-picker label{display:block;margin-bottom:7px}.scenario-picker select{width:100%;padding:11px}.suite-tabs{display:flex;border-bottom:1px solid var(--line);padding:0 25px}.suite-tab{padding:15px 20px;border:0;border-bottom:2px solid transparent;background:transparent;color:#648086;font:800 9px/1 inherit;text-transform:uppercase;letter-spacing:.1em;cursor:pointer}.suite-tab.active{color:var(--cyan);border-color:var(--cyan);background:#63f4de08}.suite-view{display:none;padding:24px 26px}.suite-view.active{display:block}.sim-grid{display:grid;grid-template-columns:230px minmax(480px,1fr) 250px;gap:22px}.sim-controls{display:flex;flex-direction:column;gap:17px}.sim-controls label{display:grid;grid-template-columns:1fr auto;gap:7px}.sim-controls label strong{color:var(--cyan)}.sim-controls input[type=range]{grid-column:1/-1;width:100%;accent-color:var(--cyan)}.sim-controls input[type=number]{grid-column:1/-1;width:100%;padding:10px;margin-top:3px}.dual-input{display:grid;grid-template-columns:1fr 1fr;gap:8px}.score-projection{border:1px solid #18383e;background:#07171b;padding:17px;min-width:0}.score-duel{display:grid;grid-template-columns:1fr 120px 1fr;align-items:center}.score-duel>div>span{display:block;color:#668187;font-size:8px;letter-spacing:.12em}.score-duel strong{display:block;font:400 28px Georgia,serif;margin-top:5px}.our-score strong{color:var(--cyan)}.enemy-score{text-align:right}.enemy-score strong{color:#ef7772}.win-gauge{text-align:center}.win-gauge b{display:block;font:400 25px Georgia,serif;color:var(--amber)}.win-gauge span{font-size:8px;color:#657e83}#scoreChart{width:100%;height:230px;margin-top:8px;overflow:visible}.chart-grid{stroke:#17343a;stroke-width:1}.chart-axis{fill:#5f777c;font-size:10px}.chart-ours{fill:none;stroke:var(--cyan);stroke-width:3;filter:drop-shadow(0 0 5px #63f4de55)}.chart-enemy{fill:none;stroke:var(--red);stroke-width:3}.chart-area{fill:url(#areaGradient)}.chart-unlock{stroke:var(--amber);stroke-width:1;stroke-dasharray:5 5}.chart-legend{display:flex;gap:20px;color:#678086;font-size:8px}.chart-legend span:before{content:"";display:inline-block;width:16px;height:2px;background:#516a70;margin-right:6px;vertical-align:middle}.chart-legend .ours-line:before{background:var(--cyan)}.chart-legend .enemy-line:before{background:var(--red)}.risk-panel{border-left:1px solid var(--line);padding-left:20px}.risk-item{display:grid;grid-template-columns:24px 1fr;gap:8px;padding:11px 0;border-bottom:1px solid #153238}.risk-item i{width:22px;height:22px;display:grid;place-items:center;background:#2b2116;color:var(--amber);font-style:normal}.risk-item.good i{background:#123a36;color:var(--cyan)}.risk-item strong{display:block;font-size:9px}.risk-item small{color:#688287;font-size:8px;line-height:1.4}.break-even{margin-top:16px;padding:14px;background:#0d252a}.break-even span{display:block;font-size:8px;color:#678187}.break-even strong{display:block;font:400 18px Georgia,serif;color:var(--cyan);margin-top:4px}.roles-toolbar{display:flex;justify-content:space-between;align-items:end;margin-bottom:18px}.roles-toolbar h3{font:400 23px Georgia,serif;margin:5px 0}.role-summary{display:flex;gap:5px}.role-summary-chip{padding:6px 8px;background:#10282d;color:#8ca4a8;font-size:8px;border:1px solid #1d3b41}.role-summary-chip.missing{color:#ffb16a;border-color:#624424}.ops-table-wrap{overflow:auto;border:1px solid var(--line)}.ops-table{width:100%;border-collapse:collapse;min-width:850px}.ops-table th{text-align:left;padding:11px;background:#07171b;color:#658087;font-size:8px;letter-spacing:.1em;text-transform:uppercase}.ops-table td{padding:8px 10px;border-top:1px solid #143138;font-size:10px}.ops-table tr:hover{background:#0d2429}.ops-table select,.ops-table input{width:100%;padding:7px;font-size:10px}.ops-player{display:flex;align-items:center;gap:8px;min-width:130px}.ops-player .avatar{flex:0 0 28px}.status-toggle{display:flex;align-items:center;gap:6px;color:#7f999d}.status-toggle input{accent-color:var(--cyan);width:auto}.export-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.export-card{text-align:left;border:1px solid #1a3a40;background:linear-gradient(145deg,#0d252a,#08181c);color:var(--text);padding:22px;min-height:150px;cursor:pointer;transition:.2s}.export-card:hover{transform:translateY(-3px);border-color:var(--cyan);box-shadow:0 15px 35px #0006}.export-card>span{display:grid;place-items:center;width:42px;height:42px;border:1px solid var(--cyan);color:var(--cyan);font:800 9px/1 inherit;margin-bottom:18px}.export-card strong{display:block;font:400 18px Georgia,serif}.export-card small{display:block;color:#6e898e;line-height:1.5;margin-top:7px}.live-dialog{width:min(620px,94vw);padding:0;border:1px solid #315157;background:#061418;color:var(--text);box-shadow:0 40px 120px #000d}.live-dialog::backdrop{background:#02090be8;backdrop-filter:blur(8px)}.live-head{display:flex;justify-content:space-between;align-items:center;padding:18px 22px;border-bottom:1px solid var(--line);font-size:10px;letter-spacing:.14em}.live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#ff5f5a;box-shadow:0 0 12px #ff5f5a;margin-right:7px;animation:supplyPulse 1.2s infinite}.live-clock{text-align:center;font:400 82px/1 Georgia,serif;color:var(--cyan);padding-top:30px}.live-dialog>p{text-align:center;color:#718a8f;font-size:10px}.live-actions{display:flex;justify-content:center;gap:8px}.live-event-buttons{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:22px}.live-event-buttons button{border:1px solid #23434a;background:#0d2429;color:#a8babc;padding:12px 6px;font-size:9px;cursor:pointer}.live-event-buttons button:hover{border-color:var(--cyan);color:var(--cyan)}.live-next{display:flex;justify-content:space-between;padding:14px 22px;background:#0c252a;border-block:1px solid var(--line)}.live-next span{font-size:8px;color:#657f84}.live-next strong{font-size:10px;color:var(--amber)}.live-log{max-height:200px;overflow:auto;padding:12px 22px 24px}.live-log-entry{display:grid;grid-template-columns:48px 1fr;gap:10px;padding:8px 0;border-bottom:1px solid #123036;font-size:9px}.live-log-entry time{color:var(--cyan)}.live-log-entry span{color:#829a9e}html[dir=rtl] .suite-header,html[dir=rtl] .roles-toolbar{direction:rtl}html[dir=rtl] .risk-panel{border-left:0;border-right:1px solid var(--line);padding-left:0;padding-right:20px}html[dir=rtl] .enemy-score{text-align:left}html[dir=rtl] .export-card{text-align:right}html[dir=rtl] .ops-table th{text-align:right}
@media(max-width:1150px){.sim-grid{grid-template-columns:220px 1fr}.risk-panel{grid-column:1/-1;border-left:0;border-top:1px solid var(--line);padding:18px 0 0;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.break-even{margin-top:0}.export-grid{grid-template-columns:1fr 1fr}}
@media(max-width:750px){.suite-header{display:block}.scenario-picker{margin-top:18px}.suite-tabs{overflow:auto;padding:0}.suite-tab{white-space:nowrap}.suite-view{padding:17px}.sim-grid{grid-template-columns:1fr}.score-duel{grid-template-columns:1fr 90px 1fr}.risk-panel{display:block}.export-grid{grid-template-columns:1fr}.live-clock{font-size:64px}.live-event-buttons{grid-template-columns:1fr 1fr}.workshop-marker{transform:translate(-50%,-50%) scale(.8)}}
@media print{.topbar,.hero,.teams-panel,.objective-panel,.suite-tabs,.scenario-picker,.live-button,.button,.field-manual{display:none!important}body{background:white;color:#111}.panel,.ops-suite,.map-panel{box-shadow:none;border:1px solid #aaa;background:white}.suite-view{display:block!important}.suite-view[data-suite-view=export]{display:none!important}.workspace{display:block}.map-stage{height:620px;-webkit-print-color-adjust:exact;print-color-adjust:exact}.lower-grid{display:grid}.ops-table th,.ops-table td{color:#111;border-color:#ccc}.score-projection{background:white}.risk-panel{color:#111}}
