/* ======================================================================
   Theme Base — Dashboard Alleato
   Reglas estructurales compartidas por los temas curados.
   Los tokens definidos aquí son los de Linear (tema por defecto).
   Otros temas (stripe, terminal, editorial) los sobrescriben en sus
   propios archivos mediante :root[data-theme="<nombre>"].
   ====================================================================== */

/* Design tokens — defaults Linear, aplicados a TODOS los temas curados */
:root[data-theme-curated] {
  /* Color */
  --ln-bg:            oklch(0.99 0.002 260);
  --ln-surface:       oklch(1 0 0);
  --ln-surface-2:     oklch(0.985 0.003 260);
  --ln-surface-3:     oklch(0.965 0.004 260);

  --ln-fg:            oklch(0.22 0.015 260);
  --ln-fg-muted:      oklch(0.5 0.01 260);
  --ln-fg-subtle:     oklch(0.65 0.008 260);
  --ln-fg-faint:      oklch(0.78 0.005 260);

  --ln-border:        oklch(0.92 0.005 260);
  --ln-border-strong: oklch(0.86 0.006 260);

  --ln-accent:        oklch(0.55 0.18 260);
  --ln-accent-hover:  oklch(0.48 0.2 260);
  --ln-accent-fg:     oklch(1 0 0);   /* [V9.3] tinta sobre el acento; Terminal la sobreescribe */
  --ln-accent-soft:   oklch(0.96 0.028 260);
  --ln-accent-bg:     oklch(0.92 0.04 260);

  --ln-positive:      oklch(0.52 0.14 150);
  --ln-positive-soft: oklch(0.96 0.025 150);
  --ln-negative:      oklch(0.57 0.2 25);
  --ln-negative-soft: oklch(0.97 0.025 25);
  --ln-warning:       oklch(0.7 0.15 75);
  --ln-warning-soft:  oklch(0.97 0.04 75);

  /* Spacing (4pt) */
  --ln-space-1:  4px;
  --ln-space-2:  8px;
  --ln-space-3:  12px;
  --ln-space-4:  16px;
  --ln-space-5:  20px;
  --ln-space-6:  24px;
  --ln-space-8:  32px;
  --ln-space-12: 48px;
  --ln-space-16: 64px;

  /* Radius */
  --ln-radius-sm:  4px;
  --ln-radius-md:  6px;
  --ln-radius-lg:  8px;
  --ln-radius-xl:  12px;
  --ln-radius-2xl: 16px;

  /* Type */
  --ln-font-sans:    "Geist", "Inter", "Segoe UI", system-ui, sans-serif;
  --ln-font-display: var(--ln-font-sans);
  --ln-font-mono:    "Geist Mono", "JetBrains Mono", ui-monospace, monospace;

  /* Hover / Overlay — theme-aware (los temas oscuros los redefinen) */
  --ln-hover-bg:      oklch(0.93 0.012 260);
  --ln-hover-fg:      var(--ln-fg);
  --ln-menu-hover-bg: var(--ln-fg);
  --ln-menu-hover-fg: oklch(1 0 0);
  --ln-overlay-bg:    oklch(0.99 0.002 260 / 0.72);
  --ln-drawer-backdrop: oklch(0.22 0.02 260 / 0.2);

  /* Shadow */
  --ln-shadow-hover:    0 1px 2px oklch(0.22 0.02 260 / 0.05), 0 4px 12px oklch(0.22 0.02 260 / 0.04);
  --ln-shadow-drawer:   -8px 0 32px oklch(0.22 0.02 260 / 0.1);
  --ln-shadow-dropdown: 0 0 0 1px oklch(0.22 0.02 260 / 0.06), 0 8px 24px oklch(0.22 0.02 260 / 0.1);
  --ln-shadow-toast:    0 0 0 1px oklch(0.22 0.02 260 / 0.08), 0 12px 32px oklch(0.22 0.02 260 / 0.16);

  /* Motion — ease-out-quart */
  --ln-ease:     cubic-bezier(0.16, 1, 0.3, 1);
  --ln-dur-fast: 120ms;
  --ln-dur:      200ms;
  --ln-dur-slow: 320ms;

  /* Chart palette (Linear default) — hex derivados de OKLCH */
  --ln-chart-1: #5b5cf0;  /* indigo (acento) */
  --ln-chart-2: #2ba676;  /* verde */
  --ln-chart-3: #e0a534;  /* ámbar */
  --ln-chart-4: #de4a3f;  /* rojo */
  --ln-chart-5: #39a4c6;  /* cyan */
  --ln-chart-6: #c162c6;  /* magenta */
  --ln-chart-7: #8d6b47;  /* marrón */
  --ln-chart-8: #5e8f6f;  /* sage */
}

/* ======================================================================
   Puente v1 -> v2 (Tarea M1.5 — premium-ui.css)
   premium-ui.css (portado de actividades_personal/dashboard_alleato) usa
   la nomenclatura v1 (--card-bg, --text-primary, --border-color, etc.).
   Este proyecto nació ya en v2 (solo temas --ln-*, sin tema legacy), así
   que esas variables v1 no existían en ningún archivo — sin este puente
   quedaban sin resolver (var() inválida en tiempo de cómputo) y rompían
   controles ya en producción de M1.4 (ej. el dropdown-menu del topbar
   quedaba con fondo transparente). Reasigna cada nombre v1 al token --ln-*
   equivalente para que premium-ui.css (y cualquier futuro consumidor) lo
   herede sin refactor.
   ====================================================================== */
:root[data-theme-curated] {
  --accent-primary:      var(--ln-accent);
  --page-bg:             var(--ln-bg);
  --card-bg:             var(--ln-surface);
  --text-primary:        var(--ln-fg);
  --text-secondary:      var(--ln-fg-muted);
  --text-muted:          var(--ln-fg-subtle);
  --border-color:        var(--ln-border-strong);
  --border-color-light:  var(--ln-border);
  --sidebar-hover-bg:    var(--ln-hover-bg);

  --radius-sm: var(--ln-radius-sm);
  --radius-md: var(--ln-radius-lg);

  --card-shadow-hover:  var(--ln-shadow-hover);
  --shadow-elevation-2: var(--ln-shadow-dropdown);
  --shadow-elevation-3: var(--ln-shadow-drawer);

  --badge-success-bg:   var(--ln-positive-soft);
  --badge-success-text: var(--ln-positive);
  --badge-danger-bg:    var(--ln-negative-soft);
  --badge-danger-text:  var(--ln-negative);
  --badge-warning-bg:   var(--ln-warning-soft);
  --badge-warning-text: var(--ln-warning);

  --skeleton-base:  var(--ln-border);
  --skeleton-shine: var(--ln-surface);
}

/* Cancelar estilos .widget-card heredados de app.css cuando el widget usa el chasis Linear */
[data-theme-curated] .widget-card.w {
  border-radius: var(--ln-radius-lg) !important;
}
[data-theme-curated] .widget-card.w:hover {
  transform: none;
  box-shadow: none !important;
}
[data-theme-curated] .widget-card.w[data-clickable="true"]:hover {
  transform: translateY(-1px);
  box-shadow: var(--ln-shadow-hover) !important;
}

/* ──────────────────────────────────────────────────────────────────────
   Base
   ────────────────────────────────────────────────────────────────────── */
