/* FÉNIX 360 — MODULE BUNDLE V1
   AUTO-GENERATED. Edit source modules, then rebuild. */

/* >>> modules/inventory.css >>> */
/* ===== BEGIN MIGRATED SOURCE: legacy-aliases.css ===== */
/* ========================================================================== 
   FÉNIX 360 — LEGACY BRIDGE P02 (COMPATIBILITY MODE)
   --------------------------------------------------------------------------
   Objetivo:
   - Conectar Inventario + Compras + Conteo al Theme Core.
   - Mantener la apariencia cromática actual durante P02.
   - Centralizar los aliases para que P03 pueda hacer el rollout de marca
     cambiando esta capa, no decenas de plantillas/CSS.

   IMPORTANTE: estos tokens "legacy" son temporales. No deben ser usados por
   componentes nuevos. Los componentes nuevos usan --fx-color-*.
   ========================================================================== */

:root {
  /* Inventario shell actual (verde/turquesa). */
  --fx-legacy-inv-brand-dark: #064e3b;
  --fx-legacy-inv-brand-darker: #022c22;
  --fx-legacy-inv-brand-primary: #16a34a;
  --fx-legacy-inv-brand-primary-soft: #22c55e;

  --fx-legacy-inv-sidebar-bg-1: #052e25;
  --fx-legacy-inv-sidebar-bg-2: #021c17;
  --fx-legacy-inv-sidebar-bg-3: #063f32;
  --fx-legacy-inv-accent: #16a34a;
  --fx-legacy-inv-accent-2: #22c55e;
  --fx-legacy-inv-accent-soft: rgba(34, 197, 94, .12);
  --fx-legacy-inv-bg: #f3f6f8;

  /* Compras Premium actual. */
  --fx-legacy-cmp-blue: #2563eb;
  --fx-legacy-cmp-blue-dark: #1d4ed8;
  --fx-legacy-cmp-green: #059669;
  --fx-legacy-cmp-green-dark: #047857;
  --fx-legacy-cmp-border: #dbe3ee;

  /* Alias documentado para el rollout futuro de marca. P03 lo apuntará a
     --fx-color-primary sin tener que reabrir cada módulo. */
  --fx-rollout-brand-primary: var(--fx-color-primary);
}

/* --------------------------------------------------------------------------
   INVENTARIO — variables históricas -> capa central compat.
   Selector en body supera los :root embebidos del panel incluso si esos
   aparecen después en el HTML.
   -------------------------------------------------------------------------- */
html body.ct-app {
  --brand-dark: var(--fx-legacy-inv-brand-dark);
  --brand-darker: var(--fx-legacy-inv-brand-darker);
  --brand-primary: var(--fx-legacy-inv-brand-primary);
  --brand-primary-soft: var(--fx-legacy-inv-brand-primary-soft);
  --bg-app: #f8fafc;
  --text-main: #334155;

  --fx-sidebar-bg-1: var(--fx-legacy-inv-sidebar-bg-1);
  --fx-sidebar-bg-2: var(--fx-legacy-inv-sidebar-bg-2);
  --fx-sidebar-bg-3: var(--fx-legacy-inv-sidebar-bg-3);
  --fx-accent: var(--fx-legacy-inv-accent);
  --fx-accent-2: var(--fx-legacy-inv-accent-2);
  --fx-accent-soft: var(--fx-legacy-inv-accent-soft);

  --fx-bg: var(--fx-legacy-inv-bg);
  --fx-surface: #ffffff;
  --fx-surface-soft: #f8fafc;
  --fx-border: rgba(148, 163, 184, .28);
  --fx-text: #0f172a;
  --fx-muted: #64748b;
  --fx-muted-2: #94a3b8;
}

/* --------------------------------------------------------------------------
   COMPRAS PREMIUM — conserva P02 pixel-equivalent donde ya usaba variables.
   El selector añade html para ganar al bloque local aunque sea cargado después.
   -------------------------------------------------------------------------- */
html body.ct-app #compras.compras-ui-premium {
  --cmp-ui-ink: #0f172a;
  --cmp-ui-muted: #64748b;
  --cmp-ui-border: var(--fx-legacy-cmp-border);
  --cmp-ui-soft: #f8fafc;
  --cmp-ui-blue: var(--fx-legacy-cmp-blue);
  --cmp-ui-blue-dark: var(--fx-legacy-cmp-blue-dark);
  --cmp-ui-green: var(--fx-legacy-cmp-green);
  --cmp-ui-green-dark: var(--fx-legacy-cmp-green-dark);
  --cmp-ui-warning: var(--fx-color-warning);
  --cmp-ui-danger: var(--fx-color-danger);
}

/* --------------------------------------------------------------------------
   CONTEO OPERATIVO V2 — ya estaba prácticamente alineado con el azul FÉNIX.
   Aquí queda conectado al core sin editar el CSS que el JS carga dinámicamente.
   -------------------------------------------------------------------------- */
html body.ct-app #conteo-inventario {
  --invux-primary: var(--fx-color-primary);
  --invux-primary-dark: var(--fx-blue-700);
  --invux-ink: #0f172a;
  --invux-muted: #64748b;
  --invux-line: #e2e8f0;
  --invux-soft: #f8fafc;
  --invux-success: var(--fx-green-700);
  --invux-danger: var(--fx-color-danger);
}

/* ===== END MIGRATED SOURCE: legacy-aliases.css ===== */

/* ===== BEGIN MIGRATED SOURCE: brand-rollout-p03.css ===== */
/* ========================================================================== 
   FÉNIX 360 — BRAND ROLLOUT P03
   Scope: Inventario + Compras + Conteo (shell integrado por P02)
   Objetivo: mover identidad corporativa al azul FÉNIX sin alterar semántica.

   REGLA:
   - Azul  = marca / acción / selección / foco
   - Verde = éxito / guardado / completado / pagado
   - Ámbar = pendiente / advertencia
   - Rojo  = error / peligro / reverso
   ========================================================================== */

/* --------------------------------------------------------------------------
   INVENTARIO — shell histórico -> brand central
   -------------------------------------------------------------------------- */
html body.ct-app {
  --brand-dark: var(--fx-blue-900);
  --brand-darker: var(--fx-blue-950);
  --brand-primary: var(--fx-color-primary);
  --brand-primary-soft: var(--fx-blue-400);

  --fx-sidebar-bg-1: var(--fx-blue-900);
  --fx-sidebar-bg-2: var(--fx-blue-950);
  --fx-sidebar-bg-3: var(--fx-blue-800);
  --fx-accent: var(--fx-color-primary);
  --fx-accent-2: var(--fx-blue-400);
  --fx-accent-soft: var(--fx-color-primary-soft);

  background:
    radial-gradient(900px circle at 90% -10%, rgba(24, 119, 242, .10), transparent 45%),
    radial-gradient(900px circle at 10% 0%, rgba(24, 119, 242, .055), transparent 40%),
    var(--fx-bg);
}

html body.ct-app .sidebar {
  background:
    radial-gradient(700px circle at 20% 0%, rgba(24, 119, 242, .18), transparent 40%),
    linear-gradient(180deg, var(--fx-sidebar-bg-3) 0%, var(--fx-sidebar-bg-1) 42%, var(--fx-sidebar-bg-2) 100%);
}

html body.ct-app .sidebar .brand-badge {
  background: linear-gradient(135deg, var(--fx-color-primary), var(--fx-blue-400));
  box-shadow: 0 10px 24px var(--fx-color-focus), inset 0 1px 0 rgba(255,255,255,.35);
}

html body.ct-app .sidebar .nav-link.active {
  background: linear-gradient(135deg, var(--fx-color-primary), var(--fx-color-primary-hover));
  box-shadow: 0 12px 22px var(--fx-color-focus);
}

html body.ct-app .sidebar .nav-link.active::before {
  background: var(--fx-blue-200);
  box-shadow: 0 0 14px var(--fx-color-focus);
}

html body.ct-app .fx-sidebar-toggle:focus-visible {
  box-shadow: 0 0 0 var(--fx-focus-width) var(--fx-color-focus);
}

/* Top navigation. También sirve como guard rail si una plantilla antigua aún
   conserva valores físicos: P03 hace que la UI obedezca al Theme Core. */
html body.ct-app .fx-inv-topnav-brandmark {
  background: linear-gradient(135deg, var(--fx-color-primary), var(--fx-blue-400));
  box-shadow: 0 7px 17px var(--fx-color-focus);
}

html body.ct-app .fx-inv-topnav-nav > .nav-link.active,
html body.ct-app .fx-inv-nav-group:has(.nav-link.active) > .fx-inv-nav-toggle {
  background: var(--fx-color-primary-soft);
  color: var(--fx-color-primary);
  box-shadow: inset 0 0 0 1px var(--fx-color-primary-border);
}

html body.ct-app .fx-inv-topnav-nav > .nav-link.active i,
html body.ct-app .fx-inv-nav-group:has(.nav-link.active) > .fx-inv-nav-toggle i {
  color: var(--fx-color-primary);
}

html body.ct-app .fx-inv-dropdown .nav-link.active {
  background: var(--fx-color-primary-soft);
  color: var(--fx-color-primary);
}

/* --------------------------------------------------------------------------
   COMPRAS — identidad de marca. Los verdes semánticos permanecen intactos.
   -------------------------------------------------------------------------- */
html body.ct-app #compras {
  --erp-accent: var(--fx-color-primary);
  --erp-accent-hover: var(--fx-color-primary-hover);
  --cmp-blue: var(--fx-color-primary);
  --cmp-blue-dark: var(--fx-color-primary-hover);
}

html body.ct-app #compras.compras-ui-premium {
  --cmp-ui-blue: var(--fx-color-primary);
  --cmp-ui-blue-dark: var(--fx-color-primary-hover);
}

/* Pestaña/acción activa: deja de usar slate como identidad. */
html body.ct-app #compras #tabsCompras .nav-link.active {
  background: var(--fx-color-primary);
  color: var(--fx-color-on-primary);
  border-color: var(--fx-color-primary);
  box-shadow: 0 10px 22px var(--fx-color-focus);
}

html body.ct-app #compras #tabsCompras .nav-link:hover:not(.active) {
  color: var(--fx-color-primary-hover);
  background: var(--fx-color-primary-soft);
}

/* Línea de identidad del comprobante: familia azul FÉNIX. Los modos especiales
   (informal/nota) conservan sus colores informativos definidos por el módulo. */
