/* ══════════════════════════════════════════════════════════════════════
   DISEÑO "NOVA"  ·  body.ui-nova (sobre data-theme="light")
   ══════════════════════════════════════════════════════════════════════

   QUÉ ES
   El lenguaje visual nuevo de toda la aplicación (fase 1: la base común).
   Claro y aireado, acento índigo-violeta, tarjetas blancas de 16 px con
   sombra suave, barra lateral blanca con etiquetas e iconos de línea.

   CÓMO SE ACTIVA
   Es el tema "nova" de Configuración → Apariencia y el predeterminado.
   app-core.js lo aplica como data-theme="light" + clase body.ui-nova:
   así hereda TODO lo que ya se corrigió para fondo claro (tokens de
   :root, reglas [data-theme="light"] de redesign-2026.css) y esta hoja
   solo agrega lo que lo distingue. Los temas anteriores siguen
   disponibles y esta hoja no los toca: todo va bajo body.ui-nova.

   ESPECIFICIDAD
   body.ui-2026.ui-nova empata con body.ui-2026[data-theme="light"] y
   gana por orden (esta hoja se carga al final). Donde la regla base usa
   !important, aquí también — solo en esos casos.

   FASE 1 = base común: tokens, barra lateral, encabezados, botones,
   controles, tarjetas, tablas, pestañas, insignias, modales. Cambia los
   23 módulos a la vez. Los ajustes propios de cada módulo van en
   secciones "Módulo: …" al final, una por fase.
   ══════════════════════════════════════════════════════════════════════ */

