/*
 * Global dark neon glass skin.
 * Loaded late so it can unify legacy and Bimmer CSS surfaces without
 * rewriting each feature stylesheet.
 */

:root,
:root[data-bm-theme="dark"],
body.dark-mode {
  color-scheme: dark;

  --bm-neon-bg: #030712;
  --bm-neon-bg-soft: #07111f;
  --bm-neon-surface: rgba(7, 16, 34, 0.66);
  --bm-neon-surface-strong: rgba(10, 22, 46, 0.82);
  --bm-neon-surface-muted: rgba(15, 30, 58, 0.58);
  --bm-neon-border: rgba(72, 228, 255, 0.26);
  --bm-neon-border-strong: rgba(112, 243, 255, 0.46);
  --bm-neon-cyan: #38e8ff;
  --bm-neon-blue: #4f8dff;
  --bm-neon-violet: #a78bfa;
  --bm-neon-pink: #ff4fd8;
  --bm-neon-green: #36f6a4;
  --bm-neon-amber: #ffd166;
  --bm-neon-danger: #ff5f7a;
  --bm-neon-text: #f6fbff;
  --bm-neon-text-soft: #c7d7ee;
  --bm-neon-muted: #91a5c5;
  --bm-neon-shadow: 0 18px 52px rgba(0, 0, 0, 0.42);
  --bm-neon-glow-cyan: 0 0 0 1px rgba(56, 232, 255, 0.26), 0 0 24px rgba(56, 232, 255, 0.16);
  --bm-neon-glow-strong: 0 0 0 1px rgba(56, 232, 255, 0.42), 0 0 32px rgba(56, 232, 255, 0.22), 0 0 58px rgba(255, 79, 216, 0.08);
  --bm-neon-glass-blur: blur(18px) saturate(1.25);

  --bm-color-bg: var(--bm-neon-bg);
  --bm-color-surface: var(--bm-neon-surface);
  --bm-color-surface-2: var(--bm-neon-surface-muted);
  --bm-color-surface-3: rgba(18, 38, 70, 0.7);
  --bm-color-surface-raised: var(--bm-neon-surface-strong);
  --bm-color-surface-muted: rgba(12, 25, 48, 0.68);
  --bm-color-panel: var(--bm-neon-surface);
  --bm-color-panel-strong: var(--bm-neon-surface-strong);
  --bm-color-text: var(--bm-neon-text);
  --bm-color-text-soft: var(--bm-neon-text-soft);
  --bm-color-muted: var(--bm-neon-muted);
  --bm-color-border: var(--bm-neon-border);
  --bm-color-border-strong: var(--bm-neon-border-strong);
  --bm-color-primary: var(--bm-neon-cyan);
  --bm-color-primary-strong: #93f7ff;
  --bm-color-primary-soft: rgba(56, 232, 255, 0.14);
  --bm-brand-primary: var(--bm-neon-cyan);
  --bm-brand-primary-hover: #a7fbff;
  --bm-brand-secondary: var(--bm-neon-pink);
  --bm-brand-secondary-soft: rgba(255, 79, 216, 0.14);
  --bm-brand-accent: var(--bm-neon-amber);
  --bm-focus-color: var(--bm-neon-cyan);
  --bm-focus-ring: 0 0 0 3px rgba(56, 232, 255, 0.24), 0 0 24px rgba(56, 232, 255, 0.22);
  --bm-shadow-xs: 0 2px 8px rgba(0, 0, 0, 0.34);
  --bm-shadow-sm: 0 8px 18px rgba(0, 0, 0, 0.32);
  --bm-shadow-md: var(--bm-neon-shadow);
  --bm-shadow-lg: 0 28px 76px rgba(0, 0, 0, 0.5);
  --bm-shadow-card: var(--bm-neon-shadow);
  --bm-shadow-floating: 0 30px 84px rgba(0, 0, 0, 0.54), 0 0 34px rgba(56, 232, 255, 0.08);
  --bm-shadow-modal: 0 34px 92px rgba(0, 0, 0, 0.58), 0 0 42px rgba(56, 232, 255, 0.12);

  --color-ink: var(--bm-neon-text);
  --color-ink-soft: var(--bm-neon-text-soft);
  --color-muted: var(--bm-neon-muted);
  --color-surface: var(--bm-neon-surface);
  --color-surface-alt: var(--bm-neon-surface-muted);
  --color-border: var(--bm-neon-border);
  --color-bg: var(--bm-neon-bg);
  --color-primary: var(--bm-neon-cyan);
  --color-secondary: var(--bm-neon-pink);
  --color-success: var(--bm-neon-green);
  --color-warning: var(--bm-neon-amber);
  --color-danger: var(--bm-neon-danger);
  --shadow-glow: var(--bm-neon-glow-strong);

  --mui-white: rgba(10, 22, 46, 0.84);
  --mui-surface-soft: rgba(12, 28, 54, 0.72);
  --mui-surface-muted: rgba(18, 38, 70, 0.7);
  --mui-border: var(--bm-neon-border);
  --mui-border-soft: rgba(72, 228, 255, 0.22);
  --mui-border-strong: var(--bm-neon-border-strong);
  --mui-ink-strong: var(--bm-neon-text);
  --mui-ink-dark: var(--bm-neon-text-soft);
  --mui-ink: var(--bm-neon-muted);
  --mui-muted: var(--bm-neon-muted);
  --mui-primary: var(--bm-neon-cyan);
  --mui-primary-alt: var(--bm-neon-blue);
  --mui-success: var(--bm-neon-green);
  --mui-danger: var(--bm-neon-danger);
  --mui-shadow-ink-soft: rgba(0, 0, 0, 0.32);
  --mui-shadow-ink-faint: rgba(0, 0, 0, 0.22);
}

