/* =====================================================================
   theme-tokens.css — fuente única de colores (claro/oscuro). Se carga AL FINAL.
   Regla: nunca colores fijos en CSS/PHP/JS de pantalla; usar estos tokens.
   Ver docs/DARK-MODE-TOKENS.md. PDFs y correos quedan fuera (siempre claros).
   ===================================================================== */
:root {
  --brand: #C41E3A;
  --brand-contrast: #ffffff;
  --text: var(--ink, #111111);
  --text-muted: var(--muted, #6b7280);
  --surface-2: var(--surface-muted, #f8fafc);
  --surface-3: #f1f5f9;
  --input-bg: #ffffff;
  --input-text: #111111;
  --input-border: #d1d5db;
  --table-head: #f8fafc;
  --table-head-text: #475569; /* v2.29.0: ≥4.5:1 sobre --table-head / --surface-3 / hover */
  --table-stripe: #fafafa;
  --table-hover: #f3f4f6;
  --link: var(--brand-primary, #C41E3A);
  --badge-bg: #f1f5f9; --badge-text: #334155;
  --badge-ok-bg: #dcfce7; --badge-ok-text: #166534;
  --badge-warn-bg: #fef3c7; --badge-warn-text: #92400e;
  --badge-danger-bg: #fee2e2; --badge-danger-text: #991b1b;
  --badge-info-bg: #e0f2fe; --badge-info-text: #075985;
  --overlay: rgba(15, 23, 42, 0.45);
  --code-bg: #f6f8fa; --code-text: #24292f;
  /* v2.90.0 gráficos del pipeline (series y antigüedad) */
  --pv-total: #94a3b8; --pv-weighted: #C41E3A; --pv-won: #0f766e; --pv-owner: #475569; --pv-track: #eef1f5;
  --pv-age0: #0f766e; --pv-age1: #65a30d; --pv-age2: #d97706; --pv-age3: #ea580c; --pv-age4: #b91c1c;
  --pv-funnel: #C41E3A; --pv-funnel-won: #0f766e;
  color-scheme: light;
}
html[data-theme="dark"] {
  color-scheme: dark;
  --bg: #0b0f19;
  --surface: #121826;
  --surface-muted: #182234;
  --surface-2: #182234;
  --surface-3: #1f2a3d;
  --ink: #e6eaf2;
  --text: #e6eaf2;
  --muted: #a3b1c6;
  --text-muted: #a3b1c6;
  --muted-soft: #8494ab;
  --border: #2a3649;
  --border-soft: #1f2a3a;
  --input-bg: #0f1522;
  --input-text: #e6eaf2;
  --input-border: #334155;
  --table-head: #182234;
  --table-head-text: var(--text);
  --table-stripe: #141c2b;
  --table-hover: #1c2638;
  --link: #f07a8c;
  --info: #7cb4fb;
  --danger: #fca5a5; --danger-bg: #3a1a1f;
  --ok: #4ade80; --ok-bg: #0f2e22;
  --warn: #fcd34d; --warn-bg: #362b12;
  --info-bg: #17243d;
  --badge-bg: #243044; --badge-text: #dbe3ee;
  --badge-ok-bg: #12382a; --badge-ok-text: #86efac;
  --badge-warn-bg: #3d3010; --badge-warn-text: #fcd34d;
  --badge-danger-bg: #44191f; --badge-danger-text: #fca5a5;
  --badge-info-bg: #13304a; --badge-info-text: #93c5fd;
  --overlay: rgba(0, 0, 0, 0.6);
  --code-bg: #0f1522; --code-text: #e6eaf2;
  --rtfm-soft: rgba(240, 122, 140, 0.12);
  --shadow-sm: 0 1px 2px rgba(0,0,0,0.4);
  --pv-total: #64748b; --pv-weighted: #f07a8c; --pv-won: #4ade80; --pv-owner: #93a4bd; --pv-track: #1f2a3d;
  --pv-age0: #4ade80; --pv-age1: #a3e635; --pv-age2: #fcd34d; --pv-age3: #fb923c; --pv-age4: #f87171;
  --pv-funnel: #f07a8c; --pv-funnel-won: #4ade80;
}

/* ---- Base dark: superficies y texto ---- */
html[data-theme="dark"] body { color: var(--text); }
html[data-theme="dark"] :is(main,.main,.content,.page-content) a:not(.btn):not([class*="badge"]):not([class*="pill"]) { color: var(--link); }
html[data-theme="dark"] :is(h1,h2,h3,h4,h5,h6,strong,b,label,legend,dt,th,td,li,p,summary,caption) { color: inherit; }
html[data-theme="dark"] :is(.muted,.text-muted,.small.muted,.hint,.help,.form-hint,small.muted) { color: var(--text-muted) !important; }

html[data-theme="dark"] :is(.card,.panel,.box,.tile,.widget,.kpi,.kpi-card,.stat,.stat-card,.kanban-card,.kanban-col,.board-card,.task-card,.list-card,.section-card,.empty-state,.page-head .card,.modal,.modal-content,.modal-body,.modal-card,.dialog,.drawer,.popover,.dropdown,.dropdown-menu,.menu-popover,.tooltip,.toast,.cmdk,.cmdk-panel,.sheet,details,fieldset,.tabs,.subnav,.toolbar,.filters,.filter-bar,.chip,.callout,.note,.timeline-item,.gantt,.gantt-container,.calendar,.legend) {
  background-color: var(--surface);
  color: var(--text);
  border-color: var(--border);
}
html[data-theme="dark"] :is(.kanban-col,.board-col,.column,.lane) { background-color: var(--surface-2); }

/* ---- Formularios ---- */
html[data-theme="dark"] :is(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=submit]):not([type=button]),select,textarea,.form-control,.input,.ts-control,.choices__inner,.select2-selection) {
  background-color: var(--input-bg) !important;
  color: var(--input-text) !important;
  border-color: var(--input-border) !important;
}
html[data-theme="dark"] ::placeholder { color: #7d8ba1 !important; opacity: 1; }
html[data-theme="dark"] option, html[data-theme="dark"] optgroup { background: var(--surface); color: var(--text); }
html[data-theme="dark"] input:disabled, html[data-theme="dark"] select:disabled, html[data-theme="dark"] textarea:disabled { opacity: .7; }
html[data-theme="dark"] :is(.autocomplete,.autocomplete-list,.ac-list,.suggestions,.typeahead,.ui-autocomplete,.datalist,[role=listbox]) { background: var(--surface) !important; color: var(--text) !important; border-color: var(--border) !important; }
html[data-theme="dark"] :is([role=option],.ac-item,.suggestion):hover { background: var(--surface-3) !important; }

/* ---- Tablas ---- */
/* v2.29.0: encabezados de tabla en modo claro con contraste AA (antes --muted #6b7280 = 4.34:1 sobre #f1f5f9) */
html:not([data-theme="dark"]) :is(th, thead td) { color: var(--table-head-text); }
html[data-theme="dark"] table { color: var(--text); border-color: var(--border); }
html[data-theme="dark"] :is(th, thead td, thead) { background-color: var(--table-head) !important; color: var(--text) !important; }
html[data-theme="dark"] td, html[data-theme="dark"] th { border-color: var(--border) !important; }
html[data-theme="dark"] tbody tr:nth-child(even) > td { background-color: var(--table-stripe); }
html[data-theme="dark"] tbody tr:hover > td { background-color: var(--table-hover); }
html[data-theme="dark"] tfoot td { background: var(--surface-2); }

/* ---- Botones ---- */
html[data-theme="dark"] :is(.btn-secondary,.btn-light,.btn-outline,.btn-ghost,.btn-default,.btn-white,button.secondary) {
  background-color: var(--surface-3) !important; color: var(--text) !important; border-color: var(--border) !important;
}
html[data-theme="dark"] :is(.btn-secondary,.btn-light,.btn-outline,.btn-ghost,.btn-default):hover { background-color: #2a374d !important; }
html[data-theme="dark"] :is(.btn-primary,.btn-danger,.btn-brand) { color: #fff !important; }

/* ---- Badges / pills / estados ---- */
html[data-theme="dark"] :is(.badge,.pill,.tag,.chip,.label,.status,.counter) { background-color: var(--badge-bg); color: var(--badge-text); border-color: var(--border); }
html[data-theme="dark"] :is(.badge,.pill,.tag,.status)[class*="ok"],
html[data-theme="dark"] :is(.badge,.pill,.tag,.status)[class*="success"],
html[data-theme="dark"] :is(.badge,.pill,.tag,.status)[class*="green"],
html[data-theme="dark"] :is(.badge,.pill,.tag,.status)[class*="done"],
html[data-theme="dark"] :is(.badge,.pill,.tag,.status)[class*="won"] { background-color: var(--badge-ok-bg) !important; color: var(--badge-ok-text) !important; }
html[data-theme="dark"] :is(.badge,.pill,.tag,.status)[class*="warn"],
html[data-theme="dark"] :is(.badge,.pill,.tag,.status)[class*="amber"],
html[data-theme="dark"] :is(.badge,.pill,.tag,.status)[class*="pending"],
html[data-theme="dark"] :is(.badge,.pill,.tag,.status)[class*="yellow"] { background-color: var(--badge-warn-bg) !important; color: var(--badge-warn-text) !important; }
html[data-theme="dark"] :is(.badge,.pill,.tag,.status)[class*="danger"],
html[data-theme="dark"] :is(.badge,.pill,.tag,.status)[class*="error"],
html[data-theme="dark"] :is(.badge,.pill,.tag,.status)[class*="red"],
html[data-theme="dark"] :is(.badge,.pill,.tag,.status)[class*="lost"],
html[data-theme="dark"] :is(.badge,.pill,.tag,.status)[class*="block"] { background-color: var(--badge-danger-bg) !important; color: var(--badge-danger-text) !important; }
html[data-theme="dark"] :is(.badge,.pill,.tag,.status)[class*="info"],
html[data-theme="dark"] :is(.badge,.pill,.tag,.status)[class*="blue"] { background-color: var(--badge-info-bg) !important; color: var(--badge-info-text) !important; }

/* ---- Alertas / flashes ---- */
html[data-theme="dark"] :is(.alert,.flash,.notice,.banner,.callout) { background-color: var(--surface-2); color: var(--text); border-color: var(--border); }
html[data-theme="dark"] :is(.alert,.flash,.notice,.banner,.callout):is([class*="success"],[class*="ok"]) { background-color: var(--ok-bg) !important; color: var(--badge-ok-text) !important; }
html[data-theme="dark"] :is(.alert,.flash,.notice,.banner,.callout):is([class*="warn"]) { background-color: var(--warn-bg) !important; color: var(--badge-warn-text) !important; }
html[data-theme="dark"] :is(.alert,.flash,.notice,.banner,.callout):is([class*="error"],[class*="danger"]) { background-color: var(--danger-bg) !important; color: var(--badge-danger-text) !important; }
html[data-theme="dark"] :is(.alert,.flash,.notice,.banner,.callout):is([class*="info"]) { background-color: var(--info-bg) !important; color: var(--badge-info-text) !important; }

/* ---- Código ---- */
html[data-theme="dark"] :is(pre,code,kbd,samp) { background-color: var(--code-bg); color: var(--code-text); border-color: var(--border); }

/* ---- Red de seguridad: estilos inline con colores fijos (no PDF/correo) ----
   Captura style="background:#fff" y similares que quedaron en plantillas PHP. */
html[data-theme="dark"] body :not(.pdf-preview *, .quote-paper *, .email-preview *, [data-theme-exempt] *, [data-theme-exempt]):is(
  [style*="background:#fff"],[style*="background: #fff"],[style*="background-color:#fff"],[style*="background-color: #fff"],
  [style*="background:white"],[style*="background: white"],[style*="background-color:white"],[style*="background-color: white"],
  [style*="background:#FFF"],[style*="background: #FFF"],
  [style*="background:#f"],[style*="background: #f"],[style*="background-color:#f"],[style*="background-color: #f"],
  [style*="background:#e"],[style*="background: #e"],[style*="background-color:#e"],
  [style*="background:rgb(255"],[style*="background: rgb(255"],[style*="background:rgba(255"]) {
  background-color: var(--surface-2) !important;
  background-image: none !important;
  color: var(--text) !important;
}
html[data-theme="dark"] body :not(.pdf-preview *, .quote-paper *, [data-theme-exempt] *):is([style*="border:1px solid #e"],[style*="border: 1px solid #e"],[style*="border:1px solid #d"],[style*="border: 1px solid #d"],[style*="border-color:#e"],[style*="border-bottom:1px solid #e"],[style*="border-top:1px solid #e"]) { border-color: var(--border) !important; }
html[data-theme="dark"] body :not(.pdf-preview *, .quote-paper *, [data-theme-exempt] *):is([style*="color:#111"],[style*="color: #111"],[style*="color:#222"],[style*="color:#333"],[style*="color: #333"],[style*="color:#444"],[style*="color:#374151"],[style*="color:#1f2937"],[style*="color:#0f172a"],[style*="color:#000"],[style*="color: #000"],[style*="color:black"]) { color: var(--text) !important; }
html[data-theme="dark"] body :not(.pdf-preview *, .quote-paper *, [data-theme-exempt] *):is([style*="color:#6b7280"],[style*="color:#666"],[style*="color: #666"],[style*="color:#555"],[style*="color:#777"],[style*="color:#888"],[style*="color:#64748b"],[style*="color:#4b5563"]) { color: var(--text-muted) !important; }
html[data-theme="dark"] body :not(.pdf-preview *, .quote-paper *, [data-theme-exempt] *):is([style*="color:#b45309"],[style*="color:#92400e"],[style*="color:#d97706"],[style*="color:#a16207"]) { color: var(--warn) !important; }
html[data-theme="dark"] body :not(.pdf-preview *, .quote-paper *, [data-theme-exempt] *):is([style*="color:#991b1b"],[style*="color:#b91c1c"],[style*="color:#dc2626"],[style*="color:#9a1830"],[style*="color:#C41E3A"],[style*="color:#c41e3a"]) { color: var(--danger) !important; }
html[data-theme="dark"] body :not(.pdf-preview *, .quote-paper *, [data-theme-exempt] *):is([style*="color:#166534"],[style*="color:#15803d"],[style*="color:#0f766e"],[style*="color:#047857"]) { color: var(--ok) !important; }

/* Previsualizaciones de PDF/cotización/correo: siempre claras (documento impreso). */
html[data-theme="dark"] :is(.pdf-preview,.quote-paper,.email-preview,[data-theme-exempt]) { background: #fff !important; color: #111 !important; color-scheme: light; }

/* ---- Shell (header, sidebar, chips) en oscuro ---- */
html[data-theme="dark"] body .app-main, html[data-theme="dark"] body.layout-sandbox-ui .app-main, html[data-theme="dark"] body.layout-client-portal .app-main { background: var(--bg) !important; color: var(--text); }
html[data-theme="dark"] :is(.ux-toggle,.nav-logout,.user-chip,a.user-chip,span.user-chip,body.layout-sandbox-ui .user-chip,body.layout-sandbox-ui .nav-logout) { background: var(--surface-2) !important; color: var(--text) !important; border-color: var(--border) !important; }
html[data-theme="dark"] :is(.user-chip-name,.nav-quick-title) { color: var(--text) !important; }
html[data-theme="dark"] .user-chip-role { color: var(--text-muted) !important; }
html[data-theme="dark"] .nav-quick-menu { background: var(--surface) !important; border-color: var(--border) !important; box-shadow: var(--shadow-lg); }
html[data-theme="dark"] .nav-quick-menu a { color: var(--text) !important; }
html[data-theme="dark"] .nav-quick-menu a:is(:hover,:focus) { background: var(--rtfm-soft) !important; color: var(--link) !important; }
html[data-theme="dark"] :is(.sidebar-heading,body.layout-sandbox-ui .sidebar-heading,body.layout-client-portal .sidebar-heading) { color: #8d9cb3 !important; }
html[data-theme="dark"] .sidebar-nav :is(a.is-active,a[aria-current]) .nav-label, html[data-theme="dark"] .sidebar-nav .nav-label { color: inherit !important; }
html[data-theme="dark"] .sidebar-nav a:is(.is-active,[aria-current="page"]) { color: #ffb3bf !important; }
html[data-theme="dark"] :is(.nav-crumbs,.nav-crumbs-home) { color: var(--text-muted) !important; }
html[data-theme="dark"] .nav-crumbs a { color: var(--link) !important; }
html[data-theme="dark"] :is(nav.app-tabs,.app-tabs,.pmo-subnav) { background: var(--surface-2) !important; border-color: var(--border) !important; }
html[data-theme="dark"] .app-tabs a { color: var(--text-muted) !important; }
html[data-theme="dark"] .app-tabs a.is-active { background: var(--surface) !important; color: var(--text) !important; }
html[data-theme="dark"] :is(.btn-accent,.btn-accent:hover) { background: var(--brand) !important; border-color: var(--brand) !important; color: #fff !important; }
html[data-theme="dark"] :is([class*="kicker"],.eyebrow) { color: var(--link) !important; }

/* ---- Ciclo / proc-chips / firma-badges / gastos ---- */
html[data-theme="dark"] .proc-chip { background: var(--surface-2) !important; border-color: var(--border) !important; color: var(--text) !important; }
html[data-theme="dark"] .proc-chip.is-done { background: var(--ok-bg) !important; }
html[data-theme="dark"] .proc-chip.is-current { background: var(--rtfm-soft) !important; border-color: rgba(240,122,140,.45) !important; }
html[data-theme="dark"] .proc-chip.is-warn { background: var(--warn-bg) !important; }
html[data-theme="dark"] .proc-chip :is(a,strong,em,span) { color: inherit !important; }
html[data-theme="dark"] :is([class*="firma-badge"]) { background: var(--badge-bg) !important; color: var(--badge-text) !important; }
html[data-theme="dark"] [class*="firma-badge"].is-signed { background: var(--badge-ok-bg) !important; color: var(--badge-ok-text) !important; }
html[data-theme="dark"] [class*="firma-badge"].is-ready { background: var(--badge-warn-bg) !important; color: var(--badge-warn-text) !important; }
html[data-theme="dark"] :is(.gx-kpi,.gx-empty,.formula-box,.cap-alert,summary[class*="summary"]) { background: var(--surface-2) !important; color: var(--text) !important; border-color: var(--border) !important; }
html[data-theme="dark"] .cap-alert.is-ok { background: var(--ok-bg) !important; }
html[data-theme="dark"] .gx-count { background: var(--badge-danger-bg) !important; color: var(--badge-danger-text) !important; }
html[data-theme="dark"] li:is(.is-active) { background-color: var(--rtfm-soft); }
html[data-theme="dark"] tbody tr { background-color: transparent; }
/* Texto de marca sobre fondo oscuro: subir contraste */
html[data-theme="dark"] :is(main,.app-main) :is(strong,span,p,b,td)[style*="#C41E3A"], html[data-theme="dark"] .p1 { color: var(--link) !important; }

/* ---- Pasada 3: restos detectados por qa_dark_mode ---- */
html[data-theme="dark"] tbody tr, html[data-theme="dark"] :is(ul,ol) > li { background-color: transparent; }
html[data-theme="dark"] tbody tr:nth-child(even) { background-color: var(--table-stripe) !important; }
html[data-theme="dark"] :is(main,.app-main) :is(span,p,small)[style*="#64748b"], html[data-theme="dark"] :is(main,.app-main) :is(span,p):is([style*="color:#94a3b8"],[style*="color: #64748b"]) { color: var(--text-muted) !important; }
html[data-theme="dark"] :is(.cp-metric-value,.p3,strong.is-ok,.sw-label) { color: inherit; }
html[data-theme="dark"] .cp-metric-value { color: var(--link) !important; }
html[data-theme="dark"] .p3 { color: var(--warn) !important; }
html[data-theme="dark"] strong.is-ok { color: var(--ok) !important; }
html[data-theme="dark"] .sw-label { color: var(--text) !important; background: transparent !important; }
html[data-theme="dark"] :is(main,.app-main) :is(strong,h1,h2,h3) { color: inherit; }
html[data-theme="dark"] :is(main,.app-main) :is(strong,h2)[class=""], html[data-theme="dark"] :is(main,.app-main) strong:not([class]) { color: var(--text); }
html[data-theme="dark"] :is(.btn,.btn-sm,.btn-small):not(.btn-primary):not(.btn-danger):not(.btn-accent):not(.btn-secondary) { color: var(--link); }
html[data-theme="dark"] :is(.btn-primary,.btn-danger,button.btn[class*="primary"]), html[data-theme="dark"] .btn[style*="background:#C41E3A"], html[data-theme="dark"] a.is-active[style*="#C41E3A"] { color: #fff !important; }
html[data-theme="dark"] :is(.app-tabs,.subnav,.tabs) a.is-active { color: #fff !important; }
html[data-theme="dark"] :is(main,.app-main) :is(.btn-sm,.btn-small):not(.btn-primary):not(.btn-danger):not(.btn-accent) { color: var(--link) !important; }
html[data-theme="dark"] :is(main,.app-main) .btn:not(.btn-secondary):not(.btn-light):not(.btn-outline):not(.btn-ghost)[style*="background"] { color: #fff !important; }
html[data-theme="dark"] .btn-primary { color: #fff !important; }

/* v2.29.0 — medidor SMTP2GO (admin/correo_uso.php) */
.mq-card { padding: 1rem 1.15rem; margin-bottom: 1rem; }
.mq-head { display: flex; align-items: center; justify-content: space-between; gap: .75rem; flex-wrap: wrap; }
.mq-head h2 { margin: 0; }
.mq-badge { font-size: .78rem; font-weight: 700; padding: .2rem .6rem; border-radius: 999px; background: var(--badge-ok-bg); color: var(--badge-ok-text); }
.mq-warn .mq-badge { background: var(--badge-warn-bg); color: var(--badge-warn-text); }
.mq-crit .mq-badge { background: var(--badge-danger-bg); color: var(--badge-danger-text); }
.mq-figure { font-size: 1.15rem; margin: .75rem 0 .5rem; color: var(--text); }
.mq-bar { position: relative; height: 14px; border-radius: 999px; background: var(--surface-3); border: 1px solid var(--border); overflow: hidden; }
.mq-bar > span { display: block; height: 100%; background: var(--ok, #16a34a); border-radius: 999px; }
.mq-warn .mq-bar > span { background: var(--warn, #d97706); }
.mq-crit .mq-bar > span { background: var(--danger, #dc2626); }
.mq-mark { position: absolute; top: 0; bottom: 0; width: 2px; background: var(--text-muted); opacity: .6; }
.mq-mark-80 { left: 80%; } .mq-mark-95 { left: 95%; }
.mq-inline { margin-top: .5rem; }

/* v2.34.2 — Uso SMTP2GO: gráficos por ciclo */
.mq-chart-wrap { overflow-x: auto; margin: .75rem 0 1rem; }
.mq-chart { width: 100%; max-width: 100%; height: auto; display: block; color: var(--text); }
.mq-chart-grid { stroke: var(--border); stroke-width: 1; }
.mq-chart-axis, .mq-chart-label, .mq-chart-value, .mq-chart-legend, .mq-chart-empty {
  fill: var(--text-muted); font-size: 11px; font-family: inherit;
}
.mq-chart-value { fill: var(--text); font-weight: 600; font-size: 10px; }
.mq-chart-legend { font-size: 11px; }
.mq-chart-plan { fill: var(--surface-3); stroke: var(--border); stroke-width: 1; }
.mq-chart-limit { stroke: var(--danger, #dc2626); stroke-width: 2; stroke-dasharray: 4 3; }
.mq-chart-bar { fill: var(--brand-primary, #a3142f); }
.mq-chart-bar-current { fill: var(--brand-accent, #0B3D91); }
.mq-chart-bar-daily { fill: var(--brand-primary, #a3142f); opacity: .85; }
.mq-table-wrap { margin-top: .5rem; }
.mq-table th.num, .mq-table td.num { text-align: right; font-variant-numeric: tabular-nums; }
.mq-row-current td { font-weight: 600; background: var(--surface-2); }
.mq-row-empty td { color: var(--text-muted); }
.mq-chip {
  display: inline-block; font-size: .7rem; font-weight: 700; padding: .1rem .4rem;
  border-radius: 999px; background: var(--badge-ok-bg); color: var(--badge-ok-text); vertical-align: middle;
}
@media (max-width: 640px) {
  .mq-chart { min-width: 520px; }
  .mq-chart-daily { min-width: 360px; }
}


/* v2.38.3 — contraste en oscuro: colores fijos → tokens */
html[data-theme="dark"] :is(.nav-search-btn,.nav-fav-btn) { color: var(--link); }
html[data-theme="dark"] .nav-badge.is-zero { background: var(--surface-3); color: var(--text-muted); }
html[data-theme="dark"] .proc-chip.is-current .proc-chip-n { color: var(--brand-contrast) !important; }
html[data-theme="dark"] .crm-tab.is-active .muted { color: var(--brand-contrast) !important; opacity: .85; }
.hc-alert-title { color: var(--link, #2563EB); }
html[data-theme="dark"] .proc-chip:not(.is-current) .proc-chip-n { background: var(--surface-3) !important; }
html[data-theme="dark"] :is(.empty,.empty-state,.crm-empty,.partner-empty,.pv-cat-empty,.pv-inspect-empty) { background: var(--surface-muted) !important; color: var(--text-muted) !important; }

/* v2.39.0 — Firmas reforzadas (dark) */
html[data-theme="dark"] .firma-siglist li,
html[data-theme="dark"] .firma-otp { background: var(--surface-2) !important; border-color: var(--border) !important; color: var(--text) !important; }
html[data-theme="dark"] .firma-warn,
html[data-theme="dark"] .cert-gate-note { background: var(--warn-bg) !important; color: var(--warn) !important; border-color: var(--border) !important; }
html[data-theme="dark"] .firma-ok { background: var(--ok-bg) !important; color: var(--ok) !important; border-color: var(--border) !important; }
html[data-theme="dark"] .firma-bad { background: var(--danger-bg) !important; color: var(--danger) !important; border-color: var(--border) !important; }
html[data-theme="dark"] .firma-legal, html[data-theme="dark"] .firma-kv dt, html[data-theme="dark"] .cert-card dt { color: var(--text-muted) !important; border-color: var(--border) !important; }
/* v2.40.3: chips de estado de la cotización (kanban/detalle) legibles en oscuro */
html[data-theme="dark"] .cqk-chip.is-draft { background: var(--badge-warn-bg) !important; color: var(--text) !important; }
html[data-theme="dark"] .cqk-chip.is-sent { background: var(--badge-info-bg) !important; color: var(--text) !important; }
html[data-theme="dark"] .cqk-chip.is-accepted, html[data-theme="dark"] .cqk-chip.is-margin-ok { background: var(--badge-ok-bg) !important; color: var(--text) !important; }
html[data-theme="dark"] .cqk-chip.is-rejected, html[data-theme="dark"] .cqk-chip.is-margin-low { background: var(--badge-danger-bg) !important; color: var(--text) !important; }

/* v2.91.1 — contraste en oscuro (QA modo oscuro: 29 textos bajo 4.5:1 en 6 páginas, el resto ya estaba en 0) */
/* Chips/pestañas activas sobre fondo de marca: la regla general de enlaces en oscuro las dejaba rosadas sobre rojo (2.2:1). */
html[data-theme="dark"] :is(main,.main,.content,.page-content) a:is(.nda-chip.is-on,.docu-chip.is-on),
html[data-theme="dark"] :is(main,.main,.content,.page-content) .ef-toggles a.is-active { color: var(--brand-contrast, #fff) !important; }
/* Mercado Público: «N sin revisar» y «puntaje» usaban el rojo de marca sobre fondo oscuro (2.6–3.0:1). */
html[data-theme="dark"] :is(.mp-chip em, .mp-score, .mp-score-pill) { color: var(--link); }
/* Healthcheck: prioridades con clase (antes colores en línea); P2 naranja más oscuro para texto blanco ≥ 4.5:1 en claro y oscuro. */
.hc-prio { color: #fff; border: 0; }
.hc-prio-p1 { background: #2563EB; }
.hc-prio-p2 { background: #C2410C; }
.hc-prio-p3 { background: #B45309; }