[data-theme-curated] body {
  font-family: var(--ln-font-sans);
  font-feature-settings: "cv11", "ss01";
  font-size: 14px;
  line-height: 1.5;
  color: var(--ln-fg);
  background: var(--ln-bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Sin tope de ancho: al colapsar el sidebar, ese espacio debe usarse en la cuadrícula, no desperdiciarse (27 Jul 2026). */
[data-theme-curated] .content-area { max-width: none; }

[data-theme-curated] *:focus-visible {
  outline: 2px solid var(--ln-accent);
  outline-offset: 2px;
  border-radius: var(--ln-radius-sm);
}

/* ──────────────────────────────────────────────────────────────────────
   Navbar — light touch override
   ────────────────────────────────────────────────────────────────────── */
[data-theme-curated] .top-navbar {
  background: var(--ln-surface) !important;
  border-bottom: 1px solid var(--ln-border);
  box-shadow: none;
  height: 52px;
}
[data-theme-curated] .top-navbar .navbar-brand,
[data-theme-curated] .top-navbar .btn-link {
  color: var(--ln-fg) !important;
  text-decoration: none;
}
[data-theme-curated] .top-navbar .navbar-brand {
  font-weight: 500;
  font-size: 14px;
  letter-spacing: -0.01em;
}
[data-theme-curated] .top-navbar .navbar-brand i { color: var(--ln-accent); font-size: 16px; }
[data-theme-curated] .top-navbar .btn-link:hover { background: var(--ln-surface-2); border-radius: var(--ln-radius-md); }
[data-theme-curated] .top-navbar .dropdown-toggle { color: var(--ln-fg) !important; }
[data-theme-curated] .top-navbar .rounded-circle {
  background: var(--ln-accent-bg) !important;
  color: var(--ln-accent) !important;
}

/* Buscador global / command palette (V9.1) — contraste AA sobre el navbar
   claro (Linear/Stripe/Editorial) u oscuro (Terminal) de cada tema. El base
   .cmd-trigger (shell.css) usa blanco translúcido pensado para un navbar azul
   que ya no existe: sobre --ln-surface claro el texto blanco desaparecía.
   Fondo/borde/tinta por token → legible en los 4 temas. */
[data-theme-curated] .cmd-trigger {
  background: var(--ln-surface-2);
  border: 1px solid var(--ln-border);
  color: var(--ln-fg-muted);
}
[data-theme-curated] .cmd-trigger:hover {
  background: var(--ln-surface-3);
  border-color: var(--ln-border-strong);
  color: var(--ln-fg);
}
[data-theme-curated] .cmd-trigger .bi { color: var(--ln-accent); }
/* Wordmark Alleato: shell.css lo fuerza a #fff (para el navbar azul viejo);
   sobre --ln-surface claro (Editorial crema) desaparecía. Tinta por token. */
[data-theme-curated] .top-navbar .brand-wordmark { color: var(--ln-fg); }
[data-theme-curated] .cmd-trigger kbd {
  background: var(--ln-surface-3);
  color: var(--ln-fg-muted);
  border: 1px solid var(--ln-border);
}

/* ──────────────────────────────────────────────────────────────────────
   Sidebar — light touch override (de oscuro a claro)
   ────────────────────────────────────────────────────────────────────── */
[data-theme-curated] {
  --sidebar-bg: var(--ln-surface);
  --sidebar-text: var(--ln-fg-muted);
  --sidebar-icon: var(--ln-fg-subtle);
  --sidebar-hover: var(--ln-surface-2);
  --sidebar-active-bg: var(--ln-accent-soft);
  --navbar-height: 52px;
}
[data-theme-curated] .sidebar { border-right: 1px solid var(--ln-border); }
[data-theme-curated] .sidebar-link,
[data-theme-curated] .sidebar-group-btn {
  border-left: none !important;
  border-radius: 0;
  font-size: 13px;
  font-weight: 450;
  padding: 7px 16px;
  letter-spacing: -0.005em;
  color: var(--ln-fg-muted) !important;
}
[data-theme-curated] .sidebar-link i,
[data-theme-curated] .sidebar-group-btn i { color: var(--ln-fg-subtle) !important; }

/* HOVER — override del app.css que pone color:#fff (white-on-white) */
[data-theme-curated] .sidebar-link:hover,
[data-theme-curated] .sidebar-link:focus,
[data-theme-curated] .sidebar-group-btn:hover,
[data-theme-curated] .sidebar-group-btn:focus {
  background: var(--ln-hover-bg) !important;
  color: var(--ln-hover-fg) !important;
}
[data-theme-curated] .sidebar-link:hover i,
[data-theme-curated] .sidebar-link:focus i,
[data-theme-curated] .sidebar-group-btn:hover i,
[data-theme-curated] .sidebar-group-btn:focus i { color: var(--ln-hover-fg) !important; }

[data-theme-curated] .sidebar-link.active {
  background: var(--ln-accent-bg) !important;
  color: var(--ln-accent) !important;
  font-weight: 500;
}
[data-theme-curated] .sidebar-link.active i { color: var(--ln-accent) !important; }
[data-theme-curated] .sidebar-link.active:hover {
  background: var(--ln-accent-bg) !important;
  color: var(--ln-accent) !important;
}
[data-theme-curated] .sidebar-link.active:hover i { color: var(--ln-accent) !important; }

[data-theme-curated] .sidebar-sublink { padding-left: 40px; font-size: 12.5px; }
[data-theme-curated] .sidebar-footer { border-top: 1px solid var(--ln-border); }
[data-theme-curated] .sidebar-version { color: var(--ln-fg-faint); }
[data-theme-curated] .sidebar::-webkit-scrollbar-thumb { background: var(--ln-border); }

/* Bootstrap dropdown-menu (navbar user menu) */
[data-theme-curated] .dropdown-menu {
  border: 1px solid var(--ln-border);
  border-radius: var(--ln-radius-lg);
  box-shadow: var(--ln-shadow-dropdown);
  padding: 6px;
  background: var(--ln-surface);
}
[data-theme-curated] .dropdown-menu .dropdown-item {
  padding: 7px 10px;
  font-size: 13px;
  color: var(--ln-fg);
  border-radius: var(--ln-radius-md);
  transition: background var(--ln-dur-fast) var(--ln-ease),
              color var(--ln-dur-fast) var(--ln-ease);
}
[data-theme-curated] .dropdown-menu .dropdown-item:hover,
[data-theme-curated] .dropdown-menu .dropdown-item:focus {
  background: var(--ln-menu-hover-bg) !important;
  color: var(--ln-menu-hover-fg) !important;
}
[data-theme-curated] .dropdown-menu .dropdown-item:hover i,
[data-theme-curated] .dropdown-menu .dropdown-item:focus i { color: var(--ln-menu-hover-fg) !important; }
[data-theme-curated] .dropdown-menu .dropdown-item.text-danger:hover,
[data-theme-curated] .dropdown-menu .dropdown-item.text-danger:focus {
  background: var(--ln-negative) !important;
  color: var(--ln-accent-fg) !important;
}
[data-theme-curated] .dropdown-menu .dropdown-item.text-danger:hover i,
[data-theme-curated] .dropdown-menu .dropdown-item.text-danger:focus i { color: var(--ln-accent-fg) !important; }
[data-theme-curated] .dropdown-menu .dropdown-divider {
  border-color: var(--ln-border);
  margin: 4px 2px;
}

/* Loading overlay tinting */
[data-theme-curated] #nav-overlay { background: var(--ln-overlay-bg); }
[data-theme-curated] .nav-spinner-ring {
  border-color: var(--ln-accent-soft);
  border-top-color: var(--ln-accent);
  box-shadow: none;
}
[data-theme-curated] .nav-spinner-label { color: var(--ln-accent); }
[data-theme-curated] #page-bar {
  background: var(--ln-accent);
  box-shadow: none;
}

/* ──────────────────────────────────────────────────────────────────────
   Dashboard — Header
   ────────────────────────────────────────────────────────────────────── */
[data-theme-curated] .dash-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--ln-space-4);
  padding-bottom: var(--ln-space-4);
  margin-bottom: var(--ln-space-6);
  border-bottom: 1px solid var(--ln-border);
}
[data-theme-curated] .dash-title {
  font-family: var(--ln-font-display);
  font-size: 22px;
  font-weight: 500;
  letter-spacing: -0.02em;
  line-height: 1.15;
  color: var(--ln-fg);
  margin: 0;
}
[data-theme-curated] .dash-subtitle {
  font-size: 13px;
  color: var(--ln-fg-muted);
  margin: 4px 0 0;
  letter-spacing: -0.005em;
}
[data-theme-curated] .dash-subtitle strong { color: var(--ln-fg); font-weight: 500; }
[data-theme-curated] .dash-meta {
  display: flex;
  align-items: center;
  gap: var(--ln-space-3);
  font-size: 12px;
  color: var(--ln-fg-muted);
}
[data-theme-curated] .dash-freshness {
  font-variant-numeric: tabular-nums;
  color: var(--ln-fg-subtle);
  white-space: nowrap;
}
[data-theme-curated] .dash-freshness::before {
  content: "";
  display: inline-block;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--ln-positive);
  margin-right: 6px;
  vertical-align: middle;
  transform: translateY(-1px);
}

/* Ghost button utilitario */
[data-theme-curated] .btn-ghost {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  font-size: 13px;
  font-weight: 450;
  color: var(--ln-fg-muted);
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--ln-radius-md);
  text-decoration: none;
  transition: all var(--ln-dur-fast) var(--ln-ease);
  white-space: nowrap;
}
[data-theme-curated] .btn-ghost:hover {
  color: var(--ln-fg);
  background: var(--ln-surface-2);
  border-color: var(--ln-border);
}
[data-theme-curated] .btn-ghost:active { background: var(--ln-surface-3); }

[data-theme-curated] .btn-primary-ln {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  font-size: 13px;
  font-weight: 500;
  color: var(--ln-accent-fg);
  background: var(--ln-accent);
  border: 1px solid var(--ln-accent);
  border-radius: var(--ln-radius-md);
  text-decoration: none;
  transition: background var(--ln-dur-fast) var(--ln-ease);
  cursor: pointer;
}
[data-theme-curated] .btn-primary-ln:hover { background: var(--ln-accent-hover); color: var(--ln-accent-fg); }

/* ──────────────────────────────────────────────────────────────────────
   Filter chips (segmented)
   ────────────────────────────────────────────────────────────────────── */
[data-theme-curated] .chip-group {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ln-space-1);
  margin-bottom: var(--ln-space-5);
}
[data-theme-curated] .chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 11px;
  font-family: inherit;
  font-size: 12.5px;
  font-weight: 450;
  letter-spacing: -0.005em;
  color: var(--ln-fg-muted);
  background: transparent;
  border: 1px solid transparent;
  border-radius: 999px;
  cursor: pointer;
  transition: all var(--ln-dur-fast) var(--ln-ease);
  white-space: nowrap;
}
[data-theme-curated] .chip:hover {
  color: var(--ln-fg);
  background: var(--ln-surface-2);
}
[data-theme-curated] .chip[aria-pressed="true"] {
  color: var(--ln-surface);
  background: var(--ln-fg);
  border-color: var(--ln-fg);
  font-weight: 500;
}
[data-theme-curated] .chip .chip-count {
  font-variant-numeric: tabular-nums;
  font-size: 11.5px;
  color: var(--ln-fg-faint);
  margin-left: 2px;
}
[data-theme-curated] .chip[aria-pressed="true"] .chip-count { color: oklch(1 0 0 / 0.65); }

/* ──────────────────────────────────────────────────────────────────────
   Widget Grid — 12 columnas
   ────────────────────────────────────────────────────────────────────── */
[data-theme-curated] #widgetGrid {
  display: grid !important;
  grid-template-columns: repeat(12, 1fr);
  gap: var(--ln-space-4);
}
[data-theme-curated] #widgetGrid .widget-col { min-width: 0; }
[data-theme-curated] #widgetGrid .widget-col[data-tamano="Chico"]    { grid-column: span 3; }
[data-theme-curated] #widgetGrid .widget-col[data-tamano="Mediano"]  { grid-column: span 6; }
[data-theme-curated] #widgetGrid .widget-col[data-tamano="Grande"]   { grid-column: span 12; }
[data-theme-curated] #widgetGrid .widget-col[data-tamano="Total"]    { grid-column: span 12; }

@media (max-width: 1024px) {
  [data-theme-curated] #widgetGrid { grid-template-columns: repeat(6, 1fr); }
  [data-theme-curated] #widgetGrid .widget-col[data-tamano="Chico"]   { grid-column: span 3; }
  [data-theme-curated] #widgetGrid .widget-col[data-tamano="Mediano"] { grid-column: span 6; }
  [data-theme-curated] #widgetGrid .widget-col[data-tamano="Grande"]  { grid-column: span 6; }
  [data-theme-curated] #widgetGrid .widget-col[data-tamano="Total"]   { grid-column: span 6; }
}
@media (max-width: 640px) {
  [data-theme-curated] #widgetGrid { grid-template-columns: repeat(4, 1fr); gap: var(--ln-space-3); }
  [data-theme-curated] #widgetGrid .widget-col { grid-column: span 4 !important; }
}

/* ──────────────────────────────────────────────────────────────────────
   Widget — chasis común
   ────────────────────────────────────────────────────────────────────── */
