:root { color-scheme: light; }
:root[data-theme="dark"] {
    color-scheme: dark;
    --red: #ff5273;
    --red-dark: #d9133c;
    --pink: #35212b;
    --ink: #eef0f5;
    --muted: #a4aab7;
    --line: #303540;
    --bg: #101217;
    --shadow: 0 15px 55px #00000018;
    --surface: #191c23;
    --surface-raised: #222630;
    --soft-text: #a4aab7;
}
.theme-toggle { flex-shrink: 0; min-height: 40px; }
.theme-toggle .icon { transition: transform .25s ease; }
.theme-toggle:hover .icon { transform: rotate(20deg); }
.theme-sun, :root[data-theme="dark"] .theme-moon { display: none; }
:root[data-theme="dark"] .theme-sun { display: inline-block; }
.credits-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; }

/* Shared surfaces, controls and readable text across all three pages. */
[data-theme="dark"] :is(.site-header,.hero-stats,.map-panel,.directory-panel,.admin-panel,.admin-stats>div,.login-layout,dialog) {
    background: var(--surface);
    border-color: var(--line);
}
[data-theme="dark"] :is(input,textarea,select,.btn-outline,.icon-btn,.map-controls,.province-card,.search-box kbd,.upload-drop input) {
    background: var(--surface-raised);
    border-color: #363c48;
    color: var(--ink);
}
[data-theme="dark"] :is(input,textarea)::placeholder { color: #929aa9; }
[data-theme="dark"] :is(input,textarea,select):focus { border-color: var(--red); }
[data-theme="dark"] .btn-primary { background: #ed163b; color: #fff; }
[data-theme="dark"] .btn-primary:hover { background: #cf1233; }
[data-theme="dark"] .btn-dark { background: #303744; color: #f4f5f8; }
[data-theme="dark"] .btn-outline:hover { background: #2c3240; border-color: #50596b; }
[data-theme="dark"] .icon-btn:hover { background: var(--pink); color: var(--red); }
[data-theme="dark"] .icon-btn.danger:hover { background: #45232e; color: #ff7d96; }
[data-theme="dark"] :is(.square-icon,.stat-icon,.soft-badge) { background: #252a34; color: #b1b8c6; border-color: #363c48; }
[data-theme="dark"] :is(.hero h1>span,.hero p,.eyebrow,.overline,.brand-product,.stat>span:last-child,
    .directory-footer small,.province-card small,.results-heading,.coverage-toggle,.select-wrap select,
    .directory-tabs button,.map-hint,.legend,.under-note,.site-footer,.site-footer>span:last-child,
    .admin-intro p,.admin-stats small,.admin-tabs button,.admin-toolbar p,.admin-filters>span,td small,
    .contact-cell,.table-note,.dialog-heading p,.dialog-section-title,.contact-list,.detail-notes,
    .partner-card-head small,.form-grid label,.field-label,.active-check,.field-help,.province-check,
    .login-card>p,.login-card form label,.login-card>small,.confirm-dialog p,.template-callout p,
    .upload-drop p,.credits p) { color: var(--soft-text); }
[data-theme="dark"] :is(.directory-tabs button.active,.admin-tabs button.active,.province-check:has(input:checked)) { color: var(--red); }
[data-theme="dark"] :is(.site-footer strong,.province-group-heading,.empty-state h3) { color: #d4d9e3; }
[data-theme="dark"] :is(.empty-state,.empty-state>.icon) { color: #a4aab7; }
[data-theme="dark"] .site-footer { border-color: var(--line); }
[data-theme="dark"] .red { background: var(--pink)!important; color: var(--red)!important; }
[data-theme="dark"] :is(.search-box,.soft-badge,.chip) { background: #20242d; border-color: #343a46; }
[data-theme="dark"] .search-box input { background: transparent; box-shadow: none; }
[data-theme="dark"] :is(.search-box>.icon,.select-wrap>.icon) { color: #a2abba; }
[data-theme="dark"] .search-box:focus-within { border-color: var(--red); }
[data-theme="dark"] .directory-tabs button span { background: #2a303c; color: #b5bdcc; }
[data-theme="dark"] .directory-tabs button.active span { background: var(--pink); color: var(--red); }
[data-theme="dark"] .directory-list { scrollbar-color: #495261 transparent; }
[data-theme="dark"] .file-icon { background: #22362f; color: #8dd4af; }
[data-theme="dark"] .province-card { background: #1e222b; border-color: #343a46; }
[data-theme="dark"] .province-card:hover { background: #30232e; border-color: #975067; }
[data-theme="dark"] .province-card>.square-icon { background: #382431; color: #ff7894; }
[data-theme="dark"] .province-card .count-pill { background: #35212c; border-color: #57303f; color: #ff8ba2; }
[data-theme="dark"] .province-card.no-data :is(.square-icon,.count-pill) { background: #2b313d; color: #b1b8c6; border-color: #3b4351; }

/* Province colors retain the same coverage meaning in the dark palette. */
[data-theme="dark"] .map-stage { background: radial-gradient(ellipse at 48% 48%,#34212c66,transparent 70%); }
[data-theme="dark"] .map-stage:before { background-image: radial-gradient(#566070 1px,transparent 1px); opacity: .35; }
[data-theme="dark"] #province-paths path { fill: #844355; stroke: #171b23; }
[data-theme="dark"] #province-paths path.multiple { fill: #e3617f; }
[data-theme="dark"] #province-paths path.no-data { fill: #414b5b; }
[data-theme="dark"] #province-paths path:hover,
[data-theme="dark"] #province-paths path:focus-visible,
[data-theme="dark"] #province-paths path.selected { fill: #ff5273; stroke: #ffafc0; filter: drop-shadow(0 2px 5px #ff315144); }
[data-theme="dark"] .legend-dot.strong { background: #e3617f; }
[data-theme="dark"] .legend-dot.light { background: #844355; }
[data-theme="dark"] .legend-dot.empty { background: #414b5b; }
[data-theme="dark"] :is(.map-watermark,.map-compass,.map-compass span,.map-credit) { color: #8e98aa; }
[data-theme="dark"] .map-bottom { border-color: var(--line); }
[data-theme="dark"] .map-loading { background: #191c23e6; color: #bec5d2; }
[data-theme="dark"] .map-tooltip { background: #e7ebf3; color: #171b25; }
[data-theme="dark"] .map-tooltip small { color: #505967; }

/* Popups, contractor forms and Excel import. */
[data-theme="dark"] dialog::backdrop { background: #03060bb0; }
[data-theme="dark"] .dialog-hero { background: linear-gradient(120deg,#35212d,#231f2a 80%); border-color: #51313f; }
[data-theme="dark"] .dialog-hero :is(p,.overline) { color: #ed92a7; }
[data-theme="dark"] .dialog-hero>.icon-btn { background: #372833; border-color: #624051; }
[data-theme="dark"] .dialog-hero .square-icon { background: #452936; color: #ff7f9b; }
[data-theme="dark"] .partner-card { background: #1d212a; }
[data-theme="dark"] .partner-card .avatar { background: #382633; color: #f3a0b4; }
[data-theme="dark"] :is(.dialog-footer,.table-note) { background: #171a21; border-color: var(--line); }
[data-theme="dark"] .chip { color: #c3cad7; }
[data-theme="dark"] .chip:hover { background: var(--pink); border-color: #875066; color: #ff9cb2; }
[data-theme="dark"] :is(.province-group+.province-group,.detail-notes) { border-color: var(--line); }
[data-theme="dark"] .province-checkboxes { scrollbar-color: #495261 transparent; }
[data-theme="dark"] :is(.notice,.import-warning) { background: #352b1f; border-color: #584632; color: #e9be79; }
[data-theme="dark"] .notice .text-btn { color: #f1c585; }
[data-theme="dark"] .form-error { background: #3b222d; border-color: #673546; color: #ff9caf; }
[data-theme="dark"] .upload-drop { background: #261e28; border-color: #885067; }
[data-theme="dark"] .import-summary span { background: #282e39; }
[data-theme="dark"] .spinner { border-color: #424a59; border-top-color: var(--red); }
[data-theme="dark"] .toast { background: #e6eaf2; color: #171c26; }
[data-theme="dark"] .toast .icon { color: #24724d; }
[data-theme="dark"] .toast.error .icon { color: #b92548; }

/* Back-office tables and the login screen. */
[data-theme="dark"] th { background: #20252e; border-color: var(--line); color: #b0b9c9; }
[data-theme="dark"] td { border-color: #2d333e; }
[data-theme="dark"] tbody tr:hover { background: #222730; }
[data-theme="dark"] .row-actions .icon-btn { border-color: #3b4350; }
[data-theme="dark"] .status-pill { background: #20392f; color: #92d8b0; }
[data-theme="dark"] .status-pill.inactive { background: #2a303b; color: #b9c1cf; }
[data-theme="dark"] .admin-tabs { border-color: var(--line); }
[data-theme="dark"] .login-art { background: #151820; }
[data-theme="dark"] .password-input .icon-btn { background: transparent; }

@media(max-width:900px) {
    .site-header nav { gap: 10px; }
    .theme-toggle [data-theme-label] { display: none; }
    .site-header nav .theme-toggle { width: 40px; height: 40px; padding: 0; }
    .site-header nav .theme-toggle .icon { width: 19px; height: 19px; }
}
@media(max-width:700px) {
    /* Room for the extra control without squeezing the existing navigation. */
    body[data-page="admin"] .site-header { height: auto; min-height: 70px; flex-wrap: wrap; padding-top: 12px; padding-bottom: 12px; }
    body[data-page="admin"] .site-header nav { margin-left: auto; }
    .site-header nav .theme-toggle { width: 36px; height: 36px; min-height: 36px; padding: 0; }
    .site-header nav .theme-toggle .theme-moon { display: inline-block; width: 18px; height: 18px; }
    :root[data-theme="dark"] .site-header nav .theme-toggle .theme-moon { display: none; }
    :root[data-theme="dark"] .site-header nav .theme-toggle .theme-sun { display: inline-block; width: 18px; height: 18px; }
}
@media(max-width:380px) {
    .site-header { gap: 8px; padding-left: 14px; padding-right: 14px; }
    .site-header .brand img { width: 98px; }
    .site-header nav { gap: 6px; }
    .site-header nav .btn:not(.theme-toggle) { font-size: 17px; padding: 8px; }
    body[data-page="admin"] .site-header nav { margin-left: 0; }
}
