:root[data-theme="dark"] {
  color-scheme: dark;
  --paper: #111b1c;
  --surface: #192526;
  --ink: #e5efeb;
  --muted: #a4b6b2;
  --line: #30413f;
  --lake: #80c9b8;
  --lake-soft: #233c38;
  --forest: #9ac39f;
  --terracotta: #e59a7b;
  --warning: #ed8977;
  --shadow: 0 18px 48px rgba(0, 0, 0, .28);
}

:root[data-theme="dark"] body { background: var(--paper); color: var(--ink); }
:root[data-theme="dark"] .topbar {
  border-bottom-color: rgba(220, 240, 231, .08);
  background: rgba(17, 27, 28, .9);
}
:root[data-theme="dark"] .wordmark span,
:root[data-theme="dark"] .topbar .primary-navigation__ledger,
:root[data-theme="dark"] .travel-navigation summary { color: var(--muted); }
:root[data-theme="dark"] .travel-navigation summary { border-color: var(--line); background: var(--surface); }
:root[data-theme="dark"] .travel-navigation-menu { border-color: var(--line); background: rgba(25, 37, 38, .98); }
:root[data-theme="dark"] .topbar .travel-navigation-menu a { color: var(--muted); background: #202f30; }
:root[data-theme="dark"] .topbar .travel-navigation-menu a:hover,
:root[data-theme="dark"] .topbar .travel-navigation-menu a:focus-visible { color: #fff; background: #31504a; }
:root[data-theme="dark"] .hero {
  background:
    radial-gradient(circle at 82% 32%, rgba(214, 172, 111, .22) 0 11%, transparent 11.3%),
    radial-gradient(circle at 78% 43%, rgba(220, 204, 150, .08), transparent 36%),
    linear-gradient(130deg, #0b2528 0%, #103d3d 58%, #1b4c43 100%);
  box-shadow: 0 24px 64px rgba(0, 0, 0, .3);
}
:root[data-theme="dark"] .trip-notices { border-color: #66543a; background: #302a20; }
:root[data-theme="dark"] .trip-notices summary,
:root[data-theme="dark"] .trip-notices ul { color: #e4d0a9; }
:root[data-theme="dark"] .flight-arrow,
:root[data-theme="dark"] .day-chevron { border-color: var(--line); color: var(--ink); background: var(--surface); }
:root[data-theme="dark"] .route-section { border-color: var(--line); background: var(--surface); box-shadow: 0 12px 34px rgba(0, 0, 0, .18); }
:root[data-theme="dark"] .day-navigation { background: rgba(17, 27, 28, .94); }
:root[data-theme="dark"] .day-navigation button { border-color: var(--line); background: var(--surface); }
:root[data-theme="dark"] .day-navigation button[aria-current="true"] { background: #31534b; border-color: #47796b; }
:root[data-theme="dark"] .day-navigation button[aria-current="true"] span { color: #c2ddd1; }
:root[data-theme="dark"] .schedule-item::before { background: var(--line); }
:root[data-theme="dark"] .schedule-item::after { background: var(--paper); }
:root[data-theme="dark"] .schedule-map-link { border-color: #3b5b5d; color: #b0dfe0; background: #203538; }
:root[data-theme="dark"] .schedule-map-link:hover { background: #294548; }
:root[data-theme="dark"] .schedule-ticket { border-color: #684c3c; background: #30251f; }
:root[data-theme="dark"] .schedule-ticket summary,
:root[data-theme="dark"] .schedule-ticket__body p { color: #edb89e; }
:root[data-theme="dark"] .schedule-ticket.is-purchased { border-color: #3d5b44; background: #202e25; }
:root[data-theme="dark"] .schedule-ticket.is-purchased summary { color: #acd0a9; }
:root[data-theme="dark"] .detail-note { color: #d0b6a8; background: rgba(229, 154, 123, .1); }
:root[data-theme="dark"] .cost-tag { color: #c2cfca; background: #263332; }
:root[data-theme="dark"] .ticket-filters button { border-color: var(--line); background: #1b292a; }
:root[data-theme="dark"] .ticket-filters button.is-active { border-color: #436b62; background: #31534b; }
:root[data-theme="dark"] .ticket-card { border-color: var(--line); background: #192526; }
:root[data-theme="dark"] .ticket-card.is-purchased { background: #1d2b23; }
:root[data-theme="dark"] .ticket-uncertainties { color: #c1ceca; background: #253130; }
:root[data-theme="dark"] .return-deadline { color: #f0c1a5; background: #382820; border-color: #a65e43; }
:root[data-theme="dark"] .return-deadline.is-urgent { color: #ffc1b2; background: #3d2422; border-color: #bd5c50; }
:root[data-theme="dark"] .accordion { border-color: var(--line); background: #192526; }
:root[data-theme="dark"] .accordion ul { color: #c7d2ce; }
:root[data-theme="dark"] .todo-form input { border-color: var(--line); color: var(--ink); background: #192526; }
:root[data-theme="dark"] .todo-item:focus-within { background: #20332f; }
:root[data-theme="dark"] .todo-progress-track,
:root[data-theme="dark"] .packing-progress { background: #2b3a37; }
:root[data-theme="dark"] .todo-import { border-color: #3e6258; color: #b7dfcd; background: #20352f; }
:root[data-theme="dark"] .todo-import:hover { background: #2a453b; }
:root[data-theme="dark"] .todo-import span { color: #c3d7ce; background: rgba(12, 25, 23, .5); }
:root[data-theme="dark"] .packing-item input { border-color: #718984; }
:root[data-theme="dark"] .mobile-dock {
  border-color: rgba(210, 230, 221, .13);
  background: rgba(25, 37, 38, .94);
  box-shadow: 0 12px 42px rgba(0, 0, 0, .38);
}
:root[data-theme="dark"] .mobile-dock a { color: #adbfba; }
:root[data-theme="dark"] .mobile-dock a:hover,
:root[data-theme="dark"] .mobile-dock a.is-active { color: #d5f0e4; background: #2b4942; }
:root[data-theme="dark"] .runtime-notice { border-color: #766044; color: #eed7b1; background: #302a20; }
:root[data-theme="dark"] .loading-error { color: #fff; }
:root[data-theme="dark"] .page-loader {
  color: var(--ink);
  background:
    radial-gradient(ellipse at 50% 43%, rgba(33, 54, 51, .96) 0%, rgba(24, 42, 41, .78) 31%, transparent 68%),
    radial-gradient(ellipse at 10% 15%, rgba(48, 88, 75, .58), transparent 46%),
    radial-gradient(ellipse at 92% 82%, rgba(82, 65, 46, .45), transparent 43%),
    #111b1c;
}
:root[data-theme="dark"] .page-loader__content h2 { color: #e5efeb; }
:root[data-theme="dark"] .page-loader__eyebrow { color: #9ac7b7; }
:root[data-theme="dark"] .page-loader__caption { color: #b2c2bc; }

/* Route diagrams remain readable against the dark canvas. */
:root[data-theme="dark"] .geo-view-tabs button,
:root[data-theme="dark"] .geo-stop-list button { border-color: #344945; color: var(--ink); background: #1d2b29; }
:root[data-theme="dark"] .geo-view-tabs button[aria-pressed="true"] { border-color: #477b6c; color: #f5faf6; background: #31584d; }
:root[data-theme="dark"] .geo-stop-list button:hover,
:root[data-theme="dark"] .geo-stop-list button[aria-expanded="true"],
:root[data-theme="dark"] .geo-stop-list button.is-linked { border-color: #527968; background: #263b34; }
:root[data-theme="dark"] .geo-city-plot { border-color: #354641; background: radial-gradient(circle at 50% 50%, #273530, #1b2927); }
:root[data-theme="dark"] .is-geographic .travel-map-scroll { border-color: #364944; background: #202e2c; }
:root[data-theme="dark"] .geo-city-pin__label { color: #e8f0eb; background: rgba(25, 37, 38, .95); }
:root[data-theme="dark"] .geo-city-attribution { color: #c0d0ca; background: rgba(25, 37, 38, .88); }
:root[data-theme="dark"] .day-route-map { border-color: var(--line); background: #172322; }
:root[data-theme="dark"] .geo-stop-list time { color: #c1e5d3; background: #27453a; }
:root[data-theme="dark"] .geo-map-hint,
:root[data-theme="dark"] .geo-city-legend,
:root[data-theme="dark"] .geo-map-scale,
:root[data-theme="dark"] .geo-stop-main small { color: #a8beb5; }

/* Shared expense ledger surfaces and fields. */
:root[data-theme="dark"] .ledger-view,
:root[data-theme="dark"] body[data-active-view="ledger"],
:root[data-theme="dark"] body[data-active-view="ledger"] .topbar { background: var(--paper); }
:root[data-theme="dark"] .ledger-entry-card,
:root[data-theme="dark"] .ledger-list-section,
:root[data-theme="dark"] .ledger-stats-overview,
:root[data-theme="dark"] .ledger-transfer-row,
:root[data-theme="dark"] .ledger-member-stat { border-color: var(--line); background: var(--surface); box-shadow: 0 10px 28px rgba(0, 0, 0, .16); }
:root[data-theme="dark"] .ledger-select,
:root[data-theme="dark"] .ledger-input,
:root[data-theme="dark"] .ledger-dialog,
:root[data-theme="dark"] .ledger-currency-select-button,
:root[data-theme="dark"] .ledger-currency-result,
:root[data-theme="dark"] .ledger-currency-menu,
:root[data-theme="dark"] .ledger-bill-note-form input { border-color: var(--line); color: var(--ink); background: #202e2e; }
:root[data-theme="dark"] .ledger-category-choice,
:root[data-theme="dark"] .ledger-onboarding,
:root[data-theme="dark"] .ledger-currency-dropdown summary,
:root[data-theme="dark"] .ledger-field-amount .ledger-amount-input,
:root[data-theme="dark"] .ledger-converted-input-wrap { border-color: var(--line); color: #c4d3ce; background: #202e2e; }
:root[data-theme="dark"] .ledger-category-choice:has(input:checked),
:root[data-theme="dark"] .ledger-currency-option:hover,
:root[data-theme="dark"] .ledger-currency-option[aria-current="true"] { color: #c2e7dc; background: #29453e; }
:root[data-theme="dark"] .ledger-currency-chip,
:root[data-theme="dark"] .ledger-currency-search { border-color: var(--line); color: #c6d4cf; background: #1b2929; }
:root[data-theme="dark"] .ledger-currency-option { color: var(--ink); }
:root[data-theme="dark"] .ledger-icon-button,
:root[data-theme="dark"] .ledger-confirm-actions button { border-color: var(--line); color: var(--ink); background: #202e2e; }
:root[data-theme="dark"] .ledger-text-button:hover,
:root[data-theme="dark"] .ledger-icon-button:hover { background: #293a38; }
:root[data-theme="dark"] .ledger-tab { color: #9aadaa; }
:root[data-theme="dark"] .ledger-tab.ledger-is-active { color: var(--ink); }
:root[data-theme="dark"] .ledger-member-chevron { color: var(--ink); }
:root[data-theme="dark"] .ledger-bill-payer b,
:root[data-theme="dark"] .ledger-bill-participants b { color: #c6d3cf; }
:root[data-theme="dark"] .ledger-bill-note-trigger span:last-child { color: #bacbc5; }
:root[data-theme="dark"] .ledger-bill-note-trigger:hover { background: #263533; }
:root[data-theme="dark"] .ledger-bill-note-form button { color: #bfe4d9; background: #29433d; }
:root[data-theme="dark"] .ledger-bill-note-form button:last-child { color: #bdc9c5; background: #2b3534; }
:root[data-theme="dark"] .ledger-avatar-stack .ledger-avatar + .ledger-avatar { border-color: var(--surface); }
:root[data-theme="dark"] .ledger-person-input:checked + .ledger-person-visual .ledger-avatar { box-shadow: 0 0 0 2px var(--surface), 0 0 0 4px var(--lake); }
:root[data-theme="dark"] .ledger-person-check { border-color: var(--surface); }
:root[data-theme="dark"] .ledger-dialog-close { color: var(--ink); background: #2a3937; }
:root[data-theme="dark"] .ledger-transfer-row + .ledger-transfer-row,
:root[data-theme="dark"] .ledger-member-stat + .ledger-member-stat { border-top-color: var(--line); }

.theme-toggle {
  min-width: 76px;
  min-height: 38px;
  padding: 0 11px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--ink);
  background: var(--surface);
  font: inherit;
  font-size: 11px;
  font-weight: 700;
  cursor: pointer;
  transition: background-color .2s ease, border-color .2s ease, color .2s ease, transform .2s ease;
}
.theme-toggle:hover { transform: translateY(-1px); border-color: var(--lake); }
.theme-toggle:active { transform: scale(.96); }
.theme-toggle:focus-visible { outline: 3px solid var(--lake); outline-offset: 3px; }
.theme-toggle__icon { width: 17px; font: 700 17px/1 system-ui, sans-serif; }
.theme-toggle__label { white-space: nowrap; }

@media (max-width: 760px) {
  .theme-toggle { min-width: 40px; width: 40px; min-height: 40px; padding: 0; }
  .theme-toggle__label { display: none; }
  :root[data-theme="dark"] .travel-navigation-menu { background: var(--surface); }
}

@media (prefers-reduced-motion: reduce) {
  .theme-toggle { transition: none; }
}

@media print {
  :root[data-theme="dark"] { color-scheme: light; --paper: #fff; --surface: #fff; --ink: #17292f; --muted: #526166; --line: #d7dfdc; }
  .theme-toggle { display: none !important; }
}
