/* Planify dark overrides. Loaded after the component styles; light mode is
   untouched. Photos, posters, videos, illustrations and OSM tiles are not
   filtered. The shared theme owns the preference and the --tools-* palette. */
html[data-theme="dark"] {
  --plans-dark-bg: var(--tools-bg, #141a17);
  --plans-dark-surface: var(--tools-surface, #1e2721);
  --plans-dark-raised: var(--tools-raised, #27322a);
  --plans-dark-text: var(--tools-text, #edf2e8);
  --plans-dark-muted: var(--tools-muted, #b1bdac);
  --plans-dark-border: var(--tools-border, #435047);
  --plans-dark-accent: var(--tools-accent, #d3e798);
  --plans-dark-accent-ink: var(--tools-accent-ink, #26351b);
  --plans-dark-success: #283725;
  --plans-dark-warning: #3d3021;
  --plans-dark-warning-text: #f5ce94;
  --plans-dark-error: #432a29;
  --plans-dark-error-text: #ffb9a3;
  --plans-dark-purple: #342d40;
  --plans-dark-purple-text: #ddc6f2;
  color-scheme: dark;
  color: var(--plans-dark-text);
  background: var(--plans-dark-bg);
  scrollbar-color: #667662 var(--plans-dark-bg);
}

/* Page frame, landing, sticky steps and shared form controls. */
html[data-theme="dark"] body { color: var(--plans-dark-text); background: var(--plans-dark-bg); }
html[data-theme="dark"] :focus-visible { outline-color: var(--plans-dark-accent); }
html[data-theme="dark"] :is(.top, footer, .agenda-head, .flow-nav, .date-confirm, .coverage) { border-color: var(--plans-dark-border); }
html[data-theme="dark"] #count,
html[data-theme="dark"] :is(.brand span, .lead, .micro, footer, .agenda-head .eyebrow,
  .week-card > .eyebrow, .week-foot, .flow-nav button, .calendar-explainer,
  .month-select-label, .cost-filter, .free-toggle, .proximity-summary > span) { color: var(--plans-dark-muted); }
html[data-theme="dark"] :is(h1 em, .text-button, .reset-filters) { color: var(--plans-dark-accent); }
html[data-theme="dark"] .dot { background: var(--plans-dark-accent); box-shadow: 0 0 0 5px #d3e79818; }
html[data-theme="dark"] :is(.skip-link, .top nav a:hover) { background: var(--plans-dark-raised); color: var(--plans-dark-text); }
html[data-theme="dark"] :is(.top nav a[aria-current="page"], .flow-nav button[aria-current="step"]) {
  background: var(--plans-dark-success); color: var(--plans-dark-accent);
}
html[data-theme="dark"] :is(.primary, .event-registration, .map-view-button) {
  color: var(--plans-dark-accent-ink); background: var(--plans-dark-accent); border-color: var(--plans-dark-accent); box-shadow: none;
}
html[data-theme="dark"] :is(.primary, .event-registration, .map-view-button):hover { background: #e1efb4; border-color: #e1efb4; }
html[data-theme="dark"] .week-card { background: var(--plans-dark-surface); border-color: var(--plans-dark-border); box-shadow: 7px 9px 0 #0b110d; }
html[data-theme="dark"] .week-days span { background: var(--plans-dark-raised); color: var(--plans-dark-text); }
html[data-theme="dark"] .week-days span:nth-last-child(-n+2) { background: var(--plans-dark-purple); color: var(--plans-dark-purple-text); }
/* The small printed illustration keeps its original inks, including its text. */
html[data-theme="dark"] .ticket { color: #263226; }
html[data-theme="dark"] :is(.date-confirm, .results-toolbar) { background: var(--plans-dark-bg); border-color: var(--plans-dark-border); }
html[data-theme="dark"] .results-toolbar { background: var(--plans-dark-surface); }
html[data-theme="dark"] #catalog-controls input,
html[data-theme="dark"] #catalog-controls select,
html[data-theme="dark"] :is(.plan-search, .cost-filter select, .month-select-label select,
  .map-radius-label select, .map-search-panel input) {
  color: var(--plans-dark-text); background: var(--plans-dark-bg); border-color: var(--plans-dark-border);
}
html[data-theme="dark"] .plan-search input { color: var(--plans-dark-text); }
html[data-theme="dark"] :is(.plan-search input, #catalog-controls input, .map-search-panel input)::placeholder { color: var(--plans-dark-muted); opacity: 1; }
html[data-theme="dark"] .plan-search svg { stroke: var(--plans-dark-muted); }
html[data-theme="dark"] .plan-search:focus-within { border-color: var(--plans-dark-accent); box-shadow: 0 0 0 3px #d3e79826; }
html[data-theme="dark"] .free-toggle input { accent-color: var(--plans-dark-accent); }
html[data-theme="dark"] .results-heading #toggle-filters,
html[data-theme="dark"] :is(.filters button, .event-source-tab) {
  background: var(--plans-dark-raised); color: var(--plans-dark-text); border-color: var(--plans-dark-border);
}
html[data-theme="dark"] :is(.filters button[aria-pressed="true"], .event-source-tab[aria-pressed="true"]) {
  background: var(--plans-dark-accent); color: var(--plans-dark-accent-ink); border-color: var(--plans-dark-accent);
}
html[data-theme="dark"] :is(.results-heading #toggle-filters[aria-expanded="true"], .proximity-chip) {
  background: var(--plans-dark-success); color: var(--plans-dark-accent); border-color: #71875f;
}
html[data-theme="dark"] .proximity-chip:hover { background: #34462a; }

/* Calendar: selected, past, disabled and seasonal remain different states. */
html[data-theme="dark"] .week-picker { background: var(--plans-dark-surface); border-color: var(--plans-dark-border); }
html[data-theme="dark"] :is(.calendar-months, .calendar-legend, .seasonal-plans) { border-color: var(--plans-dark-border); }
html[data-theme="dark"] :is(.calendar-weekdays, .calendar-caption p, .calendar-key, .calendar-help,
  .day-count, .seasonal-plans > p) { color: var(--plans-dark-muted); }
html[data-theme="dark"] :is(.month-choice, .calendar-day) { color: var(--plans-dark-text); background: var(--plans-dark-raised); border-color: var(--plans-dark-border); }
html[data-theme="dark"] :is(.month-choice:hover, .calendar-day:hover:not(:disabled)) { background: #34402f; border-color: #81926f; }
html[data-theme="dark"] .month-choice[aria-pressed="true"] { color: var(--plans-dark-accent-ink); background: var(--plans-dark-accent); border-color: var(--plans-dark-accent); }
html[data-theme="dark"] .calendar-day.is-past { color: var(--plans-dark-muted); background: var(--plans-dark-bg); }
html[data-theme="dark"] .calendar-day.is-past .day-dots { opacity: 1; }
html[data-theme="dark"] .calendar-day[aria-pressed="true"] {
  color: var(--plans-dark-text); background: #34402f; border-color: var(--plans-dark-accent); box-shadow: 0 3px 0 #0b110d;
}
html[data-theme="dark"] .calendar-day[aria-pressed="true"] .day-marker { color: var(--plans-dark-accent); }
html[data-theme="dark"] .day-empty { background: var(--plans-dark-surface); color: var(--plans-dark-muted); border-color: var(--plans-dark-border); }
/* Keep category hues and the full/hollow distinction; outline tiny dots and
   give the existing category SVG inks a small contrasting paper background. */
html[data-theme="dark"] :is(.category-dot, .map-category-dot) { box-shadow: 0 0 0 1px #c6d1bd; }
html[data-theme="dark"] .event-category-icon { background: #edf2e8; border-color: #c6d1bd; }

/* Results, progress, warnings and loading placeholders. */
html[data-theme="dark"] :is(.event, .event.event-preview, .progress-panel) { background: var(--plans-dark-surface); border-color: var(--plans-dark-border); }
html[data-theme="dark"] .event:hover { border-color: #81926f; }
html[data-theme="dark"] :is(.event-preview .event-preview-open, .progress-source-name) { color: var(--plans-dark-text); }
html[data-theme="dark"] .event-preview-open:hover { background: var(--plans-dark-raised); }
html[data-theme="dark"] #source-list li span,
html[data-theme="dark"] #progress-elapsed,
html[data-theme="dark"] :is(.group-title, .category, .venue, .schedule, .event .schedule, .note, .cost, .cost-detail,
  .sources, .coverage, .event-preview-time, .event-preview-distance,
  .progress-stages li, .progress-source-status) { color: var(--plans-dark-muted); }
html[data-theme="dark"] .event-preview-open .event-preview-arrow,
html[data-theme="dark"] .progress-panel > summary::after { color: var(--plans-dark-accent); }
html[data-theme="dark"] :is(.date, .poster-tag) { background: var(--plans-dark-purple); color: var(--plans-dark-purple-text); }
html[data-theme="dark"] :is(.date.ongoing, .event .cost.is-free, .event .cost-badge.is-free) { background: var(--plans-dark-success); color: var(--plans-dark-accent); }
html[data-theme="dark"] .event .cost-badge.is-paid { background: var(--plans-dark-warning); color: var(--plans-dark-warning-text); }
html[data-theme="dark"] .event .cost-badge.is-unknown { background: var(--plans-dark-purple); color: var(--plans-dark-purple-text); }
html[data-theme="dark"] :is(.open, .event .open, .sources a) { background: var(--plans-dark-raised); color: var(--plans-dark-accent); border-color: var(--plans-dark-border); }
html[data-theme="dark"] :is(.open:hover, .event .open:hover, .sources a:hover) { background: #34462a; }
html[data-theme="dark"] #source-list li,
html[data-theme="dark"] :is(.event .actions, .progress-stages li, .progress-source) { border-color: var(--plans-dark-border); }
html[data-theme="dark"] :is(.message, .event-detail-status, .map-notice) { background: var(--plans-dark-raised); color: var(--plans-dark-text); }
html[data-theme="dark"] :is(.message.error, .event-detail-status.is-error) { background: var(--plans-dark-error); color: var(--plans-dark-error-text); }
html[data-theme="dark"] :is(.warning, .map-warning) { background: var(--plans-dark-warning); color: var(--plans-dark-warning-text); border-color: #ad8853; }
html[data-theme="dark"] .skeleton i { background-image: linear-gradient(100deg, #27322a 30%, #394737 45%, #27322a 60%); }
html[data-theme="dark"] .progress-indicator { border-color: var(--plans-dark-border); border-top-color: var(--plans-dark-accent); }
html[data-theme="dark"] .progress-stages li[data-state="running"] { color: var(--plans-dark-accent); border-color: var(--plans-dark-accent); }
html[data-theme="dark"] .progress-stages li[data-state="done"] { color: var(--plans-dark-accent); border-color: #81926f; }
html[data-theme="dark"] .progress-stages li[data-state="failed"] { color: var(--plans-dark-error-text); border-color: #c4846e; }
html[data-theme="dark"] .progress-source[data-state="waiting"] { opacity: 1; }
html[data-theme="dark"] .progress-source[data-state="running"] .progress-source-status { color: var(--plans-dark-accent); }
html[data-theme="dark"] :is(.progress-source[data-state="unavailable"], .progress-source[data-state="failed"]) .progress-source-status { color: var(--plans-dark-error-text); }
html[data-theme="dark"] :is(.progress-source[data-state="ok"], .progress-source[data-state="partial"]) .progress-source-status::before { color: var(--plans-dark-accent); }
html[data-theme="dark"] .progress-panel.finished { background: var(--plans-dark-success); }
html[data-theme="dark"] .progress-panel.finished .progress-indicator { color: var(--plans-dark-accent); }
html[data-theme="dark"] .progress-panel.failed { border-color: #c4846e; }
html[data-theme="dark"] .progress-panel.failed .progress-indicator { color: var(--plans-dark-error-text); }

/* Full-screen event reader and natural-colour media. */
html[data-theme="dark"] :is(.event-dialog, .plans-map-dialog) { color: var(--plans-dark-text); background: var(--plans-dark-bg); }
html[data-theme="dark"] :is(.event-dialog, .plans-map-dialog)::backdrop { background: #070d0ad9; }
html[data-theme="dark"] .event-detail-bar { background: var(--plans-dark-bg); border-color: var(--plans-dark-border); }
html[data-theme="dark"] .event-detail-bar button { color: var(--plans-dark-accent); }
html[data-theme="dark"] .event-detail-bar button:hover { background: var(--plans-dark-raised); }
html[data-theme="dark"] .event-detail-share { border-color: var(--plans-dark-border) !important; }
html[data-theme="dark"] :is(.event-detail-category, .event-detail-facts dt, .event-detail-note,
  .event-detail-description .event-detail-muted, .event-media-unavailable, .event-media-controls,
  .event-detail-credits, .event-source-facts dt, .event-other-dates) { color: var(--plans-dark-muted); }
html[data-theme="dark"] :is(.event-detail-facts, .event-detail-credits, .event-source-facts) { border-color: var(--plans-dark-border); }
html[data-theme="dark"] :is(.event-detail-source-links a, .event-detail-credits a, .event-other-dates a) { color: var(--plans-dark-accent); }
html[data-theme="dark"] :is(.event-detail-retry, .event-media-arrow) { background: var(--plans-dark-raised); border-color: var(--plans-dark-border); color: var(--plans-dark-accent); }
html[data-theme="dark"] .event-media-stage { background: #0c120e; }

/* Source directory, inventories and sticky coverage table headings. */
html[data-theme="dark"] #source-catalog { background: var(--plans-dark-surface); color: var(--plans-dark-text); border-color: var(--plans-dark-border); }
html[data-theme="dark"] #source-catalog > summary::after,
html[data-theme="dark"] :is(.catalog-source-name, .catalog-source-links a,
  .coverage-matrix > summary, .catalog-inventories > summary) { color: var(--plans-dark-accent); }
html[data-theme="dark"] :is(#catalog-controls label, #source-catalog #catalog-summary, #source-catalog #catalog-note,
  #catalog-list .catalog-source-meta, #catalog-list .catalog-source-note, #catalog-list .catalog-empty) { color: var(--plans-dark-muted); }
html[data-theme="dark"] :is(#catalog-list .catalog-source, #catalog-list .catalog-empty, .coverage-matrix,
  .catalog-inventories, .coverage-table-scroll th, .coverage-table-scroll td) { border-color: var(--plans-dark-border); }
html[data-theme="dark"] .catalog-source-status { background: var(--plans-dark-raised); color: var(--plans-dark-muted); }
html[data-theme="dark"] .catalog-source[data-status="connected"] .catalog-source-status { background: var(--plans-dark-success); color: var(--plans-dark-accent); }
html[data-theme="dark"] .catalog-source[data-status="closed"] .catalog-source-status { background: var(--plans-dark-warning); color: var(--plans-dark-warning-text); }
html[data-theme="dark"] .catalog-source a:hover { color: #e1efb4; }
html[data-theme="dark"] :is(#catalog-more, .catalog-retry) { background: var(--plans-dark-raised); border-color: var(--plans-dark-border); color: var(--plans-dark-accent); }
html[data-theme="dark"] :is(#catalog-more:hover, .catalog-retry:hover) { background: #34462a; }
html[data-theme="dark"] .coverage-table-scroll thead { background: var(--plans-dark-surface); }
html[data-theme="dark"] .coverage-table-scroll tr[data-gap="true"] td { color: var(--plans-dark-warning-text); }

/* Map chrome only: OSM tiles, photographic layers and the two-tone crosshair
   retain their original rendering. Dark tags stay legible above the light map. */
html[data-theme="dark"] :is(.map-header, .map-footer, .map-selection-header, .map-event-list li + li, .map-venue-choice) { border-color: var(--plans-dark-border); }
html[data-theme="dark"] :is(.map-controls, .map-footer) { background: var(--plans-dark-bg); }
html[data-theme="dark"] :is(.map-back, .map-clear, .map-list-toggle, .map-selection-close,
  .map-event-arrow, .map-location-source) { color: var(--plans-dark-accent); }
html[data-theme="dark"] :is(.map-day, .map-radius-label, .map-venue-empty, .map-search-note,
  .map-selection-header p, .map-event-meta, .map-event-venue, .map-empty-list, .map-counts, .map-info) { color: var(--plans-dark-muted); }
html[data-theme="dark"] :is(.map-reference-label, .map-venue-choice, .map-event-open) { color: var(--plans-dark-text); }
html[data-theme="dark"] :is(.map-workspace, .map-canvas, .map-canvas.leaflet-container, .map-loading) { background: var(--plans-dark-surface); }
html[data-theme="dark"] .map-loading { color: var(--plans-dark-muted); }
html[data-theme="dark"] .map-canvas:focus-visible { outline-color: var(--plans-dark-accent); }
html[data-theme="dark"] .map-button { background: var(--plans-dark-raised); color: var(--plans-dark-text); border-color: var(--plans-dark-border); }
html[data-theme="dark"] :is(.map-button:hover, .map-venue-choice:hover, .map-event-open:hover) { background: #34402f; }
html[data-theme="dark"] :is(.map-button[aria-pressed="true"], .map-button-primary) { background: var(--plans-dark-accent); color: var(--plans-dark-accent-ink); border-color: var(--plans-dark-accent); }
html[data-theme="dark"] :is(.map-button[aria-pressed="true"], .map-button-primary):hover { background: #e1efb4; }
html[data-theme="dark"] .map-retry { color: var(--plans-dark-warning-text); }
html[data-theme="dark"] :is(.map-pick-bar, .map-search-panel, .map-selection, .map-info[open]) {
  color: var(--plans-dark-text); background: var(--plans-dark-surface); border-color: var(--plans-dark-border); box-shadow: 0 5px 24px #0006;
}
html[data-theme="dark"] .map-marker-tag { background: var(--plans-dark-surface); color: var(--plans-dark-text); border-color: #81926f; box-shadow: 0 2px 7px #0006; }
html[data-theme="dark"] .map-marker-tag::after { background: var(--plans-dark-surface); border-color: #81926f; }
html[data-theme="dark"] .map-marker-count { background: var(--plans-dark-raised); color: var(--plans-dark-text); }
html[data-theme="dark"] .map-cluster-tag,
html[data-theme="dark"] .map-cluster-tag::after { background: var(--plans-dark-raised); border-color: #81926f; }
html[data-theme="dark"] .map-cluster-count { background: var(--plans-dark-accent); color: var(--plans-dark-accent-ink); }
html[data-theme="dark"] :is(.map-event-marker:hover, .map-event-marker.is-selected) .map-marker-tag {
  background: #34462a; color: var(--plans-dark-text); border-color: var(--plans-dark-accent); box-shadow: 0 2px 8px #0008;
}
html[data-theme="dark"] :is(.map-event-marker:hover, .map-event-marker.is-selected) .map-marker-tag::after { background: #34462a; border-color: var(--plans-dark-accent); }
/* Leaflet loads lazily after this sheet. Scoped specificity and the existing
   attribution !important rules are accounted for without touching tile pixels. */
html[data-theme="dark"] .map-canvas .leaflet-control-attribution {
  background: var(--plans-dark-surface) !important; color: var(--plans-dark-muted) !important; box-shadow: 0 0 0 1px var(--plans-dark-border);
}
html[data-theme="dark"] .map-canvas .leaflet-control-attribution a { color: var(--plans-dark-accent) !important; }
html[data-theme="dark"] .map-canvas .leaflet-bar { border-color: var(--plans-dark-border) !important; box-shadow: 0 2px 7px #0006; }
html[data-theme="dark"] .map-canvas .leaflet-bar a { background: var(--plans-dark-surface); color: var(--plans-dark-text); border-color: var(--plans-dark-border); }
html[data-theme="dark"] .map-canvas .leaflet-bar a:hover { background: var(--plans-dark-raised); }
html[data-theme="dark"] .map-canvas .leaflet-bar a.leaflet-disabled { background: var(--plans-dark-bg); color: #899782; }
html[data-theme="dark"] .map-canvas :is(.leaflet-control-layers, .leaflet-popup-content-wrapper, .leaflet-popup-tip, .leaflet-tooltip) { background: var(--plans-dark-surface); color: var(--plans-dark-text); border-color: var(--plans-dark-border); }
html[data-theme="dark"] .map-canvas .leaflet-control-layers-toggle { background-color: #edf2e8; }
html[data-theme="dark"] .map-canvas .leaflet-popup-close-button { color: var(--plans-dark-accent); }
html[data-theme="dark"] .map-canvas .leaflet-tooltip-top::before { border-top-color: var(--plans-dark-surface); }
html[data-theme="dark"] .map-canvas .leaflet-tooltip-bottom::before { border-bottom-color: var(--plans-dark-surface); }
html[data-theme="dark"] .map-canvas .leaflet-tooltip-left::before { border-left-color: var(--plans-dark-surface); }
html[data-theme="dark"] .map-canvas .leaflet-tooltip-right::before { border-right-color: var(--plans-dark-surface); }

@media (max-width: 650px) {
  html[data-theme="dark"] .intro .week-card { box-shadow: 3px 4px 0 #0b110d; }
}
