/* Shared theme tokens. Preview containers use the same palette as the page. */
.brand-mark[data-custom-icon] { transform: none; }
:root[data-appearance="customer"], [data-preview-theme="customer"], :root[data-appearance="veteran"], [data-preview-theme="veteran"] {
  --ink: #17172a;
  --muted: #606d79;
  --line: #d9deea;
  --paper: #f6f7fb;
  --panel: #ffffff;
  --field: #eef1fa;
  --green: #3a3089;
  --brand-blue: #2563d9;
  --brand-pink: #e974af;
  --brand-pink-text: #8d3563;
  --deep-indigo: #201a5b;
  --teal: #2563d9;
  --gold: #e974af;
  --on-accent: #ffffff;
  --banner: #201a5b;
  --banner-text: #ffffff;
  --shadow: 0 18px 46px rgba(24,32,40,.14);
}
:root[data-appearance="harbor"], [data-preview-theme="harbor"] {
  --ink: #172f32;
  --muted: #4c6264;
  --line: #c9dcd9;
  --paper: #f3f8f7;
  --panel: #ffffff;
  --field: #e8f2f1;
  --green: #07575b;
  --brand-blue: #005e86;
  --brand-pink: #d7a34a;
  --brand-pink-text: #75500e;
  --deep-indigo: #073b40;
  --teal: #005e86;
  --gold: #d7a34a;
  --on-accent: #ffffff;
  --banner: #073b40;
  --banner-text: #ffffff;
  --shadow: 0 18px 46px rgba(24,32,40,.14);
}
:root[data-appearance="evergreen"], [data-preview-theme="evergreen"] {
  --ink: #1b3023;
  --muted: #536a58;
  --line: #cbdcd0;
  --paper: #f4f8f3;
  --panel: #ffffff;
  --field: #e8f1e6;
  --green: #285c39;
  --brand-blue: #386d50;
  --brand-pink: #a2b765;
  --brand-pink-text: #536522;
  --deep-indigo: #183f29;
  --teal: #386d50;
  --gold: #a2b765;
  --on-accent: #ffffff;
  --banner: #183f29;
  --banner-text: #ffffff;
  --shadow: 0 18px 46px rgba(24,32,40,.14);
}
:root[data-appearance="canyon"], [data-preview-theme="canyon"] {
  --ink: #3c2923;
  --muted: #735c52;
  --line: #e4d1c4;
  --paper: #fbf6f0;
  --panel: #ffffff;
  --field: #f5e9dc;
  --green: #97472e;
  --brand-blue: #8a502f;
  --brand-pink: #c88d36;
  --brand-pink-text: #815414;
  --deep-indigo: #603324;
  --teal: #8a502f;
  --gold: #c88d36;
  --on-accent: #ffffff;
  --banner: #603324;
  --banner-text: #ffffff;
  --shadow: 0 18px 46px rgba(24,32,40,.14);
}
:root[data-appearance="alpine"], [data-preview-theme="alpine"] {
  --ink: #1c3041;
  --muted: #536b7a;
  --line: #cbdee5;
  --paper: #f3f8fa;
  --panel: #ffffff;
  --field: #e6f1f5;
  --green: #245e80;
  --brand-blue: #14678a;
  --brand-pink: #7ab4c3;
  --brand-pink-text: #326c79;
  --deep-indigo: #183f5b;
  --teal: #14678a;
  --gold: #7ab4c3;
  --on-accent: #ffffff;
  --banner: #183f5b;
  --banner-text: #ffffff;
  --shadow: 0 18px 46px rgba(24,32,40,.14);
}
:root[data-appearance="amethyst"], [data-preview-theme="amethyst"] {
  --ink: #35263a;
  --muted: #715c76;
  --line: #dfd0e3;
  --paper: #faf6fb;
  --panel: #ffffff;
  --field: #f2e9f5;
  --green: #704378;
  --brand-blue: #704e9a;
  --brand-pink: #bc8bc7;
  --brand-pink-text: #754a80;
  --deep-indigo: #4b2c55;
  --teal: #704e9a;
  --gold: #bc8bc7;
  --on-accent: #ffffff;
  --banner: #4b2c55;
  --banner-text: #ffffff;
  --shadow: 0 18px 46px rgba(24,32,40,.14);
}
:root[data-color-mode="dark"][data-appearance="customer"], :root[data-color-mode="dark"] [data-preview-theme="customer"], :root[data-color-mode="dark"][data-appearance="veteran"], :root[data-color-mode="dark"] [data-preview-theme="veteran"] {
  --ink: #f1effb;
  --muted: #c3bdd8;
  --line: #514a69;
  --paper: #171421;
  --panel: #252033;
  --field: #312a43;
  --green: #c2b5ff;
  --brand-blue: #9bbaff;
  --brand-pink: #e7a0c5;
  --brand-pink-text: #f3b0d4;
  --deep-indigo: #ece6ff;
  --teal: #9bbaff;
  --gold: #e7a0c5;
  --on-accent: #17202a;
  --banner: #252033;
  --banner-text: #f7f4ff;
  --shadow: 0 18px 46px rgba(0,0,0,.28);
  --brand-red-text: #ffaaa9;
  --rust: #ffaaa9;
  --success: #9bd4ae;
  --warning: #f0ca85;
}
:root[data-color-mode="dark"][data-appearance="harbor"], :root[data-color-mode="dark"] [data-preview-theme="harbor"] {
  --ink: #e4f4f2;
  --muted: #adcbc8;
  --line: #41625f;
  --paper: #101e20;
  --panel: #1a3031;
  --field: #25413f;
  --green: #8bd2c8;
  --brand-blue: #8bcbe5;
  --brand-pink: #e9c078;
  --brand-pink-text: #f4d79f;
  --deep-indigo: #d4f3ed;
  --teal: #8bcbe5;
  --gold: #e9c078;
  --on-accent: #17202a;
  --banner: #252033;
  --banner-text: #f7f4ff;
  --shadow: 0 18px 46px rgba(0,0,0,.28);
  --brand-red-text: #ffaaa9;
  --rust: #ffaaa9;
  --success: #9bd4ae;
  --warning: #f0ca85;
}
:root[data-color-mode="dark"][data-appearance="evergreen"], :root[data-color-mode="dark"] [data-preview-theme="evergreen"] {
  --ink: #e8f3e8;
  --muted: #b9ceba;
  --line: #49634d;
  --paper: #142018;
  --panel: #203125;
  --field: #2a4030;
  --green: #a5d2a6;
  --brand-blue: #a0d0b0;
  --brand-pink: #d0dc91;
  --brand-pink-text: #dbe8a4;
  --deep-indigo: #dcf1dc;
  --teal: #a0d0b0;
  --gold: #d0dc91;
  --on-accent: #17202a;
  --banner: #252033;
  --banner-text: #f7f4ff;
  --shadow: 0 18px 46px rgba(0,0,0,.28);
  --brand-red-text: #ffaaa9;
  --rust: #ffaaa9;
  --success: #9bd4ae;
  --warning: #f0ca85;
}
:root[data-color-mode="dark"][data-appearance="canyon"], :root[data-color-mode="dark"] [data-preview-theme="canyon"] {
  --ink: #f8ece4;
  --muted: #d7beb0;
  --line: #71564a;
  --paper: #251915;
  --panel: #372720;
  --field: #4a342a;
  --green: #f0b49a;
  --brand-blue: #edbf9d;
  --brand-pink: #e9c07c;
  --brand-pink-text: #f3d49b;
  --deep-indigo: #fbe3d5;
  --teal: #edbf9d;
  --gold: #e9c07c;
  --on-accent: #17202a;
  --banner: #252033;
  --banner-text: #f7f4ff;
  --shadow: 0 18px 46px rgba(0,0,0,.28);
  --brand-red-text: #ffaaa9;
  --rust: #ffaaa9;
  --success: #9bd4ae;
  --warning: #f0ca85;
}
:root[data-color-mode="dark"][data-appearance="alpine"], :root[data-color-mode="dark"] [data-preview-theme="alpine"] {
  --ink: #e8f3f8;
  --muted: #b9ced8;
  --line: #48636f;
  --paper: #111f29;
  --panel: #1b303b;
  --field: #29424d;
  --green: #9dcde4;
  --brand-blue: #9fd8ee;
  --brand-pink: #a8d9e1;
  --brand-pink-text: #bce8ee;
  --deep-indigo: #ddf2fa;
  --teal: #9fd8ee;
  --gold: #a8d9e1;
  --on-accent: #17202a;
  --banner: #252033;
  --banner-text: #f7f4ff;
  --shadow: 0 18px 46px rgba(0,0,0,.28);
  --brand-red-text: #ffaaa9;
  --rust: #ffaaa9;
  --success: #9bd4ae;
  --warning: #f0ca85;
}
:root[data-color-mode="dark"][data-appearance="amethyst"], :root[data-color-mode="dark"] [data-preview-theme="amethyst"] {
  --ink: #f5eaf7;
  --muted: #d3bfd7;
  --line: #6c536e;
  --paper: #211723;
  --panel: #322337;
  --field: #443049;
  --green: #dfb4e6;
  --brand-blue: #d2b9f4;
  --brand-pink: #e2bee9;
  --brand-pink-text: #efd0f4;
  --deep-indigo: #f4dff7;
  --teal: #d2b9f4;
  --gold: #e2bee9;
  --on-accent: #17202a;
  --banner: #252033;
  --banner-text: #f7f4ff;
  --shadow: 0 18px 46px rgba(0,0,0,.28);
  --brand-red-text: #ffaaa9;
  --rust: #ffaaa9;
  --success: #9bd4ae;
  --warning: #f0ca85;
}