html body.ct-app #compras .compra-header:not(.modo-informal):not(.modo-nota)::before {
  background: linear-gradient(90deg, var(--fx-color-primary), var(--fx-blue-300));
}

html body.ct-app #compras .compras-section-title-icon,
html body.ct-app #compras.compras-ui-premium .cmp-payment-icon {
  color: var(--fx-color-primary);
  background: var(--fx-color-primary-soft);
}

html body.ct-app #compras .compras-provider-box:focus-within,
html body.ct-app #compras .compras-product-box:focus-within {
  border-color: var(--fx-color-primary-border);
  box-shadow: 0 0 0 4px var(--fx-color-focus), var(--fx-shadow-surface) !important;
}

html body.ct-app #compras.compras-ui-premium .cmp-grid-input:focus {
  border-color: var(--fx-color-primary) !important;
  box-shadow: 0 0 0 3px var(--fx-color-focus) !important;
}

/* Totales monetarios son información/brand, no un estado de éxito. */
html body.ct-app #compras .sticky-checkout.compras-checkout #total_compra_resumen,
html body.ct-app #compras #total_compra_resumen {
  color: var(--fx-color-primary) !important;
}

html body.ct-app #compras.compras-ui-premium .cmp-payment-total b,
html body.ct-app #compras.compras-ui-premium .cmp-checkout-total b {
  color: var(--fx-color-primary) !important;
}

/* Icono contextual de Nueva compra = identidad; borrador guardado sigue verde. */
html body.ct-app #compras.compras-ui-premium .cmp-context-main i {
  color: var(--fx-color-primary);
}

/* CTA de registrar compra: marca azul. Disabled conserva gris. */
html body.ct-app #compras .btn-checkout:not(:disabled),
html body.ct-app #compras.compras-ui-premium .cmp-checkout-bar #btn-registrar-compra:not(:disabled) {
  color: var(--fx-color-on-primary);
  background: linear-gradient(135deg, var(--fx-color-primary), var(--fx-color-primary-hover));
  border-color: var(--fx-color-primary);
  box-shadow: 0 8px 20px var(--fx-color-focus);
}

html body.ct-app #compras .btn-checkout:not(:disabled):hover,
html body.ct-app #compras.compras-ui-premium .cmp-checkout-bar #btn-registrar-compra.is-ready:not(:disabled):hover {
  background: linear-gradient(135deg, var(--fx-color-primary-hover), var(--fx-color-primary-active));
  border-color: var(--fx-color-primary-hover);
}

/* --------------------------------------------------------------------------
   CONTEO — ya nació azul; P03 únicamente explicita que el brand viene del core.
   -------------------------------------------------------------------------- */
html body.ct-app #conteo-inventario {
  --invux-primary: var(--fx-color-primary);
  --invux-primary-dark: var(--fx-color-primary-active);
}

/* ===== END MIGRATED SOURCE: brand-rollout-p03.css ===== */

/* ===== BEGIN MIGRATED SOURCE: brand-cleanup-p03-1.css ===== */
/* ========================================================================== 
   FÉNIX 360 — BRAND CLEANUP P03.1
   Scope: shell Inventario ya integrado por P02/P03.
   Objetivo: eliminar usos de verde "success" empleados como identidad visual.

   REGLA:
   - Azul  = marca / módulo / acción / selección
   - Verde = éxito / guardado / completado / pagado
   ========================================================================== */

/* Identificador de módulo: no es un estado de éxito. */
html body.ct-app .fx-module-brand-badge {
  color: var(--fx-color-on-primary) !important;
  background: linear-gradient(135deg, var(--fx-color-primary), var(--fx-color-primary-hover)) !important;
  border: 1px solid var(--fx-color-primary) !important;
  box-shadow: 0 6px 16px var(--fx-color-focus);
}

/* Iconos/textos de identidad o capacidad del módulo. */
html body.ct-app .fx-brand-icon,
html body.ct-app .fx-brand-text {
  color: var(--fx-color-primary) !important;
}

/* Variante suave disponible para futuros identificadores no-CTA. */
html body.ct-app .fx-brand-soft {
  color: var(--fx-color-primary) !important;
  background: var(--fx-color-primary-soft) !important;
  border-color: var(--fx-color-primary-border) !important;
}

/* ===== END MIGRATED SOURCE: brand-cleanup-p03-1.css ===== */


/* <<< modules/inventory.css <<< */

/* >>> modules/enterprise.css >>> */
/* ===== BEGIN MIGRATED SOURCE: legacy-aliases-p04.css ===== */
/* ========================================================================== 
   FÉNIX 360 — LEGACY ALIASES P04 (COMPATIBILITY MODE)
   Scope: Contabilidad + Configuración + Servicio Técnico.

   P04 NO pretende recolorear. Centraliza los nombres históricos en una sola
   capa preservando los valores actuales. P04.1 podrá apuntar BRAND al Theme
   Core sin reabrir cada CSS del módulo.
   ========================================================================== */

:root {
  /* ---------------- CONTABILIDAD: paleta histórica actual ---------------- */
  --fx-legacy-ct-bg: #f6f8fb;
  --fx-legacy-ct-surface: #ffffff;
  --fx-legacy-ct-surface-2: #fbfcfe;
  --fx-legacy-ct-border: #e6ebf2;
  --fx-legacy-ct-text: #0f172a;
  --fx-legacy-ct-muted: #64748b;
  --fx-legacy-ct-accent: #13b4a6;
  --fx-legacy-ct-accent-2: #0ea5a4;
  --fx-legacy-ct-accent-soft: rgba(19, 180, 166, .12);
  --fx-legacy-ct-menu-bg: #0f766e;
  --fx-legacy-ct-menu-bg-2: #0b5f58;

  --fx-legacy-ct-brand: #2563eb;
  --fx-legacy-ct-brand-dark: #1d4ed8;
  --fx-legacy-ct-brand-deep: #1e40af;
  --fx-legacy-ct-brand-soft: #dbeafe;
  --fx-legacy-ct-brand-light: #eff6ff;
  --fx-legacy-ct-success: #10b981;
  --fx-legacy-ct-warning: #f59e0b;
  --fx-legacy-ct-danger: #ef4444;
  --fx-legacy-ct-info: #06b6d4;

  /* ---------------- CONFIGURACIÓN: Centro Admin V1 ---------------- */
  --fx-legacy-cfg-bg: #f4f7fb;
  --fx-legacy-cfg-surface: #ffffff;
  --fx-legacy-cfg-surface-soft: #f8fafc;
  --fx-legacy-cfg-border: #e4eaf2;
  --fx-legacy-cfg-border-strong: #d7dfeb;
  --fx-legacy-cfg-text: #172033;
  --fx-legacy-cfg-muted: #667085;
  --fx-legacy-cfg-primary: #2357d8;
  --fx-legacy-cfg-primary-dark: #193fa5;
  --fx-legacy-cfg-primary-soft: #eef3ff;
  --fx-legacy-cfg-danger: #d92d20;
  --fx-legacy-cfg-success: #12805c;
  --fx-legacy-cfg-warning: #b54708;

  /* ---------------- SERVICIO TÉCNICO: paleta histórica actual ---------------- */
  --fx-legacy-st-primary: #2563eb;
  --fx-legacy-st-primary-hover: #1d4ed8;
  --fx-legacy-st-primary-soft: #eaf2ff;
  --fx-legacy-st-brand-dark: #0f172a;
  --fx-legacy-st-nav-bg: #1e293b;
  --fx-legacy-st-bg-light: #f8fafc;
  --fx-legacy-st-text-main: #334155;
  --fx-legacy-st-text-muted: #94a3b8;
  --fx-legacy-st-success: #16a34a;
  --fx-legacy-st-warning: #f59e0b;
  --fx-legacy-st-info: #0ea5e9;
  --fx-legacy-st-danger: #ef4444;
  --fx-legacy-st-indigo: #3730a3;
  --fx-legacy-st-teal: #0f766e;
  --fx-legacy-st-accent-1: #14b8a6;
  --fx-legacy-st-accent-2: #7c3aed;
}

/* CONTABILIDAD ------------------------------------------------------------ */
html body.ct-app[data-fx-module="contabilidad"] {
  --ct-bg: var(--fx-legacy-ct-bg);
  --ct-surface: var(--fx-legacy-ct-surface);
  --ct-surface-2: var(--fx-legacy-ct-surface-2);
  --ct-border: var(--fx-legacy-ct-border);
  --ct-text: var(--fx-legacy-ct-text);
  --ct-muted: var(--fx-legacy-ct-muted);
  --ct-accent: var(--fx-legacy-ct-accent);
  --ct-accent-2: var(--fx-legacy-ct-accent-2);
  --ct-accent-soft: var(--fx-legacy-ct-accent-soft);
  --ct-menu-bg: var(--fx-legacy-ct-menu-bg);
  --ct-menu-bg-2: var(--fx-legacy-ct-menu-bg-2);

  --fx-brand: var(--fx-legacy-ct-brand);
  --fx-brand-dark: var(--fx-legacy-ct-brand-dark);
  --fx-brand-deep: var(--fx-legacy-ct-brand-deep);
  --fx-brand-soft: var(--fx-legacy-ct-brand-soft);
  --fx-brand-light: var(--fx-legacy-ct-brand-light);
  --fx-success: var(--fx-legacy-ct-success);
  --fx-success-soft: #ecfdf5;
  --fx-warning: var(--fx-legacy-ct-warning);
  --fx-warning-soft: #fffbeb;
  --fx-danger: var(--fx-legacy-ct-danger);
  --fx-danger-soft: #fef2f2;
  --fx-info: var(--fx-legacy-ct-info);
  --fx-info-soft: #ecfeff;
  --fx-bg: #f8fafc;
  --fx-bg-2: #f1f5f9;
  --fx-surface: #ffffff;
  --fx-surface-soft: #f8fafc;
  --fx-border: #e2e8f0;
  --fx-border-soft: #eef2f7;
  --fx-text-main: #0f172a;
  --fx-text-body: #334155;
  --fx-text-muted: #64748b;
  --fx-text-soft: #94a3b8;
}