[data-theme-curated] .w {
  position: relative;
  background: var(--ln-surface);
  border: 1px solid var(--ln-border);
  border-radius: var(--ln-radius-lg);
  transition: border-color var(--ln-dur-fast) var(--ln-ease),
              box-shadow var(--ln-dur-fast) var(--ln-ease),
              transform var(--ln-dur-fast) var(--ln-ease);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  min-height: 100%;
}
/* En la página de reporte individual el widget es un bloque suelto, no una
   celda del #widgetGrid: min-height:100% lo estiraba al alto del viewport y
   dejaba espacio en blanco bajo tablas cortas. Que abrace su contenido. */
[data-theme-curated] .w--reporte { min-height: 0; }

[data-theme-curated] .w[data-clickable="true"] { cursor: pointer; }
[data-theme-curated] .w[data-clickable="true"]:hover {
  border-color: var(--ln-border-strong);
  box-shadow: var(--ln-shadow-hover);
  transform: translateY(-1px);
}
[data-theme-curated] .w:hover .w-more { opacity: 1; }

/* Color de fondo personalizado del usuario — se aplica como tint sutil */
[data-theme-curated] .w[data-tinted="true"] {
  background: color-mix(in oklab, var(--ln-surface) 92%, var(--w-tint, transparent));
}

/* Header — etiqueta del widget */
[data-theme-curated] .w-head {
  display: flex;
  align-items: center;
  gap: var(--ln-space-2);
  padding: var(--ln-space-4) var(--ln-space-5) 0;
  position: relative;
}
[data-theme-curated] .w-title {
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ln-fg-muted);
  flex-grow: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
[data-theme-curated] .w-type-tag {
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ln-fg-faint);
  font-variant-numeric: tabular-nums;
}

/* Botón menú ⋯ */
[data-theme-curated] .w-more {
  position: absolute;
  top: 10px; right: 10px;
  width: 24px; height: 24px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: none;
  background: transparent;
  color: var(--ln-fg-subtle);
  border-radius: var(--ln-radius-md);
  cursor: pointer;
  opacity: 0;
  transition: opacity var(--ln-dur-fast) var(--ln-ease),
              background var(--ln-dur-fast) var(--ln-ease);
  font-size: 14px;
  line-height: 1;
}
[data-theme-curated] .w-more:hover { background: var(--ln-surface-2); color: var(--ln-fg); opacity: 1; }
[data-theme-curated] .w-more:focus-visible { opacity: 1; }

/* ──────────────────────────────────────────────────────────────────────
   Widget — tipo KPI
   ────────────────────────────────────────────────────────────────────── */
[data-theme-curated] .w--kpi .w-body {
  padding: var(--ln-space-3) var(--ln-space-5) var(--ln-space-5);
  display: flex;
  flex-direction: column;
  gap: var(--ln-space-2);
}
[data-theme-curated] .kpi-num {
  font-family: var(--ln-font-mono);
  font-size: clamp(1.1rem, 2.1vw, 34px);
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
  line-height: 1.05;
  color: var(--ln-fg);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
[data-theme-curated] .kpi-sublabel {
  font-size: 12px;
  color: var(--ln-fg-muted);
  line-height: 1.3;
}
[data-theme-curated] .kpi-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding-top: var(--ln-space-3);
  margin-top: var(--ln-space-1);
  border-top: 1px solid var(--ln-border);
}
[data-theme-curated] .kpi-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 12px;
  gap: var(--ln-space-2);
}
[data-theme-curated] .kpi-row-label { color: var(--ln-fg-muted); }
[data-theme-curated] .kpi-row-val {
  font-family: var(--ln-font-mono);
  font-variant-numeric: tabular-nums;
  color: var(--ln-fg);
  font-weight: 500;
}
[data-theme-curated] .kpi-delta {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  font-family: var(--ln-font-mono);
  font-size: 11px;
  font-weight: 500;
  font-variant-numeric: tabular-nums;
}
[data-theme-curated] .kpi-delta--pos { color: var(--ln-positive); }
[data-theme-curated] .kpi-delta--neg { color: var(--ln-negative); }

/* ──────────────────────────────────────────────────────────────────────
   Widget — tipo Gráfica
   ────────────────────────────────────────────────────────────────────── */
[data-theme-curated] .w--graph .w-body {
  padding: var(--ln-space-3) var(--ln-space-4) var(--ln-space-4);
  display: flex;
  flex-direction: column;
  gap: var(--ln-space-2);
  flex-grow: 1;
  min-height: 0;
}
[data-theme-curated] .w-canvas-wrap {
  position: relative;
  width: 100%;
  min-width: 0;
  height: 240px;
}
[data-theme-curated] .w[data-tamano="Chico"]   .w-canvas-wrap { height: 200px; }
[data-theme-curated] .w[data-tamano="Mediano"] .w-canvas-wrap { height: 240px; }
[data-theme-curated] .w[data-tamano="Grande"]  .w-canvas-wrap { height: 280px; }
[data-theme-curated] .w[data-tamano="Total"]   .w-canvas-wrap { height: 320px; }
[data-theme-curated] .w[data-clickable="false"] .w-canvas-wrap { height: 420px; }
[data-theme-curated] .w[data-tamano="Chico"]   .w-map { height: 200px; }
[data-theme-curated] .w[data-tamano="Mediano"] .w-map { height: 240px; }
[data-theme-curated] .w[data-tamano="Grande"]  .w-map { height: 280px; }
[data-theme-curated] .w[data-tamano="Total"]   .w-map { height: 320px; }
[data-theme-curated] .w[data-clickable="false"] .w-map { height: 420px; }
[data-theme-curated] .w--graph canvas {
  display: block;
  max-width: 100%;
}
[data-theme-curated] .w-chart-toggle {
  display: inline-flex;
  gap: 2px;
  padding: 2px;
  background: var(--ln-surface-2);
  border: 1px solid var(--ln-border);
  border-radius: var(--ln-radius-md);
  align-self: flex-start;
}
[data-theme-curated] .w-chart-toggle button {
  padding: 3px 9px;
  font-size: 11.5px;
  font-weight: 450;
  color: var(--ln-fg-muted);
  background: transparent;
  border: none;
  border-radius: var(--ln-radius-sm);
  cursor: pointer;
  transition: all var(--ln-dur-fast) var(--ln-ease);
}
[data-theme-curated] .w-chart-toggle button[aria-pressed="true"] {
  background: var(--ln-surface);
  color: var(--ln-fg);
  box-shadow: 0 1px 2px oklch(0.22 0.02 260 / 0.06);
}
[data-theme-curated] .w-info-label {
  font-size: 11px;
  color: var(--ln-fg-subtle);
  font-style: italic;
  padding-top: var(--ln-space-1);
}
[data-theme-curated] .w-caveat {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  margin-top: var(--ln-space-2);
  padding: var(--ln-space-2) var(--ln-space-3);
  background: var(--ln-surface);
  border: 1px solid var(--ln-border);
  border-left: 3px solid var(--ln-accent, var(--ln-fg-subtle));
  border-radius: var(--ln-radius-sm);
  font-size: 11px;
  line-height: 1.45;
  color: var(--ln-fg-muted, var(--ln-fg-subtle));
}
[data-theme-curated] .w-caveat i {
  color: var(--ln-accent, var(--ln-fg-subtle));
  font-size: 13px;
  flex-shrink: 0;
  margin-top: 1px;
}
[data-theme-curated] .w-caveat span {
  flex: 1;
}
@media print {
  [data-theme-curated] .w-caveat { display: none; }
}

/* ──────────────────────────────────────────────────────────────────────
   Pareto / Concentración — micro-reporte tabular bajo la curva
   ────────────────────────────────────────────────────────────────────── */
[data-theme-curated] .w-pareto-detail {
  margin-top: var(--ln-space-3);
  border-top: 1px solid var(--ln-border);
  padding-top: var(--ln-space-3);
}
[data-theme-curated] .w-pareto-toggle {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: transparent;
  border: 1px solid var(--ln-border);
  border-radius: var(--ln-radius-sm);
  padding: 6px 12px;
  color: var(--ln-fg);
  font-size: 12.5px;
  font-weight: 500;
  cursor: pointer;
  transition: background-color 120ms ease-out, border-color 120ms ease-out;
}
[data-theme-curated] .w-pareto-toggle:hover {
  background: var(--ln-surface-2);
  border-color: var(--ln-fg-muted);
}
[data-theme-curated] .w-pareto-toggle:focus-visible {
  outline: 2px solid var(--ln-accent);
  outline-offset: 2px;
}
[data-theme-curated] .w-pareto-caret {
  font-size: 12px;
  color: var(--ln-fg-muted);
  transition: transform 120ms ease-out;
}
[data-theme-curated] .w-pareto-toggle-meta {
  font-family: var(--ln-font-mono);
  font-variant-numeric: tabular-nums;
  font-size: 11px;
  color: var(--ln-fg-subtle);
  font-weight: 400;
  border-left: 1px solid var(--ln-border);
  padding-left: 8px;
  margin-left: 4px;
}
[data-theme-curated] .w-pareto-hint {
  font-size: 11px;
  color: var(--ln-fg-subtle);
  font-style: italic;
  margin: 8px 0 0 0;
}
[data-theme-curated] .w-pareto-panel {
  margin-top: var(--ln-space-2);
  border: 1px solid var(--ln-border);
  border-radius: var(--ln-radius-sm);
  overflow: hidden;
}
[data-theme-curated] .w-pareto-corte {
  display: inline-block;
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--ln-surface-2);
  color: var(--ln-fg-muted);
  border: 1px solid var(--ln-border);
}
[data-theme-curated] .w-pareto-corte--top5 {
  background: color-mix(in oklch, var(--ln-accent) 22%, transparent);
  color: var(--ln-accent);
  border-color: color-mix(in oklch, var(--ln-accent) 50%, transparent);
  font-weight: 600;
}
[data-theme-curated] .w-pareto-corte--top10 {
  background: color-mix(in oklch, var(--ln-accent) 14%, transparent);
  color: var(--ln-accent);
  border-color: color-mix(in oklch, var(--ln-accent) 35%, transparent);
}
[data-theme-curated] .w-pareto-corte--top20 {
  background: color-mix(in oklch, var(--ln-accent) 8%, transparent);
  color: var(--ln-accent);
  border-color: color-mix(in oklch, var(--ln-accent) 25%, transparent);
}
[data-theme-curated] .w-pareto-corte--top50 {
  background: color-mix(in oklch, var(--ln-fg) 5%, transparent);
  color: var(--ln-fg-muted);
}
/* Indica que la curva/barras son interactivas (drill-down al panel inline) */
[data-theme-curated] [data-slug="concentracion-clientes"] canvas[data-chart-type],
[data-theme-curated] [data-slug="productos-en-declive"] canvas[data-chart-type] {
  cursor: pointer;
}

