/* ============================================================
   BPA · Theme unificado
   Aplica lenguaje visual cool/corporativo en toda la plataforma.
   Optimizado para GPU integrada Intel (sin backdrop-filter masivo).
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@500;600;700&family=Inter:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600;700&display=swap');

/* ============================================================
   DARK MODE — paleta warm (sin azules fríos), pensada para uso
   nocturno largo sin fatiga ocular.
   Toggle vía data-theme="dark" en <html>.
   ============================================================ */
:root {
  --bpa-page-bg: #FBF8F1;
  --bpa-surface: rgba(255,255,255,0.94);
  --bpa-surface-strong: #ffffff;
  --bpa-surface-soft: rgba(255,255,255,0.78);
  --bpa-text: #21140F;
  --bpa-text-soft: #6b5755;
  --bpa-text-muted: #8a7672;
  --bpa-border: rgba(118,36,68,0.08);
  --bpa-border-strong: rgba(118,36,68,0.18);
  --bpa-burgundy-on-bg: var(--bpa-burgundy);
  --bpa-mint-on-bg: var(--bpa-mint-dark);
  --bpa-success: #4A6233;
  --bpa-danger: #A8322D;
  --bpa-warning: #C9A03A;
  --bpa-orb-1-alpha: 0.18;
  --bpa-orb-2-alpha: 0.30;
  --bpa-orb-3-alpha: 0.40;
  --bpa-grid-alpha: 0.03;
  --bpa-shadow-card: 0 4px 16px rgba(33, 20, 15, 0.04);
  --bpa-shadow-hover: 0 14px 36px rgba(118, 36, 68, 0.15);
  --bpa-input-bg: #ffffff;
}

/* Dark mode — paleta validada con WCAG AAA por agente de teoría del color
   (2026-05-28). Fondo carbón FRÍO (H 220°) para evitar vibración rojo-rojo
   con el burgundy adaptado. Burgundy rosé-cobre + mint como acento activo. */
html[data-theme="dark"] {
  --bpa-page-bg: #0E1217;
  --bpa-surface: #171C23;
  --bpa-surface-strong: #1F2630;
  --bpa-surface-soft: #222A35;
  --bpa-text: #E8EAED;
  --bpa-text-soft: #B4B8BF;
  --bpa-text-muted: #7E848D;
  --bpa-border: #2A323D;
  --bpa-border-strong: #3D4654;
  --bpa-burgundy-on-bg: #E0859E;   /* rosé-cobre, 7.1:1 sobre surface */
  --bpa-mint-on-bg: #A8D4B5;       /* mint activo, 9.4:1 sobre surface */
  --bpa-success: #94BEA4;
  --bpa-danger: #F08A8A;
  --bpa-warning: #E8C572;
  --bpa-accent-cream: #F4E2C0;     /* solo titulares Cinzel, NUNCA fondo */
  --bpa-orb-1-alpha: 0.16;
  --bpa-orb-2-alpha: 0.14;
  --bpa-orb-3-alpha: 0.10;
  --bpa-grid-alpha: 0.05;
  --bpa-shadow-card: 0 4px 16px rgba(0, 0, 0, 0.40);
  --bpa-shadow-hover: 0 14px 36px rgba(0, 0, 0, 0.55);
  --bpa-input-bg: #13181F;
}

/* ---------- Fondo global unificado ---------- */
html, body {
  background: var(--bpa-page-bg) !important;
  min-height: 100vh;
  color: var(--bpa-text);
}

/* Texto general usa la variable */
html[data-theme="dark"] body,
html[data-theme="dark"] {
  color: var(--bpa-text);
}

/* ---------- Tipografía base (sin !important, respeta módulos con font propio) ---------- */
body {
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}

/* Títulos display con Cinzel — h1 de páginas internas.
   IMPORTANTE: NO usar !important; los módulos con identidad propia (Bolograma=Caveat,
   Clientes=Caveat) tienen su font-family en .bolo-title/.cli-title con mayor especificidad. */
.bpa-display,
.page-header h1,
main.shell h1,
section.page-header h1 {
  font-family: 'Cinzel', serif;
  font-weight: 700;
  letter-spacing: 0.03em;
  color: var(--bpa-burgundy);
}

/* Tagline después del h1 (page-header / common pattern) */
.page-header > p,
section.page-header > p {
  color: var(--bpa-text-soft);
  font-size: 14px;
  line-height: 1.5;
  margin-top: 6px;
}

/* En dark mode los h1 con burgundy se ven mejor en un tono rosé más claro */
html[data-theme="dark"] .bpa-display,
html[data-theme="dark"] .page-header h1,
html[data-theme="dark"] main.shell h1,
html[data-theme="dark"] section.page-header h1 {
  color: var(--bpa-burgundy-on-bg);
}

/* Monospace para badges, status, version */
.appbar__version,
.bpa-mono {
  font-family: 'JetBrains Mono', ui-monospace, "SF Mono", Menlo, Consolas, monospace !important;
  letter-spacing: 0.08em;
}

/* ---------- Fondo unificado (sin spotlight cursor, sin animaciones perpetuas) ---------- */
.bpa-bg {
  position: fixed;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
}
.bpa-bg__orb {
  position: absolute;
  border-radius: 50%;
  opacity: 0.28;
}
.bpa-bg__orb--1 {
  width: 700px; height: 700px;
  background: radial-gradient(circle, rgba(118,36,68,var(--bpa-orb-1-alpha)) 0%, transparent 60%);
  top: -200px; left: -200px;
}
.bpa-bg__orb--2 {
  width: 600px; height: 600px;
  background: radial-gradient(circle, rgba(148,190,164,var(--bpa-orb-2-alpha)) 0%, transparent 60%);
  top: 30%; right: -220px;
}
.bpa-bg__orb--3 {
  width: 500px; height: 500px;
  background: radial-gradient(circle, rgba(244,226,192,var(--bpa-orb-3-alpha)) 0%, transparent 60%);
  bottom: -180px; left: 25%;
}
.bpa-bg__grid {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(to right, rgba(118, 36, 68, var(--bpa-grid-alpha)) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(118, 36, 68, var(--bpa-grid-alpha)) 1px, transparent 1px);
  background-size: 56px 56px;
}
html[data-theme="dark"] .bpa-bg__grid {
  background-image:
    linear-gradient(to right, rgba(244, 226, 192, var(--bpa-grid-alpha)) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(244, 226, 192, var(--bpa-grid-alpha)) 1px, transparent 1px);
}

/* Eleva el contenido por encima del fondo.
   OJO: NO incluir .appbar aquí — position:relative le mataba el sticky (quedaba flotando
   el filterbar a mitad de página). El appbar ya trae su propio position:sticky + z-index:50. */
.shell,
main,
.launcher-shell,
.group-shell {
  position: relative;
  z-index: 10;
}

/* ---------- App bar refinado ---------- */
.appbar {
  background: rgba(251, 248, 241, 0.92) !important;
  border-bottom: 1px solid rgba(118, 36, 68, 0.08) !important;
}
html[data-theme="dark"] .appbar {
  background: rgba(28, 22, 21, 0.92) !important;
  border-bottom: 1px solid rgba(244, 226, 192, 0.10) !important;
}
.appbar__brand strong {
  font-family: 'Cinzel', serif;
  letter-spacing: 0.08em;
  color: var(--bpa-burgundy);
  font-weight: 600;
}
html[data-theme="dark"] .appbar__brand strong {
  color: var(--bpa-burgundy-on-bg);
}
.appbar__brand-text span {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--bpa-charcoal-soft);
}
html[data-theme="dark"] .appbar__brand-text span {
  color: var(--bpa-text-muted);
}
html[data-theme="dark"] .appbar__nav a,
html[data-theme="dark"] .appbar__home {
  color: var(--bpa-text-soft);
}
html[data-theme="dark"] .appbar__nav a:hover,
html[data-theme="dark"] .appbar__nav a.is-active {
  color: var(--bpa-burgundy-on-bg);
}
html[data-theme="dark"] .appbar__date,
html[data-theme="dark"] .appbar__version {
  color: var(--bpa-text-muted);
}

/* ---------- Status pill conexión (componente reutilizable) ---------- */
.bpa-status-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  background: rgba(96, 128, 111, 0.10);
  border: 1px solid rgba(96, 128, 111, 0.25);
  border-radius: 100px;
  color: var(--bpa-mint-dark);
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.bpa-status-pill__dot {
  width: 6px; height: 6px;
  background: var(--bpa-mint-dark);
  border-radius: 50%;
  animation: bpa-pulse 2.5s ease-in-out infinite;
}
@keyframes bpa-pulse {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.4; }
}

/* ---------- Cards uniformes (sólo cuando se opt-in con .bpa-card) ---------- */
@property --bpa-angle {
  syntax: '<angle>';
  initial-value: 0deg;
  inherits: false;
}
@keyframes bpa-angle-spin { to { --bpa-angle: 360deg; } }