/* CONFIGURACIÓN ----------------------------------------------------------- */
html body #configuraciones-panel.cfg-admin-v1 {
  --cfg-bg: var(--fx-legacy-cfg-bg);
  --cfg-surface: var(--fx-legacy-cfg-surface);
  --cfg-surface-soft: var(--fx-legacy-cfg-surface-soft);
  --cfg-border: var(--fx-legacy-cfg-border);
  --cfg-border-strong: var(--fx-legacy-cfg-border-strong);
  --cfg-text: var(--fx-legacy-cfg-text);
  --cfg-muted: var(--fx-legacy-cfg-muted);
  --cfg-primary: var(--fx-legacy-cfg-primary);
  --cfg-primary-dark: var(--fx-legacy-cfg-primary-dark);
  --cfg-primary-soft: var(--fx-legacy-cfg-primary-soft);
  --cfg-danger: var(--fx-legacy-cfg-danger);
  --cfg-success: var(--fx-legacy-cfg-success);
  --cfg-warning: var(--fx-legacy-cfg-warning);
}

/* SERVICIO TÉCNICO -------------------------------------------------------- */
html body[data-fx-module="servicio-tecnico"] {
  /* Variables del shell principal */
  --brand-dark: var(--fx-legacy-st-brand-dark);
  --brand-primary: var(--fx-legacy-st-primary);
  --brand-primary-hover: var(--fx-legacy-st-primary-hover);
  --nav-bg: var(--fx-legacy-st-nav-bg);
  --bg-light: var(--fx-legacy-st-bg-light);
  --text-main: var(--fx-legacy-st-text-main);
  --text-muted: var(--fx-legacy-st-text-muted);

  /* Nombres históricos del CSS de Taller. */
  --rojo-principal: var(--fx-legacy-st-primary);
  --rojo-hover: var(--fx-legacy-st-primary-hover);
  --rojo-suave: var(--fx-legacy-st-primary-soft);
  --accent-1: var(--fx-legacy-st-accent-1);
  --accent-2: var(--fx-legacy-st-accent-2);

  --brand: var(--fx-legacy-st-primary);
  --brand-700: var(--fx-legacy-st-primary-hover);
  --ok: var(--fx-legacy-st-success);
  --warn: var(--fx-legacy-st-warning);
  --info: var(--fx-legacy-st-info);
  --danger: var(--fx-legacy-st-danger);
  --indigo: var(--fx-legacy-st-indigo);
  --teal: var(--fx-legacy-st-teal);
}

/* ===== END MIGRATED SOURCE: legacy-aliases-p04.css ===== */

/* ===== BEGIN MIGRATED SOURCE: brand-rollout-p04-1.css ===== */
/* ========================================================================== 
   FÉNIX 360 — BRAND ROLLOUT P04.1
   Scope: Contabilidad + Configuración + Servicio Técnico.

   Regla visual:
   - AZUL  = marca / navegación / acción primaria / selección
   - VERDE = éxito
   - ÁMBAR = advertencia / pendiente
   - ROJO  = error / peligro
   - CIAN  = información

   Carga DESPUÉS de legacy-aliases-p04.css.
   ========================================================================== */

/* CONTABILIDAD ------------------------------------------------------------ */
html body.ct-app[data-fx-module="contabilidad"] {
  --ct-accent: var(--fx-color-primary);
  --ct-accent-2: var(--fx-color-primary-hover);
  --ct-accent-soft: var(--fx-color-primary-soft);

  /* El sidebar histórico teal pasa a azul FÉNIX oscuro. */
  --ct-menu-bg: var(--fx-color-primary-strong);
  --ct-menu-bg-2: var(--fx-blue-900);

  --fx-brand: var(--fx-color-primary);
  --fx-brand-dark: var(--fx-color-primary-hover);
  --fx-brand-deep: var(--fx-color-primary-active);
  --fx-brand-soft: var(--fx-color-primary-soft);
  --fx-brand-light: var(--fx-blue-50);

  --fx-success: var(--fx-color-success);
  --fx-success-soft: var(--fx-color-success-soft);
  --fx-warning: var(--fx-color-warning);
  --fx-warning-soft: var(--fx-color-warning-soft);
  --fx-danger: var(--fx-color-danger);
  --fx-danger-soft: var(--fx-color-danger-soft);
  --fx-info: var(--fx-color-info);
  --fx-info-soft: var(--fx-color-info-soft);
}

/* CONFIGURACIÓN ----------------------------------------------------------- */
html body #configuraciones-panel.cfg-admin-v1 {
  --cfg-primary: var(--fx-color-primary);
  --cfg-primary-dark: var(--fx-color-primary-hover);
  --cfg-primary-soft: var(--fx-color-primary-soft);

  --cfg-success: var(--fx-color-success);
  --cfg-warning: var(--fx-color-warning);
  --cfg-danger: var(--fx-color-danger);
}

/* Hardcodes de marca heredados que todavía no consumían --cfg-primary. */
#configuraciones-panel.cfg-admin-v1 .cfg-brand-mark {
  background: linear-gradient(
    145deg,
    var(--fx-color-primary),
    var(--fx-color-primary-active)
  );
  box-shadow: 0 10px 22px rgba(24, 119, 242, .23);
}

#configuraciones-panel.cfg-admin-v1 .cfg-menu__item.active {
  border-color: var(--fx-color-primary-border);
  background: linear-gradient(
    90deg,
    var(--fx-color-primary-soft),
    var(--fx-color-surface-hover)
  );
}

#configuraciones-panel.cfg-admin-v1 .cfg-tone-blue {
  background: var(--fx-color-primary-soft);
  color: var(--fx-color-primary);
}

#configuraciones-panel.cfg-admin-v1 .cfg-security-card__icon:not(.cfg-security-card__icon--google) {
  background: var(--fx-color-primary-soft);
}

/* SERVICIO TÉCNICO / TALLER --------------------------------------------- */
html body[data-fx-module="servicio-tecnico"] {
  --brand-primary: var(--fx-color-primary);
  --brand-primary-hover: var(--fx-color-primary-hover);

  /* Nombres históricos conservados por compatibilidad; ya apuntan al Core. */
  --rojo-principal: var(--fx-color-primary);
  --rojo-hover: var(--fx-color-primary-hover);
  --rojo-suave: var(--fx-color-primary-soft);

  --brand: var(--fx-color-primary);
  --brand-700: var(--fx-color-primary-hover);

  --ok: var(--fx-color-success);
  --warn: var(--fx-color-warning);
  --info: var(--fx-color-info);
  --danger: var(--fx-color-danger);
}

/* Hardcodes azules heredados del Taller. Se centralizan visualmente aquí. */
body[data-fx-module="servicio-tecnico"] .table thead {
  background: linear-gradient(
    180deg,
    var(--fx-color-primary),
    var(--fx-color-primary-hover)
  );
}

body[data-fx-module="servicio-tecnico"] .navbar-nav .nav-link:hover {
  background-color: var(--fx-color-primary-soft);
  color: var(--fx-color-primary);
}

body[data-fx-module="servicio-tecnico"] #ordenes-servicio .bg-danger {
  /* En este HTML heredado .bg-danger se usa como CABECERA, no como error. */
  background: linear-gradient(
    135deg,
    var(--fx-color-primary) 0%,
    var(--fx-color-primary-hover) 100%
  ) !important;
  color: var(--fx-color-on-primary) !important;
}

body[data-fx-module="servicio-tecnico"] #ordenes-servicio .table-danger {
  /* Igual que arriba: clase Bootstrap heredada reutilizada como encabezado. */
  --bs-table-bg: var(--fx-color-primary) !important;
  --bs-table-color: var(--fx-color-on-primary) !important;
  background-color: var(--fx-color-primary) !important;
  color: var(--fx-color-on-primary) !important;
}

/* ===== END MIGRATED SOURCE: brand-rollout-p04-1.css ===== */


/* <<< modules/enterprise.css <<< */

/* >>> modules/pos-cash.css >>> */
/* ===== BEGIN MIGRATED SOURCE: legacy-aliases-p05.css ===== */
/* ========================================================================== 
   FÉNIX 360 — LEGACY ALIASES P05 (COMPATIBILITY MODE)
   Scope: POS operativo + Ventas + TPV + Caja.

   P05 NO recolorea deliberadamente. Conecta variables/paletas históricas a
   una capa central para que P05.1 pueda hacer rollout de marca sin editar
   los CSS/HTML originales de cada módulo.
   ========================================================================== */

:root {
  /* POS operativo embebido */
  --fx-legacy-pos-bg: #f5f7fb;
  --fx-legacy-pos-card: #ffffff;
  --fx-legacy-pos-line: #e4e9f0;
  --fx-legacy-pos-text: #0f172a;
  --fx-legacy-pos-muted: #64748b;
  --fx-legacy-pos-blue: #0878f9;
  --fx-legacy-pos-green: #12894b;
  --fx-legacy-pos-green-soft: #ecfdf3;
  --fx-legacy-pos-red: #ef3340;
  --fx-legacy-pos-primary-soft: rgba(13,110,253,.08);
  --fx-legacy-pos-success-soft: rgba(25,135,84,.08);

  /* Ventas operativas (Alegra/Fénix legacy) */
  --fx-legacy-sales-brand: #00c48c;
  --fx-legacy-sales-brand-dark: #00a070;
  --fx-legacy-sales-premium-dark: #009f72;
  --fx-legacy-sales-brand-soft: #e7f9f3;
  --fx-legacy-sales-text: #475569;
  --fx-legacy-sales-soft: #f5f7fb;
  --fx-legacy-sales-ink: #0f172a;
  --fx-legacy-sales-muted: #64748b;
  --fx-legacy-sales-border: #e2e8f0;

  /* TPV standalone */
  --fx-legacy-tpv-primary: #1877f2;
  --fx-legacy-tpv-primary-hover: #0a66c2;

  /* Caja reporte */
  --fx-legacy-caja-dark: #0f172a;
  --fx-legacy-caja-primary: #1e293b;
  --fx-legacy-caja-secondary: #475569;
  --fx-legacy-caja-muted: #64748b;
  --fx-legacy-caja-border: #e2e8f0;
  --fx-legacy-caja-light: #f8fafc;
  --fx-legacy-caja-accent: #2563eb;
  --fx-legacy-caja-danger: #dc2626;
  --fx-legacy-caja-success: #059669;

  /* Movimientos de caja */
  --fx-legacy-mov-ink: #0f172a;
  --fx-legacy-mov-muted: #64748b;
  --fx-legacy-mov-line: #e5e7eb;
  --fx-legacy-mov-soft: #f8fafc;
  --fx-legacy-mov-soft-2: #f1f5f9;
  --fx-legacy-mov-primary: #0f172a;
  --fx-legacy-mov-primary-2: #111827;
  --fx-legacy-mov-accent: #0ea5a4;
  --fx-legacy-mov-danger: #dc2626;
  --fx-legacy-mov-success: #16a34a;
  --fx-legacy-mov-warning: #d97706;

  /* Caja Chica */
  --fx-legacy-cc-primary: #1877f2;
  --fx-legacy-cc-primary-dark: #0f63d3;
  --fx-legacy-cc-primary-soft: #eef6ff;
  --fx-legacy-cc-green: #119669;
  --fx-legacy-cc-green-soft: #eaf8f2;
  --fx-legacy-cc-red: #d84b60;
  --fx-legacy-cc-red-dark: #b9364b;
  --fx-legacy-cc-red-soft: #fff0f2;
}

