:root {
  --bashpa-page-bg: #ffffff;
  --bashpa-surface: #f7f9fc;
  --bashpa-elevated: #ffffff;
  --bashpa-text: #172033;
  --bashpa-muted: #566176;
  --bashpa-border: #dce2ea;
  --bashpa-accent: #2563eb;
}

:root[data-theme="dark"] {
  --bashpa-page-bg: #0b1120;
  --bashpa-surface: #111827;
  --bashpa-elevated: #182234;
  --bashpa-text: #edf2f7;
  --bashpa-muted: #b7c0cf;
  --bashpa-border: #334155;
  --bashpa-accent: #60a5fa;
  /* Override the shared Bashpa simulator palette. */
  --page-bg: #0b1120;
  --panel-bg: #182234;
  --light-bg: #111827;
  --muted-bg: #1e293b;
  --text-color: #edf2f7;
  --text-light: #b7c0cf;
  --border-color: #334155;
  --border-strong: #94a3b8;
  /* Astra and Elementor reuse these global tokens for full-width page gutters. */
  --ast-global-color-4: #0b1120;
  --ast-global-color-5: #111827;
  --ast-global-color-6: #1e293b;
  --ast-global-color-7: #182234;
  --ast-global-color-8: #020617;
  --e-global-color-astglobalcolor4: #0b1120;
  --e-global-color-astglobalcolor5: #111827;
  --e-global-color-astglobalcolor6: #1e293b;
  --e-global-color-astglobalcolor7: #182234;
  --e-global-color-astglobalcolor8: #020617;
  color-scheme: dark;
}

/* Elementor can redeclare its global variables on the page root. */
:root[data-theme="dark"] body,
:root[data-theme="dark"] .elementor-kit-5,
:root[data-theme="dark"] [class*="elementor-kit-"] {
  --ast-global-color-4: #0b1120 !important;
  --ast-global-color-5: #111827 !important;
  --ast-global-color-6: #1e293b !important;
  --ast-global-color-7: #182234 !important;
  --ast-global-color-8: #020617 !important;
  --e-global-color-astglobalcolor4: #0b1120 !important;
  --e-global-color-astglobalcolor5: #111827 !important;
  --e-global-color-astglobalcolor6: #1e293b !important;
  --e-global-color-astglobalcolor7: #182234 !important;
  --e-global-color-astglobalcolor8: #020617 !important;
}

html,
body,
#page,
.site,
.site-content {
  background-color: var(--bashpa-page-bg);
  color: var(--bashpa-text);
  transition: background-color 180ms ease, color 180ms ease;
}

:root[data-theme="dark"] :where(
  .site-header,
  #masthead,
  .elementor-location-header,
  .site-footer,
  .elementor-location-footer,
  article,
  .widget,
  .card,
  .elementor-widget-container,
  .wp-block-group
) {
  border-color: var(--bashpa-border);
}

/* Theme and page-builder surfaces often carry their own white background. */
:root[data-theme="dark"] :where(
  body,
  #page,
  .site,
  .site-content,
  .ast-container,
  .content-area,
  .site-main,
  .site-header,
  #masthead,
  .ast-main-header-wrap,
  .main-header-bar,
  .site-primary-header-wrap,
  .ast-builder-grid-row-container,
  .ast-mobile-header-wrap,
  .ast-above-header-wrap,
  .ast-below-header-wrap,
  .ast-primary-header-bar,
  .elementor-location-header,
  .site-footer,
  .elementor-location-footer,
  .elementor-section,
  .elementor-section-wrap,
  .elementor-inner,
  .elementor-column-wrap,
  .e-con,
  .wp-site-blocks,
  .wp-block-group
) {
  background-color: var(--bashpa-page-bg) !important;
  color: var(--bashpa-text);
}