html {
  background: var(--bm-neon-bg);
}

body,
body.dark-mode {
  background:
    linear-gradient(135deg, rgba(3, 7, 18, 0.96) 0%, rgba(5, 12, 28, 0.98) 48%, rgba(8, 15, 34, 0.96) 100%),
    var(--bm-neon-bg) !important;
  color: var(--bm-neon-text) !important;
}

body::before {
  background-image:
    linear-gradient(rgba(56, 232, 255, 0.1) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 79, 216, 0.075) 1px, transparent 1px) !important;
  background-size: 44px 44px !important;
  opacity: 0.34 !important;
}

body.dark-mode::before {
  opacity: 0.34 !important;
}

body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background:
    linear-gradient(120deg, rgba(56, 232, 255, 0.08), transparent 32%, rgba(255, 79, 216, 0.07) 64%, transparent),
    linear-gradient(180deg, rgba(255, 255, 255, 0.035), transparent 24%, rgba(56, 232, 255, 0.035));
}

body.dark-mode :where(
  .content-hub,
  .hub-shell,
  #app,
  .bm-scope,
  header,
  .app-header,
  .workspace-focus-shell
) {
  color: var(--bm-neon-text);
}

body.dark-mode :where(
  .hub-app-prompt,
  .hub-hero-card,
  .hub-card,
  .hub-proof-band article,
  .hub-section,
  .hub-tool-panel,
  .hub-article-card,
  .welcome-gateway-card,
  .budget,
  .table-container,
  .main-view-nav,
  .workspace-nav-meta,
  .workspace-mobile-group-panel,
  .toolbar-dropdown-panel,
  .modal-content,
  .app-dialog-card,
  .login-modal-card,
  .project-files-header,
  .project-files-recents,
  .project-files-list,
  .project-files-footer,
  .sample-projects-panel,
  .sample-project-card,
  .project-data-editor,
  .base-costs-editor,
  .rubro-details-modal,
  .pdf-export-buttons,
  .catalog-ribbon,
  .floating-rubro-list,
  .search-results-dropdown,
  .cliente-panel,
  .historial-panel,
  .gantt-toolbar,
  .gantt-panel,
  .gantt-container,
  .analysis-card,
  .dashboard-card,
  .workflow-panel,
  .scenario-panel,
  .site-management-panel,
  .card,
  .panel,
  .bm-card,
  .bm-modal,
  .bm-table
) {
  background:
    linear-gradient(145deg, rgba(8, 18, 38, 0.84), rgba(10, 24, 50, 0.62)) !important;
  border-color: var(--bm-neon-border) !important;
  box-shadow: var(--bm-neon-shadow), var(--bm-neon-glow-cyan) !important;
  color: var(--bm-neon-text) !important;
  backdrop-filter: var(--bm-neon-glass-blur);
  -webkit-backdrop-filter: var(--bm-neon-glass-blur);
}

body.dark-mode :where(.modal-overlay, .login-modal-overlay, .app-dialog-overlay) {
  background:
    linear-gradient(135deg, rgba(2, 6, 23, 0.78), rgba(5, 12, 28, 0.86)) !important;
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
}

body.dark-mode :where(
  h1,
  h2,
  h3,
  h4,
  h5,
  h6,
  strong,
  label,
  .workspace-nav-title,
  .budget-rubro-name,
  .result-name,
  .cell-name,
  .hub-app-title,
  .hub-card strong
) {
  color: var(--bm-neon-text) !important;
}

body.dark-mode :where(
  p,
  small,
  li,
  .workspace-nav-detail,
  .hub-lead,
  .hub-app-copy,
  .result-cat,
  .budget-mobile-meta,
  .bm-muted,
  .text-muted
) {
  color: var(--bm-neon-text-soft) !important;
}

body.dark-mode :where(a, .btn-details-inline, .hub-button-tertiary) {
  color: var(--bm-neon-cyan) !important;
}

body.dark-mode :where(
  .budget-name,
  .text-muted,
  .sample-project-card p,
  .sample-projects-header p,
  .project-files-empty,
  .base-costs-note
) {
  color: var(--bm-neon-text-soft) !important;
}

body.dark-mode :where(.sample-project-card strong, .project-files-header h3) {
  color: var(--bm-neon-text) !important;
}