/* Component surfaces and interactive states share the active palette. */
.panel-header { border-bottom-color: var(--line); background: linear-gradient(180deg, var(--panel), var(--paper)); }
:is(.ghost-button:hover, .quick-filters button:hover, .career-path-option:hover, .career-path-option:has(input:checked), .selected-career-paths button, .tag-line b, .admin-nav-count) { background: var(--field); border-color: var(--line); }
.quick-filters button.is-active, .view-toggle button.is-active, .interest-options button[aria-pressed="true"], #openSubmit, .primary-link, .admin-primary, .admin-actions .admin-primary, .admin-section-nav a[aria-current="page"], .conference-cluster, .landing-cta { background: var(--green); border-color: var(--green); color: var(--on-accent); }
.result-item:is(:hover, .is-selected) { background: var(--paper); border-color: var(--green); }
.admin-body { background: var(--paper); }
.admin-section-nav a[aria-current="page"] .admin-nav-count { background: var(--field); color: var(--green); }
.landing-close { background: var(--banner); color: var(--banner-text); }
.landing-close :is(h2, p:last-child) { color: var(--banner-text); }
.landing-close .landing-eyebrow { color: var(--brand-pink); }
.landing-close .landing-cta { background: var(--panel); color: var(--green); border-color: var(--panel); }
:root[data-color-mode="dark"] .leaflet-container { color-scheme: light; }
:root[data-color-mode="dark"] .leaflet-tooltip, :root[data-color-mode="dark"] .leaflet-popup-content-wrapper, :root[data-color-mode="dark"] .leaflet-popup-tip { background: var(--panel); color: var(--ink); }