/* POS OPERATIVO ----------------------------------------------------------- */
#facturacion[data-fx-module="pos"] {
  --pv-primary-soft: var(--fx-legacy-pos-primary-soft);
  --pv-success-soft: var(--fx-legacy-pos-success-soft);
  --pos-bg: var(--fx-legacy-pos-bg);
  --pos-card: var(--fx-legacy-pos-card);
  --pos-line: var(--fx-legacy-pos-line);
  --pos-text: var(--fx-legacy-pos-text);
  --pos-muted: var(--fx-legacy-pos-muted);
  --pos-blue: var(--fx-legacy-pos-blue);
  --pos-green: var(--fx-legacy-pos-green);
  --pos-green-soft: var(--fx-legacy-pos-green-soft);
  --pos-red: var(--fx-legacy-pos-red);
}

/* VENTAS OPERATIVAS ------------------------------------------------------- */
body[data-fx-module="ventas"] {
  --alegra-green: var(--fx-legacy-sales-brand);
  --alegra-green-dark: var(--fx-legacy-sales-brand-dark);
  --alegra-green-soft: var(--fx-legacy-sales-brand-soft);
  --alegra-gray-text: var(--fx-legacy-sales-text);
  --alegra-gray-soft: var(--fx-legacy-sales-soft);

  --fenix-green: var(--fx-legacy-sales-brand);
  --fenix-green-dark: var(--fx-legacy-sales-premium-dark);
  --fenix-ink: var(--fx-legacy-sales-ink);
  --fenix-muted: var(--fx-legacy-sales-muted);
  --fenix-soft: #f8fafc;
  --fenix-border: var(--fx-legacy-sales-border);
}

/* TPV STANDALONE — mismas apariencias, ahora parametrizadas --------------- */
body[data-fx-module="tpv"] {
  --fx-tpv-primary: var(--fx-legacy-tpv-primary);
  --fx-tpv-primary-hover: var(--fx-legacy-tpv-primary-hover);
}
body[data-fx-module="tpv"] .text-primary { color: var(--fx-tpv-primary) !important; }
body[data-fx-module="tpv"] .btn-primary {
  --bs-btn-bg: var(--fx-tpv-primary);
  --bs-btn-border-color: var(--fx-tpv-primary);
  --bs-btn-hover-bg: var(--fx-tpv-primary-hover);
  --bs-btn-hover-border-color: var(--fx-tpv-primary-hover);
}
body[data-fx-module="tpv"] .tpv-header { background: var(--fx-tpv-primary); }
body[data-fx-module="tpv"] h1,
body[data-fx-module="tpv"] h2 { color: var(--fx-tpv-primary); }

/* REPORTE DE CAJA --------------------------------------------------------- */
#caja[data-fx-module="caja"] {
  --corp-dark: var(--fx-legacy-caja-dark);
  --corp-primary: var(--fx-legacy-caja-primary);
  --corp-secondary: var(--fx-legacy-caja-secondary);
  --corp-muted: var(--fx-legacy-caja-muted);
  --corp-border: var(--fx-legacy-caja-border);
  --corp-light: var(--fx-legacy-caja-light);
  --corp-accent: var(--fx-legacy-caja-accent);
  --corp-danger: var(--fx-legacy-caja-danger);
  --corp-success: var(--fx-legacy-caja-success);
}

/* MOVIMIENTOS DE CAJA ----------------------------------------------------- */
#sec_movimientos_caja[data-fx-module="movimientos-caja"] {
  --mov-ink: var(--fx-legacy-mov-ink);
  --mov-muted: var(--fx-legacy-mov-muted);
  --mov-line: var(--fx-legacy-mov-line);
  --mov-soft: var(--fx-legacy-mov-soft);
  --mov-soft-2: var(--fx-legacy-mov-soft-2);
  --mov-primary: var(--fx-legacy-mov-primary);
  --mov-primary-2: var(--fx-legacy-mov-primary-2);
  --mov-accent: var(--fx-legacy-mov-accent);
  --mov-danger: var(--fx-legacy-mov-danger);
  --mov-success: var(--fx-legacy-mov-success);
  --mov-warning: var(--fx-legacy-mov-warning);
}

/* CAJA CHICA -------------------------------------------------------------- */
#caja_chica[data-fx-module="caja-chica"] {
  --cc-primary: var(--fx-legacy-cc-primary);
  --cc-primary-dark: var(--fx-legacy-cc-primary-dark);
  --cc-primary-soft: var(--fx-legacy-cc-primary-soft);
  --cc-green: var(--fx-legacy-cc-green);
  --cc-green-soft: var(--fx-legacy-cc-green-soft);
  --cc-red: var(--fx-legacy-cc-red);
  --cc-red-dark: var(--fx-legacy-cc-red-dark);
  --cc-red-soft: var(--fx-legacy-cc-red-soft);
}

/* ===== END MIGRATED SOURCE: legacy-aliases-p05.css ===== */

/* ===== BEGIN MIGRATED SOURCE: brand-rollout-p05-2.css ===== */
/* ========================================================================== 
   FÉNIX 360 — BRAND ROLLOUT P05.2
   Scope: POS operativo + Ventas + TPV + Caja.

   Regla visual:
   - AZUL  = marca / navegación / selección / acción primaria neutra
   - VERDE = éxito / confirmar / cobrar / guardar correctamente
   - ÁMBAR = advertencia / pendiente
   - ROJO  = error / peligro / anulación

   Carga DESPUÉS de legacy-aliases-p05.css.
   ========================================================================== */

/* POS OPERATIVO ----------------------------------------------------------- */
#facturacion[data-fx-module="pos"] {
  --pos-blue: var(--fx-color-primary);
  --pos-green: var(--fx-color-success);
  --pos-green-soft: var(--fx-color-success-soft);
  --pos-red: var(--fx-color-danger);
  --pv-primary-soft: var(--fx-color-primary-soft);
  --pv-success-soft: var(--fx-color-success-soft);
}

#facturacion[data-fx-module="pos"] .text-primary {
  color: var(--fx-color-primary) !important;
}

#facturacion[data-fx-module="pos"] .btn-primary {
  --bs-btn-bg: var(--fx-color-primary);
  --bs-btn-border-color: var(--fx-color-primary);
  --bs-btn-hover-bg: var(--fx-color-primary-hover);
  --bs-btn-hover-border-color: var(--fx-color-primary-hover);
  --bs-btn-active-bg: var(--fx-color-primary-active);
  --bs-btn-active-border-color: var(--fx-color-primary-active);
}

#facturacion[data-fx-module="pos"] .btn-outline-primary {
  --bs-btn-color: var(--fx-color-primary);
  --bs-btn-border-color: var(--fx-color-primary);
  --bs-btn-hover-bg: var(--fx-color-primary);
  --bs-btn-hover-border-color: var(--fx-color-primary);
  --bs-btn-active-bg: var(--fx-color-primary-active);
  --bs-btn-active-border-color: var(--fx-color-primary-active);
}

#facturacion[data-fx-module="pos"] .form-control:focus,
#facturacion[data-fx-module="pos"] .form-select:focus,
#facturacion[data-fx-module="pos"] input.input-precio-personalizado:focus {
  border-color: var(--fx-color-primary) !important;
  box-shadow: 0 0 0 .16rem var(--fx-color-focus) !important;
}

/* VENTAS OPERATIVAS ------------------------------------------------------- */
body[data-fx-module="ventas"] {
  /* Los nombres legacy se conservan para no reescribir el módulo. */
  --alegra-green: var(--fx-color-primary);
  --alegra-green-dark: var(--fx-color-primary-hover);
  --alegra-green-soft: var(--fx-color-primary-soft);
  --fenix-green: var(--fx-color-primary);
  --fenix-green-dark: var(--fx-color-primary-hover);
}

body[data-fx-module="ventas"].bg-light {
  background-color: var(--fx-color-bg-app) !important;
}

body[data-fx-module="ventas"] .text-primary {
  color: var(--fx-color-primary) !important;
}

body[data-fx-module="ventas"] .card-fenix::before {
  background: linear-gradient(90deg, var(--fx-color-primary), var(--fx-blue-400));
}

body[data-fx-module="ventas"] .badge-suc {
  background: var(--fx-color-primary-soft);
  border-color: var(--fx-color-primary-border);
  color: var(--fx-color-primary-strong);
}

body[data-fx-module="ventas"] .btn-fenix {
  background: linear-gradient(135deg, var(--fx-color-primary), var(--fx-color-primary-hover));
  box-shadow: 0 10px 28px rgba(24,119,242,.24);
}
body[data-fx-module="ventas"] .btn-fenix:hover {
  background: linear-gradient(135deg, var(--fx-color-primary-hover), var(--fx-color-primary));
}

body[data-fx-module="ventas"] .btn-primary {
  --bs-btn-bg: var(--fx-color-primary);
  --bs-btn-border-color: var(--fx-color-primary);
  --bs-btn-hover-bg: var(--fx-color-primary-hover);
  --bs-btn-hover-border-color: var(--fx-color-primary-hover);
  --bs-btn-active-bg: var(--fx-color-primary-active);
  --bs-btn-active-border-color: var(--fx-color-primary-active);
}

body[data-fx-module="ventas"] .table-dark,
body[data-fx-module="ventas"] #tabla_ventas thead th {
  background-color: var(--fx-color-primary) !important;
  border-color: var(--fx-color-primary-hover) !important;
  color: var(--fx-color-on-primary) !important;
}

body[data-fx-module="ventas"] .nav-tabs .nav-link.active {
  color: var(--fx-color-primary);
  border-color: var(--fx-color-primary) var(--fx-color-primary) #fff;
}

/* Selección es estado de interfaz, no "éxito". */
body[data-fx-module="ventas"] .venta-selected-panel {
  border-color: var(--fx-color-primary-border) !important;
  background: linear-gradient(135deg, var(--fx-color-primary-soft), #fff) !important;
  box-shadow: 0 12px 30px rgba(24,119,242,.10) !important;
}
body[data-fx-module="ventas"] #tabla_ventas tbody tr.fenix-selected {
  outline: 2px solid var(--fx-color-primary) !important;
  background: var(--fx-color-primary-soft) !important;
}