body.dark-mode :where(
  input,
  select,
  textarea,
  .bm-input,
  .quantity-input-modern,
  .quantity-input-compact,
  .input-price-edit,
  .search-box,
  .search-box input,
  .input-search-inline,
  .debug-input,
  .debug-select,
  .login-modal-card .form-group input
) {
  background: rgba(3, 11, 25, 0.68) !important;
  border-color: var(--bm-neon-border) !important;
  color: var(--bm-neon-text) !important;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.03), 0 0 18px rgba(56, 232, 255, 0.08) !important;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

body.dark-mode :where(input, select, textarea, .bm-input)::placeholder {
  color: rgba(199, 215, 238, 0.62) !important;
  opacity: 1;
}

body.dark-mode :where(
  input,
  select,
  textarea,
  button,
  summary,
  a,
  [tabindex]
):focus-visible {
  outline: none !important;
  border-color: var(--bm-neon-border-strong) !important;
  box-shadow: var(--bm-focus-ring) !important;
}

body.dark-mode :where(
  .bm-button,
  .btn,
  button,
  .view-tab,
  .toolbar-dropdown-item,
  .mobile-project-action,
  .mobile-settings-btn,
  .budget-row-mobile-actions > summary,
  .workspace-nav-toggle,
  .workspace-app-menu-trigger,
  .quantity-step-btn,
  .hub-button,
  .hub-button-secondary,
  .hub-button-tertiary
) {
  border-color: var(--bm-neon-border) !important;
  color: var(--bm-neon-text) !important;
  text-shadow: 0 0 14px rgba(56, 232, 255, 0.22);
  box-shadow: var(--bm-neon-glow-cyan) !important;
}

body.dark-mode :where(
  .bm-button--secondary,
  .bm-button--outline,
  .bm-button--quiet,
  .toolbar-dropdown-item,
  .view-tab,
  .mobile-settings-btn,
  .budget-row-mobile-actions > summary,
  .workspace-nav-toggle,
  .workspace-app-menu-trigger,
  .hub-button-secondary,
  .hub-button-tertiary
) {
  background: linear-gradient(145deg, rgba(9, 21, 43, 0.76), rgba(13, 31, 62, 0.5)) !important;
}

body.dark-mode :where(
  .bm-button--primary,
  .project-toolbar-action--new,
  .workspace-nav-action.bm-button--primary,
  .mobile-project-action.bm-button--primary,
  .pdf-export-action--detailed,
  .hub-button
) {
  background: linear-gradient(135deg, rgba(56, 232, 255, 0.96), rgba(79, 141, 255, 0.9) 48%, rgba(255, 79, 216, 0.86)) !important;
  border-color: rgba(147, 247, 255, 0.7) !important;
  color: #03101f !important;
  text-shadow: none !important;
  box-shadow: 0 0 0 1px rgba(147, 247, 255, 0.38), 0 0 32px rgba(56, 232, 255, 0.32), 0 12px 28px rgba(0, 0, 0, 0.32) !important;
}

body.dark-mode :where(
  .bm-button--success,
  .bm-button--success-quiet.is-dirty,
  .workspace-nav-save.is-dirty,
  .pdf-export-action--executive
) {
  background: linear-gradient(135deg, rgba(54, 246, 164, 0.92), rgba(56, 232, 255, 0.8)) !important;
  border-color: rgba(54, 246, 164, 0.62) !important;
  color: #03140f !important;
  text-shadow: none !important;
}

body.dark-mode :where(
  .bm-button--danger,
  .bm-button--danger-quiet.is-danger,
  .toolbar-dropdown-item--danger,
  .pdf-export-action--preview
) {
  background: linear-gradient(135deg, rgba(255, 95, 122, 0.9), rgba(255, 79, 216, 0.72)) !important;
  border-color: rgba(255, 151, 174, 0.58) !important;
  color: #fff7fb !important;
}

body.dark-mode :where(
  .bm-button:hover:not(:disabled),
  button:hover:not(:disabled),
  .view-tab:hover,
  .toolbar-dropdown-item:hover,
  .hub-button:hover,
  .hub-button-secondary:hover,
  .hub-button-tertiary:hover
) {
  border-color: var(--bm-neon-border-strong) !important;
  box-shadow: var(--bm-neon-glow-strong) !important;
}

body.dark-mode :where(.budget-table, table, .rubro-list-table) {
  background: rgba(4, 12, 27, 0.5) !important;
  color: var(--bm-neon-text) !important;
}

body.dark-mode :where(.budget-table th, table th, .category-row td) {
  background: linear-gradient(135deg, rgba(56, 232, 255, 0.16), rgba(167, 139, 250, 0.14)) !important;
  border-color: var(--bm-neon-border) !important;
  color: var(--bm-neon-text) !important;
}

body.dark-mode :where(.budget-table td, table td, .rubro-list-table td) {
  background: rgba(5, 14, 31, 0.42) !important;
  border-color: rgba(72, 228, 255, 0.14) !important;
  color: var(--bm-neon-text-soft) !important;
}

body.dark-mode :where(
  .budget-table td span,
  .budget-table td strong,
  .budget-table .text-right,
  .budget-table .text-center,
  .rubro-list-table td span,
  .mat-total-cell,
  .mat-total-cell strong,
  .total-footer
) {
  color: var(--bm-neon-text-soft) !important;
}

