/* Malaysia Memilih — bright mode.
   The site is dark by default; `html[data-theme="light"]` (set by
   partials/theme-head.blade.php and remembered in localStorage) flips the shared
   tokens and the surfaces that the page sheets still declare as literal colours.

   This sheet is linked after every page stylesheet, so a rule here wins on equal
   specificity. Only colours change; spacing, type and layout are untouched. */

/* Appearance switch, shared by every masthead. */
.theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  align-self: center;
  /* Icon only: one fixed square, so it can never out-size the header buttons. */
  box-sizing: border-box;
  width: 32px;
  height: 29px;
  min-height: 29px;
  padding: 0;
  border: 1px solid #cbd5e1;
  border-radius: 0;
  background: #f1f5f9;
  color: #475569;
  font: 700 9px "JetBrains Mono", monospace;
  cursor: pointer;
  flex: 0 0 auto;
  transition: all .15s ease;
}

.theme-toggle:hover {
  background: #e2e8f0;
  color: #0f172a;
}

.theme-toggle [data-theme-icon] {
  font-size: 13px;
  line-height: 1;
}

/* ---------------------------------------------------------------- palette */
html[data-theme="light"] {
  color-scheme: light;

  --page: #eef2f7;
  --panel: #ffffff;
  --panel-card: #f6f9fc;
  --panel-head: #f2f6fb;
  --table-head: #edf2f9;
  --field: #ffffff;
  --sidebar: #fbfcfe;
  --line: #cfd9e6;
  --line-subtle: #e6ecf4;
  --muted: #5b6b80;
  --text: #101a2b;
  --text-strong: #0b1322;
  --text-soft: #33415c;
  --ink-950: #ffffff;
  --ink-400: #5b6b80;

  /* Accents are darkened so they stay legible on white. */
  --sky: #0369a1;
  --emerald: #047857;
  --amber: #b45309;
  --red: #c81e2b;

  /* Constituency outlines read as dividers on white, not as results. */
  --seat-border: rgba(15, 23, 42, .72);
}

html[data-theme="light"] body {
  background: var(--page);
  color: var(--text);
}

/* ------------------------------------------------------------ admin shell */
html[data-theme="light"] .sidebar {
  background: var(--sidebar);
  border-right-color: var(--line);
}

html[data-theme="light"] .nav-item a {
  color: #3d4c61;
}

html[data-theme="light"] .nav-item a:hover,
html[data-theme="light"] .nav-item a.active {
  background: #e6edf7;
  color: #0b1322;
}

html[data-theme="light"] .nav-item a.active .nav-tag {
  background: var(--red);
  color: #fff;
}

html[data-theme="light"] .status-bar {
  background: #e8eef6;
  border-top-color: var(--line);
}

html[data-theme="light"] .status-message {
  color: #45546a;
}

html[data-theme="light"] .header-button {
  border-color: var(--line);
  color: #1b2a40;
}

html[data-theme="light"] .header-button:hover {
  background: #e8eef7;
  color: #0b1322;
}

/* The active page chip keeps its ink dark fill, so its label must stay white. */
html[data-theme="light"] .header-button.active,
html[data-theme="light"] .header-button.admin-button.active,
html[data-theme="light"] .header-button.is-active {
  color: #ffffff;
}

html[data-theme="light"] .header-button.active:not(.admin-button) {
  background: #101a2b;
  border-color: #101a2b;
}

html[data-theme="light"] .header-button.logout-button {
  background: #eef2f7;
  color: #475569;
  border-color: var(--line);
}

/* The admin sheet repeats a few surfaces with literal colours. */
html[data-theme="light"] .overview-strip,
html[data-theme="light"] .panel-head {
  background: var(--panel-head);
}

html[data-theme="light"] table.data-table th {
  background: var(--table-head);
  color: #45546a;
}

html[data-theme="light"] table.data-table td {
  color: var(--text-soft);
}