body[data-fx-module="ventas"] .ventas-search-box {
  background: linear-gradient(135deg, var(--fx-color-primary-soft), #fff);
  border-color: var(--fx-color-primary-border);
}
body[data-fx-module="ventas"] .ventas-search-box .input-group-text,
body[data-fx-module="ventas"] .ventas-search-box .form-control {
  border-color: var(--fx-color-primary-border);
}
body[data-fx-module="ventas"] .ventas-search-box .form-control:focus {
  border-color: var(--fx-color-primary);
  box-shadow: 0 0 0 .2rem var(--fx-color-focus);
}

body[data-fx-module="ventas"] #modalDetalleVenta .fenix-sale-modal__header {
  background: linear-gradient(135deg, var(--fx-color-primary-active), var(--fx-color-primary));
}
body[data-fx-module="ventas"] #modalDetalleVenta .fenix-sale-modal__body {
  background:
    radial-gradient(circle at top left, rgba(24,119,242,.08), transparent 38%),
    var(--fx-color-bg-subtle);
}
body[data-fx-module="ventas"] #modalDetalleVenta .fenix-sale-total {
  color: var(--fx-color-primary);
}
body[data-fx-module="ventas"] #modalDetalleVenta #detalle-productos .list-group-item {
  border-left-color: var(--fx-color-primary) !important;
}
body[data-fx-module="ventas"] #modalDetalleVenta #detalle-productos .list-group-item:hover {
  border-color: var(--fx-color-primary-border) !important;
  box-shadow: 0 14px 34px rgba(24,119,242,.12);
}

/* TPV STANDALONE ---------------------------------------------------------- */
body[data-fx-module="tpv"] {
  --fx-tpv-primary: var(--fx-color-primary);
  --fx-tpv-primary-hover: var(--fx-color-primary-hover);
}
body[data-fx-module="tpv"] .tpv-header { background: var(--fx-color-primary); }
body[data-fx-module="tpv"] h1,
body[data-fx-module="tpv"] h2,
body[data-fx-module="tpv"] .text-primary { color: var(--fx-color-primary) !important; }
body[data-fx-module="tpv"] .input-grande,
body[data-fx-module="tpv"] #buscar_cliente { border-color: var(--fx-color-primary); }
body[data-fx-module="tpv"] #buscar_cliente:focus,
body[data-fx-module="tpv"] #formulario-cliente input:focus,
body[data-fx-module="tpv"] #cliente-correo:focus {
  border-color: var(--fx-color-primary-hover);
  box-shadow: 0 0 0 .16rem var(--fx-color-focus);
}
body[data-fx-module="tpv"] #btn-buscar-cliente,
body[data-fx-module="tpv"] .btn-primary {
  --bs-btn-bg: var(--fx-color-primary);
  --bs-btn-border-color: var(--fx-color-primary);
  --bs-btn-hover-bg: var(--fx-color-primary-hover);
  --bs-btn-hover-border-color: var(--fx-color-primary-hover);
  background-color: var(--fx-color-primary);
  border-color: var(--fx-color-primary);
}
body[data-fx-module="tpv"] #btn-buscar-cliente:hover {
  background-color: var(--fx-color-primary-hover);
}
/* Guardar/agregar cliente conservan verde success; cancelar conserva danger. */

/* REPORTE DE CAJA --------------------------------------------------------- */
#caja[data-fx-module="caja"] {
  --corp-accent: var(--fx-color-primary);
  --corp-danger: var(--fx-color-danger);
  --corp-success: var(--fx-color-success);
}
#caja[data-fx-module="caja"] .form-control:focus,
#caja[data-fx-module="caja"] .form-select:focus {
  border-color: var(--fx-color-primary);
  box-shadow: 0 0 0 .15rem var(--fx-color-focus);
}
#caja[data-fx-module="caja"] .badge-soft-primary {
  background: var(--fx-color-primary-soft);
  color: var(--fx-color-primary-active);
}

/* MOVIMIENTOS DE CAJA ----------------------------------------------------- */
#sec_movimientos_caja[data-fx-module="movimientos-caja"] {
  --mov-accent: var(--fx-color-primary);
  --mov-danger: var(--fx-color-danger);
  --mov-success: var(--fx-color-success);
  --mov-warning: var(--fx-color-warning);
}
#sec_movimientos_caja[data-fx-module="movimientos-caja"] .mov-badge-soft {
  border-color: var(--fx-color-primary-border);
  background: var(--fx-color-primary-soft);
  color: var(--fx-color-primary-active);
}
#sec_movimientos_caja[data-fx-module="movimientos-caja"] .mov-btn-accent:hover {
  background: var(--fx-color-primary-hover);
  border-color: var(--fx-color-primary-hover);
  filter: none;
}

/* CAJA CHICA -------------------------------------------------------------- */
#caja_chica[data-fx-module="caja-chica"] {
  --cc-primary: var(--fx-color-primary);
  --cc-primary-dark: var(--fx-color-primary-hover);
  --cc-primary-soft: var(--fx-color-primary-soft);
  --cc-green: var(--fx-color-success);
  --cc-green-soft: var(--fx-color-success-soft);
  --cc-red: var(--fx-color-danger);
  --cc-red-dark: var(--fx-color-danger-hover);
  --cc-red-soft: var(--fx-color-danger-soft);
}

/* ===== END MIGRATED SOURCE: brand-rollout-p05-2.css ===== */


/* <<< modules/pos-cash.css <<< */

/* >>> modules/operations.css >>> */
/* ===== BEGIN MIGRATED SOURCE: legacy-aliases-p06.css ===== */
/* ========================================================================
   FÉNIX 360 — LEGACY ALIASES P06
   Scope: Dashboard + Recursos Humanos + Bancos.
   MODO COMPATIBILIDAD: reproduce la apariencia previa. P06.1 hará rollout.
   ======================================================================== */

/* Dashboard interno: Bootstrap primary histórico (#0d6efd). */
#dashboard[data-fx-module="dashboard"] {
  --fx-legacy-dashboard-primary: #0d6efd;
}
#dashboard[data-fx-module="dashboard"] .btn-primary {
  --bs-btn-bg: var(--fx-legacy-dashboard-primary);
  --bs-btn-border-color: var(--fx-legacy-dashboard-primary);
  --bs-btn-hover-bg: #0b5ed7;
  --bs-btn-hover-border-color: #0a58ca;
  --bs-btn-active-bg: #0a58ca;
  --bs-btn-active-border-color: #0a53be;
}
#dashboard[data-fx-module="dashboard"] .text-primary { color: var(--fx-legacy-dashboard-primary) !important; }
#dashboard[data-fx-module="dashboard"] .bg-primary { background-color: var(--fx-legacy-dashboard-primary) !important; }
#dashboard[data-fx-module="dashboard"] .border-primary { border-color: var(--fx-legacy-dashboard-primary) !important; }

/* Panel del empleado: conserva #0d6efd en P06. */
body[data-fx-module="rrhh-panel"] {
  --fx-legacy-rrhh-primary: #0d6efd;
  --fx-legacy-rrhh-primary-soft: rgba(13, 110, 253, .10);
  --brand: var(--fx-legacy-rrhh-primary);
  --brand-weak: var(--fx-legacy-rrhh-primary-soft);
  --ring: 0 0 0 4px rgba(13, 110, 253, .18);
}

/* Gestión administrativa de empleados: conserva su shell navy actual. */
body[data-fx-module="rrhh-admin"] {
  --fx-legacy-rrhh-nav: #0b132b;
  --fx-legacy-rrhh-nav-strong: #0a0f24;
  --bg-dark: var(--fx-legacy-rrhh-nav);
  --bg-darker: var(--fx-legacy-rrhh-nav-strong);
}

/* Bancos: conserva cian de marca y estados semánticos actuales en P06. */
#bancos[data-fx-module="bancos"] {
  --fx-legacy-bancos-brand: #38bdf8;
  --fx-legacy-bancos-success: #10b981;
  --fx-legacy-bancos-warning: #f59e0b;
  --fx-legacy-bancos-danger: #ef4444;
  --brand: var(--fx-legacy-bancos-brand);
  --good: var(--fx-legacy-bancos-success);
  --warn: var(--fx-legacy-bancos-warning);
  --bad: var(--fx-legacy-bancos-danger);
}

/* ===== END MIGRATED SOURCE: legacy-aliases-p06.css ===== */

/* ===== BEGIN MIGRATED SOURCE: brand-rollout-p06-1.css ===== */
/* ========================================================================== 
   FÉNIX 360 — BRAND ROLLOUT P06.1
   Scope: Dashboard + Recursos Humanos + Bancos.

   Regla visual:
   - AZUL  = marca / navegación / selección / acción primaria neutra
   - VERDE = éxito
   - ÁMBAR = advertencia
   - ROJO  = error / peligro

   Carga DESPUÉS de legacy-aliases-p06.css.
   ========================================================================== */

/* DASHBOARD -------------------------------------------------------------- */
#dashboard[data-fx-module="dashboard"] {
  --fx-legacy-dashboard-primary: var(--fx-color-primary);
}
#dashboard[data-fx-module="dashboard"] .btn-primary {
  --bs-btn-bg: var(--fx-color-primary);
  --bs-btn-border-color: var(--fx-color-primary);
  --bs-btn-hover-bg: var(--fx-color-primary-hover);
  --bs-btn-hover-border-color: var(--fx-color-primary-hover);
  --bs-btn-active-bg: var(--fx-color-primary-active);
  --bs-btn-active-border-color: var(--fx-color-primary-active);
}
#dashboard[data-fx-module="dashboard"] .btn-outline-primary {
  --bs-btn-color: var(--fx-color-primary);
  --bs-btn-border-color: var(--fx-color-primary);
  --bs-btn-hover-bg: var(--fx-color-primary);
  --bs-btn-hover-border-color: var(--fx-color-primary);
  --bs-btn-active-bg: var(--fx-color-primary-active);
  --bs-btn-active-border-color: var(--fx-color-primary-active);
}
#dashboard[data-fx-module="dashboard"] .form-control:focus,
#dashboard[data-fx-module="dashboard"] .form-select:focus {
  border-color: var(--fx-color-primary);
  box-shadow: 0 0 0 .16rem var(--fx-color-focus);
}