.bpa-card {
  position: relative;
  background: linear-gradient(145deg, rgba(255,255,255,0.97) 0%, rgba(251,248,241,0.93) 100%);
  border-radius: 18px;
  padding: 22px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  overflow: hidden;
  box-shadow: var(--bpa-shadow-card);
  transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.3s ease;
  text-decoration: none;
  color: inherit;
}
html[data-theme="dark"] .bpa-card {
  background: linear-gradient(145deg, #1F2630 0%, #171C23 100%);
  color: var(--bpa-text);
  border: 1px solid #2A323D;
}

/* Cards "blancas hardcoded" en componentes legacy (.app-tile en group.html) —
   override en cascada con !important para ganar al style inline. */
html[data-theme="dark"] .app-tile {
  background: linear-gradient(145deg, #1F2630 0%, #171C23 100%) !important;
  border: 1px solid #2A323D !important;
  color: var(--bpa-text) !important;
}
html[data-theme="dark"] .app-tile__title {
  color: var(--bpa-accent-cream) !important;
}
html[data-theme="dark"] .app-tile__desc {
  color: var(--bpa-text-soft) !important;
}
html[data-theme="dark"] .app-tile__icon {
  background: linear-gradient(135deg, rgba(168, 212, 181, 0.18) 0%, rgba(168, 212, 181, 0.08) 100%) !important;
  border-color: rgba(168, 212, 181, 0.30) !important;
  color: var(--bpa-mint-on-bg) !important;
}
html[data-theme="dark"] .app-tile__badge {
  background: rgba(168, 212, 181, 0.14) !important;
  color: var(--bpa-mint-on-bg) !important;
  border-color: rgba(168, 212, 181, 0.30) !important;
}
html[data-theme="dark"] .app-tile--soon .app-tile__badge {
  background: rgba(224, 133, 158, 0.14) !important;
  color: var(--bpa-burgundy-on-bg) !important;
  border-color: rgba(224, 133, 158, 0.28) !important;
}
html[data-theme="dark"] .group-header__icon {
  background: linear-gradient(135deg, rgba(168, 212, 181, 0.18) 0%, rgba(168, 212, 181, 0.08) 100%) !important;
  border-color: rgba(168, 212, 181, 0.30) !important;
  color: var(--bpa-accent-cream) !important;
}
html[data-theme="dark"] .group-header__text h1 {
  color: var(--bpa-accent-cream) !important;
}
html[data-theme="dark"] .group-header__text p {
  color: var(--bpa-text-soft) !important;
}
html[data-theme="dark"] .back-link {
  color: var(--bpa-burgundy-on-bg) !important;
}

/* ============================================================
   LAUNCHER (launcher.html) — overrides específicos para dark
   El launcher tiene paleta hardcoded en su <style>; le damos
   surface oscura, títulos cream y acentos rosé-cobre.
   ============================================================ */
html[data-theme="dark"] .top-bar {
  background: rgba(15, 18, 23, 0.92) !important;
  border-bottom: 1px solid var(--bpa-border) !important;
}
html[data-theme="dark"] .top-bar__logo {
  color: var(--bpa-accent-cream) !important;
}
html[data-theme="dark"] .top-bar__right {
  color: var(--bpa-text-muted) !important;
}
html[data-theme="dark"] .top-bar__right a {
  color: var(--bpa-burgundy-on-bg) !important;
}
html[data-theme="dark"] .top-bar__status {
  background: rgba(168, 212, 181, 0.10) !important;
  border-color: rgba(168, 212, 181, 0.28) !important;
  color: var(--bpa-mint-on-bg) !important;
}
html[data-theme="dark"] .top-bar__status .dot {
  background: var(--bpa-mint-on-bg) !important;
}

html[data-theme="dark"] .hero__eyebrow {
  background: linear-gradient(90deg, rgba(168,212,181,0.10), rgba(244,226,192,0.08)) !important;
  border-color: rgba(224, 133, 158, 0.22) !important;
  color: var(--bpa-burgundy-on-bg) !important;
}
html[data-theme="dark"] .hero h1 {
  color: var(--bpa-accent-cream) !important;
}
html[data-theme="dark"] .hero__tagline {
  color: var(--bpa-text-soft) !important;
}
html[data-theme="dark"] .hero__tagline .sep {
  background: var(--bpa-mint-on-bg) !important;
}
html[data-theme="dark"] .hero__welcome {
  background: var(--bpa-surface-strong) !important;
  border-color: var(--bpa-border) !important;
  color: var(--bpa-text) !important;
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.25);
}
html[data-theme="dark"] .hero__welcome strong {
  color: var(--bpa-burgundy-on-bg) !important;
}
html[data-theme="dark"] .hero__welcome .dot-online::before {
  background: var(--bpa-mint-on-bg) !important;
  box-shadow: 0 0 0 4px rgba(168, 212, 181, 0.15) !important;
}
html[data-theme="dark"] .hero__welcome .dot-online::after {
  background: rgba(168, 212, 181, 0.4) !important;
}
html[data-theme="dark"] .hero__welcome .role {
  background: rgba(168, 212, 181, 0.14) !important;
  color: var(--bpa-mint-on-bg) !important;
}

html[data-theme="dark"] .live-stat {
  background: var(--bpa-surface) !important;
  border-color: var(--bpa-border) !important;
  color: var(--bpa-text-soft) !important;
}
html[data-theme="dark"] .live-stat__value {
  color: var(--bpa-burgundy-on-bg) !important;
}
html[data-theme="dark"] .live-stat__dot {
  background: var(--bpa-mint-on-bg) !important;
}

/* Cards del launcher = misma identidad que .app-tile en dark */
html[data-theme="dark"] .group-card {
  background: linear-gradient(145deg, #1F2630 0%, #171C23 100%) !important;
  color: var(--bpa-text) !important;
}
html[data-theme="dark"] .group-card::before {
  background: linear-gradient(135deg, rgba(224, 133, 158, 0.18), rgba(224, 133, 158, 0.10)) !important;
}
html[data-theme="dark"] .group-card__icon {
  background: linear-gradient(135deg, rgba(168, 212, 181, 0.18) 0%, rgba(168, 212, 181, 0.08) 100%) !important;
  border: 1px solid rgba(168, 212, 181, 0.30) !important;
  color: var(--bpa-mint-on-bg) !important;
}
html[data-theme="dark"] .group-card__badge {
  background: rgba(168, 212, 181, 0.14) !important;
  color: var(--bpa-mint-on-bg) !important;
}
html[data-theme="dark"] .group-card__title {
  color: var(--bpa-accent-cream) !important;
}
html[data-theme="dark"] .group-card__desc {
  color: var(--bpa-text-soft) !important;
}
html[data-theme="dark"] .group-card__arrow {
  color: var(--bpa-burgundy-on-bg) !important;
}

html[data-theme="dark"] .launcher-footer {
  color: var(--bpa-text-muted) !important;
}
html[data-theme="dark"] .launcher-footer a {
  color: var(--bpa-burgundy-on-bg) !important;
}

/* Switcher de idioma del launcher en dark */
html[data-theme="dark"] .lang-switch button,
html[data-theme="dark"] .lang-pill {
  background: var(--bpa-surface) !important;
  border-color: var(--bpa-border-strong) !important;
  color: var(--bpa-text) !important;
}
html[data-theme="dark"] .lang-switch button.is-active,
html[data-theme="dark"] .lang-pill.is-active {
  background: rgba(168, 212, 181, 0.18) !important;
  color: var(--bpa-mint-on-bg) !important;
}

/* ============================================================
   DARK MODE — REMAPEO de variables de styles.css
   styles.css define --surface, --bg, --border etc. en :root.
   Las redefinimos en dark para que TODOS los componentes que
   las usan herendan automáticamente la paleta correcta.
   ============================================================ */
html[data-theme="dark"] {
  --bg:           #0E1217;
  --surface:      #171C23;
  --surface-alt:  #1F2630;
  --border:       #2A323D;
  --border-soft:  #222A35;
  --text:         #E8EAED;
  --text-muted:   #B4B8BF;
  --text-faint:   #7E848D;
  --accent:       #E0859E;
  --accent-hover: #F0A4BA;
  --accent-soft:  rgba(224, 133, 158, 0.16);
  --link:         #A8D4B5;
  --danger:       #F08A8A;
  --warning:      #E8C572;
  --success:      #A8D4B5;

  --bpa-burgundy-soft: rgba(224, 133, 158, 0.16);
  --bpa-cream-soft: #1F2630;
  --bpa-off-white: #171C23;
  --bpa-paper: #0E1217;
  --bpa-charcoal: #E8EAED;
  --bpa-charcoal-soft: #B4B8BF;

  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.30);
  --shadow-md: 0 2px 6px rgba(0, 0, 0, 0.40);
  --shadow-lg: 0 6px 18px rgba(0, 0, 0, 0.55);
}

/* Filas alternadas y tablas: aseguramos surface oscura */
html[data-theme="dark"] tbody tr,
html[data-theme="dark"] tr.row,
html[data-theme="dark"] .row {
  background: var(--bpa-surface) !important;
  color: var(--bpa-text);
}
html[data-theme="dark"] tbody tr:nth-child(even) {
  background: rgba(31, 38, 48, 0.65) !important;
}

/* Filas de "Deleted projects" / Perdidos */
html[data-theme="dark"] .deleted-row,
html[data-theme="dark"] tr.deleted-row {
  background: rgba(224, 133, 158, 0.08) !important;
}
html[data-theme="dark"] .deleted-row td,
html[data-theme="dark"] tr.deleted-row td {
  color: var(--bpa-text) !important;
}

/* Phase sections en projects (banda cream que aparece arriba de la tabla) */
html[data-theme="dark"] .phase-section,
html[data-theme="dark"] .phase-section__head,
html[data-theme="dark"] .phase-card,
html[data-theme="dark"] .closed-archive,
html[data-theme="dark"] .attention-card,
html[data-theme="dark"] .review-card {
  background: var(--bpa-surface) !important;
  color: var(--bpa-text) !important;
  border-color: var(--bpa-border) !important;
}

/* Year chips */
html[data-theme="dark"] .year-chip,
html[data-theme="dark"] .year-pill {
  background: var(--bpa-surface-strong) !important;
  color: var(--bpa-text) !important;
  border: 1px solid var(--bpa-border-strong) !important;
}
html[data-theme="dark"] .year-chip.is-active,
html[data-theme="dark"] .year-pill.is-active {
  background: rgba(224, 133, 158, 0.20) !important;
  color: var(--bpa-burgundy-on-bg) !important;
  border-color: var(--bpa-burgundy-on-bg) !important;
}

/* Filtros / barras toolbar con background blanco hardcoded */
html[data-theme="dark"] .filter-bar,
html[data-theme="dark"] .toolbar,
html[data-theme="dark"] .search-bar,
html[data-theme="dark"] .kanban-toolbar {
  background: var(--bpa-surface) !important;
  border-color: var(--bpa-border) !important;
  color: var(--bpa-text) !important;
}

/* KPI grandes (Items activos, Unidades, Valor stock, etc.) */
html[data-theme="dark"] .kpi {
  background: var(--bpa-surface) !important;
  border: 1px solid var(--bpa-border) !important;
  color: var(--bpa-text) !important;
}
html[data-theme="dark"] .kpi__label,
html[data-theme="dark"] .kpi-card__label {
  color: var(--bpa-text-muted) !important;
}
html[data-theme="dark"] .kpi__value:not([style*="color"]) {
  color: var(--bpa-text) !important;
}

/* Tabs/segments (Inventario: Todos, Inventario de venta, Demos BPA...) */
html[data-theme="dark"] .seg-btn,
html[data-theme="dark"] .tab-btn,
html[data-theme="dark"] .filter-pill,
html[data-theme="dark"] .chip {
  background: var(--bpa-surface-strong) !important;
  color: var(--bpa-text-soft) !important;
  border-color: var(--bpa-border-strong) !important;
}
html[data-theme="dark"] .seg-btn.is-active,
html[data-theme="dark"] .tab-btn.is-active,
html[data-theme="dark"] .filter-pill.is-active,
html[data-theme="dark"] .chip.is-active,
html[data-theme="dark"] .view-tab.is-active,
html[data-theme="dark"] button.is-active {
  background: var(--bpa-burgundy-on-bg) !important;
  color: #0E1217 !important;
  border-color: var(--bpa-burgundy-on-bg) !important;
}

/* Kanban del CRM y Projects: columnas con título cream */
html[data-theme="dark"] .kanban-col,
html[data-theme="dark"] .kanban-col__head,
html[data-theme="dark"] .kanban-col__body {
  background: rgba(23, 28, 35, 0.85) !important;
  color: var(--bpa-text) !important;
  border-color: var(--bpa-border) !important;
}
html[data-theme="dark"] .kanban-col__title {
  color: var(--bpa-text-soft) !important;
}
html[data-theme="dark"] .kanban-col__num,
html[data-theme="dark"] .phase-section__num {
  background: #E0859E !important;
  color: #0E1217 !important;
}
html[data-theme="dark"] .phase-section__count,
html[data-theme="dark"] .chip__count {
  background: #E0859E !important;
  color: #0E1217 !important;
}
html[data-theme="dark"] .phase-section__name { color: var(--bpa-accent-cream) !important; }

/* "Projects requiring attention" / "Closed projects archive" cream cards */
html[data-theme="dark"] .attention-row,
html[data-theme="dark"] .archive-row,
html[data-theme="dark"] .archive-card,
html[data-theme="dark"] [class*="attention"],
html[data-theme="dark"] [class*="archive"] {
  background: var(--bpa-surface) !important;
  color: var(--bpa-text) !important;
  border-color: var(--bpa-border) !important;
}

/* Project rows individuales (filas de tabla con code chip) */
html[data-theme="dark"] .projects-table tbody tr {
  background: var(--bpa-surface) !important;
}
html[data-theme="dark"] .projects-table tbody tr:nth-child(even) {
  background: rgba(31, 38, 48, 0.55) !important;
}
html[data-theme="dark"] .projects-table th {
  background: rgba(168, 212, 181, 0.06) !important;
  color: var(--bpa-text-soft) !important;
  border-color: var(--bpa-border) !important;
}
html[data-theme="dark"] .projects-table td {
  color: var(--bpa-text) !important;
  border-color: var(--bpa-border) !important;
}
html[data-theme="dark"] .col-name a,
html[data-theme="dark"] td a {
  color: var(--bpa-burgundy-on-bg) !important;
}

/* Progress bars en gráficos "PROJECTS BY PHASE" */
html[data-theme="dark"] .stat-bar,
html[data-theme="dark"] .stat-bar__track,
html[data-theme="dark"] .bar-track,
html[data-theme="dark"] .progress-track {
  background: rgba(168, 212, 181, 0.10) !important;
}

/* Admin docs cards (préstamos DM####) */
html[data-theme="dark"] .doc-card,
html[data-theme="dark"] .doc-row,
html[data-theme="dark"] .admin-doc-row {
  background: var(--bpa-surface) !important;
  color: var(--bpa-text) !important;
  border-color: var(--bpa-border) !important;
}
html[data-theme="dark"] .doc-card a,
html[data-theme="dark"] .doc-card__code {
  color: var(--bpa-burgundy-on-bg) !important;
}

/* Header h1 que se pinta burgundy en módulos internos: usar rosé */
html[data-theme="dark"] .page-header h1,
html[data-theme="dark"] main h1,
html[data-theme="dark"] .bpa-display {
  color: var(--bpa-burgundy-on-bg) !important;
}

/* Footer pequeño en módulos */
html[data-theme="dark"] .footnote,
html[data-theme="dark"] footer {
  color: var(--bpa-text-muted) !important;
}

/* Cards del kanban CRM (cada lead) */
html[data-theme="dark"] .lead-card,
html[data-theme="dark"] .kanban-card {
  background: rgba(31, 38, 48, 0.95) !important;
  color: var(--bpa-text) !important;
  border: 1px solid var(--bpa-border) !important;
}
html[data-theme="dark"] .lead-card__title,
html[data-theme="dark"] .kanban-card__title {
  color: var(--bpa-burgundy-on-bg) !important;
}

/* Notificaciones bell dropdown si aparece sobre fondo blanco */
html[data-theme="dark"] .notification-panel,
html[data-theme="dark"] .dropdown-menu,
html[data-theme="dark"] .menu-pop {
  background: var(--bpa-surface-strong) !important;
  border-color: var(--bpa-border) !important;
  color: var(--bpa-text) !important;
}

/* Phase chips (1·Design HOT, 2·Design Tracking, etc.) */
html[data-theme="dark"] .phase-chip,
html[data-theme="dark"] .phase-pill {
  background: rgba(168, 212, 181, 0.12) !important;
  color: var(--bpa-mint-on-bg) !important;
  border-color: rgba(168, 212, 181, 0.28) !important;
}

/* ============================================================
   DARK MODE — Ronda 2: módulos específicos con bugs reportados
   (Caja, Ventas, Soporte, PESTEL legend, DOFA, Bolograma,
    Horizontes, Clientes, Curva de Valor)
   ============================================================ */

/* AppBar genérica (Caja, Soporte, Reportes etc.) — versión "blanca" */
html[data-theme="dark"] header.appbar,
html[data-theme="dark"] .appbar {
  background: rgba(15, 18, 23, 0.92) !important;
  border-bottom: 1px solid var(--bpa-border) !important;
  color: var(--bpa-text);
}
html[data-theme="dark"] .appbar__brand strong,
html[data-theme="dark"] header.appbar strong {
  color: var(--bpa-accent-cream) !important;
}
html[data-theme="dark"] .appbar__brand-text span,
html[data-theme="dark"] .appbar__nav a,
html[data-theme="dark"] .appbar__home {
  background: rgba(168, 212, 181, 0.14) !important;
  color: var(--bpa-mint-on-bg) !important;
  border: 1px solid rgba(168, 212, 181, 0.22) !important;
}
html[data-theme="dark"] .appbar__home:hover {
  background: rgba(168, 212, 181, 0.30) !important;
  color: #EAF6EE !important;
  border-color: rgba(168, 212, 181, 0.45) !important;
}
html[data-theme="dark"] .appbar__nav a.is-active {
  /* Solo RESALTAR (fondo + borde), sin cambiar padding → el texto no se sube ni se desalinea. */
  background: rgba(168, 212, 181, 0.30) !important;
  color: #EAF6EE !important;
  border-color: rgba(168, 212, 181, 0.55) !important;
}
/* Chips de código por año — DARK MODE: tonos APAGADOS, legibles, no chillones (fotosensibilidad). */
html[data-theme="dark"] {
  --year-2020: #5E5326;  /* ámbar apagado   */
  --year-2021: #45494F;  /* gris            */
  --year-2022: #3A5636;  /* verde apagado   */
  --year-2023: #2C5456;  /* teal apagado    */
  --year-2024: #6A472A;  /* naranja apagado */
  --year-2025: #474364;  /* lavanda apagado */
  --year-2026: #5A3E44;  /* rosa apagado    */
  --year-2027: #40444A;  /* gris            */
}
html[data-theme="dark"] .code-chip {
  color: #E6DCCB !important;                 /* crema suave, no blanco puro (menos glare) */
  border-color: rgba(255, 255, 255, 0.10);
}
html[data-theme="dark"] .appbar__date {
  color: var(--bpa-text-muted) !important;
}
html[data-theme="dark"] .appbar__version {
  background: rgba(255,255,255,0.08) !important;
  color: var(--bpa-cream) !important;
  border: 1px solid rgba(255,255,255,0.14) !important;
}

/* Bell / quick switcher / lang switch chips dentro del appbar */
html[data-theme="dark"] .lang-switch,
html[data-theme="dark"] .lang-switch__pill,
html[data-theme="dark"] .quick-switch {
  background: var(--bpa-surface) !important;
  color: var(--bpa-text) !important;
  border-color: var(--bpa-border) !important;
}

/* ============================================================
   Quick Switcher (Cmd+K) — palette. Estilado con variables de
   tema para que respete light Y dark automáticamente. El JS
   (preview/app.js) inyecta estas clases; antes usaba estilos
   inline hardcoded (background:white) que rompían el dark mode.
   ============================================================ */
.bpa-qs-back {
  position: fixed;
  inset: 0;
  background: rgba(33, 20, 15, 0.45);
  z-index: 9999;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding-top: 12vh;
}
.bpa-qs-panel {
  background: var(--surface);
  color: var(--text);
  border: 1px solid var(--border);
  border-radius: 12px;
  width: min(620px, 92vw);
  box-shadow: var(--shadow-lg, 0 12px 40px rgba(0, 0, 0, 0.35));
  overflow: hidden;
  font-family: system-ui, -apple-system, sans-serif;
}
.bpa-qs-head {
  padding: 12px 16px;
  border-bottom: 1px solid var(--border-soft);
  display: flex;
  align-items: center;
  gap: 10px;
}
.bpa-qs-input {
  width: 100%;
  border: none;
  outline: none;
  font-size: 16px;
  background: transparent;
  color: var(--text);
}
.bpa-qs-input::placeholder { color: var(--text-faint); }
.bpa-qs-spinner {
  font-size: 11px;
  color: var(--text-faint);
  flex-shrink: 0;
}
.bpa-qs-list {
  max-height: 55vh;
  overflow-y: auto;
}
.bpa-qs-empty {
  padding: 20px;
  text-align: center;
  color: var(--text-faint);
  font-size: 14px;
}
.bpa-qs-foot {
  padding: 8px 14px;
  border-top: 1px solid var(--border-soft);
  font-size: 11px;
  color: var(--text-faint);
  display: flex;
  justify-content: space-between;
}
.bpa-qs-foot kbd {
  background: var(--surface-alt);
  color: var(--text-muted);
  padding: 1px 5px;
  border-radius: 3px;
  font-family: monospace;
}
.bpa-qs-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  padding: 10px 16px;
  text-decoration: none;
  color: var(--text);
  background: transparent;
  border-left: 3px solid transparent;
}
.bpa-qs-row.is-sel {
  background: var(--accent-soft, rgba(148, 190, 164, 0.13));
  border-left-color: var(--accent);
}
.bpa-qs-row__main {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  flex: 1;
}
.bpa-qs-row__icon {
  font-size: 14px;
  flex-shrink: 0;
  width: 18px;
  text-align: center;
}
.bpa-qs-row__text { min-width: 0; flex: 1; }
.bpa-qs-row__label {
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.bpa-qs-row__sub {
  font-size: 11px;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.bpa-qs-row__type {
  color: var(--text-faint);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  flex-shrink: 0;
}
/* El icono del tipo "module" es burgundy oscuro (#5C2A1F): ilegible
   sobre fondo oscuro. En dark lo subimos al rosé-cobre de la marca. */
html[data-theme="dark"] .bpa-qs-row__icon[style*="5C2A1F"] {
  color: var(--accent) !important;
}

/* ============ Caja Menor ============ */
html[data-theme="dark"] .period-bar {
  background: var(--bpa-surface) !important;
  border-color: var(--bpa-border) !important;
  color: var(--bpa-text);
}
html[data-theme="dark"] .period-bar label {
  color: var(--bpa-text-muted) !important;
}
html[data-theme="dark"] .period-bar select {
  background: var(--bpa-input-bg) !important;
  color: var(--bpa-text) !important;
  border-color: var(--bpa-border-strong) !important;
}
html[data-theme="dark"] .period-status-pill--open {
  background: rgba(168, 212, 181, 0.16) !important;
  color: var(--bpa-mint-on-bg) !important;
  border-color: rgba(168, 212, 181, 0.32) !important;
}
html[data-theme="dark"] .period-status-pill--closed {
  background: rgba(224, 133, 158, 0.16) !important;
  color: var(--bpa-burgundy-on-bg) !important;
  border-color: rgba(224, 133, 158, 0.32) !important;
}
html[data-theme="dark"] .movements-table {
  background: var(--bpa-surface) !important;
  border-color: var(--bpa-border) !important;
}
html[data-theme="dark"] .movements-table th {
  background: rgba(168, 212, 181, 0.08) !important;
  color: var(--bpa-text-soft) !important;
}
html[data-theme="dark"] .empty-card {
  background: var(--bpa-surface) !important;
  border-color: var(--bpa-border-strong) !important;
  color: var(--bpa-text-soft) !important;
}

/* ============ Ventas (sales.html) ============ */
html[data-theme="dark"] .sale-row,
html[data-theme="dark"] tr.sale-row {
  background: var(--bpa-surface) !important;
}
html[data-theme="dark"] td.col-cliente,
html[data-theme="dark"] td.col-client,
html[data-theme="dark"] td.cell-client,
html[data-theme="dark"] .col-cliente,
html[data-theme="dark"] .client-cell {
  background: rgba(168, 212, 181, 0.06) !important;
  color: var(--bpa-text) !important;
}
html[data-theme="dark"] .sales-table th {
  background: rgba(168, 212, 181, 0.08) !important;
  color: var(--bpa-text-soft) !important;
}
/* Tabs activos rosados (Todas las columnas, Anticipos, Vista comercial...) */
html[data-theme="dark"] .pill.is-active,
html[data-theme="dark"] .col-toggle.is-active,
html[data-theme="dark"] .stat-pill.is-active {
  background: var(--bpa-burgundy-on-bg) !important;
  color: #0E1217 !important;
}

/* ============ Soporte (support.html) — modal ============ */
html[data-theme="dark"] .case-modal,
html[data-theme="dark"] .modal.case-modal,
html[data-theme="dark"] .support-modal {
  background: var(--bpa-surface-strong) !important;
  color: var(--bpa-text) !important;
  border: 1px solid var(--bpa-border) !important;
}
html[data-theme="dark"] .case-modal h2,
html[data-theme="dark"] .case-modal h3,
html[data-theme="dark"] .case-modal label {
  color: var(--bpa-text) !important;
}
/* Soporte: filas */
html[data-theme="dark"] .support-row td,
html[data-theme="dark"] tr.case-row td {
  color: var(--bpa-text) !important;
}
html[data-theme="dark"] .case-code,
html[data-theme="dark"] .support-code {
  color: var(--bpa-burgundy-on-bg) !important;
}

/* ============ PESTEL legend bar ============ */
html[data-theme="dark"] .legend,
html[data-theme="dark"] .matrix-legend,
html[data-theme="dark"] .pestel-legend {
  background: var(--bpa-surface) !important;
  border: 1px solid var(--bpa-border) !important;
  color: var(--bpa-text) !important;
}
html[data-theme="dark"] .legend span,
html[data-theme="dark"] .legend label,
html[data-theme="dark"] .matrix-legend span {
  color: var(--bpa-text) !important;
}
html[data-theme="dark"] .matrix__caption {
  background: linear-gradient(135deg, var(--bpa-burgundy-on-bg) 0%, #b86680 100%) !important;
  color: #0E1217 !important;
}

/* ============ DOFA matrix cells ============ */
html[data-theme="dark"] .dofa-cell,
html[data-theme="dark"] .swot-cell,
html[data-theme="dark"] .dofa-grid td,
html[data-theme="dark"] [class*="dofa-cell"],
html[data-theme="dark"] [class*="dofa-item"],
html[data-theme="dark"] .dofa-item {
  background: var(--bpa-surface) !important;
  color: var(--bpa-text) !important;
  border-color: var(--bpa-border) !important;
}
html[data-theme="dark"] .dofa-strengths,
html[data-theme="dark"] .dofa-opps {
  background: rgba(168, 212, 181, 0.10) !important;
  color: var(--bpa-text) !important;
}
html[data-theme="dark"] .dofa-weaknesses,
html[data-theme="dark"] .dofa-threats {
  background: rgba(224, 133, 158, 0.10) !important;
  color: var(--bpa-text) !important;
}
html[data-theme="dark"] .dofa-strengths h3,
html[data-theme="dark"] .dofa-opps h3,
html[data-theme="dark"] .dofa-weaknesses h3,
html[data-theme="dark"] .dofa-threats h3 {
  color: var(--bpa-text) !important;
}

/* ============ Bolograma SVG canvas + leyenda ============ */
html[data-theme="dark"] .bolo-svg,
html[data-theme="dark"] .bolograma-canvas,
html[data-theme="dark"] svg.bolograma,
html[data-theme="dark"] .bolograma-wrap > svg,
html[data-theme="dark"] svg.bolo {
  background: var(--bpa-surface) !important;
  border-radius: 14px;
}
html[data-theme="dark"] .bolo-legend {
  background: var(--bpa-surface-strong) !important;
  color: var(--bpa-text) !important;
  border-color: var(--bpa-border) !important;
}
html[data-theme="dark"] .bolo-title {
  color: var(--bpa-burgundy-on-bg) !important;
}

/* ============ Clientes ============ */
html[data-theme="dark"] .cli-title {
  color: var(--bpa-burgundy-on-bg) !important;
}
html[data-theme="dark"] .cli-tab.is-active,
html[data-theme="dark"] .seg-tab.is-active {
  background: var(--bpa-burgundy-on-bg) !important;
  color: #0E1217 !important;
}
html[data-theme="dark"] .cli-panel,
html[data-theme="dark"] .cli-card,
html[data-theme="dark"] .client-card,
html[data-theme="dark"] .segmentation-panel,
html[data-theme="dark"] .gestion-panel {
  background: var(--bpa-surface) !important;
  color: var(--bpa-text) !important;
  border-color: var(--bpa-border) !important;
}
html[data-theme="dark"] .cli-row,
html[data-theme="dark"] tr.cli-row {
  background: var(--bpa-surface) !important;
  color: var(--bpa-text) !important;
}
/* Tabla de criterios y matriz Actual vs Potencial/Riesgo */
html[data-theme="dark"] .criteria-table,
html[data-theme="dark"] .scatter-chart,
html[data-theme="dark"] .matrix-chart,
html[data-theme="dark"] .gestion-chart,
html[data-theme="dark"] .cliente-chart {
  background: var(--bpa-surface) !important;
  color: var(--bpa-text) !important;
}
html[data-theme="dark"] .criteria-table th,
html[data-theme="dark"] .criteria-table td {
  color: var(--bpa-text) !important;
  border-color: var(--bpa-border) !important;
}
html[data-theme="dark"] .nota-cell {
  background: rgba(168, 212, 181, 0.08) !important;
  color: var(--bpa-text-soft) !important;
}

/* ============ Curva de Valor ============ */
html[data-theme="dark"] .curve-chart,
html[data-theme="dark"] .curve-canvas,
html[data-theme="dark"] svg.curve,
html[data-theme="dark"] .curve-wrap > svg,
html[data-theme="dark"] .value-curve-svg {
  background: var(--bpa-surface) !important;
  border-radius: 14px;
}
html[data-theme="dark"] .curve-tab.is-active,
html[data-theme="dark"] .line-tab.is-active {
  background: var(--bpa-burgundy-on-bg) !important;
  color: #0E1217 !important;
}
html[data-theme="dark"] .curve-grid line {
  stroke: rgba(244, 226, 192, 0.15) !important;
}
html[data-theme="dark"] .curve-axis-label,
html[data-theme="dark"] .curve-y-label {
  fill: var(--bpa-text-soft) !important;
  color: var(--bpa-text-soft) !important;
}

/* ============ Horizontes ============ */
html[data-theme="dark"] .horizon-col,
html[data-theme="dark"] .horizon-card {
  background: var(--bpa-surface) !important;
  color: var(--bpa-text) !important;
  border-color: var(--bpa-border) !important;
}
html[data-theme="dark"] .horizon-col__head {
  background: rgba(96, 128, 111, 0.30) !important;
  color: var(--bpa-text) !important;
}
html[data-theme="dark"] .horizon-col__period {
  background: rgba(96, 128, 111, 0.18) !important;
  color: var(--bpa-mint-on-bg) !important;
}
html[data-theme="dark"] .horizon-col__title {
  background: rgba(168, 212, 181, 0.10) !important;
  color: var(--bpa-text) !important;
}
html[data-theme="dark"] .horizon-item {
  background: var(--bpa-surface-strong) !important;
  color: var(--bpa-text) !important;
}
/* Items "carried over" (cream-soft en light) deben quedar tono ámbar muy sutil */
html[data-theme="dark"] .horizon-item--carry,
html[data-theme="dark"] .horizon-item--carryover {
  background: rgba(232, 197, 114, 0.14) !important;
  color: var(--bpa-text) !important;
  border-left: 3px solid var(--bpa-warning) !important;
}
html[data-theme="dark"] .horizon-footer {
  background: var(--bpa-surface) !important;
  color: var(--bpa-text-soft) !important;
}
html[data-theme="dark"] .horizon-tab.is-active,
html[data-theme="dark"] button[data-tab].is-active {
  background: var(--bpa-burgundy-on-bg) !important;
  color: #0E1217 !important;
}

/* ============ Modales genéricos blancos ============ */
html[data-theme="dark"] .modal,
html[data-theme="dark"] dialog.modal,
html[data-theme="dark"] .dialog,
html[data-theme="dark"] [role="dialog"] {
  background: var(--bpa-surface-strong) !important;
  color: var(--bpa-text) !important;
  border: 1px solid var(--bpa-border) !important;
}
html[data-theme="dark"] .modal h1,
html[data-theme="dark"] .modal h2,
html[data-theme="dark"] .modal h3,
html[data-theme="dark"] .modal label,
html[data-theme="dark"] .modal p {
  color: var(--bpa-text) !important;
}
html[data-theme="dark"] .modal .field__label,
html[data-theme="dark"] .modal label {
  color: var(--bpa-text-soft) !important;
}

/* ============ Filtros generales (Select Año / Trimestre / Vendedor) ============ */
html[data-theme="dark"] .filters,
html[data-theme="dark"] .filter-row,
html[data-theme="dark"] .filters-bar {
  background: var(--bpa-surface) !important;
  border-color: var(--bpa-border) !important;
  color: var(--bpa-text) !important;
}
html[data-theme="dark"] .filters label,
html[data-theme="dark"] .filter-row label {
  color: var(--bpa-text-muted) !important;
}

/* ============ Botones outline ghost ============ */
html[data-theme="dark"] .btn--outline,
html[data-theme="dark"] button.btn--outline {
  background: transparent !important;
  color: var(--bpa-burgundy-on-bg) !important;
  border-color: var(--bpa-burgundy-on-bg) !important;
}
html[data-theme="dark"] .btn--outline:hover {
  background: rgba(224, 133, 158, 0.10) !important;
}

/* ============ Bell badge & notifications ============ */
html[data-theme="dark"] .bell {
  color: var(--bpa-text-soft) !important;
}
html[data-theme="dark"] .bell__badge {
  background: var(--bpa-burgundy-on-bg) !important;
  color: #0E1217 !important;
}

/* ============================================================
   DARK MODE — Ronda 3: rincones finales reportados anoche
   (modal-card support, CRM tab Perdidos inline rgba, drag ghost,
    visit-edit, dashboards SVG)
   ============================================================ */

/* support.html: .modal-card { background: white } hardcoded */
html[data-theme="dark"] .modal-card {
  background: var(--bpa-surface-strong) !important;
  color: var(--bpa-text) !important;
  border: 1px solid var(--bpa-border) !important;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.50) !important;
}

/* CRM tab Perdidos: empty state + .lost-reason-block usan inline rgba(255,255,255,...) */
html[data-theme="dark"] #lost-view > div[style*="rgba(255,255,255"],
html[data-theme="dark"] .lost-reason-block,
html[data-theme="dark"] [style*="background:rgba(255,255,255,0.6)"],
html[data-theme="dark"] [style*="background:rgba(255,255,255,0.9)"] {
  background: var(--bpa-surface) !important;
  color: var(--bpa-text) !important;
  border-color: var(--bpa-border) !important;
}
html[data-theme="dark"] .lost-reason-block table th {
  color: var(--bpa-text-muted) !important;
}
html[data-theme="dark"] .lost-lead-link {
  color: var(--bpa-burgundy-on-bg) !important;
}

/* Drag & drop ghost — opacity 0.4 quedaba invisible en dark
   Aumentamos opacidad + outline rosé para mantenerlo visible */
html[data-theme="dark"] .task-card.dragging,
html[data-theme="dark"] .card.dragging,
html[data-theme="dark"] .kanban-card.dragging,
html[data-theme="dark"] tr[data-project-id].dragging,
html[data-theme="dark"] .project-card-big.dragging {
  opacity: 0.65 !important;
  outline: 2px solid var(--bpa-burgundy-on-bg) !important;
  outline-offset: -2px;
  background: var(--bpa-surface-strong) !important;
}

/* visit-edit.html / site-survey.html: garantizar surface oscura en cards/secciones */
html[data-theme="dark"] .survey-card,
html[data-theme="dark"] .survey-section,
html[data-theme="dark"] .survey-room,
html[data-theme="dark"] .visit-section {
  background: var(--bpa-surface) !important;
  color: var(--bpa-text) !important;
  border-color: var(--bpa-border) !important;
}
html[data-theme="dark"] .survey-card__head,
html[data-theme="dark"] .survey-section__title {
  color: var(--bpa-text) !important;
}

/* Dashboards CRM (Sales/Months) — SVG donuts + month-by-line table */
html[data-theme="dark"] .dashboard-wrap,
html[data-theme="dark"] .sales-dashboard,
html[data-theme="dark"] .months-dashboard,
html[data-theme="dark"] .donut-card,
html[data-theme="dark"] .month-grid {
  background: var(--bpa-surface) !important;
  color: var(--bpa-text) !important;
  border-color: var(--bpa-border) !important;
}
html[data-theme="dark"] svg.donut text,
html[data-theme="dark"] .donut-label,
html[data-theme="dark"] .axis-label {
  fill: var(--bpa-text) !important;
  color: var(--bpa-text) !important;
}
html[data-theme="dark"] .donut-legend,
html[data-theme="dark"] .chart-legend {
  background: rgba(168, 212, 181, 0.06) !important;
  color: var(--bpa-text-soft) !important;
}

/* Modal nuevo proyecto / editar proyecto (project-detail.html) */
html[data-theme="dark"] .modal-backdrop {
  background: rgba(0, 0, 0, 0.65) !important;
}
html[data-theme="dark"] .modal[role="dialog"] {
  background: var(--bpa-surface-strong) !important;
  color: var(--bpa-text) !important;
  border: 1px solid var(--bpa-border) !important;
}
html[data-theme="dark"] .check-pill {
  background: var(--bpa-surface) !important;
  color: var(--bpa-text-soft) !important;
  border-color: var(--bpa-border-strong) !important;
}
html[data-theme="dark"] .check-pill input:checked + span,
html[data-theme="dark"] .check-pill.is-active {
  color: var(--bpa-burgundy-on-bg) !important;
  border-color: var(--bpa-burgundy-on-bg) !important;
}

/* sales.html: .tab.is-active .tab__count usaba rgba(255,255,255,0.25)
   — en dark queda demasiado claro sobre el tab rosé. Bajamos al 15% del fondo carbón */
html[data-theme="dark"] .tab.is-active .tab__count {
  background: rgba(14, 18, 23, 0.25) !important;
  color: #0E1217 !important;
}

/* Selectores genéricos para inputs con background blanco directo */
html[data-theme="dark"] input[style*="background: white"],
html[data-theme="dark"] input[style*="background:#fff"],
html[data-theme="dark"] textarea[style*="background: white"],
html[data-theme="dark"] select[style*="background: var(--surface)"] {
  background: var(--bpa-input-bg) !important;
  color: var(--bpa-text) !important;
}
.bpa-card::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 18px;
  padding: 1.5px;
  background: linear-gradient(135deg, rgba(118, 36, 68, 0.10), rgba(118, 36, 68, 0.10));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  transition: background 0.3s ease;
  pointer-events: none;
  z-index: 1;
}
.bpa-card:hover {
  transform: translateY(-4px) scale(1.01);
  box-shadow: 0 14px 36px rgba(118, 36, 68, 0.15);
}
.bpa-card:hover::before {
  background: conic-gradient(
    from var(--bpa-angle, 0deg),
    rgba(118, 36, 68, 0.18) 0%,
    var(--bpa-burgundy) 20%,
    var(--bpa-mint-dark) 35%,
    rgba(118, 36, 68, 0.18) 50%,
    rgba(118, 36, 68, 0.18) 100%
  );
  animation: bpa-angle-spin 2.5s linear infinite;
}

/* ---------- Botones más cool ---------- */
.btn--primary {
  background: linear-gradient(135deg, var(--bpa-burgundy) 0%, var(--bpa-burgundy-dark) 100%) !important;
  border-color: transparent !important;
  box-shadow: 0 4px 14px rgba(118, 36, 68, 0.22);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.btn--primary:hover {
  transform: translateY(-1px);
  box-shadow: 0 8px 22px rgba(118, 36, 68, 0.30);
}

/* ---------- Animación de entrada reutilizable ---------- */
@keyframes bpa-fade-up {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}
.bpa-fade-in {
  animation: bpa-fade-up 0.5s cubic-bezier(0.22, 1, 0.36, 1) both;
}

/* ---------- Respeto motion reduction ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation: none !important;
    transition: none !important;
  }
}

/* ============================================================
   DARK MODE — overrides para componentes comunes
   Aplicar TODOS los selectores con html[data-theme="dark"] para
   ganar especificidad sobre estilos in-line de cada página.
   ============================================================ */

html[data-theme="dark"] {
  color-scheme: dark;
}

/* Texto general */
html[data-theme="dark"] body { color: var(--bpa-text); }

/* Headers / títulos secundarios comunes */
html[data-theme="dark"] h1,
html[data-theme="dark"] h2,
html[data-theme="dark"] h3,
html[data-theme="dark"] h4 {
  color: var(--bpa-text);
}

/* Texto muted común */
html[data-theme="dark"] .muted,
html[data-theme="dark"] .text-muted,
html[data-theme="dark"] small.muted,
html[data-theme="dark"] [class*="muted"] {
  color: var(--bpa-text-muted) !important;
}

/* Inputs / selects / textareas */
html[data-theme="dark"] input:not([type="checkbox"]):not([type="radio"]),
html[data-theme="dark"] select,
html[data-theme="dark"] textarea {
  background: var(--bpa-input-bg) !important;
  color: var(--bpa-text) !important;
  border-color: var(--bpa-border-strong) !important;
}
html[data-theme="dark"] input::placeholder,
html[data-theme="dark"] textarea::placeholder {
  color: var(--bpa-text-muted) !important;
}

/* Tablas — header crema en dark va a oscuro warm */
html[data-theme="dark"] table { color: var(--bpa-text); }
html[data-theme="dark"] table th {
  background: rgba(244, 226, 192, 0.06) !important;
  color: var(--bpa-text-soft) !important;
}
html[data-theme="dark"] table td {
  border-color: var(--bpa-border) !important;
}
html[data-theme="dark"] tr:hover td {
  background: rgba(244, 226, 192, 0.04) !important;
}

/* Cards/contenedores blancos comunes — wrapping pattern */
html[data-theme="dark"] .kpi,
html[data-theme="dark"] .kpi-card,
html[data-theme="dark"] .card,
html[data-theme="dark"] .panel,
html[data-theme="dark"] .surface,
html[data-theme="dark"] .modal {
  background: var(--bpa-surface) !important;
  color: var(--bpa-text);
  border-color: var(--bpa-border) !important;
}
html[data-theme="dark"] .modal { background: var(--bpa-surface-strong) !important; }

/* Modales: backdrop más oscuro */
html[data-theme="dark"] .modal-backdrop {
  background: rgba(0, 0, 0, 0.65) !important;
}

/* Botones secundarios / ghost */
html[data-theme="dark"] .btn--secondary,
html[data-theme="dark"] .btn--ghost {
  background: rgba(244, 226, 192, 0.06) !important;
  color: var(--bpa-text) !important;
  border-color: var(--bpa-border-strong) !important;
}
html[data-theme="dark"] .btn--ghost:hover,
html[data-theme="dark"] .btn--secondary:hover {
  background: rgba(244, 226, 192, 0.12) !important;
}

/* Links */
html[data-theme="dark"] a:not(.btn):not(.app-tile):not(.appbar__nav a):not(.appbar__home) {
  color: var(--bpa-burgundy-on-bg);
}

/* Page-header tagline */
html[data-theme="dark"] .page-header > p,
html[data-theme="dark"] section.page-header > p {
  color: var(--bpa-text-soft);
}

/* PESTEL — celdas más oscuras pero manteniendo identidad roja/verde */
html[data-theme="dark"] .matrix th {
  background: rgba(148, 190, 164, 0.10) !important;
  color: var(--bpa-mint-on-bg) !important;
}
html[data-theme="dark"] .matrix td {
  background: rgba(40, 32, 30, 0.85) !important;
  border-color: var(--bpa-border) !important;
  color: var(--bpa-text) !important;
}
html[data-theme="dark"] .cell-risk {
  background: rgba(168, 50, 45, 0.28) !important;
  border-color: rgba(224, 122, 117, 0.55) !important;
  color: #FFD8D4 !important;
}
html[data-theme="dark"] .cell-opportunity {
  background: rgba(74, 124, 90, 0.30) !important;
  border-color: rgba(168, 201, 181, 0.55) !important;
  color: #DCEEDF !important;
}
html[data-theme="dark"] .cell-risk::before { color: #FFB3AD !important; }
html[data-theme="dark"] .cell-opportunity::before { color: #B8D4BF !important; }
html[data-theme="dark"] .cell-neutral {
  background: rgba(40, 32, 30, 0.75) !important;
  color: var(--bpa-text) !important;
}
html[data-theme="dark"] .add-cell-btn {
  background: rgba(244, 226, 192, 0.04) !important;
  color: var(--bpa-burgundy-on-bg) !important;
  border-color: rgba(244, 226, 192, 0.18) !important;
}

/* ERIC: las columnas tienen gradients propios fuertes; solo ajustamos
   los items internos blancos para que no quemen la vista en dark */
html[data-theme="dark"] .eric-item {
  background: rgba(40, 32, 30, 0.92) !important;
  color: var(--bpa-text) !important;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.40);
}
html[data-theme="dark"] .eric-item:hover {
  background: rgba(48, 38, 36, 1) !important;
}

/* Status pills se mantienen, ajustar fondo opacidad */
html[data-theme="dark"] .bpa-status-pill {
  background: rgba(168, 201, 181, 0.12);
  border-color: rgba(168, 201, 181, 0.32);
  color: var(--bpa-mint-on-bg);
}
html[data-theme="dark"] .bpa-status-pill__dot { background: var(--bpa-mint-on-bg); }

/* ============================================================
   THEME TOGGLE — botón flotante para alternar modo
   ============================================================ */
.bpa-theme-toggle {
  position: fixed;
  bottom: 26px;
  right: 86px;   /* a la izquierda del botón de Modo Presentación (que ocupa 22px+52px) */
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1.5px solid var(--bpa-burgundy-on-bg);
  background: var(--bpa-surface-strong);
  color: var(--bpa-burgundy-on-bg);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 8px 22px rgba(118, 36, 68, 0.28);
  z-index: 9001;  /* +1 sobre el botón presentación por si quedan cerca */
  transition: transform 0.25s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.25s ease, background 0.2s ease;
  -webkit-tap-highlight-color: transparent;
}
.bpa-theme-toggle:hover {
  transform: translateY(-2px) rotate(-10deg);
  box-shadow: 0 10px 24px rgba(33, 20, 15, 0.28);
}
.bpa-theme-toggle svg { width: 20px; height: 20px; }
html[data-theme="dark"] .bpa-theme-toggle {
  background: var(--bpa-surface-strong);
  color: var(--bpa-warning);
  border-color: var(--bpa-warning);
  box-shadow: 0 8px 22px rgba(0, 0, 0, 0.55);
}
.bpa-theme-toggle__icon--sun { display: none; }
.bpa-theme-toggle__icon--moon { display: inline-flex; }
html[data-theme="dark"] .bpa-theme-toggle__icon--sun { display: inline-flex; }
html[data-theme="dark"] .bpa-theme-toggle__icon--moon { display: none; }

/* ============================================================
   DARK MODE — Ronda 4: auditoría exhaustiva 2026-05-29
   Patches aplicados tras audit minucioso archivo por archivo.
   Cierra rincones de 24 HTMLs sin tocar los HTMLs individuales.
   ============================================================ */

/* ---- Login / Reset password ---- */
html[data-theme="dark"] body:has(.login-card),
html[data-theme="dark"] body:has(.reset-card) { background: var(--bpa-page-bg) !important; }
html[data-theme="dark"] .login-card,
html[data-theme="dark"] .reset-card { background: var(--bpa-surface-strong) !important; border-color: var(--bpa-border) !important; color: var(--bpa-text) !important; }
html[data-theme="dark"] .login-card__brand strong { color: var(--bpa-burgundy-on-bg) !important; }
html[data-theme="dark"] .login-card__brand span,
html[data-theme="dark"] .login-card__hint { color: var(--bpa-text-muted) !important; }
html[data-theme="dark"] .login-error { background: rgba(240,138,138,0.16) !important; color: var(--bpa-danger) !important; }

/* ---- Changelog ---- */
html[data-theme="dark"] .version-block { background: var(--bpa-surface) !important; border-color: var(--bpa-border) !important; }
html[data-theme="dark"] .version-tag { background: var(--bpa-surface-strong) !important; color: var(--bpa-accent-cream) !important; }
html[data-theme="dark"] .version-block--major .version-tag { background: var(--bpa-burgundy-on-bg) !important; color: #0E1217 !important; }
html[data-theme="dark"] .version-block--minor .version-tag { background: var(--bpa-mint-on-bg) !important; color: #0E1217 !important; }
html[data-theme="dark"] .version-heading { color: var(--bpa-text) !important; }
html[data-theme="dark"] .type-major { background: rgba(224,133,158,0.16) !important; color: var(--bpa-burgundy-on-bg) !important; border-color: rgba(224,133,158,0.32) !important; }
html[data-theme="dark"] .type-minor { background: rgba(168,212,181,0.14) !important; color: var(--bpa-mint-on-bg) !important; border-color: rgba(168,212,181,0.30) !important; }
html[data-theme="dark"] .type-patch { background: rgba(232,197,114,0.14) !important; color: var(--bpa-warning) !important; border-color: rgba(232,197,114,0.32) !important; }
html[data-theme="dark"] .version-block li strong { color: var(--bpa-burgundy-on-bg) !important; }
html[data-theme="dark"] .legend { background: var(--bpa-surface) !important; border-color: var(--bpa-border) !important; }

/* ---- Projects (kanban closed + count + remark) ---- */
html[data-theme="dark"] .kanban-col--closed .kanban-col__head { background: linear-gradient(to right, rgba(168,212,181,0.10), var(--bpa-surface)) !important; }
html[data-theme="dark"] .kanban-col__count { background: rgba(168,212,181,0.18) !important; color: var(--bpa-mint-on-bg) !important; }
html[data-theme="dark"] .project-card-big { background: var(--bpa-surface) !important; color: var(--bpa-text) !important; border-color: var(--bpa-border) !important; }
html[data-theme="dark"] .project-card-big__remark { background: rgba(224,133,158,0.10) !important; border-left-color: var(--bpa-burgundy-on-bg) !important; }

/* ---- Mobile body force ---- */
html[data-theme="dark"] body { background: var(--bpa-page-bg) !important; }

/* ---- Inventory (fila origen + qty readonly + warn) ---- */
html[data-theme="dark"] tr[style*="background:#FFF8EE"] { background: rgba(232,197,114,0.10) !important; }
html[data-theme="dark"] input[style*="background:#F4ECD8"] { background: var(--bpa-surface-strong) !important; color: var(--bpa-text-muted) !important; border-color: var(--bpa-border-strong) !important; }
html[data-theme="dark"] .qty-input { background: var(--bpa-input-bg) !important; color: var(--bpa-text) !important; border-color: var(--bpa-border-strong) !important; }
html[data-theme="dark"] table.items th { background: rgba(168,212,181,0.06) !important; color: var(--bpa-text-soft) !important; }
html[data-theme="dark"] [style*="background:#FCE5E5"],
html[data-theme="dark"] [style*="background: #FCE5E5"] { background: rgba(240,138,138,0.14) !important; color: var(--bpa-danger) !important; border-color: rgba(240,138,138,0.40) !important; }
html[data-theme="dark"] [style*="background:#FEE"],
html[data-theme="dark"] [style*="background: #FEE"] { background: rgba(240,138,138,0.12) !important; color: var(--bpa-danger) !important; border-color: var(--bpa-danger) !important; }
html[data-theme="dark"] [style*="background:#E8F0E0"],
html[data-theme="dark"] [style*="background: #E8F0E0"] { background: rgba(168,212,181,0.12) !important; color: var(--bpa-mint-on-bg) !important; border-color: rgba(168,212,181,0.32) !important; }

/* ---- CRM (charcoal header inversion, lead-card, dashboard) ---- */
html[data-theme="dark"] .lead-card { background: linear-gradient(145deg, #1F2630 0%, #171C23 100%) !important; }
html[data-theme="dark"] [style*="background: var(--bpa-charcoal)"],
html[data-theme="dark"] [style*="background:var(--bpa-charcoal)"] { background: var(--bpa-surface-strong) !important; color: var(--bpa-accent-cream) !important; }
html[data-theme="dark"] [style*="background: var(--bpa-burgundy)"]:not(.btn--primary):not(.appbar__brand):not(#del-confirm) { background: var(--bpa-burgundy-on-bg) !important; color: #0E1217 !important; }
html[data-theme="dark"] button#del-confirm[style*="background: var(--bpa-burgundy)"] { background: var(--bpa-burgundy-on-bg) !important; color: #0E1217 !important; border-color: var(--bpa-burgundy-on-bg) !important; }

/* ---- Logistics alert / admin-doc warning panel ---- */
html[data-theme="dark"] .alert-card,
html[data-theme="dark"] [style*="background: #FFF8E5"],
html[data-theme="dark"] [style*="background:#FFF8E5"] { background: rgba(232,197,114,0.14) !important; color: var(--bpa-text) !important; border-color: var(--bpa-warning) !important; }

/* ---- Status pills genéricos (reports + administration + admin-doc-editor) ---- */
html[data-theme="dark"] .status-draft,
html[data-theme="dark"] .status-archived { background: rgba(244,226,192,0.10) !important; color: var(--bpa-text-soft) !important; }
html[data-theme="dark"] .status-preview { background: rgba(168,212,181,0.14) !important; color: var(--bpa-mint-on-bg) !important; }
html[data-theme="dark"] .status-approved { background: rgba(168,212,181,0.24) !important; color: var(--bpa-mint-on-bg) !important; }
html[data-theme="dark"] .status-delivered { background: var(--bpa-burgundy-on-bg) !important; color: #0E1217 !important; }
html[data-theme="dark"] .status-pill--draft { background: rgba(244,226,192,0.14) !important; color: var(--bpa-accent-cream) !important; }
html[data-theme="dark"] .status-pill--issued,
html[data-theme="dark"] .doc-status--issued { background: rgba(112,180,200,0.18) !important; color: #B8E0EA !important; }
html[data-theme="dark"] .status-pill--signed,
html[data-theme="dark"] .doc-status--signed { background: rgba(168,212,181,0.18) !important; color: var(--bpa-mint-on-bg) !important; }
html[data-theme="dark"] .doc-card__type-pill--loan { background: rgba(244,226,192,0.18) !important; color: var(--bpa-accent-cream) !important; }
html[data-theme="dark"] .doc-card__type-pill--delivery,
html[data-theme="dark"] .doc-type-pill--re { background: rgba(168,212,181,0.18) !important; color: var(--bpa-mint-on-bg) !important; }
html[data-theme="dark"] .doc-status,
html[data-theme="dark"] .doc-type-pill { background: rgba(244,226,192,0.14) !important; color: var(--bpa-accent-cream) !important; }
html[data-theme="dark"] .modal-card { background: var(--bpa-surface-strong) !important; border: 1px solid var(--bpa-border) !important; color: var(--bpa-text) !important; }

/* ---- Reports template cards ---- */
html[data-theme="dark"] .tmpl-card { background: var(--bpa-surface) !important; border-color: var(--bpa-border) !important; }
html[data-theme="dark"] .tmpl-card:hover { background: rgba(168,212,181,0.10) !important; border-color: var(--bpa-mint-on-bg) !important; }
html[data-theme="dark"] .tmpl-card.is-selected { background: rgba(224,133,158,0.14) !important; border-color: var(--bpa-burgundy-on-bg) !important; }

/* ---- Admin-doc-editor typeahead ---- */
html[data-theme="dark"] .typeahead-list { background: var(--bpa-surface-strong) !important; border-color: var(--bpa-border) !important; }
html[data-theme="dark"] .typeahead-item:hover, html[data-theme="dark"] .typeahead-item.is-active { background: rgba(168,212,181,0.12) !important; color: var(--bpa-text) !important; }
html[data-theme="dark"] .typeahead-create { background: rgba(224,133,158,0.14) !important; color: var(--bpa-burgundy-on-bg) !important; }

/* ---- Support duración readonly ---- */
html[data-theme="dark"] input[readonly][style*="background:#FBF9F4"] { background: var(--bpa-surface) !important; color: var(--bpa-text-muted) !important; }

/* ---- Sales sticky-client por estado ---- */
html[data-theme="dark"] table.sales tbody tr.row-paid .sticky-client { background: rgba(168,212,181,0.18) !important; color: var(--bpa-text) !important; }
html[data-theme="dark"] table.sales tbody tr.row-advance .sticky-client { background: rgba(244,220,130,0.22) !important; color: var(--bpa-text) !important; }
html[data-theme="dark"] table.sales tbody tr.row-receivable .sticky-client { background: rgba(240,138,138,0.18) !important; color: var(--bpa-text) !important; }
html[data-theme="dark"] .tab[style*="background: var(--bpa-cream-soft)"] { background: rgba(244,226,192,0.10) !important; color: var(--bpa-accent-cream) !important; border-color: var(--bpa-warning) !important; }

/* ---- Caja menor (selectores con rgba(255,255,255,...) en <style> block) ---- */
html[data-theme="dark"] .kpi-card,
html[data-theme="dark"] .movements-table,
html[data-theme="dark"] .empty-state-card,
html[data-theme="dark"] .toast { background: var(--bpa-surface) !important; color: var(--bpa-text) !important; border-color: var(--bpa-border) !important; }
html[data-theme="dark"] .kpi-card__value { color: var(--bpa-burgundy-on-bg) !important; }

/* ---- Clientes (cabeceras marrón, cream rows, scatter cream) ---- */
html[data-theme="dark"] .picker-list,
html[data-theme="dark"] .picker-item { background: var(--bpa-surface) !important; color: var(--bpa-text) !important; }
html[data-theme="dark"] .picker-item:hover { background: rgba(168,212,181,0.10) !important; }
html[data-theme="dark"] .seg-table th,
html[data-theme="dark"] .ges-table th,
html[data-theme="dark"] .class-table th,
html[data-theme="dark"] th[style*="background:#6B5E48"] { background: #2A323D !important; color: var(--bpa-accent-cream) !important; }
html[data-theme="dark"] .seg-table .first-col,
html[data-theme="dark"] .ges-table .first-col { background: rgba(168,212,181,0.06) !important; color: var(--bpa-text) !important; }
html[data-theme="dark"] .seg-table .total-row,
html[data-theme="dark"] td[style*="background:#EFE9DC"] { background: rgba(244,226,192,0.10) !important; color: var(--bpa-text) !important; }
html[data-theme="dark"] .num-input { background: var(--bpa-input-bg) !important; color: var(--bpa-text) !important; border-color: var(--bpa-border-strong) !important; }
html[data-theme="dark"] .scatter-chart,
html[data-theme="dark"] .quadrant-canvas { background: var(--bpa-surface) !important; border-color: var(--bpa-border) !important; }
html[data-theme="dark"] .quadrant-label { background: rgba(31,38,48,0.85) !important; color: var(--bpa-text) !important; }
html[data-theme="dark"] .seg-legend { background: rgba(31,38,48,0.6) !important; }
html[data-theme="dark"] .seg-legend__chip { background: var(--bpa-surface-strong) !important; color: var(--bpa-text) !important; border-color: var(--bpa-border) !important; }
html[data-theme="dark"] .class-excelente { background: rgba(168,212,181,0.14) !important; }
html[data-theme="dark"] .class-bueno     { background: rgba(197,216,142,0.14) !important; }
html[data-theme="dark"] .class-aceptable { background: rgba(244,220,130,0.14) !important; }
html[data-theme="dark"] .class-complejo  { background: rgba(240,138,138,0.14) !important; }
html[data-theme="dark"] .top-toggle { background: var(--bpa-surface) !important; color: var(--bpa-text) !important; }
html[data-theme="dark"] .top-toggle.is-on { background: var(--bpa-burgundy-on-bg) !important; color: #0E1217 !important; }

/* ---- Bolograma (inputs, SVG wrap, modal blanco) ---- */
html[data-theme="dark"] .bolo-table .num-input,
html[data-theme="dark"] .vp-text { background: var(--bpa-input-bg) !important; color: var(--bpa-text) !important; border-color: var(--bpa-border-strong) !important; }
html[data-theme="dark"] .vp-text:focus { background: var(--bpa-surface-strong) !important; outline-color: var(--bpa-mint-on-bg) !important; }
html[data-theme="dark"] .bolo-svg-wrap,
html[data-theme="dark"] .bolo-svg-container { background: var(--bpa-surface) !important; }
html[data-theme="dark"] .vp-card { background: var(--bpa-surface) !important; border-color: var(--bpa-border) !important; }
html[data-theme="dark"] .bolo-modal { background: var(--bpa-surface-strong) !important; color: var(--bpa-text) !important; border: 1px solid var(--bpa-border) !important; }
html[data-theme="dark"] .bolo-svg-legend { background: rgba(31,38,48,0.85) !important; color: var(--bpa-text) !important; }

/* ---- PESTEL (rgba(255,...) en celdas y textareas/inputs) ---- */
html[data-theme="dark"] .matrix .cell-content { background: rgba(31,38,48,0.75) !important; color: var(--bpa-text) !important; }
html[data-theme="dark"] .cell-add-input { background: rgba(31,38,48,0.85) !important; color: var(--bpa-text) !important; border-color: rgba(168,212,181,0.30) !important; }
html[data-theme="dark"] .add-cell-btn { background: rgba(31,38,48,0.6) !important; color: var(--bpa-burgundy-on-bg) !important; }
html[data-theme="dark"] .add-cell-btn:hover { background: rgba(31,38,48,0.85) !important; }

/* ---- DOFA (gradients + items blancos) ---- */
html[data-theme="dark"] .dofa-grid > * { background: var(--bpa-surface) !important; }
html[data-theme="dark"] .quad--str { background: linear-gradient(135deg, rgba(168,212,181,0.16) 0%, rgba(168,212,181,0.08) 100%) !important; }
html[data-theme="dark"] .quad--wkn { background: linear-gradient(135deg, rgba(240,138,138,0.16) 0%, rgba(240,138,138,0.08) 100%) !important; }
html[data-theme="dark"] .quad--opp { background: linear-gradient(135deg, rgba(168,212,181,0.20) 0%, rgba(168,212,181,0.10) 100%) !important; }
html[data-theme="dark"] .quad--thr { background: linear-gradient(135deg, rgba(240,138,138,0.20) 0%, rgba(240,138,138,0.10) 100%) !important; }
html[data-theme="dark"] .dofa-item { background: rgba(31,38,48,0.92) !important; color: var(--bpa-text) !important; }
html[data-theme="dark"] .dofa-item__text:focus { background: rgba(168,212,181,0.10) !important; }
html[data-theme="dark"] .add-item-btn { background: rgba(31,38,48,0.6) !important; color: var(--bpa-text-soft) !important; }
html[data-theme="dark"] .add-item-btn:hover { background: rgba(31,38,48,0.85) !important; }

/* ---- Horizontes (head, period, pillar, footer, close-btn) ---- */
html[data-theme="dark"] .horizon-card__head { background: rgba(74,98,51,0.50) !important; color: var(--bpa-accent-cream) !important; }
html[data-theme="dark"] .horizon-card__period { background: rgba(148,190,164,0.22) !important; color: var(--bpa-mint-on-bg) !important; }
html[data-theme="dark"] .horizon-card__pillar { background: rgba(197,216,142,0.18) !important; color: var(--bpa-text) !important; }
html[data-theme="dark"] .horizon-card__pillar:hover { background: rgba(197,216,142,0.26) !important; }
html[data-theme="dark"] .horizon-card__add { background: rgba(244,226,192,0.08) !important; }
html[data-theme="dark"] .horizon-card__footer { background: var(--bpa-surface-strong) !important; color: var(--bpa-text-soft) !important; }
html[data-theme="dark"] .horizon-item.is-carried { background: rgba(232,197,114,0.16) !important; color: var(--bpa-text) !important; }
html[data-theme="dark"] .close-btn { background: var(--bpa-burgundy-on-bg) !important; color: #0E1217 !important; }
html[data-theme="dark"] .close-btn:disabled { background: rgba(126,132,141,0.30) !important; color: var(--bpa-text-muted) !important; }
html[data-theme="dark"] .hist-card { background: var(--bpa-surface) !important; border-color: var(--bpa-border) !important; }

/* ---- ERIC + Curva (kind rows, avg, chart cream) ---- */
html[data-theme="dark"] .kind-bpa { background: rgba(244,226,192,0.10) !important; color: var(--bpa-accent-cream) !important; }
html[data-theme="dark"] .kind-cliente { background: rgba(168,212,181,0.10) !important; color: var(--bpa-mint-on-bg) !important; }
html[data-theme="dark"] .avg-row td { background: rgba(244,226,192,0.10) !important; color: var(--bpa-text) !important; }
html[data-theme="dark"] .chart-card { background: var(--bpa-surface) !important; border-color: var(--bpa-border) !important; }
html[data-theme="dark"] .row-actions button { background: var(--bpa-surface-strong) !important; color: var(--bpa-text) !important; border-color: var(--bpa-border-strong) !important; }
html[data-theme="dark"] .row-actions button:hover { background: rgba(168,212,181,0.10) !important; }
html[data-theme="dark"] .add-btn { background: var(--bpa-mint-on-bg) !important; color: #0E1217 !important; }

/* ---- Trash ---- */
html[data-theme="dark"] .trash-row { background: rgba(232,197,114,0.10) !important; }
html[data-theme="dark"] .days-left--soon { background: rgba(232,197,114,0.18) !important; color: var(--bpa-warning) !important; }
html[data-theme="dark"] .days-left--ok { background: rgba(168,212,181,0.16) !important; color: var(--bpa-mint-on-bg) !important; }

/* ---- Site-survey / editor ---- */
html[data-theme="dark"] .survey-status--draft { background: rgba(244,226,192,0.14) !important; color: var(--bpa-accent-cream) !important; }
html[data-theme="dark"] .survey-status--in_progress { background: rgba(232,197,114,0.16) !important; color: var(--bpa-warning) !important; }
html[data-theme="dark"] .survey-status--completed { background: rgba(168,212,181,0.20) !important; color: var(--bpa-mint-on-bg) !important; }
html[data-theme="dark"] .wizard__step:hover { background: rgba(168,212,181,0.08) !important; }
html[data-theme="dark"] .wizard__step.is-active { background: linear-gradient(135deg, rgba(224,133,158,0.16), rgba(168,212,181,0.16)) !important; border-left-color: var(--bpa-burgundy-on-bg) !important; }
html[data-theme="dark"] .wizard__step-icon { background: rgba(244,226,192,0.10) !important; color: var(--bpa-accent-cream) !important; }
html[data-theme="dark"] .wizard__step.is-done .wizard__step-icon { background: var(--bpa-mint-on-bg) !important; color: #0E1217 !important; }
html[data-theme="dark"] .dropzone:hover,
html[data-theme="dark"] .dropzone.is-drag { background: rgba(168,212,181,0.10) !important; border-color: var(--bpa-mint-on-bg) !important; }

/* ============================================================
   Ronda 5 — Fixes dark mode 2026-05-30:
   - Logistics "Truco rápido" + "Vista previa"
   - Bolograma canvas + textarea propuesta de valor
   - Inventory pills "Historial" (border/color dorados pisaban)
   - CRM kanban col__head (charcoal token invertido en dark)
   - Projects by Phase fill (Stand By/Closed colores fatigan)
   ============================================================ */

/* ---- Logistics: Truco rápido ---- */
html[data-theme="dark"] .paste-hint {
  background: rgba(232,197,114,0.10) !important;
  border-left-color: var(--bpa-warning) !important;
  color: var(--bpa-text) !important;
}
html[data-theme="dark"] .paste-hint strong { color: var(--bpa-warning) !important; }
html[data-theme="dark"] .paste-hint em { color: var(--bpa-accent-cream); }

/* ---- Logistics: Vista previa título y card ---- */
html[data-theme="dark"] .logistics-grid h2 { color: var(--bpa-burgundy-on-bg) !important; }
html[data-theme="dark"] .preview__paper { background: var(--bpa-surface) !important; color: var(--bpa-text) !important; border: 1px solid var(--bpa-border) !important; }
html[data-theme="dark"] .preview__footer { background: var(--bpa-surface-strong) !important; color: var(--bpa-text-soft) !important; border-top-color: var(--bpa-border) !important; }

/* ---- Bolograma ---- */
html[data-theme="dark"] .bolo-canvas {
  background: var(--bpa-surface) !important;
  border-color: var(--bpa-border) !important;
}
html[data-theme="dark"] .bolo-legend {
  background: rgba(14,18,23,0.78) !important;
  color: var(--bpa-text) !important;
  border: 1px solid var(--bpa-border);
}
html[data-theme="dark"] .bolo-watermark { color: var(--bpa-burgundy-on-bg) !important; opacity: 0.65; }
html[data-theme="dark"] .vp-panel { background: var(--bpa-surface) !important; border-color: var(--bpa-border) !important; }
html[data-theme="dark"] .vp-panel h2 { color: var(--bpa-burgundy-on-bg) !important; }
html[data-theme="dark"] .vp-text {
  background: var(--bpa-input-bg) !important;
  color: var(--bpa-text) !important;
  border-color: var(--bpa-border) !important;
}
html[data-theme="dark"] .vp-text:focus { background: var(--bpa-surface-strong) !important; outline-color: var(--bpa-mint-on-bg) !important; }
html[data-theme="dark"] .relevance-pill,
html[data-theme="dark"] .gap-pill { background: rgba(168,212,181,0.18) !important; color: var(--bpa-mint-on-bg) !important; }
html[data-theme="dark"] .ideal-pill { background: rgba(168,212,181,0.30) !important; color: #E8F5EC !important; }
html[data-theme="dark"] .prev-pill,
html[data-theme="dark"] .curr-pill { background: rgba(244,226,192,0.18) !important; color: var(--bpa-accent-cream) !important; }
html[data-theme="dark"] .pri-1 { background: rgba(118,168,135,0.40) !important; color: #E8F5EC !important; }
html[data-theme="dark"] .pri-2 { background: rgba(197,216,142,0.30) !important; color: #EFF6D9 !important; }
html[data-theme="dark"] .pri-3 { background: rgba(244,220,130,0.25) !important; color: var(--bpa-warning) !important; }
html[data-theme="dark"] .bolo-table tbody tr,
html[data-theme="dark"] .bolo-table { background: var(--bpa-surface) !important; color: var(--bpa-text) !important; }
html[data-theme="dark"] .bolo-table .num-derived { background: var(--bpa-surface-strong) !important; color: var(--bpa-text) !important; }
html[data-theme="dark"] .bolo-table input { background: var(--bpa-input-bg) !important; color: var(--bpa-text) !important; border-color: var(--bpa-border) !important; }

/* ---- Inventory: pill Historial (anula border/color hardcoded dorados) ---- */
html[data-theme="dark"] .loc-distribute[data-history] {
  border-color: var(--bpa-warning) !important;
  color: var(--bpa-warning) !important;
  background: rgba(232,197,114,0.10) !important;
}
html[data-theme="dark"] .loc-distribute[data-history]:hover {
  background: var(--bpa-warning) !important;
  color: #1F1607 !important;
  border-color: var(--bpa-warning) !important;
}

/* ---- CRM: cabecera de columna kanban ---- */
html[data-theme="dark"] .col {
  background: var(--bpa-surface) !important;
  border-color: var(--bpa-border) !important;
}
html[data-theme="dark"] .col__head {
  background: var(--bpa-surface-strong) !important;
  color: var(--bpa-accent-cream) !important;
  border-bottom-color: var(--bpa-border-strong) !important;
}
html[data-theme="dark"] .col__title { color: var(--bpa-accent-cream) !important; }
html[data-theme="dark"] .col__meta  { color: var(--bpa-text-soft) !important; opacity: 1; }
html[data-theme="dark"] .col--ganado  .col__head { background: linear-gradient(180deg, #2F4022 0%, #243018 100%) !important; color: #D8E7C0 !important; }
html[data-theme="dark"] .col--perdido .col__head { background: linear-gradient(180deg, #4A1518 0%, #380F12 100%) !important; color: #F2C9CB !important; }
html[data-theme="dark"] .col--ganado .col__title,
html[data-theme="dark"] .col--perdido .col__title { color: inherit !important; }
html[data-theme="dark"] .col.is-droptarget { background: rgba(168,212,181,0.10) !important; }

/* ---- Index: barras Projects by Phase (Stand By / Closed iluminadas en dark) ---- */
html[data-theme="dark"] .phase-bar__fill[data-phase="STAND_BY"]      { background: #B5AC9C !important; }
html[data-theme="dark"] .phase-bar__fill[data-phase="CLOSED"]        { background: #8B7B66 !important; }
html[data-theme="dark"] .phase-bar__fill[data-phase="DESIGN_HOT"]    { background: #7BB89A !important; }
html[data-theme="dark"] .phase-bar__fill[data-phase="DESIGN"]        { background: #A8D4B5 !important; }
html[data-theme="dark"] .phase-bar__fill[data-phase="CONST_HOT"]     { background: #B0466E !important; }
html[data-theme="dark"] .phase-bar__fill[data-phase="CONST_FOLLOW"]  { background: #C77392 !important; }
html[data-theme="dark"] .phase-bar__track { background: var(--bpa-surface-strong) !important; }

/* ---- Bolograma: botón "Nueva actividad en..." variante (alt) ---- */
.add-cat-btn.add-cat-btn--alt {
  background: var(--bpa-cream) !important;
  color: var(--bpa-charcoal) !important;
}
.add-cat-btn.add-cat-btn--alt:hover {
  background: #E8DCB8 !important;
  color: var(--bpa-charcoal) !important;
}
html[data-theme="dark"] .add-cat-btn.add-cat-btn--alt {
  background: rgba(244,226,192,0.22) !important;
  color: var(--bpa-accent-cream) !important;
}
html[data-theme="dark"] .add-cat-btn.add-cat-btn--alt:hover {
  background: rgba(244,226,192,0.32) !important;
  color: #FFF6E3 !important;
}

/* ---- BY ENTITY pills (BPA / BPAI / WSDG) en dark mode ---- */
/* En light WSDG usa burgundy. En dark choca con BPAI dorado y se confunde.
   Le doy un teal/aqua que no aparece en ninguna otra entidad. */
html[data-theme="dark"] .tag--entity-wsdg {
  background: rgba(96,196,170,0.18) !important;
  color: #7FD9C0 !important;
  border-color: rgba(127,217,192,0.55) !important;
}
html[data-theme="dark"] .tag--entity-bpa {
  background: rgba(168,212,181,0.18) !important;
  color: var(--bpa-mint-on-bg) !important;
  border-color: rgba(168,212,181,0.55) !important;
}
html[data-theme="dark"] .tag--entity-bpai {
  background: rgba(232,197,114,0.18) !important;
  color: var(--bpa-warning) !important;
  border-color: rgba(232,197,114,0.55) !important;
}

/* ---- PM: porcentajes de avance (advance-edit__val) usaban burgundy oscuro ---- */
html[data-theme="dark"] .advance-edit__val {
  color: var(--bpa-burgundy-on-bg) !important;
}

/* ---- PM: headers de fase Stand By y Closed con gradient crema claro ---- */
html[data-theme="dark"] .phase-section--standby > summary {
  background: linear-gradient(to right, rgba(184,172,149,0.18), var(--bpa-surface)) !important;
}
html[data-theme="dark"] .phase-section--closed > summary {
  background: linear-gradient(to right, rgba(168,153,128,0.16), var(--bpa-surface)) !important;
}
html[data-theme="dark"] .phase-section.drag-over > summary {
  background: linear-gradient(to right, rgba(168,212,181,0.20), var(--bpa-surface)) !important;
}

/* ============================================================
   BPA · DESIGN SYSTEM mínimo (ADITIVO — 2026-06-21, rol graphic-design)
   ------------------------------------------------------------
   Clases NUEVAS con prefijo .bpa-* (no pisan reglas existentes).
   Objetivo: iconografía consistente + tablas legibles + badges/pills
   + estados (vacío/cargando/error) coherentes con la identidad.
   Apagado, sin neón, contraste AA/AAA, sin blur (GPU Intel).
   ============================================================ */

/* ---- 1) ICONOS inline (estilo Lucide, heredan currentColor) ---- */
.bpa-ic {
  display: inline-block;
  vertical-align: -0.18em;
  flex: 0 0 auto;
  width: 1.05em;
  height: 1.05em;
  stroke-width: 1.8;
}
.bpa-ic--sm { width: 0.95em; height: 0.95em; }
.bpa-ic--lg { width: 1.35em; height: 1.35em; }
/* utilidad de alineación texto+icono (botones, títulos, celdas) */
.bpa-iconrow { display: inline-flex; align-items: center; gap: 0.45em; }
/* tinte por familia (todos pasan contraste AA sobre --surface) */
.bpa-ic--burgundy { color: var(--bpa-burgundy-on-bg); }
.bpa-ic--mint     { color: var(--bpa-mint-on-bg); }
.bpa-ic--muted    { color: var(--text-muted); }
.bpa-ic--danger   { color: var(--danger, #B23A48); }
.bpa-ic--warning  { color: var(--warning, #C97A1B); }
.bpa-ic--success  { color: var(--success, #2E7D4F); }

/* ---- 2) TABLA legible ---- */
.bpa-table-wrap {
  width: 100%;
  overflow-x: auto;
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-md);
  background: var(--surface);
  box-shadow: var(--shadow-sm);
}
.bpa-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  font-size: var(--fs-sm);
  color: var(--text);
}
.bpa-table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--surface-alt);
  color: var(--text-muted);
  font-weight: 700;
  text-align: left;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-size: 10px;
  padding: 10px 12px;
  border-bottom: 2px solid var(--border-soft);
  white-space: nowrap;
}
.bpa-table tbody td {
  padding: 9px 12px;
  border-bottom: 1px solid var(--border-soft);
  vertical-align: middle;
}
.bpa-table tbody tr:last-child td { border-bottom: 0; }
/* zebra suave + hover suave (sin neón) */
.bpa-table tbody tr:nth-child(even) { background: rgba(124, 110, 90, 0.045); }
.bpa-table tbody tr:hover { background: var(--bpa-burgundy-soft); }
/* números: tabular + alineados a la derecha */
.bpa-table .num,
.bpa-table td.num,
.bpa-table th.num { text-align: right; font-variant-numeric: tabular-nums; font-family: var(--font-mono); }
.bpa-table .center { text-align: center; }
.bpa-table .code { font-family: var(--font-mono); font-weight: 700; color: var(--bpa-burgundy-on-bg); }
.bpa-table--compact tbody td,
.bpa-table--compact thead th { padding: 6px 9px; }
html[data-theme="dark"] .bpa-table tbody tr:nth-child(even) { background: rgba(255,255,255,0.025); }
html[data-theme="dark"] .bpa-table tbody tr:hover { background: rgba(224,133,158,0.12); }
html[data-theme="dark"] .bpa-table thead th { background: var(--surface-alt); }

/* ---- 3) CARD / KPI ---- */
.bpa-card {
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-md);
  padding: var(--sp-3) var(--sp-4);
  box-shadow: var(--shadow-sm);
}
.bpa-card__head { display: flex; align-items: center; gap: 0.5em; margin: 0 0 var(--sp-2); }
.bpa-card__head h3, .bpa-card__head h2 { margin: 0; }
.bpa-kpi__icon { color: var(--text-muted); }

/* ---- 4) BADGES / PILLS de estado (sistema único) ---- */
.bpa-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.35em;
  padding: 2px 9px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.6;
  border: 1px solid transparent;
  white-space: nowrap;
}
.bpa-badge .bpa-ic { width: 0.9em; height: 0.9em; }
/* variantes — fondo translúcido + texto/borde de la familia (AA en ambos modos) */
.bpa-badge--neutral { background: rgba(124,110,90,0.12); color: var(--text-muted); border-color: rgba(124,110,90,0.30); }
.bpa-badge--success { background: rgba(118,168,135,0.20); color: #2E6B47; border-color: rgba(118,168,135,0.50); }
.bpa-badge--danger  { background: rgba(178,58,72,0.14);  color: #9B2E3A; border-color: rgba(178,58,72,0.40); }
.bpa-badge--warning { background: rgba(201,122,27,0.16); color: #8A5414; border-color: rgba(201,122,27,0.42); }
.bpa-badge--info    { background: rgba(96,128,111,0.16); color: #3C5A4A; border-color: rgba(96,128,111,0.42); }
.bpa-badge--brand   { background: var(--bpa-burgundy-soft); color: var(--bpa-burgundy); border-color: rgba(118,36,68,0.30); }
/* dark mode: subir luminancia del texto, mantener AA */
html[data-theme="dark"] .bpa-badge--success { color: var(--bpa-mint-on-bg); border-color: rgba(168,212,181,0.45); }
html[data-theme="dark"] .bpa-badge--danger  { color: #E8959B; border-color: rgba(232,149,155,0.45); }
html[data-theme="dark"] .bpa-badge--warning { color: var(--bpa-warning, #E8C572); border-color: rgba(232,197,114,0.45); }
html[data-theme="dark"] .bpa-badge--info    { color: var(--bpa-mint-on-bg); border-color: rgba(168,212,181,0.40); }
html[data-theme="dark"] .bpa-badge--brand   { color: var(--bpa-burgundy-on-bg); border-color: rgba(224,133,158,0.40); }
html[data-theme="dark"] .bpa-badge--neutral { color: var(--text-muted); border-color: rgba(255,255,255,0.14); }

/* pill = badge sólido (para chips fuertes de estado puntual) */
.bpa-pill {
  display: inline-flex; align-items: center; gap: 0.35em;
  padding: 3px 11px; border-radius: 999px;
  font-size: 11px; font-weight: 700; white-space: nowrap;
}
.bpa-pill--open   { background: #C2554B; color: #fff; }   /* terracota apagado, no rojo neón */
.bpa-pill--closed { background: #5E866D; color: #fff; }   /* mint oscuro */
.bpa-pill .bpa-ic { width: 0.9em; height: 0.9em; }

/* ---- 5) ESTADOS vacío / cargando / error (amables) ---- */
.bpa-state {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; gap: var(--sp-2);
  padding: var(--sp-6) var(--sp-4);
  color: var(--text-muted);
}
.bpa-state__icon { color: var(--text-faint); }
.bpa-state__icon .bpa-ic { width: 2.2em; height: 2.2em; stroke-width: 1.6; }
.bpa-state__title { font-weight: 700; color: var(--text); font-size: var(--fs-md); }
.bpa-state__msg { font-size: var(--fs-sm); max-width: 42ch; }
.bpa-state--error .bpa-state__icon { color: var(--danger, #B23A48); }
html[data-theme="dark"] .bpa-state--error .bpa-state__icon { color: #E8959B; }

/* skeleton de carga (shimmer suave, sin blur, respeta reduce-motion) */
.bpa-skel {
  display: block;
  height: 14px; border-radius: 6px; margin: 8px 0;
  background: linear-gradient(90deg,
    rgba(124,110,90,0.10) 25%,
    rgba(124,110,90,0.18) 37%,
    rgba(124,110,90,0.10) 63%);
  background-size: 400% 100%;
  animation: bpa-skel 1.4s ease-in-out infinite;
}
.bpa-skel--line  { width: 100%; }
.bpa-skel--w70   { width: 70%; }
.bpa-skel--w40   { width: 40%; }
html[data-theme="dark"] .bpa-skel {
  background: linear-gradient(90deg,
    rgba(255,255,255,0.04) 25%,
    rgba(255,255,255,0.09) 37%,
    rgba(255,255,255,0.04) 63%);
  background-size: 400% 100%;
}
@keyframes bpa-skel { 0% { background-position: 100% 0; } 100% { background-position: 0 0; } }
@media (prefers-reduced-motion: reduce) {
  .bpa-skel { animation: none; }
}
/* ============================================================
   FIN DESIGN SYSTEM mínimo BPA
   ============================================================ */
