/* ============================================================================
   SIGNAL DESK
   A near-black analyst workstation: flat surfaces, hairline rules, tabular
   figures, provenance and confidence on every number. No glow, no blur.
   ========================================================================== */

@font-face{font-family:'Inter';src:url('../fonts/inter-latin-400-normal.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Inter';src:url('../fonts/inter-latin-500-normal.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'Inter';src:url('../fonts/inter-latin-600-normal.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:'Inter';src:url('../fonts/inter-latin-700-normal.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}

:root{
  --bg:#0a0d10;
  --panel:#12161a;
  --well:#0d1114;
  --line:#242b31;
  --line2:#333c44;
  --text:#dfe4e8;
  --dim:#8b949c;

  --friend:#4d82b8;
  --rival:#bf4438;
  --neutral:#8a8f95;
  --econ:#c9a227;
  --moss:#5f8a5a;
  --amber:#d18a2e;
  --crit:#e0503a;

  --nai:#4d82b8;
  --euc:#bf4438;
  --pcp:#c9a227;
  --sou:#7f9a4a;
  --nam:#8f7aa6;

  --sans:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:ui-monospace,'SFMono-Regular',Menlo,Consolas,'Liberation Mono',monospace;

  --sb-h:46px;
  --nav-h:34px;
  --bottom-h:292px;
  --left-w:236px;
  --right-w:308px;
}

*{box-sizing:border-box}
html,body{height:100%}
html{overflow:hidden}
body{
  margin:0;background:var(--bg);color:var(--text);
  font-family:var(--sans);font-size:13px;line-height:1.3;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow:hidden;
}
b,strong{font-weight:600}
h1,h2,h3{margin:0;font-family:var(--sans);font-weight:600;letter-spacing:.08em;text-transform:uppercase}
.num,td,.kpi b,.stat b,[data-num]{font-variant-numeric:tabular-nums lining-nums;font-feature-settings:'tnum' 1,'lnum' 1}
.hidden{display:none !important}
button{font-family:var(--sans)}

/* ---------------------------------------------------------------- layout */
#app{
  position:fixed;inset:0;overflow:hidden;background:var(--bg);
  display:grid;
  grid-template-rows:var(--sb-h) var(--nav-h) 1fr var(--bottom-h);
  grid-template-columns:1fr;
  grid-template-areas:
    "status"
    "nav"
    "stage"
    "bottom";
}

/* ------------------------------------------------------------- statusbar */
#statusbar{
  grid-area:status;display:flex;align-items:stretch;
  background:var(--panel);border-bottom:1px solid var(--line);
  padding:0 10px;gap:0;overflow:hidden;
}
.sb-ident{display:flex;align-items:center;gap:9px;padding-right:14px;border-right:1px solid var(--line)}
.sb-flag{width:30px;height:30px;flex:none;display:block}
.sb-flag svg{width:30px;height:30px;display:block}
.sb-names{display:flex;flex-direction:column;line-height:1.15;min-width:0}
.sb-names b{font-size:12.5px;letter-spacing:.02em;white-space:nowrap}
.sb-names i{font-style:normal;font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);white-space:nowrap}
.sb-turn{display:flex;align-items:baseline;gap:8px;padding:0 14px;border-right:1px solid var(--line)}
.sb-turn-lab{font-size:9px;letter-spacing:.2em;color:var(--dim)}
.sb-turn b{font-size:19px;font-weight:600}
.sb-date{font-size:11.5px;color:var(--dim);letter-spacing:.02em;white-space:nowrap}
.sb-tension{display:flex;flex-direction:column;justify-content:center;gap:3px;padding:0 16px;border-right:1px solid var(--line);min-width:190px}
.sb-t-lab{font-size:8.5px;letter-spacing:.2em;color:var(--dim)}
.sb-t-val{font-family:var(--mono);font-size:11px;color:var(--text)}
.tick-scale{position:relative;display:block;height:7px;border:1px solid var(--line2);background:
  linear-gradient(90deg,#3a5a3a,#7f9a4a 30%,#c9a227 55%,#d18a2e 72%,#bf4438 90%,#e0503a);}
.tick-scale::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(90deg,transparent 0 9.9%,rgba(10,13,16,.85) 9.9% 10%);}
.tick-fill{display:block;position:absolute;top:-2px;bottom:-2px;width:1px;background:#eef4fa;left:22%;transition:left .3s ease;z-index:2}
.sb-kpis{display:flex;align-items:stretch;flex:1;min-width:0;overflow:hidden}
.kpi{display:flex;flex-direction:column;justify-content:center;gap:2px;padding:0 15px;border-right:1px solid var(--line);min-width:0}
.kpi i{font-style:normal;font-size:8.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);white-space:nowrap}
.kpi b{font-size:15px;font-weight:600;white-space:nowrap}
.kpi .src{font-family:var(--mono);font-size:7.5px;letter-spacing:.06em;color:var(--dim);white-space:nowrap}
.kpi .src.rumour{color:var(--amber)}
.kpi .src.unknown{color:var(--dim)}
.sb-time{display:flex;align-items:center;gap:8px;padding-left:12px;border-left:1px solid var(--line)}
.tb-btn{width:30px;height:26px;background:var(--well);border:1px solid var(--line2);color:var(--text);cursor:pointer;font-size:10px;display:flex;align-items:center;justify-content:center}
.tb-btn:hover{border-color:var(--text)}
.speed-group{display:inline-flex;border:1px solid var(--line2)}
.speed-group button{font-size:10.5px;font-weight:600;background:var(--well);color:var(--dim);border:none;border-left:1px solid var(--line2);padding:0 9px;height:26px;cursor:pointer}
.speed-group button:first-child{border-left:none}
.speed-group button.active{background:var(--friend);color:#0a0d10}

/* ------------------------------------------------------------------ nav */
#nav{grid-area:nav;display:flex;align-items:stretch;background:var(--panel);border-bottom:1px solid var(--line);overflow:hidden}
.nav-tabs{display:flex;align-items:stretch;overflow-x:auto}
.nav-tab{background:none;border:none;border-right:1px solid var(--line);color:var(--dim);font-size:10.5px;letter-spacing:.16em;font-weight:600;padding:0 16px;cursor:pointer;white-space:nowrap}
.nav-tab:hover{color:var(--text)}
.nav-tab.sel{color:var(--text);box-shadow:inset 0 -2px 0 var(--friend)}
.nav-search{display:flex;align-items:center;gap:6px;margin-left:auto;padding:0 12px;border-left:1px solid var(--line)}
.nav-search-icon{color:var(--dim);font-size:13px}
#nav-search{background:none;border:none;color:var(--text);font-family:var(--sans);font-size:11.5px;width:200px;outline:none}
#nav-search::placeholder{color:var(--dim)}

/* ---------------------------------------------------------------- stage */
#stage{grid-area:stage;display:grid;grid-template-columns:var(--left-w) 1fr var(--right-w);overflow:hidden;min-height:0}
#rail-left{grid-column:1;background:var(--panel);border-right:1px solid var(--line);overflow-y:auto}
#rail-right{grid-column:3;background:var(--panel);border-left:1px solid var(--line);overflow:hidden;display:flex;flex-direction:column}
#mapwrap{grid-column:2;position:relative;overflow:hidden;background:#080b0e}

/* panels in rails */
.panel{border-bottom:1px solid var(--line)}
.panel-head{display:flex;justify-content:space-between;align-items:center;padding:8px 11px;font-size:9.5px;letter-spacing:.2em;color:var(--dim);border-bottom:1px solid var(--line);background:var(--well)}
.panel-head .hint{font-family:var(--mono);font-size:8.5px;color:var(--dim)}
.panel-head .badge{font-family:var(--mono);font-size:9px;color:var(--text);border:1px solid var(--line2);padding:0 5px}
.panel-body{padding:9px 11px}
.role-line{display:flex;align-items:center;gap:7px;font-size:13px}
.role-dot{width:8px;height:8px;background:var(--friend);display:inline-block}
.ov-obj{margin:6px 0 8px;color:var(--dim);font-size:11px;line-height:1.4}
.ov-stats{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.ov-stats li{display:flex;justify-content:space-between;font-size:11px;color:var(--dim);border-bottom:1px dotted var(--line)}
.ov-stats li b{color:var(--text);font-variant-numeric:tabular-nums}
.prov{font-family:var(--mono);font-size:8px;letter-spacing:.06em;color:var(--dim);padding:5px 11px;border-top:1px solid var(--line);text-transform:uppercase}

/* map layers */
.layer-btn{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:none;border:none;color:var(--dim);
  font-size:11.5px;padding:6px 11px;cursor:pointer;letter-spacing:.01em}
.layer-btn:hover{color:var(--text);background:var(--well)}
.layer-btn.sel{color:var(--text);background:var(--well);box-shadow:inset 2px 0 0 var(--friend)}
.layer-key{font-family:var(--mono);font-size:8.5px;color:var(--dim);border:1px solid var(--line2);width:15px;height:15px;display:inline-flex;align-items:center;justify-content:center;flex:none}
.layer-swatch{width:10px;height:10px;flex:none}
.qa-row{display:flex;justify-content:space-between;align-items:center;padding:6px 11px;border-bottom:1px dotted var(--line);font-size:11.5px;color:var(--dim);cursor:pointer}
.qa-row:hover{color:var(--text)}
.qa-row b{font-family:var(--mono);font-size:11px;color:var(--text)}

/* ---------------------------------------------------------------- map */
#plate{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}
#plate.map-in{animation:mapin .5s ease-out both}
@keyframes mapin{from{opacity:.3}to{opacity:1}}

.grat{stroke:#dfe8ef;stroke-opacity:.05;fill:none;stroke-width:.5;vector-effect:non-scaling-stroke}
.country{stroke:#3a434a;stroke-width:.5;stroke-opacity:.9;vector-effect:non-scaling-stroke;cursor:pointer;transition:fill-opacity .12s}
.country.none{fill:#8a97a6;fill-opacity:.06}
.country.contested{stroke-dasharray:3 2}
.coast{fill:none;stroke:#57636d;stroke-width:1;stroke-opacity:.85;vector-effect:non-scaling-stroke}
.city-dot{fill:#aeb8c0;fill-opacity:.75}
.region-label{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.28em;fill:#7f8b95;fill-opacity:.7}
.leader{stroke:#dfe4e8;stroke-width:.7;vector-effect:non-scaling-stroke;stroke-opacity:.5}
.sel-outline{fill:none;stroke:#e8eef3;stroke-width:1.4;vector-effect:non-scaling-stroke;pointer-events:none}
.sel-tick{stroke:#e8eef3;stroke-width:1.4;vector-effect:non-scaling-stroke;pointer-events:none}
.sel-glow{fill:none;stroke:#4d82b8;stroke-width:1.2;stroke-opacity:.5;vector-effect:non-scaling-stroke;pointer-events:none}
.hover-label-box{fill:#0d1114;stroke:#3a434a;stroke-width:.7;vector-effect:non-scaling-stroke}
.hover-label-name{font-family:var(--sans);font-weight:600;font-size:12px;fill:var(--text)}
.hover-label-sub{font-family:var(--mono);font-size:7.5px;letter-spacing:.04em;fill:var(--dim)}
.arc{fill:none;stroke:#6f8aa5;stroke-width:1;stroke-dasharray:2 2;vector-effect:non-scaling-stroke}
.arc.hostile{stroke:#bf4438}
.arc-head{fill:#6f8aa5}
.arc-head.hostile{fill:#bf4438}
.arc-label{font-family:var(--mono);font-size:8px;letter-spacing:.1em;fill:#aab4bd;text-transform:uppercase}
.arc-label.hostile{fill:#bf4438}
.arc-stage,.site-stage{pointer-events:none}
.site-stage{pointer-events:auto}
.site-mark{cursor:pointer}
.site-ring{fill:none;stroke-width:1.1;vector-effect:non-scaling-stroke}
.site-disc{stroke:none}
.site-glyph{fill:none;stroke-width:1.3;vector-effect:non-scaling-stroke}
.site-label{font-family:var(--mono);font-size:6.5px;letter-spacing:.04em;fill:#9aa4ad;pointer-events:none;opacity:0;transition:opacity .12s}
.site-mark:hover .site-label{opacity:1}
.site-mark.sel .site-ring{stroke-width:2}
.site-mark.sel .site-label{opacity:1;fill:var(--text)}
.seat-pulse{fill:none;stroke:#37c9b0;stroke-width:1;stroke-opacity:.7}
.seat-core{fill:#37c9b0}
.seat-cross{stroke:#37c9b0;stroke-width:1;stroke-opacity:.9}
.seat-label{font-family:var(--mono);font-size:7.5px;letter-spacing:.08em;fill:#37c9b0}
.player-stage{pointer-events:none}
.player-halo{fill:none;stroke:#e8eef3;stroke-width:1;stroke-opacity:.5}
.player-core{fill:#e8eef3;stroke:#0a0d10;stroke-width:1.2}
.player-pip{fill:#0a0d10}
.player-label{font-family:var(--mono);font-size:8px;letter-spacing:.06em;fill:#eef4fa}
.player-label.office{fill:#c9a227}
.travel-line{stroke:#c9a227;stroke-width:1;stroke-dasharray:2 3;fill:none;vector-effect:non-scaling-stroke;pointer-events:none}

/* scan line */
#scanline{position:absolute;left:0;right:0;top:0;height:1px;pointer-events:none;z-index:5;
  background:linear-gradient(90deg,transparent,rgba(120,170,220,.85),transparent);transform:translateY(-2px);opacity:0}
#scanline.run{animation:scan .7s linear}
@keyframes scan{0%{opacity:0;transform:translateY(0)}8%{opacity:1}92%{opacity:1}100%{opacity:0;transform:translateY(var(--scan-h,600px))}}

/* legend + scale + readout */
#map-legend{position:absolute;left:12px;bottom:38px;background:rgba(13,17,20,.92);border:1px solid var(--line);padding:8px 10px;z-index:4}
.leg-row{display:flex;align-items:center;gap:7px;font-size:10px;color:var(--dim);margin:2px 0}
.leg-sw{width:12px;height:12px;border:1px solid var(--line2);flex:none}
.leg-line{width:16px;height:0;border-top:1px solid var(--neutral);flex:none}
.leg-line.dash{border-top:1px dashed var(--rival)}
#map-scale{position:absolute;right:12px;bottom:12px;font-family:var(--mono);font-size:9px;color:var(--dim);z-index:4;text-align:right}
#map-scale .scale-bar{display:inline-block;border:1px solid var(--neutral);height:7px;width:120px;background:
  linear-gradient(90deg,#000 0 50%,transparent 50% 100%);}
#map-readout{position:absolute;z-index:6;background:rgba(13,17,20,.96);border:1px solid var(--line2);padding:7px 10px;min-width:170px;pointer-events:none}
#map-readout .mr-name{font-size:13px;font-weight:600}
#map-readout .mr-sub{font-family:var(--mono);font-size:8.5px;color:var(--dim);margin-top:2px;line-height:1.5}
#toolbar{position:absolute;top:10px;right:10px;z-index:6;display:flex;gap:5px}
#toolbar button{background:rgba(13,17,20,.9);border:1px solid var(--line2);color:var(--dim);font-size:10px;letter-spacing:.1em;padding:5px 9px;cursor:pointer}
#toolbar button:hover{color:var(--text);border-color:var(--text)}
#tb-zoom-in,#tb-zoom-out{font-size:14px;padding:3px 9px}
.platepick{position:absolute;inset:0;z-index:8;pointer-events:none;display:flex;align-items:flex-start;justify-content:center}
.pick-bar{margin-top:14px;pointer-events:auto;display:flex;align-items:center;gap:14px;background:rgba(13,17,20,.96);border:1px solid var(--friend);padding:9px 14px}
.pick-text{font-size:12px}
#mapwrap.picking #plate{cursor:crosshair}

/* overlays on map for narrow (JS-built) */
#overlay-quick{display:none;position:absolute;top:10px;left:10px;z-index:6;gap:4px;flex-wrap:wrap;max-width:70%}

/* ---------------------------------------------------------------- feed */
.feed-head{display:flex;justify-content:space-between;align-items:center;padding:8px 11px;font-size:9.5px;letter-spacing:.2em;color:var(--dim);border-bottom:1px solid var(--line);background:var(--well)}
.feed-count{font-family:var(--mono);color:var(--text)}
.feed-filters{display:flex;gap:0;border-bottom:1px solid var(--line)}
.ff{flex:1;background:none;border:none;border-right:1px solid var(--line);color:var(--dim);font-size:9.5px;letter-spacing:.08em;padding:6px 0;cursor:pointer}
.ff:last-child{border-right:none}
.ff.sel{color:var(--text);box-shadow:inset 0 -2px 0 var(--friend)}
.feed-list{flex:1;overflow-y:auto;min-height:0}
.feed-item{border-bottom:1px solid var(--line);border-left:2px solid var(--neutral);padding:8px 11px}
.feed-item.diplomacy{border-left-color:var(--friend)}
.feed-item.intel{border-left-color:#7f8fb0}
.feed-item.economy{border-left-color:var(--econ)}
.feed-item.military{border-left-color:var(--rival)}
.feed-item.domestic{border-left-color:var(--moss)}
.feed-item.leak{border-left-color:var(--crit);background:rgba(224,80,58,.06)}
.feed-meta{display:flex;gap:8px;align-items:center;font-family:var(--mono);font-size:8.5px;color:var(--dim);margin-bottom:3px}
.feed-cat{font-family:var(--sans);font-weight:600;letter-spacing:.12em;color:var(--text)}
.feed-title{font-size:12px;font-weight:600;line-height:1.35}
.feed-body{font-size:11px;color:var(--dim);line-height:1.4;margin-top:2px}
.feed-src{font-family:var(--mono);font-size:8px;letter-spacing:.05em;color:var(--dim);margin-top:4px;text-transform:uppercase}
.feed-src.rumour{color:var(--amber)}
.feed-src.unknown{color:var(--dim)}
.feed-empty{padding:16px 12px;color:var(--dim);font-size:11px;font-family:var(--mono)}

/* ---------------------------------------------------------------- bottom */
#bottom{grid-area:bottom;display:grid;grid-template-columns:288px minmax(300px,1fr) 292px minmax(330px,1.15fr);
  background:var(--panel);border-top:1px solid var(--line);overflow:hidden;min-height:0}
.col{display:flex;flex-direction:column;border-right:1px solid var(--line);overflow:hidden;min-width:0}
.col:last-child{border-right:none}
.col-body{flex:1;overflow-y:auto;min-height:0}

/* rival leaders */
.leader-card{display:grid;grid-template-columns:42px 1fr;gap:9px;padding:9px 11px;border-bottom:1px solid var(--line)}
.leader-portrait{width:42px;height:48px;background:var(--well);border:1px solid var(--line2);display:flex;align-items:center;justify-content:center;overflow:hidden}
.leader-name{font-size:12.5px;font-weight:600;line-height:1.2}
.leader-country{font-size:10px;color:var(--dim);letter-spacing:.04em}
.leader-agenda{font-size:10.5px;color:var(--dim);margin:4px 0 4px;line-height:1.35}
.agenda-meter{display:flex;gap:2px;margin-bottom:5px}
.agenda-step{flex:1;height:3px;background:var(--line2)}
.agenda-step.on{background:var(--econ)}
.leader-rel{font-family:var(--mono);font-size:9px;color:var(--dim)}
.leader-rel b{color:var(--text)}

/* country details */
.details-top{display:grid;grid-template-columns:auto 1fr;gap:11px;padding:11px;border-bottom:1px solid var(--line)}
.details-flag{width:44px;height:30px;border:1px solid var(--line2);display:flex;align-items:center;justify-content:center;background:var(--well)}
.details-name{font-size:15px;font-weight:600}
.details-sub{font-size:10.5px;color:var(--dim)}
.details-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0;border-bottom:1px solid var(--line)}
.dstat{padding:7px 11px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.dstat i{font-style:normal;display:block;font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);margin-bottom:2px}
.dstat b{font-size:13px;font-variant-numeric:tabular-nums}
.dstat .src{font-family:var(--mono);font-size:7.5px;color:var(--dim);display:block;margin-top:1px}
.meter{height:6px;border:1px solid var(--line2);margin-top:4px;position:relative}
.meter span{position:absolute;left:0;top:0;bottom:0;background:var(--moss)}
.meter.amber span{background:var(--amber)}
.meter.red span{background:var(--rival)}
.sec-title{padding:6px 11px;font-size:8.5px;letter-spacing:.18em;color:var(--dim);border-bottom:1px solid var(--line);background:var(--well)}
.issue-row{display:flex;align-items:center;gap:7px;padding:5px 11px;font-size:11px;border-bottom:1px dotted var(--line)}
.issue-sw{width:9px;height:9px;flex:none}
.issue-hi{color:var(--crit)}
.details-empty{padding:14px 11px;color:var(--dim);font-size:11px;font-family:var(--mono);line-height:1.5}

/* crises */
.crisis-card{padding:9px 11px;border-bottom:1px solid var(--line)}
.crisis-card.leak{border-left:2px solid var(--crit)}
.crisis-card.next{border-left:2px solid var(--friend)}
.crisis-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.crisis-title{font-size:12.5px;font-weight:600}
.crisis-tag{font-family:var(--mono);font-size:8px;letter-spacing:.08em;color:var(--dim);text-transform:uppercase;border:1px solid var(--line2);padding:1px 5px}
.crisis-stage{font-family:var(--mono);font-size:8.5px;color:var(--dim);margin:3px 0 6px}
.crisis-text{font-size:11px;color:var(--dim);line-height:1.4;margin:0 0 8px}
.choices{display:flex;flex-direction:column;gap:4px}
.choice{text-align:left;background:var(--well);border:1px solid var(--line2);color:var(--text);padding:6px 8px;cursor:pointer}
.choice:hover{border-color:var(--friend)}
.choice b{display:block;font-size:11px}
.choice-e{font-family:var(--mono);font-size:8px;color:var(--dim);margin-top:2px;display:block}
.disposition{font-family:var(--mono);font-size:9px;letter-spacing:.06em;color:var(--moss);margin-top:6px;text-transform:uppercase}

/* policy queue */
.queue-table{width:100%;border-collapse:collapse;font-size:11px}
.queue-table th{font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);font-weight:500;text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--panel)}
.queue-table td{padding:5px 8px;border-bottom:1px solid var(--line);vertical-align:middle;height:26px}
tr.order-row.empty{color:var(--dim)}
tr.order-row.empty:hover{background:var(--well);cursor:pointer}
.c-no{width:24px;color:var(--dim);font-family:var(--mono)}
.c-act{font-weight:600}
.c-tgt{color:var(--dim)}
.c-cost{font-family:var(--mono);color:var(--dim);white-space:nowrap}
.c-eff{font-family:var(--mono);font-size:9.5px;color:var(--dim)}
.c-conf{font-family:var(--mono);font-size:9px}
.c-prg{width:92px}
.c-x{width:20px;text-align:center}
.eff-up{color:var(--moss)}
.eff-down{color:var(--rival)}
.row-x{background:none;border:none;color:var(--dim);cursor:pointer;font-size:13px;padding:0}
.row-x:hover{color:var(--crit)}
.prg{display:flex;flex-direction:column;gap:2px}
.prg-track{height:4px;background:var(--line2)}
.prg-fill{display:block;height:100%;width:0;background:var(--friend);transition:width .3s linear}
.prg-days{font-family:var(--mono);font-size:8px;color:var(--dim)}
.status-tag{font-family:var(--mono);font-size:8.5px;letter-spacing:.06em;color:var(--dim)}
.status-tag.filed{color:var(--friend)}
.orders-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 11px;border-top:1px solid var(--line)}
.foot-note{font-size:10.5px;color:var(--dim);font-family:var(--mono)}
.commence{background:var(--friend);color:#0a0d10;border:1px solid var(--friend);font-weight:700;letter-spacing:.14em;text-transform:uppercase;font-size:11px;padding:8px 16px;cursor:pointer}
.commence:hover{filter:brightness(1.1)}
.commence:disabled{background:var(--well);color:var(--dim);border-color:var(--line2);cursor:default;filter:none}
.ghost{background:none;border:1px solid var(--line2);color:var(--text);font-size:11px;letter-spacing:.1em;text-transform:uppercase;padding:8px 14px;cursor:pointer}
.ghost:hover{border-color:var(--text)}

/* confidence states */
.rumour{border-bottom:1px dotted var(--amber)}
.unknown{color:var(--dim)}
.hatch{background-image:repeating-linear-gradient(45deg,rgba(209,138,46,.16) 0 2px,transparent 2px 6px)}
.live-tag{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:9px;letter-spacing:.14em;color:var(--moss)}
.live-tag.paused{color:var(--amber)}
.live-dot{width:7px;height:7px;background:var(--moss);display:inline-block}
.live-tag.paused .live-dot{background:var(--amber)}
#map-hint{position:absolute;left:50%;transform:translateX(-50%);top:10px;z-index:5;background:rgba(13,17,20,.94);border:1px solid var(--friend);color:var(--text);font-family:var(--mono);font-size:10px;letter-spacing:.04em;padding:6px 12px;pointer-events:none}
#map-hint b{color:var(--friend)}
#overlay-quick{gap:4px;flex-wrap:wrap;max-width:72%}
#overlay-quick .oq{background:rgba(13,17,20,.9);border:1px solid var(--line2);color:var(--dim);font-family:var(--mono);font-size:9px;letter-spacing:.06em;padding:4px 7px;cursor:pointer}
#overlay-quick .oq.sel{color:var(--text);border-color:var(--friend)}

/* ---------------------------------------------------------------- election strip */
#election-strip{position:absolute;left:50%;transform:translateX(-50%);bottom:10px;z-index:4;display:flex;gap:0;
  background:rgba(13,17,20,.92);border:1px solid var(--line);max-width:78%;overflow-x:auto}
#election-strip .es-item{display:flex;align-items:center;gap:7px;padding:5px 10px;border-right:1px solid var(--line);font-size:10px;color:var(--dim);white-space:nowrap}
#election-strip .es-item:last-child{border-right:none}
#election-strip .es-abbr{font-family:var(--mono);color:var(--text);font-weight:600}
#election-strip .es-flag{width:12px;height:12px;border:1px solid var(--line2);flex:none}
#election-strip .es-days{font-family:var(--mono);color:var(--amber)}
#election-strip .es-empty{font-family:var(--mono);font-size:9.5px;color:var(--dim);padding:5px 10px}

/* ---------------------------------------------------------------- crisis modal */
.crisis-sheet{width:min(760px,100%)}
.crisis-sheet h1{font-size:19px;letter-spacing:.06em;text-transform:none;font-weight:600;margin-bottom:8px}
.choices.wide{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:14px}
.choices.wide .choice{padding:9px 11px}
.crisis-tree{border-top:1px solid var(--line);padding-top:12px}
.crisis-tree svg{display:block;width:100%;height:132px}
.ct-edge{stroke:var(--line2);stroke-width:1;fill:none}
.ct-edge.chosen{stroke:var(--friend);stroke-width:1.6}
.ct-node{fill:var(--well);stroke:var(--neutral);stroke-width:1}
.ct-node.current{stroke:var(--friend);stroke-width:1.6;fill:rgba(77,130,184,.14)}
.ct-node.done{stroke:var(--moss)}
.ct-node.unknown{fill:none;stroke:var(--line2);stroke-dasharray:2 2}
.ct-label{font-family:var(--mono);font-size:8px;fill:var(--dim)}
.ct-label.current{fill:var(--text)}
.ct-cap{font-family:var(--sans);font-size:9px;font-weight:600;fill:var(--text)}
.sphere-outline{fill:none;stroke:#c9a227;stroke-width:1.3;stroke-dasharray:4 3;vector-effect:non-scaling-stroke;pointer-events:none}
.cap-label{font-family:var(--mono);font-size:6.8px;letter-spacing:.02em;fill:#c2ccd4;fill-opacity:.85;pointer-events:none}
.unrest-ring{fill:none;stroke-width:1;vector-effect:non-scaling-stroke}
.unrest-dot{fill:none}
#toolbar .tb-label{display:inline}

/* directive buttons in country details */
.act-cat{font-size:8px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim);padding:6px 11px 3px}
.cc-actions{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:0 11px 4px}
.act-btn{text-align:left;background:var(--well);border:1px solid var(--line2);color:var(--text);font-size:10.5px;padding:5px 7px;cursor:pointer;line-height:1.15}
.act-btn:hover{border-color:var(--friend)}
.act-btn.deny{opacity:.38;cursor:not-allowed}
.act-btn.deny:hover{border-color:var(--line2)}
.act-btn .act-cost{display:block;font-family:var(--mono);font-size:7.5px;color:var(--dim);margin-top:2px}
.datablock{font-family:var(--mono);font-size:10px;color:var(--dim);background:var(--well);border:1px solid var(--line2);padding:10px;white-space:pre-wrap;line-height:1.5;margin:6px 0 0}
.diff-btn{background:var(--well);border:1px solid var(--line2);color:var(--dim);font-size:10.5px;padding:5px 11px;cursor:pointer}
.diff-btn.sel{color:var(--text);border-color:var(--friend)}

/* free mode career panels */
.role-grid.free{grid-template-columns:1fr 1fr}
.career-block{padding:10px 11px;border-bottom:1px solid var(--line)}
.ladder{display:flex;flex-direction:column;gap:0}
.ladder-step{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--dim);padding:3px 0}
.ladder-step.on{color:var(--text)}
.ladder-step.cur{font-weight:600}
.ladder-dot{width:8px;height:8px;border:1px solid var(--line2);background:var(--well);flex:none}
.ladder-step.on .ladder-dot{background:var(--friend);border-color:var(--friend)}
.ladder-step.cur .ladder-dot{box-shadow:0 0 0 2px rgba(77,130,184,.35)}
.career-stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px 10px;margin-top:10px;border-top:1px solid var(--line);padding-top:9px}
.career-stats div i{font-style:normal;display:block;font-size:8px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.career-stats div b{font-size:13px;font-variant-numeric:tabular-nums}
.kv{display:flex;justify-content:space-between;font-size:11px;color:var(--dim);padding:3px 0;border-bottom:1px dotted var(--line)}
.kv b{color:var(--text);font-variant-numeric:tabular-nums}
.hist-list{list-style:none;margin:0;padding:6px 11px;display:flex;flex-direction:column;gap:4px}
.hist-list li{display:flex;justify-content:space-between;gap:8px;font-size:11px;color:var(--text)}
.hist-list li i{font-style:normal;font-family:var(--mono);font-size:9px;color:var(--dim)}
.hist-list li.muted{color:var(--dim);font-family:var(--mono);font-size:10px}
.loc-travel{font-family:var(--mono);font-size:10px;color:var(--gold,#c9a227);padding:5px 11px;border-bottom:1px solid var(--line)}
.cand-block{padding:8px 11px 10px;border-bottom:1px solid var(--line)}
.cand-meter{height:7px;border:1px solid var(--line2);background:var(--well);position:relative;margin-bottom:6px}
.cand-meter span{position:absolute;left:0;top:0;bottom:0;background:var(--econ)}
.cand-meta{font-family:var(--mono);font-size:9.5px;color:var(--dim);line-height:1.5}
.cand-meta b{color:var(--text)}
.cause-row{display:flex;flex-wrap:wrap;gap:5px;padding:8px 11px;border-bottom:1px solid var(--line)}
.cause-chip{background:var(--well);border:1px solid var(--line2);color:var(--text);font-size:10px;padding:5px 9px;cursor:pointer}
.cause-chip:hover{border-color:var(--friend)}
.case-block{padding:9px 11px;border-bottom:1px solid var(--line);border-left:2px solid var(--amber)}
.case-block.crim{border-left-color:var(--crit)}
.activity-current{padding:10px 11px;border-bottom:1px solid var(--line)}
.meter.amber span{background:var(--amber)}
.meter.red span{background:var(--rival)}

/* ---------------------------------------------------------------- overlays / modals */
.overlay{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(6,8,10,.82)}
.overlay.hidden{display:none}
.sheet{position:relative;width:min(720px,100%);max-height:calc(100vh - 48px);overflow:auto;background:var(--panel);border:1px solid var(--line2);padding:26px 30px 22px}
.sheet-kicker{font-family:var(--mono);font-size:9px;letter-spacing:.14em;color:var(--dim);text-transform:uppercase;margin:0 0 8px}
.sheet h1{font-size:22px;letter-spacing:.14em;margin-bottom:12px}
.sheet-lede{font-size:12.5px;line-height:1.5;color:var(--dim);margin:0 0 18px;max-width:62ch}
.sheet-cols{display:grid;grid-template-columns:1fr 1fr;gap:22px;border-top:1px solid var(--line);padding-top:14px}
.sheet-cols h3{font-size:10px;letter-spacing:.16em;margin-bottom:7px}
.sheet-cols p,.sheet-cols li{font-size:12px;line-height:1.45;color:var(--dim)}
.sheet-cols ol{margin:0;padding-left:16px}
.sheet-cols li{margin-bottom:4px}
.sheet-foot{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:20px;border-top:1px solid var(--line);padding-top:14px}
.sheet-hint{font-size:10.5px;color:var(--dim);font-family:var(--mono)}
.sheet-x{position:absolute;top:12px;right:12px;z-index:3;width:32px;height:32px;padding:0;display:flex;align-items:center;justify-content:center;background:var(--well);border:1px solid var(--line2);color:var(--dim);font-size:17px;line-height:1;cursor:pointer}
.sheet-x:hover{color:var(--text);border-color:var(--text)}
.menu-foot-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}
.menu-block{display:flex;flex-direction:column;gap:8px;margin:16px 0 4px}
.menu-item{display:block;width:100%;text-align:left;background:var(--well);border:1px solid var(--line2);color:var(--text);padding:12px 15px;cursor:pointer}
.menu-item:hover{border-color:var(--friend)}
.menu-item.primary{border-color:var(--friend);background:rgba(77,130,184,.08)}
.mi-label{display:block;font-size:15px;font-weight:600}
.mi-note{display:block;font-size:11px;color:var(--dim);margin-top:2px}
.mi-badge{display:inline-block;background:var(--friend);color:#0a0d10;font-family:var(--mono);font-size:8px;letter-spacing:.12em;text-transform:uppercase;padding:2px 6px;margin-bottom:5px}
.menu-block.hidden{display:none}
.setup-sheet{width:min(780px,100%)}
.setup-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;border-bottom:1px solid var(--line);padding-bottom:10px;margin-bottom:14px}
.setup-steps{display:flex;gap:12px;flex-wrap:wrap}
.step{font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;color:var(--dim);padding-bottom:3px;border-bottom:2px solid transparent}
.step.active{color:var(--text);border-bottom-color:var(--friend)}
.step.done{color:var(--friend)}
.setup-body{min-height:260px}
.setup-field{margin-bottom:14px}
.setup-field>label{display:block;font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin-bottom:6px}
.setup-field input[type=text]{width:100%;background:var(--well);border:1px solid var(--line2);color:var(--text);font-family:var(--sans);font-size:15px;padding:9px 11px;border-radius:0;outline:none}
.setup-field input[type=text]:focus{border-color:var(--friend)}
.role-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.role-card{display:flex;gap:10px;text-align:left;background:var(--well);border:1px solid var(--line2);color:var(--text);padding:10px;cursor:pointer;align-items:flex-start}
.role-card:hover{border-color:var(--friend)}
.role-card.sel{border-color:var(--friend);background:rgba(77,130,184,.1)}
.role-mark{width:34px;height:34px;flex:none;color:var(--dim)}
.role-card.sel .role-mark{color:var(--friend)}
.envoy-name{display:block;font-size:13.5px;font-weight:600}
.envoy-role{display:block;font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);margin-top:1px}
.envoy-blurb{display:block;font-size:10.5px;line-height:1.35;color:var(--dim);margin-top:5px}
.envoy-bonus{display:inline-block;margin-top:6px;font-family:var(--mono);font-size:9px;color:var(--moss);border:1px solid var(--line2);padding:2px 6px}
.seat-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.seat-card{display:flex;flex-direction:column;text-align:left;background:var(--well);border:1px solid var(--line2);color:var(--text);padding:9px 11px;cursor:pointer}
.seat-card:hover{border-color:var(--friend)}
.seat-card.sel{border-color:var(--friend);background:rgba(77,130,184,.1)}
.seat-city{font-size:13.5px;font-weight:600}
.seat-host{font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
.seat-note{font-size:10.5px;color:var(--dim);margin-top:3px}
.seat-card.pick{grid-column:1 / -1;border-style:dashed;align-items:center;text-align:center}
.scenario-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.scenario-card{display:block;text-align:left;background:var(--well);border:1px solid var(--line2);color:var(--text);padding:10px 12px;cursor:pointer}
.scenario-card:hover{border-color:var(--friend)}
.scenario-card.sel{border-color:var(--friend);background:rgba(77,130,184,.1)}
.scenario-card.custom-toggle{grid-column:1 / -1;border-style:dashed}
.sc-era{font-family:var(--mono);font-size:9px;color:var(--dim)}
.sc-name{display:block;font-size:13px;font-weight:600;margin:2px 0 3px}
.sc-note{display:block;font-size:10.5px;color:var(--dim);line-height:1.35}
.custom-build{margin-top:12px;border-top:1px solid var(--line);padding-top:12px}
.chip-row{display:flex;gap:6px;flex-wrap:wrap}
.era-btn,.mood-btn{background:var(--well);border:1px solid var(--line2);color:var(--dim);font-size:10.5px;padding:5px 11px;cursor:pointer}
.era-btn.sel,.mood-btn.sel{color:var(--text);border-color:var(--friend)}
.review-card{border:1px solid var(--line2);padding:14px 16px}
.rev-top{display:flex;gap:13px;align-items:center}
.rev-body{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px;border-top:1px solid var(--line);padding-top:12px}
.rev-body h4{margin:0 0 5px;font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim);font-weight:600}
.rev-body p{margin:0;font-size:12px;line-height:1.45;color:var(--dim)}
.rev-big{font-size:13.5px;font-weight:600;color:var(--text)}
.setup-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:18px;border-top:1px solid var(--line);padding-top:12px}
.setup-foot-right{display:flex;gap:10px}
.end-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:0;border-top:1px solid var(--line);padding-top:14px}
.end-stats div{border-left:2px solid var(--friend);padding-left:9px}
.end-stats dt{font-size:8.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.end-stats dd{margin:3px 0 0;font-size:22px;font-weight:600;font-variant-numeric:tabular-nums}

/* ---------------------------------------------------------------- responsive */
@media (max-width:1180px){
  :root{--left-w:206px;--right-w:266px;--bottom-h:272px}
  .sb-kpis .kpi:nth-child(n+4){display:none}
}
@media (max-width:980px){
  :root{--sb-h:44px;--nav-h:0px;--bottom-h:46vh;--left-w:0px;--right-w:0px}
  #app{
    grid-template-rows:var(--sb-h) 0 1fr var(--bottom-h);
    grid-template-columns:1fr;
    grid-template-areas:"status" "nav" "stage" "bottom";
  }
  #nav{display:none}
  #rail-left,#rail-right{display:none}
  #stage{grid-template-columns:1fr}
  #mapwrap{grid-column:1}
  .sb-ident .sb-names i{display:none}
  .sb-turn{padding:0 8px}
  .sb-tension{min-width:120px;padding:0 8px}
  .sb-kpis .kpi{padding:0 9px}
  .sb-kpis .kpi:nth-child(n+3){display:none}
  .sb-time{padding-left:6px}
  #bottom{grid-template-columns:none;display:flex;overflow-x:auto;scroll-snap-type:x mandatory}
  .col{min-width:88vw;scroll-snap-align:start;border-right:1px solid var(--line)}
  #overlay-quick{display:flex;left:8px;right:8px;top:8px;max-width:none;flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px}
  #overlay-quick .oq{white-space:nowrap}
  #map-hint{display:none}
  #toolbar{top:46px;right:8px}
  #map-legend{display:none}
  #toolbar .tb-label{display:none}
}
@media (max-width:560px){
  .sb-ident .sb-names{display:none}
  .sheet{padding:20px 16px 16px}
  .role-grid,.seat-grid,.scenario-grid{grid-template-columns:1fr}
  .sheet-cols{grid-template-columns:1fr}
  .end-stats{grid-template-columns:1fr 1fr}
  .col{min-width:92vw}
}
@media (max-height:560px){
  :root{--bottom-h:52vh}
}