/* RRHH — PANEL DEL EMPLEADO --------------------------------------------- */
body[data-fx-module="rrhh-panel"] {
  --fx-legacy-rrhh-primary: var(--fx-color-primary);
  --fx-legacy-rrhh-primary-soft: var(--fx-color-primary-soft);
  --brand: var(--fx-color-primary);
  --brand-weak: var(--fx-color-primary-soft);
  --ring: 0 0 0 4px var(--fx-color-focus);
  background:
    radial-gradient(1200px 600px at 80% -10%, color-mix(in srgb, var(--fx-color-primary) 10%, transparent), transparent 55%),
    radial-gradient(900px 500px at 0% 20%, color-mix(in srgb, var(--fx-blue-700) 6%, transparent), transparent 55%),
    var(--bg);
}
body[data-fx-module="rrhh-panel"] .topbar .brand-dot {
  background: var(--fx-color-primary);
  box-shadow: 0 0 0 5px color-mix(in srgb, var(--fx-color-primary) 12%, transparent);
}
body[data-fx-module="rrhh-panel"] .emp-avatar {
  border-color: color-mix(in srgb, var(--fx-color-primary) 16%, transparent);
}
body[data-fx-module="rrhh-panel"] .bottom-nav .nav-btn.active {
  color: var(--fx-color-primary);
  background: var(--fx-color-primary-soft);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--fx-color-primary) 18%, transparent);
}
body[data-fx-module="rrhh-panel"] .text-primary {
  color: var(--fx-color-primary) !important;
}
body[data-fx-module="rrhh-panel"] .btn-primary {
  --bs-btn-bg: var(--fx-color-primary);
  --bs-btn-border-color: var(--fx-color-primary);
  --bs-btn-hover-bg: var(--fx-color-primary-hover);
  --bs-btn-hover-border-color: var(--fx-color-primary-hover);
  --bs-btn-active-bg: var(--fx-color-primary-active);
  --bs-btn-active-border-color: var(--fx-color-primary-active);
}
body[data-fx-module="rrhh-panel"] .btn-outline-primary {
  --bs-btn-color: var(--fx-color-primary);
  --bs-btn-border-color: var(--fx-color-primary);
  --bs-btn-hover-bg: var(--fx-color-primary);
  --bs-btn-hover-border-color: var(--fx-color-primary);
}

/* RRHH — ADMIN ----------------------------------------------------------- */
body[data-fx-module="rrhh-admin"] {
  --fx-legacy-rrhh-nav: var(--fx-blue-900);
  --fx-legacy-rrhh-nav-strong: var(--fx-blue-950);
  --bg-dark: var(--fx-blue-900);
  --bg-darker: var(--fx-blue-950);
}
body[data-fx-module="rrhh-admin"] .navbar {
  background: var(--fx-blue-900);
}
body[data-fx-module="rrhh-admin"] header.hero {
  background: linear-gradient(180deg, var(--fx-blue-950), var(--fx-blue-900));
}
body[data-fx-module="rrhh-admin"] .text-primary {
  color: var(--fx-color-primary) !important;
}
body[data-fx-module="rrhh-admin"] .btn-primary {
  --bs-btn-bg: var(--fx-color-primary);
  --bs-btn-border-color: var(--fx-color-primary);
  --bs-btn-hover-bg: var(--fx-color-primary-hover);
  --bs-btn-hover-border-color: var(--fx-color-primary-hover);
  --bs-btn-active-bg: var(--fx-color-primary-active);
  --bs-btn-active-border-color: var(--fx-color-primary-active);
}
body[data-fx-module="rrhh-admin"] .btn-outline-primary {
  --bs-btn-color: var(--fx-color-primary);
  --bs-btn-border-color: var(--fx-color-primary);
  --bs-btn-hover-bg: var(--fx-color-primary);
  --bs-btn-hover-border-color: var(--fx-color-primary);
}

/* BANCOS ----------------------------------------------------------------- */
#bancos[data-fx-module="bancos"] {
  --fx-legacy-bancos-brand: var(--fx-color-primary);
  --fx-legacy-bancos-success: var(--fx-color-success);
  --fx-legacy-bancos-warning: var(--fx-color-warning);
  --fx-legacy-bancos-danger: var(--fx-color-danger);
  --brand: var(--fx-color-primary);
  --good: var(--fx-color-success);
  --warn: var(--fx-color-warning);
  --bad: var(--fx-color-danger);
}
#bancos[data-fx-module="bancos"] .kpi .tile::after {
  background: radial-gradient(600px 200px at 0% 0%, color-mix(in srgb, var(--fx-color-primary) 6%, transparent), transparent);
}
#bancos[data-fx-module="bancos"] table.display.compact tbody tr:hover {
  background: color-mix(in srgb, var(--fx-color-primary) 6%, transparent);
}
#bancos[data-fx-module="bancos"] .btn.primary {
  background: var(--fx-color-primary);
  color: var(--fx-color-on-primary);
}
#bancos[data-fx-module="bancos"] .btn.primary:hover {
  background: var(--fx-color-primary-hover);
}
#bancos[data-fx-module="bancos"] input:focus,
#bancos[data-fx-module="bancos"] select:focus,
#bancos[data-fx-module="bancos"] textarea:focus {
  border-color: var(--fx-color-primary);
  box-shadow: 0 0 0 .14rem var(--fx-color-focus);
  outline: none;
}

/* ===== END MIGRATED SOURCE: brand-rollout-p06-1.css ===== */


/* <<< modules/operations.css <<< */

/* >>> modules/backoffice.css >>> */
/* ===== BEGIN MIGRATED SOURCE: legacy-aliases-p07.css ===== */
/* ========================================================================
   FÉNIX 360 — LEGACY ALIASES P07
   Backoffice Legacy: Reportes, Admin Productos, Asistencia, Caja avanzada,
   CNB, Cyber y Diagnóstico Taller.
   MODO COMPATIBILIDAD: reproduce colores actuales; P07.1 hará rollout.
   ======================================================================== */
:root {
  --fx-legacy-p07-bootstrap-primary: #0d6efd;
  --fx-legacy-p07-bootstrap-primary-hover: #0b5ed7;

  --fx-legacy-asistencia-nav: #2c3e50;
  --fx-legacy-asistencia-nav-hover: #34495e;
  --fx-legacy-asistencia-action: #27ae60;
  --fx-legacy-asistencia-action-hover: #219150;

  --fx-legacy-cnb-primary: #0f62fe;
  --fx-legacy-cnb-success: #067647;
  --fx-legacy-cnb-warning: #b54708;
  --fx-legacy-cnb-danger: #b42318;

  --fx-legacy-caja-primary: #1d4ed8;
  --fx-legacy-caja-primary-dark: #1e3a8a;
  --fx-legacy-caja-success: #059669;
  --fx-legacy-caja-warning: #d97706;
  --fx-legacy-caja-danger: #dc2626;

  --fx-legacy-corte-dark: #17365d;
  --fx-legacy-corte-primary: #1f4e78;
  --fx-legacy-corte-medium: #5b9bd5;
  --fx-legacy-corte-head: #1d4ed8;
}

/* Bootstrap primary — scoped, nunca global. */
[data-fx-module="admin-productos"] .btn-primary,
[data-fx-module="reportes"] .btn-primary,
[data-fx-module="cyber"] .btn-primary,
[data-fx-module="taller-diagnostico"] .btn-primary,
[data-fx-module="corte-continuo"] .btn-primary {
  --bs-btn-bg: var(--fx-legacy-p07-bootstrap-primary);
  --bs-btn-border-color: var(--fx-legacy-p07-bootstrap-primary);
  --bs-btn-hover-bg: var(--fx-legacy-p07-bootstrap-primary-hover);
  --bs-btn-hover-border-color: var(--fx-legacy-p07-bootstrap-primary-hover);
  --bs-btn-active-bg: var(--fx-legacy-p07-bootstrap-primary-hover);
  --bs-btn-active-border-color: var(--fx-legacy-p07-bootstrap-primary-hover);
}

/* Reportes legacy. */
[data-fx-module="reportes"] {
  --fx-reportes-primary: var(--fx-legacy-p07-bootstrap-primary);
}
[data-fx-module="reportes"] h2.text-center { color: var(--fx-reportes-primary); }
[data-fx-module="reportes"] form .form-control:focus,
[data-fx-module="reportes"] form .form-select:focus {
  border-color: var(--fx-reportes-primary);
  box-shadow: 0 0 0 .2rem rgba(13,110,253,.25);
}

/* Asistencia legacy. */
[data-fx-module="asistencia"] {
  --fx-asistencia-nav: var(--fx-legacy-asistencia-nav);
  --fx-asistencia-nav-hover: var(--fx-legacy-asistencia-nav-hover);
  --fx-asistencia-action: var(--fx-legacy-asistencia-action);
  --fx-asistencia-action-hover: var(--fx-legacy-asistencia-action-hover);
}
[data-fx-module="asistencia"] .sidebar { background-color: var(--fx-asistencia-nav); }
[data-fx-module="asistencia"] .menu a:hover { background-color: var(--fx-asistencia-nav-hover); }
[data-fx-module="asistencia"] button { background-color: var(--fx-asistencia-action); }
[data-fx-module="asistencia"] button:hover { background-color: var(--fx-asistencia-action-hover); }

/* CNB / cierres. */
[data-fx-module="cnb-cierres"] {
  --primary: var(--fx-legacy-cnb-primary);
  --ok: var(--fx-legacy-cnb-success);
  --warning: var(--fx-legacy-cnb-warning);
  --danger: var(--fx-legacy-cnb-danger);
}

/* Caja administrativa avanzada. */
[data-fx-module="caja-cierres-admin"] {
  --fenix-primary: var(--fx-legacy-caja-primary);
  --fenix-primary-dark: var(--fx-legacy-caja-primary-dark);
  --fenix-success: var(--fx-legacy-caja-success);
  --fenix-warning: var(--fx-legacy-caja-warning);
  --fenix-danger: var(--fx-legacy-caja-danger);
}
[data-fx-module="caja-detalle-cierre"] {
  --primary: var(--fx-legacy-caja-primary);
  --success: var(--fx-legacy-caja-success);
  --warning: var(--fx-legacy-caja-warning);
  --danger: var(--fx-legacy-caja-danger);
}

/* Corte continuo rango. */
[data-fx-module="corte-continuo"] {
  --azul-oscuro: var(--fx-legacy-corte-dark);
  --azul: var(--fx-legacy-corte-primary);
  --azul-medio: var(--fx-legacy-corte-medium);
}
[data-fx-module="corte-continuo"] .head {
  background: linear-gradient(135deg, var(--fx-legacy-corte-head), var(--azul-oscuro));
}