/* Keep the India Energy Charts canvas on the same charcoal as the page. */
:root[data-theme="dark"] :where(
  .bashpa-iec-page,
  .bashpa-iec-page .bess-header,
  .bashpa-iec-layout,
  .bashpa-iec-page-grid,
  .bashpa-iec-panel,
  .bashpa-iec-shell,
  .bashpa-iec-section-block,
  .bashpa-iec-accordion,
  .bashpa-iec-chart-description,
  .bashpa-iec-sources-static,
  .bashpa-iec-sources-head,
  .bashpa-iec-sources-body
) {
  background: var(--bashpa-page-bg) !important;
  color: var(--bashpa-text) !important;
}

:root[data-theme="dark"] :where(
  .card,
  .bess-header:not(.bashpa-iec-page .bess-header),
  .bess-form-section,
  .bess-results-section,
  .bess-info-section,
  .h2-info-section,
  .fleet-info-section,
  .chart-container,
  .bashpa-iec-shell:not(.bashpa-iec-page .bashpa-iec-shell)
) {
  background-color: var(--bashpa-elevated) !important;
  border-color: var(--bashpa-border) !important;
  color: var(--bashpa-text) !important;
}

/* Astra content gutters and entry wrappers should read as one continuous page. */
:root[data-theme="dark"] :where(
  body.ast-separate-container,
  body.ast-plain-container,
  body.ast-page-builder-template,
  #content,
  #content > .ast-container,
  #primary,
  .content-area,
  .site-main,
  article,
  .hentry,
  .ast-article-single,
  .ast-article-inner,
  .entry-content,
  .entry-content > .elementor,
  .elementor-page,
  .elementor-inner,
  .elementor-section-wrap,
  .elementor-section-stretched,
  .e-con-inner
) {
  background: var(--bashpa-page-bg) !important;
  background-image: none !important;
}

/* Astra's separate-container mode paints the visible side gutters itself. */
:root[data-theme="dark"] body.ast-separate-container #content,
:root[data-theme="dark"] body.ast-separate-container #content .ast-container,
:root[data-theme="dark"] body.ast-separate-container #primary,
:root[data-theme="dark"] body.ast-separate-container .ast-article-single,
:root[data-theme="dark"] body.ast-separate-container .ast-article-inner {
  background-color: var(--bashpa-page-bg) !important;
  box-shadow: none;
}

/*
 * Simulator pages can inherit a second background from Elementor's shortcode
 * widget or an Astra content wrapper. Keep that whole outer canvas uniform;
 * individual form/result panels remain elevated below it.
 */
:root[data-theme="dark"] body:has(.bess-simulator-container) :where(
  #page,
  #content,
  #content > .ast-container,
  #primary,
  .content-area,
  .site-main,
  article,
  .entry-content,
  .elementor,
  .elementor-section-wrap,
  .elementor-section,
  .elementor-container,
  .elementor-column,
  .elementor-column-wrap,
  .e-con,
  .e-con-inner,
  .elementor-widget-shortcode,
  .elementor-widget-shortcode > .elementor-widget-container,
  .elementor-shortcode,
  .bess-simulator-container,
  .bess-case-study
) {
  background-color: var(--bashpa-page-bg) !important;
  background-image: none !important;
}

/* Use one continuous dark shade across every simulator content section. */
:root[data-theme="dark"] :where(.bess-simulator-container, .bess-case-study) {
  --panel-bg: var(--bashpa-page-bg);
  --light-bg: var(--bashpa-page-bg);
  --muted-bg: var(--bashpa-page-bg);
  --bashpa-surface: var(--bashpa-page-bg);
  --bashpa-elevated: var(--bashpa-page-bg);
  background-color: var(--bashpa-page-bg) !important;
}