html[data-theme="light"] .stream-item {
  background: var(--panel-card);
  border-color: var(--line);
  color: var(--text-soft);
}

html[data-theme="light"] .action-btn {
  background: var(--panel-card);
  border-color: var(--line);
  color: var(--text-soft);
}

html[data-theme="light"] .action-btn:hover {
  background: #e8eef7;
  color: #0b1322;
}

html[data-theme="light"] .progress-track {
  background: #e2e8f0;
}

html[data-theme="light"] .majority-marker {
  background: #0b1322;
  box-shadow: 0 0 6px rgba(11, 19, 34, .4);
}

html[data-theme="light"] .system-status-indicator {
  background: rgba(4, 120, 87, .08);
  color: #047857;
}

html[data-theme="light"] .status-pill.official {
  background: #dcfce7;
  color: #166534;
  border-color: #16a34a;
}

html[data-theme="light"] .status-pill.warning {
  background: #fef3c7;
  color: #92400e;
  border-color: #d97706;
}

html[data-theme="light"] .status-pill.action {
  background: #ede9fe;
  color: #5b21b6;
  border-color: #8b5cf6;
}

html[data-theme="light"] .modal-overlay {
  background: rgba(15, 23, 42, .55);
}

html[data-theme="light"] .modal-window {
  box-shadow: 0 20px 40px rgba(15, 23, 42, .25);
}

/* --------------------------------------------------------------- nav chips */
html[data-theme="light"] .nav-link.active {
  background: #101a2b;
  color: #fff;
}

/* ------------------------------------------------------------- analysis page */
html[data-theme="light"] .overview {
  background: var(--panel-head);
  border-bottom-color: var(--line);
}

html[data-theme="light"] .btn {
  background: var(--panel-card);
  border-color: var(--line);
  color: var(--text-soft);
}

html[data-theme="light"] .btn:hover:not(:disabled) {
  background: #e2e8f0;
  color: var(--text-strong);
}

html[data-theme="light"] .btn.primary {
  background: var(--red);
  border-color: var(--red);
  color: #fff;
}

html[data-theme="light"] select,
html[data-theme="light"] input[type=search],
html[data-theme="light"] input[type=text],
html[data-theme="light"] input[type=number],
html[data-theme="light"] textarea {
  background: var(--field);
  color: var(--text);
  border-color: var(--line);
}

html[data-theme="light"] label {
  color: var(--muted);
}

html[data-theme="light"] .metric,
html[data-theme="light"] .panel {
  background: var(--panel);
  border-color: var(--line);
}

html[data-theme="light"] .metric-value {
  color: var(--text-strong);
}

html[data-theme="light"] th {
  background: var(--table-head);
  color: #45546a;
}

html[data-theme="light"] td {
  border-bottom-color: var(--line-subtle);
  color: var(--text-soft);
}

html[data-theme="light"] tbody tr:hover td,
html[data-theme="light"] .sort-button:hover {
  background: #eef3fa;
}

html[data-theme="light"] details {
  background: var(--panel);
  border-color: var(--line);
}

html[data-theme="light"] .notice {
  background: #fff8e6;
  border-color: #d8b25f;
  color: #7c5a16;
}

html[data-theme="light"] .bar-track {
  background: #e2e8f0;
}

html[data-theme="light"] .candidate-photo {
  background: #e2e8f0;
  border-color: var(--line);
}

html[data-theme="light"] .empty {
  border-color: var(--line);
}

html[data-theme="light"] footer {
  background: #e8eef6;
  border-top-color: var(--line);
}

html[data-theme="light"] .status-text {
  color: var(--muted);
}

/* ------------------------------------------------------------------ map page */
html[data-theme="light"] .state-toolbar {
  background: var(--panel-head);
  border-bottom-color: var(--line);
}

html[data-theme="light"] .state-chip:not([aria-pressed="true"]) {
  background: #eef2f7;
  color: var(--text-soft);
}