/* ──────────────────────────────────────────────────────────────────────
   Widget — tipo Tabular
   ────────────────────────────────────────────────────────────────────── */
[data-theme-curated] .w--table .w-body {
  padding: 0;
  display: flex;
  flex-direction: column;
  flex-grow: 1;
  min-height: 0;
}
[data-theme-curated] .w-table-scroll {
  max-height: 380px;
  overflow-y: auto;
  overflow-x: auto;
  scrollbar-width: thin;
}
[data-theme-curated] .w-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12.5px;
}
[data-theme-curated] .w-table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--ln-surface-2);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--ln-fg-muted);
  padding: 7px 12px;
  border-bottom: 1px solid var(--ln-border);
  white-space: nowrap;
  user-select: none;
  cursor: pointer;
  text-align: left;
}
[data-theme-curated] .w-table thead th.t-right  { text-align: right; }
[data-theme-curated] .w-table thead th.t-center { text-align: center; }
[data-theme-curated] .w-table thead th:hover { color: var(--ln-fg); }
[data-theme-curated] .w-table tbody td {
  padding: 8px 12px;
  border-bottom: 1px solid var(--ln-border);
  color: var(--ln-fg);
  white-space: nowrap;
  vertical-align: middle;
}
[data-theme-curated] .w-table tbody td.t-right { text-align: right; }
[data-theme-curated] .w-table tbody td.t-center { text-align: center; }
[data-theme-curated] .w-table tbody td.t-num {
  font-family: var(--ln-font-mono);
  font-variant-numeric: tabular-nums;
  text-align: right;
}
[data-theme-curated] .w-table tbody tr:last-child td { border-bottom: none; }
[data-theme-curated] .w-table tbody tr:hover td { background: var(--ln-surface-2); }
[data-theme-curated] .w-table tfoot td {
  position: sticky;
  bottom: 0;
  background: var(--ln-surface-2);
  padding: 8px 12px;
  font-weight: 500;
  color: var(--ln-fg);
  border-top: 1px solid var(--ln-border);
  white-space: nowrap;
}
[data-theme-curated] .w-table tfoot td.t-num {
  font-family: var(--ln-font-mono);
  font-variant-numeric: tabular-nums;
  text-align: right;
}
[data-theme-curated] .w-table tfoot td:first-child { color: var(--ln-fg-muted); font-style: italic; font-weight: 400; }
[data-theme-curated] .w-table-meta {
  padding: 8px 20px;
  font-size: 11px;
  color: var(--ln-fg-subtle);
  border-top: 1px solid var(--ln-border);
  background: var(--ln-surface-2);
  font-variant-numeric: tabular-nums;
}

/* Row-type tints (usa los tipos existentes del modelo) */
[data-theme-curated] .w-table tbody tr.t-saldo_inicial td { background: var(--ln-surface-2); font-weight: 500; }
[data-theme-curated] .w-table tbody tr.t-pago       td { color: var(--ln-positive); }
[data-theme-curated] .w-table tbody tr.t-devolucion td { color: var(--ln-warning); }
[data-theme-curated] .w-table tbody tr.t-nc         td { color: var(--ln-accent); }
[data-theme-curated] .w-table tbody tr.t-cargo      td { color: var(--ln-negative); }
[data-theme-curated] .tbl-sort-icon {
  font-family: var(--ln-font-mono);
  font-size: 9px;
  color: var(--ln-fg-faint);
  margin-left: 4px;
  display: inline-block;
  min-width: 8px;
}

/* Alertas meta (vencidas, conciliaciones) — sin border-left */
[data-theme-curated] .w-banner {
  display: flex;
  align-items: center;
  gap: var(--ln-space-2);
  padding: 8px 12px;
  margin: var(--ln-space-3) var(--ln-space-4) 0;
  font-size: 12px;
  border-radius: var(--ln-radius-md);
  background: var(--ln-warning-soft);
  color: oklch(0.38 0.12 75);
}
[data-theme-curated] .w-banner.w-banner--info {
  background: var(--ln-accent-soft);
  color: var(--ln-accent);
}
[data-theme-curated] .w-banner strong { font-weight: 500; }

/* ──────────────────────────────────────────────────────────────────────
   Widget — estados (vacío / error / loading)
   ────────────────────────────────────────────────────────────────────── */
[data-theme-curated] .w-empty,
[data-theme-curated] .w-error {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--ln-space-2);
  padding: var(--ln-space-6) var(--ln-space-4);
  text-align: center;
  color: var(--ln-fg-muted);
  font-size: 12.5px;
  min-height: 120px;
  flex-grow: 1;
}
[data-theme-curated] .w-empty-icon {
  font-size: 18px;
  color: var(--ln-fg-faint);
}
[data-theme-curated] .w-error-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--ln-negative);
}
[data-theme-curated] .w-error-retry {
  margin-top: var(--ln-space-1);
  font-size: 12px;
  color: var(--ln-accent);
  background: none;
  border: none;
  padding: 4px 8px;
  cursor: pointer;
  border-radius: var(--ln-radius-sm);
  text-decoration: underline;
  text-decoration-color: transparent;
  transition: text-decoration-color var(--ln-dur-fast) var(--ln-ease);
}
[data-theme-curated] .w-error-retry:hover { text-decoration-color: var(--ln-accent); }

/* Dashboard empty state — full bleed */
[data-theme-curated] .dash-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--ln-space-3);
  text-align: center;
  padding: var(--ln-space-16) var(--ln-space-4);
}
[data-theme-curated] .dash-empty h2 {
  font-size: 28px;
  font-weight: 400;
  letter-spacing: -0.025em;
  color: var(--ln-fg);
  margin: 0;
}
[data-theme-curated] .dash-empty p {
  font-size: 14px;
  color: var(--ln-fg-muted);
  max-width: 52ch;
  margin: 0;
  line-height: 1.55;
}
[data-theme-curated] .dash-empty-mark {
  width: 48px; height: 48px;
  display: grid;
  place-items: center;
  background: var(--ln-surface-2);
  border: 1px solid var(--ln-border);
  border-radius: var(--ln-radius-lg);
  color: var(--ln-fg-subtle);
  margin-bottom: var(--ln-space-2);
}

/* ──────────────────────────────────────────────────────────────────────
   Dropdown (⋯ menu)
   ────────────────────────────────────────────────────────────────────── */
[data-theme-curated] .ln-menu {
  position: fixed;
  z-index: 9997;
  min-width: 200px;
  background: var(--ln-surface);
  border-radius: var(--ln-radius-lg);
  box-shadow: var(--ln-shadow-dropdown);
  padding: 6px;
  display: none;
  font-size: 13px;
  animation: ln-menu-in 120ms var(--ln-ease);
}
[data-theme-curated] .ln-menu.is-open { display: block; }
[data-theme-curated] .ln-menu-title {
  padding: 6px 10px 8px;
  font-size: 11px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ln-fg-muted);
  border-bottom: 1px solid var(--ln-border);
  margin-bottom: 4px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
[data-theme-curated] .ln-menu a.ln-menu-item,
[data-theme-curated] .ln-menu .ln-menu-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 7px 10px;
  color: var(--ln-fg);
  border-radius: var(--ln-radius-md);
  cursor: pointer;
  text-decoration: none;
  font-size: 13px;
  transition: background var(--ln-dur-fast) var(--ln-ease),
              color var(--ln-dur-fast) var(--ln-ease);
}
[data-theme-curated] .ln-menu a.ln-menu-item:hover,
[data-theme-curated] .ln-menu a.ln-menu-item:focus,
[data-theme-curated] .ln-menu .ln-menu-item:hover {
  background: var(--ln-menu-hover-bg) !important;
  color: var(--ln-menu-hover-fg) !important;
  text-decoration: none;
  outline: none;
}
[data-theme-curated] .ln-menu-item i {
  color: var(--ln-fg-subtle);
  font-size: 13px;
  width: 16px;
  text-align: center;
  transition: color var(--ln-dur-fast) var(--ln-ease);
}
[data-theme-curated] .ln-menu a.ln-menu-item:hover i,
[data-theme-curated] .ln-menu a.ln-menu-item:focus i { color: var(--ln-menu-hover-fg) !important; }

[data-theme-curated] .ln-menu-item--danger,
[data-theme-curated] .ln-menu a.ln-menu-item--danger { color: var(--ln-negative); }
[data-theme-curated] .ln-menu-item--danger i { color: var(--ln-negative); }
[data-theme-curated] .ln-menu a.ln-menu-item--danger:hover,
[data-theme-curated] .ln-menu a.ln-menu-item--danger:focus {
  background: var(--ln-negative) !important;
  color: var(--ln-accent-fg) !important;
}
[data-theme-curated] .ln-menu a.ln-menu-item--danger:hover i,
[data-theme-curated] .ln-menu a.ln-menu-item--danger:focus i { color: var(--ln-accent-fg) !important; }
[data-theme-curated] .ln-menu-divider { height: 1px; background: var(--ln-border); margin: 4px 2px; }
@keyframes ln-menu-in {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ──────────────────────────────────────────────────────────────────────
   Drawer (widget config)
   ────────────────────────────────────────────────────────────────────── */
[data-theme-curated] .ln-drawer-backdrop {
  position: fixed;
  inset: 0;
  background: var(--ln-drawer-backdrop);
  z-index: 9998;
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--ln-dur) var(--ln-ease);
}
[data-theme-curated] .ln-drawer-backdrop.is-open { opacity: 1; pointer-events: auto; }
[data-theme-curated] .ln-drawer {
  position: fixed;
  top: 0; right: 0;
  width: 360px;
  max-width: 92vw;
  height: 100vh;
  z-index: 9999;
  background: var(--ln-surface);
  border-left: 1px solid var(--ln-border);
  box-shadow: var(--ln-shadow-drawer);
  display: flex;
  flex-direction: column;
  transform: translateX(100%);
  transition: transform var(--ln-dur-slow) var(--ln-ease);
}
[data-theme-curated] .ln-drawer.is-open { transform: translateX(0); }
[data-theme-curated] .ln-drawer-head {
  position: sticky;
  top: 0;
  padding: var(--ln-space-4) var(--ln-space-5);
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--ln-space-3);
  border-bottom: 1px solid var(--ln-border);
  background: var(--ln-surface);
}
[data-theme-curated] .ln-drawer-title {
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ln-fg-muted);
  margin: 0 0 4px;
}
[data-theme-curated] .ln-drawer-subtitle {
  font-size: 15px;
  font-weight: 500;
  color: var(--ln-fg);
  margin: 0;
  letter-spacing: -0.01em;
}
[data-theme-curated] .ln-drawer-close {
  width: 28px; height: 28px;
  display: grid;
  place-items: center;
  background: transparent;
  border: none;
  color: var(--ln-fg-subtle);
  border-radius: var(--ln-radius-md);
  cursor: pointer;
  font-size: 16px;
  transition: background var(--ln-dur-fast) var(--ln-ease);
}
[data-theme-curated] .ln-drawer-close:hover { background: var(--ln-surface-2); color: var(--ln-fg); }
[data-theme-curated] .ln-drawer-body {
  flex-grow: 1;
  overflow-y: auto;
  padding: var(--ln-space-5);
  display: flex;
  flex-direction: column;
  gap: var(--ln-space-4);
}
[data-theme-curated] .ln-drawer-foot {
  padding: var(--ln-space-3) var(--ln-space-5);
  border-top: 1px solid var(--ln-border);
  background: var(--ln-surface);
  display: flex;
  justify-content: flex-end;
  gap: var(--ln-space-2);
}