:root[data-theme="dark"] :where(.bess-simulator-container, .bess-case-study) :where(
  section,
  .bess-header,
  .bess-form-section,
  .bess-results-section,
  .bess-info-section,
  .h2-info-section,
  .fleet-info-section,
  .info-box,
  .chart-container,
  .h2-timeseries-container,
  .kpi-card,
  .insight-card,
  .insights-section,
  .settings-summary-card,
  .settings-summary-item,
  .settings-tab-panel,
  .summary-panel,
  .summary-section,
  .summary-highlight,
  .advanced-details,
  .bess-disclaimer,
  .bess-premium-upsell,
  .bess-lock-overlay,
  .bashpa-request-demo-modal__dialog,
  .bess-case-study__header,
  .bess-case-study__section,
  .bess-case-study__cta-section,
  table,
  thead,
  tbody,
  tr,
  th,
  td
) {
  background-color: var(--bashpa-page-bg) !important;
  background-image: none !important;
}

/* Normalize every Astra header row, including its left/right padded zones. */
:root[data-theme="dark"] :where(
  .site-header,
  .site-header .ast-main-header-wrap,
  .site-header .main-header-bar,
  .site-header .ast-primary-header-bar,
  .site-header .site-primary-header-wrap,
  .site-header .ast-builder-grid-row-container,
  .site-header .ast-builder-grid-row,
  .site-header .site-header-section,
  .site-header .ast-builder-layout-element,
  .site-header .ast-site-identity,
  .site-header .site-branding,
  .site-header .main-navigation,
  .site-header .ast-builder-menu
) {
  background: var(--bashpa-page-bg) !important;
}

/* Footer rows, secondary menus, widgets, and branding share the base tone. */
:root[data-theme="dark"] :where(
  .site-footer,
  .site-footer .ast-builder-grid-row-container,
  .site-footer .ast-builder-grid-row-container-inner,
  .site-footer .ast-builder-grid-row,
  .site-footer .site-footer-section,
  .site-footer .ast-builder-layout-element,
  .site-footer .footer-widget-area,
  .site-footer .footer-widget-area-inner,
  .site-footer .widget,
  .site-footer .widget_nav_menu,
  .site-footer .menu,
  .site-footer .site-branding,
  .site-footer .ast-site-identity,
  .site-footer .custom-logo-link,
  .elementor-location-footer,
  .elementor-location-footer .elementor-widget-container
) {
  background: var(--bashpa-page-bg) !important;
}

:root[data-theme="dark"] .bashpa-iec-page :where(
  table,
  thead,
  tbody,
  tr,
  th,
  td,
  .bashpa-iec-main-row,
  .bashpa-iec-chart-wrap,
  .bashpa-iec-controls-drawer,
  .bashpa-iec-capacity-map-svg,
  .bashpa-iec-capacity-hover-card,
  .bashpa-iec-chart-description-body,
  .bashpa-iec-sources-table,
  .bashpa-iec-sources-table th,
  .bashpa-iec-sources-table td,
  .bashpa-iec-source-popover,
  .bess-disclaimer,
  .bashpa-iec-card,
  .bashpa-iec-panel
) {
  background-color: var(--bashpa-page-bg) !important;
  border-color: var(--bashpa-border) !important;
  color: var(--bashpa-text) !important;
}

:root[data-theme="dark"] .bashpa-iec-shell:fullscreen,
:root[data-theme="dark"] .bashpa-iec-shell:fullscreen::backdrop,
:root[data-theme="dark"] .bashpa-iec-shell:-webkit-full-screen::-webkit-backdrop {
  background: var(--bashpa-page-bg) !important;
}

:root[data-theme="dark"] .bashpa-iec-page :where(
  .bashpa-iec-accordion-trigger:not(.is-active),
  .bashpa-iec-view-tab.is-active,
  .bashpa-iec-controls-toggle,
  .bashpa-iec-controls-close,
  .bashpa-iec-btn,
  .bashpa-iec-canvas-btn,
  .bashpa-iec-filter-input,
  select.bashpa-iec-filter-input,
  .bashpa-iec-switcher-select,
  input,
  textarea
) {
  background-color: var(--bashpa-surface) !important;
  border-color: var(--bashpa-border) !important;
  color: var(--bashpa-text) !important;
}