html[data-theme="light"] .state-chip:hover {
  border-color: #94a3b8;
  color: #0b1322;
}

html[data-theme="light"] .state-select {
  background: var(--field);
  color: var(--text);
  border-color: var(--line);
}

html[data-theme="light"] .scroll-button {
  background: var(--panel);
  border-color: var(--line);
  color: var(--muted);
}

html[data-theme="light"] .map-stage {
  background:
    radial-gradient(
      ellipse at 50% 48%,
      #ffffff 0,
      #f2f6fb 55%,
      #e6edf6 100%
    );
}

html[data-theme="light"] .map-heading h2 {
  color: var(--text-strong);
}

html[data-theme="light"] .map-heading p,
html[data-theme="light"] .map-legend {
  color: var(--muted);
}

html[data-theme="light"] .map-help {
  color: #7b8a9e;
}

html[data-theme="light"] .zoom-button {
  background: var(--panel);
  color: var(--text-soft);
}

html[data-theme="light"] .zoom-button:hover {
  background: #e2e8f0;
}

html[data-theme="light"] .zoom-button.reset {
  color: #b45309;
  border-top-color: var(--line);
}

html[data-theme="light"] .search-box {
  background: rgba(255, 255, 255, .95);
  border-color: var(--line);
  box-shadow: 0 8px 24px rgba(15, 23, 42, .08);
}

html[data-theme="light"] .search-box svg {
  color: var(--muted);
}

html[data-theme="light"] .search-box input {
  color: var(--text);
}

html[data-theme="light"] .search-results {
  background: var(--panel);
  border-color: var(--line);
  box-shadow: 0 12px 35px rgba(15, 23, 42, .15);
}

html[data-theme="light"] .search-result:hover,
html[data-theme="light"] .search-result:focus-visible {
  background: #eef3fa;
}

html[data-theme="light"] .status-seats,
html[data-theme="light"] .status-message {
  color: #45546a;
}

html[data-theme="light"] .map-overlay {
  background: rgba(238, 242, 247, .92);
  color: var(--text-soft);
}

html[data-theme="light"] .boundary-card {
  background: var(--panel);
  border-color: var(--line);
}

html[data-theme="light"] .status-bar {
  background: #e8eef6;
  border-top-color: var(--line);
}

/* --------------------------------------------------------------- reports page */
html[data-theme="light"] .overview-strip {
  background: var(--panel-head);
  border-bottom-color: var(--line);
}

html[data-theme="light"] .control-deck {
  background: var(--panel-head);
  border-color: var(--line);
}

html[data-theme="light"] .layer-switch {
  background: var(--panel);
  border-color: var(--line);
}

html[data-theme="light"] .layer-button:not([aria-pressed="true"]) {
  color: var(--muted);
}

html[data-theme="light"] .doc-chip {
  background: var(--panel);
  border-color: var(--line);
  color: var(--muted);
}

html[data-theme="light"] .doc-chip b {
  color: var(--text-strong);
}

html[data-theme="light"] .coverage-notice {
  background: #fff8e6;
  border-color: #d8b25f;
  color: #7c5a16;
}

html[data-theme="light"] .coverage-notice a {
  color: #0369a1;
  border-bottom-color: #0369a1;
}

html[data-theme="light"] .metric {
  background: var(--panel);
  border-color: var(--line);
}

html[data-theme="light"] .metric-label {
  color: var(--muted);
}

html[data-theme="light"] th {
  background: var(--table-head);
  color: #45546a;
}

html[data-theme="light"] td {
  border-bottom-color: var(--line-subtle);
  color: var(--text-soft);
}

html[data-theme="light"] td.dim {
  color: #7b8a9e;
}

html[data-theme="light"] .seat-table th:first-child,
html[data-theme="light"] .seat-table td:first-child {
  background: var(--panel);
}

html[data-theme="light"] .seat-table tbody tr:hover td,
html[data-theme="light"] .seat-table tbody tr:hover td:first-child {
  background: #eef3fa;
}