/* Convert the provider’s light cartography only. Markers keep their category
   colors, and attribution, popups and controls remain independently legible. */
:root[data-color-mode="dark"] .leaflet-tile-pane { filter: invert(.93) hue-rotate(180deg) saturate(.55); }
:root[data-color-mode="dark"] :is(#map, #embedMap) { background: #233440; }
:root[data-color-mode="dark"] .leaflet-control-attribution { background: var(--panel); color: var(--muted); }
:root[data-color-mode="dark"] .leaflet-control-attribution a { color: var(--brand-blue); }
:root[data-color-mode="dark"] .leaflet-bar a { background: var(--panel); color: var(--ink); }
:root[data-color-mode="dark"] .leaflet-bar a:hover { background: var(--field); }
:root[data-color-mode="dark"] :is(.event-status-banner, .source-badge, .event-type-badge, .tag-line b) { color: var(--ink); }
:where(.primary-link, .admin-primary, #openSubmit, .landing-cta):hover { filter: brightness(.9); }
:root[data-color-mode="dark"] :where(.primary-link, .admin-primary, #openSubmit, .landing-cta):hover { filter: brightness(1.1); }

/* High contrast for keyboard navigation, inputs and status messages in dark mode. */
.skip-link { color: var(--paper); }
input::placeholder, textarea::placeholder { color: var(--muted); opacity: 1; }
:root[data-color-mode="dark"] :where(input, select, textarea, button):not(:disabled) { border-color: color-mix(in srgb, var(--ink) 45%, var(--panel)); }
:root[data-color-mode="dark"] :where(input, select, textarea):focus { border-color: var(--green); }
:root[data-color-mode="dark"] .event-status-banner,
:root[data-color-mode="dark"] .event-status-banner[data-status] { background: var(--field); border-color: var(--line); border-left-color: var(--warning); }
:root[data-color-mode="dark"] .event-status-banner[data-status="cancelled"] { border-left-color: var(--rust); }
:root[data-color-mode="dark"] .event-status-banner[data-status="rescheduled"] { border-left-color: var(--brand-blue); }
:root[data-color-mode="dark"] .admin-warning { background: var(--field); border-color: var(--warning); color: var(--warning); }