/* Form controls dentro del drawer */
[data-theme-curated] .ln-field { display: flex; flex-direction: column; gap: 6px; }
[data-theme-curated] .ln-label {
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--ln-fg-muted);
}
[data-theme-curated] .ln-input,
[data-theme-curated] .ln-select {
  width: 100%;
  padding: 8px 10px;
  font-family: inherit;
  font-size: 13px;
  color: var(--ln-fg);
  background: var(--ln-surface);
  border: 1px solid var(--ln-border);
  border-radius: var(--ln-radius-md);
  transition: border-color var(--ln-dur-fast) var(--ln-ease);
  appearance: none;
}
[data-theme-curated] .ln-select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='none' stroke='%238a8f98' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' d='M1 1l4 4 4-4'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 10px center;
  padding-right: 28px;
}
[data-theme-curated] .ln-input:focus,
[data-theme-curated] .ln-select:focus {
  outline: none;
  border-color: var(--ln-accent);
  box-shadow: 0 0 0 3px var(--ln-accent-soft);
}
[data-theme-curated] .ln-color-row {
  display: flex;
  align-items: center;
  gap: var(--ln-space-2);
}
[data-theme-curated] .ln-color-picker {
  width: 34px;
  height: 34px;
  padding: 2px;
  border: 1px solid var(--ln-border);
  border-radius: var(--ln-radius-md);
  background: var(--ln-surface);
  cursor: pointer;
}
[data-theme-curated] .ln-switch-row {
  display: flex;
  gap: var(--ln-space-2);
}
[data-theme-curated] .ln-switch-opt {
  flex: 1;
  padding: 8px;
  font-size: 12.5px;
  font-weight: 450;
  color: var(--ln-fg-muted);
  background: var(--ln-surface);
  border: 1px solid var(--ln-border);
  border-radius: var(--ln-radius-md);
  cursor: pointer;
  transition: all var(--ln-dur-fast) var(--ln-ease);
  text-align: center;
}
[data-theme-curated] .ln-switch-opt[aria-pressed="true"] {
  background: var(--ln-accent-soft);
  border-color: var(--ln-accent);
  color: var(--ln-accent);
  font-weight: 500;
}
[data-theme-curated] .ln-field-help {
  font-size: 11.5px;
  color: var(--ln-fg-subtle);
  line-height: 1.4;
}
[data-theme-curated] .ln-btn {
  padding: 7px 14px;
  font-size: 13px;
  font-weight: 500;
  font-family: inherit;
  border-radius: var(--ln-radius-md);
  border: 1px solid transparent;
  cursor: pointer;
  transition: all var(--ln-dur-fast) var(--ln-ease);
}
[data-theme-curated] .ln-btn--ghost {
  color: var(--ln-fg-muted);
  background: transparent;
  border-color: transparent;
}
[data-theme-curated] .ln-btn--ghost:hover { color: var(--ln-fg); background: var(--ln-surface-2); }
[data-theme-curated] .ln-btn--primary {
  color: var(--ln-accent-fg);
  background: var(--ln-accent);
  border-color: var(--ln-accent);
}
[data-theme-curated] .ln-btn--primary:hover { background: var(--ln-accent-hover); border-color: var(--ln-accent-hover); }
[data-theme-curated] .ln-btn[disabled] { opacity: 0.5; cursor: not-allowed; }

/* ──────────────────────────────────────────────────────────────────────
   Toast (undo feedback)
   ────────────────────────────────────────────────────────────────────── */
[data-theme-curated] .ln-toast-host {
  position: fixed;
  bottom: var(--ln-space-6);
  left: 50%;
  transform: translateX(-50%);
  z-index: 10000;
  display: flex;
  flex-direction: column;
  gap: var(--ln-space-2);
  pointer-events: none;
}
[data-theme-curated] .ln-toast {
  pointer-events: auto;
  display: flex;
  align-items: center;
  gap: var(--ln-space-3);
  padding: 10px 14px;
  background: var(--ln-fg);
  color: var(--ln-surface);
  font-size: 13px;
  border-radius: var(--ln-radius-md);
  box-shadow: var(--ln-shadow-toast);
  min-width: 280px;
  animation: ln-toast-in 200ms var(--ln-ease);
}
[data-theme-curated] .ln-toast.is-leaving { animation: ln-toast-out 200ms var(--ln-ease) forwards; }
[data-theme-curated] .ln-toast-msg { flex-grow: 1; }
[data-theme-curated] .ln-toast-action {
  background: none;
  border: none;
  color: oklch(0.95 0.02 260);
  font-family: inherit;
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  padding: 2px 8px;
  border-radius: var(--ln-radius-sm);
  transition: background var(--ln-dur-fast) var(--ln-ease);
}
[data-theme-curated] .ln-toast-action:hover { background: oklch(1 0 0 / 0.1); }
@keyframes ln-toast-in {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes ln-toast-out {
  from { opacity: 1; transform: translateY(0); }
  to   { opacity: 0; transform: translateY(8px); }
}

/* ──────────────────────────────────────────────────────────────────────
   Skeleton shimmer (carga)
   ────────────────────────────────────────────────────────────────────── */
[data-theme-curated] .ln-skeleton {
  background: linear-gradient(90deg, var(--ln-surface-2) 0%, var(--ln-surface-3) 50%, var(--ln-surface-2) 100%);
  background-size: 200% 100%;
  animation: ln-shimmer 1.4s var(--ln-ease) infinite;
  border-radius: var(--ln-radius-sm);
}
@keyframes ln-shimmer {
  0%   { background-position: 100% 0; }
  100% { background-position: -100% 0; }
}

/* ══════════════════════════════════════════════════════════════════════
   Bootstrap component overrides
   (afectan admin screens: /sistemas/* que siguen usando markup Bootstrap)
   ══════════════════════════════════════════════════════════════════════ */

/* Page headers — patrón común "h4.fw-bold + p.text-muted" */
[data-theme-curated] h4.fw-bold {
  font-family: var(--ln-font-display);
  font-size: 22px !important;
  font-weight: 500 !important;
  letter-spacing: -0.02em;
  line-height: 1.15;
  color: var(--ln-fg);
  margin-bottom: 4px !important;
}
[data-theme-curated] h4.fw-bold > .bi { display: none !important; }
[data-theme-curated] h4.fw-bold + p.text-muted {
  font-size: 13px !important;
  color: var(--ln-fg-muted) !important;
  letter-spacing: -0.005em;
  line-height: 1.55;
  margin-bottom: 0 !important;
}

[data-theme-curated] h6.fw-bold {
  font-size: 13px !important;
  font-weight: 500 !important;
  color: var(--ln-fg);
  letter-spacing: -0.005em;
  margin: 0;
}
[data-theme-curated] h6.fw-bold > .bi { display: none; }

/* Cards */
[data-theme-curated] .card {
  background: var(--ln-surface) !important;
  border: 1px solid var(--ln-border) !important;
  border-radius: var(--ln-radius-lg) !important;
  box-shadow: none !important;
}
[data-theme-curated] .card.shadow-sm,
[data-theme-curated] .card.shadow { box-shadow: none !important; }
[data-theme-curated] .card-header {
  background: var(--ln-surface) !important;
  border-bottom: 1px solid var(--ln-border) !important;
  padding: var(--ln-space-3) var(--ln-space-5) !important;
}
[data-theme-curated] .card-header.border-0 { border-bottom: 1px solid var(--ln-border) !important; }
[data-theme-curated] .card-body { padding: var(--ln-space-5) !important; }
[data-theme-curated] .card-body.p-0 { padding: 0 !important; }

/* Form controls */
[data-theme-curated] .form-label,
[data-theme-curated] .form-label.fw-medium {
  font-size: 11px !important;
  font-weight: 500 !important;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ln-fg-muted) !important;
  margin-bottom: 6px !important;
}
[data-theme-curated] .form-label > .bi { display: none; }
[data-theme-curated] .form-control,
[data-theme-curated] .form-select {
  font-family: var(--ln-font-sans);
  font-size: 13.5px !important;
  padding: 8px 10px !important;
  color: var(--ln-fg) !important;
  background: var(--ln-surface) !important;
  border: 1px solid var(--ln-border) !important;
  border-radius: var(--ln-radius-md) !important;
  box-shadow: none !important;
  transition: border-color var(--ln-dur-fast) var(--ln-ease),
              box-shadow var(--ln-dur-fast) var(--ln-ease);
}
[data-theme-curated] .form-control.form-control-sm,
[data-theme-curated] .form-select.form-select-sm {
  font-size: 12.5px !important;
  padding: 6px 8px !important;
}
[data-theme-curated] .form-control::placeholder { color: var(--ln-fg-faint); }
[data-theme-curated] .form-control:focus,
[data-theme-curated] .form-select:focus {
  border-color: var(--ln-accent) !important;
  box-shadow: 0 0 0 3px var(--ln-accent-soft) !important;
  outline: none;
}
[data-theme-curated] .form-control-color {
  padding: 3px !important;
  width: 38px !important;
  height: 32px !important;
  cursor: pointer;
}
[data-theme-curated] .form-text {
  font-size: 11.5px !important;
  color: var(--ln-fg-subtle) !important;
  letter-spacing: -0.005em;
  margin-top: 4px;
}
[data-theme-curated] .input-group-text {
  background: var(--ln-surface-2) !important;
  border: 1px solid var(--ln-border) !important;
  color: var(--ln-fg-muted) !important;
  font-size: 13px;
}
[data-theme-curated] .input-group-text.bg-light { background: var(--ln-surface-2) !important; }

