/* Shared Astro/PHP layer over Bootstrap 5.3's data-bs-theme and color tokens.
 * Light mode keeps the existing styles. Photography and brand artwork stay intact.
 */
:root:not([data-bs-theme]) { color-scheme: light; }
.bw-theme-switcher[hidden] { display: none !important; }
.bw-footer-tools {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 4px 16px;
}
.bw-theme-switcher {
  display: inline-flex;
  padding: 0;
  color: var(--bs-secondary-color, #5e6974);
  font-size: 12px;
  line-height: 1.5;
}
.bw-theme-switcher label {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 0;
  white-space: nowrap;
}
body .bw-theme-switcher select {
  width: auto;
  min-height: 32px;
  max-width: 100%;
  margin: 0;
  padding: 4px 6px;
  border: 1px solid transparent;
  border-radius: 4px;
  background-color: transparent;
  color: inherit;
  font: inherit;
}
body .bw-theme-switcher select:is(:hover, :focus-visible) {
  border-color: var(--bs-border-color, var(--bw-line, #dce1e5));
}
.bw-theme-switcher select:focus-visible {
  outline: 2px solid var(--bs-link-color, #0061c1);
  outline-offset: 3px;
}

@media screen {
  :root[data-bs-theme="dark"] {
    --bw-page: var(--bs-body-bg, #212529);
    --bw-surface: var(--bs-tertiary-bg, #2b3035);
    --bw-ink: var(--bs-body-color, #dee2e6);
    --bw-muted: var(--bs-secondary-color, #adb5bd);
    --bw-line: var(--bs-border-color, #495057);
    --bw-link: var(--bs-link-color, #6ea8fe);
    --bw-link-hover: var(--bs-link-hover-color, #8bb9fe);
    --bw-tint: var(--bs-primary-bg-subtle, #031633);
    --bw-error: #f58fba;
    --color-secondary: var(--bw-link);
    --color-danger: var(--bw-error);
    --color-light: var(--bw-surface);
    --color-dark: var(--bw-ink);
    --color-muted: var(--bw-muted);
    --color-border: var(--bw-line);
  }
  :root[data-bs-theme="dark"] body {
    background-color: var(--bw-page);
    color: var(--bw-ink);
  }
  :root[data-bs-theme="dark"] .bw-redesign {
    --rd-navy: var(--bs-primary-text-emphasis, #9ec5fe);
    --rd-ink: var(--bw-ink);
    --rd-muted: var(--bw-muted);
    --rd-paper: var(--bw-surface);
    --rd-surface: var(--bw-surface);
    --rd-line: var(--bw-line);
    --rd-link: var(--bw-link);
    --rd-link-hover: var(--bw-link-hover);
    --blog-tile-background: var(--bw-surface);
  }
  :root[data-bs-theme="dark"] img[data-bw-dark-src]:not([data-bw-image-theme="dark"]) {
    visibility: hidden;
  }
  :root[data-bs-theme="dark"] img[data-bw-image-kind="illustration"] {
    filter: drop-shadow(0 0 1px rgb(222 226 230 / 45%));
  }
  :root[data-bs-theme="dark"] img[data-bw-image-kind="diagram"] {
    filter: brightness(0.85);
  }

  /* Main surfaces and the site's legacy white/light utilities. */
  :root[data-bs-theme="dark"] body :is(main, .bg-white) {
    background-color: var(--bw-page) !important;
  }
  :root[data-bs-theme="dark"] body :is(
    .bg-light, .archive-hero, .page-header, .breadcrumb, .o-list,
    .u-bg-gold, .u-scroll-nav, .u-is-item, .bd-sidebar, .main-footer,
    .rd-consult-inner, .rd-consult-label, .rd-portrait, .rd-sample-sidebar, .rd-post-footer,
    .rd-contact-dialog, .rd-dialog-heading, .rd-contact-channel,
    .rd-mobile-menu, .bw-form-menu, .bw-inquiry-intro,
    .bw-inquiry-phone, .bw-line-button, .vh-listing,
    .vh-hero-panel, .vh-contact-phone, .vh-price-card, .vh-faq,
    .form-wrap, .complete-wrap, .bw-config-panel, .bw-summary,
    .bw-zip-modal, .bw-zip-modal-close, .bw-zip-modal-option,
    .choice, .bw-option-card, .bw-step, .step-list li,
    .bw-skip-link, .rd-skip, .rd-guide, .rd-guide-card, .rd-guide-tag,
    .share-card, .internal-blog-card__link, .internal-blog-card__media, .vh-flow
  ) {
    background-color: var(--bw-surface) !important;
    color: var(--bw-ink);
    border-color: var(--bw-line);
  }
  :root[data-bs-theme="dark"] body .main-footer {
    background-image: none;
  }
  :root[data-bs-theme="dark"] body .card {
    --bs-card-bg: var(--bw-surface);
    --bs-card-cap-bg: var(--bw-surface);
    --bs-card-border-color: var(--bw-line);
    background-color: var(--bw-surface) !important;
    color: var(--bw-ink);
  }
  :root[data-bs-theme="dark"] body .card-footer {
    background-color: var(--bw-surface);
  }
  /* Keep cards distinct from tinted sections, including nested home card lists. */
  :root[data-bs-theme="dark"] .bw-redesign :is(.rd-home, .rd-service-page)
    :is(.bg-light, .u-bg-gold, .table-sm-responsive) .card:not(.bg-light) {
    --bs-card-bg: var(--bw-page);
    --bs-card-cap-bg: var(--bw-page);
    background-color: var(--bs-card-bg) !important;
  }
  :root[data-bs-theme="dark"] body .card > :is(.card-header.bg-white, .card-footer.bg-white) {
    background-color: var(--bs-card-bg) !important;
  }
  :root[data-bs-theme="dark"] body .rd-index-card {
    background-color: transparent !important;
  }
  :root[data-bs-theme="dark"] .bw-redesign .rd-service-page .rd-info-page main :is(
    .page-header.rd-photo-header, .card:has(> .card-img-overlay)
  ),
  :root[data-bs-theme="dark"] .bw-redesign .rd-blog-page .card:has(> .card-img-overlay) {
    background-color: var(--bw-surface) !important;
  }
  :root[data-bs-theme="dark"] body :is(.bd-navbar, .footer_menu, .rd-mobile-menu-trigger, .bw-form-menu-trigger) {
    background-color: var(--bw-surface);
    color: var(--bw-ink);
    border-color: var(--bw-line);
  }
  :root[data-bs-theme="dark"] body .navbar::before {
    background-color: var(--bw-surface);
  }
  :root[data-bs-theme="dark"] body :is(.rd-mobile-menu, .bw-form-menu)::backdrop {
    background-color: var(--bw-surface);
  }
  /* Neutral copy and navigation must win over legacy fixed text utilities. */
  :root[data-bs-theme="dark"] body :is(.text-dark, .text-black, .post-content p, .post-content ul, .post-content ol,
    .post-content h2, .post-content h3, .u-scroll-nav a, .c-bar-title,
    .front-page-first-view p, .front-page-first-view h2, .front-page-first-view .img_desc) {
    color: var(--bw-ink) !important;
  }
  :root[data-bs-theme="dark"] body :is(.text-muted, .bw-summary dt, .question-header p, .bw-zip-message,
    .bw-inquiry-contact-note, .bw-line-button-copy small, .rd-breadcrumb > span[aria-hidden]) {
    color: var(--bw-muted) !important;
  }
  :root[data-bs-theme="dark"] body :is(.text-primary, .text-secondary, .text-info, .step-count, .bw-inquiry-phone,
    .bw-inquiry-intro h1, .bw-form-design .page-header h1, .bw-form-design .page-header p,
    .bd-search-docs-toggle, .bw-zip-message.is-ok) {
    color: var(--bw-link) !important;
  }
  :root[data-bs-theme="dark"] body .text-danger {
    color: var(--bw-error) !important;
  }
  :root[data-bs-theme="dark"] body :is(.text-success, .header-copy) {
    color: var(--bs-success-text-emphasis);
  }
  :root[data-bs-theme="dark"] body .table {
    --bs-table-color: var(--bw-ink);
    --bs-table-border-color: var(--bw-line);
  }
  :root[data-bs-theme="dark"] body .badge.text-bg-info {
    color: var(--bs-info-text-emphasis) !important;
    background-color: var(--bs-info-bg-subtle) !important;
  }
  :root[data-bs-theme="dark"] body :is(#menu-nav .nav-link, #gnav-ul a, .rd-sidebar-social a,
    .bd-toc-link, .bd-sidebar .nav > li > a, .main-footer a:not(.btn):not(.btn-footer-cta),
    .footer_menu a, .bw-form-menu a, .bw-form-menu-close, .rd-mobile-menu-close) {
    color: var(--bw-ink) !important;
  }
  :root[data-bs-theme="dark"] body :is(#menu-nav .nav-link, #gnav-ul a, .rd-sidebar-social a,
    .bw-form-menu a, .rd-mobile-menu a, .bw-zip-modal-option):is(:hover, :focus-visible),
  :root[data-bs-theme="dark"] body :is(#menu-nav a[aria-current], #gnav-ul a[aria-current],
    .rd-mobile-menu a[aria-current], .bw-form-menu a[aria-current], .footer_menu a[aria-current],
    .rd-close, .rd-mobile-menu-search button, .rd-home details[open] summary) {
    background-color: var(--bw-tint) !important;
    color: var(--bw-link) !important;
  }
  :root[data-bs-theme="dark"] body .main-footer a:not(.btn):not(.btn-footer-cta):is(:hover, :focus-visible) {
    color: var(--bw-link) !important;
  }
  :root[data-bs-theme="dark"] .bw-redesign :is(.card, .rd-related-grid) a:not(.btn):not(.rd-text-link),
  :root[data-bs-theme="dark"] .bw-redesign .card a:not(.btn) :is(h2, h3, h4, .card-title) {
    color: var(--bw-ink) !important;
  }
  :root[data-bs-theme="dark"] body :is(.rd-related-grid > a, #articleList article a, #blog-list article a, .related a) {
    color: var(--bw-ink);
  }
  :root[data-bs-theme="dark"] body :is(.blog-theme-nav a, .blog-tile-rank, .rd-index-card .badge,
    .rd-home a.badge, .rd-service-page a.badge) {
    background-color: var(--bw-tint) !important;
    color: var(--bw-link) !important;
    border-color: var(--bw-line);
  }
  :root[data-bs-theme="dark"] .bw-redesign .blog-landing {
    --blog-tile-background: var(--bw-surface);
  }
  :root[data-bs-theme="dark"] body :is(.rd-home .badge:not(a), .rd-service-page .badge:not(a), #content .bg-success.text-white) {
    background-color: var(--bw-surface) !important;
    color: var(--bw-ink) !important;
  }
  :root[data-bs-theme="dark"] body #content .rd-home .rd-home-case-card .row .bg-secondary {
    background-color: var(--bs-primary-bg-subtle) !important;
    color: var(--bs-primary-text-emphasis) !important;
  }
  :root[data-bs-theme="dark"] body #content .rd-home .rd-home-case-card .row .bg-success {
    background-color: var(--bs-warning-bg-subtle) !important;
    color: var(--bs-warning-text-emphasis) !important;
  }
  :root[data-bs-theme="dark"] .bw-redesign .rd-service-scroll-nav .u-is-item {
    border-bottom-color: transparent;
  }
  :root[data-bs-theme="dark"] .bw-redesign .rd-service-scroll-nav .u-is-item:is(:hover, :focus-within) {
    border-bottom-color: var(--bw-link);
  }
  :root[data-bs-theme="dark"] body .rd-home .main-slide-header {
    background-color: var(--bw-page) !important;
  }
  :root[data-bs-theme="dark"] body :is(strong, .marker) {
    background-image: none;
  }
  :root[data-bs-theme="dark"] body .marker {
    background-color: var(--bs-warning-bg-subtle);
  }
  :root[data-bs-theme="dark"] body .rd-photo-header-shade {
    background-image: linear-gradient(90deg, #212529f5 0%, #212529eb 36%, #212529b8 52%, #21252926 72%, transparent 100%);
  }

  /* Native Bootstrap fields already use its theme variables; cover custom PHP fields. */
  :root[data-bs-theme="dark"] body :is(.form-control, .form-select,
    .rd-guide-selector select, .rd-mobile-menu-search input,
    .form-wrap input:not([type="radio"]):not([type="checkbox"]), .form-wrap select, .form-wrap textarea) {
    background-color: var(--bw-page);
    color: var(--bw-ink);
    border-color: var(--bw-line);
  }
  :root[data-bs-theme="dark"] body .rd-guide :is(#guide-title, .rd-guide-results-heading h3, h4, .rd-guide-card > a) {
    color: var(--bw-ink) !important;
  }
  :root[data-bs-theme="dark"] body .rd-guide :is(p, .rd-guide-tag) {
    color: var(--bw-muted) !important;
  }
  :root[data-bs-theme="dark"] body .rd-guide-more {
    color: var(--bw-link);
  }
  :root[data-bs-theme="dark"] body .internal-blog-card__link {
    color: var(--bw-ink);
  }
  :root[data-bs-theme="dark"] body :is(.internal-blog-card__date, .internal-blog-card__description,
    .internal-blog-card__arrow, .internal-blog-card__media--empty) {
    color: var(--bw-muted);
  }
  :root[data-bs-theme="dark"] body .share-action:is(:hover, :focus-visible) {
    color: var(--bw-link-hover) !important;
  }
  :root[data-bs-theme="dark"] body :is(input, textarea)::placeholder {
    color: var(--bw-muted);
    opacity: 1;
  }
  :root[data-bs-theme="dark"] body :is(.choice, .bw-option-card):has(input:checked),
  :root[data-bs-theme="dark"] body :is(.step-list li.done, .bw-step.is-done) {
    background-color: var(--bw-tint) !important;
    color: var(--bw-link);
    border-color: var(--bw-link);
  }
  :root[data-bs-theme="dark"] body :is(.choice, .bw-option-card):is(:hover, :focus-within) {
    border-color: var(--bw-link);
  }
  :root[data-bs-theme="dark"] body :is(.choice, .bw-option-card) input {
    accent-color: var(--bw-link);
  }
  :root[data-bs-theme="dark"] body :is(.step-list li.current, .bw-step.is-current) {
    background-color: var(--bw-ui-navy) !important;
    color: #fff;
    border-color: var(--bw-link);
  }
  :root[data-bs-theme="dark"] body .bw-step span {
    color: var(--bw-link);
    border-color: var(--bw-link);
  }
  :root[data-bs-theme="dark"] body .bw-step.is-current span {
    color: var(--bw-ui-navy);
  }
  :root[data-bs-theme="dark"] body .progress-track {
    background-color: var(--bw-line);
  }
  :root[data-bs-theme="dark"] body .progress-track span {
    background-color: var(--bw-link);
  }
  :root[data-bs-theme="dark"] body :is(.form-wrap .alert, .alert-danger, .inquiry-preview-validation-errors) {
    color: var(--bw-error);
    background-color: var(--bs-danger-bg-subtle);
    border-color: var(--bw-error);
  }
  :root[data-bs-theme="dark"] body :is(.field-error, .bw-field-error, .invalid-feedback,
    .bw-zip-message.is-error, .inquiry-preview-not-valid-tip) {
    color: var(--bw-error) !important;
  }
  :root[data-bs-theme="dark"] body .required {
    background-color: #8b0046;
  }
  :root[data-bs-theme="dark"] body :is(.has-error input, .has-error select, .has-error textarea,
    .form-control.is-invalid, .form-control[aria-invalid="true"]) {
    border-color: var(--bw-error);
  }
  :root[data-bs-theme="dark"] body :is(.form-control, .form-wrap input, .form-wrap select,
    .form-wrap textarea):focus {
    border-color: var(--bw-link);
    box-shadow: 0 0 0 0.2rem rgb(110 168 254 / 25%);
  }
  :root[data-bs-theme="dark"] body :is(.has-error input, .has-error select, .has-error textarea,
    .form-control.is-invalid, .form-control[aria-invalid="true"]):focus {
    border-color: var(--bw-error);
  }
  :root[data-bs-theme="dark"] body :is(.bw-config-hero, .bw-panel-head, .bw-config-actions,
    .bw-zip-modal-header, .bw-zip-modal-close) {
    border-color: var(--bw-line);
  }
  :root[data-bs-theme="dark"] body .bw-line-button {
    color: #98e6b8 !important;
    border-color: #06c755;
  }

  /* Keep filled brand actions; give lighter/back actions readable text and focus. */
  :root[data-bs-theme="dark"] body :is(.btn-link, .btn[class*="btn-outline-"],
    .btn[name="action"][value="back"], .btn[data-bs-dismiss="modal"],
    .bd-sidebar .btn.c-small-font, .nav-scroller .btn,
    .rd-rollout-page a.btn:not([href*="inquiry"]):not([href^="tel:"]):not([data-bs-toggle]),
    .rd-photo-header .btn) {
    --bw-button-text: var(--bw-link);
    --bw-button-bg: var(--bw-surface);
    --bw-button-border: var(--bw-line);
    --bw-button-hover-text: var(--bw-link-hover);
    --bw-button-hover-bg: var(--bw-tint);
    --bw-button-hover-border: var(--bw-link);
  }
  :root[data-bs-theme="dark"] body :is(a, button, input, select, textarea, summary):focus-visible {
    outline-color: var(--bw-link) !important;
  }
  :root[data-bs-theme="dark"] body :is(.modal-close, .bw-zip-modal-close) {
    color: var(--bw-ink);
  }

  /* Recruit has an independent layout and does not load the full Bootstrap bundle. */
  :root[data-bs-theme="dark"] .bw-recruit {
    --recruit-bg: var(--bw-page);
    --recruit-ink: var(--bw-ink);
    --recruit-navy: var(--bw-link);
    --recruit-muted: var(--bw-muted);
    --recruit-rule: var(--bw-line);
    --recruit-gold: #dac483;
  }
  :root[data-bs-theme="dark"] .bw-recruit :is(.recruit-header, #recruit-nav, .recruit-footer, .recruit-skip,
    .honest-section, .interview-label, .future-section, .requirements > div:nth-child(odd),
    .preview-notice, .recruit-sticky, .entry-fields input, .entry-fields select) {
    background-color: var(--bw-surface);
    color: var(--bw-ink);
    border-color: var(--bw-line);
  }
  :root[data-bs-theme="dark"] .bw-recruit :is(.button, .recruit-sticky a:last-child) {
    background-color: #003367;
    border-color: var(--bw-link);
  }
  :root[data-bs-theme="dark"] .bw-recruit :is(.button-outline, .button-outline-light) {
    background-color: transparent;
    color: var(--bw-ink);
  }
  :root[data-bs-theme="dark"] .bw-recruit .bw-theme-switcher {
    color: var(--bw-muted);
  }
}

@media print {
  .bw-theme-switcher { display: none !important; }
  :root { color-scheme: light !important; }
  :root[data-bs-theme="dark"] {
    --bs-body-color: #212529;
    --bs-body-bg: #fff;
    --bs-emphasis-color: #000;
    --bs-secondary-color: #6c757d;
    --bs-secondary-bg: #e9ecef;
    --bs-tertiary-bg: #f8f9fa;
    --bs-border-color: #dee2e6;
    --bs-link-color: #0061c1;
    --bs-link-color-rgb: 0, 97, 193;
  }
}