body.dark-mode :where(.total-footer, .text-success) {
  color: var(--bm-neon-green) !important;
}

body.dark-mode :where(.budget-table tbody tr:hover td, .search-result-item:hover, .rubro-list-table tr:hover) {
  background: rgba(56, 232, 255, 0.1) !important;
}

body.dark-mode :where(
  .bm-badge,
  .workspace-nav-status,
  .hub-signal-pill,
  .budget-certification-chip,
  .budget-flow-chip,
  .budget-mobile-meta span,
  .tree-category-count
) {
  background: rgba(56, 232, 255, 0.1) !important;
  border: 1px solid rgba(56, 232, 255, 0.24) !important;
  color: var(--bm-neon-text-soft) !important;
  box-shadow: 0 0 18px rgba(56, 232, 255, 0.08) !important;
}

body.dark-mode :where(.bm-badge--success, .workspace-nav-status.bm-badge--success, .budget-flow-chip.is-linked, .budget-certification-chip.is-approved) {
  background: rgba(54, 246, 164, 0.13) !important;
  border-color: rgba(54, 246, 164, 0.34) !important;
  color: #b7ffd9 !important;
}

body.dark-mode :where(.bm-badge--warning, .workspace-nav-status.bm-badge--warning, .budget-flow-chip.is-missing) {
  background: rgba(255, 209, 102, 0.14) !important;
  border-color: rgba(255, 209, 102, 0.36) !important;
  color: #ffe8a3 !important;
}

body.dark-mode :where(.bm-badge--danger, .workspace-nav-status.bm-badge--danger, .workspace-nav-status.bm-badge--error) {
  background: rgba(255, 95, 122, 0.14) !important;
  border-color: rgba(255, 95, 122, 0.38) !important;
  color: #ffc2cf !important;
}

body.dark-mode :where(
  .catalog-ribbon .tree-category-header,
  .floating-rubro-list .catalog-category-filter-strip,
  .floating-rubro-list .catalog-category-filter-button,
  .floating-rubro-list .catalog-group-header,
  .presupuesto-item,
  .workspace-mobile-group,
  .toolbar-dropdown-item,
  .search-result-item
) {
  border-color: rgba(72, 228, 255, 0.16) !important;
}

body.dark-mode :where(.modal-close, .btn-close-budget, .bm-icon-button) {
  background: rgba(3, 11, 25, 0.68) !important;
  border-color: var(--bm-neon-border) !important;
  color: var(--bm-neon-text) !important;
  box-shadow: var(--bm-neon-glow-cyan) !important;
}

body.dark-mode .floating-rubro-list .catalog-category-filter-strip {
  background:
    linear-gradient(90deg, rgba(3, 11, 25, 0.82), rgba(10, 24, 50, 0.56)) !important;
  border-color: rgba(72, 228, 255, 0.18) !important;
}

body.dark-mode .floating-rubro-list .catalog-category-filter-button {
  background:
    linear-gradient(145deg, rgba(8, 21, 42, 0.78), rgba(12, 28, 56, 0.56)) !important;
  border-color: rgba(72, 228, 255, 0.2) !important;
  color: var(--bm-neon-text-soft) !important;
  box-shadow: 0 0 18px rgba(56, 232, 255, 0.06) !important;
}

body.dark-mode .floating-rubro-list .catalog-category-filter-button:hover,
body.dark-mode .floating-rubro-list .catalog-category-filter-button:focus-visible {
  border-color: var(--bm-neon-border-strong) !important;
  box-shadow: var(--bm-neon-glow-cyan), 0 12px 26px rgba(0, 0, 0, 0.28) !important;
}

body.dark-mode .floating-rubro-list .catalog-category-filter-button.active {
  background:
    linear-gradient(145deg, rgba(56, 232, 255, 0.2), rgba(255, 79, 216, 0.14)),
    rgba(8, 21, 42, 0.78) !important;
  border-color: var(--bm-neon-border-strong) !important;
  color: var(--bm-neon-text) !important;
  box-shadow: var(--bm-neon-glow-strong) !important;
}

body.dark-mode .floating-rubro-list .catalog-category-filter-count {
  background: linear-gradient(135deg, var(--bm-neon-cyan), var(--bm-neon-pink)) !important;
  border-color: rgba(3, 11, 25, 0.9) !important;
  color: #ffffff !important;
}

body.dark-mode :where(.gantt .grid-background, .gantt-container svg .grid-background) {
  fill: rgba(3, 10, 24, 0.76) !important;
}

body.dark-mode :where(.gantt .grid-row, .gantt-container svg .grid-row) {
  fill: rgba(56, 232, 255, 0.035) !important;
}

body.dark-mode :where(.gantt .lower-text, .gantt .upper-text, .gantt-container text) {
  fill: var(--bm-neon-text-soft) !important;
}

body.dark-mode :where(.gantt .bar, .gantt-container .bar) {
  fill: var(--bm-neon-blue) !important;
  filter: drop-shadow(0 0 8px rgba(56, 232, 255, 0.45));
}

body.dark-mode :where(.gantt .bar-progress, .gantt-container .bar-progress) {
  fill: var(--bm-neon-cyan) !important;
}