/* Checkbox & radio */
[data-theme-curated] .form-check-input {
  width: 16px; height: 16px;
  border: 1px solid var(--ln-border-strong) !important;
  border-radius: 3px;
  cursor: pointer;
  transition: all var(--ln-dur-fast) var(--ln-ease);
}
[data-theme-curated] .form-check-input[type="radio"] { border-radius: 50%; }
[data-theme-curated] .form-check-input:checked {
  background-color: var(--ln-accent) !important;
  border-color: var(--ln-accent) !important;
}
[data-theme-curated] .form-check-input:focus {
  box-shadow: 0 0 0 3px var(--ln-accent-soft) !important;
}
[data-theme-curated] .form-check-label { font-size: 13px; color: var(--ln-fg); }

/* Selects — mantener la flecha pero con color del tema */
[data-theme-curated] .form-select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='none' stroke='%238a8f98' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' d='M1 1l4 4 4-4'/%3E%3C/svg%3E") !important;
  background-repeat: no-repeat !important;
  background-position: right 10px center !important;
  padding-right: 28px !important;
}

/* Multi-select (MultiSelectDropdown) — igualar la superficie sólida del
   .form-select: el botón toggle es un .btn-outline-* (fondo transparente) y
   el panel usa .bg-body de Bootstrap, que los temas curados no remapean →
   se veían transparentes. Forzamos superficie/borde del tema. */
[data-theme-curated] .msd-toggle,
[data-theme-curated] .msd-toggle.btn-outline-secondary {
  background: var(--ln-surface) !important;
  border: 1px solid var(--ln-border) !important;
  color: var(--ln-fg) !important;
  border-radius: var(--ln-radius-md) !important;
}
[data-theme-curated] .msd-toggle:hover,
[data-theme-curated] .msd-toggle.btn-outline-secondary:hover {
  background: var(--ln-surface-2) !important;
  border-color: var(--ln-border-strong) !important;
  color: var(--ln-fg) !important;
}
[data-theme-curated] .msd-toggle:focus,
[data-theme-curated] .msd-toggle.show {
  border-color: var(--ln-accent) !important;
  box-shadow: 0 0 0 3px var(--ln-accent-soft) !important;
}
[data-theme-curated] .msd-panel,
[data-theme-curated] .msd-panel.bg-body {
  /* Superficie elevada (surface-2) + borde fuerte + sombra marcada: en los temas
     oscuros el panel a nivel de superficie base casi no se separaba del fondo y
     se leía "transparente". Con esto el dropdown flota claro en los 4 temas. */
  background: var(--ln-surface-2, var(--ln-surface)) !important;
  border: 1px solid var(--ln-border-strong, var(--ln-border)) !important;
  border-radius: var(--ln-radius-md) !important;
  box-shadow: 0 10px 30px -6px rgba(0, 0, 0, .45), 0 2px 6px rgba(0, 0, 0, .25) !important;
}
[data-theme-curated] .msd-panel .bg-body-tertiary { background: var(--ln-surface) !important; }
[data-theme-curated] .msd-item:hover { background: var(--ln-surface-2); }
[data-theme-curated] .msd-item-selected { background: var(--ln-accent-soft); }

