/* =============================================================================
   650 — STYLES  v8 — Global dark edition
   Aesthetic: election-night broadcast desk · global intelligence briefing.
   Deep navy · dispatch crimson · pulse gold · clean slate.
   ========================================================================== */

:root {
  /* Surfaces */
  --paper:      #0f1623;
  --paper-2:    #162030;
  --paper-3:    #1d2a3d;

  /* Text */
  --ink:        #dde5f0;
  --ink-soft:   #7a90a8;

  /* Borders */
  --line:       #253344;
  --line-soft:  #1a2536;

  /* Palette */
  --green:      #3dc888;
  --green-deep: #259c68;
  --oxblood:    #e04060;
  --oxblood-2:  #b53050;
  --brass:      #e8a030;
  --brass-lite: #f4c050;
  --gold-glow:  rgba(232,160,48,.22);
  --teal:       #38bdf8;

  --serif:   "Newsreader", Georgia, "Times New Roman", serif;
  --display: "Fraunces", Georgia, serif;
  --mono:    "Spline Sans Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;

  --shadow:    0 8px 32px -6px rgba(0,0,0,.55);
  --shadow-lg: 0 24px 56px -16px rgba(0,0,0,.75);
}

* { box-sizing: border-box; }

html, body { margin: 0; padding: 0; }

body {
  font-family: var(--serif);
  color: var(--ink);
  background-color: #0a0f1a;
  background-image:
    radial-gradient(900px 450px at 75% -5%,  rgba(61,200,136,.05),  transparent 60%),
    radial-gradient(700px 350px at -5% 105%, rgba(224,64,96,.04),   transparent 55%),
    radial-gradient(500px 250px at 50% 110%, rgba(56,189,248,.03),  transparent 50%);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  min-height: 100vh;
  position: relative;
}

/* subtle scanline texture */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  opacity: .18;
  background-image:
    repeating-linear-gradient(0deg, transparent, transparent 2px,
      rgba(255,255,255,.022) 2px, rgba(255,255,255,.022) 3px);
}

.wrap {
  position: relative;
  z-index: 1;
  max-width: 1080px;
  margin: 0 auto;
  padding: 28px 22px 80px;
  padding-top: calc(28px + env(safe-area-inset-top, 0px));
}

/* ----------------------------------------------------------- masthead -- */
.masthead {
  text-align: center;
  border-bottom: 1px solid var(--line);
  padding-bottom: 22px;
  margin-bottom: 10px;
  position: relative;
}
.masthead::after {
  content: "";
  display: block;
  position: absolute;
  bottom: -1px; left: 50%;
  transform: translateX(-50%);
  width: 100px; height: 2px;
  background: linear-gradient(90deg, transparent, var(--brass), transparent);
}
.kicker {
  font-family: var(--mono);
  text-transform: uppercase;
  letter-spacing: .48em;
  font-size: 10.5px;
  color: var(--brass);
  margin: 0 0 8px;
  padding-left: .48em;
}
.title-650 {
  font-family: var(--display);
  font-weight: 900;
  font-size: clamp(64px, 16vw, 132px);
  line-height: .82;
  letter-spacing: -.02em;
  margin: 2px 0;
  background: linear-gradient(175deg, #ffffff 0%, var(--brass-lite) 55%, var(--brass) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 2px 20px rgba(232,160,48,.22));
}
.subtitle {
  font-family: var(--serif);
  font-style: italic;
  font-size: clamp(14px, 2.4vw, 19px);
  color: var(--ink-soft);
  margin: 6px auto 0;
  max-width: 55ch;
}
.rule-meta {
  display: flex; gap: 18px; justify-content: center; flex-wrap: wrap;
  font-family: var(--mono); font-size: 10.5px; letter-spacing: .12em;
  text-transform: uppercase; color: var(--ink-soft);
  margin-top: 14px;
}
.rule-meta b { color: var(--brass-lite); }

/* --------------------------------------------------------------- cards -- */
.panel {
  background: linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,0));
  background-color: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 8px;
  box-shadow: var(--shadow);
  padding: 22px;
}
.section-label {
  font-family: var(--mono);
  text-transform: uppercase;
  letter-spacing: .28em;
  font-size: 11px;
  color: var(--brass);
  border-bottom: 1px solid var(--line);
  padding-bottom: 8px;
  margin: 0 0 16px;
}
.screen { display: none; animation: rise .5s cubic-bezier(.2,.7,.2,1) both; }
.screen.active { display: block; }
@keyframes rise { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }

/* --------------------------------------------------------------- menu -- */
.lede {
  font-size: clamp(15px, 2.4vw, 19px);
  max-width: 62ch;
  margin: 22px auto 6px;
  text-align: center;
  color: var(--ink-soft);
  line-height: 1.65;
}
.lede .drop {
  float: left; font-family: var(--display); font-weight: 900;
  font-size: 3.1em; line-height: .72; padding: 6px 10px 0 0; color: var(--oxblood);
}
.menu-grid { display: grid; gap: 16px; margin-top: 26px; }
.choice-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 620px){ .choice-row { grid-template-columns: 1fr; } }

.opt {
  cursor: pointer; text-align: left;
  background: rgba(255,255,255,.03);
  border: 1px solid var(--line);
  border-left: 4px solid var(--line);
  border-radius: 6px;
  padding: 16px 18px;
  transition: .18s ease;
  font-family: var(--serif);
}
.opt:hover { transform: translateY(-2px); box-shadow: var(--shadow); background: rgba(255,255,255,.07); border-color: rgba(255,255,255,.12); }
.opt.sel { border-left-color: var(--green); background: rgba(61,200,136,.08); border-color: rgba(61,200,136,.22); }
.opt h4 { margin: 0 0 5px; font-family: var(--display); font-weight: 700; font-size: 18px; color: var(--ink); }
.opt p { margin: 0; font-size: 13.5px; color: var(--ink-soft); }

/* ----------------------------------------------------------- setup wizard */
.wizard-nav { display: flex; flex-direction: column; align-items: center; margin: 22px 0 12px; gap: 8px; }
.wizard-progress { display: flex; gap: 10px; }
.wp-dot {
  width: 10px; height: 10px; border-radius: 50%;
  background: var(--line); border: 2px solid var(--line);
  cursor: pointer; transition: .15s;
}
.wp-dot.wactive { background: var(--green); border-color: var(--green-deep); box-shadow: 0 0 8px rgba(61,200,136,.4); }
.wp-dot.wdone { background: var(--brass); border-color: var(--brass); }
.wstep-title { margin: 0; font-family: var(--mono); font-size: 11.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-soft); }
.wizard-step { display: none; }
.wizard-step.wactive { display: block; }
.wizard-btn-row { display: flex; gap: 16px; justify-content: center; margin-top: 22px; align-items: center; }
.ready-summary { background: var(--paper-3); border: 1px solid var(--line); border-radius: 6px; padding: 16px 20px; font-size: 14px; margin-bottom: 8px; }
.ready-summary p { margin: 4px 0; color: var(--ink-soft); }
.ready-summary b { color: var(--ink); }