html[data-theme="light"] .seat-code {
  color: var(--sky);
}

html[data-theme="light"] .pill {
  background: #eef2f7;
  border-color: var(--line);
  color: var(--text-soft);
}

html[data-theme="light"] .pill.good {
  background: #dcfce7;
  border-color: #16a34a;
  color: #166534;
}

html[data-theme="light"] .pill.bad {
  background: #fee2e2;
  border-color: #dc2626;
  color: #991b1b;
}

html[data-theme="light"] .pill.warn {
  background: #fef3c7;
  border-color: #d97706;
  color: #92400e;
}

html[data-theme="light"] .status-bar {
  background: #e8eef6;
  border-top-color: var(--line);
}

/* ------------------------------------------------------------- login page */
html[data-theme="light"] .login-main {
  background:
    radial-gradient(
      ellipse at 50% 30%,
      #ffffff 0,
      #f2f6fb 55%,
      #e6edf6 100%
    );
}

html[data-theme="light"] .login-card {
  background: var(--panel);
  border-color: var(--line);
  color: var(--text);
  box-shadow: 0 24px 60px rgba(15, 23, 42, .12);
}

html[data-theme="light"] .field input {
  background: var(--field);
  color: var(--text);
  border-color: var(--line);
}

html[data-theme="light"] .field input::placeholder {
  color: #8a99ad;
}

html[data-theme="light"] .password-toggle {
  background: var(--panel-card);
  border-color: var(--line);
  color: var(--muted);
}

html[data-theme="light"] .password-toggle:hover {
  background: #e2e8f0;
  color: #0b1322;
}

html[data-theme="light"] .field-hint,
html[data-theme="light"] .login-foot {
  color: var(--muted);
}

html[data-theme="light"] .login-foot b {
  color: var(--text-soft);
}

html[data-theme="light"] .back-link {
  color: var(--sky);
}

html[data-theme="light"] .back-link:hover {
  color: #075985;
}

html[data-theme="light"] .status-endpoint {
  color: var(--sky);
}

/* ------------------------------------------------ console page extensions
   The console sheets (master data, users, audit, approvals, setup, import,
   reporter, results, settings) still carry literal dark surfaces. These rules
   restate them on the bright palette; only colours change. */

html[data-theme="light"] .panel-box,
html[data-theme="light"] .kpi-card,
html[data-theme="light"] .modal-window {
  background: var(--panel);
  border-color: var(--line);
}

html[data-theme="light"] .panel-head,
html[data-theme="light"] .overview-strip {
  background: var(--panel-head);
  border-color: var(--line);
}

html[data-theme="light"] .content-area {
  background: var(--page);
}

html[data-theme="light"] .kpi-value,
html[data-theme="light"] .diff-val,
html[data-theme="light"] .candidate-name,
html[data-theme="light"] .metric-val,
html[data-theme="light"] .source-title,
html[data-theme="light"] .drop-text,
html[data-theme="light"] .toggle-info strong,
html[data-theme="light"] .placeholder-panel h3,
html[data-theme="light"] .content-header h2 {
  color: var(--text-strong);
}

html[data-theme="light"] table.data-table tr:hover td {
  background: #eef3fa;
}

/* Read-only surfaces: streams, cards, consoles, pickers. */
html[data-theme="light"] .stream-item,
html[data-theme="light"] .party-row,
html[data-theme="light"] .party-chip,
html[data-theme="light"] .source-card,
html[data-theme="light"] .trace-meta-grid,
html[data-theme="light"] .json-payload-view,
html[data-theme="light"] .diff-card,
html[data-theme="light"] .diff-col,
html[data-theme="light"] .candidate-card,
html[data-theme="light"] .candidate-entry-card,
html[data-theme="light"] .history-item,
html[data-theme="light"] .summary-box,
html[data-theme="light"] .dispatch-box,
html[data-theme="light"] .telemetry-console,
html[data-theme="light"] .drop-zone,
html[data-theme="light"] .placeholder-panel,
html[data-theme="light"] .seat-picker-box,
html[data-theme="light"] .selected-chips-container,
html[data-theme="light"] .seat-checklist-scroll,
html[data-theme="light"] .station-bar,
html[data-theme="light"] .calc-banner,
html[data-theme="light"] .timeline-box {
  background: var(--panel-card);
  border-color: var(--line);
  color: var(--text-soft);
}