body.ui-2026.ui-nova {
  /* Superficies */
  --ds-page-bg:        #F5F6FB;
  --ds-card:           #FFFFFF;
  --ds-surface:        #F3F4F9;
  --ds-surface-hover:  #EEEFF6;
  --ds-hover:          rgba(91,75,245,.07);
  --ds-border:         #E6E7EF;
  --ds-border-strong:  #D5D7E3;

  /* Texto (muted ≥ 4.5:1 sobre blanco) */
  --ds-text:           #15162C;
  --ds-text-secondary: #4A4D68;
  --ds-muted:          #5E6182;

  /* Acento y estados */
  --ds-accent:         #5B4BF5;
  --ds-accent-soft:    #EFEDFF;
  --ds-accent-border:  #D4CEFF;
  --ds-ok:             #0F7B53;
  --ds-ok-soft:        #E2F5EC;
  --ds-warn:           #A85A07;
  --ds-warn-soft:      #FFF1DC;
  --ds-err:            #C92A41;
  --ds-err-soft:       #FDE8EB;
  --ds-info:           #2160E0;
  --ds-info-soft:      #E5EDFF;

  /* Geometría y elevación */
  --ds-radius:         16px;
  --ds-radius-sm:      10px;
  --ds-radius-lg:      20px;
  --ds-card-elev:      0 1px 2px rgba(21,22,44,.04), 0 4px 14px rgba(21,22,44,.045);
  --ds-card-elev-hi:   0 2px 6px rgba(21,22,44,.05), 0 18px 44px rgba(21,22,44,.10);
  --ds-overlay:        rgba(21,22,44,.38);

  --ds-grad-1: linear-gradient(135deg,#5B4BF5 0%,#9B5CF6 100%);
  --ds-grad-2: linear-gradient(135deg,#2DB5E8 0%,#5B4BF5 100%);
  --ds-grad-3: linear-gradient(135deg,#F7B23B 0%,#F0645A 100%);
  --ds-grad-4: linear-gradient(135deg,#21C08B 0%,#2DB5E8 100%);
  --ds-grad-5: linear-gradient(135deg,#F0645A 0%,#9B5CF6 100%);

  --ui26-radius-lg: 16px;
  --ui26-radius-md: 12px;
  --ui26-rail-open: 248px;

  /* Tokens heredados de styles.css */
  --bg:             var(--ds-page-bg);
  --card:           #FFFFFF;
  --border:         var(--ds-border);
  --text:           var(--ds-text);
  --text-strong:    var(--ds-text);
  --text-secondary: var(--ds-text-secondary);
  --label:          #3A3D57;
  --muted:          var(--ds-muted);
  --muted-light:    #6B6E8C;
  --surface:        var(--ds-surface);
  --desk:           #D5D7E3;
  --accent:         #5B4BF5;
  --accent-dark:    #4535D9;
  --accent-2:       #9B5CF6;
  --accent-light:   var(--ds-accent-soft);
  --accent-border:  var(--ds-accent-border);
  --accent-mid:     #B3A9FF;
  --radius:         16px;
  --radius-md:      12px;
  --radius-sm:      10px;
  --radius-btn:     10px;
  --radius-input:   10px;
  --shadow:         var(--ds-card-elev);
  --shadow-sm:      0 1px 2px rgba(21,22,44,.05), 0 2px 8px rgba(21,22,44,.05);
  --shadow-card:    var(--ds-card-elev);
  --shadow-accent:  0 6px 18px rgba(91,75,245,.28);
  --focus-ring:     0 0 0 3px rgba(91,75,245,.20);
  --grad-accent:    var(--ds-grad-1);
  --font-display:   'Plus Jakarta Sans', 'Inter', sans-serif;

  background: var(--ds-page-bg);
  background-image:
    radial-gradient(900px 420px at 18% -8%, rgba(91,75,245,.07), transparent 60%),
    radial-gradient(700px 360px at 92% -12%, rgba(45,181,232,.06), transparent 60%);
  background-attachment: fixed;
  color: var(--ds-text);
}

body.ui-2026.ui-nova ::selection { background: #5B4BF5; color: #fff; }

/* ── Barra lateral ─────────────────────────────────────────────────── */
body.ui-2026.ui-nova .sidebar {
  background: rgba(255,255,255,.92);
  border-right: 1px solid var(--ds-border);
  box-shadow: 1px 0 0 rgba(255,255,255,.6), 8px 0 32px rgba(21,22,44,.03);
  backdrop-filter: blur(16px) saturate(140%);
}

body.ui-2026.ui-nova .sidebar-logo-mark,
body.ui-2026.ui-nova.sidebar-expanded .sidebar-logo-mark {
  background: #fff !important;
  border: 1px solid var(--ds-border);
  border-radius: 12px;
  box-shadow: 0 2px 8px rgba(21,22,44,.06) !important;
}
body.ui-2026.ui-nova .sidebar-logo { background: transparent; box-shadow: none; }
body.ui-2026.ui-nova.sidebar-expanded .sidebar-logo-text .s-title {
  font-family: var(--font-display);
  font-weight: 800;
  letter-spacing: -.01em;
  color: var(--ds-text);
}
body.ui-2026.ui-nova.sidebar-expanded .sidebar-logo-text .s-sub { color: var(--ds-muted); }
body.ui-2026.ui-nova .sidebar-divider { background: var(--ds-border); opacity: 1; }

body.ui-2026.ui-nova.sidebar-expanded .sidebar-section-label {
  color: #7A7D99;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .09em;
  text-transform: uppercase;
}
body.ui-2026.ui-nova.sidebar-expanded .sidebar-section-label { padding-left: 12px; margin-top: 10px; }

body.ui-2026.ui-nova .nav-item {
  min-height: 38px;
  border-radius: 10px;
  color: var(--ds-text-secondary);
  font-weight: 550;
}
body.ui-2026.ui-nova .nav-item::before { display: none; }
body.ui-2026.ui-nova .nav-item:hover {
  color: var(--ds-text);
  background: var(--ds-surface);
  transform: none;
}
body.ui-2026.ui-nova .nav-item.active {
  color: var(--ds-accent);
  background: var(--ds-accent-soft);
  box-shadow: inset 0 0 0 1px rgba(var(--nova-a-rgb, 91,75,245),.10);
}
body.ui-2026.ui-nova .nav-item .nav-ic {
  color: #8C8FA8;
  filter: none;
  opacity: 1;
}
body.ui-2026.ui-nova .nav-item .nav-ic .ti { font-size: 19px; vertical-align: 0; }
body.ui-2026.ui-nova .nav-item:hover .nav-ic { color: var(--ds-text-secondary); filter: none; }
body.ui-2026.ui-nova .nav-item.active .nav-ic { color: var(--ds-accent); filter: none; }
body.ui-2026.ui-nova.sidebar-expanded .nav-item .nav-lbl { color: inherit; font-size: 13.5px; }
body.ui-2026.ui-nova.sidebar-expanded .nav-item.active .nav-lbl { color: var(--ds-accent); font-weight: 650; }
body.ui-2026.ui-nova.sidebar-expanded .nav-item:hover .nav-lbl { color: var(--ds-text); }

body.ui-2026.ui-nova .nav-badge:not([data-count="0"]) {
  background: var(--ds-accent);
  color: #fff;
  border-radius: 999px;
  font-weight: 700;
}

/* Buscar: se ve como un campo de búsqueda, con el atajo a la derecha. */
body.ui-2026.ui-nova .nav-search {
  border: 1px solid var(--ds-border) !important;
  background: var(--ds-page-bg) !important;
  color: var(--ds-muted);
  margin-bottom: 10px !important;
}
body.ui-2026.ui-nova .nav-search:hover { border-color: var(--ds-border-strong) !important; background: #fff !important; }
body.ui-2026.ui-nova.sidebar-expanded .nav-search::after {
  content: "⌘K";
  margin-left: auto;
  padding: 2px 6px;
  border: 1px solid var(--ds-border);
  border-radius: 6px;
  background: var(--nova-card, #fff);
  color: var(--ds-muted);
  font-size: 10.5px;
  font-weight: 600;
  line-height: 1.3;
}
body.ui-2026.ui-nova.sidebar-expanded .nav-search .nav-lbl { color: var(--ds-muted); font-weight: 500; }

body.ui-2026.ui-nova .sidebar-toggle {
  border: 1px solid var(--ds-border);
  background: var(--nova-card, #fff);
  color: var(--ds-muted);
}
body.ui-2026.ui-nova .sidebar-toggle:hover { color: var(--ds-text); border-color: var(--ds-border-strong); }

body.ui-2026.ui-nova .sidebar-user {
  border-top: 1px solid var(--ds-border);
}
body.ui-2026.ui-nova .sidebar-avatar {
  background: var(--ds-grad-1);
  border: 0;
  color: #fff;
  font-weight: 700;
  box-shadow: 0 4px 12px rgba(var(--nova-a-rgb, 91,75,245),.25);
}
body.ui-2026.ui-nova .sidebar-user-info .u-name { color: var(--ds-text); font-weight: 650; }
body.ui-2026.ui-nova .sidebar-user-info .u-role { color: var(--ds-muted); }

/* ── Encabezados de página ─────────────────────────────────────────── */
body.ui-2026.ui-nova .ds-h1 {
  font-family: var(--font-display);
  font-size: clamp(1.6rem, 2.1vw, 2.1rem);
  font-weight: 800;
  letter-spacing: -.025em;
  line-height: 1.15;
  color: var(--ds-text);
}
body.ui-2026.ui-nova #view-dashboard .ui26-dashboard-header .ds-h1 {
  font-size: clamp(1.8rem, 2.5vw, 2.4rem);
}
body.ui-2026.ui-nova .ds-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--ds-accent);
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}
body.ui-2026.ui-nova .ds-sub {
  color: var(--ds-muted);
  font-size: .84rem;
  line-height: 1.5;
}
body.ui-2026.ui-nova .view :is(h2, h3) { font-family: var(--font-display); letter-spacing: -.01em; }

/* ── Botones ───────────────────────────────────────────────────────── */
body.ui-2026.ui-nova :is(.ds-btn, .hv2-btn) {
  min-height: 38px;
  padding: 8px 15px;
  border: 1px solid var(--ds-border);
  border-radius: 10px;
  background: var(--nova-card, #fff);
  color: var(--ds-text);
  font-weight: 600;
  box-shadow: 0 1px 2px rgba(21,22,44,.05);
}
body.ui-2026.ui-nova :is(.ds-btn, .hv2-btn):hover {
  background: var(--nova-card, #fff);
  border-color: var(--ds-border-strong);
  color: var(--ds-text);
  box-shadow: 0 2px 8px rgba(21,22,44,.08);
  filter: none;
}
body.ui-2026.ui-nova :is(.ds-btn, .hv2-btn).primary {
  border-color: transparent;
  background: var(--ds-grad-1);
  color: #fff;
  box-shadow: 0 1px 2px rgba(var(--nova-a-rgb, 91,75,245),.3), 0 6px 18px rgba(var(--nova-a-rgb, 91,75,245),.26);
}
body.ui-2026.ui-nova :is(.ds-btn, .hv2-btn).primary:hover {
  color: #fff;
  background: var(--ds-grad-1);
  box-shadow: 0 2px 4px rgba(var(--nova-a-rgb, 91,75,245),.3), 0 10px 26px rgba(var(--nova-a-rgb, 91,75,245),.32);
  filter: brightness(1.04);
}
body.ui-2026.ui-nova .ui26-page-actions button,
body.ui-2026.ui-nova .ui26-sgi-actions button {
  background: var(--nova-card, #fff) !important;
  border-color: var(--ds-border) !important;
  color: var(--ds-text) !important;
}
body.ui-2026.ui-nova .ui26-sgi-actions button:first-child,
body.ui-2026.ui-nova .ui26-page-actions button.primary {
  background: var(--ds-grad-1) !important;
  border-color: transparent !important;
  color: #fff !important;
}

/* ── Campos y filtros ──────────────────────────────────────────────── */
body.ui-2026.ui-nova .view :is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]), select, textarea),
body.ui-2026.ui-nova :is(.hv-input, .search-field, .fil-pill, .fil-sel) {
  border-color: #E1E3EC;
  background-color: var(--nova-card, #fff);
  color: var(--ds-text);
  border-radius: 10px;
}
body.ui-2026.ui-nova .view:not(#view-generador):not(#view-aprobacion) :is(input, select, textarea):focus,
body.ui-2026.ui-nova :is(.hv-input, .search-field):focus,
body.ui-2026.ui-nova :is(.hv-input, .search-field):focus-within {
  border-color: #A79CFF !important;
  box-shadow: 0 0 0 3px rgba(var(--nova-a-rgb, 91,75,245),.14) !important;
  outline: none;
}
body.ui-2026.ui-nova .view :is(input, textarea)::placeholder { color: #9A9DB5; }
/* redesign-2026.css pinta los campos con --ds-surface y !important bajo un
   selector con dos :not(#id) (especificidad 2,2,1). Para que en Nova sean
   blancos hay que igualar esos dos :not(#id). */
body.ui-2026.ui-nova .view:not(#view-generador):not(#view-aprobacion) :where(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="range"]):not([type="color"]), select, textarea, .form-input, .ndoc-input, .gdoc-input, .renov-fil-input) {
  background-color: var(--nova-card, #fff) !important;
  border-color: #E1E3EC !important;
}
body.ui-2026.ui-nova :is(input[type="checkbox"], input[type="radio"]) { accent-color: var(--ds-accent); }
body.ui-2026.ui-nova :is(.hv-field-label, .kpi-label) { color: var(--ds-muted); font-weight: 600; }

/* ── Tarjetas ──────────────────────────────────────────────────────── */
body.ui-2026.ui-nova .view:not(#view-generador):not(#view-aprobacion) :where(
  .card-xl,.card-sm,.card-md,.card-float,.ds-card,.section-card,.inner-card,
  .panel-bg-box,.repo-kpi-card,.repo-doc-card,.repo-doc-list-wrap,
  .legal-card,.legal-right,.ctr-widget,.form-section
) {
  border: 1px solid var(--ds-border) !important;
  border-radius: 16px !important;
  background: var(--nova-card, #fff) !important;
  box-shadow: var(--ds-card-elev) !important;
}
body.ui-2026.ui-nova .view:not(#view-generador):not(#view-aprobacion) :where(
  .card-xl,.card-sm,.card-md,.ds-card,.section-card,.repo-doc-card,.legal-card
):hover {
  border-color: var(--ds-border-strong) !important;
  box-shadow: var(--ds-card-elev-hi) !important;
}
body.ui-2026.ui-nova .view :is(.hv-card-title, .card-section-title) {
  font-family: var(--font-display);
  color: var(--ds-text);
  font-weight: 700;
}

/* KPI: número grande, etiqueta con punto de color. */

/* ── Tablas ────────────────────────────────────────────────────────── */
body.ui-2026.ui-nova .view:not(#view-generador):not(#view-aprobacion) table thead {
  background: #FAFAFD !important;
}
body.ui-2026.ui-nova .view:not(#view-generador):not(#view-aprobacion) table th {
  color: #5E6182 !important;
  font-size: .68rem !important;
  font-weight: 650 !important;
  letter-spacing: .06em !important;
  border-color: var(--ds-border) !important;
}
body.ui-2026.ui-nova .view:not(#view-generador):not(#view-aprobacion) table td {
  color: var(--ds-text-secondary) !important;
  font-size: .8rem;
  border-color: #EEEFF5 !important;
}
body.ui-2026.ui-nova .view:not(#view-generador):not(#view-aprobacion) table tbody tr:hover {
  background: #F8F7FF !important;
}

/* ── Pestañas y segmentos ──────────────────────────────────────────── */

/* ── Insignias de estado: pastilla suave con punto ─────────────────── */

/* ── Modales ───────────────────────────────────────────────────────── */
body.ui-2026.ui-nova :is(.ds-modal-overlay, .modal-nf-overlay, .modal-anx-overlay, .ndoc-overlay, .iw-overlay, .modal-flex-overlay, .modal-flex-overlay-lt) {
  background: var(--ds-overlay) !important;
  backdrop-filter: blur(6px);
}
body.ui-2026.ui-nova :is(.ds-modal, .modal-nf, .modal-anx, .ndoc-modal, .iw-modal) {
  border: 1px solid var(--ds-border) !important;
  border-radius: 20px !important;
  background: var(--nova-card, #fff) !important;
  color: var(--ds-text);
  box-shadow: 0 24px 70px rgba(21,22,44,.22), 0 2px 8px rgba(21,22,44,.06) !important;
}

/* ── Pequeños detalles ─────────────────────────────────────────────── */
body.ui-2026.ui-nova *::-webkit-scrollbar-thumb { background: #D9DAE5; }
body.ui-2026.ui-nova *::-webkit-scrollbar-thumb:hover { background: #BFC1D2; }
body.ui-2026.ui-nova .view .loading-spinner { border-color: var(--ds-border); border-top-color: var(--ds-accent); }

/* ── Módulo: Dashboard (fase 2) ────────────────────────────────────
   Encabezado como tarjeta "hero" con degradado; KPI con icono en
   cuadro de color (data-tono, lo pone app-dashboard.js), número grande
   y etiqueta en minúscula; secciones con título real; listas con avatar
   de iniciales; acciones rápidas como mosaico de 2 columnas. */
body.ui-2026.ui-nova #view-dashboard {
  --nv-tono: var(--ds-accent);
  --nv-tono-soft: var(--ds-accent-soft);
}
body.ui-2026.ui-nova #view-dashboard [data-tono="accent"] { --nv-tono: var(--nova-a1, #5B4BF5); --nv-tono-soft: #EFEDFF; }
body.ui-2026.ui-nova #view-dashboard [data-tono="violet"] { --nv-tono: #8B3FE0; --nv-tono-soft: #F4EBFF; }
body.ui-2026.ui-nova #view-dashboard [data-tono="info"]   { --nv-tono: #1F6FD1; --nv-tono-soft: #E4F0FF; }
body.ui-2026.ui-nova #view-dashboard [data-tono="ok"]     { --nv-tono: #0F7B53; --nv-tono-soft: #E2F5EC; }
body.ui-2026.ui-nova #view-dashboard [data-tono="warn"]   { --nv-tono: #B05E06; --nv-tono-soft: #FFF0D9; }
body.ui-2026.ui-nova #view-dashboard [data-tono="err"]    { --nv-tono: #C92A41; --nv-tono-soft: #FDE8EB; }
body.ui-2026.ui-nova #view-dashboard [data-tono="muted"]  { --nv-tono: #5E6182; --nv-tono-soft: #EEEFF5; }

/* Hero */
body.ui-2026.ui-nova #view-dashboard .ui26-dashboard-header {
  position: relative;
  overflow: hidden;
  margin: 24px 32px 0;
  padding: 28px 30px !important;
  border: 0 !important;
  border-radius: 22px;
  background:
    radial-gradient(420px 220px at 100% 0%, rgba(255,255,255,.18), transparent 70%),
    radial-gradient(300px 200px at 70% 130%, rgba(var(--nova-agua-rgb, 45,181,232),.35), transparent 70%),
    linear-gradient(120deg, #4B3BE8 0%, #6E4BF5 55%, var(--nova-a3, #9B5CF6) 100%) !important;
  box-shadow: 0 18px 40px rgba(var(--nova-a-rgb, 91,75,245),.25);
  color: #fff;
}
body.ui-2026.ui-nova #view-dashboard .ui26-dashboard-header::after {
  content: "";
  position: absolute;
  right: -60px; top: -80px;
  width: 260px; height: 260px;
  border-radius: 50%;
  border: 40px solid rgba(255,255,255,.07);
  pointer-events: none;
}
body.ui-2026.ui-nova #view-dashboard .ui26-dashboard-header > * { position: relative; z-index: 1; }
body.ui-2026.ui-nova #view-dashboard .ui26-dashboard-header .ds-eyebrow { color: rgba(255,255,255,.85); }
body.ui-2026.ui-nova #view-dashboard .ui26-dashboard-header .ds-h1 { color: #fff; }
body.ui-2026.ui-nova #view-dashboard .ui26-dashboard-header .ds-sub,
body.ui-2026.ui-nova #view-dashboard #dash-last-update,
body.ui-2026.ui-nova #view-dashboard #dash-refresh-btn { color: rgba(255,255,255,.85) !important; }
body.ui-2026.ui-nova #view-dashboard #dash-refresh-btn:hover { background: rgba(255,255,255,.14) !important; color: #fff !important; }
body.ui-2026.ui-nova #view-dashboard .ui26-dashboard-header .ds-btn {
  background: rgba(255,255,255,.14);
  border-color: rgba(255,255,255,.28);
  color: #fff;
  box-shadow: none;
  backdrop-filter: blur(6px);
}
body.ui-2026.ui-nova #view-dashboard .ui26-dashboard-header .ds-btn:hover { background: rgba(255,255,255,.22); color: #fff; }
body.ui-2026.ui-nova #view-dashboard .ui26-dashboard-header .ds-btn.primary {
  background: var(--nova-card, #fff);
  border-color: #fff;
  color: var(--nova-a2, #4535D9);
  box-shadow: 0 6px 18px rgba(21,22,44,.18);
}
body.ui-2026.ui-nova #view-dashboard .ui26-dashboard-header .ds-btn.primary:hover { color: var(--nova-a2, #4535D9); filter: none; background: #fff; }

/* KPI */
body.ui-2026.ui-nova #dash-kpi-row { padding: 18px 32px 0 !important; gap: 14px !important; }
body.ui-2026.ui-nova #view-dashboard .dash-kpi-card {
  min-height: 0;
  background: var(--nova-card, #fff) !important;
  border: 1px solid var(--ds-border) !important;
  border-radius: 18px !important;
  box-shadow: var(--ds-card-elev) !important;
  backdrop-filter: none;
}
body.ui-2026.ui-nova #view-dashboard .dash-kpi-card:hover {
  transform: translateY(-2px);
  border-color: color-mix(in srgb, var(--nv-tono) 30%, var(--ds-border)) !important;
  box-shadow: var(--ds-card-elev-hi) !important;
}
body.ui-2026.ui-nova #view-dashboard .dash-kpi-card > div:first-child { display: none; }
body.ui-2026.ui-nova #view-dashboard .dash-kpi-card .panel-body-col {
  display: flex;
  flex-direction: column;
  padding: 18px 18px 16px;
}
body.ui-2026.ui-nova #view-dashboard .dash-kpi-card .flex-between-14 { display: contents; }
body.ui-2026.ui-nova #view-dashboard .dash-kpi-card .flex-between-14 > div:last-child {
  order: -1;
  width: 40px !important;
  height: 40px !important;
  margin-bottom: 14px;
  border-radius: 12px !important;
  background: var(--nv-tono-soft) !important;
  color: var(--nv-tono);
  font-size: 1.15rem !important;
  filter: none !important;
}
body.ui-2026.ui-nova #view-dashboard .dash-kpi-card .flex-between-14 > div:last-child .ti { font-size: 20px; }
body.ui-2026.ui-nova #view-dashboard .dash-kpi-card .kpi-val {
  order: 0;
  font-size: 2.1rem !important;
  font-weight: 800 !important;
  line-height: 1.05;
  color: var(--ds-text);
}
body.ui-2026.ui-nova #view-dashboard .dash-kpi-card .flex-between-14 > div:first-child {
  order: 1;
  margin-top: 6px;
  color: var(--ds-text-secondary) !important;
  font-size: .78rem !important;
  font-weight: 600 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  line-height: 1.3;
}
body.ui-2026.ui-nova #view-dashboard .dash-kpi-card .panel-body-col > div:last-child {
  order: 2;
  margin-top: 10px !important;
  padding-top: 10px;
  border-top: 1px dashed var(--ds-border);
}
body.ui-2026.ui-nova #view-dashboard .dash-kpi-card .text-xs-muted { color: var(--nv-tono); font-weight: 600; }

/* Secciones */
body.ui-2026.ui-nova #dash-main-body { padding: 8px 32px 40px !important; gap: 16px !important; }
body.ui-2026.ui-nova #view-dashboard .dash-section-label {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 18px 2px 0;
  color: var(--ds-text);
  font-family: var(--font-display);
  font-size: 1rem;
  font-weight: 800;
  letter-spacing: -.01em;
  text-transform: none;
}
body.ui-2026.ui-nova #view-dashboard .dash-section-label::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--ds-border);
}

/* Tarjetas del cuerpo */
body.ui-2026.ui-nova #view-dashboard .dash-tile > * {
  background: var(--nova-card, #fff) !important;
  border: 1px solid var(--ds-border) !important;
  border-radius: 18px !important;
  box-shadow: var(--ds-card-elev) !important;
  backdrop-filter: none;
}
body.ui-2026.ui-nova #view-dashboard .dash-tile > .inner-card > :is(.card-hdr-row, .panel-hdr-surf) {
  padding: 16px 20px !important;
  background: var(--nova-card-hdr, rgba(255,255,255,.96)) !important;
  border-bottom: 1px solid var(--ds-border) !important;
}
body.ui-2026.ui-nova #view-dashboard .dash-tile .text-sm-bold {
  font-family: var(--font-display);
  font-size: .92rem;
  font-weight: 750;
  color: var(--ds-text);
}
body.ui-2026.ui-nova #view-dashboard .dash-tile .text-sm-bold .ti { color: var(--ds-accent); }
body.ui-2026.ui-nova #view-dashboard .widget-row { gap: 12px; border-bottom: 1px solid #F0F1F6 !important; }
body.ui-2026.ui-nova #view-dashboard .hover-row:hover { background: #F8F7FF !important; }
body.ui-2026.ui-nova #view-dashboard .widget-row .text-trunc { color: var(--ds-text); font-weight: 650; font-size: .8rem; }
body.ui-2026.ui-nova #view-dashboard .widget-row .field-meta { color: var(--ds-muted); }

/* Avatar de iniciales (el punto de color queda como marca sobre él). */
body.ui-2026.ui-nova #view-dashboard .dash-av {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--ds-accent-soft);
  color: var(--ds-accent);
  font-size: .7rem;
  font-weight: 800;
  letter-spacing: .02em;
}
body.ui-2026.ui-nova #view-dashboard .widget-row > :is(.dot-8, .dot-warn) {
  order: 0;
  margin-right: -20px;
  margin-top: 24px;
  position: relative;
  z-index: 1;
  border: 2px solid #fff;
  width: 10px; height: 10px;
}
body.ui-2026.ui-nova #view-dashboard .widget-row > .dash-av { order: -1; }
body.ui-2026.ui-nova #view-dashboard .widget-row > :is(.dot-8, .dot-warn) { order: -1; }
body.ui-2026.ui-nova #view-dashboard .widget-row > .dash-av + * { order: 0; }
body.ui-2026.ui-nova #view-dashboard .widget-row > button {
  border-radius: 9px !important;
  padding: 7px 14px !important;
  font-size: .7rem !important;
}
body.ui-2026.ui-nova #view-dashboard .widget-row > button[style*="var(--ds-accent)"] {
  background: var(--ds-grad-1) !important;
  box-shadow: 0 4px 12px rgba(var(--nova-a-rgb, 91,75,245),.25);
}

