:root {
  color-scheme: dark;
  --bg-deep: #050b24;
  --bg-mid: #0a1a4f;
  --bg-bright: #102e78;
  --panel: #07152e;
  --panel-soft: #0c2146;
  --panel-raised: #102a58;
  --edge: #506fab;
  --edge-soft: rgba(102, 146, 218, .33);
  --cyan: #55c7ff;
  --blue: #3268ff;
  --red: #df4057;
  --gold: #f0bf4a;
  --success: #3dc47e;
  --text: #f6f8ff;
  --text-muted: #aabde2;
  --text-faint: #7189b7;
  --glass: rgba(7, 21, 46, .88);
  --shadow-deep: 0 24px 70px rgba(0, 3, 17, .58);
  --shadow-panel: 0 16px 38px rgba(0, 4, 24, .42), inset 0 1px 0 rgba(120, 211, 255, .2);
  --shadow-glow: 0 0 0 1px rgba(85, 199, 255, .18), 0 0 26px rgba(50, 104, 255, .17);
  --radius-panel: 14px;
  --radius-card: 10px;
  --ease: 180ms cubic-bezier(.2, .75, .2, 1);
}

* { box-sizing: border-box; }
html { min-width: 320px; min-height: 100%; background: var(--bg-deep); }
body {
  min-width: 320px;
  min-height: 100vh;
  margin: 0;
  overflow-x: hidden;
  color: var(--text);
  background: var(--bg-deep);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  -webkit-font-smoothing: antialiased;
}
button, input, select, textarea { max-width: 100%; font: inherit; }
button, [role="button"] { -webkit-tap-highlight-color: transparent; }
button:not(:disabled), [role="button"]:not([aria-disabled="true"]) { cursor: pointer; }
img, svg { display: block; max-width: 100%; }
h1, h2, h3, h4 { margin: 0; color: var(--text); font-family: Inter, ui-sans-serif, system-ui, sans-serif; line-height: 1.06; letter-spacing: -.025em; }
p { overflow-wrap: anywhere; line-height: 1.5; }
a { color: inherit; }
[hidden], .screen[hidden], .campaign-panel[hidden], .modal-layer[hidden], .modal-result[hidden] { display: none !important; }
:focus-visible { outline: 3px solid var(--cyan); outline-offset: 3px; }
.sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }

.game-app {
  position: relative;
  isolation: isolate;
  min-height: 100vh;
  overflow-x: clip;
  padding: clamp(16px, 1.7vw, 28px);
  background:
    radial-gradient(circle at 52% 15%, rgba(31, 91, 213, .38), transparent 38rem),
    radial-gradient(circle at 8% 88%, rgba(223, 64, 87, .13), transparent 28rem),
    linear-gradient(145deg, var(--bg-deep) 5%, var(--bg-mid) 56%, var(--bg-bright));
}
.game-app::before,
.campaign-board-background {
  position: fixed;
  z-index: -1;
  inset: 0;
  pointer-events: none;
  content: "";
  background:
    linear-gradient(rgba(85, 199, 255, .035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(85, 199, 255, .035) 1px, transparent 1px);
  background-size: 46px 46px;
  mask-image: linear-gradient(to bottom, #000 20%, transparent 95%);
}
.game-app::after {
  position: fixed;
  z-index: -1;
  inset: 0;
  pointer-events: none;
  content: "";
  background: radial-gradient(ellipse at center, transparent 28%, rgba(1, 5, 24, .46) 100%);
}
.board-glow { position: fixed; z-index: -1; inset: 5% 10% 18%; border-radius: 50%; background: rgba(50, 104, 255, .18); filter: blur(90px); pointer-events: none; }
.screen { width: min(1480px, 100%); min-width: 0; min-height: calc(100vh - clamp(32px, 3.4vw, 56px)); margin-inline: auto; }
.eyebrow { margin: 0 0 7px; color: var(--cyan); font-size: .65rem; font-weight: 900; letter-spacing: .16em; text-transform: uppercase; }
.empty-state { width: 100%; margin: 0; padding: 28px; color: var(--text-muted); border: 1px dashed var(--edge-soft); border-radius: var(--radius-card); background: rgba(5, 11, 36, .25); text-align: center; }

/* Metallic controls */
.button, .icon-button, .text-button {
  display: inline-flex;
  min-height: 46px;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 0 19px;
  color: var(--text);
  border: 1px solid rgba(126, 175, 244, .44);
  border-radius: 11px;
  background: linear-gradient(180deg, rgba(38, 72, 128, .96), rgba(13, 34, 77, .96));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.18), inset 0 -2px 0 rgba(0,0,0,.28), 0 8px 20px rgba(0,4,24,.3);
  font-weight: 850;
  line-height: 1.1;
  text-align: center;
  text-decoration: none;
  text-shadow: 0 1px 1px rgba(0,0,0,.3);
  transition: transform var(--ease), border-color var(--ease), filter var(--ease), box-shadow var(--ease), opacity var(--ease);
}
.button:hover:not(:disabled), .icon-button:hover:not(:disabled) { border-color: var(--cyan); filter: brightness(1.1); transform: translateY(-1px); }
.button-primary { border-color: #83dcff; background: linear-gradient(180deg, #4089ff, #2452d4 60%, #1738a7); box-shadow: inset 0 1px 0 rgba(255,255,255,.42), inset 0 -3px 0 rgba(6,22,90,.55), 0 0 20px rgba(50,104,255,.36); }
.button-secondary { background: linear-gradient(180deg, #284d83, #142a54); }
.button-ghost, .text-button { background: rgba(5, 13, 39, .34); box-shadow: inset 0 1px 0 rgba(255,255,255,.08); }
.button-danger { border-color: #ff8292; background: linear-gradient(180deg, #e9576c, #a91f3b); }
.button small { display: block; font-size: .61rem; font-weight: 650; opacity: .72; }
.button:disabled, .icon-button:disabled, .text-button:disabled, button[aria-disabled="true"] { opacity: .38; cursor: not-allowed; filter: grayscale(.35); box-shadow: none; transform: none; }
.icon-button { width: 44px; min-width: 44px; height: 44px; min-height: 44px; padding: 0; border-radius: 50%; font-size: 1.1rem; }
.text-button { min-height: 37px; padding-inline: 12px; font-size: .7rem; }

/* Intro screens */
.disclaimer-screen, .cover-screen, .counting-screen, .result-screen { display: grid; place-items: center; }
.disclaimer-card, .cover-card, .setup-form, .ticket-preview, .vice-layout > div, .counting-card, .result-card, .support-transfer, .negotiation-card {
  border: 1px solid var(--edge-soft);
  background: linear-gradient(145deg, rgba(16, 42, 88, .94), rgba(5, 16, 39, .97));
  box-shadow: var(--shadow-deep), inset 0 1px 0 rgba(120, 211, 255, .15);
}
.disclaimer-card {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(300px, .8fr);
  gap: clamp(28px, 5vw, 72px);
  width: min(1020px, 100%);
  padding: clamp(34px, 5vw, 68px);
  border-radius: 22px;
}
.disclaimer-card h2 { max-width: 14ch; font-size: clamp(2.4rem, 5vw, 4.9rem); }
.disclaimer-content { align-self: end; padding: 22px; border: 1px solid var(--edge-soft); border-radius: var(--radius-panel); background: rgba(4, 12, 34, .62); }
.disclaimer-content p { margin: 0; color: var(--text-muted); font-size: .86rem; }
.disclaimer-content p + p { margin-top: 12px; }
.disclaimer-content .button { width: 100%; margin-top: 22px; }
.cover-screen { perspective:1200px; }
.cover-glow { position:absolute;width:min(88vw,78rem);height:min(74vw,58rem);border-radius:50%;background:radial-gradient(circle,rgba(17,125,106,.2),rgba(50,104,255,.2) 38%,transparent 70%);filter:blur(90px);pointer-events:none; }
.cover-card {
  position:relative;
  display:grid;
  grid-template-columns:minmax(0,1.18fr) minmax(320px,.72fr);
  width:min(1380px,100%);
  min-height:min(780px,calc(100vh - clamp(32px,3.4vw,56px)));
  align-content:center;
  padding:clamp(42px,5.5vw,78px);
  overflow:hidden;
  border-color:rgba(89,167,223,.56);
  border-radius:30px;
  background:#061631;
  box-shadow:0 38px 95px rgba(0,3,20,.64),inset 0 1px 0 rgba(178,229,255,.25),inset 0 0 0 1px rgba(16,90,111,.3);
  transform-style:preserve-3d;
}
.cover-art {
  position:absolute!important;
  z-index:0!important;
  inset:-2%;
  background-image:image-set(url("/assets/images/game-cover-brazil-command-center.webp") type("image/webp"),url("/assets/images/game-cover-brazil-command-center.png") type("image/png"));
  background-position:center;
  background-size:cover;
  filter:saturate(.96) contrast(1.04);
  transform:scale(1.025);
  animation:cover-drift 18s ease-in-out infinite alternate;
}
.cover-card::before {
  position:absolute;
  z-index:1;
  inset:0;
  content:"";
  background:
    linear-gradient(90deg,rgba(2,12,34,.97) 0%,rgba(3,16,44,.92) 31%,rgba(4,18,48,.5) 54%,rgba(3,13,36,.18) 72%,rgba(2,9,28,.45) 100%),
    linear-gradient(180deg,rgba(1,8,25,.42),transparent 26%,transparent 73%,rgba(1,7,22,.8));
  pointer-events:none;
}
.cover-card::after {
  position:absolute;
  z-index:2;
  inset:16px;
  border:1px solid rgba(112,198,231,.15);
  border-radius:22px;
  content:"";
  box-shadow:inset 0 0 64px rgba(1,8,25,.18);
  pointer-events:none;
}
.cover-card > *:not(.cover-art) { position:relative;z-index:3; }
.cover-card > .cover-overline,.cover-card > h2,.cover-lead,.cover-stages,.cover-credit { grid-column:1; }
.cover-overline { display:flex;align-items:center;gap:10px;margin:0;color:#72d8ff;font-size:.65rem;font-weight:900;letter-spacing:.15em;text-transform:uppercase; }
.cover-overline>span { position:relative;display:block;width:25px;height:17px;border:1px solid rgba(102,226,181,.52);transform:skewX(-17deg); }
.cover-overline>span::before { position:absolute;inset:4px;content:"";background:linear-gradient(135deg,#147b66 50%,#e8bb4d 50%); }
.cover-card h2 { max-width:7.25ch;margin-top:37px;font-size:clamp(4.1rem,8vw,7.9rem);line-height:.86;letter-spacing:-.065em;text-wrap:balance;text-transform:uppercase;text-shadow:0 10px 32px rgba(0,4,24,.55); }
.cover-card h2 span { display:block;color:#60cbff;text-shadow:0 0 34px rgba(65,172,255,.4); }
.cover-lead { max-width:43ch;margin:28px 0 0;color:#c3d3ef;font-size:clamp(.9rem,1.2vw,1.06rem);line-height:1.65;text-shadow:0 2px 10px rgba(0,4,24,.6); }
.cover-stages { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:min(600px,100%);margin:30px 0 0;padding:0;list-style:none; }
.cover-stages li { position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);gap:9px;align-items:center;padding-right:18px;color:#a9bddd; }
.cover-stages li:not(:last-child)::after { position:absolute;top:50%;right:6px;width:10px;height:1px;content:"";background:linear-gradient(90deg,var(--gold),transparent); }
.cover-stages span { display:grid;width:28px;height:28px;place-items:center;color:#07122b;border-radius:50%;background:var(--gold);box-shadow:0 0 18px rgba(240,191,74,.3);font-size:.54rem;font-weight:950; }
.cover-stages strong { font-size:.62rem;letter-spacing:.03em;white-space:nowrap; }
.cover-map-facts { position:absolute;top:38px;right:40px;display:flex;gap:8px; }
.cover-map-facts>span { display:grid;min-width:102px;padding:9px 11px;color:rgba(212,229,250,.76);border-top:1px solid rgba(102,226,181,.5);background:linear-gradient(180deg,rgba(2,16,40,.55),transparent);font-size:.49rem;letter-spacing:.04em;text-transform:uppercase; }
.cover-map-facts b { color:#ffe091;font-size:.95rem;line-height:1.1; }
.cover-scan-line { position:absolute;top:15%;right:7%;width:43%;height:1px;background:linear-gradient(90deg,transparent,rgba(112,224,255,.75),transparent);box-shadow:0 0 15px rgba(85,199,255,.5);animation:cover-scan 6s ease-in-out infinite; }
.cover-actions { display:grid;grid-column:2;grid-row:1 / span 5;align-self:end;gap:10px;margin:0 0 8px 30px;padding:19px;border:1px solid rgba(99,164,224,.5);border-radius:8px 20px 8px 20px;background:linear-gradient(155deg,rgba(5,19,49,.9),rgba(2,10,31,.78));box-shadow:0 22px 50px rgba(0,3,22,.56),inset 0 1px 0 rgba(176,227,255,.16),0 0 0 5px rgba(3,14,40,.25);backdrop-filter:blur(15px); }
.cover-actions::before { position:absolute;top:-1px;right:19px;left:19px;height:2px;content:"";background:linear-gradient(90deg,var(--success),var(--gold),var(--cyan));box-shadow:0 0 12px rgba(85,199,255,.35); }
.cover-actions-label { margin:0 2px 3px;color:#7f97c2;font-size:.55rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase; }
.cover-actions .button { width:100%;min-height:58px;border-radius:8px;font-size:.82rem; }
.cover-actions .button-primary { border-color:#78d9ff;background:linear-gradient(180deg,#397ff4,#1749bd 70%,#0e2e8d);box-shadow:inset 0 1px 0 rgba(255,255,255,.5),inset 0 -3px 0 rgba(2,17,72,.7),0 0 22px rgba(39,111,255,.38); }
.cover-actions .button-secondary { border-color:rgba(240,191,74,.46);background:linear-gradient(180deg,#274b7e,#132b55); }
.cover-actions .button-ghost { min-height:68px;flex-direction:column; }
.cover-credit { margin:46px 0 0;color:#7189b7;font-size:.59rem;letter-spacing:.03em; }
.cover-credit>span { margin-right:7px;color:var(--gold);font-size:.47rem; }
@keyframes cover-drift { from { transform:scale(1.025) translate3d(0,0,0); } to { transform:scale(1.065) translate3d(-.55%,.35%,0); } }
@keyframes cover-scan { 0%,100% { opacity:0;transform:translateY(0); } 20%,75% { opacity:.7; } 50% { opacity:1;transform:translateY(430px); } }

/* Setup and selection */
.challenges-screen, .setup-screen, .vice-screen, .runoff-screen { padding-block: 12px 42px; }
.screen-header { display: grid; grid-template-columns: auto minmax(0,1fr); gap: 18px; align-items: start; margin-bottom: 24px; }
.screen-header h2 { max-width: 20ch; font-size: clamp(2.5rem, 5vw, 4.8rem); }
.screen-header p:last-child { max-width: 66ch; margin: 10px 0 0; color: var(--text-muted); }
.challenge-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 13px; }
.challenge-card {
  display: grid;
  min-height: 198px;
  align-content: space-between;
  gap: 18px;
  padding: 21px;
  color: var(--text);
  border: 1px solid var(--edge-soft);
  border-radius: var(--radius-panel);
  background: linear-gradient(155deg, rgba(18,49,100,.98), rgba(5,16,39,.98));
  box-shadow: var(--shadow-panel);
  text-align: left;
  transition: transform var(--ease), border-color var(--ease), box-shadow var(--ease);
}
.challenge-card:hover:not(:disabled), .challenge-card.is-selected { border-color: var(--cyan); transform: translateY(-3px); box-shadow: var(--shadow-panel), 0 0 24px rgba(85,199,255,.18); }
.challenge-card.is-complete, .challenge-card.completed, .challenge-card[data-complete="true"] { border-color: var(--success); }
.challenge-number { color: var(--cyan); font-size: .69rem; font-weight: 900; letter-spacing: .16em; }
.challenge-card strong, .challenge-card small { display: block; }
.challenge-card strong { font-size: 1.3rem; }
.challenge-card small { margin-top: 8px; color: var(--text-muted); font-size: .75rem; line-height: 1.45; }
.challenge-difficulty { padding-top: 12px; color: var(--gold); border-top: 1px solid var(--edge-soft); font-size: .72rem; letter-spacing: .08em; }
.setup-form { padding: clamp(20px, 2.5vw, 36px); border-radius: 20px; }
.turn-limit-fieldset { margin: 0; padding: 0; border: 0; }
legend, .form-grid label > span, .compact-field > span { display: block; margin-bottom: 7px; color: var(--text-muted); font-size: .62rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.segmented-control { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; }
.segmented-control label { position: relative; }
.segmented-control input { position: absolute; opacity: 0; pointer-events: none; }
.segmented-control label > span { display: grid; min-height: 78px; align-content: center; padding: 13px; border: 1px solid var(--edge-soft); border-radius: var(--radius-card); background: rgba(4,12,34,.55); transition: var(--ease); }
.segmented-control input:checked + span { border-color: var(--cyan); background: rgba(39,100,204,.28); box-shadow: inset 0 0 0 1px var(--cyan), 0 0 18px rgba(85,199,255,.15); }
.segmented-control strong, .segmented-control small { display: block; }
.segmented-control small { margin-top: 4px; color: var(--text-muted); font-size: .68rem; }
.candidate-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin: 22px 0 14px; }
.candidate-toolbar p { margin: 0; color: var(--text-muted); font-size: .7rem; white-space: nowrap; }
.search-field { position: relative; display: block; width: min(520px,100%); }
.search-field > span[aria-hidden] { position: absolute; z-index: 1; top: 50%; left: 14px; transform: translateY(-50%); color: var(--cyan); }
.search-field input { padding-left: 40px; }
.search-field input, .form-grid input, .form-grid select, .compact-field select { width: 100%; min-height: 46px; padding: 0 13px; color: var(--text); border: 1px solid var(--edge-soft); border-radius: 9px; outline: 0; background: rgba(3,10,31,.76); }
.form-grid select, .compact-field select { appearance: none; padding-right: 38px; background-image: linear-gradient(45deg,transparent 50%,var(--cyan) 50%),linear-gradient(135deg,var(--cyan) 50%,transparent 50%); background-position: calc(100% - 17px) 52%,calc(100% - 12px) 52%; background-repeat:no-repeat; background-size:5px 5px; }
.search-field input:focus, .form-grid input:focus, .form-grid select:focus, .compact-field select:focus { border-color: var(--cyan); box-shadow: 0 0 0 3px rgba(85,199,255,.13); }
.candidate-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; }
.candidate-grid > .empty-state { grid-column: 1/-1; }
.candidate-card {
  --candidate-color: var(--blue);
  position: relative;
  display: grid;
  grid-template-columns: 72px minmax(0,1fr);
  gap: 13px;
  min-width: 0;
  min-height: 160px;
  padding: 14px;
  overflow: hidden;
  color: var(--text);
  border: 1px solid var(--edge-soft);
  border-radius: var(--radius-card);
  background: linear-gradient(145deg, rgba(18,49,100,.9), rgba(5,16,39,.96));
  box-shadow: var(--shadow-panel);
  text-align: left;
  transition: transform var(--ease), border-color var(--ease), box-shadow var(--ease);
}
.candidate-card::before { position:absolute; inset:0 auto 0 0; width:4px; content:""; background:var(--candidate-color); box-shadow:0 0 16px var(--candidate-color); }
.candidate-card:hover:not(:disabled) { border-color: color-mix(in srgb,var(--candidate-color),#fff 35%); transform: translateY(-3px); }
.candidate-card.is-selected, .candidate-card.selected, .candidate-card[aria-pressed="true"] { border-color: var(--candidate-color); transform: translateY(-4px); box-shadow: var(--shadow-panel), 0 0 0 2px var(--candidate-color), 0 0 28px color-mix(in srgb,var(--candidate-color),transparent 54%); }
.candidate-avatar, .candidate-portrait, .vice-avatar, .ticket-avatar {
  --candidate-color: var(--blue);
  display: grid;
  place-items: center;
  width: 68px;
  height: 68px;
  flex: 0 0 auto;
  overflow: hidden;
  color: #fff;
  border: 3px solid rgba(232,248,255,.88);
  border-radius: 50%;
  background: linear-gradient(145deg,var(--candidate-color),#08112f);
  box-shadow: 0 0 0 3px color-mix(in srgb,var(--candidate-color),transparent 42%), 0 0 22px color-mix(in srgb,var(--candidate-color),transparent 45%), inset 0 0 0 1px rgba(255,255,255,.28);
  font-weight: 900;
}
.candidate-avatar img, .candidate-portrait img, .vice-avatar img, .ticket-avatar img, .finalist-card img, .winner-ticket img { width:100%; height:100%; object-fit:cover; object-position:center 22%; }
.portrait-image { width:100%; height:100%; object-fit:cover; object-position:center 22%; }
.portrait-fallback,.portrait-placeholder { display:grid; width:100%; height:100%; place-items:center; font-size:.78rem; font-weight:900; }
:has(> .portrait-image) > .portrait-fallback { display:none; }
.candidate-card-copy { display:block; min-width:0; padding-right:40px; }
.candidate-card-copy strong, .candidate-card-copy small { display:block; }
.candidate-card-copy strong { margin-top:7px; overflow:hidden; font-size:1.02rem; text-overflow:ellipsis; white-space:nowrap; }
.candidate-card-copy small { margin-top:6px; color:var(--text-muted); font-size:.62rem; line-height:1.35; }
.candidate-party { display:inline-block; max-width:100%; overflow:hidden; padding:4px 7px; color:var(--cyan); border:1px solid rgba(85,199,255,.2); border-radius:999px; background:rgba(50,104,255,.13); font-size:.54rem; font-weight:850; text-overflow:ellipsis; white-space:nowrap; }
.candidate-poll { position:absolute; top:14px; right:14px; color:var(--gold); font-size:.72rem; font-weight:900; }
.candidate-card-custom .candidate-portrait { border-style:dashed; box-shadow:none; }
.candidate-card h3 { overflow:hidden; font-size:1.02rem; text-overflow:ellipsis; white-space:nowrap; }
.candidate-card p { margin:5px 0 0; color:var(--text-muted); font-size:.64rem; }
.candidate-card .candidate-meta, .candidate-card footer { display:flex; grid-column:1/-1; flex-wrap:wrap; justify-content:space-between; gap:7px; padding-top:9px; border-top:1px solid var(--edge-soft); font-size:.61rem; }
.candidate-stats, .candidate-attributes, .attribute-bars { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:3px; grid-column:1/-1; }
.candidate-stats span, .candidate-attributes span, .attribute-bars span { height:5px; border-radius:99px; background:rgba(160,190,235,.16); }
.candidate-stats span.is-filled, .candidate-attributes span.is-filled, .attribute-bars span.is-filled { background:var(--candidate-color); box-shadow:0 0 7px var(--candidate-color); }
.custom-candidate, .custom-form { margin-top:20px; padding:22px; border:1px solid var(--edge-soft); border-radius:var(--radius-panel); background:rgba(3,10,31,.5); }
.section-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; }
.section-heading h2 { font-size:1.65rem; }
.form-grid, .custom-form { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; }
.form-grid { margin-top:18px; padding:0; border:0; background:none; }
.form-grid label { display:grid; min-width:0; }
.form-grid input[type="color"] { min-height:46px; padding:5px; }
.custom-candidate > .button { margin-top:17px; }
.setup-footer { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-top:22px; padding-top:18px; border-top:1px solid var(--edge-soft); }
.setup-footer p { margin:0; color:var(--text-muted); font-size:.72rem; }

/* Vice selection */
.vice-layout { display:grid; grid-template-columns:minmax(230px,.5fr) minmax(0,1.5fr); gap:16px; align-items:start; }
.ticket-preview { position:sticky; top:18px; padding:25px; border-radius:var(--radius-panel); text-align:center; }
.ticket-avatar { width:96px; height:96px; margin:18px auto 13px; }
.ticket-preview h2 { font-size:1.45rem; }
.ticket-preview > p:last-child { margin:6px 0 0; color:var(--text-muted); font-size:.72rem; }
.vice-layout > div { min-width:0; padding:22px; border-radius:var(--radius-panel); }
.vice-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:11px; }
.vice-grid > .empty-state { grid-column:1/-1; }
.vice-card { --candidate-color:var(--blue); display:grid; grid-template-columns:58px minmax(0,1fr); gap:11px; min-width:0; min-height:120px; align-items:center; padding:14px; color:var(--text); border:1px solid var(--edge-soft); border-radius:var(--radius-card); background:rgba(4,13,39,.64); text-align:left; transition:var(--ease); }
.vice-card:hover, .vice-card.is-selected, .vice-card.selected, .vice-card[aria-pressed="true"] { border-color:var(--candidate-color); transform:translateY(-2px); box-shadow:0 0 20px color-mix(in srgb,var(--candidate-color),transparent 62%); }
.vice-avatar { width:56px; height:56px; }
.vice-card h3 { overflow:hidden; font-size:.93rem; text-overflow:ellipsis; white-space:nowrap; }
.vice-card p, .vice-card small { display:block; margin:5px 0 0; color:var(--text-muted); font-size:.61rem; line-height:1.35; }

/* Campaign HUD */
.campaign-screen { width:100%; max-width:1480px; padding-bottom:112px; }
.campaign-header {
  position:sticky;
  z-index:30;
  top:8px;
  display:grid;
  grid-template-columns:minmax(240px,1.2fr) minmax(200px,.8fr) minmax(410px,1.55fr) auto;
  gap:12px;
  align-items:center;
  min-height:96px;
  padding:8px 13px 30px;
  border:1px solid rgba(106,165,242,.54);
  border-radius:var(--radius-panel);
  background:linear-gradient(180deg,rgba(17,46,98,.95),rgba(4,15,41,.96));
  box-shadow:0 18px 40px rgba(0,3,19,.5),inset 0 1px 0 rgba(147,219,255,.25),inset 0 -3px 0 rgba(0,0,0,.22);
  backdrop-filter:blur(18px);
}
.campaign-header::after { position:absolute; right:12%; bottom:-1px; left:12%; height:2px; content:""; background:linear-gradient(90deg,transparent,var(--cyan),transparent); box-shadow:0 0 13px var(--cyan); }
.campaign-identity { display:flex; min-width:0; align-items:center; gap:12px; }
.campaign-identity > div:last-child { min-width:0; }
.campaign-identity .candidate-avatar { width:58px; height:58px; }
.campaign-identity .eyebrow { margin-bottom:3px; font-size:.51rem; }
.campaign-identity h2 { overflow:hidden; font-size:1rem; text-overflow:ellipsis; white-space:nowrap; }
.campaign-identity p:last-child { margin:4px 0 0; overflow:hidden; color:var(--text-muted); font-size:.59rem; text-overflow:ellipsis; white-space:nowrap; }
.turn-status { min-width:100px; padding:9px 13px; border:1px solid var(--edge-soft); border-radius:999px; background:rgba(3,11,34,.55); text-align:center; }
.turn-status > span, .turn-status small { display:block; color:var(--text-muted); font-size:.52rem; font-weight:750; text-transform:uppercase; }
.turn-status strong { display:block; margin:2px 0; color:var(--cyan); font-size:1.03rem; }
.turn-track { position:absolute; right:14px; bottom:4px; left:14px; display:grid; grid-template-columns:auto minmax(180px,1fr); gap:12px; align-items:center; min-width:160px; height:23px; padding:0 5px; }
.turn-track-line { position:relative; height:9px; overflow:hidden; border:1px solid var(--edge); border-radius:999px; background:#030a20; box-shadow:inset 0 2px 4px rgba(0,0,0,.6); }
.turn-track-rail { position:relative; height:10px; border:1px solid var(--edge); border-radius:999px; background:repeating-linear-gradient(90deg,transparent 0 calc(10% - 1px),rgba(255,255,255,.2) calc(10% - 1px) 10%),#030a20; box-shadow:inset 0 2px 4px rgba(0,0,0,.6),0 0 10px rgba(85,199,255,.15); }
.turn-track-progress { width:var(--turn-progress,0%); height:100%; border-radius:inherit; background:linear-gradient(90deg,var(--cyan),var(--blue)); box-shadow:0 0 13px var(--cyan); transition:width 500ms ease; }
.turn-track-marker { position:absolute; top:50%; width:10px; height:10px; border:2px solid #d9efff; border-radius:50%; background:#153d83; box-shadow:0 0 8px var(--cyan); transform:translate(-50%,-50%); }
.turn-track-marker-start { left:0; }.turn-track-marker-debate { left:50%; }.turn-track-marker-finish { left:100%;background:var(--red);box-shadow:0 0 9px var(--red); }
.turn-track-labels { display:flex; grid-column:2; justify-content:space-between; margin-top:-7px; color:var(--text-faint); font-size:.45rem; font-weight:750; text-transform:uppercase; }
.turn-track .turn-status { display:flex;min-width:150px;align-items:center;justify-content:center;gap:5px;padding:4px 10px; }.turn-track .turn-status>span,.turn-track .turn-status small { display:inline; }.turn-track .turn-status strong { display:inline;margin:0; }
.race-scoreboard { min-width:0; }
.race-scoreboard-heading { display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:5px;color:var(--text-muted);font-size:.48rem;font-weight:800;text-transform:uppercase; }
.race-scoreboard-heading small { color:var(--text-faint);font-size:.44rem; }
.race-scoreboard-list, [data-top-ranking] { display:flex; min-width:0; align-items:center; justify-content:center; gap:5px; }
.race-scoreboard-list > *, [data-top-ranking] > * { min-width:0; }
.race-candidate { --candidate-color:var(--blue); display:grid; grid-template-columns:auto 30px minmax(45px,1fr) auto; gap:5px; align-items:center; min-width:105px; padding:4px 7px; border:1px solid var(--edge-soft); border-radius:999px; background:linear-gradient(180deg,rgba(31,68,128,.8),rgba(5,17,47,.9)); box-shadow:inset 0 1px 0 rgba(255,255,255,.12); }
.race-candidate .race-position { color:var(--gold);font-size:.48rem;font-weight:900; }.race-candidate i { display:grid;width:28px;height:28px;place-items:center;overflow:hidden;border:2px solid #eaf7ff;border-radius:50%;background:var(--candidate-color);box-shadow:0 0 8px color-mix(in srgb,var(--candidate-color),transparent 35%);font-style:normal; }.race-candidate i img { width:100%;height:100%;object-fit:cover;object-position:center 22%; }.race-candidate b { overflow:hidden;font-size:.55rem;text-overflow:ellipsis;white-space:nowrap; }.race-candidate strong { color:var(--cyan);font-size:.67rem;white-space:nowrap; }.race-candidate.is-loading { opacity:.55; }
.resource-list { display:grid; grid-template-columns:repeat(4,minmax(78px,1fr)); gap:6px; min-width:0; margin:0; }
.resource-list > div { position:relative; min-width:0; padding:9px 10px; overflow:hidden; border:1px solid var(--edge-soft); border-radius:9px; background:linear-gradient(180deg,rgba(31,68,128,.78),rgba(7,22,53,.78)); box-shadow:inset 0 1px 0 rgba(255,255,255,.1); }
.resource-list > div::before { position:absolute; inset:0 auto 0 0; width:3px; content:""; background:var(--cyan); box-shadow:0 0 10px var(--cyan); }
.resource-list > div:nth-child(2)::before { background:var(--gold); box-shadow:0 0 10px var(--gold); }
.resource-list > div:nth-child(3)::before { background:var(--success); box-shadow:0 0 10px var(--success); }
.resource-list > div:nth-child(4)::before { background:var(--red); box-shadow:0 0 10px var(--red); }
.resource-list dt { overflow:hidden; color:var(--text-muted); font-size:.49rem; font-weight:800; letter-spacing:.05em; text-overflow:ellipsis; text-transform:uppercase; white-space:nowrap; }
.resource-list dd { margin:3px 0 0; overflow:hidden; font-size:.8rem; text-overflow:ellipsis; white-space:nowrap; }
.resource-list small { color:var(--text-faint); font-size:.55rem; }
.campaign-menu { display:flex; align-items:center; gap:4px; }
.campaign-menu .icon-button { width:39px; min-width:39px; height:39px; min-height:39px; }
.campaign-menu .text-button { color:var(--text-muted); }

/* Main strategy board */
.campaign-workspace { position:relative; min-width:0; padding-top:14px; }
.board-grid { display:grid; grid-template-columns:minmax(0,2fr) minmax(300px,.68fr); gap:14px; min-width:0; padding-top:14px; }
.campaign-panel {
  min-width:0;
  padding:clamp(17px,2vw,25px);
  color:var(--text);
  border:1px solid rgba(96,145,214,.48);
  border-radius:var(--radius-panel);
  background:linear-gradient(150deg,rgba(12,35,77,.95),rgba(4,14,38,.96));
  box-shadow:var(--shadow-panel),var(--shadow-glow);
}
.panel-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; }
.panel-heading h2 { font-size:clamp(1.55rem,2.4vw,2.35rem); }
.panel-heading h3 { font-size:1.05rem; }
.status-pill, .fiction-label, .action-counter { display:inline-flex; flex:0 0 auto; min-height:27px; align-items:center; padding:5px 9px; color:var(--cyan); border:1px solid var(--edge-soft); border-radius:999px; background:rgba(5,15,44,.68); font-size:.55rem; font-weight:850; letter-spacing:.05em; text-transform:uppercase; }
.action-counter { color:#fff; border-color:#78d4ff; background:linear-gradient(180deg,#377de7,#204aad); }
.action-counter strong { margin-right:4px; }
.summary-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px; margin-top:18px; }
.summary-grid article { min-width:0; min-height:108px; padding:15px; border:1px solid var(--edge-soft); border-radius:var(--radius-card); background:linear-gradient(155deg,rgba(25,61,119,.6),rgba(4,14,40,.72)); box-shadow:inset 0 1px 0 rgba(141,216,255,.12); }
.summary-grid span,.summary-grid strong,.summary-grid small { display:block; }
.summary-grid span { color:var(--text-muted); font-size:.58rem; font-weight:800; text-transform:uppercase; }
.summary-grid strong { margin-top:10px; color:var(--cyan); font-size:clamp(1.05rem,1.7vw,1.45rem); }
.summary-grid small { margin-top:6px; color:var(--text-faint); font-size:.59rem; }
.weekly-plan { margin-top:12px; padding:16px; border:1px solid var(--edge-soft); border-radius:var(--radius-card); background:rgba(4,13,38,.55); }
.weekly-plan .panel-heading > span { color:var(--text-muted); font-size:.62rem; }
.weekly-plan ol { display:grid; gap:6px; margin:12px 0 0; padding-left:21px; color:var(--text-muted); font-size:.69rem; }
.notification-list { display:grid; gap:7px; margin-top:11px; }
.notification,.notification-list>* { padding:10px 12px; border-left:3px solid var(--cyan); border-radius:7px; background:rgba(26,66,126,.34); font-size:.66rem; }

/* Electoral map */
.map-panel { position:relative; min-height:clamp(560px,calc(100vh - 235px),830px); overflow:hidden; padding:18px; }
.map-panel::before,.map-board-surface::before { position:absolute; inset:0; pointer-events:none; content:""; background:radial-gradient(circle at 48% 45%,rgba(50,104,255,.24),transparent 52%); }
.map-stage,.map-board-surface { position:relative; min-height:0; }
.map-stage { display:grid; grid-template-rows:auto minmax(0,1fr); height:100%; }
.map-stage-header { position:relative; z-index:3; display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px;color:var(--text-muted);font-size:.55rem;font-weight:750;text-transform:uppercase; }
.map-stage-status { display:inline-flex;align-items:center;gap:6px; }.map-stage-status i { width:7px;height:7px;border-radius:50%;background:var(--success);box-shadow:0 0 9px var(--success); }
.map-stage-caption { display:flex;align-items:center;justify-content:center;gap:7px;margin:7px 0 0;color:var(--text-faint);font-size:.56rem; }.map-stage-caption span { color:var(--cyan); }
.compact-field { display:grid; min-width:176px; }
.compact-field > span { margin-bottom:4px; }
.compact-field select { min-height:38px; font-size:.65rem; }
.map-layout { position:relative; display:grid; grid-template-columns:minmax(0,3fr) minmax(220px,.72fr); gap:15px; align-items:start; min-height:470px; margin-top:14px; }
.map-board-surface { display:grid; min-height:470px; place-items:center; padding:12px; border:1px solid rgba(85,199,255,.12); border-radius:12px; background:radial-gradient(ellipse at center,rgba(24,77,176,.38),rgba(3,10,35,.42) 68%,rgba(2,8,26,.72)); box-shadow:inset 0 0 55px rgba(1,6,28,.62); }
.map-board-grid { position:absolute;inset:0;border-radius:inherit;background:linear-gradient(rgba(85,199,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(85,199,255,.035) 1px,transparent 1px);background-size:30px 30px;mask-image:radial-gradient(circle,#000,transparent 84%);pointer-events:none; }
.brazil-map {
  position:relative;
  z-index:1;
  display:grid;
  grid-template-columns:repeat(11,minmax(38px,1fr));
  grid-template-rows:repeat(11,minmax(34px,1fr));
  gap:4px;
  width:min(100%,820px);
  min-width:0;
  aspect-ratio:1.35;
  padding:12px;
  filter:drop-shadow(0 22px 26px rgba(0,1,17,.42));
}
.brazil-map>.empty-state { grid-column:1/-1; }
.state-button {
  --state-color:#365999;
  position:relative;
  display:grid;
  place-items:center;
  width:100%;
  min-width:0;
  aspect-ratio:1;
  padding:2px;
  color:#fff;
  border:2px solid rgba(224,241,255,.78);
  border-radius:7px;
  background:linear-gradient(145deg,color-mix(in srgb,var(--state-color),#fff 14%),color-mix(in srgb,var(--state-color),#07152e 15%));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.38),inset 0 -4px 0 rgba(0,0,0,.18),0 4px 10px rgba(0,0,0,.28);
  text-shadow:0 1px 2px rgba(0,0,0,.65);
  font-size:clamp(.52rem,.68vw,.66rem);
  font-weight:950;
  transition:transform var(--ease),filter var(--ease),box-shadow var(--ease),border-color var(--ease);
}
.state-button:hover:not(:disabled),.state-button:focus-visible { z-index:4; filter:saturate(1.18) brightness(1.12); transform:translateY(-3px) scale(1.08); box-shadow:0 0 0 2px var(--cyan),0 9px 18px rgba(0,4,30,.55),0 0 18px rgba(85,199,255,.34); }
.state-button.is-selected,.state-button[aria-pressed="true"] { z-index:5; border:3px solid #fff; transform:translateY(-2px) scale(1.07); box-shadow:0 0 0 3px var(--cyan),0 0 24px rgba(85,199,255,.72),inset 0 0 10px rgba(255,255,255,.25); }
.state-button.is-led,.state-button.is-player-led,.state-button[data-player-led="true"] { box-shadow:0 0 0 2px rgba(85,199,255,.72),0 0 18px color-mix(in srgb,var(--state-color),transparent 30%),inset 0 1px 0 rgba(255,255,255,.5); }
.state-button.is-battleground,.state-button[data-battleground="true"] { animation:battlegroundPulse 2.2s ease-in-out infinite; }
.state-button.is-targeted,.state-button[data-targeted="true"] { box-shadow:0 0 0 3px var(--gold),0 0 24px rgba(240,191,74,.62); }
.state-button:disabled { opacity:.35; cursor:not-allowed; }
.state-button small,.state-button .state-share { position:absolute; right:3px; bottom:2px; color:rgba(255,255,255,.8); font-size:.43rem; }
@keyframes battlegroundPulse { 0%,100%{filter:brightness(1);box-shadow:0 0 0 1px rgba(240,191,74,.28),0 0 8px rgba(240,191,74,.1)} 50%{filter:brightness(1.16);box-shadow:0 0 0 2px var(--gold),0 0 19px rgba(240,191,74,.5)} }
.state-button:is([data-uf="RR"],[data-state="RR"]),.state-button[data-state-uf="RR"]{grid-area:1/3}.state-button:is([data-uf="AP"],[data-state="AP"]),.state-button[data-state-uf="AP"]{grid-area:1/7}.state-button:is([data-uf="AM"],[data-state="AM"]),.state-button[data-state-uf="AM"]{grid-area:2/2}.state-button:is([data-uf="PA"],[data-state="PA"]),.state-button[data-state-uf="PA"]{grid-area:2/5}.state-button:is([data-uf="MA"],[data-state="MA"]),.state-button[data-state-uf="MA"]{grid-area:3/7}.state-button:is([data-uf="CE"],[data-state="CE"]),.state-button[data-state-uf="CE"]{grid-area:3/9}.state-button:is([data-uf="RN"],[data-state="RN"]),.state-button[data-state-uf="RN"]{grid-area:3/11}.state-button:is([data-uf="PB"],[data-state="PB"]),.state-button[data-state-uf="PB"]{grid-area:4/11}.state-button:is([data-uf="PE"],[data-state="PE"]),.state-button[data-state-uf="PE"]{grid-area:4/10}.state-button:is([data-uf="AL"],[data-state="AL"]),.state-button[data-state-uf="AL"]{grid-area:5/10}.state-button:is([data-uf="SE"],[data-state="SE"]),.state-button[data-state-uf="SE"]{grid-area:6/10}.state-button:is([data-uf="BA"],[data-state="BA"]),.state-button[data-state-uf="BA"]{grid-area:5/8}.state-button:is([data-uf="PI"],[data-state="PI"]),.state-button[data-state-uf="PI"]{grid-area:4/8}.state-button:is([data-uf="AC"],[data-state="AC"]),.state-button[data-state-uf="AC"]{grid-area:4/1}.state-button:is([data-uf="RO"],[data-state="RO"]),.state-button[data-state-uf="RO"]{grid-area:4/3}.state-button:is([data-uf="TO"],[data-state="TO"]),.state-button[data-state-uf="TO"]{grid-area:4/6}.state-button:is([data-uf="MT"],[data-state="MT"]),.state-button[data-state-uf="MT"]{grid-area:5/4}.state-button:is([data-uf="GO"],[data-state="GO"]),.state-button[data-state-uf="GO"]{grid-area:6/5}.state-button:is([data-uf="DF"],[data-state="DF"]),.state-button[data-state-uf="DF"]{grid-area:6/6}.state-button:is([data-uf="MS"],[data-state="MS"]),.state-button[data-state-uf="MS"]{grid-area:7/4}.state-button:is([data-uf="MG"],[data-state="MG"]),.state-button[data-state-uf="MG"]{grid-area:7/7}.state-button:is([data-uf="ES"],[data-state="ES"]),.state-button[data-state-uf="ES"]{grid-area:7/9}.state-button:is([data-uf="RJ"],[data-state="RJ"]),.state-button[data-state-uf="RJ"]{grid-area:8/8}.state-button:is([data-uf="SP"],[data-state="SP"]),.state-button[data-state-uf="SP"]{grid-area:8/6}.state-button:is([data-uf="PR"],[data-state="PR"]),.state-button[data-state-uf="PR"]{grid-area:9/5}.state-button:is([data-uf="SC"],[data-state="SC"]),.state-button[data-state-uf="SC"]{grid-area:10/5}.state-button:is([data-uf="RS"],[data-state="RS"]),.state-button[data-state-uf="RS"]{grid-area:11/4}
.state-summary { position:sticky; top:112px; padding:17px; border:1px solid var(--edge-soft); border-radius:var(--radius-card); background:linear-gradient(155deg,rgba(22,57,111,.9),rgba(4,14,38,.95)); box-shadow:var(--shadow-panel); }
.state-summary h3 { font-size:1.38rem; }
.state-summary>p:not(.eyebrow) { margin:8px 0 0; color:var(--text-muted); font-size:.69rem; }
.state-summary dl { display:grid; gap:8px; margin:14px 0 0; }
.state-summary dl>div { display:flex; align-items:center; justify-content:space-between; gap:9px; padding-top:8px; border-top:1px solid var(--edge-soft); }
.state-summary dt { color:var(--text-muted); font-size:.62rem; }
.state-summary dd { margin:0; color:var(--cyan); font-size:.68rem; font-weight:850; text-align:right; }

/* Rankings */
.ranking-layout { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:18px; }
.ranking-card,.attribute-card { min-width:0; padding:17px; border:1px solid var(--edge-soft); border-radius:var(--radius-card); background:rgba(4,13,38,.62); }
.ranking-card h3,.attribute-card h3 { font-size:1.08rem; }
.ranking-card>p { margin:6px 0 0; color:var(--text-muted); font-size:.65rem; }
.ranking-list { display:grid; gap:6px; margin:13px 0 0; padding:0; list-style:none; }
.ranking-row,.ranking-item { --candidate-color:var(--blue); display:grid; grid-template-columns:22px minmax(80px,1fr) minmax(75px,1.25fr) 40px; gap:7px; align-items:center; font-size:.64rem; }
.ranking-row b,.ranking-item b { overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ranking-track,.attribute-track,[data-player-attributes]>div>i { height:7px; overflow:hidden; border-radius:99px; background:rgba(130,165,220,.18); }
.ranking-fill,.attribute-fill,[data-player-attributes]>div>i>span { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,var(--blue),var(--cyan)); box-shadow:0 0 8px rgba(85,199,255,.5); }
.ranking-value { font-weight:850;text-align:right; }
.ranking-row.is-player,.ranking-item.is-player,[data-national-ranking]>li.is-player { background:rgba(50,104,255,.18); }
[data-national-ranking]>li { display:grid; grid-template-columns:22px 32px minmax(0,1fr) auto; gap:8px; align-items:center; min-width:0; padding:6px; border-radius:8px; font-size:.65rem; }
[data-national-ranking]>li>i { display:grid; place-items:center; width:32px; height:32px; color:#fff; border:2px solid rgba(255,255,255,.7); border-radius:50%; background:var(--candidate-color); font-size:.52rem; font-style:normal; font-weight:850; }
[data-national-ranking]>li>b { overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
[data-national-ranking]>li>b small { display:block;color:var(--text-muted);font-size:.51rem;font-weight:600; }
[data-national-ranking]>li>em,[data-state-ranking]>li>em { font-style:normal;font-weight:850;text-align:right; }
[data-state-ranking]>li,.counting-ranking>li { display:grid; grid-template-columns:22px minmax(0,1fr) auto; gap:8px; align-items:center; padding:7px; border-bottom:1px solid var(--edge-soft); font-size:.66rem; }
.attribute-card { margin-top:12px; }
.attribute-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px 17px; margin-top:14px; }
[data-player-attributes]>div>span,[data-player-attributes]>div>strong { display:inline-block;margin-bottom:5px;font-size:.61rem; }
[data-player-attributes]>div>span { max-width:calc(100% - 35px);overflow:hidden;color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap; }
[data-player-attributes]>div>strong { float:right; }

/* Horizontal action deck */
.panel-intro { max-width:72ch; margin:9px 0 15px; color:var(--text-muted); font-size:.7rem; }
.action-grid {
  display:flex;
  gap:10px;
  min-width:0;
  padding:4px 3px 13px;
  overflow-x:auto;
  overflow-y:hidden;
  scroll-snap-type:x proximity;
  scrollbar-width:thin;
  scrollbar-color:var(--cyan) rgba(4,13,38,.7);
}
.action-grid::-webkit-scrollbar { height:7px; }
.action-grid::-webkit-scrollbar-track { border-radius:99px;background:rgba(4,13,38,.7); }
.action-grid::-webkit-scrollbar-thumb { border-radius:99px;background:linear-gradient(90deg,var(--blue),var(--cyan)); }
.action-grid>.empty-state { min-width:100%; }
.action-card {
  --action-color:var(--blue);
  display:grid;
  grid-template-rows:auto auto 1fr auto;
  flex:0 0 clamp(210px,18vw,250px);
  gap:9px;
  min-width:210px;
  min-height:205px;
  align-content:start;
  padding:12px;
  overflow:hidden;
  color:var(--text);
  border:1px solid var(--edge-soft);
  border-radius:var(--radius-card);
  background:linear-gradient(155deg,color-mix(in srgb,var(--action-color),#102a58 78%),#06112b 70%);
  box-shadow:0 10px 23px rgba(0,3,20,.38),inset 0 1px 0 rgba(255,255,255,.13);
  text-align:left;
  scroll-snap-align:start;
  transition:var(--ease);
}
.action-card:hover:not(:has(button:disabled)) { border-color:color-mix(in srgb,var(--action-color),#fff 40%); transform:translateY(-4px); box-shadow:0 16px 30px rgba(0,3,20,.48),0 0 19px color-mix(in srgb,var(--action-color),transparent 66%); }
.action-card.is-rare { border-color:var(--gold); background:linear-gradient(155deg,rgba(110,79,19,.78),#06112b 72%); box-shadow:0 0 18px rgba(240,191,74,.2); }
.action-card:has(button:disabled),.action-card.is-locked,.action-card[aria-disabled="true"] { opacity:.43; filter:grayscale(.25); }
.action-card>div:first-child>small { color:var(--cyan); font-size:.55rem; font-weight:850; letter-spacing:.06em; text-transform:uppercase; }
.action-card>div:first-child h3 { margin-top:5px;font-size:.98rem; }
.action-card>dl { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:5px; margin:auto 0 0; }
.action-card>dl>div { padding:7px;border:1px solid rgba(102,146,218,.2);border-radius:7px;background:rgba(2,9,30,.54); }
.action-card>dl dt { color:var(--text-muted);font-size:.49rem;text-transform:uppercase; }
.action-card>dl dd { margin:2px 0 0;font-size:.63rem;font-weight:850; }
.action-icon { display:grid; place-items:center;width:40px;height:40px;color:#fff;border:2px solid rgba(255,255,255,.72);border-radius:50%;background:var(--action-color);box-shadow:0 0 13px color-mix(in srgb,var(--action-color),transparent 38%);font-size:.7rem;font-weight:900; }
.action-card h3,.action-card strong { display:block;overflow:hidden;font-size:.8rem;text-overflow:ellipsis; }
.action-card p,.action-card small { display:block;margin:4px 0 0;color:var(--text-muted);font-size:.6rem;line-height:1.35; }
.action-cost { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:5px; padding-top:7px; border-top:1px solid var(--edge-soft); color:var(--text-muted); font-size:.56rem; }
.button-action { width:100%; min-height:37px; padding-inline:11px; font-size:.63rem; }
.special-actions { display:flex; justify-content:flex-end; gap:9px; margin-top:13px; padding-top:13px; border-top:1px solid var(--edge-soft); }
.special-actions .button small { display:inline;margin-left:3px; }
.action-deck-shell { min-width:0; flex:1; margin-right:12px; padding:8px 10px 0; overflow:hidden; border:1px solid var(--edge-soft); border-radius:var(--radius-panel); background:rgba(4,14,39,.92); box-shadow:var(--shadow-panel); backdrop-filter:blur(16px); }
.action-deck-shell { display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;padding:7px 9px; }
.action-deck-label,.action-deck-panel-label { display:flex;align-items:center;gap:8px;color:var(--text-muted);font-size:.56rem;letter-spacing:.04em; }
.action-deck-label strong,.action-deck-label small,.action-deck-panel-label strong,.action-deck-panel-label small { display:block; }.action-deck-label strong,.action-deck-panel-label strong { color:var(--text);font-size:.58rem;text-transform:uppercase; }.action-deck-label small,.action-deck-panel-label small { margin-top:2px;color:var(--text-faint);font-size:.49rem; }
.deck-stack-icon,.action-deck-panel-label>span:first-child { display:grid;width:34px;height:34px;place-items:center;color:var(--cyan);border:1px solid var(--edge-soft);border-radius:8px;background:rgba(50,104,255,.16);font-size:1rem; }
.action-deck-panel { padding:10px;border:1px solid var(--edge-soft);border-radius:var(--radius-card);background:rgba(3,11,34,.46); }.action-deck-panel-label { margin:1px 2px 9px; }
.turn-command { display:flex;align-items:center;gap:9px; }.turn-command>span { color:var(--text-faint);font-size:.5rem;font-weight:800;text-transform:uppercase; }

/* News */
.news-feed { display:grid;gap:8px;margin-top:16px; }
.feed-item { position:relative;padding:15px 17px 15px 21px;border:1px solid var(--edge-soft);border-radius:var(--radius-card);background:rgba(4,13,38,.6); }
.feed-item::before { position:absolute;top:15px;bottom:15px;left:8px;width:3px;border-radius:99px;content:"";background:var(--red);box-shadow:0 0 9px var(--red); }
.feed-source { display:block;color:var(--cyan);font-size:.57rem;font-weight:750; }
.feed-item h3 { margin-top:6px;font-size:.94rem; }
.feed-item p { margin:6px 0 0;color:var(--text-muted);font-size:.67rem; }
.feed-change { color:var(--success);font-weight:850; }

/* Fixed game controls */
.campaign-footer { position:fixed;z-index:40;right:clamp(16px,1.7vw,28px);bottom:clamp(13px,1.5vw,22px);left:clamp(16px,1.7vw,28px);display:flex;width:min(1480px,calc(100% - clamp(32px,3.4vw,56px)));align-items:flex-end;justify-content:flex-end;margin-inline:auto;pointer-events:none; }
.campaign-footer>* { pointer-events:auto; }
.mobile-tabs { display:flex;gap:3px;margin-right:auto;padding:5px;border:1px solid var(--edge-soft);border-radius:var(--radius-panel);background:rgba(4,14,39,.94);box-shadow:var(--shadow-panel);backdrop-filter:blur(16px); }
.mobile-tab { display:inline-flex;min-height:42px;align-items:center;gap:5px;padding:0 11px;color:var(--text-muted);border:1px solid transparent;border-radius:9px;background:transparent;font-size:.62rem;font-weight:800; }
.mobile-tab>span { color:var(--cyan);font-size:.85rem; }
.mobile-tab.is-active,.mobile-tab[aria-selected="true"] { color:#fff;border-color:rgba(85,199,255,.48);background:linear-gradient(180deg,#316cd0,#173a8f);box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 0 14px rgba(50,104,255,.25); }
.end-turn-button { min-width:178px;min-height:56px;border-radius:28px;box-shadow:inset 0 1px 0 rgba(255,255,255,.45),inset 0 -4px 0 rgba(4,22,82,.6),0 0 28px rgba(50,104,255,.55); }

/* Modal decisions */
.modal-layer { position:fixed;z-index:1000;inset:0;display:grid;place-items:center;padding:17px; }
.modal-backdrop { position:absolute;inset:0;background:rgba(1,5,20,.84);backdrop-filter:blur(10px); }
.game-modal,.modal-dialog,.dialog { position:relative;z-index:1;width:min(650px,100%);max-height:min(800px,calc(100vh - 34px));overflow:auto;color:var(--text);border:1px solid rgba(106,165,242,.56);border-radius:var(--radius-panel);background:linear-gradient(155deg,#102b5a,#050f2a 64%);box-shadow:0 32px 90px rgba(0,2,18,.75),inset 0 1px 0 rgba(151,220,255,.2); }
.modal-header { position:sticky;z-index:2;top:0;display:flex;align-items:flex-start;justify-content:space-between;gap:17px;padding:20px 22px 15px;border-bottom:1px solid var(--edge-soft);background:rgba(7,21,46,.96);backdrop-filter:blur(14px); }
.modal-header h2 { font-size:clamp(1.55rem,3vw,2.25rem); }
.modal-body { padding:20px 22px; }
.modal-body>p:first-child { margin:0;color:var(--text-muted); }
.modal-context { margin-top:14px; }
.modal-options { display:grid;gap:8px;margin-top:15px; }
.modal-option,.response-option,.target-option { display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;min-width:0;min-height:56px;padding:10px 12px;color:var(--text);border:1px solid var(--edge-soft);border-radius:9px;background:rgba(4,14,40,.72);text-align:left;transition:var(--ease); }
.modal-option:hover,.modal-option.is-selected,.modal-option[aria-pressed="true"],.response-option:hover,.response-option.is-selected,.target-option:hover,.target-option.is-selected { border-color:var(--cyan);background:rgba(31,84,167,.36);box-shadow:0 0 16px rgba(85,199,255,.13); }
.modal-option small,.response-option small,.target-option small { color:var(--text-muted); }
.modal-result { margin-top:16px;padding:18px;border:1px solid var(--edge-soft);border-radius:var(--radius-card);background:rgba(4,14,40,.72);text-align:center; }
.modal-result h3 { font-size:1.35rem; }
.modal-result p { margin:8px 0 0;color:var(--text-muted);font-size:.71rem; }
.modal-actions { position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:9px;padding:14px 22px 20px;border-top:1px solid var(--edge-soft);background:rgba(7,21,46,.96); }
.risk-meter { display:grid;grid-template-columns:1fr 4fr;height:12px;margin:14px 0 6px;overflow:hidden;border-radius:99px; }
.risk-meter span:first-child { background:var(--success); }.risk-meter span:last-child { background:var(--red); }
.risk-labels { display:flex;justify-content:space-between;color:var(--text-muted);font-size:.61rem; }
.attempt-warning { margin-top:12px;padding:10px;color:#ffd6dc;border:1px solid rgba(223,64,87,.55);border-radius:9px;background:rgba(143,20,47,.35);font-size:.68rem; }

/* Counting, runoff and result */
.counting-screen,.result-screen { padding-block:28px; }
.counting-card,.result-card { width:min(920px,100%);padding:clamp(28px,5vw,62px);border-radius:22px; }
.counting-card,.result-card { text-align:center; }
.counting-card h2,.result-card h2 { font-size:clamp(2.65rem,6vw,5.5rem); }
.counting-card>p:not(.eyebrow),.result-lead { max-width:58ch;margin:15px auto 0;color:var(--text-muted); }
.counting-progress { height:17px;margin:26px 0 10px;overflow:hidden;border:1px solid var(--edge-soft);border-radius:99px;background:#02091e;box-shadow:inset 0 3px 6px rgba(0,0,0,.55); }
.counting-progress>span { display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--blue),var(--cyan));box-shadow:0 0 16px var(--cyan);transition:width 600ms ease; }
.counting-percent { display:block;color:var(--cyan);font-size:clamp(2.6rem,7vw,6rem);line-height:1;text-shadow:0 0 24px rgba(85,199,255,.45); }
.counting-ranking { max-width:650px;margin:22px auto 0;padding:0;list-style:none;text-align:left; }
.runoff-finalists { display:grid;grid-template-columns:1fr auto 1fr;gap:15px;align-items:stretch; }
.finalist-card { --candidate-color:var(--blue);display:grid;justify-items:center;padding:24px;color:var(--text);border:2px solid var(--candidate-color);border-radius:var(--radius-panel);background:linear-gradient(155deg,rgba(18,49,100,.96),rgba(5,16,39,.98));box-shadow:var(--shadow-panel),0 0 22px color-mix(in srgb,var(--candidate-color),transparent 70%);text-align:center; }
.finalist-card>span { display:grid;place-items:center;width:82px;height:82px;overflow:hidden;color:#fff;border:3px solid #fff;border-radius:50%;background:var(--candidate-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--candidate-color),transparent 38%),0 0 20px var(--candidate-color);font-weight:850; }
.finalist-card h2,.finalist-card h3 { margin-top:12px;font-size:1.45rem; }.finalist-card>div>strong { display:block;margin-top:5px;font-size:1.45rem; }.finalist-card p,.finalist-card small { margin:6px 0 0;color:var(--text-muted);font-size:.68rem; }
.versus { align-self:center;color:var(--gold);font-size:.7rem;font-weight:900;letter-spacing:.14em; }
.runoff-layout { display:grid;grid-template-columns:minmax(0,1fr)280px;gap:15px;margin-top:17px; }.support-transfer,.negotiation-card { min-width:0;padding:21px;border-radius:var(--radius-panel); }.support-transfer h2 { font-size:1.6rem; }.support-transfer>div { display:grid;gap:8px;margin-top:15px; }
.support-card,.transfer-row,.support-option { display:grid;grid-template-columns:minmax(90px,1fr) minmax(130px,2fr) auto;gap:9px;align-items:center;padding:10px;color:var(--text);border:1px solid var(--edge-soft);border-radius:9px;background:rgba(4,14,40,.72);font-size:.67rem;text-align:left; }.support-card:hover:not(:disabled),.support-card.is-selected { border-color:var(--cyan); }.support-card small { color:var(--cyan);font-weight:850;text-align:right; }.support-card:disabled { opacity:.5;cursor:not-allowed; }
.negotiation-card { align-self:start; }.negotiation-card>span { display:block;color:var(--text-muted);font-size:.62rem;font-weight:800;text-transform:uppercase; }.negotiation-card>strong { display:block;margin-top:9px;color:var(--cyan);font-size:2.25rem; }.negotiation-card p { margin:11px 0 0;color:var(--text-muted);font-size:.68rem; }.runoff-screen>.button { display:flex;width:min(340px,100%);margin:19px 0 0 auto; }
.result-mark { display:grid;place-items:center;width:96px;height:96px;margin:0 auto 21px;color:#08122e;border:3px solid #fff;border-radius:50%;background:linear-gradient(145deg,#ffe693,var(--gold));box-shadow:0 0 0 5px rgba(240,191,74,.22),0 0 35px rgba(240,191,74,.5);font-size:2rem;font-weight:900; }
.result-lead { margin:17px auto 24px; }.winner-ticket { --candidate-color:var(--blue);display:grid;grid-template-columns:70px minmax(0,1fr) auto;gap:14px;align-items:center;width:min(680px,100%);margin:0 auto;padding:15px;border:1px solid var(--edge-soft);border-radius:var(--radius-card);background:rgba(4,14,40,.66);text-align:left; }.winner-ticket .candidate-avatar { width:68px;height:68px; }.winner-ticket span,.winner-ticket strong,.winner-ticket small { display:block; }.winner-ticket span,.winner-ticket small { color:var(--text-muted);font-size:.62rem; }.winner-ticket>div>strong { margin-top:3px;font-size:1.18rem; }.winner-share { color:var(--cyan);font-size:1.65rem;white-space:nowrap; }.result-metrics { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:min(680px,100%);margin:17px auto 0;border-block:1px solid var(--edge-soft); }.result-metrics>div { padding:17px 9px;border-right:1px solid var(--edge-soft); }.result-metrics>div:last-child { border-right:0; }.result-metrics dt { color:var(--text-muted);font-size:.57rem;font-weight:800;text-transform:uppercase; }.result-metrics dd { margin:6px 0 0;color:var(--cyan);font-size:1.18rem;font-weight:850; }.challenge-result { margin-top:17px;padding:16px;border:1px solid rgba(61,196,126,.48);border-radius:var(--radius-card);background:rgba(61,196,126,.13); }.challenge-result h2 { font-size:1.4rem; }.challenge-result p:last-child { margin:7px 0 0;color:var(--text-muted);font-size:.69rem; }.result-actions { display:flex;align-items:center;justify-content:center;gap:10px;margin-top:21px; }.text-link { color:var(--cyan);font-size:.68rem;font-weight:800;text-underline-offset:4px; }.simulation-note { max-width:580px;margin:17px auto 0;color:var(--text-faint);font-size:.63rem; }

/* Directly rendered game guide below the interactive board */
.guide-inline-link { display:block;margin-top:9px;padding:7px;color:var(--cyan);font-size:.67rem;font-weight:800;text-align:center;text-decoration:none;text-underline-offset:4px; }
.guide-inline-link:hover { text-decoration:underline; }
.game-guide-content { position:relative;z-index:80;color:#eaf1ff;background:#06102a; }
.game-guide-content::before { position:absolute;top:0;right:0;left:0;height:1px;content:"";background:linear-gradient(90deg,transparent,var(--cyan),var(--gold),transparent);box-shadow:0 0 24px rgba(85,199,255,.55); }
.guide-container { width:min(1160px,calc(100% - 40px));margin-inline:auto; }
.guide-masthead { padding:clamp(60px,8vw,112px) 0 clamp(44px,6vw,80px);background:radial-gradient(circle at 82% 10%,rgba(50,104,255,.27),transparent 34rem),linear-gradient(145deg,#071735,#06102a); }
.guide-masthead-grid { display:grid;grid-template-columns:minmax(0,1.3fr) minmax(280px,.7fr);gap:clamp(35px,7vw,90px);align-items:end; }
.guide-kicker { margin:0 0 11px;color:var(--cyan);font-size:.7rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase; }
.game-guide-content h2 { font-size:clamp(2.25rem,5vw,4.7rem); }
.game-guide-content h3 { font-size:1.08rem;letter-spacing:-.015em; }
.guide-lead { max-width:64ch;margin:20px 0 0;color:#b8c8e9;font-size:clamp(1rem,1.5vw,1.22rem);line-height:1.7; }
.guide-answer { padding:25px;border:1px solid rgba(85,199,255,.35);border-radius:14px;background:rgba(5,14,41,.72);box-shadow:var(--shadow-panel); }
.guide-answer>strong { display:block;color:var(--gold);font-size:.71rem;letter-spacing:.11em;text-transform:uppercase; }
.guide-answer ol { display:grid;gap:8px;margin:17px 0 20px;padding-left:22px;color:#d9e4fb;font-size:.8rem;line-height:1.45; }
.guide-answer a,.guide-more a { color:var(--cyan);font-size:.72rem;font-weight:850;text-underline-offset:4px; }
.guide-section-nav { position:sticky;z-index:70;top:0;overflow-x:auto;border-block:1px solid rgba(102,146,218,.3);background:rgba(4,13,37,.94);backdrop-filter:blur(18px); }
.guide-section-nav .guide-container { display:flex;min-width:max-content; }
.guide-section-nav a { padding:16px 18px;color:#9eb2db;font-size:.66rem;font-weight:850;text-decoration:none; }
.guide-section-nav a:hover,.guide-section-nav a:focus-visible { color:#fff;background:rgba(50,104,255,.2); }
.guide-main { padding-block:clamp(50px,7vw,88px); }
.guide-section { padding:clamp(45px,6vw,76px) 0;border-bottom:1px solid rgba(102,146,218,.24);scroll-margin-top:68px; }
.guide-section:first-child { padding-top:0; }
.guide-heading { max-width:760px;margin-bottom:28px; }
.guide-heading h2 { font-size:clamp(2rem,4vw,3.4rem); }
.guide-heading>p:last-child,.guide-heading-row>div>p:last-child { margin:15px 0 0;color:#aebfe1;line-height:1.65; }
.guide-heading-row { display:flex;max-width:none;align-items:end;justify-content:space-between;gap:28px; }
.guide-heading-row>div { max-width:760px; }
.guide-step-grid,.guide-feature-grid { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px; }
.guide-step-grid article,.guide-feature-grid article { min-width:0;padding:22px;border:1px solid rgba(102,146,218,.3);border-radius:12px;background:linear-gradient(150deg,rgba(16,42,88,.82),rgba(4,14,40,.78));box-shadow:inset 0 1px 0 rgba(255,255,255,.06); }
.guide-step-grid article>span { display:block;margin-bottom:37px;color:var(--cyan);font-size:.7rem;font-weight:900;letter-spacing:.12em; }
.guide-step-grid p,.guide-feature-grid p,.guide-tip-grid p { margin:8px 0 0;color:#9fb2d8;font-size:.76rem;line-height:1.55; }
.guide-split { display:grid;grid-template-columns:minmax(260px,.72fr) minmax(0,1.28fr);gap:clamp(30px,6vw,75px);align-items:start; }
.guide-split .guide-heading { position:sticky;top:78px;margin-bottom:0; }
.guide-table-wrap { overflow-x:auto;border:1px solid rgba(102,146,218,.3);border-radius:12px;background:rgba(5,16,43,.76); }
.guide-table-wrap table { width:100%;min-width:600px;border-collapse:collapse; }
.guide-table-wrap th,.guide-table-wrap td { padding:18px;border-bottom:1px solid rgba(102,146,218,.21);font-size:.73rem;line-height:1.5;text-align:left;vertical-align:top; }
.guide-table-wrap th { color:var(--cyan);background:rgba(50,104,255,.13);font-size:.61rem;letter-spacing:.08em;text-transform:uppercase; }
.guide-table-wrap td { color:#adbee0; }.guide-table-wrap td:first-child { color:#fff;white-space:nowrap; }.guide-table-wrap tr:last-child td { border-bottom:0; }
.guide-feature-grid article>span { display:grid;width:43px;height:43px;margin-bottom:24px;place-items:center;color:var(--cyan);border:1px solid rgba(85,199,255,.38);border-radius:50%;background:rgba(50,104,255,.16);font-size:1.1rem; }
.guide-warning { display:grid;grid-template-columns:210px minmax(0,1fr);gap:22px;margin-top:15px;padding:20px 22px;color:#ffdce2;border:1px solid rgba(223,64,87,.48);border-radius:12px;background:rgba(133,26,52,.2); }
.guide-warning strong { color:#ff93a2;font-size:.75rem;letter-spacing:.07em;text-transform:uppercase; }.guide-warning p { margin:0;font-size:.75rem;line-height:1.55; }
.guide-button { display:inline-flex;min-height:45px;flex:0 0 auto;align-items:center;padding:0 17px;color:#fff;border:1px solid rgba(85,199,255,.5);border-radius:10px;background:linear-gradient(180deg,#326fe1,#1740a7);font-size:.68rem;font-weight:850;text-decoration:none;box-shadow:0 9px 24px rgba(0,5,27,.34); }
.guide-portrait-row { display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px; }
.guide-portrait-row article { min-width:0;padding:13px;border:1px solid rgba(102,146,218,.27);border-radius:12px;background:rgba(5,16,43,.74);text-align:center; }
.guide-portrait-row img { width:82px;height:82px;margin:0 auto 12px;object-fit:cover;object-position:center 22%;border:3px solid #eaf5ff;border-radius:50%;background:#16366f;box-shadow:0 0 0 3px rgba(85,199,255,.28),0 0 20px rgba(50,104,255,.28); }
.guide-portrait-row strong,.guide-portrait-row small { display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }.guide-portrait-row strong { font-size:.75rem; }.guide-portrait-row small { margin-top:4px;color:var(--cyan);font-size:.58rem;font-weight:800; }
.guide-tip-grid { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none; }
.guide-tip-grid li { display:grid;grid-template-columns:42px minmax(0,1fr);gap:14px;align-items:start;padding:18px;border:1px solid rgba(102,146,218,.25);border-radius:11px;background:rgba(5,16,43,.62); }
.guide-tip-grid li>span { display:grid;width:42px;height:42px;place-items:center;color:#07112b;border-radius:50%;background:var(--gold);font-size:.75rem;font-weight:900;box-shadow:0 0 16px rgba(240,191,74,.23); }
.guide-more { margin:21px 0 0;text-align:right; }
.guide-faq { display:grid;gap:8px; }
.guide-faq details { border:1px solid rgba(102,146,218,.28);border-radius:11px;background:rgba(5,16,43,.72); }
.guide-faq summary { position:relative;padding:19px 52px 19px 20px;font-size:.84rem;font-weight:850;list-style:none;cursor:pointer; }.guide-faq summary::-webkit-details-marker { display:none; }
.guide-faq summary::after { position:absolute;top:50%;right:20px;color:var(--cyan);content:"+";font-size:1.25rem;transform:translateY(-50%); }.guide-faq details[open] summary::after { content:"−"; }
.guide-faq details p { margin:0;padding:0 20px 19px;color:#aebfe1;font-size:.76rem;line-height:1.6; }
.guide-related-grid { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px; }
.guide-related-grid a { display:grid;min-height:190px;align-content:space-between;padding:22px;color:#fff;border:1px solid rgba(85,199,255,.3);border-radius:12px;background:linear-gradient(145deg,rgba(16,42,88,.88),rgba(4,14,40,.82));text-decoration:none;transition:var(--ease); }
.guide-related-grid a:hover { border-color:var(--cyan);transform:translateY(-3px); }.guide-related-grid span { color:var(--cyan);font-size:.62rem;font-weight:850;letter-spacing:.1em;text-transform:uppercase; }.guide-related-grid strong { max-width:19ch;font-size:1.25rem;line-height:1.25; }.guide-related-grid small { color:#aebfe1;font-size:.66rem;font-weight:800; }
.guide-trust-intro { max-width:760px;margin:-12px 0 22px;color:#9fb2d8;font-size:.78rem;line-height:1.7; }
.guide-trust-grid { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px; }
.guide-trust-grid a { display:grid;min-height:152px;align-content:space-between;padding:18px;color:#fff;border:1px solid rgba(85,199,255,.28);border-radius:12px;background:rgba(5,16,39,.72);text-decoration:none;transition:var(--ease); }
.guide-trust-grid a:hover { border-color:var(--cyan);transform:translateY(-2px); }.guide-trust-grid span { color:var(--gold);font-size:.56rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase; }.guide-trust-grid strong { font-size:.96rem;line-height:1.25; }.guide-trust-grid small { color:#aebfe1;font-size:.61rem;font-weight:750;line-height:1.45; }
.guide-source-note { margin:28px 0 0;padding:20px 22px;border-left:3px solid var(--gold);background:rgba(240,191,74,.07); }.guide-source-note strong { color:var(--gold);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase; }.guide-source-note p { margin:8px 0 0;color:#9fb2d8;font-size:.71rem;line-height:1.6; }.guide-source-note a { color:#dbe8ff;text-underline-offset:3px; }
.guide-footer { padding:28px 0;border-top:1px solid rgba(102,146,218,.25);background:#030a1c; }.guide-footer .guide-container { display:flex;align-items:center;justify-content:space-between;gap:22px; }.guide-footer p { margin:0;color:#7189b7;font-size:.62rem; }.guide-footer nav { display:flex;flex-wrap:wrap;gap:18px; }.guide-footer a { color:#aebfe1;font-size:.62rem;font-weight:800;text-decoration:none; }.guide-footer a:hover { color:var(--cyan); }

/* Tablet: two-zone board */
@media (max-width:1050px) {
  .game-app { padding:15px; }
  .screen { min-height:calc(100vh - 30px); }
  .challenge-grid,.candidate-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .form-grid,.custom-form { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .vice-grid { grid-template-columns:1fr; }
  .campaign-header { grid-template-columns:minmax(215px,1fr) auto auto; min-height:94px; }
  .race-scoreboard { grid-column:2;grid-row:1; }
  .turn-track { right:12px;bottom:4px;left:12px; }
  .resource-list { grid-column:1/-1;grid-row:2; }
  .campaign-menu { grid-column:3;grid-row:1; }
  .map-layout { grid-template-columns:minmax(0,1fr)220px; }
  .brazil-map { grid-template-columns:repeat(11,minmax(29px,1fr)); }
  .action-card { flex-basis:220px; }
  .guide-step-grid,.guide-feature-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .guide-portrait-row { grid-template-columns:repeat(3,minmax(0,1fr)); }
}

@media (max-width:800px) {
  .disclaimer-card,.cover-card { grid-template-columns:1fr;gap:25px; }
  .cover-card { min-height:auto;align-content:start; }
  .cover-card>.cover-overline,.cover-card>h2,.cover-lead,.cover-stages,.cover-credit,.cover-actions { grid-column:1; }
  .cover-art { background-position:64% center; }
  .cover-card::before { background:linear-gradient(90deg,rgba(2,12,34,.97),rgba(3,16,44,.85) 60%,rgba(3,13,36,.44)),linear-gradient(180deg,rgba(1,8,25,.35),transparent 45%,rgba(1,7,22,.85)); }
  .cover-map-facts { display:none; }
  .cover-actions { grid-row:auto;width:min(420px,100%);justify-self:end;margin:30px 0 0; }
  .cover-credit { margin-top:25px; }
  .vice-layout { grid-template-columns:1fr; }.ticket-preview { position:static; }
  .campaign-screen { padding-bottom:108px; }
  .campaign-header { grid-template-columns:minmax(0,1fr) auto;top:4px; }
  .turn-status,.race-scoreboard,.turn-track { display:none; }
  .resource-list { grid-column:1/-1;grid-row:2; }
  .campaign-menu { grid-column:2;grid-row:1; }
  .map-panel { min-height:590px; }
  .map-layout { grid-template-columns:minmax(0,1fr)210px; }
  .map-board-surface { min-height:430px;padding:7px; }
  .brazil-map { grid-template-columns:repeat(11,minmax(24px,1fr));min-height:405px;padding:6px; }
  .ranking-layout { grid-template-columns:1fr; }
  .runoff-layout { grid-template-columns:1fr; }
  .campaign-footer { right:15px;left:15px;width:calc(100% - 30px); }
  .mobile-tab { padding-inline:8px; }
  .action-deck-shell { display:contents; }
  .action-deck-label { display:none; }
  .turn-command { display:contents; }
  .turn-command>span { display:none; }
  .guide-masthead-grid,.guide-split { grid-template-columns:1fr; }
  .guide-split .guide-heading { position:static; }
  .guide-heading-row { align-items:flex-start;flex-direction:column; }
}

/* 390 px: compact HUD, one panel, four-column map, five fixed tabs */
@media (max-width:600px) {
  .game-app { padding:9px 9px calc(94px + env(safe-area-inset-bottom)); }
  .screen { min-height:calc(100vh - 103px - env(safe-area-inset-bottom)); }
  .disclaimer-card,.cover-card,.setup-form,.counting-card,.result-card { padding:20px;border-radius:18px; }
  .disclaimer-card h2 { font-size:clamp(2.2rem,12vw,3.45rem); }.disclaimer-content { padding:15px; }
  .cover-card { min-height:calc(100vh - 112px);padding:24px 20px; }
  .cover-art { background-position:62% center;filter:saturate(.9) contrast(1.03); }
  .cover-card::before { background:linear-gradient(90deg,rgba(2,12,34,.97),rgba(3,16,44,.82) 78%,rgba(3,13,36,.54)),linear-gradient(180deg,rgba(1,8,25,.28),rgba(1,8,25,.24) 55%,rgba(1,7,22,.92)); }
  .cover-overline { font-size:.54rem;letter-spacing:.11em; }
  .cover-card h2 { margin-top:24px;font-size:clamp(3.2rem,17vw,4.7rem);line-height:.88; }
  .cover-lead { margin-top:20px;font-size:.79rem; }
  .cover-stages { gap:5px;margin-top:22px; }.cover-stages li { grid-template-columns:24px minmax(0,1fr);gap:6px;padding-right:6px; }.cover-stages li:not(:last-child)::after { display:none; }.cover-stages span { width:24px;height:24px; }.cover-stages strong { font-size:.51rem;white-space:normal; }
  .cover-actions { margin-top:17px;padding:14px; }.cover-actions .button { min-height:51px; }.cover-actions .button-ghost { min-height:60px; }
  .cover-credit { margin-top:17px;font-size:.51rem; }
  .cover-scan-line { display:none; }
  .screen-header { grid-template-columns:1fr;gap:12px; }.screen-header h2 { font-size:clamp(2.25rem,12vw,3.55rem); }
  .challenge-grid,.candidate-grid,.segmented-control,.vice-grid { grid-template-columns:1fr; }.challenge-card { min-height:172px; }
  .candidate-toolbar { align-items:stretch;flex-direction:column; }.candidate-toolbar p { white-space:normal; }.search-field { width:100%; }
  .candidate-card { grid-template-columns:64px minmax(0,1fr);min-height:145px; }.candidate-portrait { width:60px;height:60px; }
  .form-grid,.custom-form { grid-template-columns:1fr; }.custom-candidate,.custom-form { padding:16px; }
  .setup-footer { align-items:stretch;flex-direction:column; }.setup-footer .button { width:100%; }
  .vice-layout>div,.ticket-preview { padding:17px; }
  .campaign-screen { padding-bottom:8px; }
  .campaign-header { position:relative;top:auto;min-height:122px;padding:8px;border-radius:12px; }
  .campaign-identity .candidate-avatar { width:46px;height:46px; }.campaign-identity .eyebrow { display:none; }.campaign-identity h2 { font-size:.87rem; }
  .resource-list { grid-template-columns:repeat(2,minmax(0,1fr));gap:4px; }.resource-list>div { padding:7px 7px; }.resource-list dt { font-size:.44rem; }.resource-list dd { font-size:.65rem; }
  .campaign-menu .text-button { display:none; }
  .campaign-workspace,.board-grid { padding-top:8px; }.board-grid { display:block; }
  .campaign-panel { padding:13px;border-radius:12px; }.campaign-panel[hidden] { display:none!important; }.campaign-panel:not([hidden]) { display:block; }
  .panel-heading { flex-wrap:wrap; }.panel-heading h2 { font-size:1.45rem; }.summary-grid { grid-template-columns:1fr; }.summary-grid article { min-height:auto; }
  .compact-field { width:100%; }.map-panel { min-height:auto;padding-bottom:148px;overflow:visible; }.map-layout { display:block;min-height:0; }.map-board-surface { display:block;min-height:0;padding:0;border:0;background:transparent;box-shadow:none; }
  .brazil-map { grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:none;grid-auto-flow:row;gap:6px;width:100%;min-height:0;aspect-ratio:auto;padding:0;filter:none; }
  .state-button:is([data-uf],[data-state],[data-state-uf]) { grid-area:auto;aspect-ratio:1.28;font-size:.65rem; }.state-button:hover:not(:disabled),.state-button:focus-visible,.state-button.is-selected,.state-button[aria-pressed="true"] { transform:translateY(-1px); }
  .state-summary { position:relative;z-index:2;top:auto;margin-top:12px;padding:14px; }
  .ranking-row,.ranking-item { grid-template-columns:20px minmax(68px,.9fr) minmax(66px,1.1fr) 35px;gap:5px;font-size:.59rem; }.attribute-grid { grid-template-columns:1fr; }
  .actions-panel { padding-bottom:36px; }.action-grid { margin-inline:-3px; }.action-card { flex-basis:clamp(170px,47vw,195px);min-width:170px;min-height:194px; }.special-actions { align-items:stretch;flex-direction:column; }.special-actions .button { width:100%; }
  .campaign-footer { right:0;bottom:0;left:0;display:block;width:100%; }
  .mobile-tabs { display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:2px;width:100%;min-height:calc(70px + env(safe-area-inset-bottom));margin:0;padding:7px 5px calc(7px + env(safe-area-inset-bottom));border-inline:0;border-bottom:0;border-radius:0;background:rgba(3,11,32,.97); }
  .mobile-tab { display:grid;min-width:0;min-height:53px;place-items:center;gap:2px;padding:5px 2px;font-size:.5rem;line-height:1.05;text-align:center; }.mobile-tab>span { display:block;font-size:1rem; }
  .end-turn-button { position:fixed;z-index:45;right:9px;bottom:calc(78px + env(safe-area-inset-bottom));width:auto;min-width:140px;min-height:44px;border-radius:22px; }
  .modal-layer { align-items:end;padding:6px; }.game-modal { width:100%;max-height:calc(100vh - 12px);border-radius:18px 18px 10px 10px; }.modal-header { padding:17px 17px 13px; }.modal-body { padding:16px 17px; }.modal-option,.response-option,.target-option { grid-template-columns:auto minmax(0,1fr); }.modal-actions { align-items:stretch;flex-direction:column-reverse;padding:13px 17px calc(17px + env(safe-area-inset-bottom)); }.modal-actions .button { width:100%; }
  .runoff-finalists { grid-template-columns:1fr; }.versus { justify-self:center; }.runoff-layout { grid-template-columns:1fr; }.transfer-row,.support-option { grid-template-columns:1fr auto; }.support-card { grid-template-columns:1fr auto; }.support-card>span,.transfer-row>:nth-child(2),.support-option>:nth-child(2) { grid-column:1/-1;grid-row:2; }.runoff-screen>.button { width:100%; }
  .counting-card h2,.result-card h2 { font-size:clamp(2.35rem,12vw,3.75rem); }.winner-ticket { grid-template-columns:58px minmax(0,1fr); }.winner-ticket .candidate-avatar { width:56px;height:56px; }.winner-share { grid-column:1/-1;padding-top:9px;border-top:1px solid var(--edge-soft);text-align:right; }.result-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }.result-metrics>div:nth-child(2) { border-right:0; }.result-metrics>div:nth-child(-n+2) { border-bottom:1px solid var(--edge-soft); }.result-actions { align-items:stretch;flex-direction:column; }.result-actions>* { width:100%; }
  .guide-container { width:min(100% - 24px,1160px); }
  .guide-masthead { padding-block:52px 42px; }.game-guide-content h2 { font-size:clamp(2.1rem,12vw,3.35rem); }.guide-lead { font-size:.95rem; }
  .guide-section-nav .guide-container { width:max-content;margin-left:6px; }.guide-section-nav a { padding:14px 12px; }
  .guide-step-grid,.guide-feature-grid,.guide-tip-grid,.guide-related-grid,.guide-trust-grid { grid-template-columns:1fr; }
  .guide-step-grid article>span { margin-bottom:23px; }
  .guide-warning { grid-template-columns:1fr;gap:8px; }
  .guide-portrait-row { display:flex;margin-inline:-12px;padding:4px 12px 14px;overflow-x:auto;scroll-snap-type:x proximity; }
  .guide-portrait-row article { flex:0 0 142px;scroll-snap-align:start; }
  .guide-related-grid a { min-height:165px; }
  .guide-footer .guide-container { align-items:flex-start;flex-direction:column; }
}

@media (max-width:380px) {
  .game-app { padding-inline:7px; }
  .candidate-card { grid-template-columns:56px minmax(0,1fr); }.candidate-portrait { width:52px;height:52px; }
  .ranking-row,.ranking-item { grid-template-columns:19px minmax(62px,1fr) 33px; }.ranking-track { display:none; }
}

/* Real 27-UF map and layout hardening */
.brazil-map {
  position:relative;
  z-index:1;
  display:block;
  width:min(100%,760px);
  min-width:0;
  min-height:0;
  aspect-ratio:760/720;
  padding:7px;
  filter:drop-shadow(0 22px 26px rgba(0,1,17,.48));
  touch-action:pan-x pan-y;
}
.brazil-state-map { display:block;width:100%;height:auto;overflow:visible; }
.state-region { --state-color:#365999;cursor:pointer;outline:none; }
.state-region[hidden] { display:none!important; }
.state-shape {
  fill:color-mix(in srgb,var(--state-color),#091a3d 16%);
  stroke:rgba(239,248,255,.9);
  stroke-width:1.5;
  vector-effect:non-scaling-stroke;
  transition:fill var(--ease),filter var(--ease),stroke var(--ease),stroke-width var(--ease);
}
.state-region:hover .state-shape,.state-region:focus-visible .state-shape { fill:color-mix(in srgb,var(--state-color),#fff 10%);stroke:var(--cyan);stroke-width:2.6;filter:brightness(1.13) drop-shadow(0 0 7px rgba(85,199,255,.62)); }
.state-region.is-player-led .state-shape { fill:color-mix(in srgb,var(--state-color),var(--cyan) 13%);filter:saturate(1.12); }
.state-region.is-selected .state-shape { stroke:var(--gold);stroke-width:4;filter:brightness(1.12) drop-shadow(0 0 9px rgba(240,191,74,.86)); }
.state-label,.state-share { pointer-events:none;fill:#fff;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-weight:950;paint-order:stroke fill;stroke:rgba(2,8,27,.82);stroke-linejoin:round;text-shadow:0 1px 2px rgba(0,0,0,.8); }
.state-label { font-size:11px;letter-spacing:.03em;stroke-width:3.5px; }
.state-share { fill:rgba(235,246,255,.93);font-size:8px;font-weight:800;stroke-width:3px; }
.ranking-list { max-height:420px;padding-right:3px;overflow:auto;scrollbar-width:thin;scrollbar-color:var(--cyan) rgba(4,13,38,.7); }
[data-player-attributes]>div { display:grid;grid-template-columns:minmax(0,1fr) 34px;gap:4px 9px;align-items:center;min-width:0; }
[data-player-attributes]>div>span,[data-player-attributes]>div>strong { display:block;min-width:0;margin:0;font-size:.61rem; }
[data-player-attributes]>div>span { max-width:none;overflow:hidden;color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap; }
[data-player-attributes]>div>strong { float:none;text-align:right; }
[data-player-attributes]>div>i { grid-column:1/-1;width:100%; }
.vice-card { grid-template-columns:72px minmax(0,1fr);min-height:142px;padding:16px; }
.vice-avatar { width:70px;height:70px; }
.vice-card strong,.vice-card em,.vice-card p,.vice-card small { display:block;min-width:0; }
.vice-card strong { margin-top:6px;overflow:hidden;font-size:.86rem;text-overflow:ellipsis;white-space:nowrap; }
.vice-card em { margin-top:4px;color:#dce8ff;font-size:.59rem;font-style:normal;font-weight:750; }
.vice-card p { margin-top:7px; }

@media (min-width:1201px) {
  .campaign-header { grid-template-columns:minmax(220px,.82fr) minmax(360px,1.15fr) minmax(420px,1.3fr) auto; }
}

@media (min-width:801px) and (max-width:1200px) {
  .campaign-header { grid-template-columns:minmax(220px,.78fr) minmax(390px,1.4fr) auto;grid-template-rows:auto auto;min-height:154px;align-items:center;padding-bottom:34px; }
  .campaign-identity { grid-column:1;grid-row:1; }
  .race-scoreboard { grid-column:2;grid-row:1; }
  .campaign-menu { grid-column:3;grid-row:1; }
  .resource-list { grid-column:1/-1;grid-row:2; }
}

@media (max-width:600px) {
  .map-board-surface { overflow:visible; }
  .brazil-map { width:100%;min-width:0;aspect-ratio:760/720;padding:4px;filter:drop-shadow(0 15px 18px rgba(0,1,17,.42)); }
  .state-label { font-size:16px; }.state-share { font-size:12px; }
  .ranking-list { max-height:360px; }
  .vice-card { grid-template-columns:68px minmax(0,1fr);min-height:128px; }.vice-avatar { width:66px;height:66px; }
}

@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after { scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important; }
}

@media (prefers-contrast:more) {
  .campaign-panel,.challenge-card,.candidate-card,.vice-card,.action-card,.ranking-card,.attribute-card { border-color:currentColor; }
}