html[data-theme="light"] .source-card.active-stream {
  background: #eef6fd;
  border-color: #94c9ee;
}

html[data-theme="light"] .candidate-card.is-leading {
  background: #effaf4;
  border-color: #6ee7b7;
}

html[data-theme="light"] .candidate-entry-card input,
html[data-theme="light"] .vote-input,
html[data-theme="light"] .station-bar select,
html[data-theme="light"] .station-bar input {
  background: var(--field);
  border-color: var(--line);
  color: var(--sky);
}

html[data-theme="light"] .json-payload-view {
  color: var(--sky);
}

html[data-theme="light"] .telemetry-msg,
html[data-theme="light"] .seat-checkbox-label,
html[data-theme="light"] .diff-sub,
html[data-theme="light"] .placeholder-panel p {
  color: var(--text-soft);
}

html[data-theme="light"] .telemetry-time {
  color: var(--muted);
}

html[data-theme="light"] .seat-checkbox-label:hover {
  background: #e6edf7;
  color: var(--text-strong);
}

html[data-theme="light"] .drop-zone:hover,
html[data-theme="light"] .drop-zone.dragover {
  background: #eaf4fd;
  border-color: var(--sky);
}

html[data-theme="light"] .placeholder-panel {
  border-color: #b9c7d8;
}

html[data-theme="light"] .placeholder-icon {
  border-color: #9fb4cb;
  color: var(--sky);
}

/* Buttons on the console sheets. */
html[data-theme="light"] .btn-action {
  background: var(--panel);
  border-color: var(--line);
  color: var(--sky);
}

html[data-theme="light"] .btn-action:hover {
  background: #e6edf7;
  color: var(--text-strong);
}

html[data-theme="light"] .btn-action.btn-primary {
  background: var(--red);
  border-color: var(--red);
  color: #fff;
}

html[data-theme="light"] .btn-action.btn-success {
  background: #dcfce7;
  border-color: #16a34a;
  color: #166534;
}

html[data-theme="light"] .btn-action.btn-amber {
  background: #fef3c7;
  border-color: #d97706;
  color: #92400e;
}

html[data-theme="light"] .btn-action.btn-danger {
  background: #fee2e2;
  border-color: #dc2626;
  color: #991b1b;
}

html[data-theme="light"] .btn-stepper {
  background: var(--panel);
  border-color: var(--line);
  color: var(--sky);
}

html[data-theme="light"] .btn-stepper:hover {
  background: #e6edf7;
  color: var(--text-strong);
}

html[data-theme="light"] .modal-head {
  background: var(--panel-head);
  border-color: var(--line);
}

html[data-theme="light"] .modal-window {
  box-shadow: 0 20px 40px rgba(15, 23, 42, .18);
}

/* Tabs, chips and small metadata badges. */
html[data-theme="light"] .tab-btn {
  color: var(--muted);
}

html[data-theme="light"] .tab-btn:hover,
html[data-theme="light"] .tab-btn.active {
  color: var(--text-strong);
}

html[data-theme="light"] .tab-btn.active {
  background: rgba(200, 30, 43, .06);
}

html[data-theme="light"] .endpoint-badge,
html[data-theme="light"] .selected-chip {
  background: #e8f1fb;
  border-color: #b9d4ea;
  color: #075985;
}

html[data-theme="light"] .selected-chip.dun {
  background: #f3e8fd;
  border-color: #cbb0e8;
  color: #6b21a8;
}