/* Acciones rápidas: mosaico de 2 columnas */
body.ui-2026.ui-nova #view-dashboard .dash-acc-list {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-content: start;
  gap: 10px;
  padding-bottom: 14px;
}
body.ui-2026.ui-nova #view-dashboard .dash-acc-list > .panel-hdr-surf { grid-column: 1 / -1; }
body.ui-2026.ui-nova #view-dashboard .dash-acc {
  flex-direction: column;
  align-items: flex-start !important;
  gap: 10px !important;
  width: auto !important;
  margin: 0 0 0 14px;
  padding: 14px !important;
  border: 1px solid var(--ds-border) !important;
  border-radius: 14px;
  background: var(--nova-card, #fff) !important;
  transition: border-color .15s, box-shadow .15s, transform .15s;
}
body.ui-2026.ui-nova #view-dashboard .dash-acc:nth-of-type(even) { margin: 0 14px 0 0; }
body.ui-2026.ui-nova #view-dashboard .dash-acc:hover {
  transform: translateY(-1px);
  border-color: color-mix(in srgb, var(--nv-tono) 35%, var(--ds-border)) !important;
  box-shadow: var(--ds-card-elev);
  background: var(--nova-card, #fff) !important;
}
body.ui-2026.ui-nova #view-dashboard .dash-acc > span:last-child { display: none; }
body.ui-2026.ui-nova #view-dashboard .dash-acc .dash-acc-ic {
  width: 36px !important;
  height: 36px !important;
  border-radius: 11px !important;
  background: var(--nv-tono-soft) !important;
  color: var(--nv-tono);
}
body.ui-2026.ui-nova #view-dashboard .dash-acc .dash-acc-ic .ti { font-size: 19px; }
body.ui-2026.ui-nova #view-dashboard .dash-acc .flex-1 > div:first-child { font-size: .8rem !important; font-weight: 700 !important; }

