:root{color-scheme:dark;--bg:#10151f;--panel:#171d29;--line:#2a3241;--muted:#94a0b4;--text:#e9edf5;--accent:#c2f079;--accent-dark:#1e3121;--font:Inter,"Segoe UI","Microsoft YaHei",system-ui,sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:16px;line-height:1.5}button,input,select{font:inherit}button{cursor:pointer;transition:background .15s,color .15s,border-color .15s}button:disabled{cursor:not-allowed;opacity:.42}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:3px}button{border:1px solid var(--line);color:var(--text);background:transparent;border-radius:7px}button:hover:not(:disabled){background:#2b3543}a{color:var(--accent)}button.quiet{border:0;padding:8px 12px;color:#b4bdce}.topbar{height:88px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 32px;gap:24px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--text);font-size:23px;font-weight:700;letter-spacing:2px;white-space:nowrap}.brandmark{color:var(--accent);font-size:35px;line-height:1}.brand small{display:block;color:var(--muted);font-size:11px;font-weight:500;letter-spacing:3px;line-height:1.5}.session{display:flex;align-items:center;gap:18px;font-size:14px;color:#c7d0df}.separator{width:1px;height:16px;background:var(--line)}.day-pill{background:#242d3b;padding:6px 10px;border-radius:5px;font-family:monospace;font-size:12px;letter-spacing:1px}.topbar nav{display:flex;gap:8px}.icon-button{width:32px;height:32px;border-radius:50%;color:var(--muted)}.game-layout{display:grid;grid-template-columns:230px minmax(0,1fr) 290px;min-height:calc(100vh - 140px);gap:0;padding:24px 26px 12px}.left-panel{padding-right:22px;border-right:1px solid var(--line)}.right-panel{padding-left:24px;border-left:1px solid var(--line)}.map-panel{min-width:0;padding:0 24px}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 16px}.panel-heading h2{font-size:15px;font-weight:600;margin:0}.panel-heading>span{font-size:12px;color:var(--muted)}.player-card{background:linear-gradient(135deg,#232e28,#1a2428);border:1px solid #455d37;border-radius:11px;padding:18px 16px;margin-bottom:26px}.player-card .eyebrow{font-size:11px;letter-spacing:2px;color:#c2e39a;margin:0 0 12px}.player-name{display:flex;gap:10px;align-items:center;font-size:23px;font-weight:600}.player-symbol{border:1px solid #506346;background:#283b28;border-radius:8px;padding:2px 8px;color:var(--accent);font-size:22px}.group-name{color:#b4c49f;font-size:14px;margin:4px 0 18px}.player-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}.stat-value{font-size:24px;font-weight:650;letter-spacing:-.5px}.stat-label{font-size:12px;color:#a6b4a1;margin-top:2px}.rank-tabs{display:flex;gap:8px;margin-bottom:12px}.rank-tabs button{border:0;border-radius:4px;font-size:13px;padding:4px 10px;color:var(--muted)}.rank-tabs button.active{background:#2c3442;color:var(--text)}.ranking{display:flex;flex-direction:column;gap:5px;max-height:calc(100vh - 500px);min-height:200px;overflow:auto;scrollbar-width:thin;scrollbar-color:#3d4655 transparent}.rank-row{display:grid;grid-template-columns:17px 9px 1fr auto;align-items:center;gap:7px;border:1px solid transparent;border-radius:6px;padding:8px 7px;text-align:left;min-height:43px;flex-shrink:0}.rank-row.me{background:#252f28;border-color:#46513b}.rank-number{font:12px monospace;color:#707e93}.rank-dot{width:7px;height:7px;border-radius:2px}.rank-name{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rank-total{font:12px var(--font);color:#b9c4d8}.rank-total small{font-size:11px;display:block;text-align:right;color:var(--muted)}.panel-footer{font-size:12px;color:var(--muted);margin-top:16px;border-top:1px solid var(--line);padding-top:14px;display:flex;align-items:center;gap:7px}.legend-circle{width:7px;height:7px;border-radius:50%;background:var(--accent)}.alliance-indicator{margin-left:12px;color:var(--accent)}.eyebrow{font-size:11px;letter-spacing:2px;color:var(--muted);margin:0 0 3px;font-weight:550}.map-heading{display:flex;justify-content:space-between;align-items:center;padding-bottom:15px}.map-heading h1{font-size:24px;letter-spacing:1px;margin:0;font-weight:550}.map-options{display:flex;gap:7px}.chip{padding:6px 11px;font-size:12px;color:var(--muted);border-color:#394351;border-radius:5px}.chip.active{color:var(--accent);border-color:#586c43;background:#222d24}.map-wrap{position:relative;background:radial-gradient(ellipse at 50% 40%,#172938 0,#121c2a 60%,#131b28 100%);border:1px solid #303e4e;border-radius:10px;overflow:hidden;height:clamp(350px,48vh,590px);isolation:isolate}.map-wrap svg{width:100%;height:100%;cursor:grab;touch-action:none;position:relative;z-index:1;display:block}.map-wrap svg:active{cursor:grabbing}.map-wrap .hex{stroke:#182b33;stroke-width:.13;stroke-linejoin:round;cursor:pointer;transition:fill-opacity .15s;fill-opacity:.73}.map-wrap .hex:hover,.map-wrap .hex:focus{fill-opacity:1;stroke:#e9f3de;stroke-width:.25;outline:none}.map-wrap .hex.selected{fill-opacity:1;stroke:#f1ffd7;stroke-width:.3}.map-wrap .hex.target{stroke:#fff;stroke-width:.3;fill-opacity:1}.map-wrap .hex.reachable{fill-opacity:.95}.map-wrap .hex.dimmed{fill-opacity:.3}.cell-number{fill:#111c28;font:600 1.08px var(--font);text-anchor:middle;dominant-baseline:middle;pointer-events:none}.country-label{fill:#dbe6ee;font:600 2.3px var(--font);text-anchor:middle;paint-order:stroke;stroke:#152230;stroke-width:.45;stroke-linejoin:round;pointer-events:none;letter-spacing:.15px}.capital-star{fill:#fff;pointer-events:none;paint-order:stroke;stroke:#172230;stroke-width:.3}.sea-link{stroke:#70849a;stroke-width:.13;stroke-dasharray:.5 .5;fill:none;opacity:.35;pointer-events:none}.grid-line{stroke:#8daccb;stroke-width:.08;opacity:.14;fill:none;pointer-events:none}.map-zoom{position:absolute;z-index:2;right:14px;bottom:16px;display:flex;flex-direction:column;background:#17212f;border:1px solid #3b4859;border-radius:7px;overflow:hidden}.map-zoom button{border:0;line-height:30px;font-size:22px;width:34px;border-radius:0}.map-zoom button+button{border-top:1px solid #394758}.map-hint{position:absolute;bottom:15px;left:15px;color:#7990a5;font-size:11px;z-index:2;pointer-events:none}.map-tooltip{position:absolute;z-index:3;background:#182432;border:1px solid #4d5e6f;border-radius:7px;padding:9px 12px;box-shadow:0 4px 20px #0005;font-size:13px;pointer-events:none;max-width:220px}.map-tooltip strong{display:block}.map-tooltip span{display:block;font-size:12px;color:#bbc8d9}.ocean-label{position:absolute;color:#557089;letter-spacing:3px;font:10px monospace;opacity:.7;z-index:0;pointer-events:none}.ocean-label-one{left:48%;bottom:26%}.map-caption{display:flex;justify-content:space-between;gap:10px;font-size:11px;color:#8290a5;margin:12px 0 24px}.map-caption i{display:inline-block;width:6px;height:6px;border-radius:2px;background:#83946f;margin-right:5px}.map-caption>span:last-child{color:#b4c79e;white-space:nowrap}.log-panel{border-top:1px solid var(--line);padding-top:18px}.log-panel h2 span{font-size:10px;vertical-align:middle;color:#b7c8a9;background:#28342a;padding:2px 5px;border-radius:3px;margin-left:7px}.log-filters{display:flex;gap:10px}.log-filters button{border:0;padding:0;color:#738096;font-size:12px}.log-filters button.active{color:#d5deeb}.event-log{max-height:150px;overflow:auto;scrollbar-width:thin;scrollbar-color:#3d4655 transparent}.log-row{display:grid;grid-template-columns:42px 12px 1fr;gap:8px;font-size:13px;color:#b9c5d6;padding:8px 0;border-bottom:1px solid #232d3b;line-height:1.55}.log-day{font:11px monospace;color:#738197;padding-top:3px}.log-symbol{color:var(--accent)}.log-row.loss .log-symbol{color:#f2a2af}.log-row.event .log-symbol{color:#e5bb75}.cost-label{padding:3px 7px;background:#252d39;border-radius:4px}.selection-card{min-height:131px;border:1px solid #364253;border-radius:8px;padding:16px;background:#1a2230;margin-bottom:18px}.selection-head{display:flex;justify-content:space-between;align-items:center;color:#a2afc3;font-size:12px;margin-bottom:9px}.selection-card h3{font-size:20px;font-weight:550;margin:0 0 5px}.selection-card .selected-fans{font-size:27px;font-weight:650;letter-spacing:-.5px}.selected-fans span{font-size:12px;font-weight:400;color:var(--muted);margin-left:8px}.action-tabs{display:flex;border-bottom:1px solid var(--line);margin-bottom:18px}.action-tabs button{flex:1;border:0;border-bottom:2px solid transparent;padding:9px 0;border-radius:0;font-size:14px;color:var(--muted)}.action-tabs button.active{color:var(--accent);border-bottom-color:var(--accent)}.action-panel{min-height:265px}.action-panel h3{font-size:16px;font-weight:550;margin:0 0 10px}.action-panel p{color:#a5b2c7;font-size:14px;line-height:1.8;margin:8px 0 18px}.forecast{display:flex;justify-content:space-between;background:#1b2830;padding:14px;border:1px solid #34464c;border-radius:7px;font-size:13px;color:#becad8;align-items:center;margin:16px 0}.forecast strong{color:var(--accent);font-size:20px}.primary{background:var(--accent);color:#1d2b14;border:0;padding:12px 18px;border-radius:7px;font-weight:600;display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:48px}.primary:hover:not(:disabled){background:#d0fc8c}.action-panel .primary{width:100%;font-size:14px}.primary small{font-size:12px;opacity:.7}.day-cycle{padding-top:20px;border-top:1px solid var(--line);margin-top:15px}.day-cycle>div{display:flex;align-items:center;gap:9px;font-size:14px}.cycle-orbit{font-size:23px;color:#88a0bd}.day-cycle strong{font-weight:500}.day-cycle p{color:var(--muted);font-size:12px;line-height:1.8;margin:7px 0 16px}label{font-size:13px;color:#b3bed1;display:block;margin:13px 0 7px}select,input[type=number]{color:#d5dfee;background:#212a39;border:1px solid #3e495a;border-radius:6px;padding:10px 11px;width:100%;font-size:14px;min-height:42px}select{cursor:pointer}.save-status{font-size:11px;color:#7f8b9e;text-align:center;margin-top:17px}.footer{display:flex;justify-content:space-between;align-items:center;padding:11px 30px;font-size:11px;color:#929eaf;border-top:1px solid #242c3b;gap:10px}.footer-muted{margin-left:14px;color:#5e6e83}.footer button{border:0;color:#8a97ab;font-size:11px}.field-note{color:#8f9db2;font-size:12px;line-height:1.6}.change-source{font-size:12px;color:var(--accent);border:0;padding:0;margin:8px 0 13px}.target-box{padding:10px 12px;background:#222d3b;border:1px dashed #50637b;border-radius:6px;font-size:14px;margin-bottom:10px;color:#bdc9dc;min-height:50px}.target-box strong{font-weight:500}.target-box small{display:block;color:var(--muted);font-size:12px}.amount-row{display:flex;justify-content:space-between;font-size:13px;color:#abb7c9;margin:12px 0 3px}.amount-row strong{color:#dbe9cc}input[type=range]{width:100%;accent-color:var(--accent);margin:9px 0 5px}.amount-presets{display:flex;gap:6px;margin:4px 0 14px}.amount-presets button{flex:1;font-size:12px;padding:3px;border-radius:4px;color:#99a8bd}.challenge-preview{font-size:12px;line-height:1.7;color:#afbbcc;border-left:2px solid var(--accent);padding-left:10px;margin:12px 0}.challenge-preview.risk{border-color:#eba1af;color:#e1a6b1}.diplomacy-list{display:flex;flex-direction:column;max-height:218px;overflow:auto;gap:7px}.diplomacy-row{display:flex;align-items:center;justify-content:space-between;font-size:13px;padding:9px;border:1px solid #333e50;border-radius:6px}.diplomacy-row small{display:block;color:#8898af;font-size:11px}.diplomacy-row button{font-size:12px;padding:5px 7px;color:#b8e38b}.notice{font-size:12px;color:#d7ad79;line-height:1.7;padding:10px;border:1px solid #675136;border-radius:6px;margin-bottom:12px}.end-state{background:#2b332a;border:1px solid #5a713d;border-radius:7px;padding:14px;font-size:14px;margin-bottom:14px}.toast{position:fixed;bottom:32px;left:50%;transform:translateX(-50%);padding:12px 20px;border:1px solid #596f44;color:#d5e9bd;background:#253026;z-index:30;border-radius:8px;box-shadow:0 8px 30px #0005;font-size:14px;max-width:min(90vw,640px)}dialog{color:var(--text);background:#171e2b;border:1px solid #3c485d;border-radius:13px;padding:28px;box-shadow:0 25px 100px #0007;max-height:92vh;overflow:auto}dialog::backdrop{background:#080d17cc;backdrop-filter:blur(5px)}.setup-dialog{width:min(880px,94vw)}.dialog-top{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}.dialog-top h2{font-size:27px;margin:0;font-weight:550;letter-spacing:1px}.close-button{border:0;border-radius:50%;font-size:25px;color:#8c9cb2;line-height:30px;width:34px;height:34px}.mode-tabs{display:flex;gap:20px;border-bottom:1px solid #334054;margin-bottom:20px}.mode-tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 2px 12px;color:#8e9cb1;font-size:15px}.mode-tabs button.active{color:var(--accent);border-bottom-color:var(--accent)}.setup-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px}.scenario-list{display:flex;flex-direction:column;gap:7px;max-height:455px;overflow:auto;padding-right:7px;scrollbar-width:thin;scrollbar-color:#415066 transparent}.scenario-option{display:grid;grid-template-columns:82px 1fr 24px;align-items:center;gap:10px;padding:12px;text-align:left;border:1px solid #303d50;border-radius:7px}.scenario-option.active{background:#293628;border-color:#789950}.scenario-option .year{font:13px monospace;color:#acc198}.scenario-option strong{font-size:15px;font-weight:500;display:block}.scenario-option small{font-size:11px;color:#8392a9;display:block;margin-top:2px}.scenario-option .scenario-star{color:#8ba764;font-size:19px}.setup-options h3{font-size:24px;margin:0 0 8px;font-weight:550}.scenario-description{font-size:13px;color:#a7b5cc;line-height:1.8;margin:5px 0 15px}.two-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.country-preview{margin:12px 0;padding:12px;background:#1e2934;border:1px solid #334450;border-radius:7px;font-size:12px;color:#b1c2d2}.country-preview strong{font-size:19px;color:var(--accent);font-weight:550}.ratings{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px;font-size:10px;color:#8d9bb2}.ratings b{font-size:13px;display:block;color:#c4d2df;font-weight:500}.setup-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:24px;border-top:1px solid #334054;padding-top:18px}.setup-bottom>span{color:#8091a8;font-size:12px}.setup-bottom .primary{min-width:200px}.info-dialog{width:min(670px,94vw)}.info-dialog h3{font-size:17px;color:#d5e7bd;margin:23px 0 7px}.info-dialog p,.info-dialog li{font-size:14px;color:#b8c4d8;line-height:1.85}.info-dialog ul{padding-left:20px}.info-dialog .rule-number{color:var(--accent)}.info-dialog .dialog-top h2{font-size:23px}.save-actions{display:grid;gap:10px;margin:20px 0}.save-actions button{padding:13px;text-align:left;font-size:14px}.save-actions button small{display:block;color:var(--muted);font-size:12px;margin-top:3px}.power-formula{border:1px solid #3d4f4a;background:#22322d;border-radius:8px;padding:12px;color:#c2dda6;font-size:14px}.country-details{display:grid;grid-template-columns:1fr 1fr;gap:14px}.country-details .metric{padding:12px;background:#212b3b;border-radius:8px}.metric small{display:block;color:var(--muted);font-size:12px}.metric strong{font-size:22px;font-weight:500}body.busy .primary{opacity:.6;pointer-events:none}[hidden]{display:none!important}
@media(min-width:1700px){.game-layout{grid-template-columns:270px minmax(0,1fr) 330px;padding:30px 40px}.left-panel{padding-right:30px}.map-panel{padding:0 35px}.right-panel{padding-left:30px}.ranking{max-height:calc(100vh - 450px)}}
@media(max-width:1180px){.game-layout{grid-template-columns:180px minmax(0,1fr) 250px;padding:20px 16px}.left-panel{padding-right:14px}.right-panel{padding-left:16px}.map-panel{padding:0 16px}.topbar{padding:0 20px}.session{gap:9px}.rank-row{padding:7px 3px;gap:5px;grid-template-columns:13px 6px 1fr auto}.rank-name{font-size:12px}.rank-total{font-size:11px}.player-card{padding:14px 10px}.player-name{font-size:19px}.stat-value{font-size:21px}.map-heading h1{font-size:21px}.map-caption{font-size:10px}.map-wrap{height:430px}}
@media(max-width:980px){.game-layout{grid-template-columns:minmax(0,1fr) 275px}.left-panel{grid-column:1/-1;display:flex;align-items:center;gap:20px;border-right:0;border-bottom:1px solid var(--line);padding:0 0 16px;margin-bottom:20px}.player-card{min-width:210px;margin:0;padding:12px 16px}.player-card .eyebrow,.left-panel>.panel-heading,.rank-tabs,.panel-footer{display:none}.player-name{font-size:19px}.group-name{margin:2px 0 9px;font-size:12px}.player-stats{gap:18px}.stat-value{font-size:20px}.ranking{flex-direction:row;overflow:auto;min-height:0;max-height:none;flex:1;align-self:stretch;align-items:center}.rank-row{min-width:150px;grid-template-columns:14px 7px 1fr;gap:7px;background:#19212e;padding:11px;position:relative;display:grid}.rank-name{font-size:13px}.rank-total{grid-column:3;font-size:13px}.rank-total small{display:none}.map-panel{padding-left:0}.map-wrap{height:430px}.topbar .session #scenarioLabel,.session .separator{display:none}.footer{padding:10px 18px}.ranking .rank-number{grid-row:1}.action-panel{min-height:240px}}
@media(max-width:700px){.topbar{height:74px;padding:0 16px;gap:10px;flex-wrap:wrap}.brand{font-size:19px;letter-spacing:1px;gap:8px}.brandmark{font-size:29px}.brand small{font-size:9px;letter-spacing:2px}.session{gap:7px;font-size:11px;margin-left:auto}.session .day-pill{display:none}.topbar nav{gap:1px}.topbar button.quiet{font-size:12px;padding:6px}.icon-button{width:26px;height:26px;font-size:13px}.game-layout{display:flex;flex-direction:column;padding:16px 14px 12px}.left-panel{gap:12px;margin-bottom:18px}.player-card{min-width:172px;padding:10px 12px}.player-symbol{font-size:16px;padding:2px 6px}.player-name{font-size:18px}.group-name{font-size:11px}.stat-value{font-size:19px}.stat-label{font-size:10px}.player-stats{gap:8px}.rank-row{min-width:128px}.map-panel{padding:0}.map-heading{padding-bottom:12px}.map-heading h1{font-size:22px}.map-options{gap:5px}.chip{font-size:11px;padding:5px 8px}.map-wrap{height:350px}.map-hint{font-size:10px;left:10px}.ocean-label{font-size:8px}.map-caption{font-size:10px;margin:10px 0 17px;line-height:1.7;flex-wrap:wrap}.log-panel{padding-top:14px}.event-log{max-height:120px}.right-panel{border-left:0;border-top:1px solid var(--line);padding:20px 0 0;margin-top:22px;display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.right-panel>.panel-heading,.action-tabs,.action-panel,.save-status{grid-column:1/-1}.selection-card{margin-bottom:15px}.day-cycle{border-top:0;padding:0;margin:0;font-size:12px;grid-row:2;grid-column:2}.day-cycle p{font-size:11px;line-height:1.6;margin:5px 0}.day-cycle label{font-size:11px;margin:5px 0}.day-cycle select{font-size:11px;padding:7px;min-height:35px}.day-cycle>div{font-size:12px}.cycle-orbit{font-size:19px}.selection-card{padding:12px;min-height:143px}.selection-card h3{font-size:18px}.selection-head{font-size:10px}.selected-fans span{display:block;margin:0;font-size:10px}.selection-card .selected-fans{font-size:23px}.action-panel{min-height:0}.action-panel p{font-size:14px}.action-panel .primary{font-size:15px}.footer-muted{display:none}.footer{font-size:10px;padding:10px 14px}.footer button{font-size:10px}.setup-dialog{padding:20px;max-height:94vh}.setup-grid{grid-template-columns:1fr;gap:20px}.scenario-list{max-height:205px}.scenario-option{padding:9px;grid-template-columns:70px 1fr 20px}.scenario-option .year{font-size:12px}.setup-options h3{font-size:21px}.setup-bottom>span{display:none}.setup-bottom .primary{width:100%;min-width:0}.dialog-top h2{font-size:24px}.info-dialog{padding:22px}.info-dialog p,.info-dialog li{font-size:14px}.setup-bottom{position:sticky;bottom:-20px;background:#171e2b;padding-bottom:4px}.rank-total small{display:none}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* Appearance and interaction refinements. The map shares the same theme tokens. */
:root{--surface:#171e2b;--surface-2:#212b3b;--surface-3:#293446;--soft:#aab8cc;--green-text:#c2f079;--green-bg:#243329;--danger:#efa5af;--danger-bg:#35212a;--water:#142232;--land:#283e50;--coast:#526a7b;--map-label:#e2ecf4;--map-outline:#152230;--selection:#f1ffd7;--shadow:0 12px 40px #0004}
html[data-theme=light]{color-scheme:light;--bg:#f4f7fb;--panel:#fff;--line:#d9e1eb;--muted:#5b6b80;--text:#203047;--accent:#346e32;--accent-dark:#ecf6e7;--surface:#fff;--surface-2:#edf2f8;--surface-3:#e2eaf4;--soft:#465b74;--green-text:#316529;--green-bg:#edf6e8;--danger:#a7384a;--danger-bg:#fff0f1;--water:#e5eef6;--land:#ccdbe5;--coast:#a3bac9;--map-label:#223c51;--map-outline:#eef5fa;--selection:#203b55;--shadow:0 12px 40px #21354e12}
html{scroll-padding-top:20px}button:disabled{opacity:.5}.quiet.theme-toggle{border:1px solid var(--line);border-radius:7px}.topbar{height:auto;min-height:88px;padding-top:14px;padding-bottom:14px}.topbar nav{align-items:center}.topbar nav button{min-height:38px}.skip-link{position:fixed;top:-60px;left:16px;padding:10px 16px;background:var(--accent);color:var(--bg);z-index:100;border-radius:5px}.skip-link:focus{top:12px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.onboarding{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);background:var(--surface);border-radius:7px;padding:10px 12px;margin-bottom:12px;font-size:13px;color:var(--soft);line-height:1.7}.onboarding b{color:var(--green-text);margin-right:10px;font-weight:550;white-space:nowrap}.onboarding button{border:0;font-size:21px;width:28px;min-width:28px;min-height:30px;color:var(--muted)}.map-wrap{background:radial-gradient(ellipse at center,var(--water),var(--bg))}.land-shape{fill:var(--land);stroke:var(--coast)}.map-wrap .hex{vector-effect:non-scaling-stroke;stroke-width:.55px;stroke:var(--map-outline)}.map-wrap .hex.selected,.map-wrap .hex.target,.map-wrap .hex.cursor{stroke:var(--selection);stroke-width:2px}.map-wrap .hex:hover{stroke:var(--selection);stroke-width:1.5px}.country-label{font-size:var(--map-label-size,2.3px);fill:var(--map-label);stroke:var(--map-outline)}.cell-number{font-size:var(--map-number-size,1.08px)}.map-wrap svg:focus-visible{outline:2px solid var(--accent);outline-offset:-3px;border-radius:10px}.map-tooltip{background:var(--surface);border-color:var(--line);color:var(--text);box-shadow:var(--shadow)}.map-tooltip span{color:var(--soft)}.map-zoom{background:var(--surface);border-color:var(--line)}.map-zoom button+button{border-color:var(--line)}.map-hint{color:var(--muted);background:color-mix(in srgb,var(--water) 90%,transparent);padding:3px 6px;border-radius:3px}.source-label{font-size:13px;margin:0 0 7px;color:var(--soft)}.source-label span{float:right;font-size:12px;color:var(--muted)}.source-picker{display:flex;gap:7px;margin-bottom:14px}.source-picker select{min-width:0;font-size:13px}.source-picker button{width:42px;flex-shrink:0;font-size:22px;background:var(--surface)}.target-select{margin:10px 0 6px}.target-filter{display:flex;gap:6px;margin:10px 0}.target-filter button{padding:5px 9px;font-size:12px;color:var(--muted)}.target-filter button.active{border-color:var(--accent);color:var(--green-text);background:var(--green-bg)}.amount-presets button.minimum{border-color:#5c7442;color:var(--green-text)}.exact-fans{font-size:12px;color:var(--muted);margin-top:3px}.daily-report{padding:13px 16px;margin:0 0 20px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.report-top{display:flex;justify-content:space-between;align-items:center;gap:10px;color:var(--muted);font-size:12px;margin-bottom:8px}.report-top strong{font-size:14px;color:var(--text);font-weight:550}.report-stats{display:flex;gap:18px;flex-wrap:wrap;color:var(--soft);font-size:13px}.report-stats b{font-size:17px;font-weight:550;margin-left:5px}.positive{color:var(--green-text)}.negative{color:var(--danger)}.report-note{font-size:12px;color:var(--soft);line-height:1.7;margin:8px 0 0}.goal-track{height:4px;background:var(--surface-3);border-radius:8px;overflow:hidden;margin-top:14px}.goal-track span{display:block;height:100%;background:var(--accent);border-radius:8px}.action-panel .inspect-actions{display:flex;gap:8px;margin-top:14px;flex-direction:column}.action-panel .inspect-actions button{padding:10px}.notice{background:var(--surface)}.notice.risk{color:var(--danger);border-color:var(--danger);background:var(--danger-bg)}.danger-button{background:#aa4352!important;color:white!important}.confirm-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;flex-wrap:wrap}.confirm-actions button{padding:11px 17px;min-height:44px}.confirm-dialog .dialog-top h2{font-size:22px}.confirm-dialog p{color:var(--soft)}.confirm-facts{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:15px;background:var(--surface-2);border-radius:8px}.confirm-facts small{display:block;font-size:12px;color:var(--muted)}.confirm-facts strong{font-size:22px}.save-slot{display:flex;justify-content:space-between;gap:12px;padding:12px;border:1px solid var(--line);border-radius:7px;align-items:center;margin:8px 0}.save-slot div{min-width:0}.save-slot strong{display:block;font-size:14px;font-weight:550}.save-slot small{font-size:12px;color:var(--muted)}.save-slot .slot-buttons{display:flex;gap:5px;flex-shrink:0}.save-slot button{padding:6px 9px;font-size:12px}.appearance-choice{max-width:220px}.setup-safety-note{color:var(--muted);font-size:12px;max-width:360px;line-height:1.6}.round-busy{opacity:.65}.faction-mark{display:inline-block;width:8px;height:8px;margin-right:6px;border-radius:2px;background:var(--faction)}.selection-card{margin-bottom:12px}.game-layout{grid-template-columns:230px minmax(0,1fr) 310px}.right-panel{padding-left:20px}.action-panel{min-height:240px}.action-panel label{font-size:13px}.action-panel .primary{min-height:46px}.brand small{font-size:12px}.map-caption,.save-status,.field-note,.panel-footer,.day-cycle p{font-size:12px}.map-options .chip{min-height:35px}.day-cycle select{font-size:13px}.day-cycle label{font-size:13px}.log-row{font-size:14px}.rank-name{font-size:14px}.rank-total{font-size:13px}
html[data-theme=light] button:hover:not(:disabled){background:#e6edf6}html[data-theme=light] .primary{background:#356d31;color:#fff}html[data-theme=light] .primary:hover:not(:disabled){background:#295827}html[data-theme=light] .topbar button.quiet,html[data-theme=light] .session{color:var(--soft)}html[data-theme=light] .day-pill,html[data-theme=light] .rank-tabs button.active{background:var(--surface-2);color:var(--text)}html[data-theme=light] .player-card{background:linear-gradient(135deg,#f1f8ea,#eaf2f6);border-color:#b8cfa7!important}html[data-theme=light] .player-card .eyebrow,html[data-theme=light] .group-name,html[data-theme=light] .stat-label{color:#536d46}html[data-theme=light] .player-symbol{background:#e5efd9;border-color:#b8cfa7;color:#37632c!important}html[data-theme=light] .rank-row.me{background:var(--green-bg);border-color:#b8cfa7}html[data-theme=light] .rank-number,html[data-theme=light] .rank-tabs button{color:var(--muted)}html[data-theme=light] .ranking{scrollbar-color:#b7c6d7 transparent}html[data-theme=light] .rank-total{color:var(--soft)}html[data-theme=light] .chip{color:var(--soft);border-color:var(--line);background:var(--surface)}html[data-theme=light] .chip.active{color:var(--green-text);background:var(--green-bg);border-color:#b8cfa7}html[data-theme=light] .map-wrap{border-color:#bdcddd}html[data-theme=light] .hex{fill-opacity:.85}html[data-theme=light] .map-caption,html[data-theme=light] .map-caption>span:last-child{color:var(--muted)}html[data-theme=light] .map-caption i{background:var(--accent)}html[data-theme=light] .log-panel h2 span{color:var(--green-text);background:var(--green-bg)}html[data-theme=light] .log-filters button{color:var(--muted)}html[data-theme=light] .log-filters button.active{color:var(--text)}html[data-theme=light] .log-row{border-color:var(--line);color:var(--soft)}html[data-theme=light] .log-day{color:var(--muted)}html[data-theme=light] .log-row.loss .log-symbol{color:var(--danger)}html[data-theme=light] .log-row.event .log-symbol{color:#97651e}html[data-theme=light] .selection-card{background:var(--surface);border-color:var(--line)}html[data-theme=light] .selection-head{color:var(--muted)}html[data-theme=light] .cost-label{background:var(--surface-2)}html[data-theme=light] .action-tabs button{color:var(--muted)}html[data-theme=light] .action-tabs button.active{color:var(--green-text)}html[data-theme=light] .action-panel p{color:var(--soft)}html[data-theme=light] .forecast{background:var(--green-bg);border-color:#c4d8b7;color:var(--soft)}html[data-theme=light] label{color:var(--soft)}html[data-theme=light] select,html[data-theme=light] input[type=number]{background:var(--surface);border-color:#c4d0df;color:var(--text)}html[data-theme=light] .target-box{background:var(--surface-2);border-color:#9db2ca;color:var(--text)}html[data-theme=light] .amount-row{color:var(--soft)}html[data-theme=light] .amount-row strong{color:var(--text)}html[data-theme=light] .amount-presets button{color:var(--soft)}html[data-theme=light] .challenge-preview{color:var(--soft)}html[data-theme=light] .challenge-preview.risk{color:var(--danger);border-color:var(--danger)}html[data-theme=light] .diplomacy-row{border-color:var(--line)}html[data-theme=light] .diplomacy-row button{color:var(--green-text)}html[data-theme=light] .end-state{background:var(--green-bg);border-color:#b8cfa7}html[data-theme=light] .footer{border-color:var(--line);color:var(--muted)}html[data-theme=light] .footer-muted,html[data-theme=light] .footer button{color:var(--muted)}html[data-theme=light] dialog{background:var(--surface);border-color:#b8c8da;box-shadow:var(--shadow)}html[data-theme=light] dialog::backdrop{background:#354b6359;backdrop-filter:blur(4px)}html[data-theme=light] .mode-tabs,html[data-theme=light] .setup-bottom{border-color:var(--line)}html[data-theme=light] .scenario-option{border-color:var(--line)}html[data-theme=light] .scenario-option.active{background:var(--green-bg);border-color:#8daf72}html[data-theme=light] .scenario-option .year{color:var(--green-text)}html[data-theme=light] .scenario-option small,html[data-theme=light] .scenario-description,html[data-theme=light] .setup-bottom>span{color:var(--soft)}html[data-theme=light] .country-preview{background:var(--surface-2);border-color:var(--line);color:var(--soft)}html[data-theme=light] .ratings{color:var(--muted)}html[data-theme=light] .ratings b{color:var(--text)}html[data-theme=light] .info-dialog h3{color:var(--green-text)}html[data-theme=light] .info-dialog p,html[data-theme=light] .info-dialog li{color:var(--soft)}html[data-theme=light] .power-formula{background:var(--green-bg);border-color:#b8cfa7;color:var(--green-text)}html[data-theme=light] .metric{background:var(--surface-2)}html[data-theme=light] .toast{background:#edf6e8;color:#2d5d27;border-color:#a5c88d;box-shadow:var(--shadow)}
@media(max-width:1180px){.game-layout{grid-template-columns:175px minmax(0,1fr) 275px}.session{gap:8px}.topbar{gap:14px}.map-panel{padding:0 15px}.map-options{gap:5px}.map-options .chip{padding:5px 7px}.topbar .quiet{font-size:13px;padding:7px 9px}.right-panel{padding-left:16px}}
@media(max-width:980px){.game-layout{grid-template-columns:minmax(0,1fr) 285px}.left-panel{display:flex}.rank-row{background:var(--surface)}.map-options{flex-wrap:wrap;justify-content:flex-end}.map-heading h1{font-size:21px}.topbar .session{margin-left:auto}.topbar nav{gap:4px}.onboarding{font-size:12px}.game-layout>.left-panel{padding-bottom:15px}.source-label{font-size:12px}}
@media(max-width:700px){.topbar{min-height:100px;padding:12px 14px;gap:6px 12px}.topbar nav{width:100%;justify-content:space-between;padding-top:3px;gap:4px}.topbar nav button{min-height:36px}.topbar .quiet{font-size:12px;padding:5px 7px}.topbar .session{font-size:12px}.brand small{font-size:10px}.map-heading h1{font-size:20px}.map-options{gap:4px}.map-options .chip{font-size:11px;padding:6px;min-height:36px}.onboarding{align-items:flex-start;font-size:12px;margin-bottom:10px}.onboarding b{display:block}.map-wrap{height:340px}.map-zoom button{width:40px;height:40px}.map-hint{font-size:10px;max-width:75%}.right-panel{display:block;padding:18px 0 0;margin-top:18px}.selection-card{min-height:110px}.selection-card .selected-fans{font-size:24px}.selected-fans span{display:inline-block;margin-left:7px;font-size:12px}.selection-head{font-size:12px}.day-cycle{margin-top:22px;border-top:1px solid var(--line);padding-top:16px}.day-cycle>div{font-size:14px}.day-cycle p,.day-cycle label{font-size:13px}.day-cycle select{font-size:14px;min-height:44px}.source-picker select{font-size:14px;min-height:44px}.source-picker button{width:44px}.source-label{font-size:14px}.action-tabs button{font-size:15px;min-height:44px}.action-panel .primary{position:sticky;bottom:10px;z-index:3;box-shadow:var(--shadow);min-height:48px}.amount-presets button{min-height:38px;font-size:13px}.amount-presets{gap:5px}.action-panel label{font-size:14px}.diplomacy-row{font-size:14px}.diplomacy-row button{min-height:38px;font-size:13px}.save-status{margin-bottom:7px}.mobile-log{border-top:1px solid var(--line);margin-top:20px;padding-top:18px}.mobile-log .event-log{max-height:180px}.report-stats{gap:13px;font-size:13px}.report-top{font-size:12px}.daily-report{margin-top:15px}.setup-dialog .setup-bottom{background:var(--surface)}.setup-bottom>span{display:block;font-size:11px;max-width:100%;margin-bottom:9px}.setup-bottom{display:block}.setup-bottom .primary{box-shadow:var(--shadow)}.save-slot{align-items:flex-start}.save-slot .slot-buttons{flex-direction:column}.save-slot button{min-height:36px}.dialog-top h2{font-size:23px}.field-note{font-size:13px}.info-dialog p,.info-dialog li{font-size:15px}.close-button{min-width:36px;min-height:36px}.goal-track{margin-top:10px}}
/* Explicit rounds and fan movement. */
.round-control{position:sticky;top:8px;z-index:4;background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:12px;margin:0 0 14px;box-shadow:var(--shadow)}.round-top{display:flex;justify-content:space-between;gap:8px;font-size:13px;align-items:center}.round-top strong{font-weight:600}.round-top span{color:var(--muted);font-size:12px}.round-meter{height:4px;background:var(--surface-3);border-radius:8px;margin:10px 0 12px;overflow:hidden}.round-meter i{display:block;height:100%;background:var(--accent);transition:width .25s}.round-buttons{display:flex;gap:7px}.round-buttons button{flex:1;font-size:12px;min-height:40px;padding:8px 6px}.round-buttons .end-turn{background:var(--accent);border-color:var(--accent);color:var(--bg);font-weight:600}.round-control p{font-size:12px;line-height:1.6;color:var(--muted);margin:9px 0 0}.round-used{padding:11px;margin-bottom:15px;font-size:13px;color:var(--muted)}.round-used button{display:block;border:0;color:var(--green-text);padding:6px 0;margin-top:5px;font-size:13px}.map-target-pick{font-size:12px;min-height:34px;padding:5px 10px;margin-top:8px}.map-target-pick[aria-pressed=true]{background:var(--green-bg);border-color:var(--accent);color:var(--green-text)}.turn-marker{font-size:1.1px;fill:var(--selection);stroke:var(--map-outline);stroke-width:.12px;paint-order:stroke;pointer-events:none}.fan-trail{stroke:var(--flight-color);stroke-width:2.5px;fill:none;vector-effect:non-scaling-stroke;stroke-dasharray:5 5;filter:drop-shadow(0 0 2px var(--flight-color))}.fan-particle{fill:white;stroke:var(--flight-color);stroke-width:.12px;filter:drop-shadow(0 0 3px var(--flight-color))}.fan-origin,.fan-arrival{fill:none;stroke:var(--flight-color);stroke-width:2.5px;vector-effect:non-scaling-stroke;transform-box:fill-box;transform-origin:center;pointer-events:none}.fan-origin{animation:fan-origin 1.1s ease-out both}.fan-arrival{opacity:0;animation:fan-arrival .45s .65s ease-out both}.fan-arrival.failed{stroke:#ed8092}.motion-status{position:absolute;top:12px;left:12px;max-width:calc(100% - 24px);padding:8px 11px;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--text);font-size:13px;box-shadow:var(--shadow);pointer-events:none;z-index:4}.map-wrap [data-motion]{pointer-events:none}html[data-theme=light] .end-turn{background:#356d31;color:white}html[data-theme=light] .end-turn:hover:not(:disabled){background:#295827}@keyframes fan-origin{0%{opacity:1;transform:scale(.5)}100%{opacity:0;transform:scale(1.5)}}@keyframes fan-arrival{0%{opacity:1;transform:scale(.4)}100%{opacity:.15;transform:scale(1.6)}}@media(max-width:700px){.round-buttons button{min-height:44px;font-size:13px}.round-control{top:6px;padding:12px}.motion-status{font-size:12px}.map-target-pick{min-height:40px;font-size:13px}}@media(prefers-reduced-motion:reduce){.fan-origin,.fan-arrival{animation:none;opacity:1}.round-meter i{transition:none}}
.operation-badge{font-size:12px;margin-top:8px;color:var(--green-text)}