body.dark-mode ::selection {
  background: rgba(56, 232, 255, 0.34);
  color: #ffffff;
}

body.dark-mode * {
  scrollbar-color: rgba(56, 232, 255, 0.46) rgba(3, 11, 25, 0.55);
}

body.dark-mode *::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}

body.dark-mode *::-webkit-scrollbar-track {
  background: rgba(3, 11, 25, 0.5);
}

body.dark-mode *::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, rgba(56, 232, 255, 0.68), rgba(255, 79, 216, 0.48));
  border: 2px solid rgba(3, 11, 25, 0.7);
  border-radius: 999px;
}

@media (max-width: 768px) {
  body.dark-mode :where(
    .main-view-nav,
    .workspace-mobile-group-panel,
    .toolbar-dropdown-panel,
    .floating-rubro-list,
    .modal-content
  ) {
    backdrop-filter: blur(14px) saturate(1.18);
    -webkit-backdrop-filter: blur(14px) saturate(1.18);
  }
}

body.dark-mode .catalog-ribbon.catalog-ribbon--fixed-launcher.bm-scope {
  background: transparent !important;
  border-color: transparent !important;
  box-shadow: none !important;
}

body.dark-mode .catalog-ribbon.catalog-ribbon--fixed-launcher.bm-scope.is-expanded {
  background: transparent !important;
  border-color: transparent !important;
  box-shadow: none !important;
}

body.dark-mode .catalog-ribbon.catalog-ribbon--fixed-launcher .ribbon-launcher-button {
  background:
    linear-gradient(145deg, rgba(8, 21, 42, 0.92), rgba(14, 38, 68, 0.78)),
    radial-gradient(circle at 12% 12%, rgba(56, 232, 255, 0.24), transparent 38%) !important;
  border-color: var(--bm-neon-border) !important;
  color: var(--bm-neon-text) !important;
  box-shadow: var(--bm-neon-glow-cyan), 0 12px 28px rgba(0, 0, 0, 0.32) !important;
}

body.dark-mode .catalog-ribbon.catalog-ribbon--fixed-launcher .ribbon-launcher-button:hover,
body.dark-mode .catalog-ribbon.catalog-ribbon--fixed-launcher .ribbon-launcher-button:focus-visible {
  border-color: var(--bm-neon-border-strong) !important;
  box-shadow: var(--bm-neon-glow-strong), 0 16px 34px rgba(0, 0, 0, 0.4) !important;
}

/* Contraste tardío para superficies heredadas de Analítica, Abastecimiento y cantidades. */
body.dark-mode :where(
  .analysis-host,
  .analysis-container,
  .analysis-dashboard-container,
  .materials-head,
  .materials-table-wrap
) {
  color: var(--bm-neon-text) !important;
}

body.dark-mode :where(
  .analysis-dashboard-toolbar,
  .materials-head,
  .analysis-host .kpi-card-new,
  .analysis-host .chart-box,
  .analysis-host .planning-summary-band,
  .analysis-host .tensorial-hotspots-panel,
  .analysis-host .dashboard-card,
  .analysis-host .supply-risk-alert,
  .materials-table-wrap
) {
  background: linear-gradient(145deg, rgba(8, 21, 42, 0.88), rgba(12, 28, 56, 0.72)) !important;
  border-color: rgba(72, 228, 255, 0.2) !important;
  color: var(--bm-neon-text) !important;
  box-shadow: 0 16px 34px rgba(0, 0, 0, 0.24), 0 0 18px rgba(56, 232, 255, 0.06) !important;
}

body.dark-mode :where(
  .analysis-dashboard-toolbar strong,
  .materials-head h3,
  .analysis-host .kpi-content .val,
  .analysis-host .planning-summary-main h3,
  .analysis-host .chart-header h3,
  .analysis-host .tensorial-hotspots-head h3,
  .analysis-host .tensorial-hotspot-main strong,
  .analysis-host .tensorial-hotspot-score strong,
  .analysis-host .scen-name,
  .mat-name
) {
  color: var(--bm-neon-text) !important;
}

body.dark-mode :where(
  .materials-head p,
  .analysis-host .kpi-content label,
  .analysis-host .kpi-content small,
  .analysis-host .planning-summary-main p,
  .analysis-host .planning-summary-metrics span,
  .analysis-host .planning-critical-list span,
  .analysis-host .chart-header p,
  .analysis-host .tensorial-hotspots-head p,
  .analysis-host .tensorial-hotspot-main span,
  .analysis-host .tensorial-hotspot-score span,
  .analysis-host .tensorial-hotspot-card small,
  .mat-list-table small,
  .mat-list-table td
) {
  color: var(--bm-neon-text-soft) !important;
}

body.dark-mode :where(
  .analysis-host .planning-summary-metrics div,
  .analysis-host .sensitivity-card,
  .analysis-host .tensorial-hotspot-card,
  .mat-mobile-pill,
  .mat-mobile-note
) {
  background: rgba(3, 11, 25, 0.64) !important;
  border-color: rgba(72, 228, 255, 0.16) !important;
  color: var(--bm-neon-text-soft) !important;
}