@media (max-width: 900px) {
  body.ui-2026.ui-nova #view-dashboard .ui26-dashboard-header { margin: 16px 16px 0; padding: 22px 20px !important; }
  body.ui-2026.ui-nova #dash-kpi-row { padding: 14px 16px 0 !important; }
  body.ui-2026.ui-nova #dash-main-body { padding: 8px 16px 32px !important; }
}

/* ── Módulos con plantilla hv2 (Ficha, Funcionarios, Contratos, Permisos)
   La plantilla original es una banda OSCURA con texto claro (styles.css,
   y redesign-2026.css para Funcionarios). En Nova la banda es blanca: se
   redefine cada texto de la banda para fondo claro. */
/* Pestañas de la banda: subrayado, no segmento (van pegadas al borde). */
/* Iniciales sobre colores claros (verde agua, ámbar): texto oscuro. */

/* ── Restos de la capa oscura de redesign-2026.css ─────────────────────
   Reglas de body.ui-2026 sin tema que fijan colores para fondo oscuro. */
body.ui-2026.ui-nova .ui26-page-tools > div:first-child span:last-child { color: var(--ds-text) !important; }
body.ui-2026.ui-nova .ui26-page-tools > div:first-child { color: var(--ds-muted) !important; }
body.ui-2026.ui-nova .ui26-page-actions button:hover { background: var(--nova-card, #fff) !important; color: var(--ds-text) !important; border-color: var(--ds-border-strong) !important; }
body.ui-2026.ui-nova :is(.ui26-directory-tools > div:first-child, .ui26-directory-tools select, .ui26-directory-tools button) {
  background: var(--nova-card, #fff) !important; border-color: var(--ds-border) !important; color: var(--ds-text-secondary) !important;
}
body.ui-2026.ui-nova .ui26-directory-tools input { color: var(--ds-text) !important; }
body.ui-2026.ui-nova #view-dashboard .card-hdr-row { border-color: var(--ds-border); }
body.ui-2026.ui-nova #view-dashboard .hover-row { border-color: #EEEFF5; }
body.ui-2026.ui-nova #view-dashboard .hover-row:hover { background: #F8F7FF; }
body.ui-2026.ui-nova #view-dashboard .dash-kpi-card .flex-between-14 > div:last-child { background: var(--ds-surface) !important; }
body.ui-2026.ui-nova .ui26-workflow-search .search-field { background: var(--nova-card, #fff); }
body.ui-2026.ui-nova :is(.ui26-sgi-filters > div, .ui26-sgi-filters input, .ui26-sgi-filters select) {
  background-color: var(--nova-card, #fff) !important; border-color: var(--ds-border) !important; color: var(--ds-text) !important;
}
body.ui-2026.ui-nova .ui26-sgi-table thead { background: #FAFAFD; }
body.ui-2026.ui-nova .ui26-sgi-table th { border-color: var(--ds-border) !important; }
body.ui-2026.ui-nova .ui26-sgi-table td { border-color: #EEEFF5 !important; }
body.ui-2026.ui-nova .ui26-sgi-table tbody tr:hover { background: #F8F7FF; }
body.ui-2026.ui-nova .ui26-sgi-actions button:hover { background: var(--ds-surface) !important; color: var(--ds-text) !important; }
body.ui-2026.ui-nova .ui26-sgi-actions button:first-child:hover { background: var(--ds-grad-1) !important; color: #fff !important; }
body.ui-2026.ui-nova #aprob-tabla :is(thead tr, td) { border-color: #EEEFF5 !important; }
/* Cabeceras de modales: eran #0d1017 fijo. Vuelven al degradado de
   acento original (su contenido ya está escrito en blanco). */
body.ui-2026.ui-nova :where(.modal-nf-head, .modal-anx-head, .ndoc-head, .iw-head) {
  background: var(--ds-grad-1) !important;
  color: #fff;
}

/* ── Solicitudes y aprobación ──────────────────────────────────────── */
body.ui-2026.ui-nova #view-dashboard .dash-kpi-card,
body.ui-2026.ui-nova #view-aprobacion .grid-kpi-auto > *,
body.ui-2026.ui-nova .ui26-workflow-layout .card-xl,
body.ui-2026.ui-nova #aprob-panel,
body.ui-2026.ui-nova .ui26-sgi-table-shell {
  background: var(--nova-card, #fff) !important;
  border-color: var(--ds-border) !important;
  box-shadow: var(--ds-card-elev) !important;
}

/* ── Módulo: Repositorio ───────────────────────────────────────────── */
body.ui-2026.ui-nova #view-repositorio .btn-accordion {
  border: 1px solid var(--ds-border);
  border-radius: 10px;
  background: var(--nova-card, #fff);
  color: var(--ds-text);
}
body.ui-2026.ui-nova #view-repositorio .btn-accordion:hover { background: var(--ds-surface); border-color: var(--ds-border-strong); }

/* ── Módulo: Funcionarios y ficha del funcionario (fase 3) ────────────
   Encabezado tipo perfil: portada de color con el avatar montado encima,
   métricas en tarjetas pequeñas, filtros como pastillas y tarjetas de
   datos con títulos legibles (no en mayúsculas). */

/* Métricas en tarjetas */
/* Contrato vigente: el color "normal" venía fijo para fondo oscuro. */

/* Ficha: acciones a la derecha y métricas en una fila propia, con las
   pestañas debajo (compartían fila y las métricas se partían en dos). */

/* Botón ámbar (Gestionar egreso) */

/* Directorio: filtros Red / Marco como pastillas (no pestañas). */

/* Directorio: tabla */

/* Ficha: tarjetas de datos */

/* Insignias de la plantilla hv2 en la paleta Nova */

/* Ficha: columna lateral (alertas, actividad) */

/* ── Módulo: Contratos (fase 4) ────────────────────────────────────
   Reutiliza el encabezado de perfil de la fase 3 (ver selectores con
   #view-contratos arriba). Aquí: tarjetas de resumen, tabla y panel de
   detalle. */
body.ui-2026.ui-nova #view-contratos .ctr-widget { padding: 18px 20px !important; border-radius: 18px !important; }
body.ui-2026.ui-nova #view-contratos .ctr-w-title {
  color: var(--ds-text) !important;
  font-family: var(--font-display);
  font-size: 14.5px !important;
  font-weight: 800 !important;
  letter-spacing: -.01em !important;
  text-transform: none !important;
}
body.ui-2026.ui-nova #view-contratos :is(.ctr-legend-lbl, .ctr-asub) { color: var(--ds-text-secondary); }
body.ui-2026.ui-nova #view-contratos .ctr-legend-val { color: var(--ds-text); font-weight: 750; }
body.ui-2026.ui-nova #view-contratos .ctr-legend-pct { color: var(--ds-muted); }
body.ui-2026.ui-nova #view-contratos .ctr-arow { border-radius: 12px; padding: 8px 10px; margin: 0 -10px; }
body.ui-2026.ui-nova #view-contratos .ctr-arow-link:hover { background: var(--ds-surface); }
body.ui-2026.ui-nova #view-contratos .ctr-atxt { color: var(--ds-text); }

/* Filtros en pastillas */
body.ui-2026.ui-nova :is(#view-contratos, #view-permisos) .ds-chip:not(.warn):not(.danger):not(.active) {
  border-radius: 999px !important;
  border: 1px solid var(--ds-border);
  background: var(--nova-card, #fff);
  color: var(--ds-text-secondary);
  font-weight: 600;
}
body.ui-2026.ui-nova :is(#view-contratos, #view-permisos) .ds-chip:not(.warn):not(.danger):not(.active):hover { border-color: var(--ds-border-strong); color: var(--ds-text); }
body.ui-2026.ui-nova :is(#view-contratos, #view-permisos) .ds-chip.active {
  border-radius: 999px !important;
  font-weight: 650;
  border-color: var(--ds-accent-border);
  background: var(--ds-accent-soft);
  color: var(--ds-accent);
}

/* Tabla */
body.ui-2026.ui-nova #view-contratos .ds-emp-name {
  color: var(--ds-text);
  font-size: 12.5px;
  font-weight: 700;
  line-height: 1.3;
}
body.ui-2026.ui-nova #view-contratos .ds-emp-rut {
  margin-top: 2px;
  color: var(--ds-muted);
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px;
}
body.ui-2026.ui-nova #view-contratos .ds-table tbody tr { cursor: pointer; }
body.ui-2026.ui-nova #view-contratos .ds-table tbody tr.selected {
  background: var(--ds-accent-soft) !important;
  box-shadow: inset 3px 0 0 var(--ds-accent);
}
body.ui-2026.ui-nova #view-contratos .ds-inst-chip {
  padding: 3px 9px;
  border: 1px solid var(--ds-border);
  border-radius: 8px;
  background: var(--ds-surface);
  color: var(--ds-text-secondary);
  font-weight: 650;
}
body.ui-2026.ui-nova #view-contratos :is(.ds-badge, .ds-pill) { padding: 3px 10px; font-size: 11px; }

/* Panel de detalle */
body.ui-2026.ui-nova #view-contratos :is(#ctr-detail-empty, #ctr-detail-content) {
  border: 1px solid var(--ds-border) !important;
  border-radius: 18px !important;
  background: var(--nova-card, #fff) !important;
  box-shadow: var(--ds-card-elev);
  overflow: hidden;
}
body.ui-2026.ui-nova #view-contratos #ctr-detail-content > div:first-child {
  background:
    radial-gradient(240px 120px at 100% 0%, rgba(var(--nova-agua-rgb, 45,181,232),.18), transparent 70%),
    linear-gradient(115deg, var(--nova-agua-1, #E4F7F1) 0%, var(--nova-agua-2, #E6F2FB) 100%) !important;
  border-bottom: 1px solid var(--ds-border) !important;
}

/* ── Módulo: Permisos y licencias (fase 5) ─────────────────────────
   Encabezado de perfil compartido (selectores con #view-permisos arriba)
   y filtros en pastillas (compartidos con Contratos). Aquí: aviso de
   corte, tarjeta de filtros, selector Lista/Calendario y la lista. */
body.ui-2026.ui-nova #view-permisos .perm-corte-carga {
  border: 1px solid var(--nova-agua-borde, #CDEBE4) !important;
  border-radius: 14px !important;
  background: linear-gradient(115deg, #EAF8F4 0%, #EBF4FC 100%) !important;
  color: var(--ds-text) !important;
}
body.ui-2026.ui-nova #view-permisos .perm-filter-card {
  border: 1px solid var(--ds-border) !important;
  border-radius: 18px !important;
  background: var(--nova-card, #fff) !important;
  box-shadow: var(--ds-card-elev);
}
body.ui-2026.ui-nova #view-permisos .perm-filter-label {
  color: var(--ds-text-secondary) !important;
  font-size: 11.5px !important;
  font-weight: 700 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
}
body.ui-2026.ui-nova #view-permisos .perm-search-control {
  border: 1px solid #E1E3EC !important;
  border-radius: 12px !important;
  background: var(--nova-card, #fff) !important;
}
body.ui-2026.ui-nova #view-permisos .perm-search-control:focus-within {
  border-color: #A79CFF !important;
  box-shadow: 0 0 0 3px rgba(var(--nova-a-rgb, 91,75,245),.14);
}
body.ui-2026.ui-nova #view-permisos:not(#_):not(#_) .perm-search-control input { border: 0 !important; box-shadow: none !important; background: transparent !important; }

/* Lista */
body.ui-2026.ui-nova #view-permisos .perm-person-name { color: var(--ds-text) !important; font-weight: 700; }
body.ui-2026.ui-nova #view-permisos .perm-person-meta { color: var(--ds-muted) !important; }
body.ui-2026.ui-nova #view-permisos .perm-cell-lbl { color: var(--ds-muted) !important; }
body.ui-2026.ui-nova #view-permisos .perm-origen { color: var(--ds-accent); background: var(--ds-accent-soft); }
body.ui-2026.ui-nova #view-permisos .perm-detalle > div {
  border-radius: 18px !important;
  box-shadow: var(--ds-card-elev);
}

/* ── Módulo: Firma electrónica · Bandeja de firmas (fase 6) ──────────
   El panel .fsp-* traía su propia identidad "Slate Pro" (azul marino
   #1E3A8A fijo en design-system.css). En Nova se integra al resto:
   encabezado en tarjeta con el degradado verde agua de las portadas,
   segmentos tipo píldora, grupos con punto de color, firmantes como
   avatares redondos y el detalle como tarjeta con cabecera de color. */
body.ui-2026.ui-nova #view-firma .fsp-header {
  margin: 20px 24px 0;
  padding: 18px 22px !important;
  border: 1px solid var(--nova-agua-borde, #CDEBE4);
  border-radius: 18px;
  background:
    radial-gradient(380px 160px at 100% 0%, rgba(var(--nova-agua-rgb, 45,181,232),.22), transparent 70%),
    linear-gradient(115deg, var(--nova-agua-1, #E4F7F1) 0%, var(--nova-agua-2, #E6F2FB) 60%, var(--nova-agua-3, #EEF3FF) 100%) !important;
  box-shadow: var(--ds-card-elev);
}
body.ui-2026.ui-nova #view-firma .fsp-kicker {
  color: var(--nova-agua-texto, #0E7C66) !important;
  font-weight: 750;
  letter-spacing: .08em;
}
body.ui-2026.ui-nova #view-firma .fsp-title {
  color: var(--ds-text) !important;
  font-family: var(--font-display);
  font-size: 24px !important;
  font-weight: 800 !important;
  letter-spacing: -.02em;
}
body.ui-2026.ui-nova #view-firma .fsp-seg {
  padding: 3px;
  gap: 2px;
  border: 1px solid rgba(21,22,44,.08) !important;
  border-radius: 12px !important;
  background: rgba(255,255,255,.6) !important;
}
body.ui-2026.ui-nova #view-firma .fsp-seg button {
  border: 0 !important;
  border-radius: 9px !important;
  background: transparent !important;
  color: var(--ds-text-secondary) !important;
  font-weight: 600;
}
body.ui-2026.ui-nova #view-firma .fsp-seg button:not(.active):hover { color: var(--ds-text) !important; background: rgba(255,255,255,.7) !important; }
body.ui-2026.ui-nova #view-firma .fsp-seg button.active {
  background: var(--nova-card, #fff) !important;
  color: var(--ds-accent) !important;
  box-shadow: 0 1px 2px rgba(21,22,44,.06), 0 2px 8px rgba(21,22,44,.06);
}
body.ui-2026.ui-nova #view-firma .fsp-search {
  border: 1px solid #E1E3EC !important;
  border-radius: 12px !important;
  background: var(--nova-card, #fff) !important;
}
body.ui-2026.ui-nova #view-firma .fsp-search:focus-within { border-color: #A79CFF !important; box-shadow: 0 0 0 3px rgba(var(--nova-a-rgb, 91,75,245),.14); }
body.ui-2026.ui-nova #view-firma:not(#_):not(#_) .fsp-search input { border: 0 !important; background: transparent !important; box-shadow: none !important; }
body.ui-2026.ui-nova #view-firma .fsp-btn-new {
  border: 0 !important;
  border-radius: 11px !important;
  background: var(--ds-grad-1) !important;
  color: #fff !important;
  box-shadow: 0 6px 18px rgba(var(--nova-a-rgb, 91,75,245),.28);
}

/* Lista */
body.ui-2026.ui-nova #view-firma .fsp-list-card,
body.ui-2026.ui-nova #view-firma .fsp-detail {
  border: 1px solid var(--ds-border) !important;
  border-radius: 18px !important;
  background: var(--nova-card, #fff) !important;
  box-shadow: var(--ds-card-elev) !important;
  overflow: hidden;
}
body.ui-2026.ui-nova #view-firma .fsp-colhead {
  background: #FAFAFD !important;
  border-bottom: 1px solid var(--ds-border) !important;
  color: #5E6182 !important;
}
body.ui-2026.ui-nova #view-firma .fsp-group-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 10px 12px 4px;
  padding: 7px 12px !important;
  border: 0 !important;
  border-radius: 10px;
  font-size: 11.5px !important;
  font-weight: 700 !important;
  letter-spacing: .02em !important;
  text-transform: none !important;
}
body.ui-2026.ui-nova #view-firma .fsp-group-head.pend    { background: var(--ds-warn-soft) !important; color: var(--ds-warn) !important; }
body.ui-2026.ui-nova #view-firma .fsp-group-head.enfirma { background: var(--ds-info-soft) !important; color: var(--ds-info) !important; }
body.ui-2026.ui-nova #view-firma .fsp-group-head.firm    { background: var(--ds-ok-soft) !important; color: var(--ds-ok) !important; }
body.ui-2026.ui-nova #view-firma .fsp-group-head.anulado { background: var(--ds-err-soft) !important; color: var(--ds-err) !important; }
body.ui-2026.ui-nova #view-firma .fsp-row {
  border-bottom: 1px solid #F0F1F6 !important;
  border-left: 3px solid transparent !important;
}
body.ui-2026.ui-nova #view-firma .fsp-row:hover { background: #F8F7FF !important; }
body.ui-2026.ui-nova #view-firma .fsp-row.selected {
  background: var(--ds-accent-soft) !important;
  border-left-color: var(--ds-accent) !important;
}
body.ui-2026.ui-nova #view-firma .fsp-row:focus-visible { outline: 2px solid var(--ds-accent) !important; }
body.ui-2026.ui-nova #view-firma .fsp-folio {
  color: var(--ds-accent) !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-weight: 700;
}
body.ui-2026.ui-nova #view-firma .fsp-doc-name { color: var(--ds-text) !important; font-weight: 700; }
body.ui-2026.ui-nova #view-firma .fsp-doc-sub,
body.ui-2026.ui-nova #view-firma .fsp-av-count { color: var(--ds-muted) !important; }
body.ui-2026.ui-nova #view-firma .fsp-met { color: var(--ds-text-secondary) !important; }
body.ui-2026.ui-nova #view-firma .fsp-avs { gap: 0; }
body.ui-2026.ui-nova #view-firma .fsp-av {
  width: 26px !important;
  height: 26px !important;
  margin-left: -6px;
  border: 2px solid #fff !important;
  border-radius: 50% !important;
  font-size: 9.5px !important;
  font-weight: 800 !important;
}
body.ui-2026.ui-nova #view-firma .fsp-av:first-child { margin-left: 0; }
body.ui-2026.ui-nova #view-firma .fsp-av.signed  { background: #12A06E !important; color: #fff !important; }
body.ui-2026.ui-nova #view-firma .fsp-av.idle    { background: var(--ds-accent-soft) !important; color: var(--ds-accent) !important; }
body.ui-2026.ui-nova #view-firma .fsp-av.pending { background: var(--nova-card, #fff) !important; color: var(--ds-accent) !important; outline: 1.5px dashed var(--ds-accent); outline-offset: -3px; }
body.ui-2026.ui-nova #view-firma .fsp-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 0 !important;
  border-radius: 999px !important;
  font-weight: 650 !important;
}
body.ui-2026.ui-nova #view-firma .fsp-chip::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
body.ui-2026.ui-nova #view-firma .fsp-chip.pend    { color: var(--ds-warn) !important; background: var(--ds-warn-soft) !important; }
body.ui-2026.ui-nova #view-firma .fsp-chip.enfirma { color: var(--ds-info) !important; background: var(--ds-info-soft) !important; }
body.ui-2026.ui-nova #view-firma .fsp-chip.firm    { color: var(--ds-ok) !important; background: var(--ds-ok-soft) !important; }
body.ui-2026.ui-nova #view-firma .fsp-chip.anulado { color: var(--ds-err) !important; background: var(--ds-err-soft) !important; }