:root[data-theme="dark"] .bashpa-iec-page :where(
  .bashpa-iec-chart-description-body p,
  .bashpa-iec-sources-subtitle,
  .bashpa-iec-sources-table td.iec-src-notes,
  .bashpa-iec-sources-table td.iec-src-tags,
  .bess-disclaimer
) {
  color: var(--bashpa-muted) !important;
}

:root[data-theme="dark"] :where(a:not(.button):not(.wp-block-button__link)) {
  color: var(--bashpa-accent);
}

:root[data-theme="dark"] :where(input, select, textarea) {
  background: var(--bashpa-elevated);
  border-color: var(--bashpa-border);
  color: var(--bashpa-text);
}

/*
 * Reading text becomes white in dark mode. Menus, headings, display text,
 * counters, and buttons are intentionally excluded from this rule.
 */
:root[data-theme="dark"] :where(
  #content,
  .site-content,
  .site-footer
) :where(
  p,
  small,
  label,
  legend,
  blockquote,
  figcaption,
  caption,
  td,
  th,
  dt,
  dd,
  li
):not(.site-header *):not(.site-footer nav *):not(.site-footer .menu *):not(.site-footer [class*="menu"] *):not(.elementor-widget-heading *):not(.elementor-counter *):not(.elementor-button *):not(.wp-block-button *):not(.has-large-font-size):not(.has-x-large-font-size):not(.has-xx-large-font-size):not(.has-huge-font-size) {
  color: #ffffff !important;
}

/* Inline copy can be wrapped in spans; keep the exclusions ancestor-aware. */
:root[data-theme="dark"] :where(
  #content,
  .site-content,
  .site-footer
) :where(p, label, blockquote, figcaption, td, th, dt, dd) span:not(.site-footer nav *):not(.site-footer .menu *):not(.site-footer [class*="menu"] *):not(.elementor-widget-heading *):not(.elementor-counter *):not(.elementor-button *):not(.wp-block-button *):not(.has-large-font-size *):not(.has-x-large-font-size *):not(.has-xx-large-font-size *):not(.has-huge-font-size *) {
  color: #ffffff !important;
}

/* Links embedded in reading text should follow the white copy color. */
:root[data-theme="dark"] :where(
  #content,
  .site-content,
  .site-footer
) :where(p, li, td, dd, figcaption) a:not(.button):not(.wp-block-button__link):not(.site-header *):not(.site-footer nav *):not(.site-footer .menu *):not(.site-footer [class*="menu"] *) {
  color: #ffffff !important;
}

.bashpa-has-theme-toggle {
  position: relative;
}

.bashpa-theme-toggle {
  appearance: none;
  align-items: center;
  background: color-mix(in srgb, var(--bashpa-elevated) 88%, transparent);
  border: 1px solid var(--bashpa-border);
  border-radius: 999px;
  box-shadow: 0 4px 14px rgba(15, 23, 42, 0.12);
  color: var(--bashpa-text);
  cursor: pointer;
  display: inline-flex;
  height: 36px;
  justify-content: center;
  padding: 0;
  position: absolute;
  right: clamp(12px, 2vw, 28px);
  top: 50%;
  transform: translateY(-50%);
  transition: background-color 160ms ease, border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease;
  width: 36px;
  z-index: 100;
}

.bashpa-theme-toggle:hover {
  box-shadow: 0 6px 18px rgba(15, 23, 42, 0.2);
  transform: translateY(-50%) scale(1.05);
}

.bashpa-theme-toggle:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--bashpa-accent) 45%, transparent);
  outline-offset: 3px;
}

.bashpa-theme-toggle__symbol {
  font-size: 19px;
  line-height: 1;
}

@media (max-width: 544px) {
  .bashpa-theme-toggle {
    height: 34px;
    right: 52px;
    width: 34px;
  }
}

@media (prefers-reduced-motion: reduce) {
  html,
  body,
  #page,
  .site,
  .site-content,
  .bashpa-theme-toggle {
    transition: none;
  }
}