/* Drill-down de facturas: fila expandible + detalle de una factura */
.fac-row { cursor: pointer; }
[data-theme-curated] .fac-row:hover td { background: var(--ln-surface-2); }
.fac-caret i { transition: transform var(--ln-dur-fast, .15s) ease; color: var(--ln-fg-muted, #6c757d); }
.fac-det-row > td { padding: 0 !important; }
.fac-det-cell { padding: .75rem 1rem !important; }
[data-theme-curated] .fac-det-row > .fac-det-cell { background: var(--ln-surface-2); }
.fac-det-kpis { display: flex; flex-wrap: wrap; gap: .4rem 1.5rem; margin-bottom: .5rem; }
.fac-det-kpi { display: flex; flex-direction: column; min-width: 5.5rem; }
.fac-det-k { font-size: 10.5px; text-transform: uppercase; letter-spacing: .04em; color: var(--ln-fg-muted, #6c757d); }
.fac-det-v { font-size: 14px; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--ln-fg, inherit); }
.fac-det-concepto { font-size: 12.5px; margin-bottom: .5rem; color: var(--ln-fg, inherit); }
.fac-det-concepto .fac-det-k { display: inline; margin-right: .35rem; }
.fac-det-sub { font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: var(--ln-fg-muted, #6c757d); margin-bottom: .25rem; }
/* La fecha en celda NUNCA se parte a dos líneas (Estándar C1.5). */
.cell-date { white-space: nowrap; }
/* Totales de factura con énfasis (símbolo de moneda + acento). */
td.fac-total { font-weight: 600; color: var(--ln-accent, inherit); font-variant-numeric: tabular-nums; white-space: nowrap; }
.fac-det-total .fac-det-v { color: var(--ln-accent, inherit); font-size: 15px; }

/* Buttons */
[data-theme-curated] .btn {
  font-family: var(--ln-font-sans);
  font-size: 13px !important;
  font-weight: 500;
  padding: 7px 14px !important;
  border-radius: var(--ln-radius-md) !important;
  border: 1px solid transparent;
  transition: all var(--ln-dur-fast) var(--ln-ease);
  letter-spacing: -0.005em;
  box-shadow: none !important;
}
[data-theme-curated] .btn-sm { font-size: 12.5px !important; padding: 5px 10px !important; }
[data-theme-curated] .btn-xs { font-size: 11.5px !important; padding: 3px 8px !important; }
[data-theme-curated] .btn-primary {
  background: var(--ln-accent) !important;
  border-color: var(--ln-accent) !important;
  color: var(--ln-accent-fg) !important;
}
[data-theme-curated] .btn-primary:hover,
[data-theme-curated] .btn-primary:focus {
  background: var(--ln-accent-hover) !important;
  border-color: var(--ln-accent-hover) !important;
  color: var(--ln-accent-fg) !important;
}
[data-theme-curated] .btn-secondary {
  background: var(--ln-surface-2) !important;
  border-color: var(--ln-border) !important;
  color: var(--ln-fg) !important;
}
[data-theme-curated] .btn-secondary:hover {
  background: var(--ln-surface-3) !important;
  border-color: var(--ln-border-strong) !important;
  color: var(--ln-fg) !important;
}
[data-theme-curated] .btn-outline-primary {
  color: var(--ln-accent) !important;
  border-color: var(--ln-border) !important;
  background: transparent !important;
}
[data-theme-curated] .btn-outline-primary:hover {
  background: var(--ln-accent-soft) !important;
  border-color: var(--ln-accent) !important;
  color: var(--ln-accent) !important;
}
[data-theme-curated] .btn-outline-secondary {
  color: var(--ln-fg-muted) !important;
  border-color: var(--ln-border) !important;
  background: transparent !important;
}
[data-theme-curated] .btn-outline-secondary:hover {
  background: var(--ln-surface-2) !important;
  border-color: var(--ln-border-strong) !important;
  color: var(--ln-fg) !important;
}
[data-theme-curated] .btn-outline-success {
  color: var(--ln-positive) !important;
  border-color: var(--ln-border) !important;
}
[data-theme-curated] .btn-outline-success:hover {
  background: var(--ln-positive-soft) !important;
  border-color: var(--ln-positive) !important;
  color: var(--ln-positive) !important;
}
[data-theme-curated] .btn-outline-info {
  color: var(--ln-accent) !important;
  border-color: var(--ln-border) !important;
}
[data-theme-curated] .btn-outline-info:hover {
  background: var(--ln-accent-soft) !important;
  border-color: var(--ln-accent) !important;
  color: var(--ln-accent) !important;
}
[data-theme-curated] .btn-outline-danger {
  color: var(--ln-negative) !important;
  border-color: var(--ln-border) !important;
}
[data-theme-curated] .btn-outline-danger:hover {
  background: var(--ln-negative-soft) !important;
  border-color: var(--ln-negative) !important;
  color: var(--ln-negative) !important;
}

/* Tables (para tablas fuera del chasis .w-table) */
[data-theme-curated] .table {
  font-size: 13px;
  color: var(--ln-fg);
  --bs-table-bg: transparent;
}
[data-theme-curated] .table > :not(caption) > * > * {
  padding: 8px 12px;
  background: transparent;
  border-bottom-color: var(--ln-border);
}
[data-theme-curated] .table > thead,
[data-theme-curated] .table .table-light,
[data-theme-curated] .table-light {
  background: var(--ln-surface-2) !important;
  --bs-table-bg: var(--ln-surface-2);
}
[data-theme-curated] .table > thead > tr > th {
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--ln-fg-muted) !important;
  background: var(--ln-surface-2) !important;
  border-bottom: 1px solid var(--ln-border);
}
[data-theme-curated] .table-hover tbody tr:hover {
  --bs-table-hover-bg: var(--ln-surface-2);
  background-color: var(--ln-surface-2) !important;
}
[data-theme-curated] .table-sm > :not(caption) > * > * { padding: 6px 10px; }

/* Badges — pills planas, no ".bg-*-subtle" saturadas */
[data-theme-curated] .badge {
  font-size: 10.5px !important;
  font-weight: 500 !important;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  padding: 3px 8px !important;
  border-radius: 999px !important;
  border: 1px solid transparent !important;
}
[data-theme-curated] .badge.bg-success-subtle,
[data-theme-curated] .badge.bg-success {
  background: var(--ln-positive-soft) !important;
  color: var(--ln-positive) !important;
  border-color: transparent !important;
}
[data-theme-curated] .badge.bg-primary-subtle,
[data-theme-curated] .badge.bg-primary {
  background: var(--ln-accent-soft) !important;
  color: var(--ln-accent) !important;
  border-color: transparent !important;
}
[data-theme-curated] .badge.bg-secondary-subtle,
[data-theme-curated] .badge.bg-secondary {
  background: var(--ln-surface-3) !important;
  color: var(--ln-fg-muted) !important;
  border-color: transparent !important;
}
[data-theme-curated] .badge.bg-light {
  background: var(--ln-surface-2) !important;
  color: var(--ln-fg-muted) !important;
}
[data-theme-curated] .badge.bg-dark {
  background: var(--ln-fg) !important;
  color: var(--ln-surface) !important;
}
[data-theme-curated] .badge.text-dark { color: var(--ln-fg) !important; }
[data-theme-curated] .badge.text-bg-secondary { background: var(--ln-surface-3) !important; color: var(--ln-fg-muted) !important; }
[data-theme-curated] .badge.text-bg-dark { background: var(--ln-fg) !important; color: var(--ln-accent-fg) !important; }

/* Alerts — sin border-left (ya implícito por Bootstrap alert-left) — usar Linear banner */
[data-theme-curated] .alert {
  padding: 10px 14px !important;
  border-radius: var(--ln-radius-md) !important;
  border: 1px solid var(--ln-border) !important;
  font-size: 13px !important;
  box-shadow: none !important;
}
[data-theme-curated] .alert-warning {
  background: var(--ln-warning-soft) !important;
  color: oklch(0.32 0.12 75) !important;
  border-color: oklch(0.85 0.08 75) !important;
}
[data-theme-curated] .alert-success {
  background: var(--ln-positive-soft) !important;
  color: var(--ln-positive) !important;
  border-color: oklch(0.85 0.08 150) !important;
}
[data-theme-curated] .alert-danger {
  background: var(--ln-negative-soft) !important;
  color: var(--ln-negative) !important;
  border-color: oklch(0.85 0.1 25) !important;
}
[data-theme-curated] .alert-info {
  background: var(--ln-accent-soft) !important;
  color: var(--ln-accent) !important;
  border-color: oklch(0.85 0.08 260) !important;
}
[data-theme-curated] .alert strong { font-weight: 500; }
[data-theme-curated] .alert > .bi { font-size: 14px; flex-shrink: 0; }

/* List unstyled spacing dentro de cards */
[data-theme-curated] .list-unstyled li.d-flex {
  font-size: 13px;
  padding: 8px 0 !important;
  border-color: var(--ln-border) !important;
}

/* Toast (Bootstrap) */
[data-theme-curated] .toast {
  background: var(--ln-fg) !important;
  color: var(--ln-accent-fg) !important;
  border: none !important;
  border-radius: var(--ln-radius-md) !important;
  box-shadow: var(--ln-shadow-toast) !important;
  font-size: 13px;
}
[data-theme-curated] .toast.bg-success { background: var(--ln-positive) !important; color: var(--ln-accent-fg) !important; }
[data-theme-curated] .toast.bg-danger  { background: var(--ln-negative) !important; color: var(--ln-accent-fg) !important; }
[data-theme-curated] .toast .toast-body { padding: 10px 14px; }
[data-theme-curated] .toast .btn-close { filter: invert(1) brightness(2) opacity(0.7); }

/* Helpers — reducir el impacto visual de "icon-rounded-square" en tablas legacy */
[data-theme-curated] .form-check-input.cfg-titulo:checked,
[data-theme-curated] .form-check-input.cfg-visible:checked,
[data-theme-curated] .form-check-input.reporte-check:checked {
  background-color: var(--ln-accent) !important;
  border-color: var(--ln-accent) !important;
}

/* Breadcrumb legacy (ol.breadcrumb) si alguna vista aún lo usa */
[data-theme-curated] .breadcrumb {
  background: transparent;
  padding: 0;
  font-size: 12.5px;
}
[data-theme-curated] .breadcrumb-item a { color: var(--ln-fg-muted); text-decoration: none; }
[data-theme-curated] .breadcrumb-item a:hover { color: var(--ln-accent); }
[data-theme-curated] .breadcrumb-item.active { color: var(--ln-fg); font-weight: 500; }
[data-theme-curated] .breadcrumb-item + .breadcrumb-item::before { color: var(--ln-fg-faint); content: "/"; }

/* Vertical rule (.vr) */
[data-theme-curated] .vr {
  background: var(--ln-border);
  opacity: 1;
  width: 1px;
}

/* "optgroup" en selectores */
[data-theme-curated] optgroup {
  color: var(--ln-fg-muted);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.03em;
  text-transform: uppercase;
}

/* Modal base (para /sistemas/configuracion que aún usa confirm()) — solo por si sale algún modal */
[data-theme-curated] .modal-content {
  background: var(--ln-surface);
  border: 1px solid var(--ln-border);
  border-radius: var(--ln-radius-xl);
  box-shadow: var(--ln-shadow-drawer);
}

/* Bootstrap bg-*-subtle utility classes (cuando se usan en contenedores, no badges) */
[data-theme-curated] div.bg-success-subtle,
[data-theme-curated] .p-2.bg-success-subtle {
  background: var(--ln-positive-soft) !important;
  color: var(--ln-positive);
  border-radius: var(--ln-radius-md);
  border: 1px solid oklch(0.88 0.06 150);
}
[data-theme-curated] div.bg-primary-subtle,
[data-theme-curated] .p-2.bg-primary-subtle {
  background: var(--ln-accent-soft) !important;
  color: var(--ln-accent);
  border-radius: var(--ln-radius-md);
  border: 1px solid oklch(0.88 0.05 260);
}
[data-theme-curated] div.bg-secondary-subtle,
[data-theme-curated] .p-2.bg-secondary-subtle {
  background: var(--ln-surface-2) !important;
  color: var(--ln-fg);
  border-radius: var(--ln-radius-md);
  border: 1px solid var(--ln-border);
}
[data-theme-curated] div.bg-info-subtle {
  background: var(--ln-accent-soft) !important;
  color: var(--ln-accent);
  border: 1px solid oklch(0.88 0.05 260);
  border-radius: var(--ln-radius-md);
}
[data-theme-curated] div.bg-warning-subtle {
  background: var(--ln-warning-soft) !important;
  color: oklch(0.35 0.12 75);
  border: 1px solid oklch(0.85 0.08 75);
  border-radius: var(--ln-radius-md);
}

/* Text utilities legacy */
[data-theme-curated] .text-primary   { color: var(--ln-accent) !important; }
[data-theme-curated] .text-success   { color: var(--ln-positive) !important; }
[data-theme-curated] .text-danger    { color: var(--ln-negative) !important; }
[data-theme-curated] .text-info      { color: var(--ln-accent) !important; }
[data-theme-curated] .text-warning   { color: oklch(0.6 0.14 75) !important; }
[data-theme-curated] .text-secondary { color: var(--ln-fg-muted) !important; }
[data-theme-curated] .text-muted     { color: var(--ln-fg-muted) !important; }
[data-theme-curated] .text-body      { color: var(--ln-fg) !important; }
[data-theme-curated] .text-body-secondary { color: var(--ln-fg-muted) !important; }
[data-theme-curated] .text-dark      { color: var(--ln-fg) !important; }
[data-theme-curated] .text-warning-emphasis { color: oklch(0.35 0.12 75) !important; }

/* Bordered utility boxes (usado en ayuda.ejs para los métodos/métricas) */
[data-theme-curated] div.border.rounded {
  border-color: var(--ln-border) !important;
  border-radius: var(--ln-radius-md) !important;
  background: var(--ln-surface);
}

/* Tables bordered (legacy en ayuda) — atenuar bordes */
[data-theme-curated] .table-bordered > :not(caption) > * > * {
  border-color: var(--ln-border) !important;
}
[data-theme-curated] .table-borderless > :not(caption) > * > * {
  border: none;
}

/* Links dentro de contenido (ayuda) */
[data-theme-curated] .card-body a:not(.btn):not(.dropdown-item) {
  color: var(--ln-accent);
  text-decoration: none;
}
[data-theme-curated] .card-body a:not(.btn):not(.dropdown-item):hover {
  text-decoration: underline;
  text-decoration-color: var(--ln-accent);
}

/* List-unstyled en sidebar cards (grupos de reportes en ayuda) */
[data-theme-curated] .list-unstyled li.d-flex span > .bi {
  color: var(--ln-fg-subtle);
}

/* Btn-outline-warning y btn-outline-info (usados en ayuda y sistemas) */
[data-theme-curated] .btn-outline-warning {
  color: oklch(0.55 0.14 75) !important;
  border-color: var(--ln-border) !important;
}
[data-theme-curated] .btn-outline-warning:hover {
  background: var(--ln-warning-soft) !important;
  border-color: oklch(0.7 0.15 75) !important;
  color: oklch(0.4 0.13 75) !important;
}

/* ──────────────────────────────────────────────────────────────────────
   Inicio (/inicio)
   ────────────────────────────────────────────────────────────────────── */
[data-theme-curated] .inicio {
  max-width: 880px;
  padding-top: var(--ln-space-8);
  display: flex;
  flex-direction: column;
  gap: var(--ln-space-8);
}

[data-theme-curated] .inicio-hello h1 {
  font-family: var(--ln-font-display);
  font-size: 34px;
  font-weight: 500;
  letter-spacing: -0.025em;
  line-height: 1.12;
  color: var(--ln-fg);
  margin: 0 0 var(--ln-space-2);
}
[data-theme-curated] .inicio-hello p {
  font-size: 15px;
  color: var(--ln-fg-muted);
  margin: 0;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.005em;
}
[data-theme-curated] .inicio-hello strong { color: var(--ln-fg); font-weight: 500; }

/* Stats — inline, sin cards */
[data-theme-curated] .inicio-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 0;
  padding: var(--ln-space-5) 0;
  border-top: 1px solid var(--ln-border);
  border-bottom: 1px solid var(--ln-border);
}
[data-theme-curated] .inicio-stat {
  padding: 0 var(--ln-space-5);
  border-left: 1px solid var(--ln-border);
  display: flex;
  flex-direction: column;
  gap: 6px;
}
[data-theme-curated] .inicio-stat:first-child {
  border-left: none;
  padding-left: 0;
}
[data-theme-curated] .inicio-stat-num {
  font-family: var(--ln-font-mono);
  font-size: 32px;
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
  line-height: 1;
  color: var(--ln-fg);
}
[data-theme-curated] .inicio-stat-label {
  font-size: 11.5px;
  font-weight: 500;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ln-fg-muted);
}

/* CTA */
[data-theme-curated] .inicio-cta {
  display: flex;
  align-items: center;
  gap: var(--ln-space-4);
  flex-wrap: wrap;
}
[data-theme-curated] .btn-primary-ln--lg {
  padding: 12px 20px;
  font-size: 14px;
  border-radius: var(--ln-radius-md);
}
[data-theme-curated] .btn-primary-ln--lg i { font-size: 14px; }
[data-theme-curated] .inicio-cta-hint {
  font-size: 12.5px;
  color: var(--ln-fg-subtle);
  letter-spacing: -0.005em;
}

/* Quick links — lista de links textuales */
[data-theme-curated] .inicio-links h3 {
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ln-fg-muted);
  margin: 0 0 var(--ln-space-3);
}
[data-theme-curated] .inicio-links-list {
  display: flex;
  flex-direction: column;
  border-top: 1px solid var(--ln-border);
}
[data-theme-curated] .inicio-link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--ln-space-3);
  padding: var(--ln-space-3) 0;
  border-bottom: 1px solid var(--ln-border);
  color: var(--ln-fg);
  text-decoration: none;
  font-size: 14px;
  transition: color var(--ln-dur-fast) var(--ln-ease),
              padding var(--ln-dur-fast) var(--ln-ease);
}
[data-theme-curated] .inicio-link:hover {
  color: var(--ln-accent);
  padding-left: 4px;
}
[data-theme-curated] .inicio-link-body {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  flex-grow: 1;
}
[data-theme-curated] .inicio-link-title { font-weight: 500; }
[data-theme-curated] .inicio-link-desc  {
  font-size: 12.5px;
  color: var(--ln-fg-muted);
  line-height: 1.4;
}
[data-theme-curated] .inicio-link-arrow {
  color: var(--ln-fg-faint);
  font-size: 13px;
  transition: transform var(--ln-dur-fast) var(--ln-ease),
              color var(--ln-dur-fast) var(--ln-ease);
}
[data-theme-curated] .inicio-link:hover .inicio-link-arrow {
  transform: translateX(3px);
  color: var(--ln-accent);
}