/* Detalle */
body.ui-2026.ui-nova #view-firma .fsp-det-head {
  background:
    radial-gradient(260px 120px at 100% 0%, rgba(var(--nova-agua-rgb, 45,181,232),.18), transparent 70%),
    linear-gradient(115deg, var(--nova-agua-1, #E4F7F1) 0%, var(--nova-agua-2, #E6F2FB) 100%) !important;
  border-bottom: 1px solid var(--ds-border) !important;
}
body.ui-2026.ui-nova #view-firma .fsp-det-title { color: var(--ds-text) !important; font-family: var(--font-display); font-size: 16px !important; font-weight: 800 !important; }
body.ui-2026.ui-nova #view-firma .fsp-det-meta { color: var(--ds-muted) !important; }
body.ui-2026.ui-nova #view-firma .fsp-label,
body.ui-2026.ui-nova #view-firma .firma-det-card-head {
  color: var(--ds-text) !important;
  font-family: var(--font-display);
  font-size: 13.5px !important;
  font-weight: 800 !important;
  letter-spacing: -.01em !important;
  text-transform: none !important;
}
body.ui-2026.ui-nova #view-firma .firma-det-card { border: 1px solid var(--ds-border) !important; border-radius: 14px !important; box-shadow: none !important; }
body.ui-2026.ui-nova #view-firma .fsp-tl-dot.done { background: #12A06E !important; box-shadow: 0 0 0 3px rgba(18,160,110,.15); }
body.ui-2026.ui-nova #view-firma .fsp-tl-dot.todo { border-color: var(--ds-border-strong) !important; }
body.ui-2026.ui-nova #view-firma .fsp-tl-body.done { border-left-color: #A6E3CB !important; }
body.ui-2026.ui-nova #view-firma .firma-resumen-field {
  background: var(--ds-page-bg) !important;
  border: 1px solid var(--ds-border) !important;
  border-radius: 12px !important;
}
body.ui-2026.ui-nova #view-firma .firma-resumen-label { color: var(--ds-muted) !important; text-transform: none !important; letter-spacing: .01em !important; font-size: .66rem !important; }
body.ui-2026.ui-nova #view-firma .fsp-btn { border-radius: 11px !important; font-weight: 650; }
body.ui-2026.ui-nova #view-firma .fsp-btn:not(.danger):not(.primary) { background: var(--nova-card, #fff) !important; border-color: var(--ds-border) !important; color: var(--ds-text) !important; }
body.ui-2026.ui-nova #view-firma .fsp-btn.primary { background: var(--ds-grad-1) !important; border-color: transparent !important; color: #fff !important; }
body.ui-2026.ui-nova #view-firma .fsp-btn.danger { color: var(--ds-err) !important; background: var(--ds-err-soft) !important; border-color: rgba(201,42,65,.2) !important; }