html[data-theme="light"] .chip-remove {
  color: #b91c1c;
}

html[data-theme="light"] .seat-type-tag.parliament,
html[data-theme="light"] .seat-badge-chip.parl {
  background: #dbeafe;
  border-color: #3b82f6;
  color: #1e3a8a;
}

html[data-theme="light"] .seat-type-tag.dun,
html[data-theme="light"] .seat-badge-chip.dun {
  background: #f3e8ff;
  border-color: #a855f7;
  color: #6b21a8;
}

html[data-theme="light"] .role-badge.admin,
html[data-theme="light"] .action-badge.recount,
html[data-theme="light"] .status-pill.recount {
  background: #fee2e2;
  border-color: #dc2626;
  color: #991b1b;
}

html[data-theme="light"] .role-badge.approver,
html[data-theme="light"] .action-badge.approval,
html[data-theme="light"] .status-pill.muktamad,
html[data-theme="light"] .approval-pill.approved {
  background: #dcfce7;
  border-color: #16a34a;
  color: #166534;
}

html[data-theme="light"] .role-badge.reporter,
html[data-theme="light"] .action-badge.ingest,
html[data-theme="light"] .status-pill.counting,
html[data-theme="light"] .approval-pill.pending {
  background: #fef3c7;
  border-color: #d97706;
  color: #92400e;
}

html[data-theme="light"] .role-badge.system,
html[data-theme="light"] .status-pill.belum {
  background: #e2e8f0;
  border-color: #94a3b8;
  color: #475569;
}

html[data-theme="light"] .action-badge.override,
html[data-theme="light"] .status-pill.queued,
html[data-theme="light"] .source-chip.rtm {
  background: #ede9fe;
  border-color: #7c3aed;
  color: #5b21b6;
}

html[data-theme="light"] .action-badge.sync,
html[data-theme="light"] .source-chip.spr,
html[data-theme="light"] .status-pill.success {
  background: #e0f2fe;
  border-color: #0284c7;
  color: #075985;
}

html[data-theme="light"] .status-pill.pending {
  background: #fef3c7;
  border-color: #d97706;
  color: #92400e;
}

html[data-theme="light"] .status-pill.failed {
  background: #fee2e2;
  border-color: #dc2626;
  color: #991b1b;
}

html[data-theme="light"] .perm-pill.full {
  background: #dcfce7;
  border-color: #16a34a;
  color: #166534;
}

html[data-theme="light"] .perm-pill.view-edit {
  background: #dbeafe;
  border-color: #3b82f6;
  color: #1e3a8a;
}

html[data-theme="light"] .perm-pill.input {
  background: #ffedd5;
  border-color: #d97706;
  color: #9a3412;
}

html[data-theme="light"] .perm-pill.deny {
  background: #e2e8f0;
  border-color: #94a3b8;
  color: #475569;
}

/* Status ribbons and indicators. */
html[data-theme="light"] .feed-pill,
html[data-theme="light"] .approval-gate-pill {
  background: #fef3c7;
  border-color: #d97706;
  color: #92400e;
}

html[data-theme="light"] .gateway-pill,
html[data-theme="light"] .health-badge {
  background: #e0f2fe;
  border-color: #0284c7;
  color: #075985;
}

html[data-theme="light"] .feed-indicator {
  background: #dcfce7;
  border-color: #16a34a;
  color: #166534;
}

html[data-theme="light"] .system-status-indicator {
  background: #dcfce7;
  border-color: #16a34a;
  color: #166534;
}

html[data-theme="light"] .reporter-profile-chip {
  background: #f1f5f9;
  border-color: #cbd5e1;
}

html[data-theme="light"] .reporter-avatar {
  background: #e0f2fe;
  color: #075985;
}

/* Switch control used by the election setup sheet. */
html[data-theme="light"] .slider {
  background-color: #cbd5e1;
  border-color: #94a3b8;
}

html[data-theme="light"] input:checked + .slider {
  background-color: var(--emerald);
  border-color: var(--emerald);
}