/* Cyber: solo primary; info/warning/success conservan semántica Bootstrap. */
[data-fx-module="cyber"] { --fx-cyber-primary: var(--fx-legacy-p07-bootstrap-primary); }

/* Diagnóstico Taller: primary neutral centralizado, estados intactos. */
[data-fx-module="taller-diagnostico"] { --fx-diagnostico-primary: var(--fx-legacy-p07-bootstrap-primary); }

/* ===== END MIGRATED SOURCE: legacy-aliases-p07.css ===== */

/* ===== BEGIN MIGRATED SOURCE: brand-rollout-p07-1.css ===== */
/* ========================================================================== 
   FÉNIX 360 — BRAND ROLLOUT P07.1
   Scope: Backoffice Legacy (Reportes, Admin Productos, Asistencia, CNB,
   Caja avanzada, Corte Continuo, Cyber y Diagnóstico Taller).

   Regla visual:
   - AZUL  = marca / navegación / selección / acción primaria neutra
   - VERDE = éxito
   - ÁMBAR = advertencia
   - ROJO  = error / peligro
   - CIAN  = información

   Carga DESPUÉS de legacy-aliases-p07.css.
   ========================================================================== */

/* ADMIN PRODUCTOS / REPORTES / CYBER / DIAGNÓSTICO ---------------------- */
[data-fx-module="admin-productos"],
[data-fx-module="reportes"],
[data-fx-module="cyber"],
[data-fx-module="taller-diagnostico"] {
  --fx-legacy-p07-bootstrap-primary: var(--fx-color-primary);
  --fx-legacy-p07-bootstrap-primary-hover: var(--fx-color-primary-hover);
}

[data-fx-module="admin-productos"] .btn-primary,
[data-fx-module="reportes"] .btn-primary,
[data-fx-module="cyber"] .btn-primary,
[data-fx-module="taller-diagnostico"] .btn-primary {
  --bs-btn-bg: var(--fx-color-primary);
  --bs-btn-border-color: var(--fx-color-primary);
  --bs-btn-hover-bg: var(--fx-color-primary-hover);
  --bs-btn-hover-border-color: var(--fx-color-primary-hover);
  --bs-btn-active-bg: var(--fx-color-primary-active);
  --bs-btn-active-border-color: var(--fx-color-primary-active);
}

[data-fx-module="admin-productos"] .btn-outline-primary,
[data-fx-module="reportes"] .btn-outline-primary,
[data-fx-module="cyber"] .btn-outline-primary,
[data-fx-module="taller-diagnostico"] .btn-outline-primary {
  --bs-btn-color: var(--fx-color-primary);
  --bs-btn-border-color: var(--fx-color-primary);
  --bs-btn-hover-bg: var(--fx-color-primary);
  --bs-btn-hover-border-color: var(--fx-color-primary);
}

[data-fx-module="admin-productos"] .text-primary,
[data-fx-module="reportes"] .text-primary,
[data-fx-module="cyber"] .text-primary,
[data-fx-module="taller-diagnostico"] .text-primary {
  color: var(--fx-color-primary) !important;
}

[data-fx-module="admin-productos"] .bg-primary,
[data-fx-module="reportes"] .bg-primary,
[data-fx-module="cyber"] .bg-primary,
[data-fx-module="taller-diagnostico"] .bg-primary {
  background-color: var(--fx-color-primary) !important;
}

[data-fx-module="reportes"] {
  --fx-reportes-primary: var(--fx-color-primary);
}
[data-fx-module="reportes"] form .form-control:focus,
[data-fx-module="reportes"] form .form-select:focus {
  border-color: var(--fx-color-primary);
  box-shadow: 0 0 0 .2rem var(--fx-color-focus);
}
[data-fx-module="reportes"] .nav-tabs .nav-link.active {
  color: var(--fx-color-primary);
  border-bottom-color: var(--fx-color-primary);
}

/* ASISTENCIA ------------------------------------------------------------- */
body[data-fx-module="asistencia"] {
  --fx-legacy-asistencia-nav: var(--fx-blue-900);
  --fx-legacy-asistencia-nav-hover: var(--fx-blue-800);
  --fx-legacy-asistencia-action: var(--fx-color-primary);
  --fx-legacy-asistencia-action-hover: var(--fx-color-primary-hover);
  --fx-asistencia-nav: var(--fx-blue-900);
  --fx-asistencia-nav-hover: var(--fx-blue-800);
  --fx-asistencia-action: var(--fx-color-primary);
  --fx-asistencia-action-hover: var(--fx-color-primary-hover);
}
body[data-fx-module="asistencia"] .sidebar {
  background: linear-gradient(180deg, var(--fx-blue-950), var(--fx-blue-900));
}
body[data-fx-module="asistencia"] .menu a:hover {
  background-color: var(--fx-blue-800);
}
body[data-fx-module="asistencia"] button {
  background-color: var(--fx-color-primary);
}
body[data-fx-module="asistencia"] button:hover {
  background-color: var(--fx-color-primary-hover);
}
body[data-fx-module="asistencia"] input:focus {
  outline: none;
  border-color: var(--fx-color-primary);
  box-shadow: 0 0 0 3px var(--fx-color-focus);
}

/* CNB -------------------------------------------------------------------- */
body[data-fx-module="cnb-cierres"] {
  --fx-legacy-cnb-primary: var(--fx-color-primary);
  --primary: var(--fx-color-primary);
  --ok: var(--fx-color-success);
  --warning: var(--fx-color-warning);
  --danger: var(--fx-color-danger);
}
body[data-fx-module="cnb-cierres"] .cnb-ticket-btn {
  border-color: var(--fx-color-primary-border);
  background: var(--fx-color-primary-soft);
  color: var(--fx-color-primary);
}
body[data-fx-module="cnb-cierres"] .cnb-ticket-btn:hover {
  background: var(--fx-color-primary-soft-hover);
}
body[data-fx-module="cnb-cierres"] .cnb-ticket-panel {
  border-color: var(--fx-color-primary-border);
  background: color-mix(in srgb, var(--fx-color-primary-soft) 55%, white);
}

/* CAJA — CIERRES ADMIN --------------------------------------------------- */
body[data-fx-module="caja-cierres-admin"] {
  --fx-legacy-caja-primary: var(--fx-color-primary);
  --fx-legacy-caja-primary-dark: var(--fx-blue-800);
  --fenix-primary: var(--fx-color-primary);
  --fenix-primary-dark: var(--fx-blue-800);
  --fenix-success: var(--fx-color-success);
  --fenix-warning: var(--fx-color-warning);
  --fenix-danger: var(--fx-color-danger);
}
body[data-fx-module="caja-cierres-admin"] .fenix-hero {
  background:
    radial-gradient(circle at top right, color-mix(in srgb, var(--fx-color-primary) 28%, transparent), transparent 28%),
    linear-gradient(135deg, var(--fx-blue-950), var(--fx-blue-700));
}
body[data-fx-module="caja-cierres-admin"] .fenix-subnav a.active {
  border-color: var(--fx-color-primary-border);
  background: var(--fx-color-primary-soft);
}
body[data-fx-module="caja-cierres-admin"] .badge-info {
  background: var(--fx-color-info-soft);
  color: var(--fx-color-info);
  border-color: var(--fx-color-info-border);
}
body[data-fx-module="caja-cierres-admin"] .owner-status:not(.danger):not(.warning) {
  background: var(--fx-color-primary-soft);
  color: var(--fx-color-primary);
  border-color: var(--fx-color-primary-border);
}

/* CAJA — DETALLE DE CIERRE ---------------------------------------------- */
body[data-fx-module="caja-detalle-cierre"] {
  --fx-legacy-caja-primary: var(--fx-color-primary);
  --primary: var(--fx-color-primary);
  --success: var(--fx-color-success);
  --warning: var(--fx-color-warning);
  --danger: var(--fx-color-danger);
  --blue-soft: var(--fx-color-primary-soft);
}
body[data-fx-module="caja-detalle-cierre"] .hero {
  background:
    radial-gradient(circle at top right, color-mix(in srgb, var(--fx-color-primary) 24%, transparent), transparent 30%),
    linear-gradient(135deg, var(--fx-blue-950), var(--fx-blue-700));
}
body[data-fx-module="caja-detalle-cierre"] .subnav a.active {
  border-color: var(--fx-color-primary-border);
  background: var(--fx-color-primary-soft);
}
body[data-fx-module="caja-detalle-cierre"] .badge-info {
  background: var(--fx-color-info-soft);
  color: var(--fx-color-info);
  border-color: var(--fx-color-info-border);
}

/* CORTE CONTINUO --------------------------------------------------------- */
body[data-fx-module="corte-continuo"] {
  --fx-legacy-corte-dark: var(--fx-blue-900);
  --fx-legacy-corte-primary: var(--fx-color-primary);
  --fx-legacy-corte-medium: var(--fx-blue-400);
  --fx-legacy-corte-head: var(--fx-color-primary);
  --azul-oscuro: var(--fx-blue-900);
  --azul: var(--fx-color-primary);
  --azul-medio: var(--fx-blue-400);
  --azul-claro: var(--fx-color-primary-soft);
}
body[data-fx-module="corte-continuo"] .brand-mark {
  background: linear-gradient(135deg, var(--fx-color-primary), var(--fx-blue-900));
  box-shadow: 0 8px 20px color-mix(in srgb, var(--fx-color-primary) 20%, transparent);
}
body[data-fx-module="corte-continuo"] .btn-primary {
  border-color: var(--fx-color-primary);
  background: var(--fx-color-primary);
}
body[data-fx-module="corte-continuo"] .btn-primary:hover {
  border-color: var(--fx-color-primary-hover);
  background: var(--fx-color-primary-hover);
}
body[data-fx-module="corte-continuo"] input:focus,
body[data-fx-module="corte-continuo"] select:focus {
  border-color: var(--fx-color-primary);
  box-shadow: 0 0 0 3px var(--fx-color-focus);
}
body[data-fx-module="corte-continuo"] .rule-box {
  border-color: var(--fx-color-primary-border);
  background: var(--fx-color-primary-soft);
  color: var(--fx-blue-900);
}
body[data-fx-module="corte-continuo"] th {
  border-right-color: var(--fx-blue-700);
  background: var(--fx-color-primary);
}
body[data-fx-module="corte-continuo"] .badge.info {
  background: var(--fx-color-info-soft);
  color: var(--fx-color-info);
}