/* Estado vacío del detalle */
body.ui-2026.ui-nova #view-firma .fsp-empty-icon-box { border-radius: 18px !important; background: var(--nova-card, #fff) !important; box-shadow: var(--ds-card-elev-hi) !important; color: var(--ds-accent); }
body.ui-2026.ui-nova #view-firma .fsp-empty-badge { color: var(--nova-agua-texto, #0E7C66) !important; background: var(--nova-agua-1, #E4F7F1) !important; border-color: var(--nova-agua-borde, #CDEBE4) !important; }
body.ui-2026.ui-nova #view-firma .fsp-empty-title { color: var(--ds-text) !important; font-family: var(--font-display); font-weight: 800 !important; }
body.ui-2026.ui-nova #view-firma .fsp-empty-feat-pill { border-radius: 12px !important; background: var(--ds-page-bg) !important; border-color: var(--ds-border) !important; color: var(--ds-text-secondary) !important; }
body.ui-2026.ui-nova #view-firma .firma-det-card-head { justify-content: flex-start !important; gap: 8px; }

/* ── Módulo: Solicitudes de contrato (fase 7) ────────────────────────
   El encabezado no tiene contenedor (eyebrow, título, bajada y acciones
   son hijos directos de la vista). Para formar una sola tarjeta sin
   tocar el HTML, los cuatro llevan el mismo degradado HORIZONTAL (así
   los cortes entre ellos no se notan) y se redondean arriba y abajo. */
body.ui-2026.ui-nova #view-aprobacion :is(.sc-eyebrow, .sc-h1, .sc-sub, .sc-actions) {
  box-sizing: border-box;
  width: auto !important;
  max-width: none !important;
  margin: 0 !important;
  padding-left: 28px !important;
  padding-right: 28px !important;
  background: linear-gradient(90deg, var(--nova-agua-1, #E4F7F1) 0%, var(--nova-agua-2, #E6F2FB) 60%, var(--nova-agua-3, #EEF3FF) 100%);
  border-left: 1px solid var(--nova-agua-borde, #CDEBE4);
  border-right: 1px solid var(--nova-agua-borde, #CDEBE4);
}
body.ui-2026.ui-nova #view-aprobacion .sc-eyebrow {
  padding-top: 24px !important;
  border-top: 1px solid var(--nova-agua-borde, #CDEBE4);
  border-radius: 20px 20px 0 0;
  color: var(--nova-agua-texto, #0E7C66) !important;
  font-weight: 750;
  letter-spacing: .08em;
}
body.ui-2026.ui-nova #view-aprobacion .sc-h1 {
  padding-top: 6px !important;
  color: var(--ds-text) !important;
  font-family: var(--font-display) !important;
  font-size: clamp(1.7rem, 2.2vw, 2.2rem) !important;
  font-weight: 800 !important;
  letter-spacing: -.025em;
}
body.ui-2026.ui-nova #view-aprobacion .sc-sub { padding-top: 4px !important; color: var(--ds-text-secondary) !important; }
body.ui-2026.ui-nova #view-aprobacion .sc-actions {
  margin-bottom: 18px !important;
  padding-top: 18px !important;
  padding-bottom: 24px !important;
  border-bottom: 1px solid var(--nova-agua-borde, #CDEBE4);
  border-radius: 0 0 20px 20px;
  box-shadow: 0 10px 24px rgba(21,22,44,.05);
}
body.ui-2026.ui-nova #view-aprobacion .sc-actions .sc-btn {
  border: 1px solid rgba(21,22,44,.09) !important;
  border-radius: 11px !important;
  background: rgba(255,255,255,.75) !important;
  color: var(--ds-text) !important;
  font-weight: 650;
}
body.ui-2026.ui-nova #view-aprobacion .sc-actions .sc-btn:hover { background: var(--nova-card, #fff) !important; border-color: var(--ds-border-strong) !important; }
body.ui-2026.ui-nova #view-aprobacion :is(.sc-actions, .sc-panel-actions) .sc-btn.primary {
  border-color: transparent !important;
  background: var(--ds-grad-1) !important;
  color: #fff !important;
  box-shadow: 0 6px 18px rgba(var(--nova-a-rgb, 91,75,245),.26);
}

/* KPI: tarjeta con punto de color por etapa */
body.ui-2026.ui-nova #view-aprobacion .sc-kpis { gap: 14px !important; margin-bottom: 18px !important; }
body.ui-2026.ui-nova #view-aprobacion .sc-kpis > div {
  position: relative;
  padding: 18px 20px 16px 20px !important;
  border: 1px solid var(--ds-border) !important;
  border-radius: 18px !important;
  background: var(--nova-card, #fff) !important;
  box-shadow: var(--ds-card-elev) !important;
}
body.ui-2026.ui-nova #view-aprobacion .sc-kpis > div::before {
  content: "";
  position: absolute;
  top: 18px; right: 18px;
  width: 10px; height: 10px;
  border-radius: 50%;
  background: var(--ds-accent);
  box-shadow: 0 0 0 4px var(--ds-accent-soft);
}
body.ui-2026.ui-nova #view-aprobacion .sc-kpis > div:nth-child(2)::before { background: #1F6FD1; box-shadow: 0 0 0 4px #E4F0FF; }
body.ui-2026.ui-nova #view-aprobacion .sc-kpis > div:nth-child(3)::before { background: #12A06E; box-shadow: 0 0 0 4px #E2F5EC; }
body.ui-2026.ui-nova #view-aprobacion .sc-kpis > div:nth-child(4)::before { background: var(--ds-err); box-shadow: 0 0 0 4px var(--ds-err-soft); }
body.ui-2026.ui-nova #view-aprobacion .sc-kpi-val { font-family: var(--font-display) !important; font-weight: 800 !important; font-size: 32px !important; letter-spacing: -.03em; }
body.ui-2026.ui-nova #view-aprobacion .sc-kpi-label {
  color: var(--ds-text-secondary) !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
}

/* Filtros */
body.ui-2026.ui-nova #view-aprobacion .sc-filters {
  padding: 10px !important;
  border: 1px solid var(--ds-border) !important;
  border-radius: 16px !important;
  background: var(--nova-card, #fff) !important;
  box-shadow: var(--ds-card-elev) !important;
}
body.ui-2026.ui-nova #view-aprobacion:not(#_):not(#_) :is(.sc-search, .sc-select) {
  border: 1px solid #E1E3EC !important;
  border-radius: 11px !important;
  background-color: var(--nova-card, #fff) !important;
}