body.dark-mode :where(.mat-list-table th) {
  background: linear-gradient(135deg, rgba(56, 232, 255, 0.16), rgba(167, 139, 250, 0.14)) !important;
  border-color: rgba(72, 228, 255, 0.2) !important;
  color: var(--bm-neon-text) !important;
}

body.dark-mode :where(.quantity-input-modern, .quantity-input-compact) {
  background: #101827 !important;
  border-color: rgba(72, 228, 255, 0.42) !important;
  color: #e0faff !important;
  -webkit-text-fill-color: #e0faff !important;
}

body.dark-mode :where(.quantity-input-modern:focus, .quantity-input-compact:focus) {
  background: #0b1628 !important;
  border-color: var(--bm-neon-border-strong) !important;
  color: #f0fdff !important;
  -webkit-text-fill-color: #f0fdff !important;
}

/* Contraste de estados y mini-cronograma: evita texto claro sobre superficies heredadas. */
body.dark-mode :where(
  .material-risk-btn.risk-low,
  .material-risk-btn.risk-moderate,
  .material-risk-btn.risk-critical
) {
  border-color: rgba(72, 228, 255, 0.38) !important;
  box-shadow: 0 0 12px rgba(56, 232, 255, 0.08) !important;
  color: #e9fbff !important;
}

body.dark-mode .material-risk-btn.risk-low {
  background: rgba(16, 112, 91, 0.68) !important;
}

body.dark-mode .material-risk-btn.risk-moderate {
  background: rgba(122, 77, 25, 0.82) !important;
}

body.dark-mode .material-risk-btn.risk-critical {
  background: rgba(126, 35, 55, 0.82) !important;
}

body.dark-mode :where(
  .mini-gantt-shell,
  .mini-gantt-scale,
  .mini-gantt-header,
  .mini-gantt-task-head,
  .mini-gantt-task-cell,
  .mini-gantt-track,
  .mini-gantt-line-legend span,
  .mini-gantt-list-toggle,
  .mini-gantt-link-toggle,
  .mini-gantt-controls button
) {
  background: linear-gradient(145deg, rgba(8, 21, 42, 0.96), rgba(12, 28, 56, 0.88)) !important;
  border-color: rgba(72, 228, 255, 0.2) !important;
  color: var(--bm-neon-text-soft) !important;
}

body.dark-mode :where(
  .mini-gantt-task-head,
  .mini-gantt-task-cell,
  .mini-gantt-task-cell strong,
  .mini-gantt-task-cell small,
  .mini-gantt-scale strong,
  .mini-gantt-scale span,
  .mini-gantt-line-legend span,
  .mini-gantt-list-toggle,
  .mini-gantt-link-toggle,
  .mini-gantt-controls button
) {
  color: var(--bm-neon-text) !important;
}

body.dark-mode .mini-gantt-timeline-head {
  background:
    repeating-linear-gradient(
      90deg,
      rgba(15, 32, 58, 0.96) 0,
      rgba(15, 32, 58, 0.96) calc(var(--week-width, 96px) - 1px),
      rgba(72, 228, 255, 0.18) calc(var(--week-width, 96px) - 1px),
      rgba(72, 228, 255, 0.18) var(--week-width, 96px)
    ) !important;
}

body.dark-mode .mini-gantt-track {
  background:
    repeating-linear-gradient(
      90deg,
      transparent 0,
      transparent calc(var(--week-width, 96px) - 1px),
      rgba(72, 228, 255, 0.16) calc(var(--week-width, 96px) - 1px),
      rgba(72, 228, 255, 0.16) var(--week-width, 96px)
    ),
    linear-gradient(180deg, rgba(7, 19, 39, 0.98) 0%, rgba(11, 27, 52, 0.96) 100%) !important;
}