html[data-theme="light"] .content-header p,
html[data-theme="light"] .eyebrow {
  color: var(--muted);
}

/* Scrollbars inside the bright console. */
html[data-theme="light"] .stream-list::-webkit-scrollbar-track {
  background: #eef3fa;
}

html[data-theme="light"] .stream-list::-webkit-scrollbar-thumb {
  background: #c2cfdf;
}

/* Map controls that still use the old "dark button" name. */
html[data-theme="light"] .dark-button {
  background: var(--panel);
  border-color: var(--line);
  color: var(--sky);
}

html[data-theme="light"] .dark-button:hover {
  background: #e6edf7;
  color: var(--text-strong);
}

html[data-theme="light"] .zoom-stack {
  background: rgba(255, 255, 255, .95);
  border-color: var(--line);
  box-shadow: 0 6px 18px rgba(15, 23, 42, .08);
}

/* Map labels: dark ink with a light halo instead of light ink on dark. */
html[data-theme="light"] .map-label {
  fill: #101a2b;
  stroke: #ffffff;
}

html[data-theme="light"] .constituency-map-label tspan:first-child {
  fill: #101a2b;
}

html[data-theme="light"] .state-label-leader {
  stroke: #64748b;
}

/* Login notice and any remaining free text fields. */
html[data-theme="light"] .alert.info {
  background: #eaf2fb;
  border-color: #b9d4ea;
  color: #1e4a6d;
}

html[data-theme="light"] textarea {
  background: var(--field);
  border-color: var(--line);
  color: var(--text);
}


/* Active poll strip on the public map. */
html[data-theme="light"] .election-scope { color: #5b6b80; }
html[data-theme="light"] .election-scope strong { color: #0b1322; }
html[data-theme="light"] .election-scope-date { color: #7b8a9e; }

/* Active poll strip on the analysis page. */
html[data-theme="light"] .election-scope { color: #5b6b80; }
html[data-theme="light"] .election-scope strong { color: #0b1322; }

/* Election edit record summary. */
html[data-theme="light"] .record-grid dd { color: #0b1322; }

/* Past-election record screen. */
html[data-theme="light"] .history-tab { background: #f6f9fc; color: #33415c; }
html[data-theme="light"] .history-tab.active { background: #ffffff; color: #0b1322; }
html[data-theme="light"] .history-row-active td { background: #eaf3fb; }
html[data-theme="light"] .history-summary > div { background: #f6f9fc; }
html[data-theme="light"] .history-summary strong { color: #0b1322; }

/* Inline edit affordance in the election table. */
html[data-theme="light"] .row-edit { color: #0369a1; }
html[data-theme="light"] .row-edit:hover { color: #0b1322; }

/* Race to government widget on the public map. */
html[data-theme="light"] .race { box-shadow: 0 8px 22px rgba(15, 34, 58, .12); }
html[data-theme="light"] .race-note { box-shadow: 0 10px 22px rgba(15, 34, 58, .16); }

/*
  Seat drawer opened from the public map (assets/presenter-drawer.css).

  It is deliberately NOT repainted here: the drawer is the studio's broadcast
  panel, and a visitor who clicks a seat must read the same dark card the
  presenter reads on air. The generic light-theme ink rules above would still
  reach its tiles and candidate rows (white text on a white surface), so the
  widget's own palette is pinned back on it.
*/
html[data-theme="light"] .presenter-drawer {
  --sky: #38bdf8;
  --muted: #94a3b8;
  --red: #dc172b;
}

html[data-theme="light"] .presenter-drawer .drawer-title,
html[data-theme="light"] .presenter-drawer .kpi-value,
html[data-theme="light"] .presenter-drawer .candidate-name,
html[data-theme="light"] .presenter-drawer .vote-count {
  color: #ffffff;
}

html[data-theme="light"] .presenter-drawer .candidate-empty { color: #94a3b8; }