/* Tabla y panel */
body.ui-2026.ui-nova #view-aprobacion .sc-layout { gap: 16px !important; }
body.ui-2026.ui-nova #view-aprobacion .sc-table-wrap,
body.ui-2026.ui-nova #view-aprobacion .sc-panel {
  border: 1px solid var(--ds-border) !important;
  border-radius: 18px !important;
  background: var(--nova-card, #fff) !important;
  box-shadow: var(--ds-card-elev) !important;
  overflow: hidden;
}
body.ui-2026.ui-nova #view-aprobacion .sc-table th {
  padding: 12px 14px !important;
  background: #FAFAFD !important;
  color: #5E6182 !important;
  border-bottom: 1px solid var(--ds-border) !important;
}
body.ui-2026.ui-nova #view-aprobacion .sc-table td { padding: 14px !important; border-bottom-color: #F0F1F6 !important; }
body.ui-2026.ui-nova #view-aprobacion .sc-row:hover { background: #F8F7FF !important; }
body.ui-2026.ui-nova #view-aprobacion .sc-row.is-selected { background: var(--ds-accent-soft) !important; box-shadow: inset 3px 0 0 var(--ds-accent); }
body.ui-2026.ui-nova #view-aprobacion .sc-folio { color: var(--ds-accent) !important; font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 12.5px; }
body.ui-2026.ui-nova #view-aprobacion .sc-worker-name { color: var(--ds-text); font-weight: 700; }
body.ui-2026.ui-nova #view-aprobacion .sc-sla {
  display: inline-flex; align-items: center; gap: 5px;
  margin-top: 4px; padding: 2px 8px;
  border-radius: 999px;
  background: var(--ds-err-soft);
  color: var(--ds-err) !important;
}
body.ui-2026.ui-nova #view-aprobacion .sc-tag {
  border: 0 !important;
  border-radius: 999px !important;
  background: var(--ds-surface) !important;
  color: var(--ds-text-secondary) !important;
  font-weight: 650;
}
body.ui-2026.ui-nova #view-aprobacion .sc-panel { padding: 0 !important; }
body.ui-2026.ui-nova #view-aprobacion .sc-panel > * { padding-left: 20px; padding-right: 20px; }
body.ui-2026.ui-nova #view-aprobacion .sc-panel-eyebrow {
  margin: 0 -20px;
  padding: 14px 20px !important;
  background: linear-gradient(90deg, var(--nova-agua-1, #E4F7F1) 0%, var(--nova-agua-2, #E6F2FB) 100%);
  border-bottom: 1px solid var(--ds-border);
  color: var(--nova-agua-texto, #0E7C66) !important;
  font-weight: 750;
}
body.ui-2026.ui-nova #view-aprobacion .sc-panel-title { font-family: var(--font-display) !important; font-weight: 800 !important; color: var(--ds-text); }

/* ── Módulo: Cotejo diario y Presencia por centro (fase 8) ──────────── */
body.ui-2026.ui-nova #view-cotejo .ds-page-header {
  padding: 22px 26px !important;
  border: 1px solid var(--nova-agua-borde, #CDEBE4);
  border-radius: 20px;
  background:
    radial-gradient(380px 160px at 100% 0%, rgba(var(--nova-agua-rgb, 45,181,232),.22), transparent 70%),
    linear-gradient(115deg, var(--nova-agua-1, #E4F7F1) 0%, var(--nova-agua-2, #E6F2FB) 60%, var(--nova-agua-3, #EEF3FF) 100%) !important;
  box-shadow: var(--ds-card-elev);
}
body.ui-2026.ui-nova #view-cotejo .ds-page-header .ds-eyebrow { color: var(--nova-agua-texto, #0E7C66) !important; }
body.ui-2026.ui-nova #view-cotejo .ds-page-header .ds-sub { color: var(--ds-text-secondary) !important; }
body.ui-2026.ui-nova #view-cotejo .cd-header-actions .ds-btn { background: rgba(255,255,255,.8); border-color: rgba(21,22,44,.09); }

/* Estado de la revisión y avisos */
body.ui-2026.ui-nova #view-cotejo :is(.cd-cobertura, .cd-seguimiento) {
  position: relative;
  padding-left: 36px !important;
  border-radius: 14px !important;
  background: var(--nova-card, #fff) !important;
  box-shadow: var(--ds-card-elev);
}
body.ui-2026.ui-nova #view-cotejo :is(.cd-cobertura, .cd-seguimiento)::before {
  content: "";
  position: absolute;
  left: 16px; top: 21px;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: #12A06E;
  box-shadow: 0 0 0 4px #E2F5EC;
}
body.ui-2026.ui-nova #view-cotejo .cd-aviso {
  border: 1px solid #F3D9A8 !important;
  border-left: 4px solid #E3A13B !important;
  border-radius: 14px !important;
  background: #FFF8EA !important;
}
body.ui-2026.ui-nova #view-cotejo .cd-carga { border-radius: 18px !important; box-shadow: var(--ds-card-elev); }

/* Pestañas */
body.ui-2026.ui-nova #view-cotejo .cd-pestanas { gap: 6px; border-bottom-color: var(--ds-border); }
body.ui-2026.ui-nova #view-cotejo .cd-pestanas button { color: var(--ds-text-secondary); border-radius: 10px 10px 0 0; }
body.ui-2026.ui-nova #view-cotejo .cd-pestanas button:hover { color: var(--ds-text); background: rgba(var(--nova-a-rgb, 91,75,245),.05); }
body.ui-2026.ui-nova #view-cotejo .cd-pestanas button[aria-selected="true"] {
  color: var(--ds-accent);
  border-bottom: 2px solid var(--ds-accent);
  background: transparent;
}

/* Filtros */
body.ui-2026.ui-nova #view-cotejo label { color: var(--ds-text-secondary); font-size: .75rem; }
body.ui-2026.ui-nova #view-cotejo:not(#_):not(#_) :is(input:not([type="checkbox"]), select) {
  border: 1px solid #E1E3EC !important;
  border-radius: 11px !important;
  background-color: var(--nova-card, #fff) !important;
}

/* KPI */
body.ui-2026.ui-nova #view-cotejo .cd-kpi {
  position: relative;
  padding: 18px 20px !important;
  border-radius: 18px !important;
  background: var(--nova-card, #fff) !important;
  box-shadow: var(--ds-card-elev);
}
body.ui-2026.ui-nova #view-cotejo .cd-kpi::after {
  content: "";
  position: absolute;
  top: 18px; right: 18px;
  width: 10px; height: 10px;
  border-radius: 50%;
  background: var(--ds-accent);
  box-shadow: 0 0 0 4px var(--ds-accent-soft);
}
body.ui-2026.ui-nova #view-cotejo .cd-kpis > :nth-child(2)::after { background: #1F6FD1; box-shadow: 0 0 0 4px #E4F0FF; }
body.ui-2026.ui-nova #view-cotejo .cd-kpis > :nth-child(3)::after { background: #12A06E; box-shadow: 0 0 0 4px #E2F5EC; }
body.ui-2026.ui-nova #view-cotejo .cd-kpis > :nth-child(4)::after { background: #E3A13B; box-shadow: 0 0 0 4px #FFF0D9; }
body.ui-2026.ui-nova #view-cotejo .cd-kpi strong {
  font-family: var(--font-display);
  font-size: 1.9rem !important;
  font-weight: 800;
  letter-spacing: -.03em;
}
body.ui-2026.ui-nova #view-cotejo .cd-kpi span { font-weight: 600; }

/* Tabla del cotejo */
body.ui-2026.ui-nova #view-cotejo .cd-tabla-scroll {
  border-radius: 18px !important;
  box-shadow: var(--ds-card-elev);
}
body.ui-2026.ui-nova #view-cotejo .cd-tabla th { background: #FAFAFD !important; }
body.ui-2026.ui-nova #view-cotejo .cd-tabla tbody tr:hover { background: #F8F7FF !important; }
body.ui-2026.ui-nova #view-cotejo .cd-resultado {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px !important;
  border-radius: 999px !important;
  color: var(--ds-warn) !important;
  font-size: .76rem;
}
body.ui-2026.ui-nova #view-cotejo .cd-resultado::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
body.ui-2026.ui-nova #view-cotejo .cd-resultado.cd-ok { color: var(--ds-ok) !important; }
body.ui-2026.ui-nova #view-cotejo .cd-ficha { color: var(--ds-accent); font-weight: 600; text-decoration: none; }
body.ui-2026.ui-nova #view-cotejo .cd-ficha:hover { text-decoration: underline; }
body.ui-2026.ui-nova #view-cotejo .cd-mensaje { border: 1px solid var(--ds-border); border-radius: 18px !important; box-shadow: var(--ds-card-elev); }

/* Presencia: controles */
body.ui-2026.ui-nova #view-cotejo :is(.pc-nav, .pc-modo) {
  padding: 3px;
  gap: 2px;
  border: 1px solid var(--ds-border) !important;
  border-radius: 12px !important;
  background: #EEEFF5 !important;
}
body.ui-2026.ui-nova #view-cotejo :is(.pc-nav, .pc-modo) button {
  border-radius: 9px !important;
  background: transparent !important;
  color: var(--ds-text-secondary) !important;
}
body.ui-2026.ui-nova #view-cotejo :is(.pc-nav, .pc-modo) button:hover { color: var(--ds-text) !important; background: rgba(255,255,255,.7) !important; }
body.ui-2026.ui-nova #view-cotejo .pc-modo button[aria-pressed="true"] {
  background: var(--nova-card, #fff) !important;
  color: var(--ds-accent) !important;
  box-shadow: 0 1px 2px rgba(21,22,44,.06), 0 2px 8px rgba(21,22,44,.06);
}
body.ui-2026.ui-nova #view-cotejo .pc-titulo { font-family: var(--font-display); font-size: 1.1rem; font-weight: 800; }
body.ui-2026.ui-nova #view-cotejo .pc-aviso {
  border: 1px solid #F3D9A8 !important;
  border-left: 4px solid #E3A13B !important;
  border-radius: 12px !important;
  background: #FFF8EA !important;
}

/* Presencia: bloques por estado y categoría */
body.ui-2026.ui-nova #view-cotejo .pc-bloque {
  border-radius: 18px !important;
  box-shadow: var(--ds-card-elev);
}
body.ui-2026.ui-nova #view-cotejo .pc-bloque header {
  padding: 14px 18px !important;
  background: var(--nova-card, #fff) !important;
  border-bottom: 1px solid var(--ds-border);
  font-family: var(--font-display);
  font-weight: 800 !important;
}
body.ui-2026.ui-nova #view-cotejo .pc-cat {
  margin: 8px 12px 2px;
  padding: 6px 10px !important;
  border-radius: 9px;
  background: var(--ds-accent-soft);
  color: var(--ds-accent) !important;
  font-size: .7rem !important;
  letter-spacing: .03em !important;
}
body.ui-2026.ui-nova #view-cotejo .pc-cat span { color: var(--ds-accent); opacity: .75; }
body.ui-2026.ui-nova #view-cotejo .pc-fila { border-top-color: #F0F1F6 !important; padding: 9px 18px !important; }
body.ui-2026.ui-nova #view-cotejo .pc-fila:hover { background: #F8F7FF; }
body.ui-2026.ui-nova #view-cotejo .pc-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border-radius: 999px !important;
  padding: 3px 10px !important;
}
body.ui-2026.ui-nova #view-cotejo .pc-chip:not(.pc-vacio)::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
body.ui-2026.ui-nova #view-cotejo .pc-marca { border-radius: 8px !important; }