/* Wrapper Caja: el contenido embebido mantiene el Theme Core del hijo. */
body[data-fx-module="caja-wrapper"] {
  --fx-caja-wrapper-primary: var(--fx-color-primary);
}

/* ===== END MIGRATED SOURCE: brand-rollout-p07-1.css ===== */


/* <<< modules/backoffice.css <<< */

/* >>> modules/residual.css >>> */
/* ===== BEGIN MIGRATED SOURCE: legacy-aliases-p08.css ===== */
/* ========================================================================
   FÉNIX 360 — LEGACY ALIASES P08
   Residuales operativos. MODO COMPATIBILIDAD: reproduce colores actuales.
   No activa bootstrap-bridge global.
   ======================================================================== */
:root {
  --fx-legacy-p08-bootstrap-primary: #0d6efd;
  --fx-legacy-p08-bootstrap-primary-hover: #0b5ed7;
  --fx-legacy-p08-bootstrap-primary-active: #0a58ca;
  --fx-legacy-p08-bootstrap-primary-soft: #cfe2ff;

  --fx-legacy-whatsapp-blue: #2563eb;
  --fx-legacy-whatsapp-blue-dark: #1e40af;
  --fx-legacy-whatsapp-soft-blue: #eff6ff;
}

/* Bootstrap primary localizado: reproduce la apariencia actual sin tocar global. */
:where(
  [data-fx-module="estadisticas"],
  [data-fx-module="taller-carga-masiva"],
  [data-fx-module="plataformas-digitales"],
  [data-fx-module="rrhh-carga-masiva"]
) {
  --fx-residual-primary: var(--fx-legacy-p08-bootstrap-primary);
  --fx-residual-primary-hover: var(--fx-legacy-p08-bootstrap-primary-hover);
}

:where(
  [data-fx-module="estadisticas"],
  [data-fx-module="taller-carga-masiva"],
  [data-fx-module="plataformas-digitales"],
  [data-fx-module="rrhh-carga-masiva"]
) .btn-primary {
  --bs-btn-bg: var(--fx-residual-primary);
  --bs-btn-border-color: var(--fx-residual-primary);
  --bs-btn-hover-bg: var(--fx-residual-primary-hover);
  --bs-btn-hover-border-color: var(--fx-residual-primary-hover);
  --bs-btn-active-bg: var(--fx-legacy-p08-bootstrap-primary-active);
  --bs-btn-active-border-color: var(--fx-legacy-p08-bootstrap-primary-active);
}

:where(
  [data-fx-module="estadisticas"],
  [data-fx-module="taller-carga-masiva"],
  [data-fx-module="plataformas-digitales"],
  [data-fx-module="rrhh-carga-masiva"]
) .bg-primary {
  background-color: var(--fx-residual-primary) !important;
}

:where(
  [data-fx-module="estadisticas"],
  [data-fx-module="taller-carga-masiva"],
  [data-fx-module="plataformas-digitales"],
  [data-fx-module="rrhh-carga-masiva"]
) .text-primary {
  color: var(--fx-residual-primary) !important;
}

:where(
  [data-fx-module="estadisticas"],
  [data-fx-module="taller-carga-masiva"],
  [data-fx-module="plataformas-digitales"],
  [data-fx-module="rrhh-carga-masiva"]
) .form-control:focus,
:where(
  [data-fx-module="estadisticas"],
  [data-fx-module="taller-carga-masiva"],
  [data-fx-module="plataformas-digitales"],
  [data-fx-module="rrhh-carga-masiva"]
) .form-select:focus {
  border-color: #86b7fe;
  box-shadow: 0 0 0 .25rem rgba(13,110,253,.25);
}

/* FÉNIX Conversa: azul de interfaz centralizable; verde WhatsApp permanece propio. */
[data-fx-module="whatsapp"] {
  --blue: var(--fx-legacy-whatsapp-blue);
  --blue-dark: var(--fx-legacy-whatsapp-blue-dark);
  --soft-blue: var(--fx-legacy-whatsapp-soft-blue);
}

/* ===== END MIGRATED SOURCE: legacy-aliases-p08.css ===== */

/* ===== BEGIN MIGRATED SOURCE: brand-rollout-p08-1.css ===== */
/* ========================================================================
   FÉNIX 360 — BRAND ROLLOUT P08.1
   Residuales operativos. Carga DESPUÉS de legacy-aliases-p08.css.
   Azul = marca/acción primaria; verde WhatsApp = identidad del canal.
   ======================================================================== */

/* Bootstrap localizado: cargas, estadísticas y plataformas. */
:where(
  [data-fx-module="estadisticas"],
  [data-fx-module="taller-carga-masiva"],
  [data-fx-module="plataformas-digitales"],
  [data-fx-module="rrhh-carga-masiva"]
) {
  --fx-legacy-p08-bootstrap-primary: var(--fx-color-primary);
  --fx-legacy-p08-bootstrap-primary-hover: var(--fx-color-primary-hover);
  --fx-legacy-p08-bootstrap-primary-active: var(--fx-color-primary-active);
  --fx-legacy-p08-bootstrap-primary-soft: var(--fx-color-primary-soft);
  --fx-residual-primary: var(--fx-color-primary);
  --fx-residual-primary-hover: var(--fx-color-primary-hover);
}

:where(
  [data-fx-module="estadisticas"],
  [data-fx-module="taller-carga-masiva"],
  [data-fx-module="plataformas-digitales"],
  [data-fx-module="rrhh-carga-masiva"]
) .btn-primary {
  --bs-btn-bg: var(--fx-color-primary);
  --bs-btn-border-color: var(--fx-color-primary);
  --bs-btn-hover-bg: var(--fx-color-primary-hover);
  --bs-btn-hover-border-color: var(--fx-color-primary-hover);
  --bs-btn-active-bg: var(--fx-color-primary-active);
  --bs-btn-active-border-color: var(--fx-color-primary-active);
}

:where(
  [data-fx-module="estadisticas"],
  [data-fx-module="taller-carga-masiva"],
  [data-fx-module="plataformas-digitales"],
  [data-fx-module="rrhh-carga-masiva"]
) .bg-primary { background-color: var(--fx-color-primary) !important; }

:where(
  [data-fx-module="estadisticas"],
  [data-fx-module="taller-carga-masiva"],
  [data-fx-module="plataformas-digitales"],
  [data-fx-module="rrhh-carga-masiva"]
) .text-primary { color: var(--fx-color-primary) !important; }

:where(
  [data-fx-module="estadisticas"],
  [data-fx-module="taller-carga-masiva"],
  [data-fx-module="plataformas-digitales"],
  [data-fx-module="rrhh-carga-masiva"]
) .form-control:focus,
:where(
  [data-fx-module="estadisticas"],
  [data-fx-module="taller-carga-masiva"],
  [data-fx-module="plataformas-digitales"],
  [data-fx-module="rrhh-carga-masiva"]
) .form-select:focus {
  border-color: var(--fx-color-primary);
  box-shadow: 0 0 0 .25rem var(--fx-color-focus);
}

/* FÉNIX Conversa: interfaz azul FÉNIX, identidad WhatsApp intacta. */
body[data-fx-module="whatsapp"] {
  --fx-legacy-whatsapp-blue: var(--fx-color-primary);
  --fx-legacy-whatsapp-blue-dark: var(--fx-color-primary-strong);
  --fx-legacy-whatsapp-soft-blue: var(--fx-color-primary-soft);
  --blue: var(--fx-color-primary);
  --blue-dark: var(--fx-color-primary-strong);
  --soft-blue: var(--fx-color-primary-soft);
  /* NO redefinir --wa ni --wa-dark: pertenecen a WhatsApp. */
  background:
    radial-gradient(circle at 15% 10%, rgba(37, 211, 102, .13), transparent 28%),
    radial-gradient(circle at 85% 0%, color-mix(in srgb, var(--fx-color-primary) 12%, transparent), transparent 28%),
    linear-gradient(180deg, #f8fbff, var(--bg));
}

body[data-fx-module="whatsapp"] .btn-primary {
  background: var(--fx-color-primary);
  color: var(--fx-color-on-primary);
}
body[data-fx-module="whatsapp"] .item.active {
  background: var(--fx-color-primary-soft);
  box-shadow: inset 4px 0 0 var(--fx-color-primary);
}
body[data-fx-module="whatsapp"] .badge-bot {
  background: var(--fx-color-primary-soft);
  color: var(--fx-color-primary-strong);
  border-color: var(--fx-color-primary-border);
}
body[data-fx-module="whatsapp"] .badge-atencion {
  background: var(--fx-color-info-soft);
  color: var(--fx-color-info);
  border-color: var(--fx-color-info-border);
}

/* FénixDesk: acento mínimo de marca, sin alterar el flujo del código. */
body[data-fx-module="fenixdesk-link"] {
  color: var(--fx-color-text);
  background: var(--fx-color-bg-app);
}
body[data-fx-module="fenixdesk-link"] h2 {
  color: var(--fx-color-primary-strong);
}
body[data-fx-module="fenixdesk-link"] .code {
  color: var(--fx-color-primary);
}
body[data-fx-module="fenixdesk-link"] .hint {
  color: var(--fx-color-text-muted);
}

/* ===== END MIGRATED SOURCE: brand-rollout-p08-1.css ===== */


/* <<< modules/residual.css <<< */

/* >>> modules/visits.css >>> */
/* ===== BEGIN MIGRATED SOURCE: finalize-p09-1.css ===== */
/* =====================================================================
   FÉNIX 360 — FINALIZE P09.1
   Scope: Visitas (última pantalla operativa standalone real detectada P09)
   NO bootstrap bridge global.
   ===================================================================== */

[data-fx-module="visitas"] {
  --fx-visitas-primary: var(--fx-color-primary);
  --fx-visitas-primary-hover: var(--fx-color-primary-hover);
  --fx-visitas-primary-soft: var(--fx-color-primary-soft);
}

[data-fx-module="visitas"] .text-primary {
  color: var(--fx-color-primary) !important;
}

[data-fx-module="visitas"] .loading {
  color: var(--fx-color-primary) !important;
}

[data-fx-module="visitas"] a {
  --bs-link-color: var(--fx-color-primary);
  --bs-link-hover-color: var(--fx-color-primary-hover);
}

/* ===== END MIGRATED SOURCE: finalize-p09-1.css ===== */


/* <<< modules/visits.css <<< */