@media (max-width: 640px) {
  [data-theme-curated] .inicio-stats { grid-template-columns: 1fr; gap: var(--ln-space-3); padding: var(--ln-space-4) 0; }
  [data-theme-curated] .inicio-stat { border-left: none; padding: 0; padding-top: var(--ln-space-3); border-top: 1px solid var(--ln-border); }
  [data-theme-curated] .inicio-stat:first-child { padding-top: 0; border-top: none; }
  [data-theme-curated] .inicio-hello h1 { font-size: 26px; }
}

/* ──────────────────────────────────────────────────────────────────────
   Reporte individual
   ────────────────────────────────────────────────────────────────────── */
[data-theme-curated] .rpt-breadcrumb {
  display: flex;
  align-items: center;
  gap: var(--ln-space-2);
  font-size: 12.5px;
  color: var(--ln-fg-muted);
  margin-bottom: var(--ln-space-4);
  letter-spacing: -0.005em;
}
[data-theme-curated] .rpt-breadcrumb a {
  color: var(--ln-fg-muted);
  text-decoration: none;
  transition: color var(--ln-dur-fast) var(--ln-ease);
}
[data-theme-curated] .rpt-breadcrumb a:hover { color: var(--ln-accent); }
[data-theme-curated] .rpt-breadcrumb-sep {
  color: var(--ln-fg-faint);
  user-select: none;
}
[data-theme-curated] .rpt-breadcrumb-current {
  color: var(--ln-fg);
  font-weight: 500;
}

/* Parameter summary bar */
[data-theme-curated] .rpt-params {
  display: flex;
  align-items: center;
  gap: var(--ln-space-3);
  padding: var(--ln-space-3) var(--ln-space-4);
  margin-bottom: var(--ln-space-4);
  background: var(--ln-surface);
  border: 1px solid var(--ln-border);
  border-radius: var(--ln-radius-md);
  flex-wrap: wrap;
}
[data-theme-curated] .rpt-params-items {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--ln-space-2);
  flex-grow: 1;
  font-size: 12.5px;
  min-width: 0;
}
[data-theme-curated] .rpt-params-label {
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ln-fg-muted);
}
[data-theme-curated] .rpt-params-val {
  color: var(--ln-fg);
  font-weight: 500;
  font-variant-numeric: tabular-nums;
}
[data-theme-curated] .rpt-params-chip {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  font-size: 11.5px;
  font-weight: 450;
  color: var(--ln-fg);
  background: var(--ln-surface-3);
  border-radius: 999px;
  white-space: nowrap;
}
[data-theme-curated] .rpt-params-chip--accent {
  background: var(--ln-accent-bg);
  color: var(--ln-accent);
  font-weight: 500;
}
[data-theme-curated] .rpt-params-divider {
  width: 1px;
  height: 14px;
  background: var(--ln-border);
  margin: 0 var(--ln-space-1);
}

/* Metadata strip debajo del widget */
[data-theme-curated] .rpt-meta {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: var(--ln-space-8);
  padding: var(--ln-space-6) 0 0;
  margin-top: var(--ln-space-6);
  border-top: 1px solid var(--ln-border);
}
[data-theme-curated] .rpt-meta-body {
  max-width: 70ch;
  color: var(--ln-fg-muted);
  font-size: 13.5px;
  line-height: 1.6;
}
[data-theme-curated] .rpt-meta-body h3 {
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ln-fg-muted);
  margin: 0 0 var(--ln-space-2);
}
[data-theme-curated] .rpt-meta-body p { margin: 0 0 var(--ln-space-2); }
[data-theme-curated] .rpt-meta-body p:last-child { margin-bottom: 0; }
[data-theme-curated] .rpt-meta-side {
  display: flex;
  flex-direction: column;
  gap: var(--ln-space-3);
  min-width: 180px;
}
[data-theme-curated] .rpt-meta-row {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding-bottom: var(--ln-space-2);
  border-bottom: 1px solid var(--ln-border);
}
[data-theme-curated] .rpt-meta-row:last-of-type { border-bottom: none; padding-bottom: 0; }
[data-theme-curated] .rpt-meta-key {
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ln-fg-muted);
}
[data-theme-curated] .rpt-meta-val {
  font-size: 13px;
  color: var(--ln-fg);
  font-weight: 500;
}

/* Empty state — cliente no seleccionado (estado-cuenta-clientes) */
[data-theme-curated] .rpt-empty-prompt {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--ln-space-3);
  padding: var(--ln-space-16) var(--ln-space-4);
  text-align: center;
  border: 1px solid var(--ln-border);
  border-radius: var(--ln-radius-lg);
  background: var(--ln-surface);
}
[data-theme-curated] .rpt-empty-prompt-mark {
  width: 56px; height: 56px;
  display: grid;
  place-items: center;
  background: var(--ln-surface-2);
  border: 1px solid var(--ln-border);
  border-radius: 50%;
  color: var(--ln-fg-subtle);
  font-size: 22px;
  margin-bottom: var(--ln-space-2);
}
[data-theme-curated] .rpt-empty-prompt h2 {
  font-size: 20px;
  font-weight: 500;
  letter-spacing: -0.015em;
  color: var(--ln-fg);
  margin: 0;
}
[data-theme-curated] .rpt-empty-prompt p {
  font-size: 13.5px;
  color: var(--ln-fg-muted);
  max-width: 48ch;
  margin: 0;
  line-height: 1.55;
}

@media (max-width: 768px) {
  [data-theme-curated] .rpt-meta {
    grid-template-columns: 1fr;
    gap: var(--ln-space-4);
  }
  [data-theme-curated] .rpt-meta-side { flex-direction: row; flex-wrap: wrap; gap: var(--ln-space-4); min-width: 0; }
  [data-theme-curated] .rpt-meta-row { border-bottom: none; padding-bottom: 0; }
  [data-theme-curated] .rpt-params { flex-direction: column; align-items: stretch; }
  [data-theme-curated] .rpt-params-items { width: 100%; }
}

/* ──────────────────────────────────────────────────────────────────────
   Modal params — light touch para consistencia con Linear
   (Se conserva el markup Bootstrap; solo se re-estiliza)
   ────────────────────────────────────────────────────────────────────── */
[data-theme-curated] #modalParams .modal-content {
  border: 1px solid var(--ln-border);
  border-radius: var(--ln-radius-xl);
  box-shadow: var(--ln-shadow-dropdown);
}
[data-theme-curated] #modalParams .modal-title {
  font-size: 15px;
  font-weight: 500;
  letter-spacing: -0.01em;
  color: var(--ln-fg);
}
[data-theme-curated] #modalParams .modal-title i { color: var(--ln-accent); }
[data-theme-curated] #modalParams .form-label {
  font-size: 11px !important;
  font-weight: 500 !important;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--ln-fg-muted) !important;
}
[data-theme-curated] #modalParams .form-select,
[data-theme-curated] #modalParams .form-control,
[data-theme-curated] #modalParams .form-control-sm {
  font-size: 13px;
  border-color: var(--ln-border);
  border-radius: var(--ln-radius-md);
}
[data-theme-curated] #modalParams .form-select:focus,
[data-theme-curated] #modalParams .form-control:focus {
  border-color: var(--ln-accent);
  box-shadow: 0 0 0 3px var(--ln-accent-soft);
}
[data-theme-curated] #modalParams .btn-primary {
  background: var(--ln-accent);
  border-color: var(--ln-accent);
}
[data-theme-curated] #modalParams .btn-primary:hover {
  background: var(--ln-accent-hover);
  border-color: var(--ln-accent-hover);
}
[data-theme-curated] #modalParams .btn-secondary {
  background: transparent;
  border-color: transparent;
  color: var(--ln-fg-muted);
}
[data-theme-curated] #modalParams .btn-secondary:hover {
  background: var(--ln-surface-2);
  color: var(--ln-fg);
}

/* ──────────────────────────────────────────────────────────────────────
   Responsive dashboard header
   ────────────────────────────────────────────────────────────────────── */
@media (max-width: 640px) {
  [data-theme-curated] .dash-header {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--ln-space-3);
  }
  [data-theme-curated] .dash-meta { width: 100%; justify-content: space-between; }
  [data-theme-curated] .chip-group {
    overflow-x: auto;
    flex-wrap: nowrap;
    margin: 0 calc(-1 * var(--ln-space-4)) var(--ln-space-4);
    padding: 0 var(--ln-space-4);
    scrollbar-width: none;
  }
  [data-theme-curated] .chip-group::-webkit-scrollbar { display: none; }
  [data-theme-curated] .ln-drawer { width: 100vw; max-width: 100vw; border-left: none; }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  [data-theme-curated] * {
    animation-duration: 1ms !important;
    transition-duration: 1ms !important;
  }
}