body.dark-mode :where(
  .mini-gantt-list-toggle[aria-pressed="true"],
  .mini-gantt-link-toggle[aria-pressed="true"]
) {
  background: linear-gradient(135deg, #087f91, #155e75) !important;
  border-color: rgba(125, 239, 255, 0.72) !important;
  color: #f1fdff !important;
}

/* Contraste de APU y CMS local: conserva la jerarquia pero elimina superficies claras heredadas. */
body.dark-mode :where(
  .apu-editor-shell,
  .apu-editor-shell .apu-title-block h2,
  .apu-editor-shell .apu-panel-heading,
  .apu-editor-shell .apu-section-title,
  .apu-editor-shell .apu-kpi-strip strong,
  .apu-editor-shell .apu-flow-guide strong,
  .apu-editor-shell .apu-tree-item-main strong,
  .apu-editor-shell .apu-selected-rubro h3
) {
  color: var(--bm-neon-text) !important;
}

body.dark-mode :where(
  .apu-kpi-strip > div,
  .apu-work-panel,
  .apu-tree-panel,
  .apu-selected-rubro,
  .apu-flow-guide > div,
  .apu-tree-item,
  .apu-measurement-table-wrap,
  .apu-override-block,
  .apu-composition-panel,
  .apu-composition-item,
  .apu-composition-chip,
  .apu-percent-row
) {
  background: linear-gradient(145deg, rgba(8, 21, 42, 0.94), rgba(12, 28, 56, 0.82)) !important;
  border-color: rgba(72, 228, 255, 0.2) !important;
  color: var(--bm-neon-text-soft) !important;
  box-shadow: 0 16px 34px rgba(0, 0, 0, 0.22), 0 0 18px rgba(56, 232, 255, 0.05) !important;
}

body.dark-mode .apu-flow-guide > div.active,
body.dark-mode .apu-tree-item:hover,
body.dark-mode .apu-tree-item.active,
body.dark-mode .apu-override-block--active {
  background: linear-gradient(145deg, rgba(7, 67, 77, 0.86), rgba(11, 52, 72, 0.88)) !important;
  border-color: rgba(72, 228, 255, 0.5) !important;
}

body.dark-mode :where(
  .apu-editor-shell .apu-title-block span,
  .apu-editor-shell .apu-panel-heading span,
  .apu-editor-shell .apu-section-title span,
  .apu-editor-shell .apu-kpi-strip span,
  .apu-editor-shell .apu-flow-guide small,
  .apu-editor-shell .apu-tree-item-main small,
  .apu-editor-shell .apu-panel-hint,
  .apu-editor-shell .apu-line-index,
  .apu-editor-shell .apu-composition-chip span,
  .apu-editor-shell .apu-composition-main small,
  .apu-editor-shell .apu-composition-note,
  .apu-editor-shell .apu-empty-state,
  .apu-editor-shell .apu-override-placeholder
) {
  color: var(--bm-neon-text-soft) !important;
}

body.dark-mode :where(
  .apu-flow-guide span,
  .apu-chapter-code,
  .apu-selected-rubro > strong,
  .apu-tree-item-total,
  .apu-partial-cell,
  .apu-effective-summary,
  .apu-final-total,
  .apu-percent-base,
  .apu-composition-toggle,
  .apu-composition-section-head
) {
  color: var(--bm-neon-text) !important;
}

body.dark-mode :where(
  .apu-flow-guide span,
  .apu-chapter-code,
  .apu-selected-rubro > strong,
  .apu-effective-summary,
  .apu-final-total,
  .apu-percent-base,
  .apu-composition-toggle,
  .apu-composition-section-head
) {
  background: rgba(8, 47, 73, 0.78) !important;
  border-color: rgba(72, 228, 255, 0.28) !important;
}

body.dark-mode :where(
  .apu-chapter-name,
  .apu-chapter-toggle,
  .apu-tree-chapter-button,
  .apu-empty-state strong,
  .apu-final-total strong,
  .apu-percent-amount
) {
  color: var(--bm-neon-text) !important;
}

body.dark-mode :where(.apu-empty-state, .apu-override-placeholder) {
  background: rgba(5, 18, 36, 0.86) !important;
  border-color: rgba(72, 228, 255, 0.24) !important;
  color: var(--bm-neon-text-soft) !important;
}

body.dark-mode :where(
  .apu-tree-chapter,
  .apu-measurement-table th,
  .apu-measurement-table td
) {
  border-color: rgba(72, 228, 255, 0.16) !important;
}

body.dark-mode .apu-measurement-table th {
  background: rgba(24, 52, 78, 0.92) !important;
  color: var(--bm-neon-text) !important;
}

body.dark-mode .apu-measurement-table td {
  background: rgba(4, 15, 32, 0.52) !important;
  color: var(--bm-neon-text-soft) !important;
}

body.dark-mode :where(
  .apu-cell-input,
  .apu-field-input,
  .apu-percent-name,
  .apu-percent-rate,
  .apu-override-input
) {
  background: #101827 !important;
  border-color: rgba(72, 228, 255, 0.34) !important;
  color: #e0faff !important;
  -webkit-text-fill-color: #e0faff !important;
}

body.dark-mode :where(
  .apu-cell-input::placeholder,
  .apu-field-input::placeholder,
  .apu-percent-name::placeholder,
  .apu-percent-rate::placeholder,
  .apu-override-input::placeholder
) {
  color: #8ea8c4 !important;
  -webkit-text-fill-color: #8ea8c4 !important;
}

body.dark-mode :where(
  .apu-composition-toggle:hover,
  .apu-composition-section-head:hover
) {
  background: rgba(11, 65, 82, 0.9) !important;
  border-color: rgba(125, 239, 255, 0.58) !important;
}

body.dark-mode .catalog-cms-shell {
  --catalog-bg: linear-gradient(145deg, rgba(8, 21, 42, 0.98), rgba(12, 28, 56, 0.92));
  --catalog-panel: rgba(8, 21, 42, 0.9);
  --catalog-panel-soft: rgba(14, 32, 58, 0.9);
  --catalog-border: rgba(72, 228, 255, 0.2);
  --catalog-border-strong: rgba(72, 228, 255, 0.38);
  --catalog-shadow: 0 20px 44px rgba(0, 0, 0, 0.34);
  --catalog-text: #e9f8ff;
  --catalog-muted: #b5c8de;
  --catalog-accent: #63e6ff;
  --catalog-accent-soft: rgba(72, 228, 255, 0.14);
  --catalog-warn: #ffd08a;
  --catalog-warn-soft: rgba(245, 158, 11, 0.16);
  --catalog-danger: #ff9aae;
  --catalog-danger-soft: rgba(244, 63, 94, 0.16);
}

body.dark-mode :where(
  .catalog-cms-hero,
  .catalog-cms-stat-card,
  .catalog-cms-list-panel,
  .catalog-cms-editor-panel,
  .catalog-cms-category-block,
  .catalog-cms-list-item,
  .catalog-cms-adder,
  .catalog-cms-quick-card,
  .catalog-cms-component-row,
  .catalog-cms-empty,
  .catalog-cms-review-note,
  .catalog-cms-cost-summary,
  .catalog-cms-preview
) {
  background: linear-gradient(145deg, rgba(8, 21, 42, 0.94), rgba(12, 28, 56, 0.82)) !important;
  border-color: rgba(72, 228, 255, 0.2) !important;
  color: var(--catalog-text) !important;
  box-shadow: var(--catalog-shadow) !important;
}

body.dark-mode :where(
  .catalog-cms-shell,
  .catalog-cms-hero h2,
  .catalog-cms-editor-header h3,
  .catalog-cms-list-item strong,
  .catalog-cms-component-main strong,
  .catalog-cms-cost-summary strong
) {
  color: var(--catalog-text) !important;
}

body.dark-mode :where(
  .catalog-cms-hero p,
  .catalog-cms-editor-header p,
  .catalog-cms-empty span,
  .catalog-cms-list-item small,
  .catalog-cms-component-main small,
  .catalog-cms-file-hint,
  .catalog-cms-cost-summary small,
  .catalog-cms-field label
) {
  color: var(--catalog-muted) !important;
}

body.dark-mode :where(
  .catalog-cms-search,
  .catalog-cms-filter,
  .catalog-cms-field input,
  .catalog-cms-adder select,
  .catalog-cms-component-controls input,
  .catalog-cms-quick-card input
) {
  background: #101827 !important;
  border-color: rgba(72, 228, 255, 0.3) !important;
  color: #e0faff !important;
  -webkit-text-fill-color: #e0faff !important;
}

body.dark-mode :where(
  .catalog-cms-tab,
  .catalog-cms-quality-chip,
  .catalog-cms-tree-all,
  .catalog-cms-tree-toggle,
  .catalog-cms-tree-leaf
) {
  background: rgba(14, 32, 58, 0.9) !important;
  border-color: rgba(72, 228, 255, 0.2) !important;
  color: var(--catalog-text) !important;
}

body.dark-mode :where(
  .catalog-cms-tab.active,
  .catalog-cms-quality-chip.active,
  .catalog-cms-tree-all.active,
  .catalog-cms-tree-toggle.active,
  .catalog-cms-tree-leaf.active,
  .catalog-cms-review-note.is-good
) {
  background: rgba(7, 86, 96, 0.72) !important;
  border-color: rgba(72, 228, 255, 0.48) !important;
  color: #f0fdff !important;
}

body.dark-mode :where(
  .catalog-cms-tab:hover,
  .catalog-cms-quality-chip:hover,
  .catalog-cms-tree-all:hover,
  .catalog-cms-tree-toggle:hover,
  .catalog-cms-tree-leaf:hover,
  .catalog-cms-list-item:hover
) {
  background: rgba(18, 61, 86, 0.92) !important;
  border-color: rgba(125, 239, 255, 0.52) !important;
}

body.dark-mode .catalog-cms-chip {
  background: rgba(72, 228, 255, 0.14) !important;
  color: #bdf5ff !important;
}

body.dark-mode .catalog-cms-chip--muted {
  background: rgba(148, 163, 184, 0.16) !important;
  color: #c8d5e5 !important;
}

body.dark-mode .catalog-cms-chip--warn {
  background: rgba(245, 158, 11, 0.18) !important;
  color: #ffd08a !important;
}

body.dark-mode .catalog-cms-section {
  border-top-color: rgba(72, 228, 255, 0.16) !important;
}

/* Al abrir Herramientas, ese boton es el unico foco visual del selector. */
body.dark-mode .workspace-nav-tabs:has(.workspace-nav-tools-dropdown[open]) > .view-tab.is-active {
  background: linear-gradient(145deg, rgba(12, 28, 56, 0.88), rgba(8, 21, 42, 0.78)) !important;
  border-color: rgba(125, 211, 252, 0.2) !important;
  box-shadow: none !important;
  color: #aebfd3 !important;
}

body.dark-mode .workspace-nav-tabs .workspace-nav-tools-dropdown[open] > .workspace-nav-tools-trigger {
  background: linear-gradient(135deg, rgba(8, 145, 178, 0.56), rgba(15, 23, 42, 0.96)) !important;
  border-color: rgba(125, 239, 255, 0.72) !important;
  box-shadow: 0 0 0 2px rgba(34, 211, 238, 0.18), 0 0 22px rgba(56, 232, 255, 0.18) !important;
  color: #f0fdff !important;
}