/* ------------------------------------------------- carry-over minister badge */
.seat.carry-over { border-left: 3px solid var(--green); }
.carry-badge { font-size: 10px; background: var(--green); color: #fff; padding: 1px 5px; border-radius: 8px; margin-left: 6px; vertical-align: middle; }

.dynasty-pick { display: none; gap: 10px; flex-wrap: wrap; margin-top: 4px; }
.dynasty-pick.show { display: flex; }
.chip {
  cursor: pointer; font-family: var(--mono); font-size: 12px; letter-spacing: .08em;
  text-transform: uppercase; padding: 8px 14px; border-radius: 999px;
  border: 1px solid var(--line); background: rgba(255,255,255,.04); color: var(--ink); transition: .15s;
}
.chip:hover { border-color: var(--ink-soft); background: rgba(255,255,255,.08); }
.chip.sel { background: var(--green-deep); color: #fff; border-color: var(--green); }

/* --------------------------------------------------------------- buttons */
.btn {
  cursor: pointer; font-family: var(--mono); text-transform: uppercase;
  letter-spacing: .14em; font-size: 12.5px; font-weight: 500;
  padding: 14px 24px; border-radius: 5px; border: 1px solid transparent;
  transition: .16s ease; display: inline-flex; align-items: center; justify-content: center; gap: 8px;
}
.btn-primary {
  background: var(--oxblood); color: #fff; border-color: var(--oxblood-2);
  box-shadow: 0 5px 0 var(--oxblood-2);
}
.btn-primary:hover { transform: translateY(-2px); box-shadow: 0 7px 0 var(--oxblood-2); }
.btn-primary:active { transform: translateY(3px); box-shadow: 0 1px 0 var(--oxblood-2); }
.btn-primary:disabled { background: var(--line); color: var(--ink-soft); box-shadow: none; cursor: not-allowed; border-color: var(--line); }
.btn-ghost { background: transparent; border-color: var(--line); color: var(--ink); box-shadow: none; }
.btn-ghost:hover { background: rgba(255,255,255,.08); border-color: var(--ink-soft); color: var(--ink); }
.btn-row { display: flex; gap: 12px; flex-wrap: wrap; justify-content: center; margin-top: 26px; }

/* --------------------------------------------------------- draft layout */
.draft-grid { display: grid; grid-template-columns: 1fr 360px; gap: 22px; align-items: start; }
@media (max-width: 900px){ .draft-grid { grid-template-columns: 1fr; } }

.progress-bar { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-bottom: 16px; }
.pips { display: flex; gap: 5px; }
.pip { width: 14px; height: 14px; border-radius: 2px; border: 1px solid var(--line); background: var(--paper); }
.pip.on { background: var(--green); border-color: var(--green-deep); }
.progress-bar .count { font-family: var(--mono); font-size: 12px; letter-spacing: .1em; color: var(--ink-soft); text-transform: uppercase; }

/* slot machine */
.reels {
  display: grid; grid-template-columns: 1fr 1fr; gap: 12px;
  background: linear-gradient(180deg, #2a2620, #1c1813);
  border: 2px solid var(--brass);
  border-radius: 8px; padding: 14px;
  box-shadow: inset 0 0 0 1px rgba(216,178,87,.25), var(--shadow);
}
.reel {
  background: linear-gradient(180deg,#fff,#efe7d2);
  border-radius: 5px; padding: 14px 12px; text-align: center; overflow: hidden;
  position: relative; min-height: 78px; display: flex; flex-direction: column; justify-content: center;
}
.reel .reel-label { font-family: var(--mono); font-size: 9.5px; letter-spacing: .22em; text-transform: uppercase; color: var(--ink-soft); }
.reel .reel-value { font-family: var(--display); font-weight: 700; font-size: 22px; line-height: 1.05; margin-top: 4px; color: var(--ink); }
.reel .reel-sub { font-family: var(--mono); font-size: 10px; color: var(--ink-soft); margin-top: 2px; }
.reel.spinning .reel-value, .reel.spinning .reel-sub { filter: blur(2px); opacity: .55; }
.reel .party-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 6px; vertical-align: middle; }

.spin-row { display: flex; gap: 10px; margin-top: 14px; flex-wrap: wrap; }
.skips { display: flex; gap: 8px; margin-top: 12px; flex-wrap: wrap; }
.skip-btn {
  cursor: pointer; font-family: var(--mono); font-size: 11px; letter-spacing: .08em;
  text-transform: uppercase; padding: 9px 14px; border-radius: 3px;
  border: 1px dashed var(--brass); background: transparent; color: var(--ink-soft); transition: .15s;
}
.skip-btn:hover:not(:disabled){ color: var(--ink); border-color: var(--ink); }
.skip-btn:disabled { opacity: .35; cursor: not-allowed; }

/* candidate pool */
.pool { margin-top: 18px; }
.pool-empty { font-style: italic; color: var(--ink-soft); padding: 20px 0; text-align: center; }
.cand {
  cursor: pointer; width: 100%; text-align: left; background: var(--paper);
  border: 1px solid var(--line); border-radius: 4px; padding: 12px 14px;
  margin-bottom: 8px; transition: .14s ease;
  display: flex; justify-content: space-between; gap: 14px; align-items: flex-start;
}
.cand:hover { transform: translateX(3px); box-shadow: var(--shadow); }
.cand.sel { border-color: var(--green); background: #fff8e9; }
.cand .who { min-width: 0; flex: 1 1 auto; }
.cand .nm { display: block; font-family: var(--display); font-weight: 600; font-size: 17px; line-height: 1.15; }
.cand .meta { display: block; font-size: 12px; color: var(--ink-soft); margin-top: 3px; }
.cand .cand-note { display: block; font-family: var(--serif); font-style: italic; font-size: 12.5px; color: var(--ink-soft); margin-top: 5px; line-height: 1.35; }
.cand .wild-tag { display: inline-block; font-family: var(--mono); font-size: 8.5px; letter-spacing: .14em; text-transform: uppercase; color: #fff; background: var(--brass); padding: 2px 6px; border-radius: 3px; margin-top: 6px; }
.cand .stats { display: flex; gap: 8px; flex-shrink: 0; flex-wrap: wrap; justify-content: flex-end; }
.stat-chip { font-family: var(--mono); font-size: 10px; text-align: center; color: var(--ink-soft); min-width: 26px; }
.stat-chip b { display: block; font-size: 13px; color: var(--ink); }
.fit-tag { font-family: var(--mono); font-size: 9px; letter-spacing: .1em; text-transform: uppercase; color: var(--green); }
@media (max-width: 560px){
  .cand { flex-direction: column; align-items: stretch; gap: 10px; }
  .cand .stats { justify-content: flex-start; gap: 14px; }
}

/* assign prompt */
.assign-note { font-family: var(--mono); font-size: 11px; text-transform: uppercase; letter-spacing: .12em; color: var(--oxblood); margin: 8px 0; }

/* cabinet table */
.cabinet-table { display: grid; gap: 7px; }
.seat {
  display: flex; align-items: center; gap: 12px; padding: 10px 12px;
  border: 1px solid var(--line-soft); border-radius: 4px; background: var(--paper);
  transition: .15s ease;
}
.seat.empty { border-style: dashed; }
.seat.target { border-color: var(--oxblood); background: #fff8e9; cursor: pointer; box-shadow: 0 0 0 3px rgba(134,34,49,.12); }
.seat.target:hover { transform: translateY(-1px); }
.seat .role { font-family: var(--mono); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); width: 96px; flex-shrink: 0; }
.seat .holder { font-family: var(--display); font-weight: 600; font-size: 15.5px; flex: 1; min-width: 0; overflow-wrap: anywhere; }
.seat .holder .era-mini { font-family: var(--mono); font-weight: 400; font-size: 10px; color: var(--ink-soft); letter-spacing: .04em; }
.seat .vacant { font-style: italic; color: var(--ink-soft); font-size: 14px; }
.seat .fitmark { margin-left: auto; font-family: var(--mono); font-size: 9px; letter-spacing: .1em; }
.fitmark.good { color: var(--green); }
.fitmark.okay { color: var(--brass); }
.fitmark.bad { color: var(--oxblood); }

.strength-readout {
  margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line);
  display: flex; justify-content: space-between; align-items: baseline;
  font-family: var(--mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-soft);
}
.strength-readout .big { font-family: var(--display); font-size: 28px; color: var(--green); letter-spacing: 0; }

/* ----------------------------------------------------------- results -- */
.result-head { text-align: center; margin-bottom: 10px; }
.govt-banner {
  display: inline-block; font-family: var(--mono); text-transform: uppercase;
  letter-spacing: .26em; font-size: 12px; padding: 8px 22px; border-radius: 999px; margin-bottom: 16px;
}
.govt-banner.win { background: var(--green); color: #fff; }
.govt-banner.lose { background: var(--oxblood); color: #fbf3e0; }

.seat-number {
  font-family: var(--display); font-weight: 900;
  font-size: clamp(80px, 20vw, 180px); line-height: .8;
  color: var(--ink); letter-spacing: -.03em; margin: 4px 0;
}
.seat-number .of { font-size: .26em; color: var(--ink-soft); font-weight: 400; letter-spacing: 0; }
.tier-name { font-family: var(--display); font-style: italic; font-size: clamp(22px, 5vw, 34px); color: var(--oxblood); margin: 2px 0 6px; }
.majority-line { font-family: var(--mono); font-size: 13px; letter-spacing: .08em; color: var(--ink-soft); }
.majority-line b { color: var(--ink); }

/* commons bar */
.commons {
  position: relative; height: 30px; border-radius: 999px; overflow: hidden;
  background: var(--paper); border: 1px solid var(--line); margin: 22px 0 6px;
}
.commons .fill { position: absolute; left: 0; top: 0; bottom: 0; background: linear-gradient(90deg, var(--green-deep), var(--green)); transition: width 1.1s cubic-bezier(.2,.7,.2,1); }
.commons .maj-mark { position: absolute; top: -4px; bottom: -4px; width: 2px; background: var(--oxblood); }
.commons-key { display: flex; justify-content: space-between; font-family: var(--mono); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); }

/* odds */
.odds-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 10px; margin-top: 8px; }
@media (max-width: 620px){ .odds-grid { grid-template-columns: repeat(2,1fr); } }
.odd {
  text-align: center; padding: 14px 8px; border: 1px solid var(--line);
  border-radius: 4px; background: var(--paper);
}
.odd .pc { font-family: var(--display); font-weight: 700; font-size: 26px; color: var(--green); }
.odd .lb { font-family: var(--mono); font-size: 9.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-soft); margin-top: 3px; }
.range-note { text-align: center; font-family: var(--mono); font-size: 11px; letter-spacing: .06em; color: var(--ink-soft); margin-top: 12px; }

/* --- cabinet leverage --- */
.lev-list { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; }
.lev-row { display: grid; grid-template-columns: minmax(0,1.4fr) 84px 34px minmax(0,1.3fr); align-items: center; gap: 10px; font-size: 13px; }
.lev-port { font-family: var(--display); font-weight: 600; min-width: 0; overflow-wrap: anywhere; }
.lev-nm { display: block; font-family: var(--mono); font-size: 10.5px; color: var(--ink-soft); font-weight: 400; margin-top: 1px; }
.lev-bar-wrap { height: 8px; background: rgba(120,120,120,.14); border-radius: 4px; overflow: hidden; }
.lev-bar { display: block; height: 100%; border-radius: 4px; }
.lev-bar.lev-pos { background: var(--green, #2e7d4f); }
.lev-bar.lev-neg { background: var(--oxblood, #862231); }
.lev-bar.lev-zero { background: var(--ink-soft, #9a9a9a); }
.lev-mv { font-family: var(--mono); font-weight: 700; text-align: right; }
.lev-mv.lev-pos, .lev-pos { color: var(--green, #2e7d4f); }
.lev-mv.lev-neg { color: var(--oxblood, #862231); }
.lev-mv.lev-zero { color: var(--ink-soft); }
.lev-swap { font-family: var(--mono); font-size: 11px; color: var(--ink-soft); min-width: 0; overflow-wrap: anywhere; }
@media (max-width: 620px){
  .lev-row { grid-template-columns: 1fr 30px; grid-template-areas: "port mv" "bar bar" "swap swap"; gap: 4px 8px; }
  .lev-port { grid-area: port; } .lev-mv { grid-area: mv; } .lev-bar-wrap { grid-area: bar; } .lev-swap { grid-area: swap; }
}

.cabinet-roll { columns: 2; column-gap: 24px; margin-top: 6px; }
@media (max-width: 620px){ .cabinet-roll { columns: 1; } }
.roll-line { break-inside: avoid; padding: 7px 0; border-bottom: 1px dotted var(--line);
  display: grid; grid-template-columns: minmax(96px, 38%) 1fr; align-items: baseline; gap: 10px; }
.roll-line .r { font-family: var(--mono); font-size: 10px; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-soft); overflow-wrap: anywhere; }
.roll-line .n { font-family: var(--serif); font-weight: 600; text-align: right; min-width: 0; overflow-wrap: anywhere; }

.pb-note { text-align: center; font-family: var(--mono); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--brass); margin-top: 18px; }

/* about */
.prose { max-width: 70ch; margin: 0 auto; }
.prose p { margin: 0 0 14px; }
.prose h3 { font-family: var(--display); margin: 22px 0 8px; }
.prose code { font-family: var(--mono); background: var(--paper); padding: 1px 5px; border-radius: 3px; font-size: 13px; }

/* footer */
.foot {
  margin-top: 36px; padding-top: 16px; border-top: 1px solid var(--line);
  text-align: center; font-family: var(--mono); font-size: 10.5px;
  letter-spacing: .06em; color: var(--ink-soft); line-height: 1.8;
}
.foot a { color: var(--oxblood); text-decoration: none; border-bottom: 1px solid var(--line); }
.foot a:hover { color: var(--ink); }
.disclaimer { max-width: 62ch; margin: 8px auto 0; font-style: italic; font-family: var(--serif); font-size: 12px; }

.linkish { background: none; border: none; cursor: pointer; color: var(--oxblood); font-family: var(--mono); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; text-decoration: underline; }

#shareCanvas { display: none; }

/* =============================================================================
   v2 ADDITIONS — clickable logo, setup controls, watch-along, board, govern
   ========================================================================== */

/* clickable masthead logo (now a <button>) — keep the gradient text intact */
.title-650 { -webkit-appearance: none; appearance: none; border: 0; padding: 0; margin: 6px auto; display: block; cursor: pointer; color: var(--green-deep); transition: filter .15s ease, transform .15s ease; }
.title-650:hover { filter: brightness(1.08); transform: translateY(-1px); }
.title-650:active { transform: translateY(1px); }

/* setup grid */
@media (min-width: 760px){ .menu-grid { grid-template-columns: 1fr 1fr; } }
.menu-grid .span-2 { grid-column: 1 / -1; }
.choice-row.triple { grid-template-columns: 1fr 1fr 1fr; }
@media (max-width: 760px){ .choice-row.triple { grid-template-columns: 1fr; } }
.mini-help { font-family: var(--mono); font-size: 10.5px; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-soft); margin: 0 0 10px; }
.mini-help.warn, .warn { color: var(--oxblood); }

/* era toggles */
.era-toggles { display: flex; flex-wrap: wrap; gap: 8px; }
.era-chip {
  cursor: pointer; text-align: left; background: rgba(255,255,255,.03);
  border: 1px solid var(--line); border-radius: 6px; padding: 8px 12px; transition: .15s ease;
  font-family: var(--serif); min-width: 0;
}
.era-chip b { display: block; font-family: var(--display); font-weight: 600; font-size: 14px; }
.era-chip span { display: block; font-family: var(--mono); font-size: 10px; color: var(--ink-soft); margin-top: 1px; }
.era-chip:hover { border-color: var(--ink); }
.era-chip.sel { background: var(--green-deep); border-color: var(--green); box-shadow: 0 0 0 1px var(--green); }
.era-chip.sel b, .era-chip.sel span { color: #fff; }
.era-chip:not(.sel) { opacity: .6; text-decoration: line-through; text-decoration-color: var(--line); }

/* wildcard note + start hint */
.wild-note { display: none; margin: 12px 0 0; padding: 12px 14px; border-left: 3px solid var(--brass); background: rgba(232,160,48,.06); font-size: 13px; line-height: 1.5; color: var(--ink-soft); border-radius: 0 6px 6px 0; }
.wild-note.show { display: block; }
.setup-hint { text-align: center; font-family: var(--mono); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); margin: 22px 0 0; }
.setup-hint.warn { color: var(--oxblood); }

/* ===== watch-along ===== */
.watch-head { display: grid; grid-template-columns: 280px 1fr; gap: 18px; align-items: start; }
@media (max-width: 720px){ .watch-head { grid-template-columns: 1fr; } }
.watch-tally {
  background: linear-gradient(180deg, #2a2620, #1c1813); border: 2px solid var(--brass);
  border-radius: 8px; padding: 18px 20px; text-align: center; color: #f3ecda;
  display: flex; flex-direction: column; justify-content: center;
  box-shadow: inset 0 0 0 1px rgba(216,178,87,.25), var(--shadow);
}
.watch-tally .wt-label { font-family: var(--mono); font-size: 10px; letter-spacing: .2em; text-transform: uppercase; color: var(--brass-lite); }
.watch-tally .wt-num { font-family: var(--display); font-weight: 900; font-size: 64px; line-height: .9; margin: 4px 0; color: #fff; }
.watch-tally .wt-sub { font-family: var(--mono); font-size: 11px; color: #cdbf9c; letter-spacing: .04em; }
.watch-tally .wt-sub b { color: #fff; }
.watch-feed { border: 1px solid var(--line); border-radius: 8px; background: var(--paper); padding: 4px 14px; height: 240px; max-height: 42vh; overflow-y: auto; -webkit-overflow-scrolling: touch; display: flex; flex-direction: column; }
.feed-line { font-family: var(--mono); font-size: 12px; letter-spacing: .03em; color: var(--ink); padding: 6px 0; border-bottom: 1px dotted var(--line); overflow-wrap: anywhere; word-break: break-word; }
.feed-line:last-child { border-bottom: 0; }
.feed-line.muted { color: var(--ink-soft); font-style: italic; }
.feed-line.win { color: var(--green); font-weight: 500; }

/* ===== results board / map ===== */
.board-note { font-family: var(--mono); font-size: 9px; letter-spacing: .08em; text-transform: none; color: var(--ink-soft); float: right; font-weight: 400; }
.board { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 16px 18px; }
.board-region { min-width: 0; }
.br-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin-bottom: 6px; border-bottom: 1px solid var(--line); padding-bottom: 4px; }
.br-name { font-family: var(--mono); font-size: 10px; letter-spacing: .05em; text-transform: uppercase; color: var(--ink-soft); }
.br-count { font-family: var(--mono); font-size: 11px; color: var(--ink); white-space: nowrap; }
.br-grid { display: flex; flex-wrap: wrap; gap: 3px; }
.bcell { width: 11px; height: 11px; border-radius: 2px; background: rgba(80,74,60,.08); transition: background .25s ease, transform .25s ease; }
.bcell.undeclared { background: rgba(80,74,60,.08); }
.bcell.lost { background: rgba(80,74,60,.24); }
.bcell.won { transform: scale(1.06); }
.board-key { display: flex; gap: 18px; margin-top: 16px; flex-wrap: wrap; }
.bk { font-family: var(--mono); font-size: 10px; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-soft); display: inline-flex; align-items: center; gap: 7px; }
.bk-sw { width: 12px; height: 12px; border-radius: 3px; background: var(--green); display: inline-block; }
.bk-sw.lost { background: rgba(80,74,60,.24); }

/* ===== governing verdict ===== */
.govern-readout { display: grid; gap: 12px; }
.gov-meter { position: relative; height: 26px; border-radius: 999px; overflow: hidden; background: var(--paper); border: 1px solid var(--line); }
.gov-fill { position: absolute; left: 0; top: 0; bottom: 0; width: 0; background: linear-gradient(90deg, var(--oxblood), var(--brass) 72%, var(--green)); transition: width 1s cubic-bezier(.2,.7,.2,1); }
.gov-pct { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); font-family: var(--mono); font-size: 12px; color: var(--ink); }
.gov-line { font-family: var(--serif); font-style: italic; font-size: 15px; color: var(--ink-soft); margin: 0; }

/* ============================================================= MAP ====== */
.hexmap { text-align:center; margin:6px 0 10px; }
.hexmap svg.hexsvg {
  height: min(70vh, 600px); width:auto; max-width:100%;
  display:inline-block; overflow:visible;
}
.hexmap.big svg.hexsvg { height: min(78vh, 720px); }
.hexsvg polygon {
  stroke: rgba(243,236,218,.55); stroke-width:.6; vector-effect: non-scaling-stroke;
  transition: fill .18s ease; cursor: pointer;
}
.hexsvg polygon:hover { stroke:#1c1a14; stroke-width:1.4; }
.hexsvg polygon[data-state="won"] { stroke: rgba(243,236,218,.7); }

.map-tip {
  position: fixed; z-index: 9999; display:none; pointer-events:none;
  transform: translate(-50%, -100%);
  background:#1c1a14; color:#f3ecda; font-family:var(--mono, monospace);
  font-size:12px; line-height:1.2; padding:5px 8px; border-radius:6px;
  border:1px solid var(--brass,#b3862f); white-space:nowrap;
  box-shadow:0 6px 20px rgba(0,0,0,.35); max-width:70vw;
}

.bk.muted-k { color: var(--ink-soft,#6b6256); font-style:italic; }

/* per-region summary on the result screen */
.region-summary { margin-top:14px; display:flex; flex-direction:column; gap:6px; }
.rs-row { display:grid; grid-template-columns: 132px 1fr 56px; align-items:center; gap:10px; }
.rs-name { font-size:13px; color:var(--ink,#241f17); }
.rs-bar { height:9px; background:rgba(80,74,60,.16); border-radius:5px; overflow:hidden; }
.rs-fill { display:block; height:100%; border-radius:5px; transition:width .5s ease; }
.rs-num { font-family:var(--mono, monospace); font-size:12px; text-align:right; color:var(--ink-soft,#6b6256); }

@media (max-width:560px){
  .rs-row { grid-template-columns: 96px 1fr 48px; gap:7px; }
  .rs-name { font-size:12px; }
  .hexmap svg.hexsvg { height:58vh; }
  .hexmap.big svg.hexsvg { height:64vh; }
}

/* ============================== GOVERN / LEGACY / records ================= */
.records { text-align:center; font-size:13px; color:var(--ink-soft,#6b6256); margin:2px 0 10px; }
.records b { color:var(--oxblood,#862231); }

.gov-top { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:10px; }
.gov-session { color:var(--ink-soft,#6b6256); font-weight:400; font-size:14px; }
.gov-modetag { font-family:var(--mono,monospace); font-size:12px; color:var(--ink-soft,#6b6256);
  border:1px solid rgba(80,74,60,.25); border-radius:999px; padding:3px 10px; white-space:nowrap; }

.gov-meters { display:flex; flex-direction:column; gap:12px; }
.meter { display:grid; grid-template-columns: 92px 1fr 38px 68px; align-items:center; gap:8px; }
.meter-label { font-size:13px; color:var(--ink,#241f17); }
.meter-bar { height:12px; background:rgba(80,74,60,.16); border-radius:7px; overflow:hidden; box-shadow: inset 0 1px 2px rgba(0,0,0,.12); }
.meter-fill { display:block; height:100%; width:0; border-radius:7px; background:var(--green,#2f5d3a); transition: width .55s cubic-bezier(.4,0,.2,1), background .4s ease; }
.meter-num { font-family:var(--mono,monospace); font-size:14px; text-align:right; color:var(--ink,#241f17); }
.meter-status { font-family:var(--mono,monospace); font-size:11px; text-transform:uppercase; letter-spacing:.06em; }
.meter-status.ms-critical { color:var(--oxblood,#862231); font-weight:700; }
.meter-status.ms-weak     { color:#a05c00; }
.meter-status.ms-stable   { color:var(--ink-soft,#6b6256); }
.meter-status.ms-strong   { color:var(--green,#2f5d3a); font-weight:600; }
.gov-seats { margin-top:4px; font-size:14px; color:var(--ink,#241f17); }
.gov-seats b { font-size:17px; }
.gov-seats-sub, .gov-seats .gov-seats-sub { color:var(--ink-soft,#6b6256); font-size:13px; margin-left:4px; }

.event-card, .tc-card { border-left:4px solid var(--oxblood,#862231); }
#eventTurnCards { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-bottom:4px; }
@media (max-width:640px) { #eventTurnCards { grid-template-columns:1fr; } }
.tc-card { background:rgba(255,255,255,.28); border-radius:8px; padding:14px 16px; }
.choice-staged { border-color:var(--green,#2f5d3a) !important; background:rgba(47,93,58,.09) !important; box-shadow:0 0 0 2px rgba(47,93,58,.22); }
.choice-staged .choice-label { color:var(--green,#2f5d3a); }
.event-head { display:flex; align-items:center; gap:12px; margin-bottom:8px; }
.event-icon { display:inline-flex; align-items:center; justify-content:center; width:38px; height:38px; flex:none;
  border-radius:10px; background:var(--oxblood,#862231); color:var(--parchment,#f3ecda);
  font-size:20px; font-weight:700; box-shadow:0 2px 8px rgba(0,0,0,.18); }
.event-title { font-family:var(--display,'Fraunces',serif); font-size:22px; font-weight:700; color:var(--ink,#241f17); line-height:1.1; }
.event-text { font-size:15px; line-height:1.5; color:var(--ink,#241f17); margin:0 0 14px; }
.event-choices { display:flex; flex-direction:column; gap:10px; }
.choice { text-align:left; cursor:pointer; border:1px solid rgba(80,74,60,.28); background:rgba(255,255,255,.45);
  border-radius:12px; padding:12px 14px; display:flex; flex-direction:column; gap:3px;
  transition: border-color .15s ease, transform .08s ease, background .15s ease; font:inherit; color:inherit; }
.choice:hover { border-color:var(--oxblood,#862231); background:rgba(255,255,255,.8); }
.choice:active { transform:translateY(1px); }
.choice-label { font-weight:700; font-size:15px; color:var(--ink,#241f17); }
.choice-sub { font-size:13px; color:var(--ink-soft,#6b6256); }

.gov-log { display:flex; flex-direction:column; gap:6px; max-height:230px; overflow:hidden; }
.gov-log .feed-line { font-size:13.5px; }
.feed-line.gl-head { font-weight:700; color:var(--ink,#241f17); }
.feed-line.gl-good { color:var(--green,#2f5d3a); }
.feed-line.gl-bad  { color:var(--oxblood,#862231); }

.legacy-banner { text-align:center; font-family:var(--display,'Fraunces',serif); font-weight:700; font-size:clamp(22px,5vw,32px);
  padding:16px; border-radius:14px; margin-bottom:14px; line-height:1.1; }
.legacy-banner.win   { background:var(--green,#2f5d3a); color:var(--parchment,#f3ecda); }
.legacy-banner.mixed { background:var(--brass,#b3862f); color:#241f17; }
.legacy-banner.fell  { background:var(--oxblood,#862231); color:var(--parchment,#f3ecda); }
.legacy-score { text-align:center; margin:6px 0 2px; }
.legacy-num { font-family:var(--display,'Fraunces',serif); font-weight:800; font-size:clamp(48px,14vw,84px); color:var(--oxblood,#862231); line-height:1; display:block; }
.legacy-cap { font-family:var(--mono,monospace); font-size:12px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-soft,#6b6256); }
.legacy-line { text-align:center; font-size:16px; color:var(--ink,#241f17); margin:8px 0 18px; }

.term-review { display:flex; flex-direction:column; gap:6px; max-height:340px; overflow-y:auto; }
.tr-row { display:grid; grid-template-columns: 34px 1fr 1.2fr; gap:10px; align-items:baseline; font-size:13px;
  padding-bottom:6px; border-bottom:1px dashed rgba(80,74,60,.18); }
.tr-s { font-family:var(--mono,monospace); color:var(--ink-soft,#6b6256); }
.tr-t { font-weight:600; color:var(--ink,#241f17); }
.tr-c { color:var(--ink-soft,#6b6256); }

.explore-search { display:flex; align-items:center; gap:10px; margin:4px 0 10px; flex-wrap:wrap; }
.explore-search input { flex:1; min-width:200px; font:inherit; font-size:15px; padding:10px 14px;
  border:1px solid rgba(80,74,60,.3); border-radius:10px; background:rgba(255,255,255,.6); color:var(--ink,#241f17); }
.explore-search input:focus { outline:none; border-color:var(--oxblood,#862231); background:#fff; }

@media (max-width:560px){
  .meter { grid-template-columns: 78px 1fr 32px 56px; gap:6px; }
  .event-title { font-size:19px; }
  .tr-row { grid-template-columns: 28px 1fr; }
  .tr-c { grid-column: 1 / -1; padding-left:38px; }
}

/* sub-label for the declaration-speed picker */
.sub-label { font-family:var(--mono,monospace); font-size:11px; letter-spacing:.12em; text-transform:uppercase;
  color:var(--ink-soft,#6b6256); margin:14px 0 8px; }

/* ============================== footer links + X share =================== */
.foot-links { display:flex; gap:12px; flex-wrap:wrap; justify-content:center; margin:12px 0 4px; }
.foot-link { display:inline-flex; align-items:center; gap:6px; text-decoration:none; font-family:var(--mono,monospace);
  font-size:13px; padding:7px 13px; border-radius:999px; border:1px solid rgba(80,74,60,.3);
  color:var(--ink,#241f17); background:rgba(255,255,255,.5); transition:transform .08s ease, background .15s ease, border-color .15s ease; }
.foot-link:hover { background:#fff; border-color:var(--oxblood,#862231); transform:translateY(-1px); }
.foot-link.coffee { background:#ffdd00; border-color:#e3c400; color:#1a1a1a; font-weight:600; }
.foot-link.coffee:hover { background:#ffe53a; }
.foot-link.x { background:#15171a; border-color:#15171a; color:#fff; }
.foot-link.x:hover { background:#000; }

/* ============================== tier spin + reshuffle ==================== */
.tier-opt { display:flex; justify-content:space-between; align-items:center; gap:12px; width:100%; text-align:left; cursor:pointer;
  border:1px solid rgba(80,74,60,.3); background:rgba(255,255,255,.55); border-radius:12px; padding:14px 16px; margin-bottom:10px;
  font:inherit; color:inherit; transition:border-color .15s ease, transform .08s ease, background .15s ease; }
.tier-opt:hover { border-color:var(--oxblood,#862231); background:#fff; transform:translateY(-1px); }
.tier-name { font-family:var(--display,'Fraunces',serif); font-size:18px; font-weight:700; color:var(--ink,#241f17); }
.tier-count { font-family:var(--mono,monospace); font-size:12px; color:var(--ink-soft,#6b6256); white-space:nowrap; }
.tier-opt.tier-a .tier-name, .tier-opt.tier-b .tier-name { color:var(--oxblood,#862231); }
.reshuffle-btn { width:100%; margin-top:8px; cursor:pointer; border:1px dashed rgba(80,74,60,.4); background:transparent;
  border-radius:10px; padding:9px; font-family:var(--mono,monospace); font-size:12px; color:var(--ink-soft,#6b6256); transition:color .15s, border-color .15s; }
.reshuffle-btn:hover { border-color:var(--oxblood,#862231); color:var(--oxblood,#862231); }

/* ============================== seat standings / breakdown =============== */
.standings { display:flex; flex-direction:column; gap:7px; }
.st-row { display:grid; grid-template-columns: 150px 1fr 42px; align-items:center; gap:10px; font-size:13px; }
.st-row.you .st-name { font-weight:700; }
.st-name { display:flex; align-items:center; gap:7px; color:var(--ink,#241f17); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.st-sw { width:11px; height:11px; border-radius:3px; flex:none; box-shadow:inset 0 0 0 1px rgba(0,0,0,.12); }
.st-you { font-family:var(--mono,monospace); font-size:10px; letter-spacing:.08em; text-transform:uppercase; color:var(--parchment,#f3ecda); background:var(--oxblood,#862231); padding:1px 6px; border-radius:999px; }
.st-bar { height:13px; background:rgba(80,74,60,.12); border-radius:7px; overflow:hidden; }
.st-fill { display:block; height:100%; border-radius:7px; transition:width .4s ease; }
.st-seats { font-family:var(--mono,monospace); font-weight:600; text-align:right; color:var(--ink,#241f17); }

/* coalition options */
.coalition-intro { font-size:14px; color:var(--ink,#241f17); margin:0 0 12px; }
.coalition-options { display:flex; flex-direction:column; gap:10px; }
.coal-opt { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:8px 12px; width:100%; text-align:left; cursor:pointer;
  border:1px solid rgba(80,74,60,.3); background:rgba(255,255,255,.55); border-radius:12px; padding:13px 15px; font:inherit; color:inherit;
  transition:border-color .15s ease, transform .08s ease, background .15s ease; }
.coal-meta { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-left:auto; min-width:0; justify-content:flex-end; }
.coal-opt:hover { border-color:var(--oxblood,#862231); background:#fff; transform:translateY(-1px); }
.coal-opt.minority { border-style:dashed; }
.coal-opt.opp { border-style:dashed; opacity:.9; }
.coal-main { display:flex; align-items:center; gap:8px; font-weight:600; color:var(--ink,#241f17); flex-wrap:wrap; }
.coal-sw { width:11px; height:11px; border-radius:3px; box-shadow:inset 0 0 0 1px rgba(0,0,0,.12); }
.coal-sub { font-family:var(--mono,monospace); font-size:12px; color:var(--ink-soft,#6b6256); white-space:normal; overflow-wrap:anywhere; text-align:right; }
.coal-tag { font-family:var(--mono,monospace); font-size:10px; letter-spacing:.06em; text-transform:uppercase; padding:2px 7px; border-radius:999px; }
.coal-tag.natural { background:rgba(47,93,58,.16); color:var(--green,#2f5d3a); }
.coal-tag.workable { background:rgba(176,141,47,.18); color:var(--brass,#8a6d23); }
.coal-tag.strained { background:rgba(176,90,30,.16); color:#9a5a1e; }
.coal-tag.unlikely { background:rgba(134,34,49,.13); color:var(--oxblood,#862231); }
@media (max-width:560px){ .st-row { grid-template-columns: 110px 1fr 34px; } }

/* ============================== policy / manifesto ====================== */
.policy-intro { font-size:14px; color:var(--ink-soft,#6b6256); max-width:60ch; margin:8px auto 0; }
.policy-axes { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.policy-axis-title { font-family:var(--mono,monospace); font-size:12px; letter-spacing:.06em; text-transform:uppercase; color:var(--oxblood,#862231); margin:0 0 8px; }
.policy-opts { display:flex; flex-direction:column; gap:8px; }
.policy-opt { text-align:left; cursor:pointer; border:1px solid rgba(80,74,60,.28); background:rgba(255,255,255,.5); border-radius:10px;
  padding:10px 12px; font:inherit; color:inherit; transition:border-color .12s ease, background .12s ease, transform .07s ease; }
.policy-opt:hover { border-color:var(--oxblood,#862231); transform:translateY(-1px); }
.policy-opt.sel { border-color:var(--green,#2f5d3a); background:#fff; box-shadow:inset 0 0 0 1px var(--green,#2f5d3a); }
.po-label { display:block; font-weight:700; color:var(--ink,#241f17); }
.po-blurb { display:block; font-size:12px; color:var(--ink-soft,#6b6256); margin-top:2px; }
@media (max-width:640px){ .policy-axes { grid-template-columns:1fr; } }

/* ============================== leaderboard ============================= */
.lb-namebar { text-align:center; margin:4px 0 14px; }
.lb-input { font:inherit; font-family:var(--mono,monospace); font-size:14px; padding:10px 14px; border-radius:10px;
  border:1px solid var(--line,rgba(80,74,60,.3)); background:rgba(255,255,255,.6); width:min(320px,90%); text-align:center; color:var(--ink,#241f17); }
.lb-input:focus { outline:none; border-color:var(--oxblood,#862231); }
.lb-table { display:flex; flex-direction:column; gap:6px; }
.lb-row { display:grid; grid-template-columns:34px 1fr 104px 56px 58px; align-items:center; gap:8px; font-size:13px; padding:6px 8px; border-radius:8px; }
.lb-row.lb-head { font-family:var(--mono,monospace); font-size:10px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-soft,#6b6256); }
.lb-row.top { background:rgba(179,134,47,.12); }
.lb-rk { font-family:var(--mono,monospace); font-weight:600; color:var(--brass,#b3862f); text-align:center; }
.lb-nm { font-weight:600; color:var(--ink,#241f17); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* role name colours (chat + leaderboard): admin dark red, moderator dark blue, user black */
.role-admin { color:#9e1b1b !important; }
.role-mod   { color:#1f3a8f !important; }
.role-user  { color:var(--ink,#241f17) !important; }
.lb-md { font-family:var(--mono,monospace); font-size:11px; color:var(--ink-soft,#6b6256); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.lb-seats { font-family:var(--mono,monospace); font-weight:700; text-align:right; color:var(--green,#2f5d3a); }
.lb-leg { font-family:var(--mono,monospace); text-align:right; color:var(--ink-soft,#6b6256); }
@media (max-width:560px){ .lb-row { grid-template-columns:26px 1fr 48px 44px; } .lb-md { display:none; } }

/* ---- v3 additions: portraits, overall rating, deal card, board tabs ---- */
.cand-pic, .seat-pic, .roll-pic {
  flex-shrink: 0; border-radius: 50%; background: #e7e1d3 center/cover no-repeat;
  display: inline-flex; align-items: center; justify-content: center;
  font-family: var(--mono); color: #6b6b6b; overflow: hidden; border: 1px solid var(--line);
}
.cand-pic { width: 46px; height: 46px; font-size: 14px; }
.seat-pic { width: 30px; height: 30px; font-size: 11px; }
.roll-pic { width: 40px; height: 40px; font-size: 13px; }
.cand-pic img, .seat-pic img, .roll-pic img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ovr {
  display: inline-flex; align-items: center; justify-content: center; min-width: 34px; height: 34px;
  padding: 0 6px; border-radius: 6px; font-family: var(--mono); font-weight: 700; font-size: 16px;
  color: #fff; background: var(--oxblood, #862231); line-height: 1;
}
.ovr.s-elite { background: #1d6b3a; } .ovr.s-good { background: #3a7d44; }
.ovr.s-mid { background: #8a6d2f; } .ovr.s-low { background: #9a4630; }
.ovr-cap { display:block; font-family:var(--mono); font-size:8.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-soft); text-align:center; margin-top:2px; }
.deal-card { display:flex; gap:14px; align-items:flex-start; padding:14px; border:1px solid var(--line); border-radius:6px; background:var(--paper); }
.deal-card.is-despot { border-color:#9a1f1f; background:#fff3f0; box-shadow:0 0 0 2px rgba(154,31,31,.12); }
.deal-card .dc-main { flex:1 1 auto; min-width:0; }
.deal-card .dc-nm { font-family:var(--display); font-weight:700; font-size:19px; line-height:1.1; }
.deal-card .dc-meta { font-size:12.5px; color:var(--ink-soft); margin-top:3px; }
.deal-card .dc-note { font-family:var(--serif,var(--display)); font-style:italic; font-size:13px; color:#444; margin-top:7px; line-height:1.4; }
.deal-card .dc-assign { font-family:var(--mono); font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--green,#2f5d3a); margin-top:8px; }
.deal-card .dc-despot { font-family:var(--mono); font-size:10.5px; letter-spacing:.08em; text-transform:uppercase; color:#9a1f1f; font-weight:700; margin-top:6px; }
.deal-card .dc-stats { display:flex; gap:10px; margin-top:9px; flex-wrap:wrap; }

/* three candidates on offer — stacked, tappable cards */
.deal-choices { display:flex; flex-direction:column; gap:10px; margin-top:4px; }
.deal-card.choice { cursor:pointer; transition:border-color .12s, box-shadow .12s, background .12s; }
.deal-card.choice:hover { border-color:var(--brass,#b9892f); }
.deal-card.choice.chosen { border-color:var(--green,#2f5d3a); background:#f3f7f1; box-shadow:0 0 0 2px rgba(47,93,58,.18); }
.deal-card.choice.is-despot.chosen { border-color:#9a1f1f; background:#fff3f0; box-shadow:0 0 0 2px rgba(154,31,31,.18); }
.deal-hint { font-style:italic; color:var(--ink-soft); text-align:center; padding:22px 8px; }
.seat .seat-ovr { margin-left:auto; }
.seat.despot { border-color:#9a1f1f; background:#fff3f0; }
.lb-tabs { display:flex; gap:8px; margin-bottom:12px; }
.lb-tab { cursor:pointer; font-family:var(--mono); font-size:11px; letter-spacing:.06em; text-transform:uppercase; padding:8px 14px; border-radius:4px; border:1px solid var(--line); background:transparent; color:var(--ink-soft); }
.lb-tab.sel { background:var(--ink,#1c1a14); color:#fff; border-color:var(--ink,#1c1a14); }
.lb-row.expandable { cursor:pointer; }
.lb-detail { padding:10px 12px 4px; border-left:3px solid var(--brass,#b08d2f); margin:2px 0 10px; background:rgba(0,0,0,.02); }
.lb-detail .lbd-seat { display:flex; justify-content:space-between; gap:10px; font-size:13px; padding:3px 0; border-bottom:1px dotted var(--line-soft,#e6e0d2); }
.lb-detail .lbd-seat .who { font-family:var(--display); font-weight:600; }
.lb-detail .lbd-seat .role { font-family:var(--mono); font-size:10px; letter-spacing:.05em; text-transform:uppercase; color:var(--ink-soft); }
.lb-detail .lbd-bd { margin-top:8px; font-size:12px; color:var(--ink-soft); overflow-wrap:anywhere; }
.lb-sub { font-family:var(--mono); font-size:10px; color:var(--ink-soft); }
.st-you-tag { display:inline-block; font-family:var(--mono); font-size:9px; font-weight:700; letter-spacing:.08em; color:#fff; background:var(--oxblood,#862231); padding:2px 6px; border-radius:4px; margin-left:6px; vertical-align:middle; }

/* ---- v4: tappable draft seats, eligibility badge ---- */
.seat.target { cursor: pointer; border: 1px dashed var(--line, #cdbfa6); background: rgba(179,134,47,0.06); transition: background .12s, border-color .12s; }
.seat.target:hover, .seat.target:focus { background: rgba(179,134,47,0.16); border-color: #b3862f; outline: none; }
.seat.target .fitmark { margin-left: auto; }
.seat.target.good { border-color: #2f7d4f; background: rgba(47,125,79,0.08); }
.seat.target.poor { border-color: #b06a2f; }
.elig-badge { margin: 6px 0 0; font-size: 13px; color: var(--ink-soft, #6b6b6b); }
.elig-badge.ok { color: #2f7d4f; font-weight: 600; }

/* =================== v5: accounts, chat, admin, live, banner =============== */
.live-banner { background:#7a1020; color:#fff; padding:10px 14px; border-radius:10px; margin:0 0 12px; font-size:14px; line-height:1.4; }
.live-banner .lb-dot { color:#ffd34d; margin-right:6px; }
.acct-bar { display:flex; align-items:center; justify-content:space-between; gap:10px; margin:0 0 10px; font-size:13px; color:var(--ink-soft,#6b6b6b); flex-wrap:wrap; }
.acct-who { font-weight:600; }
.link-btn { background:none; border:none; color:#b3862f; font:inherit; font-weight:600; cursor:pointer; padding:2px 4px; }
.link-btn:hover { text-decoration:underline; }

.choice-row.quad { display:grid; grid-template-columns:1fr 1fr; gap:8px; }

.acct-panel { display:flex; flex-direction:column; gap:10px; }
.acct-tabs { display:flex; gap:8px; }
.acct-tab { flex:1; padding:8px; border:1px solid var(--line,#cdbfa6); background:transparent; border-radius:8px; font:inherit; cursor:pointer; }
.acct-tab.sel { background:#b3862f; color:#fff; border-color:#b3862f; }
.acct-note { font-size:12px; color:var(--ink-soft,#6b6b6b); margin:2px 0 0; }

.chat-feed { height:46vh; min-height:240px; overflow-y:auto; display:flex; flex-direction:column; gap:8px; padding:4px; }
.chat-empty { color:var(--ink-soft,#6b6b6b); text-align:center; padding:24px 0; }
.chat-msg { display:flex; flex-direction:column; gap:1px; }
.chat-meta { font-size:12px; color:var(--ink-soft,#6b6b6b); display:flex; align-items:center; gap:6px; }
.chat-text { font-size:15px; line-height:1.35; white-space:pre-wrap; word-break:break-word; }
.chat-badge { font-size:10px; text-transform:uppercase; letter-spacing:.04em; padding:1px 5px; border-radius:6px; color:#fff; }
.chat-badge.mod { background:#2f7d4f; } .chat-badge.admin { background:#7a1020; }
.chat-time { margin-left:2px; }
.chat-del { margin-left:auto; background:none; border:none; color:#b06a6a; cursor:pointer; font-size:12px; }
.chat-bar { display:flex; gap:8px; margin:10px 0; }
.chat-bar .lb-input { flex:1; }

.admin-block { margin-bottom:12px; display:flex; flex-direction:column; gap:8px; }
.admin-block h4 { margin:0 0 2px; font-size:15px; }
.adm-area { min-height:84px; font-family:inherit; resize:vertical; }
/* the plain-text politician record: monospace, generous, scrolls (Housekeeping) */
.adm-area-pol { min-height:200px; max-height:320px; overflow:auto; font-family:var(--mono,monospace); font-size:12.5px; line-height:1.55; white-space:pre; }
.adm-pol-list { display:flex; flex-direction:column; gap:6px; max-height:280px; overflow:auto; padding-right:4px; }
.adm-pol { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:6px 8px; border:1px solid var(--line,#e3dac6); border-radius:8px; font-size:13px; }
.adm-pol .ap-nm { font-family:var(--display); font-weight:600; min-width:0; overflow-wrap:anywhere; }
.btn.danger { border-color:rgba(134,34,49,.5); color:var(--oxblood,#862231); }
.btn.danger:hover { background:rgba(134,34,49,.08); }
/* --- profile --- */
.profile-head { display:flex; align-items:center; gap:12px; }
.profile-avatar { width:52px; height:52px; border-radius:50%; background:var(--accent,#7a1f2b); color:#fff; display:flex; align-items:center; justify-content:center; font-family:var(--display); font-weight:700; font-size:18px; flex:0 0 auto; }
.profile-id { flex:1 1 auto; min-width:0; }
.profile-name { font-family:var(--display); font-weight:700; font-size:19px; }
.profile-rank { font-size:12px; color:var(--ink-soft,#8a8a8a); margin-top:1px; }
.profile-stats { display:grid; grid-template-columns:repeat(5,1fr); gap:8px; margin-top:16px; }
@media (max-width:560px){ .profile-stats { grid-template-columns:repeat(2,1fr); } }
.pf-stat { text-align:center; border:1px solid var(--line,#e3dac6); border-radius:9px; padding:9px 4px; }
.pf-stat-v { font-family:var(--display); font-weight:700; font-size:20px; }
.pf-stat-l { font-size:9.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-soft,#8a8a8a); margin-top:3px; }
.profile-nations { margin-top:14px; }
.pf-nat-h { font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-soft,#8a8a8a); margin-bottom:6px; }
.pf-nat { display:flex; justify-content:space-between; font-size:13px; padding:4px 0; border-top:1px solid var(--line,#e3dac6); }
.pf-nat:first-of-type { border-top:none; }
.pf-nat-s { font-family:var(--mono); color:var(--ink-soft,#9a9a9a); }

/* --- leaderboard category buttons --- */
.lb-cats { display:flex; flex-wrap:wrap; gap:6px; margin:8px 0 4px; }
.lb-cat { font-size:12px; padding:5px 11px; border:1px solid var(--line,#e3dac6); border-radius:999px; background:none; color:var(--ink,#eee); cursor:pointer; white-space:nowrap; }
.lb-cat:hover { background:rgba(120,120,120,.10); }
.lb-cat.sel { background:var(--accent,#7a1f2b); color:#fff; border-color:var(--accent,#7a1f2b); }
.lb-replay { width:100%; margin-top:10px; font-size:12px; }

/* --- load run code row (menu) --- */
.loadcode-row { display:flex; gap:8px; margin-top:10px; }
.loadcode-row .lb-input { flex:1 1 auto; min-width:0; font-family:var(--mono,monospace); font-size:12px; }
.loadcode-row .btn { flex:0 0 auto; }

/* --- cabinet strip (govern screen) --- */
.cabinet-strip { display:flex; gap:8px; overflow-x:auto; padding:4px 2px 8px; scrollbar-width:thin; }
.cab-min { position:relative; flex:0 0 auto; width:74px; background:none; border:none; padding:4px 2px; cursor:pointer; display:flex; flex-direction:column; align-items:center; gap:4px; border-radius:8px; }
.cab-min:hover { background:rgba(120,120,120,.10); }
.cab-face { width:48px; height:48px; border-radius:50%; overflow:hidden; display:flex; align-items:center; justify-content:center; font-family:var(--display); font-weight:700; font-size:15px; background:var(--paper-2,#2a2a2a); color:var(--ink-soft,#999); border:2px solid var(--line,#e3dac6); box-sizing:border-box; }
.cab-face img { width:100%; height:100%; object-fit:cover; }
.cab-min.coal .cab-face { border-color:var(--ring,#888); }
.cab-post { font-size:9.5px; line-height:1.15; text-align:center; color:var(--ink-soft,#8a8a8a); max-width:74px; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.cab-flag { position:absolute; top:2px; right:10px; width:9px; height:9px; border-radius:2px; border:1px solid rgba(0,0,0,.25); }
/* minister card overlay */
.min-card-overlay { position:fixed; inset:0; background:rgba(0,0,0,.55); z-index:60; display:flex; align-items:center; justify-content:center; padding:16px; }
.min-card { position:relative; width:min(420px,94vw); max-height:88vh; overflow:auto; background:var(--paper,#1c1c1c); color:var(--ink,#eee); border:1px solid var(--line,#e3dac6); border-radius:14px; padding:18px; box-shadow:0 18px 60px rgba(0,0,0,.5); }
.mc-close { position:absolute; top:8px; right:12px; background:none; border:none; font-size:24px; line-height:1; color:var(--ink-soft,#999); cursor:pointer; }
.mc-head { display:flex; align-items:center; gap:12px; }
.mc-face { width:60px; height:60px; border-radius:50%; overflow:hidden; display:flex; align-items:center; justify-content:center; font-family:var(--display); font-weight:700; font-size:19px; background:var(--paper-2,#2a2a2a); color:var(--ink-soft,#999); border:2px solid var(--line,#e3dac6); flex:0 0 auto; }
.mc-face img { width:100%; height:100%; object-fit:cover; }
.mc-name { font-family:var(--display); font-weight:700; font-size:18px; }
.mc-role { font-size:12px; color:var(--ink-soft,#8a8a8a); margin-top:2px; }
.mc-coal { font-weight:600; }
.mc-note { font-size:12.5px; color:var(--ink-soft,#9a9a9a); line-height:1.5; margin:10px 0 0; font-style:italic; }
.mc-stats { margin:12px 0 0; display:flex; flex-direction:column; gap:5px; }
.mc-stat { display:grid; grid-template-columns:78px 1fr 26px; align-items:center; gap:8px; font-size:12px; }
.mc-stat-l { color:var(--ink-soft,#8a8a8a); }
.mc-stat-bar { height:7px; background:rgba(120,120,120,.16); border-radius:4px; overflow:hidden; }
.mc-stat-bar span { display:block; height:100%; background:var(--accent,#7a1f2b); border-radius:4px; }
.mc-stat-v { font-family:var(--mono); text-align:right; }
.mc-morale { display:flex; gap:14px; margin-top:12px; font-size:12.5px; color:var(--ink-soft,#9a9a9a); }
.mc-rival { color:var(--oxblood,#c0503f); font-weight:600; }
.mc-traits { font-size:12px; color:var(--ink-soft,#8a8a8a); margin:6px 0 0; text-transform:capitalize; }
.mc-coalnote { font-size:12px; color:var(--ink-soft,#8a8a8a); margin:12px 0 0; }
.mc-done { font-size:12px; color:var(--ink-soft,#8a8a8a); margin:12px 0 0; }
.mc-word { margin-top:14px; width:100%; }

/* --- coalition negotiation modal --- */
.negotiation .neg-head { margin-bottom:12px; }
.neg-odds { display:flex; align-items:center; gap:10px; font-size:12px; color:var(--ink-soft,#9a9a9a); margin:4px 0 8px; }
.neg-oddsbar { flex:1; height:9px; background:rgba(120,120,120,.16); border-radius:5px; overflow:hidden; }
.neg-oddsbar span { display:block; height:100%; border-radius:5px; transition:width .25s ease; }
.neg-good { color:var(--green,#2e7d4f); } .neg-oddsbar .neg-good { background:var(--green,#2e7d4f); }
.neg-mid { color:#c79a3a; } .neg-oddsbar .neg-mid { background:#c79a3a; }
.neg-bad { color:var(--oxblood,#b03a2e); } .neg-oddsbar .neg-bad { background:var(--oxblood,#b03a2e); }
.neg-hint { font-size:12px; color:var(--ink-soft,#8a8a8a); line-height:1.5; margin:0 0 12px; }
.neg-demands { display:flex; flex-direction:column; gap:8px; }
.neg-demand { border:1px solid var(--line,#e3dac6); border-radius:9px; padding:9px 11px; }
.neg-ask { display:block; font-size:13px; font-style:italic; margin-bottom:8px; }
.neg-choices { display:flex; gap:8px; }
.neg-btn { flex:1; padding:5px 8px; font-size:12px; }
.neg-demand.settled { opacity:.8; }
.neg-demand.settled .neg-verdict { font-size:11.5px; font-family:var(--mono); }
.neg-demand.conceded { border-color:rgba(46,125,79,.5); }
.neg-demand.refused { border-color:rgba(176,58,46,.4); }
.neg-final { width:100%; margin-top:14px; }
.neg-result { text-align:center; padding:8px 4px; }
.neg-result-h { font-family:var(--display); font-weight:700; font-size:20px; margin-bottom:6px; }
.neg-win .neg-result-h { color:var(--green,#2e7d4f); }
.neg-lose .neg-result-h { color:var(--oxblood,#b03a2e); }
.neg-result p { font-size:13px; color:var(--ink-soft,#9a9a9a); line-height:1.5; margin:0 0 14px; }
.neg-continue { width:100%; }

/* --- coalition handover (govern log intro) --- */
.coal-handover { border:1px solid var(--line,#e3dac6); border-radius:10px; padding:10px 12px; margin-bottom:8px; background:rgba(120,120,120,.06); }
.coal-handover-h { font-family:var(--display); font-weight:700; font-size:14px; margin-bottom:2px; }
.coal-handover-note { font-size:12px; color:var(--ink-soft,#6b6b6b); margin:0 0 8px; line-height:1.5; }
.coal-give { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:4px 0; font-size:13px; border-top:1px solid var(--line,#e3dac6); }
.coal-give:first-of-type { border-top:none; }
.coal-give-post { font-family:var(--display); font-weight:600; }
.coal-give-min { display:flex; align-items:center; gap:6px; }
.coal-give-party { color:var(--ink-soft,#6b6b6b); font-size:11px; }
.coal-sw { display:inline-block; width:9px; height:9px; border-radius:2px; flex:0 0 auto; }
.coal-cede { font-family:var(--mono); font-size:10px; color:var(--ink-soft,#6b6b6b); margin-left:6px; }
.adm-check { font-size:13px; display:flex; align-items:center; gap:8px; }
/* --- friendly politician editor (form) --- */
.ap-load-row { display:flex; gap:8px; align-items:stretch; }
.ap-load-row .lb-input { flex:1 1 auto; min-width:0; }
.ap-load-row .btn { flex:0 0 auto; }
.ap-form { display:grid; grid-template-columns:1fr 1fr; gap:10px 12px; margin-top:10px; }
.ap-field { display:flex; flex-direction:column; gap:4px; font-size:12px; color:var(--ink-soft,#6b6b6b); min-width:0; }
.ap-field > span { font-weight:600; }
.ap-field .lb-input, .ap-field select { width:100%; }
.ap-field-wide { grid-column:1 / -1; }
.ap-field.adm-check { flex-direction:row; align-items:center; color:inherit; }
.ap-stats { display:grid; grid-template-columns:1fr 1fr; gap:6px 16px; margin-top:12px; }
.ap-stat { display:grid; grid-template-columns:78px 1fr 30px; align-items:center; gap:8px; font-size:12px; }
.ap-stat label { color:var(--ink-soft,#6b6b6b); font-weight:600; }
.ap-stat input[type=range] { width:100%; accent-color:var(--accent,#7a1f2b); }
.ap-stat output { font-family:var(--mono,monospace); font-size:12px; text-align:right; }
.ap-fits-wrap { margin-top:12px; }
.ap-fits-label { font-size:12px; font-weight:600; color:var(--ink-soft,#6b6b6b); display:block; margin-bottom:6px; }
.ap-fits { display:flex; flex-wrap:wrap; gap:6px; }
.ap-fit { font-size:12px; padding:4px 9px; border:1px solid var(--line,#e3dac6); border-radius:999px; cursor:pointer; user-select:none; white-space:nowrap; }
.ap-fit input { position:absolute; opacity:0; width:0; height:0; }
.ap-fit.on { background:var(--accent,#7a1f2b); color:#fff; border-color:var(--accent,#7a1f2b); }
.ap-adv { margin-top:12px; font-size:12px; }
.ap-adv summary { cursor:pointer; color:var(--ink-soft,#6b6b6b); }
@media (max-width:520px){ .ap-form, .ap-stats { grid-template-columns:1fr; } }
.adm-users { display:flex; flex-direction:column; gap:6px; }
.adm-user { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:6px 8px; border:1px solid var(--line,#e3dac6); border-radius:8px; font-size:13px; }
.adm-user.banned { opacity:.6; }
.au-lvl { color:var(--ink-soft,#6b6b6b); font-size:11px; }
.au-acts { display:flex; gap:8px; }

.live-grid { display:grid; grid-template-columns:1fr; gap:12px; }
.live-card { border:1px solid var(--line,#e3dac6); border-radius:10px; overflow:hidden; background:#000; }
.live-label { color:#fff; background:#1a1a1a; padding:6px 10px; font-size:13px; }
.live-frame { position:relative; width:100%; padding-top:56.25%; }
.live-frame iframe { position:absolute; inset:0; width:100%; height:100%; border:0; }

.lb-select { margin:0 0 8px; }
.lb-mini { width:100%; padding:8px; border:1px solid var(--line,#cdbfa6); border-radius:8px; font:inherit; background:#fff; }
@media (min-width:720px) { .live-grid { grid-template-columns:1fr 1fr; } }


/* ============================== your party (D1/D2) ====================== */
.party-section { margin-top: 14px; }
.party-name { max-width: 360px; }
.align-row { display: flex; flex-wrap: wrap; gap: 7px; margin: 10px 0 8px; }
.align-chip { font: inherit; font-family: var(--mono, monospace); font-size: 11.5px; letter-spacing: .04em;
  padding: 6px 11px; border-radius: 999px; cursor: pointer; color: var(--ink, #241f17);
  border: 1px solid rgba(80,74,60,.32); background: rgba(255,255,255,.5);
  transition: border-color .12s ease, background .12s ease; }
.align-chip:hover { border-color: var(--oxblood, #862231); }
.align-chip.sel { border-color: var(--green, #2f5d3a); background: #fff; box-shadow: inset 0 0 0 1px var(--green, #2f5d3a); font-weight: 600; }
.party-swatches { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 8px; }
.party-swatch { position: relative; width: 64px; height: 30px; border-radius: 8px; border: 2px solid rgba(0,0,0,.18);
  cursor: pointer; padding: 0; transition: transform .08s ease, box-shadow .12s ease; }
.party-swatch span { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  font-family: var(--mono, monospace); font-size: 8.5px; letter-spacing: .04em; text-transform: uppercase; color: rgba(255,255,255,.92);
  text-shadow: 0 1px 2px rgba(0,0,0,.45); pointer-events: none; }
.party-swatch:hover { transform: translateY(-1px); }
.party-swatch.sel { box-shadow: 0 0 0 2px var(--paper, #f3ecda), 0 0 0 4px var(--ink, #241f17); }
.party-msg { color: var(--oxblood, #862231); min-height: 1em; }

/* ============================== mobile pass (B3) ======================== */
.panel, .lb-detail, .feed-line, .majority-line, .coalition-intro, .gov-line { overflow-wrap: break-word; }
.hexmap svg { max-width: 100%; height: auto; }
@media (max-width: 560px) {
  .watch-tally .wt-num { font-size: 52px; }
  .seat-number { font-size: clamp(56px, 17vw, 84px); }
  .roll-line { grid-template-columns: minmax(86px, 40%) 1fr; }
  .coal-opt { padding: 11px 12px; }
  .lb-row { font-size: 13px; }
  .party-swatch { width: 56px; }
}

/* ============================== v6: casts, tiers, flags ================== */
.cast-chip.locked { opacity: .75; cursor: default; }
.cast-chip.locked b::after { content: " ✓"; color: var(--green, #2f5d3a); }
.tier-chip { font-family: var(--mono, monospace); font-size: 9.5px; letter-spacing: .05em; text-transform: uppercase;
  padding: 1px 7px; border-radius: 999px; border: 1px solid rgba(80,74,60,.35); white-space: nowrap; }
.tier-chip.t-a { background: rgba(176,141,47,.18); border-color: rgba(176,141,47,.6); color: #7a5d14; }
.tier-chip.t-b { background: rgba(47,93,58,.12); color: var(--green, #2f5d3a); }
.tier-chip.t-c { background: rgba(80,74,60,.08); }
.tier-chip.t-d { color: var(--ink-soft, #6b6256); }
.dc-flag { font-family: var(--mono, monospace); font-size: 11px; color: #8a5a00; background: rgba(214,164,0,.12);
  border: 1px dashed rgba(176,141,47,.55); border-radius: 8px; padding: 5px 8px; margin-top: 6px; }
.deal-card.is-flagged { border-color: rgba(176,141,47,.55); }
.seat.flagged { box-shadow: inset 3px 0 0 rgba(176,141,47,.7); }
.grandees-banner { font-family: var(--display); font-weight: 600; text-align: center; padding: 9px 12px; margin-bottom: 10px;
  border: 1px solid rgba(176,141,47,.6); border-radius: 10px; background: linear-gradient(180deg, rgba(214,164,0,.16), rgba(214,164,0,.05));
  color: #6e5410; }

/* ============================== v6: pledges ============================== */
.pledge-strip { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 10px; }
.pledge-strip .pl-cap { font-family: var(--mono, monospace); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); margin-right: 2px; }
.pledge { font-size: 12px; border: 1px solid var(--line, #e3dac6); border-radius: 999px; padding: 3px 10px; background: rgba(255,255,255,.55); }
.pledge i { font-style: normal; font-family: var(--mono, monospace); font-size: 9.5px; letter-spacing: .05em; text-transform: uppercase; margin-left: 6px; color: var(--ink-soft); }
.pledge.delivered { border-color: rgba(47,93,58,.55); background: rgba(47,93,58,.10); }
.pledge.delivered i { color: var(--green, #2f5d3a); }
.pledge.watered { border-color: rgba(176,141,47,.5); background: rgba(176,141,47,.10); }
.pledge.broken { border-color: rgba(134,34,49,.5); background: rgba(134,34,49,.08); }
.pledge.broken i { color: var(--oxblood, #862231); }

/* ============================== v6: opposition =========================== */
.opp-gov { border-left: 4px solid rgba(134,34,49,.5); }
.attack-chip { font-size: 12.5px; }
.attack-chip.sel { border-color: var(--oxblood, #862231); box-shadow: inset 0 0 0 1px var(--oxblood, #862231); font-weight: 600; background: rgba(134,34,49,.06); }
.force-btn { width: 100%; margin-top: 10px; font-family: var(--display); font-weight: 700; padding: 11px;
  border: 1px solid rgba(134,34,49,.6); border-radius: 10px; background: rgba(134,34,49,.08); color: var(--oxblood, #862231); cursor: pointer;
  transition: transform .08s ease, background .12s ease; }
.force-btn:not(:disabled):hover { background: rgba(134,34,49,.14); transform: translateY(-1px); }
.force-btn:disabled { opacity: .45; cursor: default; }
.gov-actions { margin-top: 10px; }
.reshuffle-panel { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.rs-chip.sel { border-color: var(--green, #2f5d3a); box-shadow: inset 0 0 0 1px var(--green, #2f5d3a); }

/* ============================== v6: explainers =========================== */
.rng-simple { border: 1px solid var(--line, #e3dac6); border-left: 4px solid var(--brass, #b08d2f); border-radius: 10px;
  padding: 12px 14px; margin: 14px 0; background: rgba(255,255,255,.5); }
.rng-simple h4 { margin: 0 0 6px; font-family: var(--display); }
.rng-body h3 { margin-top: 18px; }
.rng-body p { line-height: 1.65; }

/* ========================= Wikipedia election screen ===================== */
.wiki-wrap { max-width: 680px; margin: 0 auto; padding: 0 0 40px; }
.wiki-wrap > .btn { margin-bottom: 18px; }
.wiki-box { border: 1px solid #a2a9b1; border-radius: 4px; background: #f8f9fa; font-size: 13.5px; overflow: hidden; }
.wiki-title { background: #cee0f2; padding: 10px 14px; font-family: var(--display); font-weight: 700; font-size: 16px; border-bottom: 1px solid #a2a9b1; }
.wiki-flag { margin-right: 6px; }
.wiki-year { color: #54595d; font-weight: 400; margin-left: 4px; }
.wiki-date { background: #eaf3fb; padding: 6px 14px; font-size: 12px; color: #54595d; border-bottom: 1px solid #a2a9b1; }

.wiki-cols { display: flex; border-bottom: 1px solid #a2a9b1; }
.wiki-col { flex: 1; padding: 0 0 12px; }
.wiki-divider { width: 1px; background: #a2a9b1; flex-shrink: 0; }
.wiki-col-head { background: #cee0f2; padding: 7px 12px; font-weight: 700; font-size: 12px; text-align: center; border-bottom: 1px solid #a2a9b1; }

.wiki-portrait-wrap { display: flex; justify-content: center; align-items: center; height: 90px; margin: 12px 0 8px; }
.wiki-portrait { width: 72px; height: 90px; object-fit: cover; border: 1px solid #a2a9b1; display: block; }
.wiki-portrait-init { width: 72px; height: 90px; display: flex; align-items: center; justify-content: center;
  font-family: var(--display); font-size: 22px; font-weight: 700; background: #e8e8e8; border: 1px solid #a2a9b1;
  color: #54595d; border-radius: 2px; }

.wiki-table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.wiki-table tr:nth-child(even) { background: rgba(234,243,251,.55); }
.wt-label { padding: 4px 10px 4px 12px; color: #54595d; text-align: right; width: 50%; white-space: nowrap; vertical-align: top; }
.wt-value { padding: 4px 12px 4px 6px; font-weight: 500; }

.wiki-national { border-bottom: 1px solid #a2a9b1; }
.wiki-nat-row { display: flex; justify-content: space-between; padding: 5px 14px; font-size: 12.5px; }
.wiki-nat-row:nth-child(even) { background: rgba(234,243,251,.55); }

.wiki-comp-head { padding: 10px 14px 4px; font-size: 12px; font-weight: 700; color: #54595d; border-bottom: none; }
.wiki-comp { padding: 6px 14px 14px; border-bottom: 1px solid #a2a9b1; }
.wiki-dots { display: flex; flex-wrap: wrap; gap: 2px; margin-bottom: 10px; }
.wiki-dot { display: inline-block; width: 8px; height: 8px; border-radius: 1px; }
.wiki-dot-legend { display: flex; flex-wrap: wrap; gap: 8px 16px; font-size: 11.5px; }
.wiki-dot-leg { display: flex; align-items: center; gap: 5px; }
.wiki-dot-swatch { display: inline-block; width: 10px; height: 10px; border-radius: 1px; flex-shrink: 0; }

.wiki-pmrow { display: flex; background: #cee0f2; border-top: 1px solid #a2a9b1; }
.wiki-pm-cell { flex: 1; padding: 8px 14px; font-size: 12.5px; }
.wiki-pm-cell:first-child { border-right: 1px solid #a2a9b1; }
.wiki-pm-label { display: block; font-size: 11px; color: #54595d; margin-bottom: 2px; }

/* hung parliament notice */
.wiki-hung-note { padding: 7px 14px; background: #fef6e4; border-left: 3px solid #c8972a;
  font-size: 12.5px; color: #3d2b00; border-bottom: 1px solid #a2a9b1; }

/* full party results table — Wikipedia style */
.wiki-results-head { padding: 10px 14px 4px; font-size: 12px; font-weight: 700; color: #54595d; border-top: 1px solid #a2a9b1; }
.wiki-full-results { padding: 0 0 4px; border-bottom: 1px solid #a2a9b1; overflow-x: auto; }
.wiki-full-results table { width: 100%; border-collapse: collapse; font-size: 12px; }
.wiki-full-results th { background: #eaeff4; color: #54595d; font-weight: 600; text-align: left;
  padding: 5px 10px; border-bottom: 2px solid #a2a9b1; white-space: nowrap; }
.wiki-full-results td { padding: 5px 10px; border-bottom: 1px solid #e8e8e8; vertical-align: middle; }
.wiki-full-results tr.wiki-you-row td { background: rgba(234,243,251,.6); }
.wiki-full-results tr:last-child td { border-bottom: none; }
.wfr-bar { width: 5px; padding: 0 !important; }
.wfr-party { font-weight: 600; }
.wfr-leader { color: #54595d; font-style: italic; min-width: 110px; }
.wfr-num { text-align: right; font-family: var(--mono, monospace); }
.wfr-you-badge { font-size: 10px; background: #2f5d3a; color: #fff; padding: 1px 5px;
  border-radius: 8px; vertical-align: middle; margin-left: 5px; font-style: normal; font-weight: 400; }
.wfr-gain { color: #2f5d3a; text-align: right; font-family: var(--mono, monospace); }
.wfr-loss { color: #862231; text-align: right; font-family: var(--mono, monospace); }

/* ========================== Career banner ================================ */
.career-banner { display: flex; align-items: center; gap: 10px; padding: 8px 14px;
  background: rgba(47,93,58,.07); border-left: 3px solid var(--green, #2f5d3a);
  border-radius: 0 8px 8px 0; font-size: 13px; margin-bottom: 10px; }
.cb-arrow { font-size: 18px; line-height: 1; }

/* ========================== Retirement screen ============================ */
.ret-wrap { max-width: 560px; margin: 0 auto; padding: 0 0 40px; }
.ret-wrap h2 { font-family: var(--display); font-size: 26px; margin-bottom: 8px; }
.ret-list { display: flex; flex-direction: column; gap: 10px; margin: 16px 0; }
.ret-card { display: flex; align-items: center; gap: 14px; background: rgba(255,255,255,.6);
  border: 1px solid var(--line, #e3dac6); border-radius: 10px; padding: 10px 14px; }
.ret-portrait { width: 44px; height: 44px; border-radius: 50%; background: #e0d8cc; display: flex;
  align-items: center; justify-content: center; font-family: var(--display); font-weight: 700;
  font-size: 14px; flex-shrink: 0; overflow: hidden; }
.ret-portrait img { width: 100%; height: 100%; object-fit: cover; }
.ret-info { display: flex; flex-direction: column; gap: 2px; }
.ret-info b { font-size: 15px; }
.ret-port { font-size: 12.5px; color: var(--ink-soft, #6b6256); }
.ret-served { font-family: var(--mono, monospace); font-size: 11px; color: var(--ink-soft, #6b6256); }
.ret-mods { display: flex; flex-direction: column; gap: 6px; margin: 10px 0 18px;
  padding: 10px 14px; background: rgba(255,255,255,.5); border: 1px solid var(--line, #e3dac6); border-radius: 10px; }
.ret-mod-row { display: flex; align-items: center; gap: 10px; font-size: 13px; }
.ret-arrow { font-size: 18px; width: 20px; text-align: center; }

/* ======================== MOBILE: BUTTON ALIGNMENT ===================== */
@media (max-width: 520px) {
  .btn-row:not(.gov-actions) {
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
  }
  .btn-row:not(.gov-actions) .btn {
    width: 100%;
    justify-content: center;
    text-align: center;
    box-sizing: border-box;
  }
  .wizard-btn-row { flex-direction: row; align-items: center; }
  .wizard-btn-row .btn { flex: 1; justify-content: center; text-align: center; }
}

/* ======================== MENU SECONDARY BUTTONS ======================= */
.menu-btns {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  margin-top: 14px;
}
.menu-btns .btn { width: 100%; justify-content: center; text-align: center; }
@media (max-width: 700px) { .menu-btns { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 440px) { .menu-btns { grid-template-columns: 1fr; } }

/* ======================== SESSION TRACK ================================ */
.session-track {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 0 6px;
  margin-bottom: 10px;
  border-bottom: 1px solid var(--line-soft, #ddd2b4);
}
.st-label {
  font-family: var(--mono, monospace);
  font-size: 10px;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--ink-soft, #6b6256);
  white-space: nowrap;
  min-width: 80px;
}
.st-dots { display: flex; gap: 5px; flex-wrap: wrap; }
.st-dot {
  width: 14px; height: 14px; border-radius: 3px; flex-shrink: 0;
  transition: transform .12s ease, box-shadow .12s ease;
}
.st-dot.st-future   { background: rgba(80,74,60,.14); border: 1px solid rgba(80,74,60,.18); }
.st-dot.st-current  { background: var(--brass, #b3862f); border: 1px solid var(--brass, #b3862f); box-shadow: 0 0 0 2px rgba(179,134,47,.3); transform: scale(1.2); }
.st-dot.st-done     { background: rgba(80,74,60,.38); border: 1px solid rgba(80,74,60,.3); }
.st-dot.st-done-good { background: var(--green, #2f5d3a); border: 1px solid var(--green-deep, #244a2e); }
.st-dot.st-done-bad  { background: var(--oxblood, #862231); border: 1px solid var(--oxblood-2, #6e1a27); }

/* ======================== CAREER PARLIAMENT STRIP ====================== */
.career-parl-strip {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding: 10px 14px;
  background: rgba(47,93,58,.06);
  border-left: 3px solid var(--green, #2f5d3a);
  border-radius: 0 8px 8px 0;
  margin: 14px 0;
}
.cps-label {
  font-family: var(--mono, monospace);
  font-size: 10px;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ink-soft, #6b6256);
  margin-right: 4px;
  white-space: nowrap;
}
.cps-item {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  padding: 5px 12px;
  border-radius: 8px;
  border: 1px solid var(--line, #c9bd9c);
  background: rgba(255,255,255,.5);
  min-width: 62px;
}
.cps-item.cps-win      { border-color: var(--green, #2f5d3a); background: rgba(47,93,58,.09); }
.cps-item.cps-landslide { border-color: var(--green, #2f5d3a); background: rgba(47,93,58,.17); }
.cps-item.cps-lose     { border-color: var(--oxblood, #862231); background: rgba(134,34,49,.07); }
.cps-parl  { font-family: var(--mono, monospace); font-size: 9px; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-soft, #6b6256); }
.cps-seats { font-family: var(--display, serif); font-weight: 700; font-size: 18px; color: var(--ink, #241f17); line-height: 1.1; }
.cps-year  { font-family: var(--mono, monospace); font-size: 9px; color: var(--ink-soft, #6b6256); }

/* =====================================================================
   GRAND EXPANSION — voter blocs, cabinet morale, campaign trail,
   scenarios & objectives
   ===================================================================== */

/* ---- Voter Bloc Bars ------------------------------------------------ */
.bloc-list { display: flex; flex-direction: column; gap: 6px; }
.bloc-row  { display: flex; align-items: center; gap: 8px; }
.bloc-name { font-size: 12px; min-width: 140px; color: var(--ink-soft); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bloc-bar-wrap { flex: 1; background: var(--line-soft); border-radius: 3px; height: 10px; overflow: hidden; }
.bloc-bar  { height: 10px; border-radius: 3px; transition: width .4s ease; }
.bloc-good { background: var(--green, #2f5d3a); }
.bloc-mid  { background: var(--brass, #b3862f); }
.bloc-bad  { background: var(--oxblood, #862231); }
.bloc-num  { font-size: 12px; min-width: 28px; text-align: right; color: var(--ink-soft); font-family: var(--mono, monospace); }

/* ---- Country Picker (wizard step 1) -------------------------------- */
.country-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 10px; margin: 8px 0; }
.country-card {
  display: flex; flex-direction: column; align-items: center;
  padding: 14px 8px 12px; border: 2px solid var(--line); border-radius: 10px;
  background: var(--paper-2); cursor: pointer; text-align: center;
  transition: border-color .15s, background .15s, transform .12s ease;
  color: var(--ink);
}
.country-card:hover { border-color: var(--brass); background: var(--paper-3); transform: translateY(-2px); }
.country-card.sel   { border-color: var(--green); background: rgba(61,200,136,.08); box-shadow: 0 0 0 2px rgba(61,200,136,.15); }
.cc-flag { font-size: 2em; line-height: 1.1; display: block; margin-bottom: 6px; }
.cc-flag img.emoji { height: 1em; width: 1em; vertical-align: -0.12em; margin: 0; }
.cc-name { font-size: 12px; font-weight: 700; color: var(--ink); display: block; margin: 0 0 2px; line-height: 1.2; }
.cc-note { font-size: 10px; color: var(--ink-soft); display: block; line-height: 1.3; }
.country-group-label { font-size: 10px; letter-spacing: .1em; text-transform: uppercase;
                        color: var(--ink-soft); font-family: var(--mono, monospace); margin: 14px 0 6px; }
.country-subsys { display: none; flex-wrap: wrap; gap: 8px; margin: 10px 0 4px; }
.country-subsys.show { display: flex; }
.subsys-btn { padding: 7px 14px; border-radius: 6px; border: 1px solid var(--line);
              background: var(--paper-2); color: var(--ink); cursor: pointer; font-size: 13px;
              transition: border-color .15s, background .15s; }
.subsys-btn:hover { border-color: var(--brass); background: var(--paper-3); }
.subsys-btn.sel  { border-color: var(--green); background: rgba(61,200,136,.08); }
.subsys-btn small { color: var(--ink-soft); }

/* ---- Scenario Cards ------------------------------------------------ */
.scenario-cards { margin-top: 8px; }
.sc-grid        { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px; }
.scenario-card  { padding: 12px 14px; border: 2px solid var(--line); border-radius: 8px; background: var(--paper-2); color: var(--ink); cursor: pointer; transition: border-color .15s, background .15s; }
.scenario-card h4 { margin: 0 0 4px; font-size: 13px; color: var(--ink); }
.scenario-card p  { margin: 0 0 4px; font-size: 12px; color: var(--ink-soft); }
.scenario-card:hover { border-color: var(--brass); background: var(--paper-3); }
.scenario-card.sel { border-color: var(--green); background: rgba(61,200,136,.08); }
.sc-obj  { color: var(--green-deep, #244a2e) !important; font-size: 11px !important; }
.sc-lock { display: block; font-size: 10px; color: var(--oxblood); margin-top: 4px; }

/* ---- Objective Banner (govern screen) ------------------------------ */
.objective-banner { background: rgba(47,93,58,.12); border: 1px solid var(--green); border-radius: 6px; padding: 7px 12px; margin: 6px 0; font-size: 13px; display: flex; align-items: center; gap: 8px; }
.obj-icon { font-size: 16px; }

/* ---- Objectives/Achievements Strip --------------------------------- */
.objectives-strip { margin: 12px 0; padding: 10px 14px; background: rgba(47,93,58,.08); border: 1px solid var(--green); border-radius: 6px; font-size: 13px; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.achievement-badge { display: inline-block; background: var(--green); color: #fff; border-radius: 12px; padding: 3px 10px; font-size: 11px; font-weight: 600; }

/* ---- Campaign Trail Screen ----------------------------------------- */
.campaign-alloc { margin-bottom: 12px; }
.camp-alloc-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 8px; margin-top: 8px; }
.camp-slot { display: flex; align-items: center; justify-content: space-between; padding: 6px 10px; border: 1px solid var(--line); border-radius: 6px; background: var(--paper); gap: 8px; }
.camp-slot-name { font-size: 12px; flex: 1; color: var(--ink-soft); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.camp-stepper { display: flex; align-items: center; gap: 6px; }
.camp-step-btn { width: 24px; height: 24px; border: 1px solid var(--line); border-radius: 4px; background: var(--paper); cursor: pointer; font-size: 14px; line-height: 1; display: flex; align-items: center; justify-content: center; padding: 0; }
.camp-step-btn:hover { background: var(--paper-2); }
.camp-days { font-family: var(--mono, monospace); font-size: 13px; min-width: 16px; text-align: center; }
.campaign-themes { display: flex; flex-direction: column; gap: 8px; }
.camp-theme-btn { width: 100%; text-align: left; padding: 10px 12px; border: 2px solid var(--line); border-radius: 6px; background: var(--paper); cursor: pointer; transition: border-color .15s; }
.camp-theme-btn.sel { border-color: var(--green); background: rgba(47,93,58,.07); }
.camp-theme-btn b { font-size: 13px; display: block; margin-bottom: 2px; }
.camp-theme-btn small { font-size: 11px; color: var(--ink-soft); }
.camp-debate-win  { color: var(--green-deep); font-weight: 700; }
.camp-debate-loss { color: var(--oxblood); font-weight: 700; }

/* ---- Minister Morale / Traits ------------------------------------- */
.min-morale { display: inline-flex; gap: 4px; vertical-align: middle; }
.min-pip { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
.min-pip-loyal    { background: var(--green); }
.min-pip-ambition { background: var(--brass); }
.min-pip-low      { background: var(--oxblood); }
.min-trait  { display: inline-block; background: var(--line-soft); border-radius: 8px; padding: 1px 6px; font-size: 10px; margin: 2px 1px; color: var(--ink-soft); }
.min-trait.rival  { background: var(--oxblood); color: #fff; }
.min-trait.rising { background: var(--green); color: #fff; }

/* ---- International / Scenario Picker Tabs ----------------------------- */
.sc-despot { display: block; font-size: 10px; color: var(--oxblood); margin-top: 4px; font-style: italic; }

/* ---- International Result Styling ------------------------------------ */
.intl-breakdown { margin: 12px 0; }
.intl-breakdown .party-bar-row { display: flex; align-items: center; gap: 8px; margin: 4px 0; }
.intl-breakdown .pb-label { font-size: 12px; min-width: 120px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.intl-breakdown .pb-bar  { flex: 1; height: 12px; border-radius: 2px; }
.intl-breakdown .pb-count { font-size: 11px; font-family: var(--mono); min-width: 40px; text-align: right; }

/* ---- Electoral College State Grid ------------------------------------ */
.ec-state-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 6px; margin: 10px 0; }
.ec-state { padding: 6px 8px; border-radius: 4px; font-size: 11px; }
.ec-state.won  { background: rgba(47,93,58,.15); border: 1px solid var(--green); }
.ec-state.lost { background: rgba(134,34,49,.10); border: 1px solid var(--oxblood); }
.ec-state b { display: block; font-size: 13px; }
.ec-state-ev { font-family: var(--mono); font-size: 11px; color: var(--ink-soft); }

/* ---- Despot / Guided Democracy result -------------------------------- */
.despot-result { text-align: center; padding: 20px; }
.despot-pct    { font-size: 64px; font-weight: 900; color: var(--green); font-family: var(--serif); line-height: 1; }
.despot-label  { font-size: 14px; color: var(--ink-soft); margin-top: 4px; }
.despot-warning{ display: inline-block; margin-top: 12px; padding: 6px 14px; background: rgba(134,34,49,.12);
                 border: 1px solid var(--oxblood); border-radius: 4px; font-size: 12px; color: var(--oxblood); }

/* ---- Twemoji: CDN-rendered emoji/flags render identically everywhere - */
img.emoji { height: 1em; width: 1em; margin: 0 .05em 0 .1em; vertical-align: -0.1em; display: inline-block; }
/* ---- party logos: live website favicons, sized like an emoji ---------- */
img.party-logo { height: 1.1em; width: 1.1em; border-radius: 2px; object-fit: contain; vertical-align: -0.18em; margin-right: 6px; background: rgba(255,255,255,.06); }

/* ---- Button centering fix ------------------------------------------- */
.btn-row   { display: flex; gap: 12px; flex-wrap: wrap; justify-content: center; }
.menu-btns { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; margin-top: 16px; }
.wizard-btn-row { display: flex; gap: 16px; justify-content: center; margin-top: 20px; align-items: center; }

/* ---- PR Coalition Display ------------------------------------------- */
.coalition-bar { height: 20px; border-radius: 3px; overflow: hidden; display: flex; margin: 8px 0; }
.coalition-seg { height: 100%; transition: width .3s; }
.coalition-legend { display: flex; flex-wrap: wrap; gap: 8px; font-size: 11px; margin-top: 4px; }
.coal-leg-item { display: flex; align-items: center; gap: 4px; }
.coal-leg-dot  { width: 10px; height: 10px; border-radius: 2px; flex-shrink: 0; }

/* ---- International result map panels -------------------------------- */
.ec-map-panel    { width: 100%; }
.ec-summary      { text-align: center; padding: 8px; font-size: 16px; font-family: var(--mono); margin-top: 6px; }
.ec-name         { display: block; font-size: 10px; color: inherit; opacity: .9; }
.ec-ev           { font-size: 13px; font-weight: 700; font-family: var(--mono); }
.pr-coalition-panel { width: 100%; }
.pr-list         { display: flex; flex-direction: column; gap: 4px; margin-top: 12px; }
.pr-row          { display: flex; align-items: center; gap: 8px; font-size: 13px; padding: 3px 0; }
.pr-row.you      { font-weight: 700; }
.pr-sw           { width: 12px; height: 12px; border-radius: 2px; flex-shrink: 0; }
.pr-name         { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pr-seats        { font-family: var(--mono); min-width: 36px; text-align: right; }
.pr-pct          { font-family: var(--mono); min-width: 44px; text-align: right; color: var(--ink-soft); font-size: 11px; }
.region-summary-panel { width: 100%; }

/* ---- Despot banner -------------------------------------------------- */
.despot-banner   { background: #5a1a1a !important; color: #f3e8c0 !important; }

/* ---- Objective badges ----------------------------------------------- */
.objective-badge { display: inline-block; padding: 4px 10px; margin: 4px;
                   background: rgba(47,93,58,.12); border: 1px solid var(--green);
                   border-radius: 12px; font-size: 12px; color: var(--green); }
.objective-badge.new { background: var(--green); color: #fff; animation: badge-pop .4s ease; }
@keyframes badge-pop { 0%{transform:scale(.8);opacity:0} 60%{transform:scale(1.1)} 100%{transform:scale(1);opacity:1} }
.objectives-strip { padding: 12px 0; display: flex; flex-wrap: wrap; gap: 6px; }

/* =============================================================================
   DARK THEME OVERRIDES — Phase 6
   Fixes all hard-coded light backgrounds for the dark "global intelligence" skin.
   ============================================================================= */

/* ---- Candidate card selected state ---- */
.cand.sel { border-color: var(--green); background: rgba(61,200,136,.08); }

/* ---- Cabinet seat states ---- */
.seat.target {
  border: 1px dashed var(--line);
  background: rgba(232,160,48,.05);
  box-shadow: 0 0 0 2px rgba(232,160,48,.08);
}
.seat.target:hover { background: rgba(232,160,48,.12); border-color: var(--brass); }
.seat.target.good { border-color: var(--green); background: rgba(61,200,136,.07); box-shadow: 0 0 0 2px rgba(61,200,136,.1); }
.seat.despot { border-color: rgba(224,64,96,.45); background: rgba(224,64,96,.07); }

/* ---- Deal / draft cards ---- */
.deal-card { background: var(--paper-2); border-color: var(--line); }
.deal-card.is-despot { border-color: rgba(224,64,96,.55); background: rgba(224,64,96,.07); box-shadow: 0 0 0 2px rgba(224,64,96,.1); }
.deal-card .dc-note { color: var(--ink-soft); }
.deal-card.choice:hover { border-color: var(--brass); background: var(--paper-3); }
.deal-card.choice.chosen { border-color: var(--green); background: rgba(61,200,136,.07); box-shadow: 0 0 0 2px rgba(61,200,136,.15); }
.deal-card.choice.is-despot.chosen { border-color: rgba(224,64,96,.55); background: rgba(224,64,96,.09); box-shadow: 0 0 0 2px rgba(224,64,96,.15); }

/* ---- Event / choice cards ---- */
.tc-card { background: var(--paper-2); }
.choice { border: 1px solid var(--line); background: rgba(255,255,255,.04); color: var(--ink); }
.choice:hover { border-color: var(--oxblood); background: rgba(224,64,96,.06); }
.choice-label { color: var(--ink); }
.choice-sub   { color: var(--ink-soft); }
.event-title { color: var(--ink); }
.event-text  { color: var(--ink); }
.event-icon  { color: #fff; }

/* ---- Tier / reshuffle options ---- */
.tier-opt { border: 1px solid var(--line); background: var(--paper-2); color: var(--ink); }
.tier-opt:hover { border-color: var(--oxblood); background: var(--paper-3); }
.tier-name { color: var(--ink); }
.tier-opt.tier-a .tier-name, .tier-opt.tier-b .tier-name { color: var(--oxblood); }

/* ---- Coalition options ---- */
.coalition-intro { color: var(--ink); }
.coal-opt { border: 1px solid var(--line); background: var(--paper-2); color: var(--ink); }
.coal-opt:hover { border-color: var(--oxblood); background: var(--paper-3); }
.coal-main { color: var(--ink); }

/* ---- Policy options ---- */
.policy-opt { border: 1px solid var(--line); background: rgba(255,255,255,.03); color: var(--ink); }
.policy-opt:hover { border-color: var(--oxblood); background: rgba(224,64,96,.05); }
.policy-opt.sel { border-color: var(--green); background: rgba(61,200,136,.07); box-shadow: inset 0 0 0 1px var(--green); }
.po-label { color: var(--ink); }
.po-blurb { color: var(--ink-soft); }

/* ---- Standings ---- */
.st-name  { color: var(--ink); }
.st-you   { color: #fff; }
.st-seats { color: var(--ink); }

/* ---- Form elements ---- */
.lb-input { background: var(--paper-2); color: var(--ink); border-color: var(--line); }
.lb-input:focus { border-color: var(--oxblood); background: var(--paper-3); outline: none; }
.lb-mini { background: var(--paper-2); color: var(--ink); border-color: var(--line); }
.explore-search input { background: var(--paper-2); color: var(--ink); border: 1px solid var(--line); border-radius: 10px; }
.explore-search input:focus { background: var(--paper-3); border-color: var(--oxblood); outline: none; }

/* ---- Retirement cards ---- */
.ret-card { background: var(--paper-2); border-color: var(--line); }
.ret-portrait { background: var(--paper-3); color: var(--ink-soft); }

/* ---- Career parliament strip ---- */
.cps-item { background: var(--paper-2); border-color: var(--line); }
.cps-seats { color: var(--ink); }

/* ---- Leaderboard ---- */
.lb-nm    { color: var(--ink); }
.lb-seats { color: var(--green); }
.lb-tab.sel { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.lb-detail { background: var(--paper-3); }
.lb-detail .lbd-seat { border-bottom: 1px dotted var(--line); }
.lb-detail .lbd-seat .who { color: var(--ink); }
.lb-detail .lbd-bd { color: var(--ink-soft); }

/* ---- Accounts / admin ---- */
.acct-tab { background: var(--paper-2); color: var(--ink); border-color: var(--line); }
.acct-tab.sel { background: var(--brass); color: #fff; border-color: var(--brass); }
.adm-pol  { background: var(--paper-2); border-color: var(--line); }
.adm-user { background: var(--paper-2); border-color: var(--line); }
.adm-area { background: var(--paper-2); color: var(--ink); border: 1px solid var(--line); border-radius: 6px; padding: 8px 10px; font: inherit; }
.link-btn { color: var(--brass); }

/* Role colours updated for dark backgrounds */
.role-admin { color: #ff7070 !important; }
.role-mod   { color: #7ab8f5 !important; }
.role-user  { color: var(--ink) !important; }

/* ---- Footer links ---- */
.foot-link { background: var(--paper-2); color: var(--ink); border-color: var(--line); }
.foot-link:hover { background: var(--paper-3); border-color: var(--brass); transform: translateY(-1px); }
.foot-link.coffee { background: #ffdd00; border-color: #e3c400; color: #1a1a1a; font-weight: 600; }
.foot-link.coffee:hover { background: #ffe53a; border-color: #ccc000; }
.foot-link.x { background: #15171a; border-color: #444; color: #fff; }
.foot-link.x:hover { background: #222; border-color: #666; }

/* ---- Explainer / RNG panel ---- */
.rng-simple { background: var(--paper-2); border-color: var(--line); border-left-color: var(--brass); }

/* ---- Pledge tags ---- */
.pledge { background: rgba(255,255,255,.04); border-color: var(--line); color: var(--ink); }
.pledge.delivered { border-color: rgba(61,200,136,.45); background: rgba(61,200,136,.08); }
.pledge.watered   { border-color: rgba(232,160,48,.4);  background: rgba(232,160,48,.08); }
.pledge.broken    { border-color: rgba(224,64,96,.45);  background: rgba(224,64,96,.07); }
.pledge.broken i  { color: var(--oxblood); }
.pledge.delivered i { color: var(--green); }

/* ---- Grandees banner ---- */
.grandees-banner {
  background: linear-gradient(180deg, rgba(232,160,48,.12), rgba(232,160,48,.04));
  border-color: rgba(232,160,48,.45);
  color: var(--brass-lite);
}

/* ---- Flagged deal cards ---- */
.dc-flag { color: var(--brass-lite); background: rgba(232,160,48,.09); border-color: rgba(232,160,48,.32); }

/* ---- Tier chips ---- */
.tier-chip.t-a { background: rgba(232,160,48,.14); border-color: rgba(232,160,48,.45); color: var(--brass-lite); }
.tier-chip.t-c { background: rgba(255,255,255,.06); color: var(--ink-soft); }
.tier-chip.t-d { color: var(--ink-soft); }

/* ---- Govern / legacy screens ---- */
.feed-line.gl-head { color: var(--ink); }
.gov-line   { color: var(--ink-soft); }
.gov-session { color: var(--ink-soft); }
.gov-seats  { color: var(--ink); }
.meter-label { color: var(--ink); }
.meter-num   { color: var(--ink); }
.meter-bar   { background: rgba(255,255,255,.08); }
.meter-status.ms-stable { color: var(--ink-soft); }
.meter-status.ms-weak   { color: var(--brass); }
.legacy-line { color: var(--ink); }
.legacy-num  { color: var(--oxblood); }
.tr-t { color: var(--ink); }
.tr-c { color: var(--ink-soft); }
.tr-s { color: var(--ink-soft); }

/* ---- Records line ---- */
.records { color: var(--ink-soft); }
.records b { color: var(--oxblood); }

/* ---- Ready summary ---- */
.ready-summary { background: var(--paper-3); border-color: var(--line); }
.ready-summary p { color: var(--ink-soft); }
.ready-summary b { color: var(--ink); }

/* ---- Government verdict banner ---- */
.govt-banner.lose { color: #fff; }

/* ---- Party section — centred layout ---- */
.party-section {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  margin-top: 14px;
}
.party-section .sub-label      { text-align: center; }
.party-section .mini-help      { text-align: center; max-width: 52ch; }
.party-section .party-name     { max-width: 360px; width: 100%; }
.party-section .align-row      { justify-content: center; }
.party-section .party-swatches { justify-content: center; }

/* ---- Board cells (dark-adjusted undeclared) ---- */
.bcell.undeclared { background: rgba(255,255,255,.07); }
.bcell.lost       { background: rgba(255,255,255,.16); }

/* ---- Country hex cartograms (per-seat international maps) ---- */
.country-hexsvg { height: min(62vh, 560px); width: auto; max-width: 100%; }
.country-hexsvg polygon { stroke: rgba(10,15,26,.5); stroke-width: .5; vector-effect: non-scaling-stroke; transition: fill .25s ease; }
.country-hexsvg polygon[data-state="won"], .country-hexsvg polygon[data-state="lost"] { stroke: rgba(10,15,26,.6); }
.country-hexsvg polygon:hover { stroke: var(--brass); stroke-width: 1.4; }
@media (max-width: 560px){ .country-hexsvg { height: 52vh; } }

/* =============================================================================
   LIGHT THEME — opt-in via <html class="theme-light"> (toggle in the footer).
   Everything is variable-driven, so re-pointing the tokens reskins the site.
   ============================================================================= */
html.theme-light {
  --paper:      #f5edd9;
  --paper-2:    #fbf6ea;
  --paper-3:    #ece2c9;
  --ink:        #241f17;
  --ink-soft:   #6b6256;
  --line:       #d8cdb0;
  --line-soft:  #e7decd;
  --green:      #2f6d44;
  --green-deep: #234e30;
  --oxblood:    #9a2334;
  --oxblood-2:  #7a1c2a;
  --brass:      #9a6f1e;
  --brass-lite: #b3862f;
  --gold-glow:  rgba(179,134,47,.16);
  --teal:       #1f6f8b;
  --shadow:     0 8px 24px -8px rgba(70,55,30,.18);
  --shadow-lg:  0 18px 42px -16px rgba(70,55,30,.30);
}
html.theme-light body {
  background-color: #ece2c9;
  background-image:
    radial-gradient(900px 450px at 75% -5%,  rgba(47,109,68,.06),  transparent 60%),
    radial-gradient(700px 350px at -5% 105%, rgba(154,35,52,.05),  transparent 55%);
}
html.theme-light body::before { opacity: .06; }
/* the masthead "650" reads dark→oxblood→brass on parchment */
html.theme-light .title-650 {
  background: linear-gradient(175deg, var(--ink) 0%, var(--oxblood) 58%, var(--brass) 100%);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 2px 12px rgba(154,35,52,.18));
}
/* glass fills that were white-tinted for dark look better as faint ink on light */
html.theme-light .opt,
html.theme-light .choice,
html.theme-light .policy-opt { background: rgba(0,0,0,.025); }
html.theme-light .opt:hover { background: rgba(0,0,0,.05); }
html.theme-light .panel { background: linear-gradient(180deg, rgba(255,255,255,.5), rgba(255,255,255,.2)); background-color: var(--paper-2); }
html.theme-light .era-chip,
html.theme-light .chip,
html.theme-light .btn-ghost:hover { background: rgba(0,0,0,.03); }
html.theme-light .era-chip b { color: var(--ink); }
html.theme-light .era-chip span { color: var(--ink-soft); }
html.theme-light .era-chip:not(.sel) { color: var(--ink-soft); }
html.theme-light .era-chip.sel b,
html.theme-light .era-chip.sel span { color: #fff; }
html.theme-light .lb-input,
html.theme-light .lb-mini,
html.theme-light .explore-search input,
html.theme-light .adm-area { background: #fff; }
html.theme-light .country-hexsvg polygon { stroke: rgba(60,50,30,.4); }
html.theme-light .country-hexsvg polygon[data-state] { stroke: rgba(60,50,30,.5); }

/* ---- the theme toggle control (footer) ---- */
.theme-toggle {
  display: inline-flex; align-items: center; gap: 7px; cursor: pointer;
  font-family: var(--mono, monospace); font-size: 13px;
  padding: 7px 13px; border-radius: 999px;
  border: 1px solid var(--line); background: var(--paper-2); color: var(--ink);
  transition: transform .08s ease, background .15s ease, border-color .15s ease;
}
.theme-toggle:hover { background: var(--paper-3); border-color: var(--brass); transform: translateY(-1px); }

/* =============================================================================
   DARK THEME — Phase 7 fixes: wiki box, align chips, remaining hardcoded colours
   ============================================================================= */

/* ---- Wikipedia-style election record box -------------------------------- */
.wiki-box { border-color: var(--line) !important; background: var(--paper-2) !important; color: var(--ink) !important; }
.wiki-title { background: var(--paper-3) !important; color: var(--ink) !important; border-bottom-color: var(--line) !important; }
.wiki-year { color: var(--ink-soft) !important; }
.wiki-date { background: rgba(255,255,255,.04) !important; color: var(--ink-soft) !important; border-bottom-color: var(--line) !important; }
.wiki-cols  { border-bottom-color: var(--line) !important; }
.wiki-divider { background: var(--line) !important; }
.wiki-col-head { background: var(--paper-3) !important; color: var(--ink) !important; border-bottom-color: var(--line) !important; }
.wiki-portrait-init { background: var(--paper-3) !important; color: var(--ink-soft) !important; border-color: var(--line) !important; }
.wiki-portrait { border-color: var(--line) !important; }
.wiki-table tr:nth-child(even) { background: rgba(255,255,255,.04) !important; }
.wt-label { color: var(--ink-soft) !important; }
.wiki-national { border-bottom-color: var(--line) !important; }
.wiki-nat-row:nth-child(even) { background: rgba(255,255,255,.03) !important; }
.wiki-comp-head { color: var(--ink) !important; }
.wiki-comp { border-bottom-color: var(--line) !important; }
.wiki-results-head { color: var(--ink) !important; border-top-color: var(--line) !important; }
.wiki-full-results { border-bottom-color: var(--line) !important; }
.wiki-full-results th { background: var(--paper-3) !important; color: var(--ink-soft) !important; }
.wiki-full-results td { border-bottom-color: var(--line) !important; }
.wiki-full-results tr.wiki-you-row td { background: rgba(61,200,136,.07) !important; }
.wiki-pm-label { color: var(--ink-soft) !important; }
.wiki-pmrow { background: var(--paper-3) !important; border-top-color: var(--line) !important; }
.wiki-pm-cell:first-child { border-right-color: var(--line) !important; }
.wiki-hung-note { background: rgba(232,160,48,.08) !important; border-left-color: var(--brass) !important; color: var(--brass-lite) !important; }

/* ---- Align chips in party setup ----------------------------------------- */
.align-chip { color: var(--ink); }
.align-chip.sel { background: var(--paper-3) !important; color: var(--green) !important; border-color: var(--green) !important; box-shadow: inset 0 0 0 1px var(--green) !important; }

/* ---- Tier chips (deal cards) -------------------------------------------- */
.tier-chip.t-a { color: var(--brass-lite) !important; background: rgba(232,160,48,.12) !important; border-color: rgba(232,160,48,.4) !important; }
.dc-flag { color: var(--brass-lite) !important; background: rgba(232,160,48,.08) !important; border-color: rgba(232,160,48,.3) !important; }

/* ---- Vote-share mini-bars (wiki / result) -------------------------------- */
.share-bar-wrap  { background: rgba(255,255,255,.07); }
.share-bar-label { color: var(--ink-soft); }
.mini-bar-wrap   { background: rgba(255,255,255,.07); }

/* ---- Session track dots (st-dot = the actual class used by ui.js) -------- */
.st-dot.st-future { background: rgba(255,255,255,.05); border-color: rgba(255,255,255,.1); }

/* ---- Grandees / stat boxes in deal cards --------------------------------- */
.stat-row { color: var(--ink-soft); }
.stat-key  { color: var(--ink-soft); }
.stat-val  { color: var(--ink); }

/* ---- Era chip in deal cards ---------------------------------------------- */
.era-chip { background: var(--paper-3); border-color: var(--line); color: var(--ink-soft); }
.era-chip.sel { background: var(--green-deep); border-color: var(--green); color: #fff; }
.era-chip b { color: var(--ink); }

/* ---- reshuffle panel min/trait tags --------------------------------------- */
.min-name   { color: var(--ink); }
.min-role   { color: var(--ink-soft); }
.min-bar-bg { background: rgba(255,255,255,.08); }
.min-bar-fill.good  { background: var(--green); }
.min-bar-fill.ok    { background: var(--brass); }
.min-bar-fill.poor  { background: var(--oxblood); }

/* ---- Watch screen feed lines -------------------------------------------- */
.feed-line  { color: var(--ink-soft); }
.feed-line b { color: var(--ink); }
.feed-line.win-line { color: var(--green); }
.feed-line.lose-line { color: var(--oxblood); }

/* ---- career parl strip items -------------------------------------------- */
.cps-parl  { color: var(--brass-lite); }
.cps-seats { color: var(--ink); }

/* ---- Light-theme wiki overrides ------------------------------------------ */
html.theme-light .wiki-box { border-color: #a2a9b1 !important; background: #f8f9fa !important; color: #202122 !important; }
html.theme-light .wiki-title { background: #cee0f2 !important; color: #202122 !important; border-bottom-color: #a2a9b1 !important; }
html.theme-light .wiki-date { background: #eaf3fb !important; color: #54595d !important; }
html.theme-light .wiki-col-head { background: #cee0f2 !important; color: #202122 !important; }
html.theme-light .wiki-portrait-init { background: #e8e8e8 !important; color: #54595d !important; }
html.theme-light .wiki-pmrow { background: #cee0f2 !important; }
html.theme-light .wiki-full-results th { background: #eaeff4 !important; color: #54595d !important; }
html.theme-light .wt-label { color: #54595d !important; }
html.theme-light .wiki-hung-note { background: #fef6e4 !important; border-left-color: #c8972a !important; color: #7a5d14 !important; }
html.theme-light .align-chip.sel { background: #fff !important; color: var(--green) !important; }
html.theme-light .tier-chip.t-a { color: #7a5d14 !important; background: rgba(176,141,47,.18) !important; }
html.theme-light .country-card { background: rgba(255,255,255,.7); }
html.theme-light .country-card:hover { background: rgba(255,255,255,.9); }
html.theme-light .country-card.sel  { background: rgba(47,109,68,.07); }

/* ---- Continue card (saved game restore) ---------------------------------- */
.continue-card { border: 2px solid var(--green); border-radius: 10px; background: rgba(61,200,136,.06); padding: 14px 16px; margin: 8px 0 14px; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 10px; }
.cont-body { flex: 1 1 auto; min-width: 0; }
.cont-label { font-size: 10px; text-transform: uppercase; letter-spacing: .08em; color: var(--green); margin: 0 0 4px; font-family: var(--mono, monospace); }
.cont-desc  { font-size: 14px; font-weight: 700; color: var(--ink); margin: 0 0 3px; }
.cont-at    { font-size: 12px; color: var(--ink-soft); margin: 0; }
.cont-btns  { display: flex; align-items: center; gap: 12px; flex-shrink: 0; }
.cont-dismiss { font-size: 12px; color: var(--ink-soft); background: none; border: none; cursor: pointer; padding: 4px 0; }
.cont-dismiss:hover { color: var(--ink); }

/* ---- Save badge (fixed bottom corner) ----------------------------------- */
.save-badge { position: fixed; bottom: 66px; right: 14px; background: var(--green); color: #fff; font-size: 11px; font-weight: 600; padding: 5px 12px; border-radius: 20px; z-index: 300; pointer-events: none; letter-spacing: .03em; box-shadow: 0 2px 8px rgba(0,0,0,.25); }

/* ---- Player run history (account screen) -------------------------------- */
.runs-list  { display: flex; flex-direction: column; gap: 7px; margin-top: 4px; }
.run-row    { display: flex; justify-content: space-between; align-items: flex-start; padding: 9px 12px; border-radius: 8px; background: var(--paper-2); border: 1px solid var(--line); gap: 8px; }
.run-seats  { font-size: 18px; font-weight: 800; color: var(--ink); font-family: var(--mono, monospace); }
.run-meta   { font-size: 12px; color: var(--ink-soft); }
.run-legacy { color: var(--brass-lite); }
.run-right  { text-align: right; display: flex; flex-direction: column; align-items: flex-end; gap: 2px; }
.run-pct    { font-size: 14px; font-weight: 700; color: var(--green); font-family: var(--mono, monospace); }
.run-tag    { font-size: 11px; color: var(--ink-soft); }
.run-date   { font-size: 11px; color: var(--ink-soft); }