/* Presencia: vista semanal */
body.ui-2026.ui-nova #view-cotejo .pc-tabla-wrap { border-radius: 18px !important; box-shadow: var(--ds-card-elev); }
body.ui-2026.ui-nova #view-cotejo .pc-tabla thead th { background: #FAFAFD !important; }
body.ui-2026.ui-nova #view-cotejo .pc-t-cat td { background: var(--ds-accent-soft) !important; color: var(--ds-accent) !important; }
/* La línea de cobertura informa estado (a veces "pendiente"): punto azul
   neutro; el verde queda para el seguimiento ("revisión guardada"). */
body.ui-2026.ui-nova #view-cotejo .cd-cobertura::before { background: #1F6FD1; box-shadow: 0 0 0 4px #E4F0FF; }
/* Presencia: el punto de cada KPI sigue el color de su cifra. */
body.ui-2026.ui-nova #view-cotejo .cd-kpis > .pc-k-ok::after   { background: #12A06E; box-shadow: 0 0 0 4px #E2F5EC; }
body.ui-2026.ui-nova #view-cotejo .cd-kpis > .pc-k-info::after { background: #1F6FD1; box-shadow: 0 0 0 4px #E4F0FF; }
body.ui-2026.ui-nova #view-cotejo .cd-kpis > .pc-k-warn::after { background: #E3A13B; box-shadow: 0 0 0 4px #FFF0D9; }

/* ── Encabezado de página común (fase 9) ──────────────────────────────
   Todo .ds-page-header (salvo el Dashboard, que tiene su hero) se vuelve
   la tarjeta verde agua que ya usan Firma, Solicitudes y Cotejo. Así los
   módulos que aún no tienen ajustes propios quedan igual de coherentes. */
body.ui-2026.ui-nova .view:not(#view-dashboard) .ds-page-header {
  padding: 22px 26px !important;
  border: 1px solid var(--nova-agua-borde, #CDEBE4) !important;
  border-radius: 20px !important;
  background:
    radial-gradient(380px 160px at 100% 0%, rgba(var(--nova-agua-rgb, 45,181,232),.22), transparent 70%),
    linear-gradient(115deg, var(--nova-agua-1, #E4F7F1) 0%, var(--nova-agua-2, #E6F2FB) 60%, var(--nova-agua-3, #EEF3FF) 100%) !important;
  box-shadow: var(--ds-card-elev);
}
body.ui-2026.ui-nova .view:not(#view-dashboard) .ds-page-header .ds-eyebrow { color: var(--nova-agua-texto, #0E7C66) !important; }
body.ui-2026.ui-nova .view:not(#view-dashboard) .ds-page-header .ds-sub { color: var(--ds-text-secondary) !important; }
body.ui-2026.ui-nova .view:not(#view-dashboard) .ds-page-header :is(.ds-btn:not(.primary), .fil-pill, select) {
  background-color: rgba(255,255,255,.82) !important;
  border-color: rgba(21,22,44,.09) !important;
}

/* ── Módulo: Alertas legales (fase 9) ──────────────────────────────── */
/* Los códigos toman el color de su severidad con fondo al 9 %: el
   naranja y el rojo puros no llegaban a 4,5:1. Se oscurecen. */
body.ui-2026.ui-nova #view-alertas span[style*="color:#ea580c"] { color: #A8430A !important; }
body.ui-2026.ui-nova #view-alertas span[style*="color:#dc2626"] { color: #B42318 !important; }
body.ui-2026.ui-nova #view-alertas span[style*="color:#ca8a04"] { color: #8A5A00 !important; }
body.ui-2026.ui-nova #view-alertas span[style*="color:#16a34a"] { color: #0F7B53 !important; }
body.ui-2026.ui-nova #view-alertas .grid-kpi-auto > * { position: relative; }
body.ui-2026.ui-nova #view-alertas table tbody tr td:first-child { font-weight: 600; }

/* ── Módulo: Plazos legales (fase 9) ───────────────────────────────── */
body.ui-2026.ui-nova #view-plazos .plazo-grupo-tr td {
  background: var(--ds-accent-soft) !important;
  color: var(--ds-text) !important;
  font-weight: 700;
}
body.ui-2026.ui-nova #view-plazos :is(.badge-ok, .badge-warn, .badge-crit, .badge-danger) {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px 10px !important;
  border-radius: 999px !important;
  font-weight: 650;
}
body.ui-2026.ui-nova #view-plazos .ds-subtabs { background: #EEEFF5; }

/* ── Módulo: Dotación (fase 9) ─────────────────────────────────────── */
body.ui-2026.ui-nova #view-dotacion .kpi-card { padding: 18px 20px !important; border-radius: 18px !important; }
body.ui-2026.ui-nova #view-dotacion .kpi-icon {
  border-radius: 12px !important;
  background: var(--ds-accent-soft) !important;
  color: var(--ds-accent);
}
body.ui-2026.ui-nova #view-dotacion .kpi-card:nth-child(2) .kpi-icon { background: #E2F5EC !important; color: #0F7B53; }
body.ui-2026.ui-nova #view-dotacion .kpi-card:nth-child(3) .kpi-icon { background: #E4F0FF !important; color: #1F6FD1; }
body.ui-2026.ui-nova #view-dotacion .kpi-card:nth-child(4) .kpi-icon { background: #FFF0D9 !important; color: #B05E06; }
body.ui-2026.ui-nova #view-dotacion .kpi-bar-track { height: 6px; border-radius: 999px; background: #EEEFF5; }
body.ui-2026.ui-nova #view-dotacion .card-section-title {
  color: var(--ds-text) !important;
  font-family: var(--font-display);
  font-weight: 800 !important;
  text-transform: none !important;
  letter-spacing: -.01em !important;
}
body.ui-2026.ui-nova #view-dotacion div:has(> #dot-grafico) {
  border: 1px solid var(--ds-border);
  border-radius: 18px !important;
  background: var(--nova-card, #fff) !important;
  box-shadow: var(--ds-card-elev) !important;
}
body.ui-2026.ui-nova #view-dotacion .dot-bar {
  background: linear-gradient(180deg, #7B6CFA 0%, var(--nova-a1, #5B4BF5) 100%);
  border-radius: 8px 8px 3px 3px !important;
}
body.ui-2026.ui-nova #view-dotacion .dot-bar:hover { background: linear-gradient(180deg, #2DB5E8 0%, #1F8FD1 100%); }
/* La tarjeta "Procesos" era un bloque violeta oscuro con texto claro. */
body.ui-2026.ui-nova #view-dotacion .dot-procesos-card {
  background:
    radial-gradient(260px 140px at 100% 0%, rgba(var(--nova-agua-rgb, 45,181,232),.22), transparent 70%),
    linear-gradient(135deg, var(--nova-agua-1, #E4F7F1) 0%, var(--nova-agua-2, #E6F2FB) 100%) !important;
  border: 1px solid var(--nova-agua-borde, #CDEBE4) !important;
  color: var(--ds-text) !important;
}
body.ui-2026.ui-nova #view-dotacion .dot-procesos-card :is(.text-body-md, .stat-val-md) { color: var(--ds-text) !important; }

/* ── Fase 10: encabezados sin .ds-page-header ─────────────────────────
   Sumarios, Concursos, Documentos emitidos y Motor Legal arman su
   encabezado a mano; llevan la clase .nova-hdr para recibir la misma
   tarjeta verde agua que el resto. */
body.ui-2026.ui-nova .view .nova-hdr {
  height: auto !important;
  min-height: 0 !important;
  margin: 20px 24px 16px !important;
  padding: 22px 26px !important;
  border: 1px solid var(--nova-agua-borde, #CDEBE4) !important;
  border-radius: 20px !important;
  background:
    radial-gradient(380px 160px at 100% 0%, rgba(var(--nova-agua-rgb, 45,181,232),.22), transparent 70%),
    linear-gradient(115deg, var(--nova-agua-1, #E4F7F1) 0%, var(--nova-agua-2, #E6F2FB) 60%, var(--nova-agua-3, #EEF3FF) 100%) !important;
  box-shadow: var(--ds-card-elev);
}
/* Sumarios ya trae su propio relleno lateral: sin margen extra. */
body.ui-2026.ui-nova #view-sumarios .nova-hdr { margin: 0 0 20px !important; }
body.ui-2026.ui-nova .view .nova-hdr :is(h1, h2, .view-title) {
  color: var(--ds-text) !important;
  font-family: var(--font-display) !important;
  font-size: clamp(1.5rem, 2vw, 1.95rem) !important;
  font-weight: 800 !important;
  letter-spacing: -.025em;
}
body.ui-2026.ui-nova .view .nova-hdr .ds-eyebrow { color: var(--nova-agua-texto, #0E7C66) !important; }
body.ui-2026.ui-nova .view .nova-hdr :is(.ds-sub, p, .view-subtitle) { color: var(--ds-text-secondary) !important; }
body.ui-2026.ui-nova .view .nova-hdr button:not(.primary):not([style*="background"]) {
  background-color: rgba(255,255,255,.82) !important;
  border-color: rgba(21,22,44,.09) !important;
}

/* ── Fase 10: ajustes por módulo ──────────────────────────────────── */
/* Motor Legal: tarjetas de ley y artículos */
body.ui-2026.ui-nova #view-legal .legal-card.active {
  border-color: var(--ds-accent-border) !important;
  box-shadow: 0 0 0 3px var(--ds-accent-soft), var(--ds-card-elev) !important;
}
body.ui-2026.ui-nova #view-legal .legal-card h3 { font-family: var(--font-display); font-weight: 800; color: var(--ds-text); }
body.ui-2026.ui-nova #view-legal .legal-art-head-label { color: var(--ds-text) !important; font-family: var(--font-display); font-weight: 800; text-transform: none !important; letter-spacing: -.01em !important; }

/* Documentos emitidos y Sumarios: KPI en tarjeta con punto de color */
body.ui-2026.ui-nova :is(#view-emitidos, #view-sumarios) .grid-kpi-auto > * { border-radius: 18px !important; }

/* Repositorio: panel lateral de resumen */
body.ui-2026.ui-nova #view-repositorio .repo-kpi-card { border-radius: 16px !important; }

/* Auditoría: códigos de acción como pastillas */
body.ui-2026.ui-nova #view-auditlog table td code,
body.ui-2026.ui-nova #view-auditlog table td [style*="font-family:'JetBrains Mono'"] { border-radius: 8px; }
