/* =========================================================
   CV DIGITAL — CV CORE CSS
   Versión 4.3.1 · mu-plugin "CV Digital — Núcleo"

   Este archivo reemplaza el CSS que estaba pegado en widgets HTML
   y en el CSS personalizado de Elementor. Se carga en todo el sitio.

   Índice
   01. Header sticky (cv-header, cv-header-bar, cv-logo-*, cv-header-menu, cv-header-cta)
   02. Hero (cv-hero, cv-hero-badge, cv-hero-title, cv-hero-copy, cv-hero-actions, cv-hero-note)
   03. Botones CTA (cv-cta-buttons)
   04. Tarjetas de cifras (cv-stat-card)
   05. Sección de dolores con columna sticky (cv-problems-*) + corrección de overflow
   06. Títulos animados (cv-trust-title / cv-title-anim)
   07. Texto que se ilumina con el scroll (cv-scroll-highlight, cool-split, cool-split-white)
   09. Utilidades (cv-reveal, cv-stagger, cv-count)
   10. Movimiento reducido
   11. Popup "Hablemos" y formularios (cv-popup, cv-form)
   12. Éxito del formulario: check animado + WhatsApp
   13. Ajustes del popup y formularios (tipografía, autorización, móvil)
   …
   39. Páginas interiores y Servicios (cv-page-hero, cv-flow-5, cv-srv-*)
   40. Imágenes con vida (cv-float-media)
   41. Páginas de servicio (cv-svc-*): hero propio, dolores, análisis, entregables, ciclo, caso, carrusel y cierre
   42. Hub de Servicios con movimiento (cv-srv-hub, cv-srv-curtain, escáner en las capacidades)
   43. Home con movimiento (cv-home, cv-home-results, cv-home-sol, cv-home-cases, cv-home-how, cv-net-bg)
   44. Tarjeta de caso con el diseño aprobado (cv-caso, cv-caso-*)
   45. Página de cada caso con el diseño aprobado (cv-cx-*)
   46. Página de casos de éxito (cv-ch-*)
   47. Header (logo clicable después del scroll, enlaces con # sin marca fija, línea bajo el menú)
   48. Página Cómo trabajamos (cv-ct-*): momentos con línea y contador, modelos, principios, primeros pasos y equipo
   49. Página Nosotros (cv-ns-*): piezas que se conectan, enfoque, liderazgo, red del equipo y resultados
   50. Formulario: paso a la página de gracias (v4.0.7)
   51. Página de gracias (cv-gx-*): sello, estado de la solicitud, próximos pasos y WhatsApp (v4.0.8)
   52. Página de Contacto (cv-co-*): formulario, canales con Instagram y quién responde (v4.0.9)
   53. Pasos con línea (cv-ct-path): tarjetas de la misma altura (v4.1.0)
   54. Contacto: preguntas frecuentes con tarjeta de ayuda (cv-co-faq-*) (v4.1.0)
   55. Cifras que siempre caben en su tarjeta (v4.1.1)
   56. Caso: cifras en azul y negro y Lectura comercial clara (v4.1.2)
   57. Tarjeta de caso en versión clara (cv-caso-light / cv-casos-light) (v4.1.4)
   58. Casos: hero con menos verde (v4.1.6)
   59. Footer v3 (cv-footer-*): tres tarjetas redondeadas, contacto en filas, línea lima en enlaces
   60. Megamenú de Servicios v2 (cv-mega-*): tarjetas crema, CTA azul oscuro, lista compacta en móvil (v4.2.0)
   61. Home más liviano: escalera con sticky de CSS, Soluciones en duo tono y Cómo trabajamos en celular (v4.2.2)
   62. Desarrollo Web Empresarial (cv-dw-*): meta del mapa como ventana, escáner de 6, paneles de sitio, formulario y migración, proyectos (v4.2.3)
   63. Ecommerce (cv-ec-*): la tienda como meta del mapa, recorrido del comprador, paneles de compra, pedido e indicadores, proyecto Tecnomedica (v4.2.4; captura completa y quieta en v4.2.6)
   64. Generación de Demanda (cv-gd-*): pipeline como meta del mapa, embudo del público a la venta, paneles de inversión, mensaje y ficha del lead, embudo de resultados del caso (v4.2.7)
   65. SEO y Visibilidad en IA (cv-seo-*): búsqueda como meta del mapa, señal de visibilidad, paneles de revisión técnica, resultado de búsqueda y respuesta de IA, tablero antes / después del caso (v4.2.8)
   66. Paneles de servicio: espaciado de letras normal en los textos de cv-svc-mock-item (v4.2.9)
   67. CRM y Automatización (cv-crm-*): pipeline como meta del mapa, ficha del prospecto, paneles de tablero, integraciones y automatización, vehículos al mes del caso (v4.3.0)
   68. Analítica y Conversión (cv-an-*): decisiones como meta del mapa, lectura del recorrido, paneles de eventos, embudo con punto de fuga y prueba de hipótesis, conversiones del caso (v4.3.1)
   ========================================================= */


/* #########################################################
   01. HEADER STICKY
   ######################################################### */

/* =========================================================
   CV DIGITAL — HEADER STICKY
   ELEMENTOR + ELEMENTSKIT
   ========================================================= */


/* =========================================================
   1. CONTENEDOR EXTERIOR
   Clase: cv-header
   ========================================================= */

.cv-header {
    position: relative;
    z-index: 9999 !important;
    width: 100%;
    padding: 10px 24px;

    background: transparent !important;
    background-color: transparent !important;
    background-image: none !important;

    transition: padding 0.35s ease;
}

.cv-header,
.cv-header .e-con,
.cv-header .elementor-container,
.cv-header .elementor-widget-wrap {
    overflow: visible;
}


/* =========================================================
   2. BARRA REDONDEADA
   Clase: cv-header-bar
   ========================================================= */

.cv-header .cv-header-bar {
    position: relative;
    z-index: 2;

    min-height: 68px;
    padding: 0 28px;

    background: rgba(8, 9, 12, 0.98) !important;
    background-color: rgba(8, 9, 12, 0.98) !important;
    background-image: none !important;

    border: 1px solid rgba(255, 255, 255, 0.06) !important;
    border-radius: 50px !important;

    box-shadow: 0 8px 30px rgba(8, 9, 12, 0.08);

    transition:
        min-height 0.4s cubic-bezier(0.22, 1, 0.36, 1),
        background-color 0.4s ease,
        border-color 0.4s ease,
        box-shadow 0.4s ease;
}


/*
 * El desenfoque vive en una capa aparte (::before).
 * Si la barra tuviera backdrop-filter, el panel del menú móvil
 * (position: fixed) quedaría atrapado dentro de la barra en vez
 * de ocupar la pantalla.
 */

.cv-header .cv-header-bar::before {
    content: "";

    position: absolute;
    inset: 0;
    z-index: -1;

    border-radius: inherit;
    pointer-events: none;

    -webkit-backdrop-filter: blur(0);
    backdrop-filter: blur(0);

    transition:
        backdrop-filter 0.4s ease,
        -webkit-backdrop-filter 0.4s ease;
}


/* Botón y hamburguesa juntos a la derecha (header móvil) */

.cv-header .cv-header-actions {
    width: auto !important;
    flex: 0 0 auto;
    margin-left: auto;
}


/* =========================================================
   3. ESTADO AL HACER SCROLL
   ========================================================= */

.cv-header.elementor-sticky--effects,
.elementor-sticky--effects.cv-header,
.elementor-sticky--effects .cv-header,
.cv-header .elementor-sticky--effects {
    padding-top: 10px !important;
    padding-bottom: 10px !important;

    background: transparent !important;
    background-color: transparent !important;
    background-image: none !important;
}


/* Barra blanca glass */

.cv-header.elementor-sticky--effects .cv-header-bar,
.elementor-sticky--effects.cv-header .cv-header-bar,
.elementor-sticky--effects .cv-header .cv-header-bar,
.cv-header .elementor-sticky--effects.cv-header-bar,
.cv-header .elementor-sticky--effects .cv-header-bar,
.cv-header-bar.elementor-sticky--effects {
    min-height: 76px;

    background: rgba(255, 255, 255, 0.82) !important;
    background-color: rgba(255, 255, 255, 0.82) !important;
    background-image: none !important;

    border-color: rgba(8, 9, 12, 0.08) !important;

    box-shadow:
        0 14px 40px rgba(8, 9, 12, 0.12),
        inset 0 1px 0 rgba(255, 255, 255, 0.8) !important;
}


/* Desenfoque de la barra al hacer scroll */

.cv-header.elementor-sticky--effects .cv-header-bar::before,
.elementor-sticky--effects.cv-header .cv-header-bar::before,
.elementor-sticky--effects .cv-header .cv-header-bar::before,
.cv-header .elementor-sticky--effects.cv-header-bar::before {
    -webkit-backdrop-filter: blur(20px) saturate(170%);
    backdrop-filter: blur(20px) saturate(170%);
}


/* =========================================================
   4. CAMBIO SUAVE DE LOGOTIPO
   Contenedor: cv-logo-wrap
   Blanco: cv-logo-white
   Oscuro: cv-logo-dark
   ========================================================= */

.cv-logo-wrap {
    position: relative;
    display: grid;
    align-items: center;
}


/*
 * Los dos widgets ocupan exactamente la misma celda.
 * Esto evita movimientos al cambiar de logo.
 */

.cv-logo-wrap .cv-logo-white,
.cv-logo-wrap .cv-logo-dark {
    grid-column: 1;
    grid-row: 1;

    width: 100%;
    margin: 0 !important;

    transform: none !important;

    transition:
        opacity 0.14s linear,
        visibility 0.14s linear !important;
}


.cv-logo-wrap .cv-logo-white {
    position: relative;
    z-index: 2;

    opacity: 1;
    visibility: visible;
}


.cv-logo-wrap .cv-logo-dark {
    position: relative;
    z-index: 3;

    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}


.cv-logo-wrap .cv-logo-white img,
.cv-logo-wrap .cv-logo-dark img {
    display: block;
    width: 100%;
    height: auto;
    margin: 0;

    object-fit: contain;
    object-position: left center;

    transform: none !important;
}


/* Ocultar logo blanco */

.cv-header.elementor-sticky--effects .cv-logo-white,
.elementor-sticky--effects.cv-header .cv-logo-white,
.elementor-sticky--effects .cv-header .cv-logo-white,
.cv-header .elementor-sticky--effects .cv-logo-white {
    opacity: 0 !important;
    visibility: hidden !important;
    transform: none !important;
}


/* Mostrar logo oscuro */

.cv-header.elementor-sticky--effects .cv-logo-dark,
.elementor-sticky--effects.cv-header .cv-logo-dark,
.elementor-sticky--effects .cv-header .cv-logo-dark,
.cv-header .elementor-sticky--effects .cv-logo-dark {
    opacity: 1 !important;
    visibility: visible !important;
    transform: none !important;
}


/*
 * Copia invisible del header.
 * Cuando el header queda fijo, Elementor deja en su lugar una copia
 * (elementor-sticky__spacer) con visibility: hidden. Como los logos
 * declaran visibility: visible, esa copia mostraba sus logos detrás
 * del header real y se veían los dos superpuestos. Aquí se apaga todo
 * lo que hay dentro de la copia.
 */

.elementor-sticky__spacer,
.elementor-sticky__spacer *,
.elementor-sticky__spacer.cv-header .cv-logo-wrap .cv-logo-white,
.elementor-sticky__spacer.cv-header .cv-logo-wrap .cv-logo-dark,
.elementor-sticky__spacer .cv-header .cv-logo-wrap .cv-logo-white,
.elementor-sticky__spacer .cv-header .cv-logo-wrap .cv-logo-dark {
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
}


/* =========================================================
   5. MENÚ ELEMENTSKIT — ESTADO INICIAL
   Clase del widget: cv-header-menu
   ========================================================= */

.cv-header-menu .elementskit-navbar-nav > li > a {
    position: relative;

    color: #ffffff !important;
    background: transparent !important;
    background-color: transparent !important;

    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;

    transition:
        color 0.25s ease,
        opacity 0.25s ease !important;
}


/* Flechas del menú */

.cv-header-menu
.elementskit-navbar-nav
> li
> a
.elementskit-submenu-indicator {
    color: inherit !important;
}


/* =========================================================
   6. HOVER AZUL SOBRE FONDO OSCURO
   ========================================================= */

.cv-header-menu .elementskit-navbar-nav > li > a:hover,
.cv-header-menu .elementskit-navbar-nav > li:hover > a,
.cv-header-menu .elementskit-navbar-nav > li.focus > a {
    color: #315cff !important;

    background: transparent !important;
    background-color: transparent !important;

    border: none !important;
    box-shadow: none !important;
}


/* Página activa: azul sin rectángulo oscuro */

.cv-header-menu
.elementskit-navbar-nav
> li.current-menu-item
> a,

.cv-header-menu
.elementskit-navbar-nav
> li.current-menu-ancestor
> a,

.cv-header-menu
.elementskit-navbar-nav
> li.current_page_item
> a,

.cv-header-menu
.elementskit-navbar-nav
> li.current_page_ancestor
> a {
    color: #315cff !important;

    background: transparent !important;
    background-color: transparent !important;

    border: none !important;
    box-shadow: none !important;
}


/* Elimina fondos internos creados por ElementsKit */

.cv-header-menu
.elementskit-navbar-nav
> li
> a::before,

.cv-header-menu
.elementskit-navbar-nav
> li
> a::after {
    background-color: transparent !important;
    box-shadow: none !important;
}


/* =========================================================
   7. MENÚ DESPUÉS DEL SCROLL
   ========================================================= */

.cv-header.elementor-sticky--effects
.cv-header-menu
.elementskit-navbar-nav
> li
> a,

.elementor-sticky--effects.cv-header
.cv-header-menu
.elementskit-navbar-nav
> li
> a,

.elementor-sticky--effects
.cv-header
.cv-header-menu
.elementskit-navbar-nav
> li
> a,

.cv-header
.elementor-sticky--effects
.cv-header-menu
.elementskit-navbar-nav
> li
> a {
    color: #08090c !important;

    background: transparent !important;
    background-color: transparent !important;

    box-shadow: none !important;
}


/* Hover azul después del scroll */

.cv-header.elementor-sticky--effects
.cv-header-menu
.elementskit-navbar-nav
> li
> a:hover,

.cv-header.elementor-sticky--effects
.cv-header-menu
.elementskit-navbar-nav
> li:hover
> a,

.elementor-sticky--effects
.cv-header
.cv-header-menu
.elementskit-navbar-nav
> li
> a:hover,

.elementor-sticky--effects
.cv-header
.cv-header-menu
.elementskit-navbar-nav
> li:hover
> a {
    color: #315cff !important;

    background: transparent !important;
    background-color: transparent !important;

    box-shadow: none !important;
}


/* Página activa después del scroll */

.cv-header.elementor-sticky--effects
.cv-header-menu
.elementskit-navbar-nav
> li.current-menu-item
> a,

.cv-header.elementor-sticky--effects
.cv-header-menu
.elementskit-navbar-nav
> li.current-menu-ancestor
> a,

.elementor-sticky--effects
.cv-header
.cv-header-menu
.elementskit-navbar-nav
> li.current-menu-item
> a,

.elementor-sticky--effects
.cv-header
.cv-header-menu
.elementskit-navbar-nav
> li.current-menu-ancestor
> a {
    color: #315cff !important;

    background: transparent !important;
    background-color: transparent !important;

    box-shadow: none !important;
}


/* =========================================================
   8. SUBMENÚ ELEMENTSKIT
   ========================================================= */

.cv-header-menu
.elementskit-navbar-nav
.elementskit-dropdown {
    padding: 10px !important;
    margin-top: 12px !important;

    background: rgba(255, 255, 255, 0.96) !important;
    background-color: rgba(255, 255, 255, 0.96) !important;

    border: 1px solid rgba(8, 9, 12, 0.08) !important;
    border-radius: 18px !important;

    -webkit-backdrop-filter: blur(20px);
    backdrop-filter: blur(20px);

    box-shadow: 0 18px 50px rgba(8, 9, 12, 0.14) !important;
}


.cv-header-menu
.elementskit-navbar-nav
.elementskit-dropdown
li
a {
    padding: 12px 15px !important;

    color: #08090c !important;
    background: transparent !important;
    background-color: transparent !important;

    border-radius: 10px !important;
    box-shadow: none !important;

    transition:
        color 0.25s ease,
        background-color 0.25s ease !important;
}


.cv-header-menu
.elementskit-navbar-nav
.elementskit-dropdown
li
a:hover {
    color: #315cff !important;
    background: rgba(49, 92, 255, 0.08) !important;
}


/* =========================================================
   9. BOTÓN CTA
   Clase: cv-header-cta
   ========================================================= */

.cv-header .cv-header-cta .elementor-button {
    color: #ffffff !important;

    background: #315cff !important;
    background-color: #315cff !important;

    border: none !important;
    border-radius: 7px !important;

    box-shadow: 0 8px 22px rgba(49, 92, 255, 0.2);

    transition:
        background-color 0.3s ease,
        transform 0.3s ease,
        box-shadow 0.3s ease !important;
}


.cv-header .cv-header-cta .elementor-button:hover {
    color: #ffffff !important;

    background: #1546ff !important;
    background-color: #1546ff !important;

    transform: translateY(-2px);

    box-shadow: 0 12px 28px rgba(49, 92, 255, 0.3);
}


/* =========================================================
   10. HAMBURGUESA ELEMENTSKIT
   ========================================================= */

.cv-header-menu .elementskit-menu-hamburger {
    color: #ffffff !important;

    background: transparent !important;
    background-color: transparent !important;

    border-color: rgba(255, 255, 255, 0.3) !important;

    transition:
        color 0.25s ease,
        border-color 0.25s ease !important;
}


.cv-header-menu
.elementskit-menu-hamburger
.elementskit-menu-hamburger-icon {
    background-color: #ffffff !important;
}


/* Hamburguesa oscura después del scroll */

.cv-header.elementor-sticky--effects
.cv-header-menu
.elementskit-menu-hamburger,

.elementor-sticky--effects
.cv-header
.cv-header-menu
.elementskit-menu-hamburger {
    color: #08090c !important;
    border-color: rgba(8, 9, 12, 0.18) !important;
}


.cv-header.elementor-sticky--effects
.cv-header-menu
.elementskit-menu-hamburger
.elementskit-menu-hamburger-icon,

.elementor-sticky--effects
.cv-header
.cv-header-menu
.elementskit-menu-hamburger
.elementskit-menu-hamburger-icon {
    background-color: #08090c !important;
}


/* =========================================================
   11. TABLET
   ========================================================= */

@media (max-width: 1024px) {

    .cv-header {
        padding: 12px 16px;
    }

    .cv-header .cv-header-bar {
        min-height: 72px;
        padding: 0 18px;

        border-radius: 36px !important;
    }

    .cv-header.elementor-sticky--effects .cv-header-bar,
    .elementor-sticky--effects .cv-header .cv-header-bar {
        min-height: 68px;
    }


    /* Panel lateral ElementsKit */

    .cv-header-menu .elementskit-menu-container {
        background: rgba(255, 255, 255, 0.98) !important;
        background-color: rgba(255, 255, 255, 0.98) !important;

        -webkit-backdrop-filter: blur(20px);
        backdrop-filter: blur(20px);

        box-shadow: -15px 0 50px rgba(8, 9, 12, 0.16) !important;
    }


    /* Enlaces móviles */

    .cv-header-menu
    .elementskit-menu-container
    .elementskit-navbar-nav
    > li
    > a,

    .cv-header.elementor-sticky--effects
    .cv-header-menu
    .elementskit-menu-container
    .elementskit-navbar-nav
    > li
    > a,

    .elementor-sticky--effects
    .cv-header
    .cv-header-menu
    .elementskit-menu-container
    .elementskit-navbar-nav
    > li
    > a {
        color: #08090c !important;

        background: transparent !important;
        background-color: transparent !important;

        box-shadow: none !important;
    }


    .cv-header-menu
    .elementskit-menu-container
    .elementskit-navbar-nav
    > li
    > a:hover,

    .cv-header-menu
    .elementskit-menu-container
    .elementskit-navbar-nav
    > li.current-menu-item
    > a {
        color: #315cff !important;

        background: rgba(49, 92, 255, 0.07) !important;
        background-color: rgba(49, 92, 255, 0.07) !important;
    }


    /* Botón cerrar */

    .cv-header-menu .elementskit-menu-close {
        color: #08090c !important;
        border-color: rgba(8, 9, 12, 0.16) !important;
    }
}


/* =========================================================
   12. MÓVIL
   ========================================================= */

@media (max-width: 767px) {

    .cv-header {
        padding: 10px;
    }

    .cv-header .cv-header-bar {
        min-height: 64px;
        padding: 0 14px;

        border-radius: 32px !important;
    }

    .cv-header.elementor-sticky--effects,
    .elementor-sticky--effects .cv-header {
        padding: 7px 10px !important;
    }

    .cv-header.elementor-sticky--effects .cv-header-bar,
    .elementor-sticky--effects .cv-header .cv-header-bar {
        min-height: 60px;
    }
}


/* =========================================================
   13. MOVIMIENTO REDUCIDO
   ========================================================= */

@media (prefers-reduced-motion: reduce) {

    .cv-header,
    .cv-header *,
    .cv-header *::before,
    .cv-header *::after {
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
    }
}


/* #########################################################
   02. HERO
   ######################################################### */

/* =========================================================
   CV DIGITAL — HERO GSAP COMPLETO
   Corrección de descendentes: g, j, p, q, y
   ========================================================= */


/* =========================================================
   H1
   ========================================================= */

/* Los contenedores exteriores no deben recortar el título */

.cv-hero-title,
.cv-hero-title .elementor-widget-container,
.cv-hero-title .elementor-heading-title {
    overflow: visible !important;
}


/* Cada línea funciona como máscara */

.cv-hero-title .cv-line {
    display: block;
    overflow: hidden;

    /*
     * Espacio suficiente para mostrar la parte inferior
     * de letras como g, j, p, q o y.
     */
    padding: 0 0 0.24em;

    /*
     * Compensa el espacio adicional sin separar las líneas.
     */
    margin: 0 0 -0.16em;

    line-height: inherit;
}


/* Contenido animable */

.cv-hero-title .cv-line-inner {
    display: block;

    color: #ffffff;
    line-height: inherit;

    perspective: 1000px;
}


/* Texto destacado */

.cv-hero-title .cv-accent {
    color: #c8ff36;
}


/* =========================================================
   ELEMENTOS GENERADOS POR SPLITTYPE
   ========================================================= */

.cv-hero-title .word,
.cv-hero-title .char,
.cv-hero-copy .word,
.cv-hero-copy .char {
    display: inline-block;
}


.cv-hero-title .word,
.cv-hero-copy .word {
    white-space: nowrap;
}


.cv-hero-title .char {
    transform-origin: 50% 100%;
    backface-visibility: hidden;
}


/* Texto iluminado progresivamente */

.cv-hero-copy .char {
    color: rgba(245, 242, 234, 0.22);
    transition: none;
}


/* Optimización */

.cv-hero-badge,
.cv-hero-title .char,
.cv-hero-copy .char,
.cv-hero-actions .elementor-button,
.cv-hero-note {
    will-change:
        transform,
        opacity,
        filter,
        color;
}


/* =========================================================
   BOTONES MODERNOS
   Los colores se controlan en Elementor
   ========================================================= */

.cv-hero-actions .elementor-button {
    position: relative;
    isolation: isolate;
    overflow: hidden;

    transform: translate3d(0, 0, 0);

    transition:
        transform 0.4s cubic-bezier(0.22, 1, 0.36, 1),
        color 0.4s ease,
        background-color 0.45s ease,
        border-color 0.4s ease,
        box-shadow 0.45s ease !important;

    will-change: transform;
}


/* Brillo circular desde la flecha */

.cv-hero-actions .elementor-button::before {
    content: "";

    position: absolute;
    z-index: 0;
    inset: -1px;

    pointer-events: none;

    background: radial-gradient(
        circle at calc(100% - 22px) 50%,
        rgba(255, 255, 255, 0.28) 0%,
        rgba(255, 255, 255, 0.1) 25%,
        transparent 68%
    );

    opacity: 0;

    clip-path: circle(
        0%
        at calc(100% - 22px) 50%
    );

    transition:
        opacity 0.4s ease,
        clip-path 0.72s cubic-bezier(0.22, 1, 0.36, 1);
}


.cv-hero-actions
.elementor-button:hover::before {
    opacity: 1;

    clip-path: circle(
        150%
        at calc(100% - 22px) 50%
    );
}


/* Línea de luz superior */

.cv-hero-actions .elementor-button::after {
    content: "";

    position: absolute;
    z-index: 1;

    top: 0;
    left: 12%;

    width: 76%;
    height: 1px;

    pointer-events: none;

    background: linear-gradient(
        90deg,
        transparent,
        rgba(255, 255, 255, 0.72),
        transparent
    );

    opacity: 0;

    transform: scaleX(0);
    transform-origin: center;

    transition:
        opacity 0.4s ease,
        transform 0.65s cubic-bezier(0.22, 1, 0.36, 1);
}


.cv-hero-actions
.elementor-button:hover::after {
    opacity: 0.5;
    transform: scaleX(1);
}


/* Contenido del botón */

.cv-hero-actions
.elementor-button
.elementor-button-content-wrapper {
    position: relative;
    z-index: 3;

    display: flex;
    align-items: center;
    justify-content: center;

    gap: 0;
}


/* Texto del botón */

.cv-hero-actions
.elementor-button
.elementor-button-text {
    position: relative;

    transition:
        transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}


.cv-hero-actions
.elementor-button:hover
.elementor-button-text {
    transform: translateX(-3px);
}


/* =========================================================
   FLECHA
   ========================================================= */

.cv-hero-actions
.elementor-button
.elementor-button-icon {
    position: relative;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    flex: 0 0 auto;

    width: auto;
    height: auto;

    margin-left: 11px !important;
    margin-right: 0 !important;
    padding: 0 !important;

    color: inherit;
    background: transparent !important;

    border: none !important;
    border-radius: 0 !important;

    box-shadow: none !important;

    line-height: 1;

    transform: translate3d(0, 0, 0);

    transition:
        transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);

    will-change: transform;
}


/* Eliminar fondos del icono */

.cv-hero-actions
.elementor-button
.elementor-button-icon::before,

.cv-hero-actions
.elementor-button
.elementor-button-icon::after {
    display: none !important;
}


/* SVG */

.cv-hero-actions
.elementor-button
.elementor-button-icon svg {
    display: block;

    width: 19px;
    height: 19px;

    overflow: visible;

    color: inherit;

    transform: translate3d(0, 0, 0);

    will-change:
        transform,
        opacity;
}


/* Font Awesome */

.cv-hero-actions
.elementor-button
.elementor-button-icon i {
    display: block;

    font-size: 19px;
    line-height: 1;

    color: inherit;

    transform: translate3d(0, 0, 0);

    will-change:
        transform,
        opacity;
}


/* Animación de salida y reentrada */

.cv-hero-actions
.elementor-button:hover
.elementor-button-icon svg,

.cv-hero-actions
.elementor-button:hover
.elementor-button-icon i {
    animation:
        cvArrowModern
        0.72s
        cubic-bezier(0.22, 1, 0.36, 1)
        1;
}


@keyframes cvArrowModern {

    0% {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }

    38% {
        opacity: 0;
        transform: translate3d(20px, 0, 0);
    }

    39% {
        opacity: 0;
        transform: translate3d(-14px, 0, 0);
    }

    100% {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }
}


/* Sombra sin cambiar colores */

.cv-hero-actions
.elementor-button:hover {
    box-shadow:
        0 16px 36px rgba(49, 92, 255, 0.18),
        0 5px 15px rgba(8, 9, 12, 0.14);
}


/* Click */

.cv-hero-actions
.elementor-button:active {
    box-shadow:
        0 7px 16px rgba(49, 92, 255, 0.14);
}


/* Foco de teclado */

.cv-hero-actions
.elementor-button:focus-visible {
    outline:
        3px solid rgba(49, 92, 255, 0.25);

    outline-offset: 4px;
}


/* =========================================================
   RESPONSIVE
   ========================================================= */

@media (max-width: 1024px) {

    .cv-hero-title .cv-line {
        padding-bottom: 0.22em;
        margin-bottom: -0.14em;
    }
}


@media (max-width: 767px) {

    .cv-hero-title .cv-line {
        display: inline;
        overflow: visible;

        padding: 0;
        margin: 0;
    }

    .cv-hero-title .cv-line-inner {
        display: inline;
    }

    .cv-hero-title .cv-line-inner::after {
        content: " ";
    }

    .cv-hero-actions
    .elementor-button
    .elementor-button-icon {
        margin-left: 9px !important;
    }

    .cv-hero-actions
    .elementor-button
    .elementor-button-icon svg {
        width: 17px;
        height: 17px;
    }

    .cv-hero-actions
    .elementor-button
    .elementor-button-icon i {
        font-size: 17px;
    }
}


/* =========================================================
   EDITOR DE ELEMENTOR
   ========================================================= */

body.elementor-editor-active .cv-hero-badge,
body.elementor-editor-active .cv-hero-title,
body.elementor-editor-active .cv-hero-actions,
body.elementor-editor-active .cv-hero-note {
    opacity: 1 !important;
    visibility: visible !important;
    filter: none !important;
    transform: none !important;
}


body.elementor-editor-active
.cv-hero-title
.cv-line-inner,

body.elementor-editor-active
.cv-hero-title
.word,

body.elementor-editor-active
.cv-hero-title
.char {
    opacity: 1 !important;
    visibility: visible !important;
    filter: none !important;
    transform: none !important;
}


body.elementor-editor-active
.cv-hero-copy
.char {
    color: #f5f2ea !important;
}


/* =========================================================
   ACCESIBILIDAD
   ========================================================= */

@media (prefers-reduced-motion: reduce) {

    .cv-hero-copy .char {
        color:
            rgba(245, 242, 234, 0.82) !important;
    }

    .cv-hero *,
    .cv-hero *::before,
    .cv-hero *::after {
        animation: none !important;
        transition-duration: 0.01ms !important;
    }
}


/* #########################################################
   03. BOTONES CTA
   ######################################################### */

/* =========================================================
   CV DIGITAL — BOTONES CTA DEFINITIVOS
   Clase única del contenedor: cv-cta-buttons

   IMPORTANTE:
   Fondo, texto y borde se configuran desde Elementor.
   ========================================================= */


/* =========================================================
   ESTRUCTURA DEL BOTÓN
   ========================================================= */

.cv-cta-buttons .elementor-button {
    position: relative;
    isolation: isolate;
    overflow: hidden;

    transform: translate3d(0, 0, 0);

    transition:
        transform 0.4s cubic-bezier(0.22, 1, 0.36, 1),
        color 0.4s ease,
        background-color 0.45s ease,
        border-color 0.4s ease,
        box-shadow 0.45s ease !important;

    will-change: transform;
}


/* =========================================================
   RESPLANDOR AZUL DESDE LA FLECHA
   No cambia el fondo configurado en Elementor
   ========================================================= */

.cv-cta-buttons .elementor-button::before {
    content: "";

    position: absolute;
    z-index: 0;
    inset: -1px;

    pointer-events: none;

    background: radial-gradient(
        circle at calc(100% - 22px) 50%,
        rgba(49, 92, 255, 0.52) 0%,
        rgba(49, 92, 255, 0.25) 27%,
        rgba(49, 92, 255, 0.08) 48%,
        transparent 70%
    );

    opacity: 0;

    clip-path: circle(
        0%
        at calc(100% - 22px) 50%
    );

    transition:
        opacity 0.4s ease,
        clip-path 0.72s cubic-bezier(0.22, 1, 0.36, 1);
}


.cv-cta-buttons .elementor-button:hover::before {
    opacity: 1;

    clip-path: circle(
        150%
        at calc(100% - 22px) 50%
    );
}


/* =========================================================
   LÍNEA DE LUZ SUPERIOR
   ========================================================= */

.cv-cta-buttons .elementor-button::after {
    content: "";

    position: absolute;
    z-index: 1;

    top: 0;
    left: 12%;

    width: 76%;
    height: 1px;

    pointer-events: none;

    background: linear-gradient(
        90deg,
        transparent,
        rgba(255, 255, 255, 0.64),
        transparent
    );

    opacity: 0;

    transform: scaleX(0);
    transform-origin: center;

    transition:
        opacity 0.4s ease,
        transform 0.65s cubic-bezier(0.22, 1, 0.36, 1);
}


.cv-cta-buttons .elementor-button:hover::after {
    opacity: 0.48;
    transform: scaleX(1);
}


/* =========================================================
   CONTENIDO
   ========================================================= */

.cv-cta-buttons
.elementor-button
.elementor-button-content-wrapper {
    position: relative;
    z-index: 3;

    display: flex;
    align-items: center;
    justify-content: center;
}


/* Movimiento del texto */

.cv-cta-buttons
.elementor-button
.elementor-button-text {
    position: relative;

    transition:
        transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}


.cv-cta-buttons
.elementor-button:hover
.elementor-button-text {
    transform: translateX(-3px);
}


/* =========================================================
   ICONO / FLECHA
   ========================================================= */

.cv-cta-buttons
.elementor-button
.elementor-button-icon {
    position: relative;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    flex: 0 0 auto;

    width: auto;
    height: auto;

    margin-left: 11px !important;
    margin-right: 0 !important;
    padding: 0 !important;

    color: inherit;

    background: transparent !important;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;

    line-height: 1;

    transform: translate3d(0, 0, 0);

    transition:
        transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);

    will-change: transform;
}


.cv-cta-buttons
.elementor-button
.elementor-button-icon svg {
    display: block;

    width: 19px;
    height: 19px;

    overflow: visible;

    color: inherit;
    fill: currentColor;

    transform: translate3d(0, 0, 0);

    will-change: transform, opacity;
}


.cv-cta-buttons
.elementor-button
.elementor-button-icon i {
    display: block;

    color: inherit;

    font-size: 19px;
    line-height: 1;

    transform: translate3d(0, 0, 0);

    will-change: transform, opacity;
}


/* =========================================================
   ANIMACIÓN DE SALIDA Y ENTRADA DE LA FLECHA
   ========================================================= */

.cv-cta-buttons
.elementor-button:hover
.elementor-button-icon svg,

.cv-cta-buttons
.elementor-button:hover
.elementor-button-icon i {
    animation:
        cvCtaArrow
        0.72s
        cubic-bezier(0.22, 1, 0.36, 1)
        1;
}


@keyframes cvCtaArrow {

    0% {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }

    38% {
        opacity: 0;
        transform: translate3d(20px, 0, 0);
    }

    39% {
        opacity: 0;
        transform: translate3d(-14px, 0, 0);
    }

    100% {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }
}


/* =========================================================
   SOMBRA AZUL
   ========================================================= */

.cv-cta-buttons .elementor-button:hover {
    box-shadow:
        0 16px 38px rgba(49, 92, 255, 0.3),
        0 6px 18px rgba(49, 92, 255, 0.16),
        0 0 0 1px rgba(49, 92, 255, 0.18) !important;
}


.cv-cta-buttons .elementor-button:active {
    box-shadow:
        0 8px 20px rgba(49, 92, 255, 0.22),
        0 0 0 1px rgba(49, 92, 255, 0.16) !important;
}


/* =========================================================
   FOCO DE TECLADO
   ========================================================= */

.cv-cta-buttons .elementor-button:focus-visible {
    outline: 3px solid rgba(49, 92, 255, 0.3);
    outline-offset: 4px;
}


/* =========================================================
   RESPONSIVE
   ========================================================= */

@media (max-width: 767px) {

    .cv-cta-buttons
    .elementor-button
    .elementor-button-icon {
        margin-left: 9px !important;
    }

    .cv-cta-buttons
    .elementor-button
    .elementor-button-icon svg {
        width: 17px;
        height: 17px;
    }

    .cv-cta-buttons
    .elementor-button
    .elementor-button-icon i {
        font-size: 17px;
    }
}


/* =========================================================
   MOVIMIENTO REDUCIDO
   ========================================================= */

@media (prefers-reduced-motion: reduce) {

    .cv-cta-buttons *,
    .cv-cta-buttons *::before,
    .cv-cta-buttons *::after {
        animation: none !important;
        transition-duration: 0.01ms !important;
    }
}


/* #########################################################
   04. TARJETAS DE CIFRAS
   ######################################################### */

/* =========================================================
   CV DIGITAL — TARJETAS DE MÉTRICAS
   Solo requiere la clase: cv-stat-card
   ========================================================= */

.cv-stat-card {
    --mouse-x: 50%;
    --mouse-y: 50%;

    position: relative;
    z-index: 1;

    transform-style: preserve-3d;
    transform-origin: center;

    will-change: transform, opacity, filter;
}


/* Contenedor interno */

.cv-stat-card > .elementor-widget-container {
    position: relative;
    isolation: isolate;
    overflow: hidden;

    border-radius: inherit;

    transition:
        box-shadow 0.4s ease,
        border-color 0.4s ease;
}


/* Luz sutil que sigue el cursor */

.cv-stat-card > .elementor-widget-container::before {
    content: "";

    position: absolute;
    z-index: 0;
    inset: 0;

    pointer-events: none;

    background: radial-gradient(
        circle 180px at var(--mouse-x) var(--mouse-y),
        rgba(49, 92, 255, 0.11),
        transparent 72%
    );

    opacity: 0;
    border-radius: inherit;

    transition: opacity 0.35s ease;
}


.cv-stat-card:hover
> .elementor-widget-container::before {
    opacity: 1;
}


/* Mantiene el contenido encima de la luz */

.cv-stat-card
> .elementor-widget-container
> * {
    position: relative;
    z-index: 2;
}


/* Hover */

.cv-stat-card:hover
> .elementor-widget-container {
    box-shadow:
        0 22px 50px rgba(8, 9, 12, 0.12),
        0 6px 18px rgba(49, 92, 255, 0.07);
}


/* Número generado automáticamente */

.cv-stat-card .cv-count-value {
    display: inline-block;

    min-width: 0.6em;

    font: inherit;
    font-variant-numeric: tabular-nums;
}


/* Palabras creadas por SplitType */

.cv-stat-card .word {
    display: inline-block;
    white-space: nowrap;

    will-change: transform, opacity, filter;
}


/* Íconos */

.cv-stat-card .elementor-icon-box-icon,
.cv-stat-card .elementskit-info-box-icon,
.cv-stat-card .elementskit-icon-box-icon,
.cv-stat-card .ekit-icon-box-icon {
    position: relative;

    transform-style: preserve-3d;

    will-change: transform, opacity, filter;
}


/* Pulso del ícono */

.cv-stat-card .elementor-icon {
    position: relative;
    overflow: visible;
}


.cv-stat-card .elementor-icon::after {
    content: "";

    position: absolute;
    inset: -1px;

    pointer-events: none;

    border: 1px solid rgba(49, 92, 255, 0.45);
    border-radius: 50%;

    opacity: 0;
    transform: scale(1);
}


.cv-stat-card.cv-animation-complete
.elementor-icon::after {
    animation: cvIconPulse 1.1s ease-out 1;
}


@keyframes cvIconPulse {

    0% {
        opacity: 0.7;
        transform: scale(1);
    }

    100% {
        opacity: 0;
        transform: scale(1.55);
    }
}


/* Móvil */

@media (max-width: 1024px) {

    .cv-stat-card
    > .elementor-widget-container::before {
        display: none;
    }
}


@media (max-width: 767px) {

    .cv-stat-card {
        transform: none !important;
    }
}


/* Editor Elementor */

body.elementor-editor-active .cv-stat-card,
body.elementor-editor-active .cv-stat-card * {
    opacity: 1 !important;
    visibility: visible !important;
    filter: none !important;
    transform: none !important;
}


/* Accesibilidad */

@media (prefers-reduced-motion: reduce) {

    .cv-stat-card,
    .cv-stat-card *,
    .cv-stat-card *::before,
    .cv-stat-card *::after {
        animation: none !important;
        transition-duration: 0.01ms !important;
    }
}


/* #########################################################
   05. DOLORES STICKY Y CORRECCIÓN DE OVERFLOW
   ######################################################### */

/* =========================================================
   CV DIGITAL — CORRECCIÓN DEFINITIVA DEL STICKY
   ========================================================= */


/* =========================================================
   CORRECCIÓN GLOBAL
   overflow-x:hidden estaba bloqueando position:sticky
   ========================================================= */

html,
body {
    /*
     * clip evita el scroll horizontal sin crear
     * un nuevo contenedor vertical de scroll.
     */

    overflow-x: clip !important;
}


/* =========================================================
   CONTENEDOR DE LAS DOS COLUMNAS
   Clase: cv-problems-row
   ========================================================= */

.cv-problems-row {
    position: relative !important;

    align-items: stretch !important;

    overflow: visible !important;
    contain: none !important;
}


.cv-problems-row > .e-con-inner,
.cv-problems-row > .elementor-container,
.cv-problems-row > .elementor-widget-wrap {
    align-items: stretch !important;

    overflow: visible !important;
    contain: none !important;
}


/* =========================================================
   COLUMNA IZQUIERDA EXTERIOR
   Clase: cv-problems-left
   ========================================================= */

.cv-problems-left {
    position: relative !important;

    align-self: stretch !important;
    justify-content: flex-start !important;

    height: auto !important;
    min-height: 100% !important;

    overflow: visible !important;
    contain: none !important;
}


/* =========================================================
   CONTENEDOR INTERIOR STICKY
   Clase: cv-problems-left-inner
   ========================================================= */

.cv-problems-left-inner {
    position: -webkit-sticky !important;
    position: sticky !important;

    /*
     * Mismo offset que las cards de Elementor.
     */

    top: 95px !important;

    align-self: flex-start !important;

    width: 100% !important;

    height: max-content !important;
    min-height: 0 !important;

    overflow: visible !important;
    contain: none !important;

    z-index: 5;
}


/* Wrappers internos */

.cv-problems-left-inner > .e-con-inner,
.cv-problems-left-inner > .elementor-container,
.cv-problems-left-inner > .elementor-widget-wrap {
    height: auto !important;
    min-height: 0 !important;

    overflow: visible !important;
    contain: none !important;
}


/* =========================================================
   MÓVIL
   ========================================================= */

@media (max-width: 767px) {

    .cv-problems-row {
        align-items: flex-start !important;
    }

    .cv-problems-left {
        min-height: 0 !important;
    }

    .cv-problems-left-inner {
        position: relative !important;

        top: auto !important;

        width: 100% !important;
    }
}


/* =========================================================
   EDITOR DE ELEMENTOR
   ========================================================= */

body.elementor-editor-active
.cv-problems-left-inner {
    position: relative !important;

    top: auto !important;
}


/* =========================================================
   06. TÍTULOS ANIMADOS
   Clase del widget de encabezado: cv-trust-title (o cv-title-anim)
   Marcado del título:
     <span class="cv-title-line"><span class="cv-title-line-inner">Texto</span></span>
   Destacado (línea completa o solo un fragmento):
     <span class="cv-title-line-inner cv-title-accent">…</span>
     <span class="cv-title-accent">no depende</span>
   Color del destacado: variable --cv-title-accent (azul por defecto).
   En fondos oscuros agregue también la clase cv-title-on-dark.
   ========================================================= */

.cv-trust-title,
.cv-title-anim {
    --cv-title-accent: #315cff;
}

.cv-trust-title.cv-title-lime,
.cv-title-anim.cv-title-lime {
    --cv-title-accent: #c8ff36;
}

.cv-trust-title,
.cv-trust-title .elementor-widget-container,
.cv-trust-title .elementor-heading-title,
.cv-title-anim,
.cv-title-anim .elementor-widget-container,
.cv-title-anim .elementor-heading-title {
    overflow: visible !important;
}

/* Cada línea funciona como máscara; el padding deja ver g, j, p, q, y */
.cv-trust-title .cv-title-line,
.cv-title-anim .cv-title-line {
    display: block;
    overflow: hidden;
    padding: 0 0 0.24em;
    margin: 0 0 -0.16em;
    color: inherit;
    line-height: inherit;
}

.cv-trust-title .cv-title-line-inner,
.cv-title-anim .cv-title-line-inner {
    display: block;
    color: inherit;
    line-height: inherit;
    perspective: 1000px;
}

.cv-trust-title .cv-title-accent,
.cv-title-anim .cv-title-accent {
    color: var(--cv-title-accent);
}

.cv-trust-title .word,
.cv-trust-title .char,
.cv-title-anim .word,
.cv-title-anim .char {
    display: inline-block;
}

.cv-trust-title .word,
.cv-title-anim .word {
    white-space: nowrap;
}

.cv-trust-title .char,
.cv-title-anim .char {
    transform-origin: 50% 100%;
    backface-visibility: hidden;
    will-change: transform, opacity, filter, color;
}

@media (max-width: 767px) {
    .cv-trust-title .cv-title-line,
    .cv-title-anim .cv-title-line {
        overflow: visible;
    }
}


/* =========================================================
   07. TEXTO QUE SE ILUMINA CON EL SCROLL
   cv-scroll-highlight        → en el widget de texto (fondo claro)
   cv-scroll-highlight-blue   → variante azul
   cool-split                 → en el contenedor (fondo claro)
   cool-split-white           → en el contenedor (fondo oscuro)
   Los colores los pone cv-core.js; sin JS el texto se ve normal.
   ========================================================= */

.cv-scroll-highlight .word,
.cv-scroll-highlight .char,
.cool-split .word,
.cool-split .char,
.cool-split-white .word,
.cool-split-white .char {
    display: inline-block;
}

.cv-scroll-highlight .word,
.cool-split .word,
.cool-split-white .word {
    white-space: nowrap;
}

.cv-scroll-highlight .char,
.cool-split .char,
.cool-split-white .char {
    transition: none;
    will-change: color;
}


/* =========================================================
   EDITOR DE ELEMENTOR: todo visible y en su color final
   ========================================================= */

body.elementor-editor-active .cv-trust-title .cv-title-line-inner,
body.elementor-editor-active .cv-trust-title .char,
body.elementor-editor-active .cv-title-anim .cv-title-line-inner,
body.elementor-editor-active .cv-title-anim .char,
body.elementor-editor-active .cv-reveal,
body.elementor-editor-active .cv-stagger > * {
    opacity: 1 !important;
    visibility: visible !important;
    filter: none !important;
    transform: none !important;
}

body.elementor-editor-active .cv-scroll-highlight .char,
body.elementor-editor-active .cool-split .char,
body.elementor-editor-active .cool-split-white .char {
    color: inherit !important;
}


/* =========================================================
   09. UTILIDADES DE ANIMACIÓN (para las próximas secciones)
   cv-reveal   → el elemento entra suave al hacer scroll
   cv-stagger  → los hijos directos entran uno tras otro
   cv-count    → un encabezado con número ("+200", "96 %") cuenta al entrar
   Sin JS todo se ve normal: los estados iniciales los pone cv-core.js.
   ========================================================= */

.cv-reveal,
.cv-stagger > * {
    will-change: transform, opacity;
}


/* =========================================================
   10. ACCESIBILIDAD — MOVIMIENTO REDUCIDO
   ========================================================= */

@media (prefers-reduced-motion: reduce) {
    .cv-trust-title *,
    .cv-title-anim *,
    .cv-scroll-highlight *,
    .cool-split *,
    .cool-split-white *,
    .cv-reveal,
    .cv-stagger > * {
        opacity: 1 !important;
        visibility: visible !important;
        filter: none !important;
        transform: none !important;
        animation: none !important;
        transition: none !important;
    }
}


/* #########################################################
   11. POPUP "HABLEMOS" Y FORMULARIOS (cv-popup, cv-form)
   ######################################################### */

/* ---------- Ventana del popup ---------- */

.elementor-popup-modal:has(.cv-popup) {
    background-color: rgba(8, 9, 12, 0.55) !important;
    -webkit-backdrop-filter: blur(6px);
    backdrop-filter: blur(6px);
}

.elementor-popup-modal:has(.cv-popup) .dialog-widget-content {
    background: #ffffff !important;
    border-radius: 26px 0 0 26px !important;
    box-shadow: -30px 0 80px rgba(8, 9, 12, 0.35) !important;
    overflow: hidden;
}

.elementor-popup-modal:has(.cv-popup) .dialog-message {
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-width: thin;
}

/* Botón cerrar: círculo blanco con borde fino sobre la cabecera clara */
.elementor-popup-modal:has(.cv-popup) .dialog-close-button {
    top: 18px !important;
    right: 18px !important;
    width: 34px;
    height: 34px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: #ffffff;
    border: 1px solid rgba(8, 9, 12, 0.1);
    color: #08090c !important;
    font-size: 13px;
    box-shadow: 0 4px 14px rgba(8, 9, 12, 0.06);
    transition: background-color 0.3s ease, color 0.3s ease, transform 0.3s ease;
}

.elementor-popup-modal:has(.cv-popup) .dialog-close-button:hover {
    background: #08090c;
    color: #ffffff !important;
    transform: rotate(90deg);
}

.elementor-popup-modal:has(.cv-popup) .dialog-close-button i,
.elementor-popup-modal:has(.cv-popup) .dialog-close-button svg {
    color: inherit !important;
    fill: currentColor !important;
}

@media (max-width: 767px) {
    .elementor-popup-modal:has(.cv-popup) .dialog-widget-content {
        border-radius: 0 !important;
    }
}


/* ---------- Estructura ---------- */

.cv-popup {
    min-height: 100%;
    background: #ffffff;
}

/* Cabecera clara y compacta: el protagonista es el formulario */
.cv-popup .cv-popup-head {
    position: relative;
    padding: 26px 32px 20px !important;
    background: #f5f2ea !important;
    border-bottom: 1px solid rgba(8, 9, 12, 0.06);

    /* Sin el espacio automático de Elementor entre widgets */
    --gap: 0px;
    --row-gap: 0px;
    --widgets-spacing: 0px;
    gap: 0 !important;
}

.cv-popup .cv-popup-head > .e-con-inner {
    gap: 0 !important;
}

.cv-popup .cv-popup-head .elementor-widget,
.cv-popup .cv-popup-head .elementor-element {
    margin: 0 !important;
}

.cv-popup .cv-popup-body {
    padding: 22px 32px 28px !important;
}

@media (max-width: 767px) {
    .cv-popup .cv-popup-head {
        padding: 22px 64px 18px 20px !important;
    }

    .cv-popup .cv-popup-body {
        padding: 20px 20px 26px !important;
    }
}


/* ---------- Cabecera ---------- */

.cv-popup .cv-popup-eyebrow .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 5px 11px 5px 9px;
    border: 1px solid rgba(49, 92, 255, 0.22);
    border-radius: 999px;
    background: rgba(49, 92, 255, 0.07);
    color: #315cff !important;
    font-size: 10.5px !important;
    font-weight: 700 !important;
    letter-spacing: 0.08em !important;
    text-transform: uppercase;
    line-height: 1 !important;
}

/* Punto que late */
.cv-popup .cv-popup-eyebrow .elementor-heading-title::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #315cff;
    animation: cv-pulse 2s ease-out infinite;
}

@keyframes cv-pulse {
    0% { box-shadow: 0 0 0 0 rgba(49, 92, 255, 0.45); }
    70% { box-shadow: 0 0 0 9px rgba(49, 92, 255, 0); }
    100% { box-shadow: 0 0 0 0 rgba(49, 92, 255, 0); }
}

.cv-popup .cv-popup-title .elementor-heading-title {
    margin: 12px 0 0 !important;
    color: #08090c !important;
    font-size: 22px !important;
    font-weight: 800 !important;
    line-height: 1.15 !important;
    letter-spacing: -0.035em !important;
}

.cv-popup .cv-popup-title .elementor-heading-title em {
    font-style: normal;
    color: #315cff;
}

.cv-popup .cv-popup-text,
.cv-popup .cv-popup-text p {
    margin: 6px 0 0 !important;
    color: #4a4f5a !important;
    font-size: 13.5px !important;
    line-height: 1.5 !important;
}

/* Los pasos se quitaron: la frase de respuesta ya da esa tranquilidad */
.cv-popup .cv-popup-steps {
    display: none !important;
}

/* Entrada al abrir el popup */
.elementor-popup-modal:has(.cv-popup) .cv-popup-head .elementor-element,
.elementor-popup-modal:has(.cv-popup) .cv-popup-body > .elementor-element,
.elementor-popup-modal:has(.cv-popup) .cv-popup-body > .e-con-inner > .elementor-element {
    animation: cv-pop-in 0.7s cubic-bezier(0.22, 1, 0.36, 1) both;
}

.elementor-popup-modal:has(.cv-popup) .cv-popup-head .elementor-element:nth-child(2) { animation-delay: 0.08s; }
.elementor-popup-modal:has(.cv-popup) .cv-popup-head .elementor-element:nth-child(3) { animation-delay: 0.16s; }
.elementor-popup-modal:has(.cv-popup) .cv-popup-head .elementor-element:nth-child(4) { animation-delay: 0.24s; }
.elementor-popup-modal:has(.cv-popup) .cv-popup-body .elementor-element { animation-delay: 0.3s; }

@keyframes cv-pop-in {
    from { opacity: 0; transform: translateY(18px); filter: blur(6px); }
    to { opacity: 1; transform: none; filter: none; }
}


/* ---------- Campos (cv-form) ---------- */

.cv-form {
    --cv-field-bg: #f5f3ee;
    --cv-field-border: rgba(8, 9, 12, 0.08);
    --cv-ink: #08090c;
    --cv-blue: #315cff;
}

.cv-form .elementor-form-fields-wrapper {
    margin-left: -6px !important;
    margin-right: -6px !important;
}

.cv-form .elementor-field-group {
    padding-left: 6px !important;
    padding-right: 6px !important;
    margin-bottom: 12px !important;
}

.cv-form .elementor-field-label {
    margin-bottom: 5px !important;
    padding: 0 !important;
    color: var(--cv-ink) !important;
    font-size: 12.5px !important;
    font-weight: 600 !important;
    letter-spacing: -0.005em;
}

.cv-form .elementor-mark-required .elementor-field-label::after {
    color: var(--cv-blue) !important;
}

.cv-form .elementor-field-group .elementor-field-textual,
.cv-form .elementor-field-group textarea.elementor-field {
    width: 100%;
    min-height: 44px;
    padding: 10px 14px !important;
    border: 1.5px solid var(--cv-field-border) !important;
    border-radius: 12px !important;
    background: var(--cv-field-bg) !important;
    color: var(--cv-ink) !important;
    font-family: inherit;
    font-size: 14.5px !important;
    line-height: 1.4 !important;
    box-shadow: none !important;
    transition: border-color 0.25s ease, background-color 0.25s ease, box-shadow 0.25s ease !important;
}

.cv-form .elementor-field-group textarea.elementor-field {
    min-height: 84px;
    height: 84px;
    resize: vertical;
}

.cv-form .elementor-field-textual::placeholder {
    color: rgba(8, 9, 12, 0.38);
}

.cv-form .elementor-field-group .elementor-field-textual:hover {
    border-color: rgba(8, 9, 12, 0.18) !important;
}

.cv-form .elementor-field-group .elementor-field-textual:focus {
    outline: none;
    border-color: var(--cv-blue) !important;
    background: #ffffff !important;
    box-shadow: 0 0 0 4px rgba(49, 92, 255, 0.14) !important;
}

/* Campo con error */
.cv-form .elementor-error .elementor-field-textual {
    border-color: #e5484d !important;
    background: #fff6f6 !important;
}

.cv-form .elementor-field-group .elementor-message {
    margin-top: 6px;
    font-size: 12px !important;
    color: #e5484d !important;
}


/* ---------- Necesidad: opciones como chips ---------- */

.cv-form .elementor-field-type-radio .elementor-field-subgroup {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.cv-form .elementor-field-type-radio .elementor-field-option {
    position: relative;
    margin: 0 !important;
    padding: 0 !important;
}

.cv-form .elementor-field-type-radio .elementor-field-option input {
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
    margin: 0;
    pointer-events: none;
}

.cv-form .elementor-field-type-radio .elementor-field-option label {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin: 0 !important;
    padding: 7px 11px;
    border: 1.5px solid var(--cv-field-border);
    border-radius: 999px;
    background: var(--cv-field-bg);
    color: var(--cv-ink);
    font-size: 12px;
    font-weight: 600;
    line-height: 1.2;
    cursor: pointer;
    user-select: none;
    transition: background-color 0.25s ease, border-color 0.25s ease, color 0.25s ease, transform 0.25s ease;
}

.cv-form .elementor-field-type-radio .elementor-field-option label::before {
    content: "";
    width: 8px;
    height: 8px;
    border-radius: 50%;
    border: 1.5px solid rgba(8, 9, 12, 0.3);
    transition: background-color 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
}

.cv-form .elementor-field-type-radio .elementor-field-option label:hover {
    border-color: rgba(49, 92, 255, 0.45);
    transform: translateY(-1px);
}

.cv-form .elementor-field-type-radio .elementor-field-option input:checked + label {
    background: var(--cv-ink);
    border-color: var(--cv-ink);
    color: #ffffff;
}

.cv-form .elementor-field-type-radio .elementor-field-option input:checked + label::before {
    background: #c8ff36;
    border-color: #c8ff36;
    box-shadow: 0 0 0 3px rgba(200, 255, 54, 0.25);
}

.cv-form .elementor-field-type-radio .elementor-field-option input:focus-visible + label {
    box-shadow: 0 0 0 4px rgba(49, 92, 255, 0.25);
}


/* ---------- Autorización de datos ---------- */

.cv-form .elementor-field-type-acceptance .elementor-field-subgroup {
    display: block;
}

.cv-form .elementor-field-type-acceptance .elementor-field-option {
    display: flex;
    align-items: flex-start;
    gap: 10px;
}

.cv-form .elementor-field-type-acceptance input[type="checkbox"] {
    -webkit-appearance: none !important;
    appearance: none !important;
    flex: 0 0 20px;
    width: 20px !important;
    height: 20px !important;
    margin: 1px 0 0 !important;
    padding: 0 !important;
    border: 1.5px solid rgba(8, 9, 12, 0.25) !important;
    border-radius: 6px !important;
    background: #ffffff no-repeat center / 12px 12px !important;
    cursor: pointer;
    transition: background-color 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

.cv-form .elementor-field-type-acceptance input[type="checkbox"]:checked {
    border-color: #315cff !important;
    background-color: #315cff !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.2 6.3l2.4 2.4 5.2-5.4' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
    animation: cv-tick 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
}

@keyframes cv-tick {
    0% { transform: scale(0.8); }
    100% { transform: scale(1); }
}

.cv-form .elementor-field-type-acceptance input[type="checkbox"]:focus-visible {
    box-shadow: 0 0 0 4px rgba(49, 92, 255, 0.2);
}

.cv-form .elementor-field-type-acceptance label {
    color: #727783 !important;
    font-size: 12.5px !important;
    font-weight: 400 !important;
    line-height: 1.5 !important;
}

.cv-form .elementor-field-type-acceptance label a {
    color: var(--cv-ink);
    text-decoration: underline;
    text-underline-offset: 2px;
}


/* ---------- Botón enviar ---------- */

.cv-form .elementor-field-type-submit {
    margin-top: 4px !important;
    margin-bottom: 0 !important;
}

.cv-form .elementor-field-type-submit .elementor-button {
    position: relative;
    overflow: hidden;
    isolation: isolate;
    width: 100%;
    min-height: 50px;
    padding: 13px 22px !important;
    border: 0 !important;
    border-radius: 12px !important;
    background: var(--cv-blue) !important;
    color: #ffffff !important;
    font-size: 15px !important;
    font-weight: 700 !important;
    letter-spacing: -0.01em;
    box-shadow: 0 14px 30px rgba(49, 92, 255, 0.28);
    transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.35s ease, background-color 0.35s ease !important;
}

/* Brillo que cruza el botón */
.cv-form .elementor-field-type-submit .elementor-button::before {
    content: "";
    position: absolute;
    top: 0;
    left: -60%;
    z-index: -1;
    width: 45%;
    height: 100%;
    background: linear-gradient(105deg, transparent, rgba(255, 255, 255, 0.28), transparent);
    transform: skewX(-18deg);
    transition: left 0.75s ease;
}

.cv-form .elementor-field-type-submit .elementor-button:hover {
    transform: translateY(-2px);
    background: #1f4bff !important;
    box-shadow: 0 18px 40px rgba(49, 92, 255, 0.38);
}

.cv-form .elementor-field-type-submit .elementor-button:hover::before {
    left: 120%;
}

.cv-form .elementor-field-type-submit .elementor-button-icon {
    transition: transform 0.35s ease;
}

.cv-form .elementor-field-type-submit .elementor-button:hover .elementor-button-icon {
    transform: translateX(4px);
}

.cv-form .elementor-form-waiting .elementor-field-type-submit .elementor-button,
.cv-form .elementor-field-type-submit .elementor-button[disabled] {
    opacity: 0.75;
    cursor: wait;
    transform: none;
}

/* Mensajes generales de Elementor (el de éxito lo reemplaza el panel) */
.cv-form .elementor-message-success {
    display: none !important;
}

.cv-form .elementor-message-danger:not(.elementor-help-inline) {
    margin-top: 12px;
    padding: 12px 14px;
    border-radius: 12px;
    background: #fff1f1;
    color: #c4282e !important;
    font-size: 13px;
}


/* ---------- Pie del popup ---------- */

.cv-popup .cv-popup-alt,
.cv-popup .cv-popup-alt p {
    margin: 0;
    text-align: center;
    color: #727783;
    font-size: 13px;
    line-height: 1.6;
}

.cv-popup .cv-popup-alt a {
    color: #08090c;
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1.5px solid #c8ff36;
    transition: color 0.2s ease;
}

.cv-popup .cv-popup-alt a:hover {
    color: #315cff;
}


/* =========================================================
   12. ÉXITO DEL FORMULARIO: CHECK ANIMADO + WHATSAPP
   El panel lo crea cv-core.js al recibir submit_success.
   ========================================================= */

.cv-form.cv-form--sent form.elementor-form {
    display: none !important;
}

.cv-form-success {
    padding: 30px 6px 10px;
    text-align: center;
    animation: cv-pop-in 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
}

/* Check: círculo que crece + palomita que se dibuja */
.cv-check {
    position: relative;
    width: 92px;
    height: 92px;
    margin: 0 auto 26px;
    border-radius: 50%;
    background: #c8ff36;
    animation: cv-check-pop 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) both;
}

.cv-check::before {
    content: "";
    position: absolute;
    inset: -10px;
    border-radius: 50%;
    border: 2px solid rgba(200, 255, 54, 0.6);
    animation: cv-check-ring 1.4s ease-out 0.35s both;
}

.cv-check::after {
    content: "";
    position: absolute;
    left: 33px;
    top: 47px;
    width: 0;
    height: 0;
    border-left: 5px solid #08090c;
    border-bottom: 5px solid #08090c;
    border-radius: 2px;
    transform-origin: left top;
    transform: rotate(-45deg);
    opacity: 0;
    animation: cv-check-draw 0.55s cubic-bezier(0.65, 0, 0.35, 1) 0.4s forwards;
}

@keyframes cv-check-pop {
    0% { transform: scale(0); }
    100% { transform: scale(1); }
}

@keyframes cv-check-ring {
    0% { transform: scale(0.8); opacity: 1; }
    100% { transform: scale(1.5); opacity: 0; }
}

@keyframes cv-check-draw {
    0% { width: 0; height: 0; opacity: 1; }
    40% { width: 0; height: 15px; opacity: 1; }
    100% { width: 32px; height: 15px; opacity: 1; }
}

.cv-form-success__eyebrow {
    margin: 0 0 10px;
    color: #315cff;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}

.cv-form-success__title {
    margin: 0;
    color: #08090c;
    font-size: clamp(24px, 3vw, 30px);
    font-weight: 800;
    line-height: 1.12;
    letter-spacing: -0.03em;
}

.cv-form-success__text {
    max-width: 40ch;
    margin: 14px auto 0;
    color: #4a4f5a;
    font-size: 15px;
    line-height: 1.6;
}

.cv-form-success__actions {
    display: flex;
    flex-direction: column;
    gap: 10px;
    max-width: 360px;
    margin: 28px auto 0;
}

.cv-form-success__wa {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-height: 56px;
    padding: 15px 22px;
    border-radius: 14px;
    background: #25d366;
    color: #08090c !important;
    font-size: 15px;
    font-weight: 700;
    text-decoration: none !important;
    box-shadow: 0 14px 30px rgba(37, 211, 102, 0.3);
    transition: transform 0.3s ease, box-shadow 0.3s ease, background-color 0.3s ease;
}

.cv-form-success__wa:hover {
    transform: translateY(-2px);
    background: #1fc25c;
    box-shadow: 0 18px 38px rgba(37, 211, 102, 0.4);
}

/* Ícono de WhatsApp dibujado con máscara (sin SVG en el HTML) */
.cv-form-success__wa::before {
    content: "";
    width: 22px;
    height: 22px;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17.47 14.38c-.3-.15-1.75-.86-2.02-.96-.27-.1-.47-.15-.67.15-.2.3-.77.96-.94 1.16-.17.2-.35.22-.64.07-.3-.15-1.25-.46-2.38-1.47-.88-.79-1.47-1.76-1.64-2.05-.17-.3-.02-.46.13-.6.13-.13.3-.35.45-.52.15-.17.2-.3.3-.5.1-.2.05-.37-.03-.52-.07-.15-.67-1.6-.92-2.2-.24-.58-.49-.5-.67-.5h-.57c-.2 0-.52.07-.79.37-.27.3-1.04 1.02-1.04 2.48 0 1.46 1.07 2.88 1.21 3.08.15.2 2.1 3.2 5.08 4.48.71.31 1.26.49 1.69.63.71.23 1.36.2 1.87.12.57-.08 1.75-.72 2-1.41.25-.69.25-1.29.17-1.41-.07-.12-.27-.2-.57-.35zM12.04 21.8h-.01a9.8 9.8 0 0 1-5-1.37l-.36-.21-3.72.98 1-3.63-.24-.37a9.82 9.82 0 0 1-1.5-5.24c0-5.42 4.42-9.84 9.85-9.84 2.63 0 5.1 1.03 6.96 2.89a9.78 9.78 0 0 1 2.88 6.96c0 5.43-4.42 9.84-9.84 9.84zm8.38-18.22A11.77 11.77 0 0 0 12.04 0C5.5 0 .18 5.32.18 11.86c0 2.09.55 4.13 1.59 5.93L.08 24l6.35-1.67a11.84 11.84 0 0 0 5.6 1.43h.01c6.54 0 11.86-5.32 11.86-11.86 0-3.17-1.23-6.15-3.48-8.32z'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17.47 14.38c-.3-.15-1.75-.86-2.02-.96-.27-.1-.47-.15-.67.15-.2.3-.77.96-.94 1.16-.17.2-.35.22-.64.07-.3-.15-1.25-.46-2.38-1.47-.88-.79-1.47-1.76-1.64-2.05-.17-.3-.02-.46.13-.6.13-.13.3-.35.45-.52.15-.17.2-.3.3-.5.1-.2.05-.37-.03-.52-.07-.15-.67-1.6-.92-2.2-.24-.58-.49-.5-.67-.5h-.57c-.2 0-.52.07-.79.37-.27.3-1.04 1.02-1.04 2.48 0 1.46 1.07 2.88 1.21 3.08.15.2 2.1 3.2 5.08 4.48.71.31 1.26.49 1.69.63.71.23 1.36.2 1.87.12.57-.08 1.75-.72 2-1.41.25-.69.25-1.29.17-1.41-.07-.12-.27-.2-.57-.35zM12.04 21.8h-.01a9.8 9.8 0 0 1-5-1.37l-.36-.21-3.72.98 1-3.63-.24-.37a9.82 9.82 0 0 1-1.5-5.24c0-5.42 4.42-9.84 9.85-9.84 2.63 0 5.1 1.03 6.96 2.89a9.78 9.78 0 0 1 2.88 6.96c0 5.43-4.42 9.84-9.84 9.84zm8.38-18.22A11.77 11.77 0 0 0 12.04 0C5.5 0 .18 5.32.18 11.86c0 2.09.55 4.13 1.59 5.93L.08 24l6.35-1.67a11.84 11.84 0 0 0 5.6 1.43h.01c6.54 0 11.86-5.32 11.86-11.86 0-3.17-1.23-6.15-3.48-8.32z'/%3E%3C/svg%3E") center / contain no-repeat;
}

.cv-form-success__secondary {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 50px;
    padding: 13px 22px;
    border: 1.5px solid rgba(8, 9, 12, 0.12);
    border-radius: 14px;
    background: transparent;
    color: #08090c !important;
    font-family: inherit;
    font-size: 14px;
    font-weight: 600;
    text-decoration: none !important;
    cursor: pointer;
    transition: border-color 0.25s ease, background-color 0.25s ease;
}

.cv-form-success__secondary:hover {
    border-color: #08090c;
    background: #f5f3ee;
    color: #08090c !important;
}

.cv-form-success__note {
    margin: 22px 0 0;
    color: #8a8f99;
    font-size: 12.5px;
    font-style: italic;
}

@media (prefers-reduced-motion: reduce) {
    .cv-check,
    .cv-check::before,
    .cv-check::after,
    .cv-form-success,
    .elementor-popup-modal:has(.cv-popup) .elementor-element {
        animation-duration: 0.01ms !important;
        animation-delay: 0s !important;
    }

    .cv-check::after {
        width: 32px;
        height: 15px;
        opacity: 1;
    }
}


/* Con el formulario enviado, el pie "¿Prefiere escribir directo?" sobra */
.cv-popup:has(.cv-form--sent) .cv-popup-alt {
    display: none;
}


/* =========================================================
   13. AJUSTES DEL POPUP Y FORMULARIOS (v1.2)
   ========================================================= */

/* Tipografía del sitio en todo el popup, los campos y el panel de éxito
   (los campos de formulario no heredan la fuente por defecto) */
.cv-popup,
.cv-popup .elementor-widget :not(i):not(svg):not(path):not([class*="fa-"]):not([class*="eicon"]),
.cv-form input,
.cv-form textarea,
.cv-form select,
.cv-form button,
.cv-form label,
.cv-form-success,
.cv-form-success :not(i):not(svg) {
    font-family: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important;
}

/* Al enviar, la cabecera se oculta y el éxito queda solo */
.cv-popup:has(.cv-form--sent) .cv-popup-head {
    display: none !important;
}

.cv-popup:has(.cv-form--sent) .cv-popup-body {
    padding-top: 56px !important;
}

/* Aire entre el botón Enviar y el contacto directo */
.cv-popup .cv-popup-alt {
    margin-top: 18px !important;
    padding-bottom: env(safe-area-inset-bottom, 0px);
}

.cv-popup .cv-popup-body {
    padding-bottom: 40px !important;
}

/* Panel de éxito en móvil */
@media (max-width: 767px) {
    .cv-popup:has(.cv-form--sent) .cv-popup-body {
        padding-top: 64px !important;
    }

    .cv-check {
        width: 76px;
        height: 76px;
        margin-bottom: 22px;
    }

    .cv-check::after {
        left: 27px;
        top: 39px;
        border-left-width: 4px;
        border-bottom-width: 4px;
    }

    @keyframes cv-check-draw-sm {
        0% { width: 0; height: 0; opacity: 1; }
        40% { width: 0; height: 12px; opacity: 1; }
        100% { width: 26px; height: 12px; opacity: 1; }
    }

    .cv-check::after {
        animation-name: cv-check-draw-sm;
    }

    .cv-form-success__actions {
        max-width: none;
    }

    .cv-form-success__text {
        font-size: 14.5px;
    }
}

/* Botón de WhatsApp del éxito con los colores de la marca
   (lima como el check y los correos; negro al pasar el mouse) */
.cv-form-success .cv-form-success__wa {
    background: #c8ff36;
    color: #08090c !important;
    box-shadow: 0 14px 30px rgba(200, 255, 54, 0.35);
}

.cv-form-success .cv-form-success__wa:hover {
    background: #08090c;
    color: #c8ff36 !important;
    box-shadow: 0 18px 38px rgba(8, 9, 12, 0.25);
}


/* #########################################################
   14. HOME — CICLO "ATRAER → MEJORAR" (cv-cycle)
   Va dentro de la sección oscura de Resultados.
   Estructura: cv-cycle > cv-cycle-label + cv-cycle-steps > 5 × cv-cycle-item
   (cada item: cv-cycle-num, cv-cycle-name, cv-cycle-note)
   ######################################################### */

.cv-cycle {
    position: relative;
    margin-top: 64px !important;
    padding: 30px 30px 34px !important;
    border: 1px solid rgba(255, 255, 255, 0.09);
    border-radius: 26px;
    background:
        radial-gradient(90% 120% at 0% 0%, rgba(49, 92, 255, 0.16), transparent 60%),
        rgba(255, 255, 255, 0.025);
    overflow: hidden;
}

.cv-cycle .cv-cycle-label .elementor-heading-title {
    color: rgba(248, 247, 244, 0.6) !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    letter-spacing: 0.12em !important;
    text-transform: uppercase;
    line-height: 1.3 !important;
}

.cv-cycle .cv-cycle-steps {
    --cv-node: 44px;
    display: grid !important;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 0 !important;
    margin-top: 28px;
    position: relative;
}

/* Línea que une los pasos */
.cv-cycle .cv-cycle-steps::before {
    content: "";
    position: absolute;
    top: calc(var(--cv-node) / 2);
    left: calc(var(--cv-node) / 2);
    right: calc(20% - var(--cv-node) / 2);
    height: 1px;
    background: linear-gradient(90deg, rgba(200, 255, 54, 0.6), rgba(49, 92, 255, 0.6));
}

/* Pulso que recorre el ciclo */
.cv-cycle .cv-cycle-steps::after {
    content: "";
    position: absolute;
    top: calc(var(--cv-node) / 2 - 4px);
    left: calc(var(--cv-node) / 2);
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #c8ff36;
    box-shadow: 0 0 14px 3px rgba(200, 255, 54, 0.55);
    animation: cv-cycle-run 6s cubic-bezier(0.65, 0, 0.35, 1) infinite;
}

@keyframes cv-cycle-run {
    0% { left: calc(var(--cv-node) / 2 - 4px); opacity: 0; }
    8% { opacity: 1; }
    92% { opacity: 1; }
    100% { left: calc(80% + var(--cv-node) / 2 - 4px); opacity: 0; }
}

.cv-cycle .cv-cycle-item {
    position: relative;
    width: auto !important;
    padding-right: 18px !important;
}

.cv-cycle .cv-cycle-num .elementor-heading-title {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    width: var(--cv-node);
    height: var(--cv-node);
    border: 1px solid rgba(200, 255, 54, 0.45);
    border-radius: 50%;
    background: #08090c;
    color: #c8ff36 !important;
    font-size: 13px !important;
    font-weight: 700 !important;
    letter-spacing: 0.04em;
    line-height: 1 !important;
    transition: background-color 0.35s ease, color 0.35s ease, box-shadow 0.35s ease;
}

.cv-cycle .cv-cycle-item:hover .cv-cycle-num .elementor-heading-title {
    background: #c8ff36;
    color: #08090c !important;
    box-shadow: 0 0 0 6px rgba(200, 255, 54, 0.12);
}

.cv-cycle .cv-cycle-name .elementor-heading-title {
    margin-top: 18px;
    color: #ffffff !important;
    font-size: 19px !important;
    font-weight: 800 !important;
    line-height: 1.2 !important;
    letter-spacing: -0.02em !important;
}

.cv-cycle .cv-cycle-note .elementor-heading-title {
    margin-top: 6px;
    color: rgba(248, 247, 244, 0.62) !important;
    font-size: 14px !important;
    font-weight: 400 !important;
    line-height: 1.45 !important;
}

/* Tablet: 3 + 2, sin línea horizontal */
@media (max-width: 1024px) {
    .cv-cycle .cv-cycle-steps {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        row-gap: 30px !important;
    }

    .cv-cycle .cv-cycle-steps::before,
    .cv-cycle .cv-cycle-steps::after {
        display: none;
    }
}

/* Móvil: lista vertical con línea a la izquierda */
@media (max-width: 767px) {
    .cv-cycle {
        margin-top: 44px !important;
        padding: 24px 20px 26px !important;
        border-radius: 20px;
    }

    .cv-cycle .cv-cycle-steps {
        --cv-node: 38px;
        grid-template-columns: 1fr;
        row-gap: 18px !important;
    }

    .cv-cycle .cv-cycle-steps::before {
        display: block;
        top: calc(var(--cv-node) / 2);
        bottom: calc(var(--cv-node) / 2);
        left: calc(var(--cv-node) / 2);
        right: auto;
        width: 1px;
        height: auto;
        background: linear-gradient(180deg, rgba(200, 255, 54, 0.6), rgba(49, 92, 255, 0.6));
    }

    .cv-cycle .cv-cycle-item {
        display: grid !important;
        grid-template-columns: var(--cv-node) 1fr;
        column-gap: 16px;
        align-items: start;
        padding-right: 0 !important;
    }

    .cv-cycle .cv-cycle-num {
        grid-row: span 2;
    }

    .cv-cycle .cv-cycle-name .elementor-heading-title {
        margin-top: 2px;
        font-size: 17px !important;
    }

    .cv-cycle .cv-cycle-note .elementor-heading-title {
        margin-top: 2px;
        font-size: 13.5px !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-cycle .cv-cycle-steps::after {
        display: none;
    }
}


/* #########################################################
   15. HOME — TARJETA DE DIAGNÓSTICO ENTRE LOS DOLORES
   Mismo alto que las tarjetas de dolor para que no las tape
   cuando se apilan al hacer scroll.
   ######################################################### */

.cv-diag-card > .e-con:first-child {
    width: auto !important;
    flex: 1 1 auto;
    text-align: left;
}

.cv-diag-card .elementor-widget-heading .elementor-heading-title,
.cv-diag-card .elementor-widget-text-editor,
.cv-diag-card .elementor-widget-text-editor p {
    text-align: left !important;
    margin: 0 !important;
}

.cv-diag-card .elementor-widget-text-editor p {
    opacity: 0.8;
}

.cv-diag-card .cv-cta-buttons {
    width: auto !important;
    flex: 0 0 auto;
}

.cv-diag-card .cv-cta-buttons .elementor-button {
    white-space: nowrap;
}

@media (max-width: 767px) {
    .cv-diag-card .cv-cta-buttons {
        width: 100% !important;
        margin-top: 12px;
    }

    .cv-diag-card .cv-cta-buttons .elementor-button {
        white-space: normal;
        width: 100%;
    }
}


/* Pila de tarjetas de los dolores (cv-stack): todas del mismo alto mínimo
   para que la escalera se vea pareja y ninguna asome por debajo de otra */
@media (min-width: 768px) {
    .cv-stack > .e-con {
        min-height: 220px;
    }
}


/* #########################################################
   16. HOME — TARJETAS DE DOLORES CON VIDA
   cv-pain-card (contenedor enlazado), cv-card-num, cv-card-icon,
   cv-card-arrow. Borde de luz azul→lima, barrido de brillo,
   ícono que reacciona y flecha que se mueve.
   ######################################################### */

.cv-pain-card {
    isolation: isolate;
    overflow: hidden;
    transition: box-shadow 0.45s ease, background-color 0.45s ease !important;
}

/* Borde con degradado que se enciende al pasar el mouse */
.cv-pain-card::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 2;
    padding: 1.5px;
    border-radius: inherit;
    background: linear-gradient(120deg, rgba(49, 92, 255, 0.15), #315cff 45%, #c8ff36);
    -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
    -webkit-mask-composite: xor;
    mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.45s ease;
}

/* Barrido de luz */
.cv-pain-card::after {
    content: "";
    position: absolute;
    top: 0;
    left: -40%;
    z-index: -1;
    width: 30%;
    height: 100%;
    background: linear-gradient(100deg, transparent, rgba(49, 92, 255, 0.08), transparent);
    transform: skewX(-18deg);
    pointer-events: none;
    transition: left 0.9s cubic-bezier(0.22, 1, 0.36, 1);
}

.cv-pain-card:hover {
    box-shadow: 0 22px 50px rgba(49, 92, 255, 0.14) !important;
}

.cv-pain-card:hover::before {
    opacity: 1;
}

.cv-pain-card:hover::after {
    left: 120%;
}

/* Número */
.cv-pain-card .cv-card-num .elementor-heading-title {
    transition: color 0.35s ease, transform 0.35s ease;
}

.cv-pain-card:hover .cv-card-num .elementor-heading-title {
    color: #08090c !important;
}

/* Ícono de la tarjeta */
.cv-pain-card .cv-card-icon .elementor-icon {
    transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1), background-color 0.35s ease, box-shadow 0.35s ease;
}

.cv-pain-card:hover .cv-card-icon .elementor-icon {
    transform: rotate(-8deg) scale(1.08);
    background-color: rgba(49, 92, 255, 0.16) !important;
    box-shadow: 0 10px 24px rgba(49, 92, 255, 0.18);
}

/* Flecha: se mueve sola cada tanto y al pasar el mouse sale y vuelve a entrar */
.cv-card-arrow .elementor-icon {
    position: relative;
    overflow: hidden;
    transition: background-color 0.35s ease, color 0.35s ease, box-shadow 0.35s ease, transform 0.35s ease;
}

.cv-card-arrow .elementor-icon svg,
.cv-card-arrow .elementor-icon i {
    animation: cv-arrow-nudge 3.2s ease-in-out infinite;
}

.cv-pain-card:nth-child(2) .cv-card-arrow .elementor-icon svg,
.cv-pain-card:nth-child(2) .cv-card-arrow .elementor-icon i { animation-delay: 0.4s; }
.cv-pain-card:nth-child(3) .cv-card-arrow .elementor-icon svg,
.cv-pain-card:nth-child(3) .cv-card-arrow .elementor-icon i { animation-delay: 0.8s; }
.cv-pain-card:nth-child(4) .cv-card-arrow .elementor-icon svg,
.cv-pain-card:nth-child(4) .cv-card-arrow .elementor-icon i { animation-delay: 1.2s; }
.cv-pain-card:nth-child(6) .cv-card-arrow .elementor-icon svg,
.cv-pain-card:nth-child(6) .cv-card-arrow .elementor-icon i { animation-delay: 1.6s; }
.cv-pain-card:nth-child(7) .cv-card-arrow .elementor-icon svg,
.cv-pain-card:nth-child(7) .cv-card-arrow .elementor-icon i { animation-delay: 2s; }
.cv-pain-card:nth-child(8) .cv-card-arrow .elementor-icon svg,
.cv-pain-card:nth-child(8) .cv-card-arrow .elementor-icon i { animation-delay: 2.4s; }
.cv-pain-card:nth-child(9) .cv-card-arrow .elementor-icon svg,
.cv-pain-card:nth-child(9) .cv-card-arrow .elementor-icon i { animation-delay: 2.8s; }

@keyframes cv-arrow-nudge {
    0%, 70%, 100% { transform: translateX(0); }
    78% { transform: translateX(5px); }
    86% { transform: translateX(-1px); }
    92% { transform: translateX(2px); }
}

/* Anillo que late alrededor de la flecha */
.cv-card-arrow .elementor-icon::after {
    content: "";
    position: absolute;
    inset: -1px;
    border-radius: inherit;
    border: 1.5px solid rgba(49, 92, 255, 0.45);
    opacity: 0;
    pointer-events: none;
}

.cv-pain-card:hover .cv-card-arrow .elementor-icon {
    background-color: #315cff !important;
    color: #ffffff !important;
    fill: #ffffff !important;
    box-shadow: 0 10px 26px rgba(49, 92, 255, 0.35);
    transform: rotate(-45deg);
}

.cv-pain-card:hover .cv-card-arrow .elementor-icon svg {
    fill: #ffffff !important;
}

.cv-pain-card:hover .cv-card-arrow .elementor-icon i {
    color: #ffffff !important;
}

.cv-pain-card:hover .cv-card-arrow .elementor-icon svg,
.cv-pain-card:hover .cv-card-arrow .elementor-icon i {
    animation: cv-arrow-zip 0.55s cubic-bezier(0.65, 0, 0.35, 1);
}

.cv-pain-card:hover .cv-card-arrow .elementor-icon::after {
    animation: cv-arrow-ring 1.2s ease-out infinite;
}

@keyframes cv-arrow-zip {
    0% { transform: translateX(0); opacity: 1; }
    45% { transform: translateX(140%); opacity: 0; }
    46% { transform: translateX(-140%); opacity: 0; }
    100% { transform: translateX(0); opacity: 1; }
}

@keyframes cv-arrow-ring {
    0% { transform: scale(1); opacity: 0.8; }
    100% { transform: scale(1.5); opacity: 0; }
}

/* En pantallas táctiles no hay hover: la flecha queda en azul */
@media (hover: none) {
    .cv-card-arrow .elementor-icon {
        background-color: #315cff !important;
    }

    .cv-card-arrow .elementor-icon svg {
        fill: #ffffff !important;
    }

    .cv-card-arrow .elementor-icon i {
        color: #ffffff !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-card-arrow .elementor-icon svg,
    .cv-card-arrow .elementor-icon i,
    .cv-card-arrow .elementor-icon::after {
        animation: none !important;
    }
}


/* #########################################################
   17. TARJETA DE CASO (Loop Item: cv-case-card)
   Foto a sangre, capa oscura, sector + logo arriba,
   métrica grande en lima, titular y "Ver caso completo".
   Hover: zoom, marco tipo HUD en lima, línea de escaneo
   y flecha que gira.
   ######################################################### */

.cv-case-card {
    --cv-case-radius: 22px;
    position: relative !important;
    isolation: isolate;
    display: flex !important;
    flex-direction: column !important;
    justify-content: space-between !important;
    aspect-ratio: 4 / 5;
    min-height: 420px;
    padding: 22px !important;
    overflow: hidden;
    border-radius: var(--cv-case-radius);
    background: #08090c;
    color: #ffffff;
    text-decoration: none !important;
    box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.06);
    transition: box-shadow 0.5s ease, transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

/* Foto a sangre */
.cv-case-card .cv-case-media {
    position: absolute !important;
    inset: 0;
    z-index: -2;
    width: 100% !important;
    height: 100%;
    margin: 0 !important;
}

.cv-case-card .cv-case-media .elementor-widget-container,
.cv-case-card .cv-case-media a {
    height: 100%;
}

.cv-case-card .cv-case-media img {
    width: 100% !important;
    height: 100% !important;
    max-width: none !important;
    object-fit: cover;
    filter: saturate(0.75) brightness(0.72);
    transform: scale(1.02);
    transition: transform 1.1s cubic-bezier(0.22, 1, 0.36, 1), filter 0.6s ease;
}

/* Capa para que el texto siempre se lea */
.cv-case-card::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background:
        linear-gradient(180deg, rgba(8, 9, 12, 0.55) 0%, rgba(8, 9, 12, 0) 28%),
        linear-gradient(0deg, rgba(8, 9, 12, 0.96) 0%, rgba(8, 9, 12, 0.78) 34%, rgba(8, 9, 12, 0.1) 70%);
    transition: opacity 0.5s ease;
}

/* Marco tipo HUD: cuatro esquinas en lima */
.cv-case-card::after {
    content: "";
    position: absolute;
    inset: 12px;
    z-index: 3;
    pointer-events: none;
    background:
        linear-gradient(#c8ff36, #c8ff36) top left / 22px 2px no-repeat,
        linear-gradient(#c8ff36, #c8ff36) top left / 2px 22px no-repeat,
        linear-gradient(#c8ff36, #c8ff36) top right / 22px 2px no-repeat,
        linear-gradient(#c8ff36, #c8ff36) top right / 2px 22px no-repeat,
        linear-gradient(#c8ff36, #c8ff36) bottom left / 22px 2px no-repeat,
        linear-gradient(#c8ff36, #c8ff36) bottom left / 2px 22px no-repeat,
        linear-gradient(#c8ff36, #c8ff36) bottom right / 22px 2px no-repeat,
        linear-gradient(#c8ff36, #c8ff36) bottom right / 2px 22px no-repeat;
    opacity: 0;
    transform: scale(1.04);
    transition: opacity 0.45s ease, transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}

/* Línea de escaneo */
.cv-case-card .cv-case-media::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    top: -20%;
    height: 18%;
    background: linear-gradient(180deg, transparent, rgba(200, 255, 54, 0.14) 70%, rgba(200, 255, 54, 0.55) 100%);
    border-bottom: 1px solid rgba(200, 255, 54, 0.7);
    opacity: 0;
    pointer-events: none;
}

/* ---------- Arriba: sector y logo ---------- */

.cv-case-card .cv-case-top {
    display: flex !important;
    flex-direction: row !important;
    align-items: flex-start !important;
    justify-content: space-between !important;
    gap: 12px !important;
    width: 100% !important;
}

.cv-case-card .cv-case-sector {
    width: auto !important;
}

.cv-case-card .cv-case-sector .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 7px 12px;
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 999px;
    background: rgba(8, 9, 12, 0.42);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    color: #ffffff !important;
    font-size: 11px !important;
    font-weight: 700 !important;
    letter-spacing: 0.1em !important;
    text-transform: uppercase;
    line-height: 1.2 !important;
}

.cv-case-card .cv-case-sector .elementor-heading-title::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #c8ff36;
    box-shadow: 0 0 10px rgba(200, 255, 54, 0.8);
}

/* El logo en color se muestra en blanco sobre la foto */
.cv-case-card .cv-case-logo {
    width: auto !important;
    max-width: 42%;
}

.cv-case-card .cv-case-logo img {
    display: block;
    width: auto !important;
    max-width: 100% !important;
    max-height: 34px !important;
    object-fit: contain;
    filter: brightness(0) invert(1);
    opacity: 0.92;
}

/* ---------- Abajo: cliente, métrica, titular, CTA ---------- */

.cv-case-card .cv-case-body {
    display: flex !important;
    flex-direction: column !important;
    gap: 0 !important;
    width: 100% !important;
}

.cv-case-card .cv-case-client .elementor-heading-title {
    margin: 0 0 14px;
    color: rgba(248, 247, 244, 0.7) !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.08em !important;
    text-transform: uppercase;
    line-height: 1.3 !important;
}

.cv-case-card .cv-case-metric .elementor-heading-title {
    margin: 0;
    color: #c8ff36 !important;
    font-size: clamp(38px, 4vw, 54px) !important;
    font-weight: 800 !important;
    line-height: 0.95 !important;
    letter-spacing: -0.045em !important;
    font-variant-numeric: tabular-nums;
}

.cv-case-card .cv-case-metric-label .elementor-heading-title {
    margin: 8px 0 0;
    color: rgba(248, 247, 244, 0.78) !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    line-height: 1.35 !important;
}

.cv-case-card .cv-case-title .elementor-heading-title {
    margin: 18px 0 0;
    padding-top: 16px;
    border-top: 1px solid rgba(255, 255, 255, 0.14);
    color: #ffffff !important;
    font-size: 19px !important;
    font-weight: 700 !important;
    line-height: 1.25 !important;
    letter-spacing: -0.02em !important;
}

.cv-case-card .cv-case-cta {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    width: 100% !important;
    margin-top: 16px;
}

.cv-case-card .cv-case-cta-text .elementor-heading-title {
    color: #ffffff !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    opacity: 0.85;
    transition: opacity 0.35s ease, transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}

.cv-case-card .cv-case-cta-icon {
    width: auto !important;
}

.cv-case-card .cv-case-cta-icon .elementor-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.18);
    color: #ffffff !important;
    fill: #ffffff !important;
    font-size: 15px !important;
    transition: background-color 0.35s ease, border-color 0.35s ease, transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.cv-case-card .cv-case-cta-icon .elementor-icon svg {
    width: 15px;
    height: 15px;
    fill: currentColor !important;
}

/* ---------- Hover ---------- */

.cv-case-card:hover {
    box-shadow: 0 0 0 1px rgba(200, 255, 54, 0.35), 0 30px 60px rgba(8, 9, 12, 0.35);
}

.cv-case-card:hover .cv-case-media img {
    transform: scale(1.09);
    filter: saturate(1) brightness(0.62);
}

.cv-case-card:hover::after {
    opacity: 1;
    transform: scale(1);
}

.cv-case-card:hover .cv-case-media::after {
    animation: cv-case-scan 1.2s cubic-bezier(0.65, 0, 0.35, 1) 1;
}

@keyframes cv-case-scan {
    0% { top: -20%; opacity: 0; }
    15% { opacity: 1; }
    85% { opacity: 1; }
    100% { top: 105%; opacity: 0; }
}

.cv-case-card:hover .cv-case-cta-text .elementor-heading-title {
    opacity: 1;
    transform: translateX(4px);
}

.cv-case-card:hover .cv-case-cta-icon .elementor-icon {
    background: #c8ff36;
    border-color: #c8ff36;
    color: #08090c !important;
    fill: #08090c !important;
    transform: rotate(-45deg) scale(1.06);
}

.cv-case-card:focus-visible {
    outline: 2px solid #c8ff36;
    outline-offset: 3px;
}

/* ---------- Responsive ---------- */

@media (max-width: 1024px) {
    .cv-case-card {
        min-height: 400px;
    }
}

@media (max-width: 767px) {
    .cv-case-card {
        aspect-ratio: 4 / 4.6;
        min-height: 380px;
        padding: 18px !important;
        --cv-case-radius: 18px;
    }

    .cv-case-card .cv-case-metric .elementor-heading-title {
        font-size: 40px !important;
    }

    .cv-case-card .cv-case-title .elementor-heading-title {
        font-size: 17px !important;
    }

    .cv-case-card .cv-case-logo img {
        max-height: 28px !important;
    }
}

/* En táctiles no hay hover: marco y flecha quedan visibles */
@media (hover: none) {
    .cv-case-card::after {
        opacity: 0.55;
        transform: none;
    }

    .cv-case-card .cv-case-cta-icon .elementor-icon {
        background: #c8ff36;
        border-color: #c8ff36;
        color: #08090c !important;
        fill: #08090c !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-case-card .cv-case-media img,
    .cv-case-card .cv-case-media::after {
        transition: none !important;
        animation: none !important;
    }
}


/* #########################################################
   18. HOME — PIEZAS COMUNES DE SECCIÓN
   cv-eyebrow, cv-h2, cv-sec-head, cv-sec-lead, cv-sec-foot
   y variantes de botón cv-btn-*
   ######################################################### */

.cv-eyebrow .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 6px 13px 6px 10px;
    border: 1px solid rgba(49, 92, 255, 0.22);
    border-radius: 999px;
    background: rgba(49, 92, 255, 0.07);
    color: #315cff !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    letter-spacing: 0.1em !important;
    text-transform: uppercase;
    line-height: 1.2 !important;
}

.cv-eyebrow .elementor-heading-title::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: currentColor;
}

.cv-eyebrow-dark .elementor-heading-title {
    border-color: rgba(200, 255, 54, 0.3);
    background: rgba(200, 255, 54, 0.07);
    color: #c8ff36 !important;
}

.cv-h2 .elementor-heading-title {
    margin-top: 18px !important;
    font-size: clamp(32px, 4.2vw, 54px) !important;
    font-weight: 800 !important;
    line-height: 1.04 !important;
    letter-spacing: -0.04em !important;
    color: #08090c;
}

.cv-sol-section .cv-h2 .elementor-heading-title,
.cv-final-section .cv-h2 .elementor-heading-title {
    color: #ffffff !important;
}

.cv-sec-head {
    margin-bottom: 56px !important;
}

.cv-sec-head-row {
    align-items: flex-end !important;
    justify-content: space-between !important;
}

.cv-sec-head-row > .e-con {
    width: auto !important;
    flex: 1 1 auto;
}

.cv-sec-lead,
.cv-sec-lead p {
    max-width: 46ch;
    margin: 0 !important;
    color: #4a4f5a !important;
    font-size: 17px !important;
    line-height: 1.6 !important;
}

.cv-sec-head-row .cv-sec-lead {
    width: auto !important;
    flex: 0 1 440px;
}

.cv-sec-foot {
    margin-top: 48px !important;
}

@media (max-width: 1024px) {
    .cv-sec-head-row {
        flex-direction: column !important;
        align-items: flex-start !important;
        gap: 18px !important;
    }

    .cv-sec-head-row .cv-sec-lead {
        flex-basis: auto;
    }
}

@media (max-width: 767px) {
    .cv-sec-head {
        margin-bottom: 36px !important;
    }

    .cv-sec-lead,
    .cv-sec-lead p {
        font-size: 16px !important;
    }

    .cv-sec-foot {
        margin-top: 32px !important;
    }
}

/* ---------- Botones ---------- */

.cv-btn .elementor-button {
    display: inline-flex;
    align-items: center;
    padding: 15px 24px !important;
    border: 1.5px solid transparent !important;
    border-radius: 12px !important;
    font-family: "Plus Jakarta Sans", sans-serif !important;
    font-size: 15px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: -0.01em;
    transition: background-color 0.35s ease, color 0.35s ease, border-color 0.35s ease, box-shadow 0.35s ease !important;
}

.cv-btn .elementor-button-icon {
    transition: transform 0.35s ease;
}

.cv-btn .elementor-button:hover .elementor-button-icon {
    transform: translateX(4px);
}

.cv-btn .elementor-button-icon svg {
    width: 14px;
    fill: currentColor;
}

.cv-btn-lime .elementor-button {
    background: #c8ff36 !important;
    color: #08090c !important;
    box-shadow: 0 12px 30px rgba(200, 255, 54, 0.22);
}

.cv-btn-lime .elementor-button:hover {
    background: #ffffff !important;
    color: #08090c !important;
}

.cv-btn-dark .elementor-button {
    background: #08090c !important;
    color: #ffffff !important;
}

.cv-btn-dark .elementor-button:hover {
    background: #315cff !important;
    color: #ffffff !important;
    box-shadow: 0 14px 30px rgba(49, 92, 255, 0.3);
}

.cv-btn-ghost-dark .elementor-button {
    background: transparent !important;
    border-color: rgba(255, 255, 255, 0.22) !important;
    color: #ffffff !important;
}

.cv-btn-ghost-dark .elementor-button:hover {
    border-color: #c8ff36 !important;
    color: #c8ff36 !important;
}

.cv-btn-link .elementor-button {
    padding: 15px 4px !important;
    background: transparent !important;
    color: #08090c !important;
    text-decoration: underline;
    text-decoration-color: #c8ff36;
    text-decoration-thickness: 2px;
    text-underline-offset: 6px;
}

.cv-btn-link .elementor-button:hover {
    color: #315cff !important;
}

@media (max-width: 767px) {
    .cv-btn,
    .cv-btn .elementor-button {
        width: 100%;
    }

    .cv-btn .elementor-button {
        justify-content: center;
    }

    .cv-btn-link,
    .cv-btn-link .elementor-button {
        width: auto;
    }
}


/* #########################################################
   19. HOME — SOLUCIONES EN TABS (cv-sol)
   ######################################################### */

.cv-sol-section {
    position: relative;
    overflow: hidden;
}

.cv-sol-section::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
        radial-gradient(60% 50% at 100% 0%, rgba(49, 92, 255, 0.22), transparent 70%),
        radial-gradient(40% 40% at 0% 100%, rgba(200, 255, 54, 0.06), transparent 70%);
    pointer-events: none;
}

.cv-sol {
    display: grid !important;
    grid-template-columns: minmax(260px, 380px) 1fr;
    gap: 64px !important;
    align-items: start;
}

.cv-sol-nav {
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.cv-sol-tab {
    position: relative;
    cursor: pointer;
    outline: none;
}

.cv-sol-tab .elementor-heading-title {
    display: flex;
    align-items: baseline;
    gap: 16px;
    padding: 22px 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    color: rgba(248, 247, 244, 0.45) !important;
    font-size: 21px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: -0.02em !important;
    transition: color 0.35s ease, padding-left 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}

.cv-sol-tab .cv-sol-num {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.08em;
    color: rgba(248, 247, 244, 0.4);
    transition: color 0.35s ease;
}

.cv-sol-tab:hover .elementor-heading-title {
    color: rgba(248, 247, 244, 0.8) !important;
}

.cv-sol-tab.is-active .elementor-heading-title {
    padding-left: 14px;
    color: #ffffff !important;
}

.cv-sol-tab.is-active .cv-sol-num {
    color: #c8ff36;
}

/* Barra de avance del tab activo */
.cv-sol-tab::before {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    height: 2px;
    width: 0;
    background: linear-gradient(90deg, #315cff, #c8ff36);
}

.cv-sol-tab::after {
    content: "";
    position: absolute;
    left: 0;
    top: 22px;
    bottom: 22px;
    width: 3px;
    border-radius: 3px;
    background: #c8ff36;
    transform: scaleY(0);
    transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}

.cv-sol-tab.is-active::after {
    transform: scaleY(1);
}

.cv-sol:not(.is-manual) .cv-sol-tab.is-active::before {
    animation: cv-sol-progress 8s linear forwards;
}

.cv-sol.is-manual .cv-sol-tab.is-active::before {
    width: 100%;
}

@keyframes cv-sol-progress {
    from { width: 0; }
    to { width: 100%; }
}

.cv-sol-tab:focus-visible .elementor-heading-title {
    color: #ffffff !important;
    text-decoration: underline;
    text-decoration-color: #c8ff36;
}

/* Paneles apilados en la misma celda */
.cv-sol-panels {
    display: grid !important;
}

.cv-sol-panel {
    grid-area: 1 / 1;
    padding: 34px 38px 38px !important;
    border: 1px solid rgba(255, 255, 255, 0.09);
    border-radius: 24px;
    background: rgba(255, 255, 255, 0.03);
    -webkit-backdrop-filter: blur(6px);
    backdrop-filter: blur(6px);
    opacity: 0;
    visibility: hidden;
    transform: translateY(16px);
    transition: opacity 0.45s ease, transform 0.6s cubic-bezier(0.22, 1, 0.36, 1), visibility 0s linear 0.45s;
}

.cv-sol-panel.is-active {
    opacity: 1;
    visibility: visible;
    transform: none;
    transition: opacity 0.45s ease 0.05s, transform 0.6s cubic-bezier(0.22, 1, 0.36, 1) 0.05s, visibility 0s;
}

.cv-sol-panel-name {
    display: none;
}

.cv-sol-para .elementor-heading-title {
    margin: 0 !important;
    color: #ffffff !important;
    font-size: clamp(22px, 2.3vw, 30px) !important;
    font-weight: 700 !important;
    line-height: 1.22 !important;
    letter-spacing: -0.025em !important;
}

.cv-sol-text,
.cv-sol-text p {
    margin: 16px 0 0 !important;
    color: rgba(248, 247, 244, 0.72) !important;
    font-size: 16px !important;
    line-height: 1.6 !important;
}

.cv-sol-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px 24px;
    margin: 26px 0 0 !important;
    padding: 22px 0 0 !important;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    list-style: none;
}

.cv-sol-list li {
    position: relative;
    padding-left: 18px;
    color: rgba(248, 247, 244, 0.86);
    font-size: 15px;
    line-height: 1.45;
}

.cv-sol-list li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.55em;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #c8ff36;
    box-shadow: 0 0 10px rgba(200, 255, 54, 0.6);
}

.cv-sol-ctas {
    flex-wrap: wrap !important;
    margin-top: 30px !important;
}

.cv-sol-ctas > .elementor-element {
    width: auto !important;
}

@media (max-width: 1024px) {
    .cv-sol {
        grid-template-columns: 1fr;
        gap: 28px !important;
    }

    .cv-sol-nav {
        display: grid !important;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        column-gap: 24px !important;
    }
}

/* Móvil: sin tabs, los cuatro paneles uno debajo del otro */
@media (max-width: 767px) {
    .cv-sol-nav {
        display: none !important;
    }

    .cv-sol-panels {
        display: flex !important;
        flex-direction: column !important;
        gap: 14px !important;
    }

    .cv-sol-panel {
        opacity: 1;
        visibility: visible;
        transform: none;
        padding: 24px 20px 26px !important;
        border-radius: 18px;
    }

    .cv-sol-panel-name {
        display: block;
    }

    .cv-sol-panel-name .elementor-heading-title {
        margin: 0 0 12px !important;
        color: #c8ff36 !important;
        font-size: 13px !important;
        font-weight: 700 !important;
        letter-spacing: 0.06em !important;
        text-transform: uppercase;
        line-height: 1.3 !important;
    }

    .cv-sol-list {
        grid-template-columns: 1fr;
    }

    .cv-sol-ctas > .elementor-element {
        width: 100% !important;
    }
}


/* #########################################################
   20. HOME — CÓMO TRABAJAMOS (cv-how)
   ######################################################### */

.cv-how {
    display: grid !important;
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
    gap: 72px !important;
    align-items: center;
}

.cv-how-media {
    position: relative;
}

.cv-founder-photo,
.cv-founder-photo .elementor-widget-container {
    position: relative;
}

.cv-founder-photo img {
    display: block;
    width: 100% !important;
    aspect-ratio: 4 / 5;
    object-fit: cover;
    border-radius: 26px;
}

/* Marco HUD alrededor de la foto */
.cv-how-media::after {
    content: "";
    position: absolute;
    inset: -12px;
    pointer-events: none;
    background:
        linear-gradient(#315cff, #315cff) top left / 34px 2px no-repeat,
        linear-gradient(#315cff, #315cff) top left / 2px 34px no-repeat,
        linear-gradient(#c8ff36, #c8ff36) bottom right / 34px 2px no-repeat,
        linear-gradient(#c8ff36, #c8ff36) bottom right / 2px 34px no-repeat;
}

.cv-founder-badge {
    position: absolute !important;
    left: 18px;
    right: 18px;
    bottom: 18px;
    width: auto !important;
    padding: 16px 18px !important;
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 16px;
    background: rgba(8, 9, 12, 0.6);
    -webkit-backdrop-filter: blur(14px);
    backdrop-filter: blur(14px);
}

.cv-founder-badge p {
    margin: 0 !important;
    color: rgba(248, 247, 244, 0.75) !important;
    font-size: 13px !important;
    line-height: 1.45 !important;
}

.cv-founder-badge strong {
    color: #ffffff;
    font-size: 16px;
    font-weight: 800;
    letter-spacing: -0.01em;
}

.cv-how-content .cv-sec-lead {
    margin-top: 18px !important;
}

.cv-stages {
    margin-top: 34px !important;
    border-top: 1px solid rgba(8, 9, 12, 0.08);
}

.cv-stage {
    align-items: flex-start !important;
    padding: 18px 0 !important;
    border-bottom: 1px solid rgba(8, 9, 12, 0.08);
    transition: padding-left 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}

.cv-stage:hover {
    padding-left: 10px !important;
}

.cv-stage > .e-con {
    width: auto !important;
    flex: 1 1 auto;
}

.cv-stage-num {
    width: auto !important;
}

.cv-stage-num .elementor-heading-title {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: #08090c;
    color: #c8ff36 !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    transition: background-color 0.35s ease, color 0.35s ease;
}

.cv-stage:hover .cv-stage-num .elementor-heading-title {
    background: #315cff;
    color: #ffffff !important;
}

.cv-stage-title .elementor-heading-title {
    margin: 0 !important;
    color: #08090c !important;
    font-size: 18px !important;
    font-weight: 800 !important;
    line-height: 1.3 !important;
    letter-spacing: -0.02em !important;
}

.cv-stage-text .elementor-heading-title {
    margin: 4px 0 0 !important;
    color: #5a5f69 !important;
    font-size: 15px !important;
    font-weight: 400 !important;
    line-height: 1.5 !important;
}

.cv-founder-quote blockquote {
    position: relative;
    margin: 30px 0 0 !important;
    padding: 4px 0 4px 22px;
    border-left: 3px solid #c8ff36;
    color: #08090c;
    font-size: 17px;
    font-weight: 600;
    font-style: normal;
    line-height: 1.55;
    letter-spacing: -0.01em;
}

.cv-founder-quote cite {
    display: block;
    margin-top: 10px;
    color: #727783;
    font-size: 13px;
    font-style: normal;
    font-weight: 600;
}

.cv-how-ctas {
    flex-wrap: wrap !important;
    align-items: center !important;
    margin-top: 32px !important;
}

.cv-how-ctas > .elementor-element {
    width: auto !important;
}

@media (max-width: 1024px) {
    .cv-how {
        grid-template-columns: 1fr;
        gap: 48px !important;
    }

    .cv-how-media {
        max-width: 520px;
    }
}

@media (max-width: 767px) {
    .cv-founder-photo img {
        aspect-ratio: 4 / 4.4;
        border-radius: 20px;
    }

    .cv-how-media::after {
        inset: -8px;
    }

    .cv-founder-quote blockquote {
        font-size: 16px;
    }

    .cv-how-ctas > .elementor-element {
        width: 100% !important;
    }
}


/* #########################################################
   21. HOME — CIERRE (cv-final)
   ######################################################### */

.cv-final-section {
    position: relative;
    overflow: hidden;
}

.cv-final-section::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(rgba(255, 255, 255, 0.045) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, 0.045) 1px, transparent 1px);
    background-size: 56px 56px;
    -webkit-mask-image: radial-gradient(70% 70% at 50% 50%, #000 0%, transparent 75%);
    mask-image: radial-gradient(70% 70% at 50% 50%, #000 0%, transparent 75%);
    animation: cv-grid-drift 18s linear infinite;
    pointer-events: none;
}

.cv-final-section::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 55%;
    width: 900px;
    height: 900px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(49, 92, 255, 0.35) 0%, rgba(49, 92, 255, 0) 60%);
    transform: translate(-50%, -50%);
    pointer-events: none;
    animation: cv-glow-breathe 7s ease-in-out infinite;
}

@keyframes cv-grid-drift {
    from { background-position: 0 0, 0 0; }
    to { background-position: 56px 56px, 56px 56px; }
}

@keyframes cv-glow-breathe {
    0%, 100% { opacity: 0.75; transform: translate(-50%, -50%) scale(1); }
    50% { opacity: 1; transform: translate(-50%, -50%) scale(1.08); }
}

.cv-final {
    position: relative;
    z-index: 1;
    align-items: center !important;
    max-width: 920px;
    margin: 0 auto !important;
    text-align: center;
}

.cv-final .cv-h2 .elementor-heading-title {
    text-align: center;
}

.cv-final-text,
.cv-final-text p {
    max-width: 62ch;
    margin: 20px auto 0 !important;
    color: rgba(248, 247, 244, 0.72) !important;
    font-size: 17px !important;
    line-height: 1.6 !important;
    text-align: center;
}

.cv-final-ctas {
    justify-content: center !important;
    flex-wrap: wrap !important;
    margin-top: 34px !important;
}

.cv-final-ctas > .elementor-element {
    width: auto !important;
}

.cv-final-note .elementor-heading-title {
    margin: 22px 0 0 !important;
    color: rgba(248, 247, 244, 0.5) !important;
    font-size: 14px !important;
    font-style: italic;
    font-weight: 400 !important;
    text-align: center;
}

@media (max-width: 767px) {
    .cv-final-section::after {
        width: 560px;
        height: 560px;
    }

    .cv-final-text,
    .cv-final-text p {
        font-size: 16px !important;
    }

    .cv-final-ctas > .elementor-element {
        width: 100% !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-final-section::before,
    .cv-final-section::after,
    .cv-sol-tab::before {
        animation: none !important;
    }
}


/* #########################################################
   22. SISTEMA DE DISEÑO — CAPA FINAL
   Va al final a propósito: unifica lo anterior.
   - Tokens: radios, colores, degradado de marca
   - Escala tipográfica única (H1, H2, subtítulo, H3, texto)
   - Un solo sistema de botones (5 variantes, mismo hover)
   - Un solo lenguaje de líneas: degradado azul → lima
   - Ritmo de secciones y ajustes de tablet
   ######################################################### */

:root {
    --cv-ink: #08090c;
    --cv-blue: #315cff;
    --cv-blue-strong: #2448f5;
    --cv-lime: #c8ff36;
    --cv-lime-strong: #d6ff63;
    --cv-cream: #f5f2ea;
    --cv-muted: #5a5f69;
    --cv-grad: linear-gradient(90deg, #315cff 0%, #c8ff36 100%);
    --cv-grad-soft: linear-gradient(90deg, rgba(49, 92, 255, 0.5) 0%, rgba(200, 255, 54, 0.5) 100%);
    --cv-grad-v: linear-gradient(180deg, #315cff 0%, #c8ff36 100%);
    --cv-r-btn: 12px;
    --cv-r-card: 22px;
    --cv-r-pill: 999px;
    --cv-ease: cubic-bezier(0.22, 1, 0.36, 1);
}


/* ---------- Escala tipográfica ---------- */

/* H1 del hero */
.cv-hero-title .elementor-heading-title {
    font-size: clamp(40px, 5.4vw, 76px) !important;
    line-height: 1.02 !important;
    letter-spacing: -0.04em !important;
}

/* H2 de todas las secciones */
.cv-h2 .elementor-heading-title,
.cv-trust-title .elementor-heading-title {
    font-size: clamp(32px, 3.5vw, 50px) !important;
    line-height: 1.06 !important;
    letter-spacing: -0.035em !important;
    font-weight: 800 !important;
}

/* Las líneas animadas ya no suman interlineado extra */
.cv-trust-title .cv-title-line,
.cv-title-anim .cv-title-line,
.cv-hero-title .cv-line {
    padding-bottom: 0.12em !important;
    margin-bottom: -0.12em !important;
}

/* Subtítulo de sección (ej.: "Depende de identificar…") */
.cv-h-sub .elementor-heading-title {
    margin-top: 14px !important;
    font-size: clamp(19px, 1.7vw, 23px) !important;
    font-weight: 700 !important;
    line-height: 1.3 !important;
    letter-spacing: -0.02em !important;
}

/* Texto de apoyo: un solo tamaño */
.cv-sec-lead,
.cv-sec-lead p,
.cv-final-text,
.cv-final-text p,
.cv-sol-text,
.cv-sol-text p,
.cool-split .elementor-widget-text-editor p,
.cool-split-white .elementor-widget-text-editor p {
    font-size: 17px !important;
    line-height: 1.6 !important;
}

@media (max-width: 767px) {
    .cv-sec-lead,
    .cv-sec-lead p,
    .cv-final-text,
    .cv-final-text p,
    .cv-sol-text,
    .cv-sol-text p,
    .cool-split .elementor-widget-text-editor p,
    .cool-split-white .elementor-widget-text-editor p {
        font-size: 16px !important;
    }
}


/* ---------- Botones: un solo sistema ----------
   Base igual para todos: radio 12 px, mismo alto, mismo peso.
   Hover igual para todos: el color se intensifica, aparece una
   sombra del mismo color y la flecha avanza. Sin brillos ni
   barridos distintos por botón. El efecto magnético lo pone el JS.
*/

.cv-btn .elementor-button,
.cv-hero-actions .elementor-button,
.cv-cta-buttons .elementor-button,
.cv-header .cv-header-cta .elementor-button,
.cv-form .elementor-field-type-submit .elementor-button {
    min-height: 52px;
    padding: 15px 24px !important;
    border-radius: var(--cv-r-btn) !important;
    border-width: 1.5px !important;
    border-style: solid !important;
    font-family: "Plus Jakarta Sans", sans-serif !important;
    font-size: 15px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: -0.01em !important;
    text-transform: none !important;
    transition: background-color 0.3s ease, border-color 0.3s ease, color 0.3s ease, box-shadow 0.35s ease !important;
}

.cv-header .cv-header-cta .elementor-button {
    min-height: 44px;
    padding: 11px 20px !important;
    font-size: 14px !important;
}

/* Fuera los brillos y barridos anteriores */
.cv-hero-actions .elementor-button::before,
.cv-hero-actions .elementor-button::after,
.cv-cta-buttons .elementor-button::before,
.cv-cta-buttons .elementor-button::after,
.cv-form .elementor-field-type-submit .elementor-button::before {
    display: none !important;
}

/* Flecha: avanza igual en todos */
.cv-btn .elementor-button-icon,
.cv-hero-actions .elementor-button-icon,
.cv-cta-buttons .elementor-button-icon,
.cv-form .elementor-field-type-submit .elementor-button-icon {
    transition: transform 0.35s var(--cv-ease) !important;
    animation: none !important;
}

.cv-btn .elementor-button:hover .elementor-button-icon,
.cv-hero-actions .elementor-button:hover .elementor-button-icon,
.cv-cta-buttons .elementor-button:hover .elementor-button-icon,
.cv-form .elementor-field-type-submit .elementor-button:hover .elementor-button-icon {
    transform: translateX(4px) !important;
}

/* Primario azul: fondos claros (header, popup) */
.cv-btn-primary .elementor-button,
.cv-header .cv-header-cta .elementor-button,
.cv-form .elementor-field-type-submit .elementor-button {
    background: var(--cv-blue) !important;
    border-color: var(--cv-blue) !important;
    color: #ffffff !important;
    box-shadow: 0 8px 22px rgba(49, 92, 255, 0.22) !important;
}

.cv-btn-primary .elementor-button:hover,
.cv-header .cv-header-cta .elementor-button:hover,
.cv-form .elementor-field-type-submit .elementor-button:hover {
    background: var(--cv-blue-strong) !important;
    border-color: var(--cv-blue-strong) !important;
    color: #ffffff !important;
    box-shadow: 0 14px 34px rgba(49, 92, 255, 0.38) !important;
}

/* Primario lima: fondos oscuros o de color */
.cv-btn-lime .elementor-button,
.elementor-location-footer .cv-btn:not(.cv-btn-ghost-dark) .elementor-button {
    background: var(--cv-lime) !important;
    border-color: var(--cv-lime) !important;
    color: var(--cv-ink) !important;
    box-shadow: 0 8px 22px rgba(200, 255, 54, 0.18) !important;
}

.cv-btn-lime .elementor-button:hover,
.elementor-location-footer .cv-btn:not(.cv-btn-ghost-dark) .elementor-button:hover {
    background: var(--cv-lime-strong) !important;
    border-color: var(--cv-lime-strong) !important;
    color: var(--cv-ink) !important;
    box-shadow: 0 14px 34px rgba(200, 255, 54, 0.34) !important;
}

/* Negro: fondos claros, acción secundaria fuerte */
.cv-btn-dark .elementor-button {
    background: var(--cv-ink) !important;
    border-color: var(--cv-ink) !important;
    color: #ffffff !important;
    box-shadow: 0 8px 22px rgba(8, 9, 12, 0.14) !important;
}

.cv-btn-dark .elementor-button:hover {
    background: #1d2028 !important;
    border-color: #1d2028 !important;
    color: #ffffff !important;
    box-shadow: 0 14px 34px rgba(8, 9, 12, 0.26) !important;
}

/* Borde sobre oscuro */
.cv-btn-ghost-dark .elementor-button {
    background: transparent !important;
    border-color: rgba(255, 255, 255, 0.24) !important;
    color: #ffffff !important;
    box-shadow: none !important;
}

.cv-btn-ghost-dark .elementor-button:hover {
    background: rgba(255, 255, 255, 0.08) !important;
    border-color: rgba(255, 255, 255, 0.55) !important;
    color: #ffffff !important;
    box-shadow: 0 14px 34px rgba(8, 9, 12, 0.3) !important;
}

/* Borde sobre claro */
.cv-btn-ghost-light .elementor-button {
    background: transparent !important;
    border-color: rgba(8, 9, 12, 0.16) !important;
    color: var(--cv-ink) !important;
    box-shadow: none !important;
}

.cv-btn-ghost-light .elementor-button:hover {
    background: rgba(8, 9, 12, 0.04) !important;
    border-color: rgba(8, 9, 12, 0.45) !important;
    color: var(--cv-ink) !important;
}

/* Enlace */
.cv-btn-link .elementor-button {
    min-height: 0;
    padding: 15px 2px !important;
    border-color: transparent !important;
    background: transparent !important;
    color: var(--cv-ink) !important;
    box-shadow: none !important;
    text-decoration: none !important;
    background-image: var(--cv-grad) !important;
    background-size: 100% 2px !important;
    background-position: 0 calc(100% - 10px) !important;
    background-repeat: no-repeat !important;
}

.cv-btn-link .elementor-button:hover {
    color: var(--cv-blue) !important;
}

.cv-btn .elementor-button:focus-visible,
.cv-hero-actions .elementor-button:focus-visible,
.cv-cta-buttons .elementor-button:focus-visible {
    outline: 2px solid var(--cv-lime) !important;
    outline-offset: 3px;
}


/* ---------- Un solo lenguaje de líneas: degradado azul → lima ---------- */

/* Divisiones horizontales */
.cv-sol-nav,
.cv-stages {
    border-top: 0 !important;
    position: relative;
}

.cv-sol-nav::before,
.cv-stages::before {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    height: 1px;
    background: var(--cv-grad-soft);
}

.cv-case-card .cv-case-title .elementor-heading-title {
    border-top: 0 !important;
    background: linear-gradient(90deg, rgba(49, 92, 255, 0.6), rgba(200, 255, 54, 0.6)) top / 100% 1px no-repeat;
}

/* Barras verticales (cita, tab activo) */
.cv-founder-quote blockquote {
    border-left: 0 !important;
    background: var(--cv-grad-v) left top / 3px 100% no-repeat;
}

.cv-sol-tab::after {
    background: var(--cv-grad-v) !important;
}

/* Borde de las tarjetas de dolores: mismo degradado */
.cv-pain-card::before {
    background: var(--cv-grad) !important;
}

/* Marco HUD igual en todos lados: esquina azul arriba, lima abajo */
.cv-case-card::after {
    background:
        linear-gradient(#315cff, #315cff) top left / 22px 2px no-repeat,
        linear-gradient(#315cff, #315cff) top left / 2px 22px no-repeat,
        linear-gradient(#c8ff36, #c8ff36) bottom right / 22px 2px no-repeat,
        linear-gradient(#c8ff36, #c8ff36) bottom right / 2px 22px no-repeat !important;
}

/* Eyebrows: el punto lleva el degradado */
.cv-eyebrow .elementor-heading-title::before {
    background: var(--cv-grad) !important;
}


/* ---------- Radios: tarjetas iguales ---------- */

.cv-sol-panel,
.cv-cycle,
.cv-pain-card,
.cv-diag-card {
    border-radius: var(--cv-r-card) !important;
}

.cv-founder-photo,
.cv-founder-photo img {
    border-radius: var(--cv-r-card) !important;
}


/* ---------- Cómo trabajamos: foto del alto de la sección ---------- */

@media (min-width: 1025px) {
    .cv-how {
        align-items: stretch !important;
    }

    .cv-how-media {
        display: flex !important;
        min-height: 560px;
    }

    .cv-how-media .cv-founder-photo {
        flex: 1 1 auto;
        height: 100%;
    }

    .cv-founder-photo .elementor-widget-container,
    .cv-founder-photo a {
        height: 100%;
    }

    .cv-founder-photo img {
        height: 100% !important;
        aspect-ratio: auto !important;
    }
}

.cv-founder-photo {
    overflow: hidden;
}

.cv-founder-photo img {
    will-change: transform;
}


/* ---------- Ritmo de secciones y tablet ---------- */

@media (min-width: 768px) and (max-width: 1024px) {
    .cv-section {
        padding-left: 32px !important;
        padding-right: 32px !important;
    }

    .cv-stats-row,
    .cv-results-row {
        gap: 16px !important;
    }

    .cv-results-row > .e-con {
        padding: 28px 20px !important;
    }

    .cv-problems-left {
        padding-top: 0 !important;
    }

    .cv-problems-left-inner {
        position: relative !important;
        top: auto !important;
    }

    .cv-hero-title .elementor-heading-title {
        max-width: 18ch;
        margin-left: auto;
        margin-right: auto;
    }
}

@media (max-width: 767px) {
    .cv-section {
        padding-left: 20px !important;
        padding-right: 20px !important;
    }
}

/* Tablet: foto de Esteban a todo el ancho y más baja, para no ocupar dos pantallas */
@media (min-width: 768px) and (max-width: 1024px) {
    .cv-how-media {
        max-width: none !important;
    }

    .cv-founder-photo img {
        aspect-ratio: 16 / 10 !important;
        object-position: center 30%;
    }
}


/* #########################################################
   23. HERO CON VIDA, CIFRAS, RESULTADOS Y ENLACES (v1.7)
   ######################################################### */

/* ---------- H1 más contenido ---------- */
.cv-hero-title .elementor-heading-title {
    font-size: clamp(36px, 4.6vw, 66px) !important;
    line-height: 1.03 !important;
}

/* ---------- Capa de efectos del hero (la inyecta cv-core.js) ---------- */
.cv-hero {
    position: relative;
    overflow: hidden;
}

.cv-hero-fx {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    overflow: hidden;
}

/* El contenido va sobre los efectos. OJO: .e-con-inner NO lleva position,
   porque el video de fondo vive dentro de él y debe medirse contra todo el hero. */
.cv-hero > .e-con,
.cv-hero > .e-con-inner > .e-con,
.cv-hero > .e-con-inner > .elementor-element {
    position: relative;
    z-index: 2;
}

/* Retícula que se desplaza */
.cv-hero-fx .cv-hero-grid {
    position: absolute;
    inset: -60px;
    background-image:
        linear-gradient(rgba(255, 255, 255, 0.05) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, 0.05) 1px, transparent 1px);
    background-size: 64px 64px;
    -webkit-mask-image: radial-gradient(70% 60% at 50% 40%, #000 0%, transparent 78%);
    mask-image: radial-gradient(70% 60% at 50% 40%, #000 0%, transparent 78%);
    animation: cv-hero-grid 22s linear infinite;
}

@keyframes cv-hero-grid {
    from { transform: translate3d(0, 0, 0); }
    to { transform: translate3d(64px, 64px, 0); }
}

/* Luz que sigue el cursor */
.cv-hero-fx .cv-hero-spot {
    position: absolute;
    left: var(--spot-x, 50%);
    top: var(--spot-y, 40%);
    width: 620px;
    height: 620px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(49, 92, 255, 0.28) 0%, rgba(49, 92, 255, 0.08) 38%, transparent 68%);
    transform: translate(-50%, -50%);
    transition: left 0.6s var(--cv-ease), top 0.6s var(--cv-ease);
}

/* Partículas de datos que suben */
.cv-hero-fx .cv-hero-bit {
    position: absolute;
    bottom: -10px;
    width: 2px;
    height: 46px;
    border-radius: 2px;
    background: linear-gradient(180deg, transparent, rgba(200, 255, 54, 0.75));
    opacity: 0;
    animation: cv-hero-bit 7s linear infinite;
}

@keyframes cv-hero-bit {
    0% { transform: translateY(0); opacity: 0; }
    12% { opacity: 0.9; }
    80% { opacity: 0.6; }
    100% { transform: translateY(-110vh); opacity: 0; }
}

/* Etiquetas del hero: flotan suave */
.cv-hero .cv-hero-badge .elementor-heading-title {
    animation: cv-badge-float 6s ease-in-out infinite;
}

.cv-hero .cv-hero-badge:nth-child(2) .elementor-heading-title {
    animation-delay: -3s;
}

@keyframes cv-badge-float {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-4px); }
}

/* ---------- Recorrido: campañas → … → venta ---------- */
.cv-flow {
    width: 100% !important;
    max-width: 980px;
    margin: 56px auto 0 !important;
    align-items: center !important;
}

.cv-flow-caption .elementor-heading-title {
    color: rgba(248, 247, 244, 0.5) !important;
    font-size: 11px !important;
    font-weight: 700 !important;
    letter-spacing: 0.16em !important;
    text-transform: uppercase;
    text-align: center;
}

.cv-flow-track {
    position: relative;
    display: grid !important;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 10px !important;
    width: 100% !important;
    margin-top: 16px !important;
}

/* Línea que une las etapas, con un pulso que la recorre */
.cv-flow-track::before {
    content: "";
    position: absolute;
    left: 8%;
    right: 8%;
    top: 50%;
    height: 1px;
    background: var(--cv-grad-soft);
}

.cv-flow-track::after {
    content: "";
    position: absolute;
    top: calc(50% - 3px);
    left: 8%;
    width: 60px;
    height: 6px;
    border-radius: 6px;
    background: linear-gradient(90deg, transparent, #c8ff36);
    filter: drop-shadow(0 0 8px rgba(200, 255, 54, 0.8));
    animation: cv-flow-run 6s cubic-bezier(0.65, 0, 0.35, 1) infinite;
}

@keyframes cv-flow-run {
    0% { left: 8%; opacity: 0; }
    6% { opacity: 1; }
    94% { opacity: 1; }
    100% { left: calc(92% - 60px); opacity: 0; }
}

.cv-flow-step {
    position: relative;
    z-index: 1;
    width: auto !important;
}

.cv-flow-label .elementor-heading-title {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    padding: 10px 10px;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: var(--cv-r-pill);
    background: rgba(8, 9, 12, 0.72);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    color: rgba(248, 247, 244, 0.72) !important;
    font-size: 12.5px !important;
    font-weight: 600 !important;
    line-height: 1.2 !important;
    text-align: center;
    white-space: nowrap;
    animation: cv-flow-step 6s ease-in-out infinite;
}

.cv-flow-dot {
    flex: 0 0 6px;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: rgba(248, 247, 244, 0.35);
    animation: cv-flow-dot 6s ease-in-out infinite;
}

.cv-flow-step:nth-child(2) .elementor-heading-title,
.cv-flow-step:nth-child(2) .cv-flow-dot { animation-delay: 1s; }
.cv-flow-step:nth-child(3) .elementor-heading-title,
.cv-flow-step:nth-child(3) .cv-flow-dot { animation-delay: 2s; }
.cv-flow-step:nth-child(4) .elementor-heading-title,
.cv-flow-step:nth-child(4) .cv-flow-dot { animation-delay: 3s; }
.cv-flow-step:nth-child(5) .elementor-heading-title,
.cv-flow-step:nth-child(5) .cv-flow-dot { animation-delay: 4s; }
.cv-flow-step:nth-child(6) .elementor-heading-title,
.cv-flow-step:nth-child(6) .cv-flow-dot { animation-delay: 5s; }

@keyframes cv-flow-step {
    0%, 22%, 100% { border-color: rgba(255, 255, 255, 0.12); color: rgba(248, 247, 244, 0.72); box-shadow: none; }
    6%, 14% { border-color: rgba(200, 255, 54, 0.7); color: #ffffff; box-shadow: 0 0 22px rgba(200, 255, 54, 0.22); }
}

@keyframes cv-flow-dot {
    0%, 22%, 100% { background: rgba(248, 247, 244, 0.35); box-shadow: none; }
    6%, 14% { background: #c8ff36; box-shadow: 0 0 10px #c8ff36; }
}

@media (max-width: 1024px) {
    .cv-flow-track {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .cv-flow-track::before,
    .cv-flow-track::after {
        display: none;
    }
}

@media (max-width: 767px) {
    .cv-flow {
        margin-top: 40px !important;
    }

    .cv-flow-track {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px !important;
    }

    .cv-flow-label .elementor-heading-title {
        font-size: 12px !important;
        white-space: normal;
    }
}


/* ---------- Tarjetas de Resultados: borde en degradado ---------- */
.cv-result-card {
    position: relative;
    border-radius: var(--cv-r-card) !important;
    transition: transform 0.5s var(--cv-ease), box-shadow 0.5s ease;
}

.cv-result-card::before {
    opacity: 0.45;
    transition: opacity 0.4s ease;
}

.cv-result-card:hover::before {
    opacity: 1;
}

.cv-result-card:hover {
    box-shadow: 0 24px 50px rgba(49, 92, 255, 0.18);
}


/* ---------- Enlaces sobre oscuro (paneles de Soluciones) ---------- */
.cv-btn-link-dark .elementor-button {
    min-height: 0 !important;
    padding: 10px 2px !important;
    border-color: transparent !important;
    background: transparent !important;
    background-image: var(--cv-grad) !important;
    background-size: 100% 2px !important;
    background-position: 0 100% !important;
    background-repeat: no-repeat !important;
    border-radius: 0 !important;
    color: #ffffff !important;
    box-shadow: none !important;
}

.cv-btn-link-dark .elementor-button:hover {
    color: #c8ff36 !important;
    background-size: 100% 2px !important;
}

.cv-sol-ctas {
    gap: 14px 28px !important;
}

@media (max-width: 767px) {
    .cv-sol-ctas > .elementor-element,
    .cv-btn-link-dark,
    .cv-btn-link-dark .elementor-button {
        width: auto !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-hero-fx .cv-hero-grid,
    .cv-hero-fx .cv-hero-bit,
    .cv-hero .cv-hero-badge .elementor-heading-title,
    .cv-flow-track::after,
    .cv-flow-label .elementor-heading-title,
    .cv-flow-dot {
        animation: none !important;
    }
}


/* #########################################################
   24. TARJETA DE CASO CON MOCKUP (reemplaza el diseño 17)
   El mockup arriba, limpio y completo; debajo el panel oscuro
   con cliente, métrica, titular y "Ver caso completo".
   ######################################################### */

.cv-case-card {
    aspect-ratio: auto !important;
    min-height: 0 !important;
    height: 100%;
    padding: 0 !important;
    justify-content: flex-start !important;
    background: #0d0f14 !important;
}

/* Sin capa oscura encima del mockup */
.cv-case-card::before {
    display: none !important;
}

/* Mockup: bloque arriba, 16:10 */
.cv-case-card .cv-case-media {
    position: relative !important;
    inset: auto !important;
    z-index: 0 !important;
    width: 100% !important;
    height: auto !important;
    aspect-ratio: 16 / 10;
    overflow: hidden;
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    background: #08090c;
}

.cv-case-card .cv-case-media img {
    filter: none !important;
    transform: scale(1.001);
    object-fit: cover;
    object-position: center top;
}

.cv-case-card:hover .cv-case-media img {
    transform: scale(1.05) !important;
    filter: none !important;
}

/* Sector y logo flotando sobre el mockup */
.cv-case-card .cv-case-top {
    position: absolute !important;
    top: 16px;
    left: 16px;
    right: 16px;
    z-index: 2;
}

.cv-case-card .cv-case-logo {
    padding: 8px 12px;
    border-radius: 12px;
    background: rgba(8, 9, 12, 0.55);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
}

.cv-case-card .cv-case-logo img {
    max-height: 22px !important;
}

/* Panel de texto */
.cv-case-card .cv-case-body {
    flex: 1 1 auto;
    padding: 24px 24px 22px !important;
    position: relative;
    z-index: 1;
}

.cv-case-card .cv-case-cta {
    margin-top: auto !important;
    padding-top: 18px;
}

.cv-case-card .cv-case-metric .elementor-heading-title {
    font-size: clamp(34px, 3.2vw, 46px) !important;
}

.cv-case-card .cv-case-title .elementor-heading-title {
    font-size: 17px !important;
}

/* El marco HUD encierra el mockup */
.cv-case-card::after {
    inset: 10px 10px auto 10px !important;
    aspect-ratio: 16 / 10;
    height: auto;
    width: auto;
}

/* Línea de escaneo dentro del mockup */
.cv-case-card .cv-case-media::after {
    z-index: 1;
}

@media (max-width: 767px) {
    .cv-case-card .cv-case-body {
        padding: 20px 18px 18px !important;
    }

    .cv-case-card .cv-case-metric .elementor-heading-title {
        font-size: 36px !important;
    }
}

.cv-case-card,
.cv-case-card * {
    box-sizing: border-box;
}

.cv-case-card .cv-case-top {
    width: auto !important;
}


/* #########################################################
   25. AJUSTE FINAL DE ESTILO (v2.0)
   - Líneas planas: azul en fondos claros, lima en fondos oscuros.
     Sin degradados en líneas, bordes ni botones.
   - Fotos sin marcos.
   - Hero: video a todo el ancho y título más contenido.
   ######################################################### */

/* ---------- Líneas planas ---------- */
:root {
    --cv-grad: linear-gradient(90deg, #315cff, #315cff);
    --cv-grad-soft: linear-gradient(90deg, rgba(49, 92, 255, 0.35), rgba(49, 92, 255, 0.35));
    --cv-grad-v: linear-gradient(180deg, #315cff, #315cff);
    --cv-line: #315cff;
}

/* En secciones oscuras la línea es lima */
.cv-sol-section,
.cv-final-section,
.cv-cycle,
.cv-flow,
.cv-case-card,
.cv-hero,
.cv-diag-card,
[class*="cool-split-white"] {
    --cv-grad: linear-gradient(90deg, #c8ff36, #c8ff36);
    --cv-grad-soft: linear-gradient(90deg, rgba(200, 255, 54, 0.3), rgba(200, 255, 54, 0.3));
    --cv-grad-v: linear-gradient(180deg, #c8ff36, #c8ff36);
    --cv-line: #c8ff36;
}

.cv-sol-section .cv-sol-nav::before {
    background: rgba(255, 255, 255, 0.12) !important;
}

.cv-sol-tab::before {
    background: var(--cv-line) !important;
}

.cv-cycle .cv-cycle-steps::before {
    background: rgba(200, 255, 54, 0.35) !important;
}

.cv-stages::before {
    background: rgba(8, 9, 12, 0.1) !important;
}

.cv-founder-quote blockquote {
    background: linear-gradient(#315cff, #315cff) left top / 3px 100% no-repeat !important;
}

.cv-case-card .cv-case-title .elementor-heading-title {
    background: linear-gradient(rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.12)) top / 100% 1px no-repeat !important;
}

/* Bordes de tarjetas: línea plana fina, se intensifica al pasar el mouse */
.cv-pain-card::before {
    background: #315cff !important;
}

.cv-result-card {
    border: 1px solid rgba(49, 92, 255, 0.35) !important;
}

.cv-result-card::before {
    display: none !important;
}

.cv-result-card:hover {
    border-color: #c8ff36 !important;
}

/* Enlaces: subrayado plano */
.cv-btn-link .elementor-button {
    background-image: linear-gradient(#315cff, #315cff) !important;
}

.cv-btn-link-dark .elementor-button {
    background-image: linear-gradient(rgba(200, 255, 54, 0.6), rgba(200, 255, 54, 0.6)) !important;
    background-size: 100% 1px !important;
}

.cv-btn-link-dark .elementor-button:hover {
    background-image: linear-gradient(#c8ff36, #c8ff36) !important;
}

.cv-eyebrow .elementor-heading-title::before {
    background: currentColor !important;
}

/* ---------- Fotos sin marcos ---------- */
.cv-how-media::after,
.cv-case-card::after {
    display: none !important;
}

/* ---------- Hero ---------- */
.cv-hero-title .elementor-heading-title {
    font-size: clamp(32px, 3.6vw, 56px) !important;
    line-height: 1.04 !important;
}

/* El video siempre cubre todo el hero */
.cv-hero .elementor-background-video-container {
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    overflow: hidden;
    z-index: 0;
}

.cv-hero .elementor-background-video-container video,
.cv-hero .elementor-background-video-hosted {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100% !important;
    max-width: none !important;
    object-fit: cover !important;
    transform: none !important;
}

/* ---------- Logo blanco en las tarjetas de casos ---------- */
.cv-case-card .cv-case-logo img {
    filter: none !important;
    opacity: 1 !important;
}

/* ---------- Entradas: estado inicial lo pone cv-core.js ---------- */
.cv-in {
    will-change: transform, opacity;
}


/* #########################################################
   26. UNIDAD v2.1
   - Efecto del hero en otras secciones oscuras (cv-fx)
   - Soluciones con menos verde
   - Cifras con el estilo de las tarjetas del sitio
   - Tarjeta de caso con el estilo de "Resultados que buscamos"
   ######################################################### */

/* ---------- cv-fx: retícula, luz y partículas en secciones oscuras ---------- */
.cv-fx {
    position: relative;
    overflow: hidden;
}

.cv-fx > .e-con-inner,
.cv-fx > .e-con {
    position: relative;
    z-index: 2;
}

.cv-final-section.cv-fx::before {
    display: none !important;
}

.cv-fx .cv-hero-fx .cv-hero-spot {
    width: 720px;
    height: 720px;
    background: radial-gradient(circle, rgba(49, 92, 255, 0.24) 0%, rgba(49, 92, 255, 0.06) 40%, transparent 68%);
}

/* ---------- Soluciones: azul como acento, lima solo en el botón ---------- */
.cv-title-sky {
    --cv-title-accent: #8aa6ff;
}

.cv-sol-section {
    --cv-line: #8aa6ff;
    --cv-grad: linear-gradient(90deg, #8aa6ff, #8aa6ff);
    --cv-grad-v: linear-gradient(180deg, #8aa6ff, #8aa6ff);
}

.cv-sol-section .cv-eyebrow-dark .elementor-heading-title {
    border-color: rgba(138, 166, 255, 0.35);
    background: rgba(49, 92, 255, 0.12);
    color: #a9bdff !important;
}

.cv-sol-tab.is-active .cv-sol-num {
    color: #8aa6ff !important;
}

.cv-sol-tab::after {
    background: #8aa6ff !important;
}

.cv-sol-tab::before {
    background: #8aa6ff !important;
}

.cv-sol-list li::before {
    background: #8aa6ff !important;
    box-shadow: 0 0 10px rgba(138, 166, 255, 0.6) !important;
}

.cv-btn-link-dark .elementor-button {
    background-image: linear-gradient(rgba(138, 166, 255, 0.55), rgba(138, 166, 255, 0.55)) !important;
}

.cv-btn-link-dark .elementor-button:hover {
    color: #ffffff !important;
    background-image: linear-gradient(#8aa6ff, #8aa6ff) !important;
}

.cv-sol-panel {
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(49, 92, 255, 0.07)) !important;
    border-color: rgba(138, 166, 255, 0.18) !important;
}

/* ---------- Cifras: tarjetas blancas como las del sitio ---------- */
.cv-stat-card {
    padding: 30px 30px 28px !important;
    border: 1px solid rgba(49, 92, 255, 0.16) !important;
    border-radius: var(--cv-r-card) !important;
    background: #ffffff !important;
    box-shadow: 0 1px 0 rgba(8, 9, 12, 0.02) !important;
    transition: border-color 0.4s ease, box-shadow 0.45s ease !important;
}

.cv-stat-card:hover {
    border-color: #315cff !important;
    box-shadow: 0 22px 50px rgba(49, 92, 255, 0.14) !important;
}

.cv-stat-card .elementor-icon-box-wrapper {
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 18px;
    text-align: left !important;
}

.cv-stat-card .elementor-icon-box-icon {
    margin: 0 !important;
}

.cv-stat-card .elementor-icon {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    width: 54px !important;
    height: 54px !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 14px !important;
    background: rgba(49, 92, 255, 0.08) !important;
    color: #315cff !important;
    fill: #315cff !important;
    transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1), background-color 0.35s ease;
}

.cv-stat-card .elementor-icon svg,
.cv-stat-card .elementor-icon img {
    width: 26px !important;
    height: 26px !important;
}

/* Los íconos SVG subidos se tiñen de azul */
.cv-stat-card .elementor-icon svg {
    fill: #315cff !important;
}

.cv-stat-card:hover .elementor-icon {
    transform: rotate(-8deg) scale(1.08);
    background: rgba(49, 92, 255, 0.14) !important;
}

.cv-stat-card .elementor-icon-box-title {
    margin: 0 !important;
    color: #08090c !important;
    font-size: clamp(30px, 2.6vw, 40px) !important;
    font-weight: 800 !important;
    line-height: 1.05 !important;
    letter-spacing: -0.04em !important;
}

.cv-stat-card .cv-count-prefix {
    color: #315cff;
}

.cv-stat-card .elementor-icon-box-description {
    margin-top: 8px !important;
    color: #5a5f69 !important;
    font-size: 15px !important;
    line-height: 1.45 !important;
    letter-spacing: 0 !important;
}

@media (max-width: 767px) {
    .cv-stat-card {
        padding: 22px !important;
    }

    .cv-stat-card .elementor-icon-box-wrapper {
        flex-direction: row !important;
        align-items: center !important;
    }
}

/* ---------- Tarjeta de caso con el estilo de Resultados ---------- */
.cv-case-card {
    border: 1px solid rgba(49, 92, 255, 0.28) !important;
    background: linear-gradient(180deg, #0b0d14 0%, #101935 100%) !important;
    box-shadow: none !important;
}

.cv-case-card:hover {
    border-color: #315cff !important;
    box-shadow: 0 26px 56px rgba(49, 92, 255, 0.22) !important;
}

/* El mockup va adentro, con margen y esquinas propias */
.cv-case-card .cv-case-media {
    width: auto !important;
    margin: 12px 12px 0 !important;
    border-radius: 14px;
    border-bottom: 0 !important;
}

.cv-case-card .cv-case-media img {
    border-radius: 14px;
}

.cv-case-card .cv-case-top {
    top: 26px;
    left: 26px;
    right: 26px;
}

.cv-case-card .cv-case-body {
    padding: 22px 26px 24px !important;
}

/* Métrica en blanco, como los títulos de Resultados */
.cv-case-card .cv-case-metric .elementor-heading-title {
    color: #ffffff !important;
}

.cv-case-card .cv-case-client .elementor-heading-title {
    color: #8aa6ff !important;
}

.cv-case-card .cv-case-sector .elementor-heading-title::before {
    background: #8aa6ff !important;
    box-shadow: 0 0 10px rgba(138, 166, 255, 0.8) !important;
}

/* Flecha igual a la de las tarjetas de dolores */
.cv-case-card .cv-case-cta-icon .elementor-icon {
    background: rgba(49, 92, 255, 0.16) !important;
    border-color: rgba(49, 92, 255, 0.3) !important;
    color: #ffffff !important;
    fill: #ffffff !important;
}

.cv-case-card:hover .cv-case-cta-icon .elementor-icon {
    background: #315cff !important;
    border-color: #315cff !important;
    color: #ffffff !important;
    fill: #ffffff !important;
}

@media (hover: none) {
    .cv-case-card .cv-case-cta-icon .elementor-icon {
        background: #315cff !important;
        border-color: #315cff !important;
    }
}

/* Tarjetas de Resultados: mismo hover que los casos */
.cv-result-card:hover {
    border-color: #315cff !important;
    box-shadow: 0 26px 56px rgba(49, 92, 255, 0.22) !important;
}

@media (max-width: 767px) {
    .cv-case-card .cv-case-media {
        margin: 10px 10px 0 !important;
    }

    .cv-case-card .cv-case-top {
        top: 22px;
        left: 22px;
        right: 22px;
    }

    .cv-case-card .cv-case-body {
        padding: 20px 20px 20px !important;
    }
}

/* Las cifras tenían relleno y fondo en el contenedor interno: se pasa todo a la tarjeta */
.cv-stat-card > .elementor-widget-container {
    padding: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    overflow: visible !important;
}

.cv-stat-card {
    overflow: hidden;
}


/* #########################################################
   27. PALETA FINAL (v2.2)
   Solo dos acentos: azul #315CFF y lima #C8FF36.
   - Sin partículas verdes (se ven antiguas); queda la retícula
     y la luz que sigue el cursor.
   - Soluciones: título y líneas en azul, viñetas en lima.
   - Cifras: ícono al lado, en cuadro azul sólido.
   - Tarjetas de casos: etiquetas en lima.
   - El brillo azul en degradado (el de "Conectemos las áreas…")
     también en el Cierre.
   ######################################################### */

.cv-hero-bit {
    display: none !important;
}

/* ---------- Soluciones ---------- */
.cv-title-sky {
    --cv-title-accent: #315cff;
}

.cv-sol-section {
    --cv-line: #315cff;
    --cv-grad: linear-gradient(90deg, #315cff, #315cff);
    --cv-grad-v: linear-gradient(180deg, #315cff, #315cff);
}

.cv-sol-section .cv-eyebrow-dark .elementor-heading-title {
    border-color: rgba(49, 92, 255, 0.45) !important;
    background: rgba(49, 92, 255, 0.14) !important;
    color: #ffffff !important;
}

.cv-sol-section .cv-eyebrow-dark .elementor-heading-title::before {
    background: #315cff !important;
}

.cv-sol-tab.is-active .cv-sol-num,
.cv-sol-tab .cv-sol-num {
    color: inherit;
}

.cv-sol-tab.is-active .cv-sol-num {
    color: #315cff !important;
}

.cv-sol-tab::after,
.cv-sol-tab::before {
    background: #315cff !important;
}

.cv-sol-list li::before {
    background: #c8ff36 !important;
    box-shadow: 0 0 10px rgba(200, 255, 54, 0.55) !important;
}

.cv-btn-link-dark .elementor-button {
    background-image: linear-gradient(#315cff, #315cff) !important;
}

.cv-btn-link-dark .elementor-button:hover {
    color: #ffffff !important;
    background-image: linear-gradient(#c8ff36, #c8ff36) !important;
}

.cv-sol-panel {
    border-color: rgba(49, 92, 255, 0.28) !important;
    background: linear-gradient(135deg, rgba(8, 9, 12, 0.6) 30%, rgba(49, 92, 255, 0.18) 100%) !important;
}

/* ---------- Cifras: ícono al lado, cuadro azul sólido ---------- */
.cv-stat-card .elementor-icon-box-wrapper {
    flex-direction: row !important;
    align-items: center !important;
    gap: 20px !important;
}

.cv-stat-card .elementor-icon {
    width: 58px !important;
    height: 58px !important;
    border-radius: 16px !important;
    background: #315cff !important;
    color: #ffffff !important;
    fill: #ffffff !important;
    box-shadow: 0 10px 24px rgba(49, 92, 255, 0.28);
}

.cv-stat-card .elementor-icon svg {
    fill: #ffffff !important;
}

.cv-stat-card:hover .elementor-icon {
    background: #2448f5 !important;
}

.cv-stat-card .cv-count-prefix {
    color: #315cff;
}

/* ---------- Tarjetas de casos: etiquetas en lima ---------- */
.cv-case-card .cv-case-sector .elementor-heading-title {
    border-color: rgba(200, 255, 54, 0.35) !important;
    color: #c8ff36 !important;
}

.cv-case-card .cv-case-sector .elementor-heading-title::before {
    background: #c8ff36 !important;
    box-shadow: 0 0 10px rgba(200, 255, 54, 0.7) !important;
}

.cv-case-card .cv-case-client .elementor-heading-title {
    color: rgba(248, 247, 244, 0.65) !important;
}

/* ---------- Brillo azul en degradado también en el Cierre ---------- */
.cv-final-section {
    background: linear-gradient(120deg, #08090c 30%, #14215f 72%, #2b4ee0 100%) !important;
}

.cv-final-section::after {
    background: radial-gradient(circle, rgba(49, 92, 255, 0.28) 0%, rgba(49, 92, 255, 0) 60%) !important;
}


/* #########################################################
   27. AJUSTES v2.2
   Paleta cerrada: azul #315CFF, lima #C8FF36, negro y crema.
   Sin el azul claro y sin las líneas verdes que subían.
   ######################################################### */

/* Sin partículas */
.cv-hero-fx .cv-hero-bit {
    display: none !important;
}

/* ---------- Soluciones: azul de marca + bullets lima ---------- */
.cv-title-sky {
    --cv-title-accent: #315cff;
}

.cv-sol-section {
    --cv-line: #315cff;
    --cv-grad: linear-gradient(90deg, #315cff, #315cff);
    --cv-grad-v: linear-gradient(180deg, #315cff, #315cff);
}

.cv-sol-section .cv-eyebrow-dark .elementor-heading-title {
    border-color: rgba(49, 92, 255, 0.45) !important;
    background: rgba(49, 92, 255, 0.14) !important;
    color: #315cff !important;
}

.cv-sol-tab.is-active .cv-sol-num,
.cv-sol-tab::after,
.cv-sol-tab::before {
    color: #315cff !important;
}

.cv-sol-tab::after,
.cv-sol-tab::before {
    background: #315cff !important;
}

.cv-sol-list li::before {
    background: #c8ff36 !important;
    box-shadow: 0 0 10px rgba(200, 255, 54, 0.6) !important;
}

.cv-btn-link-dark .elementor-button {
    background-image: linear-gradient(#315cff, #315cff) !important;
}

.cv-btn-link-dark .elementor-button:hover {
    color: #ffffff !important;
    background-image: linear-gradient(#c8ff36, #c8ff36) !important;
}

.cv-sol-panel {
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.03) 0%, rgba(49, 92, 255, 0.16) 100%) !important;
    border-color: rgba(49, 92, 255, 0.28) !important;
}

/* ---------- Cifras: ícono al lado, cuadro azul de marca ---------- */
.cv-stat-card .elementor-icon-box-wrapper {
    flex-direction: row !important;
    align-items: center !important;
    gap: 18px;
}

.cv-stat-card .elementor-icon {
    width: 58px !important;
    height: 58px !important;
    background: #315cff !important;
    color: #ffffff !important;
    fill: #ffffff !important;
    box-shadow: 0 10px 24px rgba(49, 92, 255, 0.28);
}

.cv-stat-card .elementor-icon svg {
    fill: #ffffff !important;
}

.cv-stat-card:hover .elementor-icon {
    background: #2448f5 !important;
}

.cv-stat-card .elementor-icon-box-description {
    margin-top: 4px !important;
}

/* ---------- Tarjetas de caso: chips y cliente en la paleta ---------- */
.cv-case-card .cv-case-sector .elementor-heading-title {
    border-color: rgba(200, 255, 54, 0.4) !important;
    color: #c8ff36 !important;
}

.cv-case-card .cv-case-sector .elementor-heading-title::before {
    background: #c8ff36 !important;
    box-shadow: 0 0 10px rgba(200, 255, 54, 0.8) !important;
}

.cv-case-card .cv-case-client .elementor-heading-title {
    color: rgba(248, 247, 244, 0.6) !important;
}

/* ---------- El degradado de la tarjeta "Conectemos…" en más lugares ---------- */
.cv-case-card {
    background: linear-gradient(135deg, #08090c 0%, #0f1530 55%, #1c3aa8 140%) !important;
}

.cv-result-card {
    background: linear-gradient(135deg, #08090c 0%, #0f1530 55%, #1c3aa8 140%) !important;
}

.cv-final-section {
    background: linear-gradient(120deg, #08090c 0%, #0b1029 45%, #1b37b8 120%) !important;
}

.cv-final-section::after {
    background: radial-gradient(circle, rgba(49, 92, 255, 0.3) 0%, rgba(49, 92, 255, 0) 60%) !important;
}


/* #########################################################
   28. PÁGINA DE CADA CASO (Single — Caso de éxito)
   cv-cs-hero, cv-cs-facts, cv-cs-results, cv-cs-story,
   cv-cs-reading, cierre y "Más casos"
   ######################################################### */

/* ---------- Hero ---------- */
.cv-cs-hero {
    background: linear-gradient(120deg, #08090c 0%, #0b1029 50%, #1b37b8 135%) !important;
}

.cv-cs-hero-grid {
    display: grid !important;
    grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
    gap: 56px !important;
    align-items: center;
}

.cv-cs-hero-text {
    gap: 0 !important;
}

.cv-btn-back .elementor-button {
    min-height: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    color: rgba(248, 247, 244, 0.6) !important;
    font-size: 13px !important;
    font-weight: 600 !important;
}

.cv-btn-back .elementor-button::before {
    content: "←";
    margin-right: 8px;
    transition: transform 0.3s ease;
}

.cv-btn-back .elementor-button:hover {
    color: #ffffff !important;
}

.cv-btn-back .elementor-button:hover::before {
    transform: translateX(-4px);
}

.cv-cs-chips {
    flex-wrap: wrap !important;
    margin-top: 22px !important;
}

.cv-cs-chips > .elementor-element {
    width: auto !important;
}

.cv-cs-chip .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    padding: 6px 12px;
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.04);
    color: rgba(248, 247, 244, 0.85) !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.04em !important;
    line-height: 1.2 !important;
}

.cv-cs-chip-lime .elementor-heading-title {
    gap: 8px;
    border-color: rgba(200, 255, 54, 0.4);
    color: #c8ff36 !important;
    text-transform: uppercase;
    letter-spacing: 0.1em !important;
}

.cv-cs-chip-lime .elementor-heading-title::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #c8ff36;
    box-shadow: 0 0 10px rgba(200, 255, 54, 0.8);
}

.cv-cs-h1 .elementor-heading-title {
    margin-top: 22px !important;
    color: #ffffff !important;
    font-size: clamp(32px, 3.4vw, 52px) !important;
    font-weight: 800 !important;
    line-height: 1.06 !important;
    letter-spacing: -0.035em !important;
}

.cv-cs-intro,
.cv-cs-intro p {
    margin: 18px 0 0 !important;
    color: rgba(248, 247, 244, 0.75) !important;
    font-size: 17px !important;
    line-height: 1.6 !important;
}

.cv-cs-metric {
    margin-top: 28px !important;
    padding-left: 18px !important;
    border-left: 3px solid #c8ff36;
}

.cv-cs-metric-value .elementor-heading-title {
    color: #ffffff !important;
    font-size: clamp(36px, 3.4vw, 52px) !important;
    font-weight: 800 !important;
    line-height: 1 !important;
    letter-spacing: -0.04em !important;
}

.cv-cs-metric-label .elementor-heading-title {
    margin-top: 6px !important;
    color: rgba(248, 247, 244, 0.7) !important;
    font-size: 15px !important;
    font-weight: 500 !important;
    line-height: 1.4 !important;
}

.cv-cs-ctas {
    flex-wrap: wrap !important;
    margin-top: 32px !important;
}

.cv-cs-ctas > .elementor-element {
    width: auto !important;
}

/* Mockup en una tarjeta con el degradado de marca */
.cv-cs-hero-media {
    position: relative;
    padding: 14px !important;
    border: 1px solid rgba(49, 92, 255, 0.3);
    border-radius: 26px;
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.04) 0%, rgba(49, 92, 255, 0.2) 100%);
    box-shadow: 0 40px 80px rgba(8, 9, 12, 0.45);
}

.cv-cs-mockup img {
    display: block;
    width: 100% !important;
    aspect-ratio: 16 / 11;
    object-fit: cover;
    border-radius: 16px;
}

.cv-cs-logo-chip {
    position: absolute !important;
    left: 30px;
    bottom: 30px;
    width: auto !important;
    padding: 10px 14px !important;
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 14px;
    background: rgba(8, 9, 12, 0.6);
    -webkit-backdrop-filter: blur(12px);
    backdrop-filter: blur(12px);
}

.cv-cs-logo img {
    display: block;
    width: auto !important;
    max-height: 30px !important;
}

/* ---------- Ficha ---------- */
.cv-cs-facts {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    margin-top: -40px !important;
    padding: 6px !important;
    border: 1px solid rgba(49, 92, 255, 0.16);
    border-radius: var(--cv-r-card);
    background: #ffffff;
    box-shadow: 0 24px 50px rgba(8, 9, 12, 0.06);
    position: relative;
    z-index: 3;
}

.cv-cs-fact {
    padding: 20px 22px !important;
}

.cv-cs-fact + .cv-cs-fact {
    border-left: 1px solid rgba(8, 9, 12, 0.07);
}

.cv-cs-fact-label .elementor-heading-title {
    color: #727783 !important;
    font-size: 11px !important;
    font-weight: 700 !important;
    letter-spacing: 0.1em !important;
    text-transform: uppercase;
    line-height: 1.3 !important;
}

.cv-cs-fact-value .elementor-heading-title {
    margin-top: 6px !important;
    color: #08090c !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.35 !important;
}

/* ---------- Resultados ---------- */
.cv-cs-kpis {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 16px !important;
}

.cv-cs-kpi {
    padding: 26px 24px !important;
    border: 1px solid rgba(49, 92, 255, 0.16);
    border-radius: var(--cv-r-card);
    background: #ffffff;
    transition: border-color 0.4s ease, box-shadow 0.45s ease;
}

.cv-cs-kpi:hover {
    border-color: #315cff;
    box-shadow: 0 22px 50px rgba(49, 92, 255, 0.14);
}

.cv-cs-kpi-value .elementor-heading-title {
    color: #315cff !important;
    font-size: clamp(28px, 2.4vw, 38px) !important;
    font-weight: 800 !important;
    line-height: 1.05 !important;
    letter-spacing: -0.035em !important;
}

.cv-cs-kpi-label .elementor-heading-title {
    margin-top: 10px !important;
    color: #4a4f5a !important;
    font-size: 15px !important;
    font-weight: 500 !important;
    line-height: 1.45 !important;
}

.cv-cs-table {
    margin-top: 32px !important;
    padding: 8px 26px 18px !important;
    border: 1px solid rgba(49, 92, 255, 0.16);
    border-radius: var(--cv-r-card);
    background: #ffffff;
    overflow-x: auto;
}

.cv-cs-table table {
    width: 100%;
    min-width: 560px;
    border-collapse: collapse;
    font-size: 15px;
}

.cv-cs-table th {
    padding: 16px 12px;
    border-bottom: 2px solid #315cff;
    color: #08090c;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-align: left;
    text-transform: uppercase;
}

.cv-cs-table td {
    padding: 14px 12px;
    border-bottom: 1px solid rgba(8, 9, 12, 0.07);
    color: #4a4f5a;
}

.cv-cs-table td strong {
    color: #08090c;
}

.cv-cs-table p {
    margin: 18px 0 0;
    color: #4a4f5a;
    font-size: 15px;
    line-height: 1.6;
}

.cv-cs-note .elementor-heading-title {
    margin-top: 18px !important;
    color: #727783 !important;
    font-size: 13px !important;
    font-style: italic;
    font-weight: 400 !important;
}

/* ---------- Historia ---------- */
.cv-cs-story-rows {
    border-top: 1px solid rgba(8, 9, 12, 0.1);
}

.cv-cs-story-row {
    display: grid !important;
    grid-template-columns: minmax(200px, 320px) 1fr;
    gap: 48px !important;
    padding: 40px 0 !important;
    border-bottom: 1px solid rgba(8, 9, 12, 0.1);
}

.cv-cs-story-label {
    position: sticky;
    top: 120px;
    align-self: start;
}

.cv-cs-story-num .elementor-heading-title {
    color: #315cff !important;
    font-size: 13px !important;
    font-weight: 700 !important;
    letter-spacing: 0.08em !important;
}

.cv-cs-story-title .elementor-heading-title {
    margin-top: 8px !important;
    color: #08090c !important;
    font-size: clamp(24px, 2.2vw, 32px) !important;
    font-weight: 800 !important;
    line-height: 1.1 !important;
    letter-spacing: -0.03em !important;
}

.cv-cs-story-content,
.cv-cs-story-content p,
.cv-cs-story-content li {
    color: #3c414b !important;
    font-size: 17px !important;
    line-height: 1.65 !important;
}

.cv-cs-story-content p {
    margin: 0 0 14px !important;
}

.cv-cs-list ul {
    margin: 0 !important;
    padding: 0 !important;
    list-style: none;
}

.cv-cs-list li {
    position: relative;
    padding: 14px 0 14px 34px;
    border-bottom: 1px solid rgba(8, 9, 12, 0.06);
}

.cv-cs-list li:last-child {
    border-bottom: 0;
}

.cv-cs-list li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 19px;
    width: 18px;
    height: 18px;
    border-radius: 6px;
    background: #315cff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.4 6.2l2.3 2.3 4.9-5' fill='none' stroke='%23ffffff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 11px no-repeat;
}

/* ---------- Lectura comercial ---------- */
.cv-cs-reading {
    padding: 48px 52px !important;
    border-radius: 26px;
    background: linear-gradient(135deg, #08090c 0%, #0f1530 55%, #1c3aa8 140%);
    border: 1px solid rgba(49, 92, 255, 0.3);
}

.cv-cs-reading-text,
.cv-cs-reading-text p {
    margin: 18px 0 0 !important;
    color: #ffffff !important;
    font-size: clamp(19px, 1.7vw, 24px) !important;
    font-weight: 600 !important;
    line-height: 1.5 !important;
    letter-spacing: -0.015em;
}

.cv-cs-reading .cv-btn-link-dark {
    margin-top: 22px;
    width: auto !important;
}

/* ---------- Cierre del caso ---------- */
.cv-cs-final-title .elementor-heading-title {
    text-align: center;
}

/* ---------- Responsive ---------- */
@media (max-width: 1024px) {
    .cv-cs-hero-grid {
        grid-template-columns: 1fr;
        gap: 40px !important;
    }

    .cv-cs-story-row {
        grid-template-columns: 1fr;
        gap: 16px !important;
        padding: 32px 0 !important;
    }

    .cv-cs-story-label {
        position: static !important;
        top: auto !important;
    }

    .cv-cs-fact:nth-child(4) {
        border-left: 0;
    }
}

@media (max-width: 767px) {
    .cv-cs-facts {
        grid-template-columns: 1fr 1fr;
        margin-top: -28px !important;
    }

    .cv-cs-fact {
        padding: 16px !important;
    }

    .cv-cs-fact + .cv-cs-fact {
        border-left: 0;
    }

    .cv-cs-fact:nth-child(even) {
        border-left: 1px solid rgba(8, 9, 12, 0.07);
    }

    .cv-cs-reading {
        padding: 30px 22px !important;
        border-radius: 20px;
    }

    .cv-cs-ctas > .elementor-element {
        width: 100% !important;
    }

    .cv-cs-logo-chip {
        left: 22px;
        bottom: 22px;
    }

    .cv-cs-story-content,
    .cv-cs-story-content p,
    .cv-cs-story-content li {
        font-size: 16px !important;
    }
}


/* Bloques sin contenido (los marca cv-core.js) */
.cv-is-empty {
    display: none !important;
}


/* #########################################################
   29. POPUP CON EL ESTILO DEL SITIO (v2.4)
   Esquinas como el resto (16 px), cabecera oscura compacta con
   el degradado de marca y la retícula del hero.
   ######################################################### */

.elementor-popup-modal:has(.cv-popup) .dialog-widget-content {
    border-radius: 16px 0 0 16px !important;
}

@media (max-width: 767px) {
    .elementor-popup-modal:has(.cv-popup) .dialog-widget-content {
        border-radius: 0 !important;
    }
}

.cv-popup .cv-popup-head {
    position: relative;
    overflow: hidden;
    background: linear-gradient(120deg, #08090c 0%, #0b1029 50%, #1b37b8 135%) !important;
    border-bottom: 0 !important;
}

/* Retícula sutil, como en el hero */
.cv-popup .cv-popup-head::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(rgba(255, 255, 255, 0.05) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, 0.05) 1px, transparent 1px);
    background-size: 40px 40px;
    -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 60%);
    mask-image: linear-gradient(90deg, transparent 0%, #000 60%);
    pointer-events: none;
}

.cv-popup .cv-popup-head > * {
    position: relative;
}

.cv-popup .cv-popup-eyebrow .elementor-heading-title {
    border-color: rgba(200, 255, 54, 0.35) !important;
    background: rgba(200, 255, 54, 0.08) !important;
    color: #c8ff36 !important;
}

.cv-popup .cv-popup-eyebrow .elementor-heading-title::before {
    background: #c8ff36 !important;
    animation-name: cv-pulse-lime !important;
}

@keyframes cv-pulse-lime {
    0% { box-shadow: 0 0 0 0 rgba(200, 255, 54, 0.5); }
    70% { box-shadow: 0 0 0 7px rgba(200, 255, 54, 0); }
    100% { box-shadow: 0 0 0 0 rgba(200, 255, 54, 0); }
}

.cv-popup .cv-popup-title .elementor-heading-title {
    color: #ffffff !important;
}

.cv-popup .cv-popup-title .elementor-heading-title em {
    color: #c8ff36 !important;
}

.cv-popup .cv-popup-text,
.cv-popup .cv-popup-text p {
    color: rgba(248, 247, 244, 0.72) !important;
}

/* Botón cerrar sobre la cabecera oscura */
.elementor-popup-modal:has(.cv-popup) .dialog-close-button {
    background: rgba(255, 255, 255, 0.08) !important;
    border: 1px solid rgba(255, 255, 255, 0.18) !important;
    color: #ffffff !important;
    box-shadow: none !important;
}

.elementor-popup-modal:has(.cv-popup) .dialog-close-button:hover {
    background: #ffffff !important;
    color: #08090c !important;
}

/* Al enviar, la cabecera se oculta: el botón cerrar vuelve a estilo claro */
.elementor-popup-modal:has(.cv-form--sent) .dialog-close-button {
    background: #ffffff !important;
    border-color: rgba(8, 9, 12, 0.12) !important;
    color: #08090c !important;
}

/* Campos y chips con radios del sistema */
.cv-form .elementor-field-group .elementor-field-textual,
.cv-form .elementor-field-group textarea.elementor-field {
    border-radius: 12px !important;
}


/* #########################################################
   30. v2.5 — SOLUCIONES MÁS LIMPIA Y CIFRAS COMO FRANJA OSCURA
   ######################################################### */

/* ---------- Soluciones: sin retícula y sin borde azul en el panel ---------- */
.cv-sol-section .cv-hero-fx .cv-hero-grid {
    display: none !important;
}

.cv-sol-panel {
    border-color: rgba(255, 255, 255, 0.08) !important;
}

/* ---------- Cifras: franja oscura que continúa el hero ----------
   Sin tarjetas: tres columnas separadas por líneas finas, cifra
   grande en blanco con el "+" en lima, la palabra en gris claro. */
.cv-section:has(.cv-stats-row) {
    background: #08090c !important;
    padding-top: 8px !important;
    padding-bottom: 72px !important;
}

.cv-stats-row {
    position: relative;
    max-width: 1290px;
    margin: 0 auto !important;
    gap: 0 !important;
    padding-top: 40px !important;
    border-top: 1px solid rgba(255, 255, 255, 0.1) !important;
}

.cv-stats-row .cv-stat-card {
    flex: 1 1 0 !important;
    width: auto !important;
    max-width: none !important;
    padding: 4px 40px !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    overflow: visible !important;
}

.cv-stats-row .cv-stat-card:first-child {
    padding-left: 0 !important;
}

.cv-stats-row .cv-stat-card + .cv-stat-card {
    border-left: 1px solid rgba(255, 255, 255, 0.1) !important;
}

.cv-stats-row .cv-stat-card:hover {
    border-color: rgba(255, 255, 255, 0.1) !important;
    box-shadow: none !important;
}

.cv-stats-row .cv-stat-card .elementor-icon-box-wrapper {
    flex-direction: row !important;
    align-items: flex-start !important;
    gap: 20px !important;
}

.cv-stats-row .cv-stat-card .elementor-icon {
    width: 46px !important;
    height: 46px !important;
    border: 1px solid rgba(255, 255, 255, 0.14) !important;
    border-radius: 12px !important;
    background: rgba(255, 255, 255, 0.04) !important;
    box-shadow: none !important;
    color: #c8ff36 !important;
    fill: #c8ff36 !important;
}

.cv-stats-row .cv-stat-card .elementor-icon svg {
    width: 22px !important;
    height: 22px !important;
    fill: #c8ff36 !important;
}

.cv-stats-row .cv-stat-card:hover .elementor-icon {
    transform: none;
    border-color: rgba(200, 255, 54, 0.5) !important;
    background: rgba(200, 255, 54, 0.08) !important;
}

.cv-stats-row .cv-stat-card .elementor-icon-box-title {
    color: #ffffff !important;
    font-size: clamp(40px, 4.2vw, 64px) !important;
    font-weight: 800 !important;
    line-height: 0.95 !important;
    letter-spacing: -0.05em !important;
}

.cv-stats-row .cv-stat-card .cv-count-prefix {
    color: #c8ff36 !important;
}

.cv-stats-row .cv-stat-card .cv-count-suffix {
    margin-left: 0.18em;
    color: rgba(248, 247, 244, 0.55);
    font-size: 0.42em;
    font-weight: 700;
    letter-spacing: -0.02em;
}

.cv-stats-row .cv-stat-card .elementor-icon-box-description {
    margin-top: 14px !important;
    max-width: 30ch;
    color: rgba(248, 247, 244, 0.62) !important;
    font-size: 15px !important;
    line-height: 1.5 !important;
}

/* La luz que sigue el cursor, en azul sobre lo oscuro */
.cv-stats-row .cv-stat-card > .elementor-widget-container::before {
    background: radial-gradient(circle 220px at var(--mouse-x) var(--mouse-y), rgba(49, 92, 255, 0.18), transparent 72%) !important;
}

@media (min-width: 768px) and (max-width: 1024px) {
    .cv-stats-row .cv-stat-card {
        padding: 4px 20px !important;
    }

    .cv-stats-row .cv-stat-card .elementor-icon-box-wrapper {
        flex-direction: column !important;
        gap: 14px !important;
    }
}

@media (max-width: 767px) {
    .cv-section:has(.cv-stats-row) {
        padding-bottom: 48px !important;
    }

    .cv-stats-row {
        flex-direction: column !important;
        padding-top: 8px !important;
    }

    .cv-stats-row .cv-stat-card {
        padding: 24px 0 !important;
    }

    .cv-stats-row .cv-stat-card + .cv-stat-card {
        border-left: 0 !important;
        border-top: 1px solid rgba(255, 255, 255, 0.1) !important;
    }

    .cv-stats-row .cv-stat-card .elementor-icon-box-title {
        font-size: 44px !important;
    }
}


/* #########################################################
   31. v2.6 — CIFRAS: MISMA FRANJA, VERSIÓN CLARA
   Fondo crema, líneas finas oscuras, "+" en azul e íconos
   en cuadro azul de marca.
   ######################################################### */

.cv-section:has(.cv-stats-row) {
    background: #f8f7f4 !important;
    padding-top: 64px !important;
    padding-bottom: 72px !important;
}

.cv-stats-row {
    border-top: 0 !important;
    padding-top: 0 !important;
}

.cv-stats-row .cv-stat-card + .cv-stat-card {
    border-left-color: rgba(8, 9, 12, 0.1) !important;
}

.cv-stats-row .cv-stat-card:hover {
    border-color: rgba(8, 9, 12, 0.1) !important;
}

.cv-stats-row .cv-stat-card .elementor-icon {
    border: 0 !important;
    background: #315cff !important;
    color: #ffffff !important;
    fill: #ffffff !important;
    box-shadow: 0 10px 24px rgba(49, 92, 255, 0.25) !important;
}

.cv-stats-row .cv-stat-card .elementor-icon svg {
    fill: #ffffff !important;
}

.cv-stats-row .cv-stat-card:hover .elementor-icon {
    border: 0 !important;
    background: #2448f5 !important;
}

.cv-stats-row .cv-stat-card .elementor-icon-box-title {
    color: #08090c !important;
    font-size: clamp(38px, 3.8vw, 58px) !important;
    white-space: nowrap;
}

.cv-stats-row .cv-stat-card .cv-count-prefix {
    color: #315cff !important;
}

.cv-stats-row .cv-stat-card .cv-count-suffix {
    color: rgba(8, 9, 12, 0.45);
}

.cv-stats-row .cv-stat-card .elementor-icon-box-description {
    color: #5a5f69 !important;
}

.cv-stats-row .cv-stat-card > .elementor-widget-container::before {
    background: radial-gradient(circle 220px at var(--mouse-x) var(--mouse-y), rgba(49, 92, 255, 0.08), transparent 72%) !important;
}

@media (min-width: 768px) and (max-width: 1024px) {
    .cv-stats-row .cv-stat-card .elementor-icon-box-title {
        white-space: normal;
    }
}

@media (max-width: 767px) {
    .cv-section:has(.cv-stats-row) {
        padding-top: 32px !important;
        padding-bottom: 40px !important;
    }

    .cv-stats-row .cv-stat-card + .cv-stat-card {
        border-top-color: rgba(8, 9, 12, 0.1) !important;
    }
}


/* #########################################################
   32. v2.7 — HEADER CON EL RADIO DEL SISTEMA
   Botones 12 px · header 18 px · tarjetas 22 px
   ######################################################### */

.cv-header .cv-header-bar,
.cv-header.elementor-sticky--effects .cv-header-bar,
.elementor-sticky--effects .cv-header .cv-header-bar {
    border-radius: 18px !important;
}

/* El submenú también */
.cv-header-menu .elementskit-navbar-nav .elementskit-dropdown {
    border-radius: 16px !important;
}

@media (max-width: 1024px) {
    .cv-header .cv-header-bar,
    .cv-header.elementor-sticky--effects .cv-header-bar,
    .elementor-sticky--effects .cv-header .cv-header-bar {
        border-radius: 16px !important;
    }
}

@media (max-width: 767px) {
    .cv-header .cv-header-bar,
    .cv-header.elementor-sticky--effects .cv-header-bar,
    .elementor-sticky--effects .cv-header .cv-header-bar {
        border-radius: 14px !important;
    }
}


/* #########################################################
   33. MEGAMENÚ DE SERVICIOS (ElementsKit)
   Plantilla: cv-mega-wrap > cv-mega (7 servicios + tarjeta CTA)
   Hover de cada servicio: tarjeta negra, número en lima.
   ######################################################### */

/* Panel del megamenú */
.cv-header-menu .elementskit-megamenu-panel {
    padding: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    border: 0 !important;
}

.cv-mega-wrap {
    padding: 14px !important;
    border: 1px solid rgba(8, 9, 12, 0.08);
    border-radius: 18px;
    background: rgba(255, 255, 255, 0.98);
    -webkit-backdrop-filter: blur(20px);
    backdrop-filter: blur(20px);
    box-shadow: 0 30px 70px rgba(8, 9, 12, 0.16);
}

.cv-mega {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 6px !important;
}

/* Cada servicio */
.cv-mega-item {
    position: relative;
    padding: 20px 20px 22px !important;
    border-radius: 14px;
    text-decoration: none !important;
    transition: background-color 0.3s ease, transform 0.35s var(--cv-ease);
}

.cv-mega-num .elementor-heading-title {
    color: #727783 !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.04em !important;
    line-height: 1 !important;
    transition: color 0.3s ease;
}

.cv-mega-title .elementor-heading-title {
    margin-top: 14px !important;
    color: #08090c !important;
    font-size: 17px !important;
    font-weight: 800 !important;
    line-height: 1.25 !important;
    letter-spacing: -0.02em !important;
    transition: color 0.3s ease;
}

.cv-mega-desc .elementor-heading-title {
    margin-top: 6px !important;
    color: #5a5f69 !important;
    font-size: 14px !important;
    font-weight: 400 !important;
    line-height: 1.45 !important;
    transition: color 0.3s ease;
}

/* Flecha que aparece arriba a la derecha */
.cv-mega-item::after {
    content: "";
    position: absolute;
    top: 18px;
    right: 18px;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: #c8ff36 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3.5 8.5l5-5M4.5 3.5h4v4' fill='none' stroke='%2308090c' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 11px no-repeat;
    opacity: 0;
    transform: scale(0.6) rotate(-20deg);
    transition: opacity 0.3s ease, transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* Hover: tarjeta negra */
.cv-mega-item:hover,
.cv-mega-item:focus-visible {
    background: #08090c;
    outline: none;
}

.cv-mega-item:hover .cv-mega-num .elementor-heading-title,
.cv-mega-item:focus-visible .cv-mega-num .elementor-heading-title {
    color: #c8ff36 !important;
}

.cv-mega-item:hover .cv-mega-title .elementor-heading-title,
.cv-mega-item:focus-visible .cv-mega-title .elementor-heading-title {
    color: #ffffff !important;
}

.cv-mega-item:hover .cv-mega-desc .elementor-heading-title,
.cv-mega-item:focus-visible .cv-mega-desc .elementor-heading-title {
    color: rgba(248, 247, 244, 0.7) !important;
}

.cv-mega-item:hover::after,
.cv-mega-item:focus-visible::after {
    opacity: 1;
    transform: none;
}

/* Tarjeta CTA (8.ª celda) con el degradado de marca */
.cv-mega-cta {
    justify-content: space-between !important;
    padding: 20px !important;
    border-radius: 14px;
    background: linear-gradient(135deg, #08090c 0%, #0f1530 55%, #1c3aa8 140%);
}

.cv-mega-cta-title .elementor-heading-title {
    color: #ffffff !important;
    font-size: 16px !important;
    font-weight: 800 !important;
    line-height: 1.25 !important;
    letter-spacing: -0.015em !important;
}

.cv-mega-cta-text .elementor-heading-title {
    margin-top: 6px !important;
    color: rgba(248, 247, 244, 0.7) !important;
    font-size: 13.5px !important;
    font-weight: 400 !important;
    line-height: 1.45 !important;
}

.cv-mega-cta-btn {
    margin-top: 14px !important;
    width: auto !important;
}

.cv-mega-cta-btn .elementor-button {
    min-height: 42px !important;
    padding: 10px 18px !important;
    font-size: 14px !important;
}

/* Enlace inferior */
.cv-mega-all {
    margin-top: 10px;
    padding: 12px 20px 4px !important;
    border-top: 1px solid rgba(8, 9, 12, 0.07);
}

.cv-mega-all .elementor-heading-title,
.cv-mega-all .elementor-heading-title a {
    color: #315cff !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    text-decoration: none !important;
}

.cv-mega-all .elementor-heading-title a:hover {
    color: #08090c !important;
}

/* Entrada escalonada al abrir */
.elementskit-navbar-nav > li:hover .cv-mega-item,
.elementskit-navbar-nav > li:hover .cv-mega-cta {
    animation: cv-mega-in 0.45s var(--cv-ease) both;
}

.elementskit-navbar-nav > li:hover .cv-mega > :nth-child(2) { animation-delay: 0.03s; }
.elementskit-navbar-nav > li:hover .cv-mega > :nth-child(3) { animation-delay: 0.06s; }
.elementskit-navbar-nav > li:hover .cv-mega > :nth-child(4) { animation-delay: 0.09s; }
.elementskit-navbar-nav > li:hover .cv-mega > :nth-child(5) { animation-delay: 0.12s; }
.elementskit-navbar-nav > li:hover .cv-mega > :nth-child(6) { animation-delay: 0.15s; }
.elementskit-navbar-nav > li:hover .cv-mega > :nth-child(7) { animation-delay: 0.18s; }
.elementskit-navbar-nav > li:hover .cv-mega > :nth-child(8) { animation-delay: 0.21s; }

@keyframes cv-mega-in {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: none; }
}

/* Tablet y móvil (dentro del panel lateral del menú) */
@media (max-width: 1024px) {
    .cv-mega-wrap {
        padding: 6px !important;
        border: 0;
        box-shadow: none;
        background: transparent;
    }

    .cv-mega {
        grid-template-columns: 1fr;
        gap: 2px !important;
    }

    .cv-mega-item {
        padding: 14px 14px 16px !important;
    }

    .cv-mega-item::after {
        display: none;
    }

    .cv-mega-title .elementor-heading-title {
        margin-top: 6px !important;
        font-size: 15px !important;
    }

    .cv-mega-desc .elementor-heading-title {
        font-size: 13px !important;
    }

    .elementskit-navbar-nav > li:hover .cv-mega-item,
    .elementskit-navbar-nav > li:hover .cv-mega-cta {
        animation: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-mega-item,
    .cv-mega-cta {
        animation: none !important;
    }
}


/* Megamenú — ajustes (v2.8.1)
   1. Se separa del header: el panel deja un margen transparente
      arriba (así el mouse no pierde el hover al bajar).
   2. Número, título y texto juntos: se anula el espacio automático
      que Elementor mete entre widgets. */
.cv-header-menu .elementskit-megamenu-panel {
    padding-top: 16px !important;
}

.cv-mega-wrap,
.cv-mega-item,
.cv-mega-cta {
    gap: 0 !important;
    --gap: 0px;
    --row-gap: 0px;
    --widgets-spacing: 0px;
}

.cv-mega-item > .elementor-element,
.cv-mega-cta > .elementor-element,
.cv-mega-item .elementor-widget-container,
.cv-mega-cta .elementor-widget-container {
    margin: 0 !important;
}

.cv-mega-num .elementor-heading-title {
    margin: 0 !important;
}

.cv-mega-title .elementor-heading-title {
    margin: 12px 0 0 !important;
}

.cv-mega-desc .elementor-heading-title {
    margin: 6px 0 0 !important;
}

.cv-mega-cta-title .elementor-heading-title {
    margin: 0 !important;
}

.cv-mega-cta-text .elementor-heading-title {
    margin: 8px 0 0 !important;
}

.cv-mega-cta {
    justify-content: flex-start !important;
}

.cv-mega-cta .cv-mega-cta-btn {
    margin-top: 16px !important;
}

.cv-mega-item {
    justify-content: flex-start !important;
}

.cv-mega-all {
    margin-top: 8px !important;
}

@media (max-width: 1024px) {
    .cv-header-menu .elementskit-megamenu-panel {
        padding-top: 0 !important;
    }

    .cv-mega-title .elementor-heading-title {
        margin-top: 6px !important;
    }
}


/* Megamenú — ajuste fuerte (v2.8.2)
   Cada servicio deja de ser flex (así ningún espacio automático
   de Elementor puede separar número, título y texto) y el panel
   arranca debajo de la barra del header. */
body .elementskit-navbar-nav .elementskit-megamenu-panel {
    padding-top: 30px !important;
    background: transparent !important;
    box-shadow: none !important;
    border: 0 !important;
}

body .cv-mega-item.e-con,
body .cv-mega-cta.e-con {
    display: block !important;
    height: auto !important;
    min-height: 0 !important;
}

body .cv-mega-item.e-con > .elementor-element,
body .cv-mega-cta.e-con > .elementor-element {
    margin: 0 !important;
    padding: 0 !important;
    width: 100% !important;
}

body .cv-mega.e-con {
    align-items: start !important;
    align-content: start !important;
}

body .cv-mega-item .cv-mega-title .elementor-heading-title {
    margin: 10px 0 0 !important;
}

body .cv-mega-item .cv-mega-desc .elementor-heading-title {
    margin: 4px 0 0 !important;
}

body .cv-mega-cta .cv-mega-cta-text .elementor-heading-title {
    margin: 8px 0 0 !important;
}

body .cv-mega-cta .cv-mega-cta-btn {
    display: inline-block;
    width: auto !important;
    margin-top: 16px !important;
}

@media (max-width: 1024px) {
    body .elementskit-navbar-nav .elementskit-megamenu-panel {
        padding-top: 0 !important;
    }
}


/* #########################################################
   34. TARJETA DE CASO — JERARQUÍA CLARA (v2.9)
   1.º el cliente (grande, blanco) · 2.º la transformación (gris)
   · 3.º "Ver caso completo" en lima. Sin cifras en la tarjeta:
   las cifras viven en la página del caso.
   ######################################################### */

.cv-case-card .cv-case-metric,
.cv-case-card .cv-case-metric-label {
    display: none !important;
}

.cv-case-card .cv-case-client .elementor-heading-title {
    margin: 0 !important;
    color: #ffffff !important;
    font-size: clamp(22px, 1.9vw, 27px) !important;
    font-weight: 800 !important;
    line-height: 1.15 !important;
    letter-spacing: -0.03em !important;
    text-transform: none !important;
    transition: color 0.3s ease;
}

.cv-case-card:hover .cv-case-client .elementor-heading-title {
    color: #c8ff36 !important;
}

.cv-case-card .cv-case-title .elementor-heading-title {
    margin: 10px 0 0 !important;
    padding-top: 0 !important;
    background: none !important;
    color: rgba(248, 247, 244, 0.68) !important;
    font-size: 16px !important;
    font-weight: 500 !important;
    line-height: 1.5 !important;
    letter-spacing: -0.005em !important;
}

/* Fila final con línea fina arriba */
.cv-case-card .cv-case-cta {
    margin-top: auto !important;
    padding-top: 18px !important;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.cv-case-card .cv-case-body {
    gap: 0 !important;
}

.cv-case-card .cv-case-title {
    margin-bottom: 22px !important;
}

.cv-case-card .cv-case-cta-text .elementor-heading-title {
    color: #c8ff36 !important;
    opacity: 1 !important;
}

.cv-case-card .cv-case-cta-icon .elementor-icon {
    background: transparent !important;
    border: 1px solid rgba(200, 255, 54, 0.45) !important;
    color: #c8ff36 !important;
    fill: #c8ff36 !important;
}

.cv-case-card:hover .cv-case-cta-icon .elementor-icon {
    background: #c8ff36 !important;
    border-color: #c8ff36 !important;
    color: #08090c !important;
    fill: #08090c !important;
}

@media (hover: none) {
    .cv-case-card .cv-case-cta-icon .elementor-icon {
        background: #c8ff36 !important;
        border-color: #c8ff36 !important;
        color: #08090c !important;
        fill: #08090c !important;
    }
}


/* #########################################################
   35. AJUSTES DE ESPACIO Y RESPONSIVE (v3.0)
   ######################################################### */

/* Cifras: menos aire hacia abajo */
.cv-section:has(.cv-stats-row) {
    padding-bottom: 24px !important;
}

.cv-stats-row .cv-stat-card {
    min-height: 0 !important;
}

/* Cierre: título y texto más juntos */
.cv-final,
.cv-final > .e-con-inner {
    gap: 0 !important;
    --gap: 0px;
    --row-gap: 0px;
    --widgets-spacing: 0px;
}

.cv-final > .elementor-element {
    margin-bottom: 0 !important;
}

.cv-final .cv-h2 .elementor-heading-title {
    margin-top: 14px !important;
}

.cv-final-text,
.cv-final-text p {
    margin-top: 14px !important;
}

/* Igual en las demás cabeceras de sección: etiqueta, título y texto como un bloque */
.cv-sec-head,
.cv-sec-head > .e-con,
.cv-how-content {
    --widgets-spacing: 0px;
}

.cv-sec-head > .elementor-element,
.cv-sec-head > .e-con > .elementor-element {
    margin-bottom: 0 !important;
}

/* ---------- Revisión responsive ---------- */

/* Tablet */
@media (min-width: 768px) and (max-width: 1024px) {
    .cv-section:has(.cv-stats-row) {
        padding-bottom: 16px !important;
    }

    .cv-hero-copy,
    .cv-hero-copy p {
        max-width: 60ch;
        margin-left: auto !important;
        margin-right: auto !important;
    }

    .cv-flow {
        margin-top: 40px !important;
    }

    .cv-casos-grid .elementor-loop-container {
        gap: 16px !important;
    }
}

/* Móvil */
@media (max-width: 767px) {
    .cv-section:has(.cv-stats-row) {
        padding-bottom: 8px !important;
    }

    .cv-hero .cv-hero-badge .elementor-heading-title {
        font-size: 12px !important;
    }

    .cv-hero-actions,
    .cv-hero-actions .elementor-button {
        width: 100%;
        justify-content: center;
    }

    .cv-h2 .elementor-heading-title,
    .cv-trust-title .elementor-heading-title {
        font-size: clamp(28px, 8vw, 34px) !important;
    }

    .cv-final .cv-h2 .elementor-heading-title {
        margin-top: 12px !important;
    }

    .cv-final-text,
    .cv-final-text p {
        font-size: 15.5px !important;
    }

    .cv-sec-head {
        margin-bottom: 28px !important;
    }
}


/* Cierre → footer: el azul se funde hacia abajo con el negro del footer */
.cv-final-section {
    background:
        linear-gradient(0deg, #08090c 0%, rgba(8, 9, 12, 0.85) 18%, rgba(8, 9, 12, 0) 55%),
        linear-gradient(120deg, #08090c 0%, #0b1029 45%, #1b37b8 120%) !important;
}

/* La luz que respira se queda en la parte alta para no ensuciar el empalme */
.cv-final-section::after {
    top: 40% !important;
}


/* #########################################################
   36. UN SOLO ESTILO DE PÁRRAFO (v3.1)
   Todo texto corrido usa el mismo tamaño, grosor, interlineado
   y espaciado. Solo cambia el color según el fondo:
   - Sobre oscuro: blanco cálido de marca #F8F7F4
   - Sobre claro: gris carbón #3C414B
   Quedan fuera las notas pequeñas, chips, etiquetas y botones.
   ######################################################### */

:root {
    --cv-p-size: 17px;
    --cv-p-weight: 400;
    --cv-p-lh: 1.65;
    --cv-p-ls: -0.005em;
    --cv-p-on-dark: #f8f7f4;
    --cv-p-on-light: #3c414b;
}

@media (max-width: 767px) {
    :root {
        --cv-p-size: 16px;
    }
}

/* ---------- Sobre fondo oscuro ---------- */
.cv-hero .cv-hero-copy p,
.cv-sol-section .elementor-widget-text-editor p,
.cv-sol-section .cv-sol-list li,
.cv-final-section .elementor-widget-text-editor p,
.cv-section:has(.cv-results-row) .elementor-widget-text-editor p,
.cv-result-card .elementor-widget-text-editor p,
.cv-diag-card .elementor-widget-text-editor p,
.cv-cs-hero .elementor-widget-text-editor p,
.cv-cs-reading .elementor-widget-text-editor p,
.cv-popup .cv-popup-text p {
    color: var(--cv-p-on-dark) !important;
    font-size: var(--cv-p-size) !important;
    font-weight: var(--cv-p-weight) !important;
    line-height: var(--cv-p-lh) !important;
    letter-spacing: var(--cv-p-ls) !important;
    opacity: 1 !important;
}

/* La lectura comercial del caso es una cita: conserva su tamaño, pero con el mismo color */
.cv-cs-reading .cv-cs-reading-text p {
    font-size: clamp(19px, 1.7vw, 24px) !important;
    font-weight: 600 !important;
    line-height: 1.5 !important;
}

/* El popup es más compacto: mismo estilo, un punto más pequeño */
.cv-popup .cv-popup-text p {
    font-size: 14px !important;
    line-height: 1.55 !important;
}

/* ---------- Sobre fondo claro ---------- */
.cv-sec-lead p,
.cv-problems-row .elementor-widget-text-editor p,
.cv-pain-card .elementor-widget-text-editor p,
.cv-how-section .cv-sec-lead p,
.cv-cs-story-content p,
.cv-cs-story-content li,
.cv-cs-table p {
    color: var(--cv-p-on-light) !important;
    font-size: var(--cv-p-size) !important;
    font-weight: var(--cv-p-weight) !important;
    line-height: var(--cv-p-lh) !important;
    letter-spacing: var(--cv-p-ls) !important;
}

/* Las tarjetas de dolores van un punto más pequeñas para que quepan en la escalera,
   pero con el mismo estilo */
.cv-pain-card .elementor-widget-text-editor p {
    font-size: calc(var(--cv-p-size) - 1px) !important;
    line-height: 1.55 !important;
}

/* La tarjeta oscura de diagnóstico dentro de la escalera sigue la regla de oscuro */
.cv-problems-row .cv-diag-card .elementor-widget-text-editor p {
    color: var(--cv-p-on-dark) !important;
}


/* #########################################################
   37. REVISIÓN FINAL (v3.2)
   ######################################################### */

/* ---------- Párrafos: más compactos ---------- */
:root {
    --cv-p-size: 16px;
    --cv-p-lh: 1.55;
}

@media (max-width: 767px) {
    :root {
        --cv-p-size: 15px;
    }
}

/* ---------- Título → párrafo: un solo espacio en todo el sitio ---------- */
.cv-sol-text,
.cv-sol-text p,
.cv-sec-lead,
.cv-sec-lead p,
.cv-final-text,
.cv-final-text p,
.cv-cs-intro,
.cv-cs-intro p {
    margin-top: 12px !important;
}

.cv-h-sub .elementor-heading-title {
    margin-top: 10px !important;
}

.cv-problems-row .cv-scroll-highlight,
.cv-problems-row .cv-scroll-highlight p {
    margin-top: 14px !important;
}

/* ---------- Bullets más pequeños ---------- */
.cv-sol-list {
    gap: 10px 24px !important;
}

.cv-sol-list li {
    padding-left: 14px !important;
    font-size: 15px !important;
    line-height: 1.5 !important;
}

.cv-sol-list li::before {
    top: 0.62em !important;
    width: 5px !important;
    height: 5px !important;
    box-shadow: 0 0 6px rgba(200, 255, 54, 0.6) !important;
}

/* ---------- Cifras: sin el gris suelto ---------- */
.cv-stats-row .cv-stat-card .cv-count-suffix {
    color: #315cff !important;
    font-weight: 500 !important;
}

.cv-stats-row .cv-stat-card .elementor-icon-box-description {
    color: var(--cv-p-on-light) !important;
    font-size: 15px !important;
    font-weight: 400 !important;
}

/* ---------- Cierre → footer sin corte ---------- */
.cv-final-section {
    background:
        linear-gradient(0deg, #08090c 0%, #08090c 14%, rgba(8, 9, 12, 0) 60%),
        linear-gradient(120deg, #08090c 0%, #0b1029 45%, #1b37b8 120%) !important;
}

/* Los efectos del fondo se desvanecen antes del borde inferior */
.cv-final-section .cv-hero-fx {
    -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 55%, transparent 88%);
    mask-image: linear-gradient(180deg, #000 0%, #000 55%, transparent 88%);
}

/* El footer arranca exactamente en el mismo negro */
.elementor-location-footer > .e-con:first-child,
.elementor-location-footer > .elementor-element:first-child {
    background-color: #08090c !important;
    border-top: 0 !important;
}

/* ---------- Luz del mouse un poco más presente ---------- */
.cv-hero-fx .cv-hero-spot {
    width: 760px !important;
    height: 760px !important;
    background: radial-gradient(circle, rgba(49, 92, 255, 0.4) 0%, rgba(49, 92, 255, 0.12) 38%, transparent 68%) !important;
}

/* ---------- Glow que sigue el mouse en tarjetas ---------- */
.cv-glow {
    position: relative;
    isolation: isolate;
}

.cv-glow-layer {
    position: absolute;
    inset: 0;
    z-index: 4;
    border-radius: inherit;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.45s ease;
    background: radial-gradient(320px circle at var(--gx, 50%) var(--gy, 50%), rgba(49, 92, 255, 0.16), transparent 70%);
}

.cv-glow:hover .cv-glow-layer {
    opacity: 1;
}

/* Sobre fondos oscuros la luz es más intensa y se suma (screen) */
.cv-case-card .cv-glow-layer,
.cv-result-card .cv-glow-layer,
.cv-diag-card .cv-glow-layer,
.cv-sol-panel .cv-glow-layer,
.cv-cs-reading .cv-glow-layer,
.cv-cycle .cv-glow-layer,
.cv-mega-cta .cv-glow-layer,
.cv-mega-item:hover .cv-glow-layer {
    mix-blend-mode: screen;
    background: radial-gradient(360px circle at var(--gx, 50%) var(--gy, 50%), rgba(49, 92, 255, 0.45), rgba(49, 92, 255, 0.08) 45%, transparent 70%);
}

/* Fuera los efectos de hover que solo tenía una tarjeta */
.cv-case-card .cv-case-media::after,
.cv-pain-card::after {
    display: none !important;
}

/* ---------- Escalera: sin borde en hover, se quedan los demás efectos ---------- */
.cv-pain-card::before {
    display: none !important;
}

/* ---------- Barra de progreso de lectura ---------- */
.cv-progress {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 100000;
    height: 2px;
    background: #315cff;
    transform: scaleX(0);
    transform-origin: 0 50%;
    pointer-events: none;
}

body.admin-bar .cv-progress {
    top: 32px;
}

@media (max-width: 782px) {
    body.admin-bar .cv-progress {
        top: 46px;
    }
}

/* ---------- Detalles finales ---------- */

/* Selección de texto con la marca */
::selection {
    background: #c8ff36;
    color: #08090c;
}

/* Desplazamiento suave a anclas, respetando el header */
html {
    scroll-behavior: smooth;
    scroll-padding-top: 110px;
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    .cv-glow-layer {
        display: none;
    }
}

/* Foco visible coherente en enlaces y tarjetas */
a.cv-pain-card:focus-visible,
a.cv-case-card:focus-visible,
a.cv-mega-item:focus-visible {
    outline: 2px solid #315cff;
    outline-offset: 3px;
}


/* #########################################################
   38. BARRIDO FINAL (v3.3) — reglas del sistema
   · Glow del mouse: SOLO en superficies oscuras.
   · Tarjetas: el hover no cambia el borde; responden con luz,
     sombra suave y su microinteracción (flecha, ícono).
   · Lo informativo (cifras) no reacciona al mouse.
   · Títulos compactos: interlineado 1.0–1.05.
   · Acentos: azul en fondos claros, lima en fondos oscuros.
   ######################################################### */

/* ---------- Cifras: estáticas ---------- */
.cv-stat-card > .elementor-widget-container::before,
.cv-stats-row .cv-stat-card > .elementor-widget-container::before {
    display: none !important;
}

.cv-stat-card,
.cv-stat-card:hover {
    transform: none !important;
    box-shadow: none !important;
}

.cv-stats-row .cv-stat-card:hover .elementor-icon {
    background: #315cff !important;
}

/* ---------- Soluciones: fondo continuo, sin cortes ---------- */
.cv-sol-section::before {
    display: none !important;
}

.cv-sol-section {
    background: #08090c !important;
}

/* El destacado del título en lima */
.cv-sol-section .cv-title-sky {
    --cv-title-accent: #c8ff36;
}

/* Etiqueta y líneas en el azul de marca; bullets y botón en lima */
.cv-sol-section .cv-sec-head-row {
    align-items: flex-end !important;
}

.cv-sol-section .cv-sec-head-row > .elementor-widget-button {
    width: auto !important;
    flex: 0 0 auto;
}

/* ---------- Tarjetas: hover sin cambio de borde ---------- */
.cv-case-card,
.cv-case-card:hover,
.cv-result-card,
.cv-result-card:hover {
    border-color: rgba(49, 92, 255, 0.22) !important;
}

.cv-case-card:hover,
.cv-result-card:hover {
    box-shadow: 0 24px 50px rgba(8, 9, 12, 0.28) !important;
}

/* La escalera conserva sombra e ícono, sin brillo extra */
.cv-pain-card:hover {
    box-shadow: 0 18px 40px rgba(8, 9, 12, 0.08) !important;
}

/* ---------- Títulos más compactos ---------- */
.cv-hero-title .elementor-heading-title {
    line-height: 1 !important;
}

.cv-h2 .elementor-heading-title,
.cv-trust-title .elementor-heading-title,
.cv-cs-h1 .elementor-heading-title {
    line-height: 1.02 !important;
}

.cv-trust-title .cv-title-line,
.cv-title-anim .cv-title-line,
.cv-hero-title .cv-line {
    padding-bottom: 0.1em !important;
    margin-bottom: -0.1em !important;
}

.cv-sol-para .elementor-heading-title,
.cv-cs-story-title .elementor-heading-title,
.cv-h-sub .elementor-heading-title {
    line-height: 1.18 !important;
}

.cv-pain-card .elementor-widget-heading h3.elementor-heading-title,
.cv-result-card h3.elementor-heading-title,
.cv-stage-title .elementor-heading-title,
.cv-case-card .cv-case-client .elementor-heading-title {
    line-height: 1.15 !important;
}

/* ---------- Mobile: el botón de Soluciones va debajo del título ---------- */
@media (max-width: 1024px) {
    .cv-sol-section .cv-sec-head-row > .elementor-widget-button {
        margin-top: 8px;
    }
}

@media (max-width: 767px) {
    .cv-sol-section .cv-sec-head-row > .elementor-widget-button,
    .cv-sol-section .cv-sec-head-row > .elementor-widget-button .elementor-button {
        width: 100% !important;
    }
}


/* #########################################################
   39. PÁGINAS INTERIORES Y SERVICIOS (v3.4)
   · cv-page-hero: hero de páginas interiores (sin video), con
     el degradado de marca, retícula y luz del mouse (cv-hero).
     Primera sección: margen -150 px y relleno 260/230/210 px
     en Elementor.
   · cv-title-flow: el H1 o el H2 fluye como un párrafo (sin
     saltos de línea forzados); conserva la animación y el
     destacado.
   · cv-flow-5: recorrido animado de 5 etapas.
   · Servicios — Elija por necesidad: cv-srv-needs-section,
     cv-srv-needs, cv-srv-needs-head, cv-srv-needs-list,
     cv-srv-need (contenedor enlazado), cv-srv-need-num,
     cv-srv-need-text, cv-srv-need-service, cv-srv-help,
     cv-srv-help-title.
   · Servicios — Siete capacidades: cv-srv-caps-section,
     cv-srv-grid, cv-srv-card (contenedor enlazado),
     cv-srv-card-num, cv-srv-card-title, cv-srv-card-desc,
     cv-srv-card-link, cv-srv-card-cta (8.ª celda oscura).
   · El hover de las tarjetas es el mismo de la escalera del
     Home: la tarjeta pasa a blanco con sombra suave, el número
     se oscurece y la flecha gira, se pone azul y late.
   ######################################################### */

/* ---------- Títulos sin saltos forzados ---------- */
.cv-title-flow .elementor-heading-title {
    text-wrap: balance;
}

.cv-title-flow .cv-line,
.cv-title-flow .cv-title-line {
    display: inline !important;
    overflow: visible !important;
    padding: 0 !important;
    margin: 0 !important;
}

.cv-title-flow .cv-line-inner,
.cv-title-flow .cv-title-line-inner {
    display: inline !important;
}

.cv-title-flow .cv-line-inner::after,
.cv-title-flow .cv-title-line-inner::after {
    content: " ";
}

/* ---------- Hero de páginas interiores ---------- */
.cv-page-hero {
    background: linear-gradient(135deg, #08090c 0%, #0f1530 55%, #1c3aa8 140%) !important;
}

.cv-page-hero > .e-con-inner {
    align-items: center !important;
    gap: 0 !important;
    --widgets-spacing: 0px;
    text-align: center;
}

.cv-page-hero > .e-con-inner > .elementor-element {
    margin-bottom: 0 !important;
}

.cv-page-hero .cv-hero-badge {
    width: auto !important;
}

.cv-page-hero .cv-hero-title {
    width: 100% !important;
    max-width: 960px !important;
}

.cv-page-hero .cv-hero-title .elementor-heading-title {
    margin-top: 22px !important;
    color: #ffffff !important;
    font-size: clamp(32px, 3.6vw, 56px) !important;
    font-weight: 800 !important;
    line-height: 1.04 !important;
    letter-spacing: -0.04em !important;
    text-align: center;
}

/* El texto del hero nunca pasa de 640 px ni queda en una sola línea */
.cv-page-hero .cv-hero-copy,
.cv-page-hero .cv-hero-copy .elementor-widget-container {
    width: 100% !important;
    max-width: 640px !important;
    min-width: 0 !important;
    flex: 0 1 auto !important;
    margin-left: auto !important;
    margin-right: auto !important;
}

.cv-page-hero .cv-hero-copy p {
    max-width: 100% !important;
    margin: 14px 0 0 !important;
    white-space: normal !important;
    text-align: center;
}

.cv-page-hero .cv-hero-actions {
    width: auto !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    margin-top: 30px !important;
}

.cv-page-hero .cv-hero-actions > .elementor-element {
    width: auto !important;
}

.cv-page-hero .cv-flow {
    margin-top: 64px !important;
    max-width: 820px;
}

/* Recorrido de 5 etapas */
.cv-flow-5 .cv-flow-track {
    grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
}

.cv-flow-5 .cv-flow-track::before {
    left: 10%;
    right: 10%;
}

@keyframes cv-flow-run-5 {
    0% { left: 10%; opacity: 0; }
    6% { opacity: 1; }
    94% { opacity: 1; }
    100% { left: calc(90% - 60px); opacity: 0; }
}

.cv-flow-5 .cv-flow-track::after {
    left: 10%;
    animation-name: cv-flow-run-5;
}

@media (min-width: 768px) and (max-width: 1024px) {
    .cv-flow-5 .cv-flow-track::before,
    .cv-flow-5 .cv-flow-track::after {
        display: block;
    }
}

@media (max-width: 767px) {
    .cv-page-hero .cv-flow {
        margin-top: 44px !important;
    }

    .cv-flow-5 .cv-flow-track {
        display: flex !important;
        flex-wrap: wrap !important;
        justify-content: center !important;
    }

    .cv-flow-5 .cv-flow-step {
        flex: 0 0 calc(33.333% - 6px);
    }

    .cv-page-hero .cv-hero-actions,
    .cv-page-hero .cv-hero-actions > .elementor-element {
        width: 100% !important;
    }
}


/* ---------- Flecha de las tarjetas (igual a la del Home) ---------- */
.cv-srv-need::after,
.cv-srv-card-link .elementor-heading-title::after {
    content: "";
    flex: 0 0 auto;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: rgba(49, 92, 255, 0.1) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6h8M6.5 2.5L10 6l-3.5 3.5' fill='none' stroke='%23315cff' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 50% 50% / 14px no-repeat;
    transition: background-color 0.35s ease, box-shadow 0.35s ease, transform 0.35s ease;
    animation: cv-srv-nudge 3.2s ease-in-out infinite;
}

/* Anillo que late alrededor de la flecha */
.cv-srv-need::before,
.cv-srv-card-link .elementor-heading-title::before {
    content: "";
    position: absolute;
    top: 50%;
    right: 20px;
    width: 40px;
    height: 40px;
    margin-top: -20px;
    border: 1.5px solid rgba(49, 92, 255, 0.45);
    border-radius: 50%;
    opacity: 0;
    pointer-events: none;
}

.cv-srv-card-link .elementor-heading-title::before {
    right: 0;
}

.cv-srv-need:hover::after,
.cv-srv-need:focus-visible::after,
.cv-srv-card:hover .cv-srv-card-link .elementor-heading-title::after,
.cv-srv-card:focus-visible .cv-srv-card-link .elementor-heading-title::after {
    background-color: #315cff;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6h8M6.5 2.5L10 6l-3.5 3.5' fill='none' stroke='%23ffffff' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    box-shadow: 0 10px 26px rgba(49, 92, 255, 0.35);
    transform: rotate(-45deg);
    animation: cv-srv-zip 0.55s cubic-bezier(0.65, 0, 0.35, 1);
}

.cv-srv-need:hover::before,
.cv-srv-need:focus-visible::before,
.cv-srv-card:hover .cv-srv-card-link .elementor-heading-title::before,
.cv-srv-card:focus-visible .cv-srv-card-link .elementor-heading-title::before {
    transform: rotate(-45deg);
    animation: cv-srv-ring 1.2s ease-out infinite;
}

@keyframes cv-srv-nudge {
    0%, 70%, 100% { background-position: 50% 50%; }
    78% { background-position: calc(50% + 5px) 50%; }
    86% { background-position: calc(50% - 1px) 50%; }
    92% { background-position: calc(50% + 2px) 50%; }
}

@keyframes cv-srv-zip {
    0% { background-position: 50% 50%; }
    45% { background-position: calc(50% + 32px) 50%; }
    46% { background-position: calc(50% - 32px) 50%; }
    100% { background-position: 50% 50%; }
}

@keyframes cv-srv-ring {
    0% { transform: scale(1); opacity: 0.8; }
    100% { transform: scale(1.5); opacity: 0; }
}

/* Tarjetas: misma base y mismo hover que la escalera del Home */
.cv-srv-need,
.cv-srv-card {
    position: relative;
    border-radius: 20px !important;
    background: #f8f7f4;
    box-shadow: 0 0 10px rgba(2, 20, 255, 0.05);
    color: inherit;
    text-decoration: none !important;
    transition: background-color 0.45s ease, box-shadow 0.45s ease !important;
}

.cv-srv-need:hover,
.cv-srv-need:focus-visible,
.cv-srv-card:hover,
.cv-srv-card:focus-visible {
    background: #ffffff;
    box-shadow: 0 18px 40px rgba(8, 9, 12, 0.08);
    outline: none;
}

.cv-srv-need:focus-visible,
.cv-srv-card:focus-visible {
    box-shadow: 0 0 0 2px #315cff, 0 18px 40px rgba(8, 9, 12, 0.08);
}

.cv-srv-need-num .elementor-heading-title,
.cv-srv-card-num .elementor-heading-title {
    color: #315cff !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.04em !important;
    line-height: 1 !important;
    transition: color 0.35s ease;
}

.cv-srv-need:hover .cv-srv-need-num .elementor-heading-title,
.cv-srv-card:hover .cv-srv-card-num .elementor-heading-title {
    color: #08090c !important;
}

@media (hover: none) {
    .cv-srv-need::after,
    .cv-srv-card-link .elementor-heading-title::after {
        background-color: #315cff;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6h8M6.5 2.5L10 6l-3.5 3.5' fill='none' stroke='%23ffffff' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    }
}


/* ---------- Servicios — Elija por necesidad ---------- */
.cv-srv-needs {
    display: grid !important;
    grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
    gap: 72px !important;
    align-items: start;
}

.cv-srv-needs-head {
    position: sticky;
    top: 120px;
    align-self: start;
    gap: 0 !important;
    --widgets-spacing: 0px;
}

.cv-srv-needs-head > .elementor-element {
    margin-bottom: 0 !important;
}

.cv-srv-needs-list {
    gap: 10px !important;
    --widgets-spacing: 0px;
}

.cv-srv-need {
    display: grid !important;
    grid-template-columns: 34px minmax(0, 1fr) minmax(0, 190px) 40px;
    align-items: center;
    column-gap: 20px !important;
    row-gap: 4px !important;
    padding: 20px 20px 20px 24px !important;
}

.cv-srv-need > .elementor-element {
    width: auto !important;
    max-width: none !important;
    margin: 0 !important;
}

.cv-srv-need-text .elementor-heading-title {
    margin: 0 !important;
    color: #08090c !important;
    font-size: clamp(18px, 1.45vw, 21px) !important;
    font-weight: 800 !important;
    line-height: 1.15 !important;
    letter-spacing: -0.03em !important;
}

.cv-srv-need-service .elementor-heading-title {
    color: #315cff !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    line-height: 1.3 !important;
    letter-spacing: -0.005em !important;
    text-align: right;
}

/* Tarjeta oscura "¿No sabe por dónde empezar?" */
.cv-srv-help {
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    margin-top: 18px !important;
    padding: 24px 28px !important;
    border-radius: 20px !important;
    background: linear-gradient(135deg, #08090c 0%, #0f1530 55%, #1c3aa8 140%) !important;
    overflow: hidden;
    --widgets-spacing: 0px;
}

.cv-srv-help > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

.cv-srv-help-title .elementor-heading-title {
    margin: 0 !important;
    color: #ffffff !important;
    font-size: 24px !important;
    font-weight: 800 !important;
    line-height: 1.15 !important;
    letter-spacing: -0.03em !important;
}

@media (max-width: 1024px) {
    .cv-srv-needs {
        grid-template-columns: 1fr;
        gap: 40px !important;
    }

    .cv-srv-needs-head {
        position: relative !important;
        top: auto !important;
    }
}

@media (max-width: 767px) {
    .cv-srv-needs {
        gap: 28px !important;
    }

    .cv-srv-need {
        grid-template-columns: 24px minmax(0, 1fr) 36px;
        column-gap: 12px !important;
        row-gap: 6px !important;
        padding: 18px 16px !important;
    }

    .cv-srv-need-num {
        grid-column: 1;
        grid-row: 1;
        align-self: start;
        padding-top: 5px;
    }

    .cv-srv-need-text {
        grid-column: 2;
        grid-row: 1;
    }

    .cv-srv-need-service {
        grid-column: 2;
        grid-row: 2;
    }

    .cv-srv-need-service .elementor-heading-title {
        text-align: left;
    }

    .cv-srv-need::after {
        grid-column: 3;
        grid-row: 1 / span 2;
        width: 36px;
        height: 36px;
    }

    .cv-srv-need::before {
        right: 16px;
        width: 36px;
        height: 36px;
        margin-top: -18px;
    }

    .cv-srv-help-title .elementor-heading-title {
        font-size: 21px !important;
    }

    .cv-srv-help {
        flex-direction: column !important;
        align-items: flex-start !important;
        gap: 16px !important;
        padding: 22px 20px !important;
    }

    .cv-srv-help > .elementor-widget-button,
    .cv-srv-help > .elementor-widget-button .elementor-button {
        width: 100% !important;
    }
}


/* ---------- Servicios — Siete capacidades ---------- */
.cv-srv-grid {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px !important;
}

.cv-srv-grid > .e-con {
    width: auto !important;
}

.cv-srv-card,
.cv-srv-card-cta {
    display: flex !important;
    flex-direction: column !important;
    gap: 0 !important;
    --widgets-spacing: 0px;
    min-height: 270px;
    padding: 24px !important;
}

.cv-srv-card > .elementor-element,
.cv-srv-card-cta > .elementor-element {
    margin-bottom: 0 !important;
}

.cv-srv-card-title .elementor-heading-title {
    margin: 22px 0 0 !important;
    color: #08090c !important;
    font-size: 22px !important;
    font-weight: 800 !important;
    line-height: 1.15 !important;
    letter-spacing: -0.03em !important;
}

.cv-srv-card-desc p {
    margin: 12px 0 0 !important;
    color: var(--cv-p-on-light) !important;
    font-size: 15px !important;
    font-weight: 400 !important;
    line-height: 1.55 !important;
    letter-spacing: -0.005em !important;
}

.cv-srv-card .cv-srv-card-link {
    margin-top: auto !important;
    padding-top: 22px;
}

.cv-srv-card-link .elementor-heading-title {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    color: #08090c !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
}

/* 8.ª celda oscura: "¿Cómo se combinan?" */
.cv-srv-card-cta {
    border-radius: 20px !important;
    background: linear-gradient(135deg, #08090c 0%, #0f1530 55%, #1c3aa8 140%) !important;
    overflow: hidden;
}

.cv-srv-card-cta .cv-srv-card-title .elementor-heading-title {
    margin-top: 0 !important;
    color: #ffffff !important;
}

.cv-srv-card-cta .cv-srv-card-desc p {
    color: var(--cv-p-on-dark) !important;
}

.cv-srv-card-cta .cv-btn-link-dark {
    width: auto !important;
    margin-top: auto !important;
    padding-top: 18px;
}

/* Sin la 8.ª celda, la 7.ª tarjeta ocupa el espacio libre */
.cv-srv-grid > .cv-srv-card:nth-child(7):last-child {
    grid-column: span 2;
}

/* Glow del mouse: solo en las superficies oscuras */
.cv-srv-help .cv-glow-layer,
.cv-srv-card-cta .cv-glow-layer {
    mix-blend-mode: screen;
    background: radial-gradient(360px circle at var(--gx, 50%) var(--gy, 50%), rgba(49, 92, 255, 0.45), rgba(49, 92, 255, 0.08) 45%, transparent 70%);
}

.cv-srv-help > .elementor-element,
.cv-srv-card-cta > .elementor-element {
    position: relative;
    z-index: 5;
}

@media (max-width: 1024px) {
    .cv-srv-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .cv-srv-grid > .cv-srv-card:nth-child(7):last-child {
        grid-column: auto;
    }
}

@media (max-width: 767px) {
    .cv-srv-grid {
        grid-template-columns: 1fr;
        gap: 10px !important;
    }

    .cv-srv-card,
    .cv-srv-card-cta {
        min-height: 0;
        padding: 20px !important;
    }

    .cv-srv-card-title .elementor-heading-title {
        margin-top: 16px !important;
        font-size: 20px !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-srv-need::after,
    .cv-srv-need::before,
    .cv-srv-card-link .elementor-heading-title::after,
    .cv-srv-card-link .elementor-heading-title::before {
        animation: none !important;
        transition: none !important;
    }
}


/* ---------- Servicios — capacidades dentro de cada tarjeta ---------- */
.cv-srv-card-list ul {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 16px 0 0 !important;
    padding: 0 !important;
    list-style: none;
}

.cv-srv-card-list li {
    padding: 5px 10px;
    border: 1px solid rgba(49, 92, 255, 0.18);
    border-radius: 999px;
    background: #ffffff;
    color: #3c414b;
    font-size: 12.5px;
    font-weight: 600;
    line-height: 1.25;
    transition: border-color 0.35s ease;
}


/* ---------- Servicios — Preguntas frecuentes (acordeón cv-faq) ---------- */
.cv-srv-faq {
    display: grid !important;
    grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
    gap: 72px !important;
    align-items: start;
}

.cv-srv-faq-head {
    position: sticky;
    top: 120px;
    align-self: start;
    gap: 0 !important;
    --widgets-spacing: 0px;
}

.cv-srv-faq-head > .elementor-element {
    margin-bottom: 0 !important;
}

.cv-srv-faq-list,
.cv-srv-faq > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

.cv-srv-faq-list .elementor-accordion {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.cv-srv-faq-list .elementor-accordion-item {
    border: 0 !important;
    border-radius: 20px;
    background: #f8f7f4;
    box-shadow: 0 0 10px rgba(2, 20, 255, 0.05);
    overflow: hidden;
    transition: background-color 0.45s ease, box-shadow 0.45s ease;
}

.cv-srv-faq-list .elementor-accordion-item:hover,
.cv-srv-faq-list .elementor-accordion-item:has(.elementor-active) {
    background: #ffffff;
    box-shadow: 0 18px 40px rgba(8, 9, 12, 0.08);
}

.cv-srv-faq-list .elementor-tab-title {
    position: relative;
    display: flex !important;
    align-items: center;
    gap: 16px;
    margin: 0 !important;
    padding: 20px 76px 20px 24px !important;
    border: 0 !important;
    cursor: pointer;
}

/* El ícono de Elementor se reemplaza por el círculo con + / − */
.cv-srv-faq-list .elementor-accordion-icon {
    display: none !important;
}

.cv-srv-faq-list .elementor-accordion-title {
    color: #08090c !important;
    font-family: "Plus Jakarta Sans", sans-serif !important;
    font-size: clamp(17px, 1.35vw, 19px) !important;
    font-weight: 800 !important;
    line-height: 1.18 !important;
    letter-spacing: -0.025em !important;
    text-decoration: none !important;
    transition: color 0.3s ease;
}

.cv-srv-faq-list .elementor-tab-title.elementor-active .elementor-accordion-title {
    color: #315cff !important;
}

.cv-srv-faq-list .elementor-tab-title::after {
    content: "";
    position: absolute;
    top: 50%;
    right: 20px;
    width: 36px;
    height: 36px;
    margin-top: -18px;
    border-radius: 50%;
    background:
        linear-gradient(#315cff, #315cff) center / 12px 1.6px no-repeat,
        linear-gradient(#315cff, #315cff) center / 1.6px 12px no-repeat,
        rgba(49, 92, 255, 0.1);
    transition: transform 0.4s var(--cv-ease), background-color 0.35s ease;
}

.cv-srv-faq-list .elementor-tab-title.elementor-active::after {
    transform: rotate(45deg);
    background:
        linear-gradient(#ffffff, #ffffff) center / 12px 1.6px no-repeat,
        linear-gradient(#ffffff, #ffffff) center / 1.6px 12px no-repeat,
        #315cff;
    box-shadow: 0 10px 26px rgba(49, 92, 255, 0.35);
}

.cv-srv-faq-list .elementor-tab-content {
    padding: 0 76px 22px 24px !important;
    border: 0 !important;
}

.cv-srv-faq-list .elementor-tab-content p {
    margin: 0 !important;
    color: var(--cv-p-on-light) !important;
    font-size: var(--cv-p-size) !important;
    font-weight: 400 !important;
    line-height: var(--cv-p-lh) !important;
}

@media (max-width: 1024px) {
    .cv-srv-faq {
        grid-template-columns: 1fr;
        gap: 40px !important;
    }

    .cv-srv-faq-head {
        position: relative !important;
        top: auto !important;
    }
}

@media (max-width: 767px) {
    .cv-srv-faq {
        gap: 28px !important;
    }

    .cv-srv-faq-list .elementor-tab-title {
        padding: 18px 64px 18px 18px !important;
    }

    .cv-srv-faq-list .elementor-tab-title::after {
        right: 16px;
        width: 34px;
        height: 34px;
        margin-top: -17px;
    }

    .cv-srv-faq-list .elementor-tab-content {
        padding: 0 18px 20px !important;
    }
}


/* #########################################################
   40. IMÁGENES CON VIDA (v3.5)
   Clase cv-float-media en el widget Imagen (Avanzado → Clases
   CSS). El JS hace la entrada, el parallax y la inclinación
   hacia el mouse; aquí van la flotación y la sombra de luz.
   ######################################################### */

.cv-float-media {
    position: relative;
    z-index: 1;
}

.cv-float-media .cv-float-inner {
    display: block;
    will-change: transform;
}

.cv-float-media .cv-float-inner.is-floating {
    animation: cv-float-y 6.5s ease-in-out infinite;
    animation-delay: var(--cv-float-delay, 0s);
}

@keyframes cv-float-y {
    0%, 100% { transform: translate3d(0, 0, 0) rotate(0deg); }
    50% { transform: translate3d(0, -14px, 0) rotate(-0.8deg); }
}

.cv-float-media img {
    display: block;
    will-change: transform;
    filter: drop-shadow(0 28px 34px rgba(8, 9, 12, 0.14)) drop-shadow(0 10px 30px rgba(49, 92, 255, 0.18));
}

/* En la tarjeta oscura la luz es azul y un poco más intensa */
.cv-srv-card-cta .cv-float-media img {
    filter: drop-shadow(0 24px 40px rgba(49, 92, 255, 0.4));
}

/* La imagen de la tarjeta oscura crece un poco con el hover */
.cv-srv-card-cta .cv-float-media .cv-float-inner {
    transition: scale 0.6s var(--cv-ease);
}

.cv-srv-card-cta:hover .cv-float-media .cv-float-inner {
    scale: 1.06;
}

/* Las imágenes de las cabeceras sticky dejan de ser sticky en tablet y móvil */
@media (max-width: 1024px) {
    .cv-srv-needs-head .cv-float-media,
    .cv-srv-faq-head .cv-float-media {
        max-width: 420px;
        margin-left: auto !important;
        margin-right: auto !important;
    }
}

@media (max-width: 767px) {
    .cv-float-media .cv-float-inner.is-floating {
        animation-duration: 7.5s;
    }

    @keyframes cv-float-y {
        0%, 100% { transform: translate3d(0, 0, 0); }
        50% { transform: translate3d(0, -8px, 0); }
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-float-media .cv-float-inner,
    .cv-float-media .cv-float-inner.is-floating {
        animation: none !important;
        transition: none !important;
    }
}

/* Cabeceras sticky con imagen: la imagen no las hace más altas que la pantalla */
@media (min-width: 1025px) {
    .cv-srv-needs-head .cv-float-media,
    .cv-srv-faq-head .cv-float-media {
        max-width: 380px;
        margin-top: 28px !important;
    }
}

@media (min-width: 1025px) and (max-height: 860px) {
    .cv-srv-needs-head:has(.cv-float-media),
    .cv-srv-faq-head:has(.cv-float-media) {
        position: relative !important;
        top: auto !important;
    }
}


/* #########################################################
   41. PÁGINAS DE SERVICIO (v3.8)
   Plantilla maestra de las 7 páginas de servicio. Tiene su
   propio lenguaje para no repetir las páginas principales:
   · Hero: texto a la izquierda y "mapa" a la derecha (los
     canales se conectan con la hoja de ruta; el JS dibuja las
     líneas y los pulsos). cv-svc-hero, cv-svc-hero-grid,
     cv-svc-hero-copy, cv-svc-crumb, cv-hero-note, cv-svc-map,
     cv-svc-map-label, cv-svc-map-sources, cv-svc-map-chip,
     cv-svc-map-wires, cv-svc-map-target (contenedor con
     cv-svc-map-target-title y cv-svc-map-steps),
     cv-svc-map-step.
   · Dolores en zigzag: cv-svc-pains, cv-svc-pain,
     cv-svc-pain-num, cv-svc-pain-body, cv-svc-pain-title,
     cv-svc-pain-text, cv-svc-pain-icon. Frase grande que se
     ilumina: cv-svc-statement (+ cv-scroll-highlight).
   · Análisis en azul con escáner (tarjetas redondeadas; el
     mouse toma el control): cv-svc-scan-section,
     cv-svc-scan, cv-svc-scan-cell, cv-svc-scan-icon,
     cv-svc-scan-num, cv-svc-scan-title, cv-svc-scan-text,
     cv-svc-scan-q.
   · Entregables: texto + panel a un lado, imagen al otro:
     cv-svc-delivs,
     cv-svc-deliv, cv-svc-deliv-copy, cv-svc-deliv-num,
     cv-svc-deliv-title, cv-svc-deliv-text, cv-svc-deliv-chips,
     cv-svc-deliv-media, cv-svc-mock (--check, --matrix,
     --road), cv-svc-mock-label, cv-svc-mock-item,
     cv-svc-mock-key, cv-svc-mock-grid, cv-svc-mock-road,
     cv-svc-mock-tag, cv-svc-mock-text. CTA intermedio:
     cv-srv-help + cv-svc-help, cv-svc-help-copy,
     cv-svc-help-text.
   · Metodología con el ciclo del Home en 3 pasos:
     cv-svc-method-section, cv-cycle + cv-svc-cycle.
     Resultado: cv-svc-outcome, cv-svc-outcome-body,
     cv-svc-outcome-chips.
   · Caso sin imagen: cv-svc-case, cv-svc-case-head,
     cv-svc-case-copy, cv-svc-chain-label,
     cv-svc-chain, cv-svc-chain-chip, cv-svc-kpis, cv-svc-kpi,
     cv-svc-kpi-value (+ cv-count), cv-svc-kpi-label,
     cv-svc-head-cta. Las cifras van en tres tarjetas abajo.
   · Otros servicios en carrusel arrastrable: cv-svc-rail
     (con cv-srv-card).
   · Cierre alineado a la izquierda con red animada:
     cv-svc-final.
   Hovers de tarjetas: los mismos de la escalera del Home.
   Glow del mouse: solo en el mapa del hero, el ciclo y la
   tarjeta oscura del CTA intermedio.
   ######################################################### */

/* ---------- Base ---------- */
.cv-svc-section .cv-sec-head-row > .e-con {
    flex: 1 1 0 !important;
    max-width: 780px;
}

/* =========================================================
   HERO DE SERVICIO
   ========================================================= */
.cv-svc-hero {
    background:
        radial-gradient(70% 80% at 88% 32%, rgba(49, 92, 255, 0.3), transparent 62%),
        linear-gradient(135deg, #08090c 0%, #0b1029 60%, #14267a 135%) !important;
}

.cv-svc-hero > .e-con-inner {
    align-items: stretch !important;
}

.cv-svc-hero-grid {
    display: grid !important;
    grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
    gap: 64px !important;
    align-items: center;
}

.cv-svc-hero-grid > .e-con {
    width: auto !important;
}

.cv-svc-hero-copy {
    align-items: flex-start !important;
    gap: 0 !important;
    --widgets-spacing: 0px;
    text-align: left;
}

.cv-svc-hero-copy > .elementor-element {
    margin-bottom: 0 !important;
}

.cv-svc-crumb .elementor-heading-title {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 18px !important;
    color: rgba(248, 247, 244, 0.55) !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    line-height: 1.3 !important;
}

.cv-svc-crumb a {
    color: rgba(248, 247, 244, 0.78) !important;
    text-decoration: none !important;
    transition: color 0.3s ease;
}

.cv-svc-crumb a:hover {
    color: #c8ff36 !important;
}

.cv-svc-crumb span {
    opacity: 0.4;
}

.cv-svc-hero .cv-hero-badge,
.cv-svc-hero .cv-hero-actions,
.cv-svc-hero .cv-hero-actions > .elementor-element {
    width: auto !important;
}

.cv-svc-hero .cv-hero-title {
    width: 100% !important;
}

.cv-svc-hero .cv-hero-title .elementor-heading-title {
    margin-top: 20px !important;
    color: #ffffff !important;
    font-size: clamp(32px, 3.4vw, 50px) !important;
    line-height: 1.02 !important;
    letter-spacing: -0.045em !important;
    text-align: left;
    text-wrap: balance;
}

.cv-svc-hero .cv-hero-copy,
.cv-svc-hero .cv-hero-copy .elementor-widget-container {
    width: 100% !important;
    max-width: 560px !important;
}

.cv-svc-hero .cv-hero-copy p {
    margin: 18px 0 0 !important;
    text-align: left;
}

.cv-svc-hero .cv-hero-actions {
    flex-wrap: wrap !important;
    justify-content: flex-start !important;
    margin-top: 30px !important;
}

.cv-svc-hero .cv-hero-note .elementor-heading-title {
    max-width: 440px;
    margin-top: 18px !important;
    color: rgba(248, 247, 244, 0.5) !important;
    font-size: 13px !important;
    font-weight: 400 !important;
    line-height: 1.5 !important;
}

/* ---------- Mapa: canales → hoja de ruta ---------- */
.cv-svc-map {
    position: relative;
    gap: 0 !important;
    --widgets-spacing: 0px;
    padding: 28px !important;
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 26px !important;
    background:
        radial-gradient(90% 120% at 0% 0%, rgba(49, 92, 255, 0.2), transparent 60%),
        rgba(255, 255, 255, 0.03);
    -webkit-backdrop-filter: blur(6px);
    backdrop-filter: blur(6px);
    overflow: hidden;
    will-change: transform;
}

.cv-svc-map > .elementor-element {
    position: relative;
    z-index: 3;
    margin: 0 !important;
}

.cv-svc-map-label .elementor-heading-title {
    color: rgba(248, 247, 244, 0.55) !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    letter-spacing: 0.12em !important;
    text-transform: uppercase;
    text-align: center;
    line-height: 1.3 !important;
}

.cv-svc-map-sources {
    flex-wrap: wrap !important;
    justify-content: center !important;
    gap: 8px !important;
    margin-top: 20px !important;
}

.cv-svc-map-sources > .elementor-element,
.cv-svc-map-steps > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

.cv-svc-map-chip .elementor-heading-title {
    padding: 8px 14px;
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 999px;
    background: rgba(8, 9, 12, 0.6);
    color: #f8f7f4 !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    line-height: 1.2 !important;
    white-space: nowrap;
    transition: border-color 0.35s ease, color 0.35s ease, box-shadow 0.35s ease;
}

.cv-svc-map-chip.is-on .elementor-heading-title {
    border-color: rgba(200, 255, 54, 0.65);
    color: #c8ff36 !important;
    box-shadow: 0 0 18px rgba(200, 255, 54, 0.2);
}

.cv-svc-map-wires {
    min-height: 120px;
}

/* Meta: tarjeta con el título y los tres pasos adentro */
.cv-svc-map-target {
    align-items: center !important;
    gap: 14px !important;
    --widgets-spacing: 0px;
    padding: 20px 18px 18px !important;
    border: 1px solid rgba(200, 255, 54, 0.4);
    border-radius: 18px !important;
    background: rgba(200, 255, 54, 0.05);
}

.cv-svc-map-target > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

.cv-svc-map-target.is-hit {
    animation: cv-svc-hit 0.9s ease-out;
}

@keyframes cv-svc-hit {
    0% { box-shadow: 0 0 0 0 rgba(200, 255, 54, 0.4); background-color: rgba(200, 255, 54, 0.12); }
    100% { box-shadow: 0 0 0 10px rgba(200, 255, 54, 0); background-color: rgba(200, 255, 54, 0.05); }
}

.cv-svc-map-target-title .elementor-heading-title {
    color: #c8ff36 !important;
    font-size: 13px !important;
    font-weight: 800 !important;
    letter-spacing: 0.14em !important;
    text-transform: uppercase;
    text-align: center;
    line-height: 1.2 !important;
}

.cv-svc-map-steps {
    flex-wrap: wrap !important;
    justify-content: center !important;
    gap: 0 !important;
}

.cv-svc-map-step .elementor-heading-title {
    color: rgba(248, 247, 244, 0.45) !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    line-height: 1.3 !important;
    transition: color 0.4s ease;
}

.cv-svc-map-step + .cv-svc-map-step .elementor-heading-title::before {
    content: "→";
    margin: 0 12px;
    color: rgba(248, 247, 244, 0.3);
}

.cv-svc-map-step.is-active .elementor-heading-title {
    color: #ffffff !important;
}

/* Capa que dibuja el JS */
.cv-svc-map-svg {
    position: absolute;
    inset: 0;
    z-index: 2;
    width: 100%;
    height: 100%;
    overflow: visible;
    pointer-events: none;
}

.cv-svc-map-wire {
    fill: none;
    stroke: rgba(49, 92, 255, 0.8);
    stroke-width: 1.2;
}

.cv-svc-map-pulse {
    fill: #c8ff36;
    opacity: 0;
    filter: drop-shadow(0 0 6px rgba(200, 255, 54, 0.85));
}

.cv-svc-map .cv-glow-layer {
    mix-blend-mode: screen;
    background: radial-gradient(360px circle at var(--gx, 50%) var(--gy, 50%), rgba(49, 92, 255, 0.4), rgba(49, 92, 255, 0.08) 45%, transparent 70%);
}

/* =========================================================
   DOLORES EN ZIGZAG
   ========================================================= */
.cv-svc-pains {
    gap: 6px !important;
    --widgets-spacing: 0px;
    /* El texto de las filas queda alineado con el título de la sección */
    width: auto !important;
    margin-left: -28px !important;
    margin-right: -28px !important;
}

.cv-svc-pain {
    --svc-line: 1;
    position: relative;
    display: grid !important;
    grid-template-columns: 110px minmax(0, 1fr) 76px;
    align-items: center;
    column-gap: 32px !important;
    padding: 34px 28px !important;
    border-radius: 22px !important;
    background: transparent;
    transition: background-color 0.45s ease, box-shadow 0.45s ease !important;
}

.cv-svc-pain > .elementor-element {
    width: auto !important;
    max-width: none !important;
    margin: 0 !important;
}

/* Línea que se dibuja al entrar (azul plano sobre claro) */
.cv-svc-pain::before {
    content: "";
    position: absolute;
    top: 0;
    left: 28px;
    right: 28px;
    height: 1px;
    background: #315cff;
    opacity: 0.3;
    transform: scaleX(var(--svc-line));
    transform-origin: left center;
}

.cv-svc-pain:nth-child(even)::before {
    transform-origin: right center;
}

/* Filas pares: ícono a la izquierda y número a la derecha */
.cv-svc-pain:nth-child(even) {
    grid-template-columns: 76px minmax(0, 1fr) 110px;
}

.cv-svc-pain:nth-child(even) .cv-svc-pain-icon {
    grid-column: 1;
    grid-row: 1;
}

.cv-svc-pain:nth-child(even) .cv-svc-pain-body {
    grid-column: 2;
    grid-row: 1;
}

.cv-svc-pain:nth-child(even) .cv-svc-pain-num {
    grid-column: 3;
    grid-row: 1;
    text-align: right;
}

.cv-svc-pain-num .elementor-heading-title {
    color: rgba(8, 9, 12, 0.14) !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: clamp(40px, 4vw, 60px) !important;
    font-weight: 500 !important;
    letter-spacing: -0.04em !important;
    line-height: 1 !important;
    transition: color 0.8s var(--cv-ease);
}

.cv-svc-pain.is-in .cv-svc-pain-num .elementor-heading-title,
.cv-svc-pain:hover .cv-svc-pain-num .elementor-heading-title {
    color: #315cff !important;
}

.cv-svc-pain-body {
    gap: 0 !important;
    --widgets-spacing: 0px;
}

.cv-svc-pain-body > .elementor-element {
    margin: 0 !important;
}

.cv-svc-pain-title .elementor-heading-title {
    margin: 0 !important;
    color: #08090c !important;
    font-size: clamp(21px, 1.9vw, 28px) !important;
    font-weight: 800 !important;
    line-height: 1.12 !important;
    letter-spacing: -0.035em !important;
}

.cv-svc-pain-text p {
    max-width: 62ch;
    margin: 10px 0 0 !important;
    color: var(--cv-p-on-light) !important;
    font-size: 16px !important;
    line-height: 1.55 !important;
}

.cv-svc-pain-icon .elementor-icon-wrapper {
    display: flex;
    justify-content: center;
}

.cv-svc-pain-icon .elementor-icon {
    display: flex !important;
    align-items: center;
    justify-content: center;
    width: 72px;
    height: 72px;
    border-radius: 50%;
    background: rgba(49, 92, 255, 0.08);
    color: #315cff !important;
    fill: #315cff !important;
    font-size: 26px !important;
    transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1), background-color 0.35s ease, color 0.35s ease, box-shadow 0.35s ease;
}

.cv-svc-pain-icon .elementor-icon svg {
    width: 26px;
    height: 26px;
    fill: currentColor;
}

.cv-svc-pain:hover {
    background: #f8f7f4;
    box-shadow: 0 18px 40px rgba(8, 9, 12, 0.06);
}

.cv-svc-pain:hover .cv-svc-pain-icon .elementor-icon {
    background: #315cff;
    color: #ffffff !important;
    fill: #ffffff !important;
    box-shadow: 0 10px 26px rgba(49, 92, 255, 0.35);
    transform: rotate(-8deg) scale(1.06);
}

/* Frase grande que se ilumina con el scroll */
.cv-svc-statement {
    max-width: 1000px;
    margin-top: 80px !important;
}

.cv-svc-statement p {
    margin: 0 !important;
    color: #3c414b;
    font-size: clamp(24px, 2.6vw, 40px) !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: -0.03em !important;
}

/* =========================================================
   ANÁLISIS EN AZUL
   ========================================================= */
.cv-svc-scan-section .cv-eyebrow .elementor-heading-title {
    border-color: rgba(255, 255, 255, 0.35);
    background: rgba(255, 255, 255, 0.1);
    color: #ffffff !important;
}

.cv-svc-scan-section .cv-h2 .elementor-heading-title {
    color: #ffffff !important;
}

.cv-svc-scan-section .cv-sec-lead,
.cv-svc-scan-section .cv-sec-lead p {
    color: rgba(255, 255, 255, 0.88) !important;
}

.cv-svc-scan {
    position: relative;
    display: grid !important;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 14px !important;
}

.cv-svc-scan-cell {
    position: relative;
    gap: 0 !important;
    --widgets-spacing: 0px;
    padding: 30px 24px 28px !important;
    border: 1px solid rgba(255, 255, 255, 0.22);
    border-radius: 22px !important;
    background: rgba(255, 255, 255, 0.06);
    cursor: default;
    transition: background-color 0.5s ease, border-color 0.5s ease, box-shadow 0.5s ease, transform 0.5s var(--cv-ease) !important;
}

/* Marca superior de la tarjeta activa (dentro del borde redondeado) */
.cv-svc-scan-cell::before {
    content: "";
    position: absolute;
    top: 0;
    left: 24px;
    width: 44px;
    height: 3px;
    border-radius: 0 0 3px 3px;
    background: #315cff;
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 0.6s var(--cv-ease);
}

.cv-svc-scan-cell.is-lit::before {
    transform: scaleX(1);
}

.cv-svc-scan-cell > .elementor-element {
    margin: 0 !important;
}

.cv-svc-scan-icon .elementor-icon-wrapper {
    text-align: left !important;
    line-height: 0;
}

.cv-svc-scan-cell .cv-svc-scan-icon .elementor-icon {
    color: #ffffff !important;
    fill: #ffffff !important;
    font-size: 26px !important;
    transform-origin: 0 50%;
    transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1), color 0.4s ease;
}

.cv-svc-scan-icon .elementor-icon svg,
.cv-svc-scan-icon .elementor-icon i {
    width: 26px;
    height: 26px;
    color: inherit !important;
    fill: currentColor !important;
}

.cv-svc-scan-num .elementor-heading-title {
    margin-top: 22px !important;
    color: rgba(255, 255, 255, 0.7) !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.04em !important;
    line-height: 1 !important;
    transition: color 0.4s ease;
}

.cv-svc-scan-title .elementor-heading-title {
    margin-top: 10px !important;
    color: #ffffff !important;
    font-size: 22px !important;
    font-weight: 800 !important;
    line-height: 1.15 !important;
    letter-spacing: -0.03em !important;
    transition: color 0.4s ease;
}

.cv-svc-scan-text p {
    margin: 8px 0 0 !important;
    color: rgba(255, 255, 255, 0.82) !important;
    font-size: 14.5px !important;
    line-height: 1.5 !important;
    transition: color 0.4s ease;
}

.cv-svc-scan-q .elementor-heading-title {
    margin-top: 18px !important;
    padding-top: 14px;
    border-top: 1px solid rgba(255, 255, 255, 0.24);
    color: #ffffff !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    line-height: 1.35 !important;
    transition: color 0.4s ease, border-color 0.4s ease;
}

/* Las preguntas quedan alineadas abajo aunque los textos midan distinto */
.cv-svc-scan-cell > .cv-svc-scan-q {
    margin-top: auto !important;
}

/* Tarjeta activa: blanca y elevada. El JS la mueve con el escáner o con el mouse,
   así nunca hay dos tarjetas activas a la vez */
.cv-svc-scan-cell.is-lit {
    z-index: 2;
    border-color: #ffffff;
    background: #ffffff;
    box-shadow: 0 26px 54px rgba(8, 9, 12, 0.22);
    transform: translateY(-8px);
}

.cv-svc-scan-cell.is-lit .cv-svc-scan-icon .elementor-icon {
    color: #315cff !important;
    fill: #315cff !important;
    transform: scale(1.12);
}

.cv-svc-scan-cell.is-lit .cv-svc-scan-num .elementor-heading-title {
    color: #315cff !important;
}

.cv-svc-scan-cell.is-lit .cv-svc-scan-title .elementor-heading-title,
.cv-svc-scan-cell.is-lit .cv-svc-scan-q .elementor-heading-title {
    color: #08090c !important;
}

.cv-svc-scan-cell.is-lit .cv-svc-scan-q .elementor-heading-title {
    border-color: rgba(49, 92, 255, 0.22);
}

.cv-svc-scan-cell.is-lit .cv-svc-scan-text p {
    color: #3c414b !important;
}

/* =========================================================
   ENTREGABLES
   ========================================================= */
.cv-svc-delivs {
    gap: 40px !important;
    --widgets-spacing: 0px;
}

.cv-svc-deliv {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 56px !important;
    align-items: center;
}

.cv-svc-deliv > .e-con {
    width: auto !important;
}

.cv-svc-deliv:nth-child(even) .cv-svc-deliv-copy {
    order: 2;
}

.cv-svc-deliv-copy {
    align-items: flex-start !important;
    gap: 0 !important;
    --widgets-spacing: 0px;
}

.cv-svc-deliv-copy > .elementor-element {
    margin: 0 !important;
}

/* Número pequeño, como en el resto del sitio */
.cv-svc-deliv-num .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    border: 1px solid rgba(49, 92, 255, 0.22);
    border-radius: 999px;
    background: #ffffff;
    color: #315cff !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.06em !important;
    text-transform: uppercase;
    line-height: 1.2 !important;
}

.cv-svc-deliv-title .elementor-heading-title {
    margin-top: 18px !important;
    color: #08090c !important;
    font-size: clamp(26px, 2.4vw, 36px) !important;
    font-weight: 800 !important;
    line-height: 1.08 !important;
    letter-spacing: -0.04em !important;
}

.cv-svc-deliv-text p {
    max-width: 46ch;
    margin: 12px 0 0 !important;
    color: var(--cv-p-on-light) !important;
    font-size: 17px !important;
    line-height: 1.55 !important;
}

.cv-svc-deliv-chips ul {
    margin-top: 20px !important;
}

.cv-svc-deliv-chips li {
    padding: 8px 14px;
    font-size: 13.5px;
}

.cv-svc-deliv-media {
    position: relative;
    align-items: center !important;
}

.cv-svc-deliv-media .cv-float-media {
    width: 100% !important;
    max-width: 440px !important;
    margin: 0 auto !important;
}

/* Ilustraciones de los entregables: completas, sin recorte ni sombra
   (sección 64 quita también el movimiento de hover y scroll) */
.cv-svc-deliv-media .cv-float-media img {
    width: 100% !important;
    height: auto !important;
    aspect-ratio: auto;
    object-fit: contain;
    filter: none !important;
}

/* Panel del entregable: va debajo del texto, al lado de la imagen */
.cv-svc-mock {
    position: relative;
    width: 100% !important;
    max-width: 480px;
    gap: 0 !important;
    --widgets-spacing: 0px;
    margin-top: 28px !important;
    padding: 20px !important;
    border-radius: 20px !important;
    background: #ffffff;
    box-shadow: 0 24px 50px rgba(8, 9, 12, 0.08), 0 0 0 1px rgba(8, 9, 12, 0.04);
}

.cv-svc-deliv-copy > .cv-svc-mock {
    max-width: 480px !important;
    margin-top: 28px !important;
}

.cv-svc-mock > .elementor-element {
    margin: 0 !important;
}

.cv-svc-mock-label .elementor-heading-title {
    color: #315cff !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 11px !important;
    font-weight: 600 !important;
    letter-spacing: 0.08em !important;
    text-transform: uppercase;
    line-height: 1.2 !important;
}

/* Lista de verificación */
.cv-svc-mock--check .cv-svc-mock-item .elementor-heading-title {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 0;
    border-top: 1px solid rgba(8, 9, 12, 0.07);
    color: #08090c !important;
    font-size: 14.5px !important;
    font-weight: 600 !important;
    line-height: 1.3 !important;
}

.cv-svc-mock--check .cv-svc-mock-label + .cv-svc-mock-item .elementor-heading-title {
    margin-top: 8px;
}

.cv-svc-mock--check .cv-svc-mock-item:last-child .elementor-heading-title {
    padding-bottom: 0;
}

.cv-svc-mock--check .cv-svc-mock-item .elementor-heading-title::before {
    content: "";
    flex: 0 0 22px;
    width: 22px;
    height: 22px;
    border: 1.5px solid rgba(49, 92, 255, 0.3);
    border-radius: 50%;
    background: #ffffff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2l2.3 2.3L9.5 3.8' fill='none' stroke='%23ffffff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 50% 50% / 12px no-repeat;
    transform: scale(0.85);
    transition: background-color 0.4s ease, border-color 0.4s ease, transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.cv-svc-mock--check .cv-svc-mock-item.is-on .elementor-heading-title::before {
    border-color: #315cff;
    background-color: #315cff;
    transform: scale(1);
}

/* Matriz de prioridades */
.cv-svc-mock-grid {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: 8px !important;
    margin-top: 14px !important;
}

.cv-svc-mock-grid > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

.cv-svc-mock--matrix .cv-svc-mock-item .elementor-heading-title {
    position: relative;
    display: flex;
    align-items: flex-end;
    min-height: 74px;
    padding: 12px 14px;
    border-radius: 14px;
    background: #f5f2ea;
    overflow: hidden;
    color: #08090c !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    line-height: 1.25 !important;
    isolation: isolate;
    transition: color 0.4s ease 0.15s;
}

.cv-svc-mock--matrix .cv-svc-mock-key .elementor-heading-title::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background: #315cff;
    transform: scale(0);
    transform-origin: 0 100%;
    transition: transform 0.7s var(--cv-ease);
}

.cv-svc-mock--matrix .cv-svc-mock-key.is-on .elementor-heading-title {
    color: #ffffff !important;
}

.cv-svc-mock--matrix .cv-svc-mock-key.is-on .elementor-heading-title::before {
    transform: scale(1);
}

.cv-svc-mock--matrix .cv-svc-mock-item:not(.cv-svc-mock-key) {
    opacity: 0.45;
    transition: opacity 0.5s ease;
}

.cv-svc-mock--matrix .cv-svc-mock-item.is-on:not(.cv-svc-mock-key) {
    opacity: 1;
}

/* Hoja de ruta: tres etapas con flecha entre ellas */
.cv-svc-mock-road {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px !important;
    margin-top: 14px !important;
}

.cv-svc-mock-road > .cv-svc-mock-item {
    position: relative;
    width: auto !important;
    margin: 0 !important;
    gap: 0 !important;
    --widgets-spacing: 0px;
    padding: 12px 12px 14px !important;
    border-radius: 14px !important;
    background: #f5f2ea;
    opacity: 0.35;
    transform: translateY(8px);
    transition: opacity 0.5s ease, transform 0.6s var(--cv-ease), background-color 0.5s ease;
}

.cv-svc-mock-road > .cv-svc-mock-item.is-on {
    opacity: 1;
    transform: none;
}

.cv-svc-mock-road > .cv-svc-mock-item:first-child.is-on {
    background: rgba(49, 92, 255, 0.08);
}

.cv-svc-mock-road .elementor-element {
    margin: 0 !important;
}

.cv-svc-mock-tag .elementor-heading-title {
    display: inline-block;
    padding: 4px 9px;
    border-radius: 999px;
    background: #ffffff;
    color: #315cff !important;
    font-size: 10.5px !important;
    font-weight: 700 !important;
    letter-spacing: 0.06em !important;
    text-transform: uppercase;
    white-space: nowrap;
    line-height: 1.2 !important;
}

.cv-svc-mock-text .elementor-heading-title {
    margin-top: 10px !important;
    color: #3c414b !important;
    font-size: 13px !important;
    font-weight: 500 !important;
    line-height: 1.4 !important;
}

/* CTA intermedio (tarjeta oscura con título y texto) */
.cv-svc-help {
    gap: 24px !important;
    margin-top: 110px !important;
    padding: 28px 32px !important;
}

.cv-svc-help > .cv-svc-help-copy {
    flex: 1 1 auto;
    gap: 0 !important;
    --widgets-spacing: 0px;
}

.cv-svc-help-copy > .elementor-element {
    margin: 0 !important;
}

.cv-svc-help-text p {
    max-width: 60ch;
    margin: 8px 0 0 !important;
    color: var(--cv-p-on-dark) !important;
    font-size: 15px !important;
    font-weight: 400 !important;
    line-height: 1.55 !important;
}

/* =========================================================
   METODOLOGÍA: EL CICLO DEL HOME EN 3 PASOS + RESULTADO
   ========================================================= */
.cv-svc-method-section .cv-h2 .elementor-heading-title {
    color: #ffffff !important;
}

.cv-svc-method-section .cv-sec-lead,
.cv-svc-method-section .cv-sec-lead p {
    color: rgba(248, 247, 244, 0.78) !important;
}

.cv-svc-cycle {
    margin-top: 0 !important;
    padding: 36px 36px 40px !important;
}

.cv-svc-cycle .cv-cycle-steps {
    --cv-node: 56px;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    margin-top: 32px;
}

.cv-svc-cycle .cv-cycle-steps::before {
    right: calc(33.333% - var(--cv-node) / 2);
}

.cv-svc-cycle .cv-cycle-steps::after {
    animation-name: cv-svc-cycle-run;
    animation-duration: 4.8s;
}

@keyframes cv-svc-cycle-run {
    0% { left: calc(var(--cv-node) / 2 - 4px); opacity: 0; }
    8% { opacity: 1; }
    92% { opacity: 1; }
    100% { left: calc(66.666% + var(--cv-node) / 2 - 4px); opacity: 0; }
}

/* Cada paso se enciende cuando pasa el pulso */
.cv-svc-cycle .cv-cycle-num .elementor-heading-title {
    font-size: 15px !important;
    animation: cv-svc-node 4.8s ease-in-out infinite;
}

.cv-svc-cycle .cv-cycle-item:nth-child(2) .cv-cycle-num .elementor-heading-title {
    animation-delay: 2.15s;
}

.cv-svc-cycle .cv-cycle-item:nth-child(3) .cv-cycle-num .elementor-heading-title {
    animation-delay: 4.05s;
}

@keyframes cv-svc-node {
    0%, 22%, 100% { background: #08090c; color: #c8ff36; box-shadow: none; }
    6%, 13% { background: #c8ff36; color: #08090c; box-shadow: 0 0 0 8px rgba(200, 255, 54, 0.12); }
}

.cv-svc-cycle .cv-cycle-name .elementor-heading-title {
    margin-top: 22px;
    font-size: clamp(20px, 1.8vw, 26px) !important;
    letter-spacing: -0.03em !important;
}

.cv-svc-cycle .cv-cycle-note .elementor-heading-title {
    max-width: 30ch;
    margin-top: 8px;
    font-size: 15px !important;
    line-height: 1.5 !important;
}

.cv-svc-outcome {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 72px !important;
    align-items: start;
    margin-top: 96px !important;
    padding-top: 64px !important;
    border-top: 1px solid rgba(200, 255, 54, 0.22);
}

.cv-svc-outcome > .e-con {
    width: auto !important;
}

.cv-svc-outcome-body {
    align-items: flex-start !important;
    gap: 0 !important;
    --widgets-spacing: 0px;
}

.cv-svc-outcome-body > .elementor-element {
    margin: 0 !important;
}

.cv-svc-outcome-body .cv-sec-lead,
.cv-svc-outcome-body .cv-sec-lead p {
    max-width: 52ch;
}

.cv-svc-outcome-chips ul {
    margin-top: 22px !important;
}

.cv-svc-outcome-chips li {
    padding: 9px 15px;
    border-color: rgba(200, 255, 54, 0.3);
    background: rgba(255, 255, 255, 0.04);
    color: #f8f7f4;
    font-size: 14px;
}

.cv-svc-outcome-body .cv-btn-link-dark {
    margin-top: 14px !important;
}

/* =========================================================
   CASO (sin imagen): título a la izquierda, texto a la derecha
   y las cifras en una franja de tres columnas
   ========================================================= */
.cv-svc-case {
    display: grid !important;
    grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
    gap: 72px !important;
    align-items: end;
}

.cv-svc-case > .e-con {
    width: auto !important;
}

.cv-svc-case-head,
.cv-svc-case-copy {
    align-items: flex-start !important;
    gap: 0 !important;
    --widgets-spacing: 0px;
}

.cv-svc-case-head > .elementor-element,
.cv-svc-case-copy > .elementor-element {
    margin-bottom: 0 !important;
}

.cv-svc-case-copy .cv-sec-lead,
.cv-svc-case-copy .cv-sec-lead p {
    max-width: 52ch;
}

.cv-svc-case-copy .cv-sec-lead p {
    margin-top: 0 !important;
}

.cv-svc-chain-label .elementor-heading-title {
    margin-top: 26px !important;
    color: #727783 !important;
    font-size: 11.5px !important;
    font-weight: 700 !important;
    letter-spacing: 0.12em !important;
    text-transform: uppercase;
    line-height: 1.2 !important;
}

.cv-svc-chain {
    flex-wrap: wrap !important;
    gap: 8px !important;
    margin-top: 12px !important;
}

.cv-svc-chain > .elementor-element {
    display: flex;
    align-items: center;
    width: auto !important;
    margin: 0 !important;
}

.cv-svc-chain-chip:not(:last-child)::after {
    content: "→";
    margin-left: 8px;
    color: #315cff;
    opacity: 0.35;
    transition: opacity 0.4s ease;
}

.cv-svc-chain-chip.is-on::after {
    opacity: 1;
}

.cv-svc-chain-chip .elementor-heading-title {
    padding: 7px 13px;
    border: 1px solid rgba(49, 92, 255, 0.18);
    border-radius: 999px;
    background: #ffffff;
    color: #3c414b !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    line-height: 1.2 !important;
    transition: border-color 0.4s ease, color 0.4s ease, background-color 0.4s ease;
}

.cv-svc-chain-chip.is-on .elementor-heading-title {
    border-color: #315cff;
    background: rgba(49, 92, 255, 0.06);
    color: #315cff !important;
}

.cv-svc-kpis {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    width: 100% !important;
    gap: 16px !important;
    --widgets-spacing: 0px;
    margin-top: 64px !important;
}

.cv-svc-kpi {
    gap: 0 !important;
    --widgets-spacing: 0px;
    padding: 30px 28px 28px !important;
    border: 1px solid rgba(49, 92, 255, 0.16);
    border-radius: 22px !important;
    background: #f8f7f4;
    transition: background-color 0.45s ease, box-shadow 0.45s ease, transform 0.45s var(--cv-ease) !important;
}

.cv-svc-kpi:hover {
    background: #ffffff;
    box-shadow: 0 22px 46px rgba(8, 9, 12, 0.08);
    transform: translateY(-6px);
}

.cv-svc-kpi > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

.cv-svc-kpi-value .elementor-heading-title {
    color: #315cff !important;
    font-size: clamp(34px, 3.2vw, 48px) !important;
    font-weight: 800 !important;
    line-height: 1 !important;
    letter-spacing: -0.04em !important;
    white-space: nowrap;
}

.cv-svc-kpi-label .elementor-heading-title {
    margin: 12px 0 0 !important;
    color: #3c414b !important;
    font-size: 15px !important;
    font-weight: 500 !important;
    line-height: 1.4 !important;
}

.cv-svc-head-cta {
    width: auto !important;
    margin-top: 18px !important;
}

/* =========================================================
   OTROS SERVICIOS: CARRUSEL ARRASTRABLE
   ========================================================= */
.cv-svc-rail {
    display: flex !important;
    flex-wrap: nowrap !important;
    gap: 16px !important;
    padding: 8px 2px 28px !important;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    cursor: grab;
}

.cv-svc-rail::-webkit-scrollbar {
    display: none;
}

.cv-svc-rail.is-dragging {
    cursor: grabbing;
    scroll-snap-type: none;
}

.cv-svc-rail.is-dragging .cv-srv-card {
    pointer-events: none;
}

.cv-svc-rail > .cv-srv-card {
    flex: 0 0 clamp(270px, 31%, 380px) !important;
    width: auto !important;
    min-height: 250px;
    scroll-snap-align: start;
    -webkit-user-select: none;
    user-select: none;
}

.cv-svc-rail-bar {
    position: relative;
    height: 2px;
    margin-top: 8px;
    border-radius: 2px;
    background: rgba(8, 9, 12, 0.08);
    overflow: hidden;
}

.cv-svc-rail-bar span {
    position: absolute;
    inset: 0;
    background: #315cff;
    transform: scaleX(var(--p, 0.3));
    transform-origin: left center;
    transition: transform 0.2s linear;
}

/* =========================================================
   CIERRE A LA IZQUIERDA CON RED ANIMADA
   ========================================================= */
.cv-svc-final .cv-final {
    align-items: flex-start !important;
    max-width: none;
    margin: 0 !important;
    text-align: left;
}

.cv-svc-final .cv-final .cv-h2 .elementor-heading-title {
    max-width: 880px;
    text-align: left;
}

.cv-svc-final .cv-final-text,
.cv-svc-final .cv-final-text p {
    margin-left: 0 !important;
    text-align: left;
}

.cv-svc-final .cv-final-ctas {
    justify-content: flex-start !important;
}

.cv-svc-final .cv-final-note .elementor-heading-title {
    text-align: left;
}

.cv-svc-net {
    position: absolute;
    inset: 0;
    z-index: 1;
    width: 100%;
    height: 100%;
    pointer-events: none;
}

/* =========================================================
   TABLET
   ========================================================= */
@media (max-width: 1024px) {
    .cv-svc-section .cv-sec-head-row > .e-con {
        max-width: none;
    }

    .cv-svc-hero-grid,
    .cv-svc-deliv,
    .cv-svc-outcome,
    .cv-svc-case {
        grid-template-columns: 1fr;
        gap: 48px !important;
    }

    .cv-svc-map {
        max-width: 620px;
        width: 100% !important;
    }

    .cv-svc-deliv:nth-child(even) .cv-svc-deliv-copy {
        order: 0;
    }

    .cv-svc-delivs {
        gap: 56px !important;
    }

    .cv-svc-scan {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .cv-svc-scan-cell:last-child {
        grid-column: span 2;
    }

    .cv-svc-case {
        align-items: start;
    }

    .cv-svc-cycle .cv-cycle-steps::before,
    .cv-svc-cycle .cv-cycle-steps::after {
        display: block;
    }

    .cv-svc-outcome {
        margin-top: 72px !important;
        padding-top: 48px !important;
    }


    .cv-svc-rail > .cv-srv-card {
        flex-basis: 46% !important;
    }
}

/* =========================================================
   MÓVIL
   ========================================================= */
@media (max-width: 767px) {
    .cv-svc-hero .cv-hero-badge .elementor-heading-title {
        font-size: 11px !important;
        letter-spacing: 0.06em !important;
    }

    .cv-svc-hero .cv-hero-actions,
    .cv-svc-hero .cv-hero-actions > .elementor-element {
        width: 100% !important;
    }

    .cv-svc-map {
        padding: 20px !important;
        border-radius: 20px !important;
    }

    .cv-svc-map-wires {
        min-height: 96px;
    }

    .cv-svc-map-chip .elementor-heading-title {
        padding: 7px 11px;
        font-size: 12px !important;
    }

    .cv-svc-map-target {
        padding: 16px 10px 14px !important;
    }

    .cv-svc-map-steps {
        flex-wrap: nowrap !important;
    }

    .cv-svc-map-step .elementor-heading-title {
        font-size: 11.5px !important;
        white-space: nowrap;
    }

    .cv-svc-map-step + .cv-svc-map-step .elementor-heading-title::before {
        margin: 0 5px;
    }

    .cv-svc-pain,
    .cv-svc-pain:nth-child(even) {
        grid-template-columns: minmax(0, 1fr) 56px;
        row-gap: 14px !important;
        column-gap: 16px !important;
        padding: 26px 0 !important;
    }

    .cv-svc-pains {
        margin-left: 0 !important;
        margin-right: 0 !important;
    }

    .cv-svc-pain::before {
        left: 0;
        right: 0;
    }

    .cv-svc-pain .cv-svc-pain-num,
    .cv-svc-pain:nth-child(even) .cv-svc-pain-num {
        grid-column: 1;
        grid-row: 1;
        text-align: left;
    }

    .cv-svc-pain .cv-svc-pain-icon,
    .cv-svc-pain:nth-child(even) .cv-svc-pain-icon {
        grid-column: 2;
        grid-row: 1;
    }

    .cv-svc-pain .cv-svc-pain-body,
    .cv-svc-pain:nth-child(even) .cv-svc-pain-body {
        grid-column: 1 / span 2;
        grid-row: 2;
    }

    .cv-svc-pain-icon .elementor-icon {
        width: 52px;
        height: 52px;
        font-size: 20px !important;
    }

    .cv-svc-pain-icon .elementor-icon svg {
        width: 20px;
        height: 20px;
    }

    .cv-svc-statement {
        margin-top: 48px !important;
    }

    .cv-svc-scan {
        grid-template-columns: 1fr;
    }

    .cv-svc-scan-cell {
        padding: 24px 20px !important;
    }

    .cv-svc-scan-cell:last-child {
        grid-column: auto;
    }

    .cv-svc-delivs {
        gap: 56px !important;
    }

    .cv-svc-deliv {
        gap: 28px !important;
    }

    .cv-svc-mock {
        padding: 16px !important;
    }

    .cv-svc-mock-road {
        grid-template-columns: 1fr;
    }

    .cv-svc-help {
        margin-top: 72px !important;
        padding: 22px 20px !important;
    }

    .cv-svc-cycle {
        padding: 24px 20px 26px !important;
    }

    .cv-svc-cycle .cv-cycle-steps {
        --cv-node: 44px;
        grid-template-columns: 1fr !important;
    }

    .cv-svc-cycle .cv-cycle-steps::before {
        right: auto;
    }

    .cv-svc-cycle .cv-cycle-steps::after {
        display: none;
    }

    .cv-svc-cycle .cv-cycle-name .elementor-heading-title {
        margin-top: 4px;
        font-size: 19px !important;
    }

    .cv-svc-kpis {
        grid-template-columns: 1fr;
        gap: 12px !important;
        margin-top: 40px !important;
    }

    .cv-svc-kpi {
        padding: 22px 20px !important;
    }

    .cv-svc-rail > .cv-srv-card {
        flex-basis: 84% !important;
        min-height: 0;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-svc-cycle .cv-cycle-num .elementor-heading-title,
    .cv-svc-map-target.is-hit {
        animation: none !important;
    }

    .cv-svc-pain {
        --svc-line: 1;
    }
}


/* #########################################################
   42. HUB DE SERVICIOS CON MOVIMIENTO (v3.9)
   La página /servicios/ con el mismo nivel de animación de
   las páginas de servicio, pero con identidad propia:
   · Hero de página principal (cv-page-hero), centrado, con el mapa
     animado de cv-svc-map debajo del botón (v3.9.2).
   · Necesidades: cada fila se abre de izquierda a derecha,
     el texto sube palabra por palabra y la fila que está al
     centro de la pantalla se marca (cv-srv-need.is-focus).
   · Capacidades en azul con escáner: las tarjetas se
     encienden una a una y el mouse toma el control
     (cv-srv-caps-section + cv-svc-scan-section).
   · Preguntas que entran desde la derecha.
   · Telón: la sección se abre con el scroll (cv-srv-curtain).
   Clases: cv-srv-hub-hero (hero), cv-srv-hub (en cada sección que anima el JS),
   cv-srv-curtain, cv-srv-words (lo agrega el JS).
   ######################################################### */

/* ---------- Mapa animado en el hero centrado (v3.9.2) ----------
   Va debajo del botón, donde estaba la línea "Dónde intervenimos".
   El hero sigue centrado (página principal); el mapa no lo convierte
   en el hero de dos columnas de las subpáginas */
.cv-page-hero .cv-svc-map {
    width: 100% !important;
    max-width: 640px;
    margin: 56px auto 0 !important;
    text-align: left;
}

.cv-page-hero .cv-svc-map-sources {
    flex-wrap: nowrap !important;
}

.cv-page-hero .cv-svc-map-wires {
    min-height: 96px;
}

@media (max-width: 767px) {
    .cv-page-hero .cv-svc-map {
        margin-top: 40px !important;
        padding: 18px 8px !important;
    }

    .cv-page-hero .cv-svc-map-sources {
        gap: 4px !important;
    }

    .cv-page-hero .cv-svc-map-chip .elementor-heading-title {
        padding: 6px 7px;
        font-size: 10.5px !important;
    }
}

@media (max-width: 380px) {
    .cv-page-hero .cv-svc-map-chip .elementor-heading-title {
        padding: 5px 5px;
        font-size: 10px !important;
    }
}

/* ---------- Palabras que suben ---------- */
.cv-srv-words .word {
    display: inline-block;
    will-change: transform;
}

/* ---------- Necesidades ---------- */
.cv-srv-need-num .elementor-heading-title {
    display: inline-block;
    padding: 5px 7px;
    border-radius: 999px;
    background: transparent;
    transition: background-color 0.45s var(--cv-ease), color 0.45s var(--cv-ease) !important;
}

.cv-srv-need.is-focus .cv-srv-need-num .elementor-heading-title {
    background: #315cff;
    color: #ffffff !important;
}

/* La flecha entra girando cuando la fila termina de abrirse */
.cv-srv-hub-ready .cv-srv-need:not(.is-in)::after {
    transform: scale(0) rotate(-180deg);
    animation: none;
}

.cv-srv-hub-ready .cv-srv-need.is-in:not(.is-done)::after {
    animation: cv-srv-arrow-in 0.8s cubic-bezier(0.34, 1.56, 0.64, 1) both;
}

@keyframes cv-srv-arrow-in {
    0% { transform: scale(0) rotate(-180deg); }
    100% { transform: scale(1) rotate(0deg); }
}

/* ---------- Capacidades en azul (escáner) ---------- */
.cv-srv-caps-section.cv-svc-scan-section .cv-srv-card {
    border: 1px solid rgba(255, 255, 255, 0.22);
    background: rgba(255, 255, 255, 0.06);
    box-shadow: none;
    transition: background-color 0.5s ease, border-color 0.5s ease, box-shadow 0.5s ease, transform 0.5s var(--cv-ease) !important;
}

.cv-srv-caps-section.cv-svc-scan-section .cv-srv-card-cta {
    border: 1px solid rgba(255, 255, 255, 0.12);
}

.cv-srv-caps-section.cv-svc-scan-section .cv-srv-card .cv-srv-card-num .elementor-heading-title {
    color: rgba(255, 255, 255, 0.7) !important;
}

.cv-srv-caps-section.cv-svc-scan-section .cv-srv-card .cv-srv-card-title .elementor-heading-title,
.cv-srv-caps-section.cv-svc-scan-section .cv-srv-card .cv-srv-card-link .elementor-heading-title {
    color: #ffffff !important;
    transition: color 0.4s ease;
}

.cv-srv-caps-section.cv-svc-scan-section .cv-srv-card .cv-srv-card-desc p {
    color: rgba(255, 255, 255, 0.82) !important;
    transition: color 0.4s ease;
}

.cv-srv-caps-section.cv-svc-scan-section .cv-srv-card .cv-srv-card-list li {
    border-color: rgba(255, 255, 255, 0.3);
    background: transparent;
    color: #ffffff;
    transition: border-color 0.4s ease, background-color 0.4s ease, color 0.4s ease;
}

.cv-srv-caps-section.cv-svc-scan-section .cv-srv-card .cv-srv-card-link .elementor-heading-title::after {
    background-color: rgba(255, 255, 255, 0.14);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6h8M6.5 2.5L10 6l-3.5 3.5' fill='none' stroke='%23ffffff' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

.cv-srv-caps-section.cv-svc-scan-section .cv-srv-card .cv-srv-card-link .elementor-heading-title::before {
    border-color: rgba(255, 255, 255, 0.5);
}

/* Marca superior de la tarjeta activa (igual a la del escáner) */
.cv-srv-caps-section.cv-svc-scan-section .cv-srv-card::before {
    content: "";
    position: absolute;
    top: 0;
    left: 24px;
    width: 44px;
    height: 3px;
    border-radius: 0 0 3px 3px;
    background: #315cff;
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 0.6s var(--cv-ease);
}

/* Tarjeta activa: blanca y elevada. El escáner o el mouse la mueven,
   así nunca hay dos activas a la vez */
.cv-srv-caps-section.cv-svc-scan-section .cv-srv-card.is-lit,
.cv-srv-caps-section.cv-svc-scan-section .cv-srv-card:focus-visible {
    z-index: 2;
    border-color: #ffffff;
    background: #ffffff;
    box-shadow: 0 26px 54px rgba(8, 9, 12, 0.22);
    transform: translateY(-8px);
}

.cv-srv-caps-section.cv-svc-scan-section .cv-srv-card.is-lit::before {
    transform: scaleX(1);
}

.cv-srv-caps-section.cv-svc-scan-section .cv-srv-card.is-lit .cv-srv-card-num .elementor-heading-title {
    color: #315cff !important;
}

.cv-srv-caps-section.cv-svc-scan-section .cv-srv-card.is-lit .cv-srv-card-title .elementor-heading-title,
.cv-srv-caps-section.cv-svc-scan-section .cv-srv-card.is-lit .cv-srv-card-link .elementor-heading-title {
    color: #08090c !important;
}

.cv-srv-caps-section.cv-svc-scan-section .cv-srv-card.is-lit .cv-srv-card-desc p {
    color: #3c414b !important;
}

.cv-srv-caps-section.cv-svc-scan-section .cv-srv-card.is-lit .cv-srv-card-list li {
    border-color: rgba(49, 92, 255, 0.18);
    background: #f8f7f4;
    color: #3c414b;
}

.cv-srv-caps-section.cv-svc-scan-section .cv-srv-card.is-lit .cv-srv-card-link .elementor-heading-title::after {
    background-color: #315cff;
    box-shadow: 0 10px 26px rgba(49, 92, 255, 0.35);
    transform: rotate(-45deg);
    animation: cv-srv-zip 0.55s cubic-bezier(0.65, 0, 0.35, 1);
}

.cv-srv-caps-section.cv-svc-scan-section .cv-srv-card.is-lit .cv-srv-card-link .elementor-heading-title::before {
    border-color: rgba(49, 92, 255, 0.45);
    transform: rotate(-45deg);
    animation: cv-srv-ring 1.2s ease-out infinite;
}

/* Sin JS (o en el editor) el hover sigue funcionando igual */
.cv-srv-caps-section.cv-svc-scan-section:not(.cv-srv-hub-ready) .cv-srv-card:hover {
    border-color: #ffffff;
    background: #ffffff;
}

.cv-srv-caps-section.cv-svc-scan-section:not(.cv-srv-hub-ready) .cv-srv-card:hover .cv-srv-card-title .elementor-heading-title,
.cv-srv-caps-section.cv-svc-scan-section:not(.cv-srv-hub-ready) .cv-srv-card:hover .cv-srv-card-link .elementor-heading-title {
    color: #08090c !important;
}

.cv-srv-caps-section.cv-svc-scan-section:not(.cv-srv-hub-ready) .cv-srv-card:hover .cv-srv-card-desc p {
    color: #3c414b !important;
}

/* En la sección azul el hover lo maneja la clase is-lit */
.cv-srv-caps-section.cv-svc-scan-section.cv-srv-hub-ready .cv-srv-card:not(.is-lit):hover {
    background: rgba(255, 255, 255, 0.06);
    box-shadow: none;
}

/* ---------- Telón: la sección se abre con el scroll ---------- */
.cv-srv-curtain {
    will-change: clip-path;
}

/* ---------- Preguntas ---------- */
.cv-srv-hub .cv-srv-faq-list .elementor-accordion-item {
    will-change: transform;
}

/* ---------- Hero de servicio en tablet: texto alineado a la izquierda ----------
   La regla del Home centra el H1 (18ch) y el párrafo en tablet; en el hero
   de dos columnas (hub y páginas de servicio) todo queda a la izquierda */
@media (max-width: 1024px) {
    .cv-svc-hero .cv-hero-title .elementor-heading-title {
        max-width: none !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
    }

    .cv-svc-hero .cv-hero-copy,
    .cv-svc-hero .cv-hero-copy .elementor-widget-container,
    .cv-svc-hero .cv-hero-copy p {
        margin-left: 0 !important;
        margin-right: 0 !important;
        text-align: left !important;
    }
}

/* ---------- Hero del hub: los cinco verbos en una sola fila ---------- */
@media (max-width: 767px) {
    .cv-srv-hub-hero .cv-svc-map {
        padding: 18px 8px !important;
    }

    .cv-srv-hub-hero .cv-svc-map-sources {
        gap: 4px !important;
    }

    .cv-srv-hub-hero .cv-svc-map-chip .elementor-heading-title {
        padding: 6px 7px;
        font-size: 10.5px !important;
    }
}

@media (max-width: 380px) {
    .cv-srv-hub-hero .cv-svc-map-chip .elementor-heading-title {
        padding: 5px 5px;
        font-size: 10px !important;
    }
}

@media (max-width: 767px) {
    .cv-srv-need-num .elementor-heading-title {
        padding: 3px 4px;
        font-size: 11px !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-srv-hub-ready .cv-srv-need::after {
        transform: none !important;
        animation: none !important;
    }

    .cv-srv-curtain {
        clip-path: none !important;
    }
}


/* #########################################################
   43. HOME CON MOVIMIENTO (v3.9.3)
   El Home al nivel de Servicios y Estrategia, sin tocar la
   escalera de dolores ni el ciclo:
   · cv-home: en cada sección que anima el JS (etiquetas en
     píldora y textos que suben palabra por palabra).
   · cv-home-results: tarjetas de Resultados con escáner; la
     tarjeta activa pasa a blanco y se eleva (como en la
     sección azul de las páginas aprobadas). Lleva también
     cv-srv-curtain (telón a mitad de página).
   · cv-home-sol: el panel de Soluciones entra al cambiar de tab.
   · cv-home-cases: las tarjetas de casos se abren de abajo
     hacia arriba.
   · Escalera (cv-stack): la flecha es la misma de Servicios y cada
     tarjeta entra como las necesidades del hub (JS).
   · Cifras (cv-stats-row): tarjetas con el estilo de las cifras del
     caso en las páginas de servicio.
   · cv-home-how: foto que se abre con el scroll, línea que
     une las etapas y etapa marcada al pasar por el centro.
   · cv-net-bg: red de puntos detrás del contenido (cierre).
   ######################################################### */

/* ---------- Resultados: escáner ---------- */
.cv-home-results .cv-result-card {
    overflow: hidden;
    transition: background-color 0.5s ease, box-shadow 0.5s ease, transform 0.5s var(--cv-ease), border-color 0.5s ease !important;
}

/* Marca superior de la tarjeta activa (dentro del borde redondeado) */
.cv-home-results .cv-result-card::after {
    content: "";
    position: absolute;
    top: 0;
    left: 24px;
    width: 44px;
    height: 3px;
    border-radius: 0 0 3px 3px;
    background: #315cff;
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 0.6s var(--cv-ease);
}

.cv-home-results .cv-result-card.is-lit {
    z-index: 2;
    border-color: #ffffff !important;
    background: #ffffff !important;
    box-shadow: 0 26px 54px rgba(8, 9, 12, 0.32) !important;
    transform: translateY(-8px);
}

.cv-home-results .cv-result-card.is-lit::after {
    transform: scaleX(1);
}

.cv-home-results .cv-result-card .elementor-heading-title,
.cv-home-results .cv-result-card .elementor-widget-text-editor p,
.cv-home-results .cv-result-card .elementor-icon {
    transition: color 0.45s ease, fill 0.45s ease, transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) !important;
}

.cv-home-results .cv-result-card.is-lit .elementor-heading-title {
    color: #08090c !important;
}

.cv-home-results .cv-result-card.is-lit .elementor-widget-text-editor p {
    color: #3c414b !important;
}

.cv-home-results .cv-result-card.is-lit .elementor-icon,
.cv-home-results .cv-result-card.is-lit .elementor-icon svg {
    color: #315cff !important;
    fill: #315cff !important;
}

.cv-home-results .cv-result-card.is-lit .elementor-icon {
    transform: scale(1.1);
}

/* La luz del mouse no se ve sobre la tarjeta blanca */
.cv-home-results .cv-result-card.is-lit .cv-glow-layer {
    opacity: 0 !important;
}

/* Con el escáner, el hover lo maneja la clase is-lit */
.cv-home-results .cv-results-row.is-ready .cv-result-card:not(.is-lit):hover {
    box-shadow: none !important;
}

/* Resultados y Soluciones son una sola superficie oscura: sin línea entre ellas */
.cv-home-results + .cv-sol-section {
    margin-top: -1px !important;
}

/* ---------- Palabras que suben (títulos de tarjeta, subtítulos) ---------- */
.cv-home .cv-srv-words {
    perspective: 600px;
}

/* ---------- Cómo trabajamos ---------- */
.cv-home-how .cv-founder-photo {
    border-radius: 22px;
    overflow: hidden;
    will-change: clip-path;
}

.cv-home-how .cv-founder-photo img {
    will-change: transform;
}

.cv-home-how .cv-stages {
    position: relative;
}

/* Línea vertical que une los números; se llena con el scroll */
.cv-home-stage-line {
    position: absolute;
    z-index: 0;
    width: 2px;
    margin-left: -1px;
    border-radius: 2px;
    background: rgba(8, 9, 12, 0.1);
    pointer-events: none;
}

.cv-home-stage-line > span {
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: #315cff;
    transform: scaleY(var(--p, 0));
    transform-origin: 50% 0;
}

/* La línea va detrás de las filas: los círculos la tapan */
.cv-home-how .cv-stage {
    position: relative;
    z-index: 1;
}

.cv-home-how .cv-stage-num .elementor-heading-title {
    transition: background-color 0.45s ease, color 0.45s ease, transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.45s ease !important;
}

.cv-home-how .cv-stage.is-past .cv-stage-num .elementor-heading-title {
    background: #315cff;
    color: #ffffff !important;
}

.cv-home-how .cv-stage.is-focus .cv-stage-num .elementor-heading-title {
    background: #315cff;
    color: #ffffff !important;
    transform: scale(1.12);
    box-shadow: 0 0 0 6px rgba(49, 92, 255, 0.14);
}

.cv-home-how .cv-stage .cv-stage-title .elementor-heading-title {
    transition: color 0.45s ease !important;
}

.cv-home-how .cv-stage.is-focus .cv-stage-title .elementor-heading-title {
    color: #315cff !important;
}

/* ---------- Escalera: el texto de la tarjeta azul final va claro ----------
   (cv-home-stack-cta; quedaba gris oscuro sobre el fondo azul) */
.cv-home-stack-cta .elementor-widget-text-editor,
.cv-home-stack-cta .elementor-widget-text-editor p {
    color: var(--cv-p-on-dark) !important;
}

/* ---------- Escalera: la flecha es la misma de Servicios ----------
   Círculo de 40 px con la flecha dibujada por CSS (se ignora el ícono
   elegido en Elementor), empujoncito cada 3,2 s, y al pasar el mouse:
   fondo azul, gira a 45°, la flecha sale y vuelve a entrar y el anillo late */
.cv-card-arrow .elementor-icon {
    width: 40px !important;
    height: 40px !important;
    padding: 0 !important;
    border-radius: 50% !important;
    overflow: visible !important;
    background: rgba(49, 92, 255, 0.1) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6h8M6.5 2.5L10 6l-3.5 3.5' fill='none' stroke='%23315cff' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 50% 50% / 14px no-repeat !important;
    box-shadow: none;
    transform: none;
    transition: background-color 0.35s ease, box-shadow 0.35s ease, transform 0.35s ease !important;
    animation: cv-srv-nudge 3.2s ease-in-out infinite;
}

.cv-card-arrow .elementor-icon svg,
.cv-card-arrow .elementor-icon i {
    display: none !important;
}

.cv-pain-card:hover .cv-card-arrow .elementor-icon,
.cv-pain-card:focus-visible .cv-card-arrow .elementor-icon {
    background-color: #315cff !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6h8M6.5 2.5L10 6l-3.5 3.5' fill='none' stroke='%23ffffff' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
    box-shadow: 0 10px 26px rgba(49, 92, 255, 0.35);
    transform: rotate(-45deg);
    animation: cv-srv-zip 0.55s cubic-bezier(0.65, 0, 0.35, 1);
}

.cv-card-arrow .elementor-icon::after {
    inset: 0;
    border-radius: 50%;
}

.cv-pain-card:hover .cv-card-arrow .elementor-icon::after,
.cv-pain-card:focus-visible .cv-card-arrow .elementor-icon::after {
    animation: cv-srv-ring 1.2s ease-out infinite;
}

@media (hover: none) {
    .cv-card-arrow .elementor-icon {
        background-color: #315cff !important;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6h8M6.5 2.5L10 6l-3.5 3.5' fill='none' stroke='%23ffffff' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
    }
}

@media (max-width: 767px) {
    .cv-card-arrow .elementor-icon {
        width: 36px !important;
        height: 36px !important;
    }
}

/* ---------- Cifras: tarjetas como las del caso Tecnomedica ----------
   Mismo lenguaje que cv-svc-kpi: tarjeta redondeada con borde azul
   suave, número azul, unidad azul pequeña y descripción gris. Siguen
   sin reaccionar al mouse (no son clicables) */
.cv-stats-row {
    gap: 16px !important;
    padding-top: 24px !important;
    border-top: 0 !important;
}

.cv-stats-row .cv-stat-card,
.cv-stats-row .cv-stat-card:first-child,
.cv-stats-row .cv-stat-card + .cv-stat-card {
    padding: 28px 28px 26px !important;
    border: 1px solid rgba(49, 92, 255, 0.16) !important;
    border-radius: 22px !important;
    background: #ffffff !important;
}

.cv-stats-row .cv-stat-card:hover {
    border-color: rgba(49, 92, 255, 0.16) !important;
}

.cv-stats-row .cv-stat-card .elementor-icon-box-wrapper {
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 18px !important;
    text-align: left !important;
}

.cv-stats-row .cv-stat-card .elementor-icon-box-icon {
    margin: 0 !important;
}

.cv-stats-row .cv-stat-card .elementor-icon-box-title {
    color: #315cff !important;
    font-size: clamp(34px, 3.2vw, 48px) !important;
    line-height: 1 !important;
    letter-spacing: -0.04em !important;
    white-space: nowrap;
}

.cv-stats-row .cv-stat-card .cv-count-prefix,
.cv-stats-row .cv-stat-card .cv-count-value {
    color: #315cff !important;
}

.cv-stats-row .cv-stat-card .elementor-icon-box-description {
    max-width: none;
    margin-top: 12px !important;
    color: #3c414b !important;
    font-size: 15px !important;
    font-weight: 500 !important;
    line-height: 1.4 !important;
}

@media (max-width: 1024px) {
    .cv-stats-row .cv-stat-card,
    .cv-stats-row .cv-stat-card:first-child,
    .cv-stats-row .cv-stat-card + .cv-stat-card {
        padding: 24px 22px 22px !important;
    }
}

@media (max-width: 767px) {
    .cv-stats-row {
        flex-direction: column !important;
        gap: 12px !important;
    }

    .cv-stats-row .cv-stat-card,
    .cv-stats-row .cv-stat-card:first-child,
    .cv-stats-row .cv-stat-card + .cv-stat-card {
        flex: 0 0 auto !important;
        width: 100% !important;
        padding: 20px !important;
    }

    .cv-stats-row .cv-stat-card .elementor-icon-box-title {
        font-size: 36px !important;
    }

    /* En móvil el ícono va a la izquierda para no alargar la página */
    .cv-stats-row .cv-stat-card .elementor-icon-box-wrapper {
        flex-direction: row !important;
        align-items: center !important;
        gap: 16px !important;
    }
}

/* ---------- Cierre → footer sin corte: la red también se desvanece ----------
   Los puntos llegaban hasta el borde y marcaban la línea con el footer */
.cv-final-section .cv-svc-net {
    -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 60%, transparent 92%);
    mask-image: linear-gradient(180deg, #000 0%, #000 60%, transparent 92%);
}

/* ---------- Cierre con red de puntos ---------- */
.cv-net-bg {
    overflow: hidden;
}

.cv-net-bg > .e-con-inner,
.cv-net-bg > .e-con {
    position: relative;
    z-index: 2;
}

@media (prefers-reduced-motion: reduce) {
    .cv-home-results .cv-result-card.is-lit {
        transform: none;
    }

    .cv-home-stage-line {
        display: none;
    }

    .cv-card-arrow .elementor-icon {
        animation: none !important;
    }
}


/* #########################################################
   44. TARJETA DE CASO CON EL DISEÑO APROBADO (cv-caso)
   Plantilla "Loop — Tarjeta de caso de éxito" (ID 986), la misma
   en el Home (cv_casos_home), la página de casos (cv_casos_todos)
   y los relacionados de cada caso (cv_casos_relacionados).
   Usa clases nuevas (cv-caso-*): el diseño anterior (cv-case-card,
   secciones 17, 24, 34…) ya no la toca.

   cv-caso ............ la tarjeta (enlace al caso)
   cv-caso-frame ...... marco redondeado de la imagen destacada
   cv-caso-media ...... imagen destacada (mockup)
   cv-caso-tag ........ fila sobre la imagen: "Caso 01" + logo blanco
   cv-caso-body ....... sector, cliente, titular y pie
   cv-caso-metrics .... cifra destacada (oculta: vive en la página del caso)
   cv-caso-foot ....... "Ver caso completo" + flecha del Home

   Movimiento (JS, módulo 18): la tarjeta se abre de abajo hacia
   arriba, la imagen se asienta, el sector se abre como píldora, el
   nombre del cliente sube palabra por palabra, la línea del pie se
   dibuja y la flecha entra girando. Con el mouse: luz que sigue el
   cursor y la imagen se desplaza hacia él.
   ######################################################### */

.elementor-loop-container {
    counter-reset: cv-caso;
}

.elementor-loop-container > .e-loop-item {
    counter-increment: cv-caso;
}

.cv-caso,
.cv-caso * {
    box-sizing: border-box;
}

.cv-caso {
    --widgets-spacing: 0px;
    --cv-caso-line: 1;
    position: relative !important;
    isolation: isolate;
    display: flex !important;
    flex-direction: column !important;
    justify-content: flex-start !important;
    gap: 0 !important;
    width: 100% !important;
    height: 100%;
    min-height: 0 !important;
    padding: 10px !important;
    overflow: hidden;
    border-radius: 22px !important;
    background: #0d0f14 !important;
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.07), 0 2px 6px rgba(8, 9, 12, 0.06);
    color: #f8f7f4;
    text-decoration: none !important;
    transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.6s ease;
}

.cv-caso .elementor-widget,
.cv-caso .e-con {
    margin: 0 !important;
}

.cv-caso .elementor-widget-container {
    margin: 0 !important;
    padding: 0 !important;
}

.cv-caso:hover,
.cv-caso:focus-visible {
    transform: translateY(-6px);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.1), 0 30px 60px -26px rgba(8, 9, 12, 0.6);
}

.cv-caso:focus-visible {
    outline: 2px solid #315cff;
    outline-offset: 4px;
}

/* ---------- Imagen ---------- */
.cv-caso .cv-caso-frame {
    position: relative !important;
    flex: 0 0 auto !important;
    width: 100% !important;
    aspect-ratio: 16 / 10;
    padding: 0 !important;
    overflow: hidden;
    border-radius: 16px !important;
    background: #15181f;
    -webkit-mask-image: -webkit-radial-gradient(white, black);
}

.cv-caso .cv-caso-media {
    position: absolute !important;
    top: -6%;
    left: 0;
    width: 100% !important;
    height: 112%;
    z-index: 0;
    will-change: transform;
}

.cv-caso .cv-caso-media .elementor-widget-container,
.cv-caso .cv-caso-media a {
    height: 100%;
}

.cv-caso .cv-caso-media img {
    display: block;
    width: 100% !important;
    height: 100% !important;
    max-width: none !important;
    border-radius: 0 !important;
    object-fit: cover;
    object-position: center top;
    transform: scale(1.02);
    transition: transform 1.2s cubic-bezier(0.22, 1, 0.36, 1);
}

.cv-caso:hover .cv-caso-media img {
    transform: scale(1.07);
}

/* ---------- Sobre la imagen: número y logo ---------- */
.cv-caso .cv-caso-tag {
    position: absolute !important;
    top: 12px;
    left: 12px;
    right: 12px;
    z-index: 2;
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 8px !important;
    width: auto !important;
    padding: 0 !important;
    pointer-events: none;
}

.cv-caso .cv-caso-tag::before {
    content: "Caso " counter(cv-caso, decimal-leading-zero);
    flex: 0 0 auto;
    padding: 6px 11px;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 999px;
    background: rgba(8, 9, 12, 0.66);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    color: #c8ff36;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.08em;
    line-height: 1.2;
    text-transform: uppercase;
}

.cv-caso .cv-caso-logo {
    flex: 0 0 auto;
    width: auto !important;
    max-width: 55%;
    margin-left: auto !important;
    padding: 7px 12px !important;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 999px;
    background: rgba(8, 9, 12, 0.66);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    line-height: 0;
}

.cv-caso .cv-caso-logo:not(:has(img)) {
    display: none !important;
}

.cv-caso .cv-caso-logo img {
    display: block;
    width: auto !important;
    max-width: 100% !important;
    height: auto !important;
    max-height: 18px !important;
    object-fit: contain;
}

/* ---------- Texto ---------- */
.cv-caso .cv-caso-body {
    flex: 1 1 auto !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 0 !important;
    width: 100% !important;
    padding: 20px 14px 12px !important;
}

.cv-caso .cv-caso-body > .elementor-element {
    width: 100% !important;
}

.cv-caso .cv-caso-sector .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: 0 !important;
    color: rgba(248, 247, 244, 0.6) !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 11.5px !important;
    font-weight: 500 !important;
    letter-spacing: 0.08em !important;
    line-height: 1.35 !important;
    text-transform: uppercase !important;
}

.cv-caso .cv-caso-sector .elementor-heading-title::before {
    content: "";
    flex: 0 0 auto;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #c8ff36;
}

.cv-caso .cv-caso-sector .elementor-heading-title a {
    color: inherit !important;
    pointer-events: none;
}

.cv-caso .cv-caso-client .elementor-heading-title {
    margin: 10px 0 0 !important;
    color: #ffffff !important;
    font-family: "Plus Jakarta Sans", sans-serif !important;
    font-size: clamp(22px, 1.8vw, 26px) !important;
    font-weight: 800 !important;
    line-height: 1.12 !important;
    letter-spacing: -0.03em !important;
    text-transform: none !important;
    transition: color 0.35s ease;
}

.cv-caso:hover .cv-caso-client .elementor-heading-title,
.cv-caso:focus-visible .cv-caso-client .elementor-heading-title {
    color: #c8ff36 !important;
}

.cv-caso .cv-caso-client .word {
    display: inline-block;
    will-change: transform;
}

.cv-caso .cv-caso-client .elementor-heading-title {
    perspective: 600px;
}

.cv-caso .cv-caso-metrics {
    display: none !important;
}

.cv-caso .cv-caso-title .elementor-heading-title {
    margin: 8px 0 0 !important;
    padding: 0 !important;
    background: none !important;
    color: rgba(248, 247, 244, 0.68) !important;
    font-family: "Plus Jakarta Sans", sans-serif !important;
    font-size: 15.5px !important;
    font-weight: 400 !important;
    line-height: 1.5 !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
}

.cv-caso .cv-caso-title {
    margin-bottom: 20px !important;
}

/* ---------- Pie: "Ver caso completo" + flecha del Home ---------- */
.cv-caso .cv-caso-foot {
    position: relative !important;
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 12px !important;
    width: 100% !important;
    margin-top: auto !important;
    padding: 14px 0 0 !important;
}

/* Línea fina y plana; en hover se dibuja encima una lima */
.cv-caso .cv-caso-foot::before,
.cv-caso .cv-caso-foot::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 1px;
    transform-origin: left center;
    pointer-events: none;
}

.cv-caso .cv-caso-foot::before {
    background: rgba(255, 255, 255, 0.1);
    transform: scaleX(var(--cv-caso-line));
}

.cv-caso .cv-caso-foot::after {
    background: #c8ff36;
    transform: scaleX(0);
    transition: transform 0.7s cubic-bezier(0.65, 0, 0.35, 1);
}

.cv-caso:hover .cv-caso-foot::after,
.cv-caso:focus-visible .cv-caso-foot::after {
    transform: scaleX(1);
}

.cv-caso .cv-caso-foot > .elementor-element {
    width: auto !important;
    flex: 0 0 auto !important;
}

.cv-caso .cv-caso-more .elementor-heading-title {
    margin: 0 !important;
    color: #f8f7f4 !important;
    font-family: "Plus Jakarta Sans", sans-serif !important;
    font-size: 14.5px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: -0.005em !important;
    text-transform: none !important;
    transition: color 0.35s ease;
}

.cv-caso:hover .cv-caso-more .elementor-heading-title,
.cv-caso:focus-visible .cv-caso-more .elementor-heading-title {
    color: #c8ff36 !important;
}

/* La flecha es la de la escalera del Home (círculo de 40 px dibujado por
   CSS, empujoncito cada 3,2 s; en hover gira, sale y vuelve a entrar y
   el anillo late). Sobre la tarjeta oscura el acento es lima */
.cv-caso .cv-caso-arrow .elementor-icon-wrapper {
    line-height: 0;
}

.cv-caso .cv-caso-arrow .elementor-icon {
    position: relative;
    display: block !important;
    width: 40px !important;
    height: 40px !important;
    padding: 0 !important;
    overflow: visible !important;
    border: 0 !important;
    border-radius: 50% !important;
    background: rgba(200, 255, 54, 0.12) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6h8M6.5 2.5L10 6l-3.5 3.5' fill='none' stroke='%23c8ff36' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 50% 50% / 14px no-repeat !important;
    box-shadow: none;
    transform: none;
    transition: background-color 0.35s ease, box-shadow 0.35s ease, transform 0.35s ease !important;
    animation: cv-srv-nudge 3.2s ease-in-out infinite;
}

.cv-caso .cv-caso-arrow .elementor-icon svg,
.cv-caso .cv-caso-arrow .elementor-icon i {
    display: none !important;
}

.cv-caso .cv-caso-arrow .elementor-icon::after {
    content: "";
    position: absolute;
    inset: 0;
    border: 1.5px solid rgba(200, 255, 54, 0.5);
    border-radius: 50%;
    opacity: 0;
    pointer-events: none;
}

.cv-caso:hover .cv-caso-arrow .elementor-icon,
.cv-caso:focus-visible .cv-caso-arrow .elementor-icon {
    background-color: #c8ff36 !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6h8M6.5 2.5L10 6l-3.5 3.5' fill='none' stroke='%2308090c' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
    box-shadow: 0 10px 26px rgba(200, 255, 54, 0.25);
    transform: rotate(-45deg);
    animation: cv-srv-zip 0.55s cubic-bezier(0.65, 0, 0.35, 1);
}

.cv-caso:hover .cv-caso-arrow .elementor-icon::after,
.cv-caso:focus-visible .cv-caso-arrow .elementor-icon::after {
    animation: cv-srv-ring 1.2s ease-out infinite;
}

/* Luz que sigue el mouse (superficie oscura) */
.cv-caso .cv-glow-layer {
    mix-blend-mode: screen;
    background: radial-gradient(360px circle at var(--gx, 50%) var(--gy, 50%), rgba(49, 92, 255, 0.4), rgba(49, 92, 255, 0.07) 45%, transparent 70%);
}

/* Pantallas táctiles: la flecha queda activa y la tarjeta no salta */
@media (hover: none) {
    .cv-caso:hover {
        transform: none;
    }

    .cv-caso .cv-caso-arrow .elementor-icon {
        background-color: #c8ff36 !important;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6h8M6.5 2.5L10 6l-3.5 3.5' fill='none' stroke='%2308090c' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
    }

    .cv-caso .cv-caso-more .elementor-heading-title {
        color: #c8ff36 !important;
    }
}

/* Tablet */
@media (max-width: 1024px) {
    .cv-caso .cv-caso-body {
        padding: 18px 12px 10px !important;
    }

    .cv-caso .cv-caso-client .elementor-heading-title {
        font-size: 22px !important;
    }

    .cv-caso .cv-caso-title .elementor-heading-title {
        font-size: 15px !important;
    }
}

/* Móvil */
@media (max-width: 767px) {
    .cv-caso {
        padding: 8px !important;
        border-radius: 20px !important;
    }

    .cv-caso .cv-caso-frame {
        border-radius: 14px !important;
    }

    .cv-caso .cv-caso-tag {
        top: 10px;
        left: 10px;
        right: 10px;
    }

    .cv-caso .cv-caso-body {
        padding: 16px 10px 8px !important;
    }

    .cv-caso .cv-caso-arrow .elementor-icon {
        width: 36px !important;
        height: 36px !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-caso,
    .cv-caso .cv-caso-media img {
        transition: none !important;
    }

    .cv-caso:hover {
        transform: none;
    }

    .cv-caso .cv-caso-arrow .elementor-icon,
    .cv-caso .cv-caso-arrow .elementor-icon::after {
        animation: none !important;
    }
}


/* #########################################################
   45. PÁGINA DE CADA CASO CON EL DISEÑO APROBADO (cv-cx-*)
   Plantilla "Single — Caso de éxito". Usa el lenguaje de las
   páginas de servicio (hero partido, cifras, cierre con red) y
   clases nuevas cv-cx-*: el diseño anterior (sección 28, cv-cs-*)
   ya no la toca.

   Hero ........ cv-svc-hero + cv-cx-hero: cv-cx-crumb (cv-cx-crumb-link,
                 cv-cx-crumb-here), cv-cx-badge, cv-cx-h1, cv-cx-intro,
                 cv-cx-hero-media (cv-cx-shot, cv-cx-logo-chip, cv-cx-logo,
                 cv-cx-metric con cv-cx-metric-label-top, -value, -text)
   Ficha ....... cv-cx-facts-section, cv-cx-facts, cv-cx-fact,
                 cv-cx-fact-label, cv-cx-fact-value
   Resultados .. cv-cx-results, cv-cx-kpis + cv-svc-kpi/cv-cx-kpi,
                 cv-cx-kpi-num, cv-cx-table, cv-cx-table-content, cv-cx-note
   Historia .... cv-cx-story, cv-cx-story-grid, cv-cx-story-head,
                 cv-cx-story-lead, cv-cx-steps, cv-cx-step, cv-cx-step-num,
                 cv-cx-step-title, cv-cx-step-text, cv-cx-list
   Lectura ..... cv-cx-reading-section, cv-cx-reading, cv-cx-reading-copy,
                 cv-cx-reading-text
   Más casos ... cv-cx-more (Loop Grid con la tarjeta cv-caso)
   Cierre ...... cv-svc-final
   Movimiento: módulo 19 del JS.
   ######################################################### */

/* ---------- Hero ---------- */
.cv-cx-hero .cv-cx-hero-grid {
    align-items: center;
}

.cv-cx-crumb {
    flex-wrap: nowrap !important;
    align-items: center !important;
    gap: 0 !important;
    width: 100% !important;
    padding-bottom: 18px !important;
    --widgets-spacing: 0px;
}

.cv-cx-crumb > .elementor-element {
    width: auto !important;
    min-width: 0;
    margin: 0 !important;
}

.cv-cx-crumb .elementor-heading-title {
    display: flex;
    align-items: center;
    gap: 10px;
    color: rgba(248, 247, 244, 0.55) !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    line-height: 1.3 !important;
    letter-spacing: 0 !important;
    white-space: nowrap;
}

.cv-cx-crumb .cv-cx-crumb-link .elementor-heading-title {
    padding-right: 10px;
}

.cv-cx-crumb a {
    color: rgba(248, 247, 244, 0.78) !important;
    text-decoration: none !important;
    transition: color 0.3s ease;
}

.cv-cx-crumb a:hover {
    color: #c8ff36 !important;
}

.cv-cx-crumb span {
    opacity: 0.4;
}

.cv-cx-crumb .cv-cx-crumb-here .elementor-heading-title {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
}

.cv-cx-hero .cv-cx-intro p,
.cv-cx-hero .cv-cx-intro .elementor-widget-container {
    text-align: left;
}

.cv-cx-hero .cv-cx-intro .elementor-widget-container {
    margin-top: 18px !important;
}

.cv-cx-hero .cv-cx-intro .elementor-widget-container > p:first-child {
    margin-top: 0 !important;
}

/* Imagen del caso con el logo y la cifra destacada encima */
.cv-cx-hero-media {
    position: relative !important;
    gap: 0 !important;
    padding: 0 0 44px !important;
    --widgets-spacing: 0px;
}

.cv-cx-hero-media > .elementor-element {
    margin: 0 !important;
}

.cv-cx-shot {
    width: 100% !important;
}

.cv-cx-shot img {
    width: 100% !important;
    height: auto !important;
    max-height: 480px;
    object-fit: contain;
    border-radius: 18px !important;
    filter: drop-shadow(0 30px 50px rgba(0, 0, 0, 0.35)) drop-shadow(0 10px 40px rgba(49, 92, 255, 0.25)) !important;
}

.cv-cx-logo-chip {
    position: absolute !important;
    top: 16px;
    left: 16px;
    z-index: 3;
    width: auto !important;
    max-width: 50%;
    padding: 9px 14px !important;
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 999px;
    background: rgba(8, 9, 12, 0.66);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    line-height: 0;
}

.cv-cx-logo-chip:not(:has(img)) {
    display: none !important;
}

.cv-cx-logo-chip .cv-cx-logo,
.cv-cx-logo-chip .elementor-widget-container {
    margin: 0 !important;
    line-height: 0;
}

.cv-cx-logo img {
    display: block;
    width: auto !important;
    max-width: 100% !important;
    height: auto !important;
    max-height: 22px !important;
    object-fit: contain;
}

.cv-cx-metric {
    position: absolute !important;
    left: -28px;
    bottom: 0;
    z-index: 3;
    width: auto !important;
    min-width: 220px;
    max-width: 300px;
    gap: 0 !important;
    padding: 18px 22px 20px !important;
    border-radius: 18px;
    background: #ffffff;
    box-shadow: 0 30px 60px -20px rgba(8, 9, 12, 0.5);
    --widgets-spacing: 0px;
}

.cv-cx-metric.is-floating {
    animation: cv-cx-bob 7s ease-in-out infinite;
}

@keyframes cv-cx-bob {
    0%, 100% { transform: translate3d(0, 0, 0); }
    50% { transform: translate3d(0, -10px, 0); }
}

.cv-cx-metric > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

.cv-cx-metric-label-top .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: #315cff !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 11px !important;
    font-weight: 600 !important;
    letter-spacing: 0.08em !important;
    line-height: 1.2 !important;
    text-transform: uppercase !important;
}

.cv-cx-metric-label-top .elementor-heading-title::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #315cff;
}

.cv-cx-metric-value .elementor-heading-title {
    margin-top: 10px !important;
    color: #08090c !important;
    font-size: clamp(34px, 3vw, 44px) !important;
    font-weight: 800 !important;
    line-height: 1 !important;
    letter-spacing: -0.04em !important;
    white-space: nowrap;
}

.cv-cx-metric-text .elementor-heading-title {
    margin-top: 8px !important;
    color: #3c414b !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    line-height: 1.4 !important;
}

/* ---------- Ficha: tarjeta blanca que monta sobre el hero ---------- */
.cv-cx-facts-section {
    position: relative;
    z-index: 3;
    overflow: visible !important;
}

.cv-cx-facts {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    align-items: stretch !important;
    gap: 8px !important;
    width: 100% !important;
    margin-top: -64px !important;
    padding: 8px !important;
    border: 1px solid rgba(8, 9, 12, 0.06);
    border-radius: 22px !important;
    background: #ffffff;
    box-shadow: 0 30px 60px -34px rgba(8, 9, 12, 0.4);
    --widgets-spacing: 0px;
}

/* Cada dato en su propia ficha redondeada, sin líneas divisorias */
.cv-cx-fact {
    position: relative;
    justify-content: flex-start !important;
    gap: 0 !important;
    width: auto !important;
    height: auto !important;
    min-height: 0 !important;
    padding: 16px 18px 18px !important;
    border-radius: 14px !important;
    background: #f8f7f4;
    --widgets-spacing: 0px;
}

.cv-cx-fact > .elementor-element {
    margin: 0 !important;
}

.cv-cx-fact-label .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    color: #727783 !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 11px !important;
    font-weight: 500 !important;
    letter-spacing: 0.08em !important;
    line-height: 1.2 !important;
    text-transform: uppercase !important;
}

.cv-cx-fact-label .elementor-heading-title::before {
    content: "";
    flex: 0 0 auto;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: #315cff;
}

.cv-cx-fact-value .elementor-heading-title {
    margin-top: 10px !important;
    color: #08090c !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.3 !important;
    letter-spacing: -0.01em !important;
}

/* ---------- Resultados ---------- */
.cv-cx-kpis {
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)) !important;
    margin-top: 0 !important;
}

.cv-cx-results .cv-svc-kpi {
    background: #ffffff;
}

.cv-cx-kpi-num .elementor-heading-title {
    display: inline-flex;
    margin-bottom: 18px !important;
    padding: 5px 10px;
    border: 1px solid rgba(49, 92, 255, 0.22);
    border-radius: 999px;
    color: #315cff !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 11px !important;
    font-weight: 600 !important;
    letter-spacing: 0.06em !important;
    line-height: 1.2 !important;
    text-transform: uppercase !important;
}

.cv-cx-table {
    width: 100% !important;
    margin-top: 16px !important;
    padding: 6px 26px 16px !important;
    border: 1px solid rgba(49, 92, 255, 0.16);
    border-radius: 22px !important;
    background: #ffffff;
    overflow-x: auto;
}

.cv-cx-table table {
    width: 100%;
    min-width: 560px;
    margin: 0 !important;
    border: 0 !important;
    border-collapse: collapse;
    font-size: 15px;
}

.cv-cx-table th {
    padding: 16px 12px;
    border: 0 !important;
    border-bottom: 2px solid #315cff !important;
    background: none !important;
    color: #08090c;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-align: left;
    text-transform: uppercase;
}

.cv-cx-table td {
    padding: 14px 12px;
    border: 0 !important;
    border-bottom: 1px solid rgba(8, 9, 12, 0.07) !important;
    background: none !important;
    color: #3c414b;
}

.cv-cx-table tr:last-child td {
    border-bottom: 0 !important;
}

.cv-cx-table td strong {
    color: #08090c;
}

.cv-cx-table p {
    margin: 16px 0 0;
    color: #3c414b;
    font-size: 15px;
    line-height: 1.55;
}

.cv-cx-note .elementor-heading-title {
    margin-top: 16px !important;
    color: #727783 !important;
    font-size: 13px !important;
    font-weight: 400 !important;
    line-height: 1.5 !important;
}

/* ---------- Más casos: el botón va a la derecha del título ---------- */
@media (min-width: 1025px) {
    .cv-cx-more .cv-sec-head-row {
        align-items: flex-end !important;
    }
}

@media (max-width: 1024px) {
    .cv-cx-more .cv-sec-head-row {
        align-items: flex-start !important;
    }

    .cv-cx-more .cv-sec-head-row > .cv-svc-head-cta {
        align-self: flex-start !important;
        margin: 0 !important;
    }
}

/* En tablet la cuadrícula es de dos: se muestran dos casos para no dejar uno suelto */
@media (min-width: 768px) and (max-width: 1024px) {
    .cv-cx-more .elementor-loop-container > .e-loop-item:nth-child(n+3) {
        display: none !important;
    }
}

.cv-cx-more .cv-sec-head-row > .cv-svc-head-cta {
    flex: 0 0 auto !important;
    width: auto !important;
    max-width: none;
}

@media (min-width: 1025px) {
    .cv-cx-more .cv-sec-head-row > .cv-svc-head-cta {
        margin: 0 0 6px auto !important;
    }
}

/* ---------- Historia: cabecera fija y etapas sobre una línea ---------- */
.cv-cx-story-grid {
    display: grid !important;
    grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
    gap: 64px !important;
    align-items: start;
    --widgets-spacing: 0px;
}

.cv-cx-story-grid > .e-con {
    width: auto !important;
}

.cv-cx-story-head {
    position: sticky !important;
    top: 120px;
    gap: 0 !important;
}

.cv-cx-story-lead p {
    margin: 12px 0 0 !important;
    color: #3c414b;
    font-size: 16px;
    line-height: 1.55;
}

.cv-cx-steps {
    --cx-progress: 0;
    position: relative !important;
    gap: 16px !important;
    padding: 0 0 0 44px !important;
}

.cv-cx-steps::before,
.cv-cx-steps::after {
    content: "";
    position: absolute;
    top: 36px;
    bottom: 36px;
    left: 15px;
    width: 2px;
    border-radius: 2px;
    pointer-events: none;
}

.cv-cx-steps::before {
    background: rgba(8, 9, 12, 0.1);
}

.cv-cx-steps::after {
    background: #315cff;
    transform: scaleY(var(--cx-progress));
    transform-origin: top center;
}

.cv-cx-step {
    position: relative !important;
    gap: 0 !important;
    width: 100% !important;
    padding: 26px 30px 28px !important;
    border-radius: 22px !important;
    background: #f8f7f4;
    transition: background-color 0.45s ease, box-shadow 0.45s ease, transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
    --widgets-spacing: 0px;
}

.cv-cx-step:hover {
    background: #ffffff;
    box-shadow: 0 22px 46px rgba(8, 9, 12, 0.08);
    transform: translateY(-4px);
}

/* Punto sobre la línea */
.cv-cx-step::before {
    content: "";
    position: absolute;
    top: 30px;
    left: -36px;
    width: 14px;
    height: 14px;
    border: 2px solid rgba(8, 9, 12, 0.18);
    border-radius: 50%;
    background: #ffffff;
    transition: background-color 0.4s ease, border-color 0.4s ease, box-shadow 0.4s ease;
}

.cv-cx-step.is-on::before {
    border-color: #315cff;
    background: #315cff;
    box-shadow: 0 0 0 6px rgba(49, 92, 255, 0.14);
}

.cv-cx-step > .elementor-element {
    width: 100% !important;
    margin: 0 !important;
}

.cv-cx-step > .cv-cx-step-num {
    width: auto !important;
}

.cv-cx-step-num .elementor-heading-title {
    display: inline-flex;
    padding: 6px 12px;
    border: 1px solid rgba(49, 92, 255, 0.22);
    border-radius: 999px;
    background: #ffffff;
    color: #315cff !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.06em !important;
    line-height: 1.2 !important;
    text-transform: uppercase !important;
    transition: background-color 0.4s ease, color 0.4s ease, border-color 0.4s ease;
}

.cv-cx-step.is-on .cv-cx-step-num .elementor-heading-title {
    border-color: #315cff;
    background: #315cff;
    color: #ffffff !important;
}

.cv-cx-step-title .elementor-heading-title {
    margin-top: 14px !important;
    color: #08090c !important;
    font-size: clamp(22px, 1.9vw, 26px) !important;
    font-weight: 800 !important;
    line-height: 1.15 !important;
    letter-spacing: -0.03em !important;
}

.cv-cx-step-title .word {
    display: inline-block;
    will-change: transform;
}

.cv-cx-step-title .elementor-heading-title {
    perspective: 600px;
}

.cv-cx-step-text,
.cv-cx-step-text p,
.cv-cx-step-text li {
    color: #3c414b;
    font-size: 16px;
    line-height: 1.55;
}

.cv-cx-step-text .elementor-widget-container {
    margin-top: 12px !important;
}

.cv-cx-step-text p {
    margin: 0 0 10px !important;
}

.cv-cx-step-text p:last-child {
    margin-bottom: 0 !important;
}

.cv-cx-list ul {
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
}

.cv-cx-list li {
    position: relative;
    margin: 0 !important;
    padding: 9px 0 9px 28px !important;
    border-top: 1px solid rgba(8, 9, 12, 0.07);
}

.cv-cx-list li:first-child {
    border-top: 0;
}

.cv-cx-list li::before {
    content: "";
    position: absolute;
    top: 15px;
    left: 2px;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: rgba(49, 92, 255, 0.12) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3 6.2l2 2 4-4.4' fill='none' stroke='%23315cff' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 50% 50% / 10px no-repeat;
}

/* ---------- Lectura comercial: tarjeta oscura ---------- */
.cv-cx-reading {
    position: relative;
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 40px !important;
    width: 100% !important;
    padding: 48px 52px !important;
    overflow: hidden;
    border-radius: 22px !important;
    background: linear-gradient(135deg, #08090c 0%, #0f1530 55%, #1c3aa8 140%) !important;
    --widgets-spacing: 0px;
}

.cv-cx-reading-copy {
    flex: 1 1 auto !important;
    width: auto !important;
    max-width: 820px;
    gap: 0 !important;
}

.cv-cx-reading > .elementor-widget-button {
    flex: 0 0 auto !important;
    width: auto !important;
}

.cv-cx-reading-text,
.cv-cx-reading-text p {
    color: #f8f7f4;
    font-size: clamp(19px, 1.6vw, 23px);
    font-weight: 600;
    line-height: 1.4;
    letter-spacing: -0.015em;
}

.cv-cx-reading-text .elementor-widget-container {
    margin-top: 16px !important;
}

.cv-cx-reading-text p {
    margin: 0 0 10px !important;
}

.cv-cx-reading-text p:last-child {
    margin-bottom: 0 !important;
}

.cv-cx-reading .cv-glow-layer {
    mix-blend-mode: screen;
    background: radial-gradient(360px circle at var(--gx, 50%) var(--gy, 50%), rgba(49, 92, 255, 0.4), rgba(49, 92, 255, 0.07) 45%, transparent 70%);
}

/* Bloques sin contenido en ACF: se ocultan aunque tengan display propio */
.cv-cx-reading.cv-is-empty,
.cv-cx-metric.cv-is-empty,
.cv-cx-fact.cv-is-empty,
.cv-cx-step.cv-is-empty,
.cv-cx-table.cv-is-empty,
.cv-cx-kpi.cv-is-empty,
.cv-cx-note.cv-is-empty {
    display: none !important;
}

.cv-cx-reading-section:has(.cv-cx-reading.cv-is-empty) {
    display: none !important;
}

/* ---------- Tablet ---------- */
@media (max-width: 1024px) {
    .cv-cx-hero-media {
        max-width: 620px;
        margin-top: 8px !important;
    }

    .cv-cx-metric {
        left: 16px;
    }

    .cv-cx-story-grid {
        grid-template-columns: 1fr;
        gap: 36px !important;
    }

    .cv-cx-story-head {
        position: relative !important;
        top: auto;
    }

    .cv-cx-reading {
        padding: 40px 36px !important;
    }
}

/* ---------- Móvil ---------- */
@media (max-width: 767px) {
    .cv-cx-hero-media {
        padding-bottom: 0 !important;
    }

    .cv-cx-logo-chip {
        top: 10px;
        left: 10px;
        padding: 7px 11px !important;
    }

    .cv-cx-logo img {
        max-height: 18px !important;
    }

    .cv-cx-metric {
        position: relative !important;
        left: auto;
        bottom: auto;
        min-width: 0;
        max-width: none;
        width: calc(100% - 24px) !important;
        margin: -36px 12px 0 !important;
        padding: 16px 18px 18px !important;
    }

    .cv-cx-facts {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 6px !important;
        margin-top: -48px !important;
        padding: 6px !important;
    }

    .cv-cx-fact {
        padding: 14px 14px 16px !important;
    }

    .cv-cx-fact-value .elementor-heading-title {
        font-size: 15px !important;
    }

    .cv-cx-kpis {
        grid-template-columns: 1fr 1fr !important;
        gap: 10px !important;
        margin-top: 0 !important;
    }

    .cv-cx-results .cv-svc-kpi {
        padding: 20px 16px !important;
    }

    .cv-cx-results .cv-svc-kpi-value .elementor-heading-title {
        font-size: 30px !important;
        white-space: normal;
    }

    .cv-cx-results .cv-svc-kpi-label .elementor-heading-title {
        font-size: 14px !important;
    }

    .cv-cx-kpi-num .elementor-heading-title {
        margin-bottom: 14px !important;
        font-size: 10px !important;
    }

    .cv-cx-table {
        padding: 4px 16px 12px !important;
    }

    .cv-cx-steps {
        padding-left: 30px !important;
    }

    .cv-cx-steps::before,
    .cv-cx-steps::after {
        left: 8px;
    }

    .cv-cx-step {
        padding: 22px 20px 22px !important;
    }

    .cv-cx-step::before {
        left: -29px;
        top: 26px;
        width: 12px;
        height: 12px;
    }

    .cv-cx-more .cv-sec-head-row > .cv-svc-head-cta {
        margin: 0 !important;
    }

    .cv-cx-reading {
        flex-direction: column !important;
        align-items: flex-start !important;
        gap: 24px !important;
        padding: 30px 24px !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-cx-metric.is-floating {
        animation: none !important;
    }

    .cv-cx-steps {
        --cx-progress: 1;
    }

    .cv-cx-step,
    .cv-cx-step:hover {
        transition: none !important;
        transform: none;
    }
}


/* #########################################################
   46. PÁGINA DE CASOS DE ÉXITO (cv-ch-*)
   La página /casos-de-exito/ con el lenguaje de las páginas
   principales (hero centrado) y la misma tarjeta de caso del
   Home (Loop 986, sección 44).

   Hero ........ cv-page-hero + cv-ch-hero; debajo del botón, las
                 cifras: cv-ch-proof, cv-ch-proof-item (contenedor
                 enlazado), cv-ch-proof-client, cv-ch-proof-value
                 (cv-count), cv-ch-proof-label, cv-ch-proof-note
   Casos ....... cv-ch-cases (ID de sección: casos), cv-ch-filter
                 (Filtro de taxonomía de Elementor), cv-ch-grid
   Cómo leer ... cv-ch-how sobre la historia de la página de cada
                 caso (cv-cx-story, cv-cx-steps) + telón cv-srv-curtain
   Preguntas ... la misma sección del hub de Servicios
   Movimiento: módulo 20 del JS.
   ######################################################### */

/* ---------- Hero: cifras debajo del botón ---------- */
.cv-ch-proof {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px !important;
    width: 100% !important;
    max-width: 1040px;
    margin: 56px auto 0 !important;
    padding: 0 !important;
    --widgets-spacing: 0px;
}

.cv-ch-proof-item {
    position: relative;
    overflow: hidden;
    gap: 0 !important;
    padding: 20px 20px 22px !important;
    border: 1px solid rgba(248, 247, 244, 0.1);
    border-radius: 18px;
    background: rgba(8, 9, 12, 0.55);
    text-align: left;
    text-decoration: none !important;
    transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1), border-color 0.35s ease, background-color 0.35s ease;
    --widgets-spacing: 0px;
}

.cv-ch-proof-item > .elementor-element {
    position: relative;
    z-index: 1;
    width: 100% !important;
    margin: 0 !important;
}

.cv-ch-proof-client .elementor-heading-title {
    display: flex;
    align-items: center;
    gap: 8px;
    color: rgba(248, 247, 244, 0.6) !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 11px !important;
    font-weight: 600 !important;
    letter-spacing: 0.08em !important;
    line-height: 1.3 !important;
    text-transform: uppercase !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    text-align: left;
}

.cv-ch-proof-client .elementor-heading-title::before {
    content: "";
    flex: 0 0 auto;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #c8ff36;
}

.cv-ch-proof-value .elementor-heading-title {
    margin-top: 14px !important;
    color: #c8ff36 !important;
    font-size: clamp(30px, 2.6vw, 40px) !important;
    font-weight: 800 !important;
    line-height: 1 !important;
    letter-spacing: -0.04em !important;
    white-space: nowrap;
    text-align: left;
}

.cv-ch-proof-label .elementor-heading-title {
    margin-top: 8px !important;
    color: rgba(248, 247, 244, 0.78) !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    line-height: 1.4 !important;
    letter-spacing: 0 !important;
    text-align: left;
}

/* Hover del Home: la tarjeta sube un poco y el borde se enciende */
@media (hover: hover) {
    .cv-ch-proof-item:hover {
        transform: translateY(-4px);
        border-color: rgba(200, 255, 54, 0.45);
        background-color: rgba(8, 9, 12, 0.75);
    }
}

.cv-ch-proof-note {
    width: 100% !important;
    margin-top: 16px !important;
}

.cv-ch-proof-note .elementor-heading-title {
    color: rgba(248, 247, 244, 0.45) !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    line-height: 1.4 !important;
    text-align: center;
}

/* ---------- Casos ---------- */
#casos {
    scroll-margin-top: 90px;
}

.cv-ch-cases .cv-sec-head-row {
    align-items: flex-end !important;
}

.cv-ch-filter {
    width: 100% !important;
    margin: 0 0 28px !important;
}

.cv-ch-filter .e-filter {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: flex-start;
}

.cv-ch-filter .e-filter-item {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    padding: 10px 16px;
    border: 1px solid rgba(8, 9, 12, 0.12);
    border-radius: 999px;
    background: #ffffff;
    color: #08090c;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.06em;
    line-height: 1;
    text-transform: uppercase;
    cursor: pointer;
    transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease, transform 0.3s ease;
}

.cv-ch-filter .e-filter-item::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #315cff;
    transition: background-color 0.3s ease;
}

.cv-ch-filter .e-filter-item:hover {
    border-color: #315cff;
    transform: translateY(-2px);
}

.cv-ch-filter .e-filter-item[aria-pressed="true"] {
    border-color: #08090c;
    background: #08090c;
    color: #f8f7f4;
}

.cv-ch-filter .e-filter-item[aria-pressed="true"]::before {
    background: #c8ff36;
}

.cv-ch-grid .e-loop-nothing-found-message {
    padding: 28px;
    border-radius: 18px;
    background: #ffffff;
    color: #3c414b;
    text-align: center;
}

/* ---------- Cómo leer cada caso: el telón deja ver el crema de los casos ---------- */
.cv-ch-how {
    position: relative;
    z-index: 1;
}

/* ---------- Tablet ---------- */
@media (min-width: 768px) and (max-width: 1024px) {
    .cv-ch-proof {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        max-width: 640px;
        margin-top: 48px !important;
    }

    .cv-ch-cases .cv-sec-head-row {
        align-items: flex-start !important;
    }
}

/* ---------- Móvil ---------- */
@media (max-width: 767px) {
    .cv-ch-proof {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px !important;
        margin-top: 40px !important;
    }

    .cv-ch-proof-item {
        padding: 16px 14px 18px !important;
        border-radius: 16px;
    }

    .cv-ch-proof-client .elementor-heading-title {
        align-items: flex-start;
        font-size: 10px !important;
        letter-spacing: 0.06em !important;
        white-space: normal;
    }

    .cv-ch-proof-client .elementor-heading-title::before {
        margin-top: 3px;
    }

    .cv-ch-proof-value .elementor-heading-title {
        margin-top: 12px !important;
        font-size: 26px !important;
    }

    .cv-ch-proof-label .elementor-heading-title {
        font-size: 12.5px !important;
    }

    .cv-ch-cases .cv-sec-head-row {
        align-items: flex-start !important;
    }

    .cv-ch-filter {
        margin-bottom: 22px !important;
    }

    .cv-ch-filter .e-filter {
        flex-wrap: nowrap;
        overflow-x: auto;
        margin: 0 -20px;
        padding: 0 20px 4px;
        scrollbar-width: none;
    }

    .cv-ch-filter .e-filter::-webkit-scrollbar {
        display: none;
    }

    .cv-ch-filter .e-filter-item {
        flex: 0 0 auto;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-ch-proof-item,
    .cv-ch-filter .e-filter-item {
        transition: none !important;
    }
}


/* #########################################################
   47. HEADER (v4.0.5)
   1. El logo vuelve a llevar al inicio después del scroll.
   2. Enlaces con # (Metodología en el Home): ya no quedan
      marcados como página activa; se marcan solo mientras su
      sección está en pantalla (cv-nav-active, lo pone el JS).
   3. Menú de escritorio: letras con su color pleno (blanco sobre
      la barra negra, negro sobre la blanca) y una línea plana que
      entra de izquierda a derecha: lima sobre negro, azul sobre
      blanco. La línea marca el hover y la página activa.
   4. Tarjeta CTA del megamenú sin degradado.
   El header no se esconde al bajar: queda fijo como siempre.
   El :not(#cv-h) solo sube la prioridad por encima de los
   estilos que ElementsKit escribe para el widget.
   ######################################################### */

/* ---------- 1. Logo clicable ---------- */

.cv-header .cv-logo-wrap .cv-logo-white {
    pointer-events: auto;
}

.cv-header.elementor-sticky--effects .cv-logo-wrap .cv-logo-white,
.elementor-sticky--effects .cv-header .cv-logo-wrap .cv-logo-white {
    pointer-events: none !important;
}

.cv-header.elementor-sticky--effects:not(.elementor-sticky__spacer) .cv-logo-wrap .cv-logo-dark,
.elementor-sticky--effects .cv-header:not(.elementor-sticky__spacer) .cv-logo-wrap .cv-logo-dark {
    pointer-events: auto !important;
}


/* ---------- 2 y 3. Menú ---------- */

.cv-header:not(#cv-h) {
    --cv-nav-text: #ffffff;
    --cv-nav-line: var(--cv-lime);
}

.cv-header.elementor-sticky--effects:not(#cv-h),
.elementor-sticky--effects .cv-header:not(#cv-h) {
    --cv-nav-text: #08090c;
    --cv-nav-line: var(--cv-blue);
}

@media (min-width: 1025px) {

    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li > a,
    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li > a:hover,
    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li:hover > a,
    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li.focus > a,
    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li.current-menu-item > a,
    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li.current_page_item > a,
    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li.current-menu-ancestor > a,
    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li.current_page_ancestor > a {
        color: var(--cv-nav-text) !important;
        background: transparent !important;
    }

    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li > a::after {
        content: "";
        position: absolute;
        left: 16px;
        right: 16px;
        bottom: 3px;
        height: 2px;
        border-radius: 2px;
        background: var(--cv-nav-line) !important;
        background-color: var(--cv-nav-line) !important;
        transform: scaleX(0);
        transform-origin: right center;
        transition: transform 0.45s var(--cv-ease), background-color 0.3s ease;
        pointer-events: none;
    }

    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li > a:hover::after,
    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li:hover > a::after,
    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li.focus > a::after,
    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li.current-menu-item > a::after,
    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li.current_page_item > a::after,
    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li.current-menu-ancestor > a::after,
    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li.current_page_ancestor > a::after,
    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li > a.cv-nav-active::after {
        transform: scaleX(1);
        transform-origin: left center;
    }

    /* Enlaces con # marcados por WordPress: sin línea fija */
    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li.current-menu-item:not(:hover) > a[href*="#"]:not(.cv-nav-active)::after,
    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li.current_page_item:not(:hover) > a[href*="#"]:not(.cv-nav-active)::after {
        transform: scaleX(0);
    }

    /* Flecha de los submenús: gira al abrir */
    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li > a .elementskit-submenu-indicator {
        transition: transform 0.35s var(--cv-ease) !important;
    }

    .cv-header:not(#cv-h) .cv-header-menu .elementskit-navbar-nav > li:hover > a .elementskit-submenu-indicator {
        transform: rotate(180deg);
    }
}

/* Panel móvil: los enlaces con # tampoco quedan marcados */
@media (max-width: 1024px) {
    .cv-header:not(#cv-h) .cv-header-menu .elementskit-menu-container .elementskit-navbar-nav > li.current-menu-item > a[href*="#"]:not(.cv-nav-active),
    .cv-header:not(#cv-h) .cv-header-menu .elementskit-menu-container .elementskit-navbar-nav > li.current_page_item > a[href*="#"]:not(.cv-nav-active) {
        color: #08090c !important;
        background: transparent !important;
    }
}


/* ---------- 4. Megamenú: tarjeta CTA plana ---------- */

.cv-mega-cta {
    background: #08090c !important;
    background-image: none !important;
}


/* #########################################################
   48. PÁGINA CÓMO TRABAJAMOS (cv-ct-*) (v4.0.4)
   La página /como-trabajamos/ con el lenguaje de las páginas
   principales (hero centrado con el mapa animado debajo del
   botón) y movimiento propio:

   Momentos .... cv-ct-track-section (ID de sección: momentos),
                 cv-ct-track, cv-ct-track-head (sticky), cv-ct-meter,
                 cv-ct-meter-num, cv-ct-meter-total, cv-ct-meter-name,
                 cv-ct-stages, cv-ct-stage, cv-ct-stage-num,
                 cv-ct-stage-title, cv-ct-stage-text, cv-ct-stage-chips,
                 cv-ct-stage-out. El JS agrega la línea que se dibuja
                 con el scroll (cv-ct-rail) y marca el momento activo.
   Modelos ..... la sección azul del hub de Servicios (cv-srv-caps-
                 section + cv-srv-hub + telón cv-srv-curtain) con
                 cv-ct-models: 3 tarjetas + la celda oscura.
   Principios .. cv-ct-principles-section (oscura, cv-fx),
                 cv-ct-principles, cv-ct-principle, cv-ct-principle-num,
                 cv-ct-principle-title, cv-ct-principle-text.
   Primeros pasos cv-ct-path-section (ID: primeros-pasos), cv-ct-path,
                 cv-ct-step, cv-ct-step-num, cv-ct-step-meta (cv-count),
                 cv-ct-step-title, cv-ct-step-text; cv-ct-team,
                 cv-ct-team-copy, cv-ct-team-side, cv-ct-team-stat
                 (cv-count), cv-ct-team-label, cv-ct-team-chips.
   Preguntas, carrusel de servicios y cierre: los mismos del hub
   de Servicios y de las páginas de servicio.
   Movimiento: módulo 22 del JS.
   ######################################################### */

#momentos,
#primeros-pasos {
    scroll-margin-top: 90px;
}

/* ---------- Momentos: cabecera sticky + línea que se dibuja ---------- */
.cv-ct-track {
    display: grid !important;
    grid-template-columns: minmax(0, 0.82fr) minmax(0, 1.18fr);
    gap: 72px !important;
    align-items: start;
    --widgets-spacing: 0px;
}

.cv-ct-track > .e-con {
    width: auto !important;
}

.cv-ct-track-head {
    position: sticky;
    top: 120px;
    align-self: start;
    gap: 0 !important;
    --widgets-spacing: 0px;
}

.cv-ct-track-head > .elementor-element {
    margin-bottom: 0 !important;
}

/* Contador del momento activo */
.cv-ct-meter {
    display: grid !important;
    grid-template-columns: auto auto 1fr;
    align-items: end;
    column-gap: 10px !important;
    row-gap: 0 !important;
    width: 100% !important;
    max-width: 420px;
    margin-top: 32px !important;
    padding: 18px 20px !important;
    border-radius: 18px;
    background: #ffffff;
    box-shadow: 0 0 10px rgba(2, 20, 255, 0.05);
    --widgets-spacing: 0px;
}

.cv-ct-meter > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

.cv-ct-meter-num .elementor-heading-title {
    display: inline-block;
    min-width: 2ch;
    color: #315cff !important;
    font-size: 40px !important;
    font-weight: 800 !important;
    line-height: 1 !important;
    letter-spacing: -0.04em !important;
    font-variant-numeric: tabular-nums;
}

.cv-ct-meter-total .elementor-heading-title {
    padding-bottom: 5px;
    color: rgba(8, 9, 12, 0.35) !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    line-height: 1 !important;
    letter-spacing: 0.06em !important;
}

.cv-ct-meter-name {
    justify-self: end;
}

.cv-ct-meter-name .elementor-heading-title {
    padding-bottom: 3px;
    color: #08090c !important;
    font-size: 17px !important;
    font-weight: 800 !important;
    line-height: 1.15 !important;
    letter-spacing: -0.02em !important;
    text-align: right;
}

/* Barra de avance dentro del contador (la agrega el JS) */
.cv-ct-meter-bar {
    grid-column: 1 / -1;
    position: relative;
    height: 3px;
    margin-top: 14px;
    border-radius: 3px;
    background: rgba(49, 92, 255, 0.12);
    overflow: hidden;
}

.cv-ct-meter-bar > span {
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: #315cff;
    transform: scaleX(var(--p, 0));
    transform-origin: left center;
}

.cv-ct-meter-swap {
    display: inline-block;
    will-change: transform;
}

/* Lista de momentos */
.cv-ct-stages {
    position: relative;
    gap: 14px !important;
    padding-left: 44px !important;
    --widgets-spacing: 0px;
}

/* Línea de fondo y línea que se llena (el JS agrega cv-ct-rail) */
.cv-ct-rail {
    position: absolute;
    top: 30px;
    bottom: 30px;
    left: 11px;
    width: 2px;
    border-radius: 2px;
    background: rgba(49, 92, 255, 0.14);
    pointer-events: none;
}

.cv-ct-rail > span {
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: #315cff;
    transform: scaleY(var(--p, 0));
    transform-origin: center top;
}

.cv-ct-stage {
    position: relative;
    gap: 0 !important;
    padding: 26px 28px 26px !important;
    border-radius: 22px;
    background: #f8f7f4;
    box-shadow: 0 0 10px rgba(2, 20, 255, 0.04);
    transition: background-color 0.5s ease, box-shadow 0.5s ease, transform 0.5s var(--cv-ease) !important;
    --widgets-spacing: 0px;
}

.cv-ct-stage > .elementor-element {
    margin-bottom: 0 !important;
}

/* Nodo de la línea, a la altura de la etiqueta */
.cv-ct-stage::before {
    content: "";
    position: absolute;
    top: 30px;
    left: -40px;
    width: 16px;
    height: 16px;
    border: 2px solid rgba(49, 92, 255, 0.35);
    border-radius: 50%;
    background: #f5f2ea;
    transition: background-color 0.45s ease, border-color 0.45s ease, transform 0.45s var(--cv-ease), box-shadow 0.45s ease;
}

.cv-ct-stage.is-passed::before {
    border-color: #315cff;
    background: #315cff;
}

.cv-ct-stage.is-active {
    background: #ffffff;
    box-shadow: 0 26px 54px rgba(8, 9, 12, 0.08);
    transform: translateX(6px);
}

.cv-ct-stage.is-active::before {
    border-color: #315cff;
    background: #315cff;
    transform: scale(1.2);
    box-shadow: 0 0 0 6px rgba(49, 92, 255, 0.14);
}

.cv-ct-stage-num .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    border: 1px solid rgba(49, 92, 255, 0.22);
    border-radius: 999px;
    background: #ffffff;
    color: #315cff !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.06em !important;
    line-height: 1.2 !important;
    text-transform: uppercase;
    transition: background-color 0.45s ease, color 0.45s ease, border-color 0.45s ease;
}

.cv-ct-stage.is-active .cv-ct-stage-num .elementor-heading-title {
    border-color: #315cff;
    background: #315cff;
    color: #ffffff !important;
}

.cv-ct-stage-title .elementor-heading-title {
    margin-top: 16px !important;
    color: #08090c !important;
    font-size: clamp(24px, 2.2vw, 32px) !important;
    font-weight: 800 !important;
    line-height: 1.08 !important;
    letter-spacing: -0.04em !important;
}

.cv-ct-stage-text p {
    max-width: 58ch;
    margin: 12px 0 0 !important;
    color: var(--cv-p-on-light) !important;
    font-size: 16px !important;
    font-weight: 400 !important;
    line-height: 1.55 !important;
}

.cv-ct-stage-chips ul {
    margin-top: 16px !important;
}

.cv-ct-stage.is-active .cv-ct-stage-chips li {
    border-color: rgba(49, 92, 255, 0.32);
}

.cv-ct-stage-out {
    margin-top: 18px !important;
    padding-top: 16px;
    border-top: 1px solid rgba(8, 9, 12, 0.08);
}

.cv-ct-stage-out p {
    margin: 0 !important;
    color: #08090c !important;
    font-size: 15px !important;
    font-weight: 600 !important;
    line-height: 1.45 !important;
}

.cv-ct-stage-out strong {
    display: inline-block;
    margin-right: 8px;
    color: #315cff;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

/* ---------- Modelos (sección azul del hub con 3 tarjetas + celda oscura) ---------- */
@media (min-width: 768px) {
    .cv-ct-models > .cv-srv-card,
    .cv-ct-models > .cv-srv-card-cta {
        min-height: 300px;
    }
}

.cv-ct-models .cv-srv-card-cta .cv-srv-card-title .elementor-heading-title {
    margin-top: 0 !important;
}

/* Imagen de la celda oscura: llena el espacio entre el texto y el botón */
.cv-ct-models .cv-srv-card-cta .cv-float-media {
    width: 70% !important;
    max-width: 200px;
    margin: 18px auto 0 !important;
}

@media (max-width: 767px) {
    .cv-ct-models .cv-srv-card-cta .cv-float-media {
        display: none;
    }
}

/* ---------- Principios: filas que se dibujan sobre fondo oscuro ---------- */
.cv-ct-principles-section .cv-h2 .elementor-heading-title {
    color: #ffffff !important;
}

.cv-ct-principles-section .cv-sec-lead,
.cv-ct-principles-section .cv-sec-lead p {
    color: rgba(248, 247, 244, 0.78) !important;
}

.cv-ct-principles {
    gap: 0 !important;
    --widgets-spacing: 0px;
}

.cv-ct-principle {
    position: relative;
    display: grid !important;
    grid-template-columns: 170px minmax(0, 1.1fr) minmax(0, 0.9fr);
    align-items: baseline;
    gap: 32px !important;
    padding: 30px 0 !important;
    --widgets-spacing: 0px;
}

.cv-ct-principle > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

/* Línea superior plana: se dibuja de izquierda a derecha */
.cv-ct-principle::before,
.cv-ct-principles::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    height: 1px;
    background: rgba(248, 247, 244, 0.14);
}

.cv-ct-principle::before {
    top: 0;
}

.cv-ct-principles {
    position: relative;
}

.cv-ct-principles::after {
    bottom: 0;
}

.cv-ct-principle::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 1px;
    background: #c8ff36;
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 1.1s var(--cv-ease);
}

.cv-ct-principle.is-seen::after {
    transform: scaleX(1);
}

.cv-ct-principle-num .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    border: 1px solid rgba(248, 247, 244, 0.18);
    border-radius: 999px;
    color: rgba(248, 247, 244, 0.7) !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.06em !important;
    line-height: 1.2 !important;
    text-transform: uppercase;
    white-space: nowrap;
    transition: background-color 0.45s ease, color 0.45s ease, border-color 0.45s ease;
}

.cv-ct-principle.is-focus .cv-ct-principle-num .elementor-heading-title {
    border-color: #c8ff36;
    background: #c8ff36;
    color: #08090c !important;
}

.cv-ct-principle-title .elementor-heading-title {
    color: rgba(248, 247, 244, 0.4) !important;
    font-size: clamp(22px, 2vw, 30px) !important;
    font-weight: 800 !important;
    line-height: 1.12 !important;
    letter-spacing: -0.035em !important;
    transition: color 0.6s ease !important;
}

.cv-ct-principle.is-seen .cv-ct-principle-title .elementor-heading-title {
    color: #ffffff !important;
}

.cv-ct-principle-text p {
    margin: 0 !important;
    color: rgba(248, 247, 244, 0.55) !important;
    font-size: 16px !important;
    font-weight: 400 !important;
    line-height: 1.55 !important;
    transition: color 0.6s ease;
}

.cv-ct-principle.is-seen .cv-ct-principle-text p {
    color: var(--cv-p-on-dark) !important;
}

/* Sin JS (o con movimiento reducido) todo se ve encendido */
.cv-ct-principles:not(.cv-ct-ready) .cv-ct-principle-title .elementor-heading-title {
    color: #ffffff !important;
}

.cv-ct-principles:not(.cv-ct-ready) .cv-ct-principle-text p {
    color: var(--cv-p-on-dark) !important;
}

/* ---------- Primeros pasos: cuatro pasos unidos por una línea ---------- */
.cv-ct-path {
    position: relative;
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px !important;
    --widgets-spacing: 0px;
}

.cv-ct-path > .e-con {
    width: auto !important;
}

/* Línea que une los nodos (la agrega el JS) */
.cv-ct-path-line {
    position: absolute;
    top: 30px;
    left: 28px;
    right: 28px;
    height: 2px;
    border-radius: 2px;
    background: rgba(49, 92, 255, 0.14);
    pointer-events: none;
}

.cv-ct-path-line > span {
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: #315cff;
    transform: scaleX(var(--p, 0));
    transform-origin: left center;
}

/* Pulso que recorre la línea cuando ya está dibujada */
.cv-ct-path-line > i {
    position: absolute;
    top: 50%;
    left: 0;
    width: 8px;
    height: 8px;
    margin: -4px 0 0 -4px;
    border-radius: 50%;
    background: #315cff;
    box-shadow: 0 0 0 4px rgba(49, 92, 255, 0.18);
    opacity: 0;
}

.cv-ct-path-line.is-drawn > i {
    animation: cv-ct-pulse-x 3.6s cubic-bezier(0.65, 0, 0.35, 1) infinite;
}

@keyframes cv-ct-pulse-x {
    0% { left: 0; opacity: 0; }
    10% { opacity: 1; }
    90% { opacity: 1; }
    100% { left: 100%; opacity: 0; }
}

.cv-ct-step {
    position: relative;
    z-index: 1;
    gap: 0 !important;
    padding: 0 !important;
    --widgets-spacing: 0px;
}

.cv-ct-step > .elementor-element {
    margin-bottom: 0 !important;
}

/* Nodo con el número del paso */
.cv-ct-step-num .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 60px;
    height: 60px;
    border: 2px solid rgba(49, 92, 255, 0.22);
    border-radius: 50%;
    background: #ffffff;
    color: #315cff !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    letter-spacing: 0.04em !important;
    line-height: 1 !important;
    transition: background-color 0.45s ease, color 0.45s ease, border-color 0.45s ease, box-shadow 0.45s ease;
}

.cv-ct-step.is-on .cv-ct-step-num .elementor-heading-title {
    border-color: #315cff;
    background: #315cff;
    color: #ffffff !important;
    box-shadow: 0 10px 26px rgba(49, 92, 255, 0.3);
}

.cv-ct-step-card {
    gap: 0 !important;
    margin-top: 18px !important;
    padding: 22px 22px 24px !important;
    border-radius: 22px;
    background: #f8f7f4;
    box-shadow: 0 0 10px rgba(2, 20, 255, 0.04);
    flex-grow: 1;
    transition: background-color 0.45s ease, box-shadow 0.45s ease, transform 0.45s var(--cv-ease) !important;
    --widgets-spacing: 0px;
}

.cv-ct-step-card > .elementor-element {
    margin-bottom: 0 !important;
}

.cv-ct-step-meta .elementor-heading-title {
    color: #315cff !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.06em !important;
    line-height: 1.2 !important;
    text-transform: uppercase;
}

.cv-ct-step-title .elementor-heading-title {
    margin-top: 12px !important;
    color: #08090c !important;
    font-size: 20px !important;
    font-weight: 800 !important;
    line-height: 1.15 !important;
    letter-spacing: -0.03em !important;
}

.cv-ct-step-text p {
    margin: 10px 0 0 !important;
    color: var(--cv-p-on-light) !important;
    font-size: 15px !important;
    font-weight: 400 !important;
    line-height: 1.55 !important;
}

/* Hover del sitio: la tarjeta pasa a blanco con sombra suave */
@media (hover: hover) {
    .cv-ct-step:hover .cv-ct-step-card {
        background: #ffffff;
        box-shadow: 0 18px 40px rgba(8, 9, 12, 0.08);
        transform: translateY(-4px);
    }
}

/* Equipo: tarjeta oscura con luz del mouse */
.cv-ct-team {
    position: relative;
    display: grid !important;
    grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
    gap: 56px !important;
    align-items: center;
    margin-top: 56px !important;
    padding: 44px 48px !important;
    border-radius: 22px;
    background: #08090c;
    overflow: hidden;
    --widgets-spacing: 0px;
}

.cv-ct-team > .e-con {
    position: relative;
    z-index: 5;
    width: auto !important;
    gap: 0 !important;
    padding: 0 !important;
    --widgets-spacing: 0px;
}

.cv-ct-team .elementor-element {
    margin-bottom: 0 !important;
}

.cv-ct-team .cv-glow-layer {
    mix-blend-mode: screen;
    background: radial-gradient(360px circle at var(--gx, 50%) var(--gy, 50%), rgba(49, 92, 255, 0.45), rgba(49, 92, 255, 0.08) 45%, transparent 70%);
}

.cv-ct-team-title .elementor-heading-title {
    margin-top: 16px !important;
    text-wrap: balance;
    color: #ffffff !important;
    font-size: clamp(24px, 2.2vw, 32px) !important;
    font-weight: 800 !important;
    line-height: 1.08 !important;
    letter-spacing: -0.04em !important;
}

.cv-ct-team-text p {
    max-width: 56ch;
    margin: 12px 0 0 !important;
    color: rgba(248, 247, 244, 0.78) !important;
    font-size: 16px !important;
    font-weight: 400 !important;
    line-height: 1.55 !important;
}

.cv-ct-team-copy .elementor-widget-button {
    width: auto !important;
    margin-top: 20px !important;
}

.cv-ct-team-stat .elementor-heading-title {
    color: #c8ff36 !important;
    font-size: clamp(44px, 4vw, 60px) !important;
    font-weight: 800 !important;
    line-height: 1 !important;
    letter-spacing: -0.04em !important;
}

.cv-ct-team-label .elementor-heading-title {
    margin-top: 8px !important;
    color: rgba(248, 247, 244, 0.78) !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    line-height: 1.4 !important;
}

.cv-ct-team-chips ul {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 22px 0 0 !important;
    padding: 0 !important;
    list-style: none;
}

.cv-ct-team-chips li {
    padding: 6px 11px;
    border: 1px solid rgba(248, 247, 244, 0.18);
    border-radius: 999px;
    color: #f8f7f4;
    font-size: 12.5px;
    font-weight: 600;
    line-height: 1.25;
    transition: border-color 0.35s ease, color 0.35s ease;
}

@media (hover: hover) {
    .cv-ct-team:hover .cv-ct-team-chips li {
        border-color: rgba(200, 255, 54, 0.4);
    }
}

/* ---------- Tablet ---------- */
@media (max-width: 1024px) {
    .cv-ct-track {
        grid-template-columns: 1fr;
        gap: 40px !important;
    }

    .cv-ct-track-head {
        position: relative !important;
        top: auto !important;
    }

    /* El contador solo tiene sentido con la cabecera fija */
    .cv-ct-meter {
        display: none !important;
    }

    .cv-ct-principle {
        grid-template-columns: 150px minmax(0, 1fr);
        gap: 12px 28px !important;
    }

    .cv-ct-principle-text {
        grid-column: 2;
    }

    .cv-ct-path {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        row-gap: 28px !important;
    }

    .cv-ct-path-line {
        display: none;
    }

    .cv-ct-team {
        grid-template-columns: 1fr;
        gap: 32px !important;
        padding: 36px 32px !important;
    }
}

/* ---------- Móvil ---------- */
@media (max-width: 767px) {
    .cv-ct-stages {
        gap: 10px !important;
        padding-left: 30px !important;
    }

    .cv-ct-rail {
        left: 6px;
        top: 26px;
        bottom: 26px;
    }

    .cv-ct-stage {
        padding: 20px !important;
    }

    .cv-ct-stage::before {
        top: 26px;
        left: -30px;
        width: 14px;
        height: 14px;
    }

    .cv-ct-stage.is-active {
        transform: none;
    }

    .cv-ct-stage-text p,
    .cv-ct-principle-text p,
    .cv-ct-team-text p {
        font-size: 15px !important;
    }

    .cv-ct-principle {
        grid-template-columns: 1fr;
        gap: 12px !important;
        padding: 24px 0 !important;
    }

    .cv-ct-principle-text {
        grid-column: auto;
    }

    /* En móvil los pasos van en columna, unidos por una línea vertical */
    .cv-ct-path {
        grid-template-columns: 1fr;
        row-gap: 0 !important;
    }

    .cv-ct-step {
        display: grid !important;
        grid-template-columns: 48px minmax(0, 1fr);
        column-gap: 14px !important;
        padding-bottom: 12px !important;
    }

    .cv-ct-step::before {
        content: "";
        position: absolute;
        top: 48px;
        bottom: 0;
        left: 23px;
        width: 2px;
        background: rgba(49, 92, 255, 0.14);
    }

    .cv-ct-step:last-child::before {
        display: none;
    }

    .cv-ct-step-num .elementor-heading-title {
        width: 48px;
        height: 48px;
        font-size: 13px !important;
    }

    .cv-ct-step-card {
        margin-top: 0 !important;
        padding: 18px 18px 20px !important;
    }

    .cv-ct-team {
        margin-top: 36px !important;
        padding: 28px 22px !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-ct-path-line.is-drawn > i {
        animation: none !important;
    }

    .cv-ct-stage,
    .cv-ct-stage::before,
    .cv-ct-principle::after {
        transition: none !important;
    }
}


/* #########################################################
   49. PÁGINA NOSOTROS (cv-ns-*) (v4.0.6)
   La página /nosotros/ con el lenguaje de las páginas
   principales (hero centrado con el mapa animado debajo del
   botón) y movimiento propio:

   Por qué ..... cv-ns-why-section (crema, ID: por-que), cv-ns-why,
                 cv-ns-why-head, cv-ns-why-text; tarjeta cv-ns-chain
                 con cv-ns-chain-top, cv-ns-chain-label,
                 cv-ns-chain-state (cv-ns-chain-off + cv-ns-chain-on),
                 cv-ns-chain-steps, cv-ns-link, cv-ns-link-num,
                 cv-ns-link-title, cv-ns-link-text, cv-ns-chain-out.
                 Las piezas entran sueltas y se alinean con el scroll
                 mientras una línea las une (el JS agrega
                 cv-ns-chain-wire).
   Enfoque ..... la sección azul del hub de Servicios (cv-srv-caps-
                 section + cv-srv-hub + telón cv-srv-curtain, ID:
                 enfoque) con cv-ns-principles: 5 tarjetas + la celda
                 oscura, en tres columnas.
   Liderazgo ... cv-ns-lead-section (ID: liderazgo), cv-ns-lead,
                 cv-ns-lead-media, cv-ns-lead-photo, cv-ns-lead-badge
                 (cv-ns-lead-badge-num con cv-count,
                 cv-ns-lead-badge-label), cv-ns-lead-tag
                 (cv-ns-lead-tag-name, cv-ns-lead-tag-role),
                 cv-ns-lead-copy, cv-ns-lead-text, cv-ns-quote,
                 cv-ns-quote-text, cv-ns-quote-by, cv-ns-areas-label,
                 cv-ns-areas.
   Equipo ...... cv-ns-team-section (oscura, cv-fx, ID: equipo),
                 cv-ns-team, cv-ns-team-head, cv-ns-points,
                 cv-ns-point, cv-ns-point-num, cv-ns-point-title,
                 cv-ns-point-text; red cv-ns-orbit con
                 cv-ns-orbit-core (cv-ns-orbit-core-title,
                 cv-ns-orbit-core-sub) y un cv-ns-orbit-node por
                 especialista. El JS los ubica en círculo y dibuja las
                 líneas (cv-ns-orbit-svg); en móvil quedan como chips.
   Resultados .. cv-ns-proof-section con las cifras de la página de
                 casos (cv-ch-proof + cv-ns-proof) y cv-ns-proof-foot,
                 cv-ns-proof-note.
   Preguntas y cierre: los mismos del hub de Servicios.
   Movimiento: módulo 23 del JS.
   ######################################################### */

#por-que,
#enfoque,
#liderazgo,
#equipo {
    scroll-margin-top: 90px;
}

/* ---------- Por qué existimos ---------- */
/* Las piezas entran desordenadas: que nunca generen scroll lateral */
.cv-ns-why-section {
    overflow-x: clip;
}

.cv-ns-why {
    display: grid !important;
    grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
    gap: 72px !important;
    align-items: center;
    --widgets-spacing: 0px;
}

.cv-ns-why > .e-con {
    width: auto !important;
}

.cv-ns-why-head {
    gap: 0 !important;
    --widgets-spacing: 0px;
}

.cv-ns-why-head > .elementor-element {
    margin-bottom: 0 !important;
}

.cv-ns-why-head .cv-sec-lead {
    margin-top: 20px !important;
}

.cv-ns-why-text p {
    max-width: 48ch;
    margin: 16px 0 0 !important;
    color: var(--cv-p-on-light) !important;
    font-size: 16px !important;
    font-weight: 400 !important;
    line-height: 1.6 !important;
}

/* Tarjeta con las cuatro piezas */
.cv-ns-chain {
    gap: 0 !important;
    padding: 28px !important;
    border-radius: 22px;
    background: #ffffff;
    box-shadow: 0 0 10px rgba(2, 20, 255, 0.05);
    --widgets-spacing: 0px;
}

.cv-ns-chain > .elementor-element {
    margin-bottom: 0 !important;
}

.cv-ns-chain > .cv-ns-chain-top {
    align-items: center !important;
    justify-content: space-between !important;
    gap: 12px !important;
    margin-bottom: 22px !important;
    --widgets-spacing: 0px;
}

.cv-ns-chain-top > .elementor-element,
.cv-ns-chain-top > .e-con {
    width: auto !important;
    margin: 0 !important;
}

.cv-ns-chain-label .elementor-heading-title {
    color: rgba(8, 9, 12, 0.5) !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.06em !important;
    line-height: 1.3 !important;
    text-transform: uppercase;
}

/* Estado: "Piezas sueltas" pasa a "Piezas conectadas" */
.cv-ns-chain-state {
    display: grid !important;
    flex: 0 0 auto;
    padding: 0 !important;
    --widgets-spacing: 0px;
}

.cv-ns-chain-state > .elementor-element {
    grid-area: 1 / 1;
    width: auto !important;
    margin: 0 !important;
    transition: opacity 0.45s ease, transform 0.45s var(--cv-ease);
}

.cv-ns-chain-state .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 7px 12px;
    border-radius: 999px;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 11.5px !important;
    font-weight: 600 !important;
    letter-spacing: 0.06em !important;
    line-height: 1.2 !important;
    text-transform: uppercase;
    white-space: nowrap;
}

.cv-ns-chain-state .elementor-heading-title::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: currentColor;
}

.cv-ns-chain-off .elementor-heading-title {
    border: 1px dashed rgba(8, 9, 12, 0.25);
    color: rgba(8, 9, 12, 0.55) !important;
}

.cv-ns-chain-on .elementor-heading-title {
    border: 1px solid #c8ff36;
    background: #c8ff36;
    color: #08090c !important;
}

.cv-ns-chain-on {
    opacity: 0;
    transform: translateY(8px);
}

.cv-ns-chain.is-linked .cv-ns-chain-off {
    opacity: 0;
    transform: translateY(-8px);
}

.cv-ns-chain.is-linked .cv-ns-chain-on {
    opacity: 1;
    transform: none;
}

/* Sin JS (o con movimiento reducido) la tarjeta se ve conectada */
.cv-ns-chain:not(.cv-ns-ready) .cv-ns-chain-off {
    opacity: 0;
}

.cv-ns-chain:not(.cv-ns-ready) .cv-ns-chain-on {
    opacity: 1;
    transform: none;
}

/* Piezas */
.cv-ns-chain-steps {
    position: relative;
    gap: 10px !important;
    --widgets-spacing: 0px;
}

.cv-ns-link {
    position: relative;
    z-index: 1;
    display: grid !important;
    grid-template-columns: 36px minmax(0, 170px) minmax(0, 1fr);
    align-items: center;
    gap: 18px !important;
    padding: 16px 20px 16px 16px !important;
    border-radius: 18px;
    background: #f8f7f4;
    transition: background-color 0.45s ease, box-shadow 0.45s ease;
    --widgets-spacing: 0px;
}

.cv-ns-link > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

.cv-ns-link-num .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border: 1.5px dashed rgba(49, 92, 255, 0.4);
    border-radius: 50%;
    background: #ffffff;
    color: #315cff !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    line-height: 1 !important;
    transition: background-color 0.45s ease, color 0.45s ease, border-color 0.45s ease, box-shadow 0.45s ease;
}

.cv-ns-link.is-on .cv-ns-link-num .elementor-heading-title,
.cv-ns-chain:not(.cv-ns-ready) .cv-ns-link-num .elementor-heading-title {
    border-style: solid;
    border-color: #315cff;
    background: #315cff;
    color: #ffffff !important;
}

.cv-ns-link.is-on .cv-ns-link-num .elementor-heading-title {
    box-shadow: 0 0 0 5px rgba(49, 92, 255, 0.14);
}

.cv-ns-link-title .elementor-heading-title {
    color: #08090c !important;
    font-size: 18px !important;
    font-weight: 800 !important;
    line-height: 1.15 !important;
    letter-spacing: -0.02em !important;
}

.cv-ns-link-text p {
    margin: 0 !important;
    color: var(--cv-p-on-light) !important;
    font-size: 15px !important;
    font-weight: 400 !important;
    line-height: 1.5 !important;
}

.cv-ns-chain.is-linked .cv-ns-link {
    background: #ffffff;
    box-shadow: 0 10px 26px rgba(8, 9, 12, 0.06);
}

/* Línea que une las piezas (la agrega el JS): punteada de fondo,
   azul y continua a medida que se conectan */
.cv-ns-chain-wire {
    position: absolute;
    top: 34px;
    bottom: 34px;
    left: 33px;
    width: 2px;
    background: repeating-linear-gradient(to bottom, rgba(49, 92, 255, 0.3) 0 5px, transparent 5px 10px);
    pointer-events: none;
}

.cv-ns-chain-wire > span {
    position: absolute;
    inset: 0;
    border-radius: 2px;
    background: #315cff;
    transform: scaleY(var(--p, 0));
    transform-origin: center top;
}

.cv-ns-chain-out {
    margin-top: 20px !important;
    padding-top: 18px;
    border-top: 1px solid rgba(8, 9, 12, 0.08);
}

.cv-ns-chain-out p {
    margin: 0 !important;
    color: #08090c !important;
    font-size: 15px !important;
    font-weight: 600 !important;
    line-height: 1.45 !important;
}

.cv-ns-chain-out strong {
    display: inline-block;
    margin-right: 8px;
    color: #315cff;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

/* ---------- Enfoque: cinco principios + celda oscura en tres columnas ---------- */
.cv-ns-principles {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

@media (min-width: 768px) {
    .cv-ns-principles > .cv-srv-card,
    .cv-ns-principles > .cv-srv-card-cta {
        min-height: 250px;
    }
}

.cv-ns-principles .cv-srv-card-cta .cv-srv-card-title .elementor-heading-title {
    margin-top: 0 !important;
}

/* ---------- Liderazgo ---------- */
.cv-ns-lead {
    display: grid !important;
    grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
    gap: 72px !important;
    align-items: center;
    --widgets-spacing: 0px;
}

.cv-ns-lead > .e-con {
    width: auto !important;
}

.cv-ns-lead-media {
    position: relative;
    width: 100% !important;
    max-width: 440px;
    padding: 0 !important;
    --widgets-spacing: 0px;
}

.cv-ns-lead-photo {
    width: 100% !important;
    margin: 0 !important;
    border-radius: 24px;
    overflow: hidden;
    background: #f5f2ea;
}

.cv-ns-lead-photo .elementor-widget-container {
    overflow: hidden;
    border-radius: 24px;
}

.cv-ns-lead-photo img {
    display: block;
    width: 100% !important;
    height: auto !important;
    aspect-ratio: 4 / 5;
    object-fit: cover;
    object-position: 50% 20%;
    border-radius: 24px;
    will-change: transform;
}

/* Cifra que flota sobre la foto */
.cv-ns-lead-badge {
    position: absolute !important;
    top: 36px;
    right: -32px;
    z-index: 2;
    width: 190px !important;
    gap: 0 !important;
    padding: 18px 20px !important;
    border-radius: 18px;
    background: #08090c;
    box-shadow: 0 22px 44px rgba(8, 9, 12, 0.22);
    animation: cv-ns-float 6s ease-in-out infinite;
    --widgets-spacing: 0px;
}

.cv-ns-lead-badge > .elementor-element {
    margin: 0 !important;
}

.cv-ns-lead-badge-num .elementor-heading-title {
    color: #c8ff36 !important;
    font-size: 40px !important;
    font-weight: 800 !important;
    line-height: 1 !important;
    letter-spacing: -0.04em !important;
}

.cv-ns-lead-badge-label .elementor-heading-title {
    margin-top: 8px !important;
    color: rgba(248, 247, 244, 0.8) !important;
    font-size: 13px !important;
    font-weight: 500 !important;
    line-height: 1.4 !important;
}

/* Nombre sobre la foto */
.cv-ns-lead-tag {
    position: absolute !important;
    left: 18px;
    right: 18px;
    bottom: 18px;
    z-index: 2;
    width: auto !important;
    gap: 0 !important;
    padding: 14px 18px !important;
    border-radius: 16px;
    background: #ffffff;
    box-shadow: 0 14px 30px rgba(8, 9, 12, 0.12);
    --widgets-spacing: 0px;
}

.cv-ns-lead-tag > .elementor-element {
    margin: 0 !important;
}

.cv-ns-lead-tag-name .elementor-heading-title {
    color: #08090c !important;
    font-size: 16px !important;
    font-weight: 800 !important;
    line-height: 1.2 !important;
    letter-spacing: -0.02em !important;
}

.cv-ns-lead-tag-role .elementor-heading-title {
    margin-top: 4px !important;
    color: var(--cv-p-on-light) !important;
    font-size: 12.5px !important;
    font-weight: 500 !important;
    line-height: 1.4 !important;
}

@keyframes cv-ns-float {
    0%, 100% { translate: 0 0; }
    50% { translate: 0 -8px; }
}

.cv-ns-lead-copy {
    gap: 0 !important;
    --widgets-spacing: 0px;
}

.cv-ns-lead-copy > .elementor-element {
    margin-bottom: 0 !important;
}

.cv-ns-lead-text p {
    max-width: 58ch;
    margin: 16px 0 0 !important;
    color: var(--cv-p-on-light) !important;
    font-size: 16px !important;
    font-weight: 400 !important;
    line-height: 1.6 !important;
}

.cv-ns-lead-text p:first-child {
    margin-top: 20px !important;
    color: #08090c !important;
    font-size: 17px !important;
    font-weight: 500 !important;
}

/* Cita */
.cv-ns-quote {
    position: relative;
    gap: 0 !important;
    margin-top: 28px !important;
    padding: 4px 0 4px 24px !important;
    --widgets-spacing: 0px;
}

.cv-ns-quote::before,
.cv-ns-quote::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 2px;
    border-radius: 2px;
}

.cv-ns-quote::before {
    background: rgba(49, 92, 255, 0.14);
}

.cv-ns-quote::after {
    background: #315cff;
    transform: scaleY(var(--p, 1));
    transform-origin: center top;
}

.cv-ns-quote > .elementor-element {
    margin: 0 !important;
}

.cv-ns-quote-text p {
    max-width: 46ch;
    margin: 0 !important;
    color: #08090c !important;
    font-size: clamp(19px, 1.6vw, 23px) !important;
    font-weight: 700 !important;
    line-height: 1.35 !important;
    letter-spacing: -0.02em !important;
}

.cv-ns-quote-by .elementor-heading-title {
    margin-top: 12px !important;
    color: #315cff !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.06em !important;
    line-height: 1.3 !important;
    text-transform: uppercase;
}

/* Áreas */
.cv-ns-areas-label .elementor-heading-title {
    margin-top: 28px !important;
    color: rgba(8, 9, 12, 0.5) !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.06em !important;
    line-height: 1.3 !important;
    text-transform: uppercase;
}

.cv-ns-areas ul {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 12px 0 0 !important;
    padding: 0 !important;
    list-style: none;
}

.cv-ns-areas li {
    padding: 7px 12px;
    border: 1px solid rgba(49, 92, 255, 0.2);
    border-radius: 999px;
    background: #ffffff;
    color: #08090c;
    font-size: 13px;
    font-weight: 600;
    line-height: 1.25;
    transition: background-color 0.3s ease, border-color 0.3s ease, color 0.3s ease;
}

@media (hover: hover) {
    .cv-ns-areas li:hover {
        border-color: #315cff;
        background: #315cff;
        color: #ffffff;
    }
}

.cv-ns-lead-copy .elementor-widget-button {
    width: auto !important;
    margin-top: 28px !important;
}

/* ---------- Modelo de equipo ---------- */
.cv-ns-team-section .cv-h2 .elementor-heading-title {
    color: #ffffff !important;
}

.cv-ns-team-section .cv-sec-lead,
.cv-ns-team-section .cv-sec-lead p {
    max-width: 52ch;
    color: rgba(248, 247, 244, 0.78) !important;
}

.cv-ns-team {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 64px !important;
    align-items: center;
    --widgets-spacing: 0px;
}

.cv-ns-team > .e-con {
    width: auto !important;
}

.cv-ns-team > .cv-ns-orbit {
    width: 100% !important;
}

.cv-ns-team-head {
    gap: 0 !important;
    --widgets-spacing: 0px;
}

.cv-ns-team-head > .elementor-element {
    margin-bottom: 0 !important;
}

.cv-ns-team-head .cv-sec-lead {
    margin-top: 20px !important;
}

.cv-ns-points {
    gap: 0 !important;
    margin-top: 32px !important;
    --widgets-spacing: 0px;
}

.cv-ns-point {
    position: relative;
    display: grid !important;
    grid-template-columns: 44px minmax(0, 1fr);
    column-gap: 12px !important;
    row-gap: 4px !important;
    padding: 18px 0 !important;
    border-top: 1px solid rgba(248, 247, 244, 0.12);
    --widgets-spacing: 0px;
}

.cv-ns-point:last-child {
    border-bottom: 1px solid rgba(248, 247, 244, 0.12);
}

/* Línea lima que se dibuja sobre el borde */
.cv-ns-point::after {
    content: "";
    position: absolute;
    top: -1px;
    left: 0;
    width: 100%;
    height: 1px;
    background: #c8ff36;
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 1s var(--cv-ease);
}

.cv-ns-point.is-seen::after {
    transform: scaleX(1);
}

.cv-ns-point > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

.cv-ns-point-num {
    grid-row: 1 / span 2;
}

.cv-ns-point-num .elementor-heading-title {
    color: #c8ff36 !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.06em !important;
    line-height: 1.6 !important;
}

.cv-ns-point-title .elementor-heading-title {
    color: #ffffff !important;
    font-size: 18px !important;
    font-weight: 800 !important;
    line-height: 1.2 !important;
    letter-spacing: -0.02em !important;
}

.cv-ns-point-text p {
    margin: 0 !important;
    color: rgba(248, 247, 244, 0.7) !important;
    font-size: 15px !important;
    font-weight: 400 !important;
    line-height: 1.5 !important;
}

/* Red del equipo. Sin JS (y en móvil) es una tarjeta con chips;
   con JS los especialistas se ubican en círculo (cv-ns-orbit.is-orbit) */
.cv-ns-orbit {
    position: relative;
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: wrap !important;
    justify-content: center;
    align-content: center;
    gap: 8px !important;
    width: 100% !important;
    max-width: 540px;
    margin: 0 auto !important;
    padding: 0 !important;
    --widgets-spacing: 0px;
}

.cv-ns-orbit > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

.cv-ns-orbit-core {
    flex: 0 0 100% !important;
    gap: 0 !important;
    margin-bottom: 8px !important;
    padding: 22px !important;
    border-radius: 22px;
    background: #315cff;
    text-align: center;
    --widgets-spacing: 0px;
}

.cv-ns-orbit-core > .elementor-element {
    margin: 0 !important;
}

.cv-ns-orbit-core-title .elementor-heading-title {
    color: #ffffff !important;
    font-size: 20px !important;
    font-weight: 800 !important;
    line-height: 1.15 !important;
    letter-spacing: -0.03em !important;
    text-align: center;
}

.cv-ns-orbit-core-sub .elementor-heading-title {
    margin-top: 8px !important;
    color: rgba(255, 255, 255, 0.82) !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 11px !important;
    font-weight: 600 !important;
    letter-spacing: 0.06em !important;
    line-height: 1.3 !important;
    text-transform: uppercase;
    text-align: center;
}

.cv-ns-orbit-node .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 15px;
    border: 1px solid rgba(248, 247, 244, 0.18);
    border-radius: 999px;
    background: #121419;
    color: #f8f7f4 !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    line-height: 1.2 !important;
    white-space: nowrap;
    cursor: default;
    transition: background-color 0.35s ease, color 0.35s ease, border-color 0.35s ease, box-shadow 0.35s ease;
}

.cv-ns-orbit-node .elementor-heading-title::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #315cff;
    transition: background-color 0.35s ease;
}

.cv-ns-orbit-node.is-lit .elementor-heading-title {
    border-color: #c8ff36;
    background: #c8ff36;
    color: #08090c !important;
    box-shadow: 0 0 0 6px rgba(200, 255, 54, 0.12);
}

.cv-ns-orbit-node.is-lit .elementor-heading-title::before {
    background: #08090c;
}

/* Modo círculo */
.cv-ns-orbit.is-orbit {
    display: block !important;
    aspect-ratio: 1 / 1;
}

.cv-ns-orbit.is-orbit > .cv-ns-orbit-core {
    position: absolute !important;
    inset: 0;
    z-index: 2;
    display: flex !important;
    flex-direction: column !important;
    justify-content: center;
    width: 38% !important;
    height: 38%;
    margin: auto !important;
    padding: 18px !important;
    border-radius: 50%;
    box-shadow: 0 0 0 12px rgba(49, 92, 255, 0.12), 0 0 0 28px rgba(49, 92, 255, 0.05);
}

.cv-ns-orbit.is-orbit > .cv-ns-orbit-node {
    position: absolute !important;
    z-index: 3;
    translate: -50% -50%;
}

.cv-ns-orbit-svg {
    position: absolute;
    inset: 0;
    z-index: 1;
    width: 100%;
    height: 100%;
    overflow: visible;
    pointer-events: none;
}

.cv-ns-orbit-ring {
    fill: none;
    stroke: rgba(248, 247, 244, 0.1);
    stroke-width: 1;
    stroke-dasharray: 3 7;
}

.cv-ns-orbit-line {
    fill: none;
    stroke: rgba(248, 247, 244, 0.16);
    stroke-width: 1;
    transition: stroke 0.35s ease;
}

.cv-ns-orbit-line.is-lit {
    stroke: #c8ff36;
}

.cv-ns-orbit-pulse {
    fill: #c8ff36;
}

/* ---------- Resultados ---------- */
.cv-ns-proof.cv-ch-proof {
    max-width: none;
    margin: 48px 0 0 !important;
}

.cv-ns-proof .cv-ch-proof-item {
    padding: 24px 24px 26px !important;
    border-color: #08090c;
    background: #08090c;
}

.cv-ns-proof .cv-ch-proof-value .elementor-heading-title {
    margin-top: 18px !important;
}

@media (hover: hover) {
    .cv-ns-proof .cv-ch-proof-item:hover {
        border-color: #c8ff36;
        background-color: #08090c;
    }
}

.cv-ns-proof-foot {
    align-items: center !important;
    justify-content: space-between !important;
    gap: 16px !important;
    margin-top: 20px !important;
    --widgets-spacing: 0px;
}

.cv-ns-proof-foot > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

.cv-ns-proof-note .elementor-heading-title {
    color: rgba(8, 9, 12, 0.5) !important;
    font-size: 13px !important;
    font-weight: 500 !important;
    line-height: 1.4 !important;
}

/* ---------- Tablet ---------- */
@media (max-width: 1024px) {
    .cv-ns-why,
    .cv-ns-lead,
    .cv-ns-team {
        grid-template-columns: 1fr;
        gap: 44px !important;
    }

    .cv-ns-principles {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .cv-ns-lead-badge {
        right: -20px;
    }

    .cv-ns-orbit {
        max-width: 520px;
    }

    .cv-ns-proof.cv-ch-proof {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/* ---------- Móvil ---------- */
@media (max-width: 767px) {
    .cv-ns-why,
    .cv-ns-lead,
    .cv-ns-team {
        gap: 36px !important;
    }

    .cv-ns-chain {
        padding: 20px !important;
    }

    .cv-ns-chain > .cv-ns-chain-top {
        flex-direction: column !important;
        align-items: flex-start !important;
        margin-bottom: 18px !important;
    }

    .cv-ns-link {
        grid-template-columns: 32px minmax(0, 1fr);
        column-gap: 14px !important;
        row-gap: 4px !important;
        align-items: start;
        padding: 14px 16px 14px 14px !important;
    }

    .cv-ns-link-num {
        grid-row: 1 / span 2;
    }

    .cv-ns-link-num .elementor-heading-title {
        width: 32px;
        height: 32px;
        font-size: 11px !important;
    }

    .cv-ns-chain-wire {
        left: 29px;
        top: 30px;
        bottom: 30px;
    }

    .cv-ns-link-title .elementor-heading-title {
        padding-top: 6px;
        font-size: 17px !important;
    }

    .cv-ns-link-text p,
    .cv-ns-why-text p,
    .cv-ns-lead-text p,
    .cv-ns-point-text p {
        font-size: 15px !important;
    }

    .cv-ns-principles {
        grid-template-columns: 1fr;
    }

    .cv-ns-lead-media {
        max-width: 100%;
    }

    .cv-ns-lead-photo img {
        aspect-ratio: 1 / 1;
    }

    .cv-ns-lead-badge {
        top: 16px;
        right: 16px;
        width: 160px !important;
        padding: 14px 16px !important;
    }

    .cv-ns-lead-badge-num .elementor-heading-title {
        font-size: 32px !important;
    }

    .cv-ns-lead-badge-label .elementor-heading-title {
        font-size: 12px !important;
    }

    .cv-ns-lead-tag {
        left: 12px;
        right: 12px;
        bottom: 12px;
        padding: 12px 14px !important;
    }

    .cv-ns-quote-text p {
        font-size: 19px !important;
    }

    .cv-ns-orbit-node .elementor-heading-title {
        padding: 8px 12px;
        font-size: 13px !important;
    }

    .cv-ns-proof.cv-ch-proof {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 10px !important;
        margin-top: 36px !important;
    }

    .cv-ns-proof .cv-ch-proof-item {
        padding: 16px 16px 18px !important;
    }

    .cv-ns-proof .cv-ch-proof-value .elementor-heading-title {
        margin-top: 12px !important;
        font-size: 28px !important;
    }

    .cv-ns-proof .cv-ch-proof-label .elementor-heading-title {
        font-size: 13px !important;
    }

    .cv-ns-proof-foot {
        flex-direction: column !important;
        align-items: flex-start !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-ns-lead-badge {
        animation: none !important;
    }

    .cv-ns-point::after,
    .cv-ns-chain-state > .elementor-element {
        transition: none !important;
    }
}


/* #########################################################
   50. FORMULARIO: PASO A LA PÁGINA DE GRACIAS (v4.0.7)
   Después del check, una línea azul se llena durante unos
   segundos y luego el sitio lleva a /gracias/. "Ir ahora"
   adelanta el paso. Sirve igual en el popup y en Contacto.
   ######################################################### */

.cv-form-success__next {
    max-width: 360px;
    margin: 22px auto 0;
}

.cv-form-success__next[hidden] {
    display: none !important;
}

.cv-form-success__bar {
    display: block;
    height: 4px;
    overflow: hidden;
    border-radius: 999px;
    background: rgba(8, 9, 12, 0.08);
}

.cv-form-success__bar > span {
    display: block;
    width: 100%;
    height: 100%;
    border-radius: 999px;
    background: #315cff;
    transform: scaleX(0);
    transform-origin: left center;
}

.cv-form-success__next.is-running .cv-form-success__bar > span {
    transform: scaleX(1);
    transition: transform var(--cv-thanks-delay, 5000ms) linear;
}

.cv-form-success__next-text {
    margin: 12px 0 0;
    color: #4a4f5a;
    font-size: 13px;
    line-height: 1.5;
}

.cv-form-success .cv-form-success__go {
    color: #315cff !important;
    font-weight: 700;
    text-decoration: underline !important;
    text-underline-offset: 3px;
    white-space: nowrap;
}

.cv-form-success .cv-form-success__go:hover {
    color: #08090c !important;
}

@media (max-width: 767px) {
    .cv-form-success__next {
        max-width: none;
        margin-top: 18px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-form-success__next.is-running .cv-form-success__bar > span {
        transition: none;
    }
}


/* #########################################################
   51. PÁGINA DE GRACIAS (cv-gx-*) (v4.0.8)
   /gracias/ usa el hero centrado de las páginas principales y
   la sección de pasos aprobada en Cómo trabajamos.

   Hero ........ cv-gx-hero; cv-gx-seal (contenedor vacío: el check
                 lo dibuja el CSS); cv-gx-copy (texto que el JS
                 completa con el nombre y la empresa del formulario);
                 cv-gx-home (enlace "Volver al inicio").
   Estado ...... cv-gx-status, cv-gx-status-top, cv-gx-status-label,
                 cv-gx-status-live, cv-gx-stages, cv-gx-stage,
                 cv-gx-stage-dot, cv-gx-stage-title, cv-gx-stage-meta,
                 cv-gx-need (se muestra solo si hay datos). El JS
                 agrega la línea (cv-gx-stages-line).
   Pasos ....... cv-ct-path-section + cv-gx-next-section (ID:
                 proximos-pasos), cv-ct-path + cv-gx-path: el primer
                 paso queda "En curso".
   WhatsApp .... cv-ct-team + cv-gx-wa, botón cv-gx-wa-btn (el JS le
                 pone el mensaje con los datos), nota cv-gx-note.
   Movimiento: módulo 24 del JS.
   ######################################################### */

#proximos-pasos {
    scroll-margin-top: 90px;
}

/* ---------- Sello con check ---------- */
.cv-gx-seal,
.cv-page-hero > .e-con-inner > .cv-gx-seal {
    position: relative;
    flex: 0 0 auto !important;
    width: 84px !important;
    height: 84px !important;
    min-height: 0 !important;
    margin: 0 auto 26px !important;
    padding: 0 !important;
    border-radius: 50%;
    background: #c8ff36;
    animation: cv-gx-pop 0.7s cubic-bezier(0.34, 1.56, 0.64, 1) 0.1s both;
}

/* Anillo punteado que gira alrededor del sello */
.cv-gx-seal::before {
    content: "";
    position: absolute;
    inset: -12px;
    border: 1.5px dashed rgba(200, 255, 54, 0.45);
    border-radius: 50%;
    animation: cv-gx-spin 18s linear infinite;
}

/* Check que se dibuja */
.cv-gx-seal::after {
    content: "";
    position: absolute;
    left: 29px;
    top: 43px;
    width: 0;
    height: 0;
    border-left: 4px solid #08090c;
    border-bottom: 4px solid #08090c;
    border-radius: 2px;
    transform-origin: left top;
    transform: rotate(-45deg);
    opacity: 0;
    animation: cv-gx-draw 0.55s cubic-bezier(0.65, 0, 0.35, 1) 0.6s forwards;
}

@keyframes cv-gx-pop {
    0% { transform: scale(0.4); opacity: 0; }
    100% { transform: scale(1); opacity: 1; }
}

@keyframes cv-gx-spin {
    to { transform: rotate(360deg); }
}

@keyframes cv-gx-draw {
    0% { width: 0; height: 0; opacity: 1; }
    40% { width: 0; height: 13px; opacity: 1; }
    100% { width: 28px; height: 13px; opacity: 1; }
}

/* Onda que sale del sello una vez dibujado el check */
@keyframes cv-gx-ring {
    0% { box-shadow: 0 0 0 0 rgba(49, 92, 255, 0.5); }
    100% { box-shadow: 0 0 0 14px rgba(49, 92, 255, 0); }
}

@keyframes cv-gx-ring-lime {
    0% { box-shadow: 0 0 0 0 rgba(200, 255, 54, 0.45); }
    100% { box-shadow: 0 0 0 10px rgba(200, 255, 54, 0); }
}

.cv-gx-hero .cv-gx-home {
    width: auto !important;
    margin-top: 14px !important;
}

/* ---------- Estado de la solicitud ---------- */
.cv-page-hero .cv-gx-status {
    position: relative;
    width: 100% !important;
    max-width: 640px;
    gap: 0 !important;
    margin: 56px auto 0 !important;
    padding: 26px 28px 28px !important;
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 26px !important;
    background: rgba(255, 255, 255, 0.03);
    -webkit-backdrop-filter: blur(6px);
    backdrop-filter: blur(6px);
    text-align: left;
    --widgets-spacing: 0px;
}

.cv-gx-status .elementor-element {
    margin-bottom: 0 !important;
}

.cv-gx-status-top {
    flex-wrap: nowrap !important;
    justify-content: space-between !important;
    align-items: center !important;
}

.cv-gx-status-top > .elementor-element {
    width: auto !important;
}

.cv-gx-status-label .elementor-heading-title {
    color: rgba(248, 247, 244, 0.55) !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    letter-spacing: 0.12em !important;
    line-height: 1.3 !important;
    text-transform: uppercase;
}

/* Pastilla "En curso" con punto que late */
.cv-gx-status-live .elementor-heading-title {
    position: relative;
    display: inline-flex;
    align-items: center;
    padding: 6px 12px 6px 26px;
    border: 1px solid rgba(200, 255, 54, 0.4);
    border-radius: 999px;
    color: #c8ff36 !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 11.5px !important;
    font-weight: 600 !important;
    letter-spacing: 0.06em !important;
    line-height: 1.2 !important;
    text-transform: uppercase;
    white-space: nowrap;
}

.cv-gx-status-live .elementor-heading-title::before {
    content: "";
    position: absolute;
    left: 11px;
    top: 50%;
    width: 7px;
    height: 7px;
    margin-top: -3.5px;
    border-radius: 50%;
    background: #c8ff36;
    animation: cv-gx-ring-lime 1.8s ease-out infinite;
}

/* Tres etapas unidas por una línea */
.cv-gx-stages {
    position: relative;
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin-top: 26px !important;
    --widgets-spacing: 0px;
}

.cv-gx-stages > .e-con {
    width: auto !important;
}

.cv-gx-stages-line {
    position: absolute;
    top: 21px;
    left: 16.666%;
    right: 16.666%;
    height: 2px;
    border-radius: 2px;
    background: rgba(255, 255, 255, 0.12);
    pointer-events: none;
}

.cv-gx-stages-line > span {
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: #c8ff36;
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 0.9s cubic-bezier(0.65, 0, 0.35, 1);
}

.cv-gx-stages-line.is-half > span {
    transform: scaleX(0.5);
}

/* Pulso azul que va de la revisión a la respuesta */
.cv-gx-stages-line > i {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 8px;
    height: 8px;
    margin: -4px 0 0 -4px;
    border-radius: 50%;
    background: #315cff;
    box-shadow: 0 0 0 4px rgba(49, 92, 255, 0.22);
    opacity: 0;
}

.cv-gx-stages-line.is-live > i {
    animation: cv-gx-travel 2.8s cubic-bezier(0.65, 0, 0.35, 1) infinite;
}

@keyframes cv-gx-travel {
    0% { left: 50%; opacity: 0; }
    15% { opacity: 1; }
    85% { opacity: 1; }
    100% { left: 100%; opacity: 0; }
}

.cv-gx-stage {
    position: relative;
    z-index: 1;
    align-items: center !important;
    gap: 0 !important;
    text-align: center;
    --widgets-spacing: 0px;
}

.cv-gx-stage > .elementor-element {
    width: auto !important;
}

.cv-gx-stage-dot .elementor-heading-title {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border: 2px solid rgba(255, 255, 255, 0.18);
    border-radius: 50%;
    background: #0d1020;
    color: rgba(248, 247, 244, 0.6) !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    line-height: 1 !important;
    transition: background-color 0.45s ease, border-color 0.45s ease, color 0.45s ease;
}

.cv-gx-stage-title .elementor-heading-title {
    margin-top: 12px !important;
    color: rgba(248, 247, 244, 0.7) !important;
    font-size: 15px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: -0.01em !important;
    transition: color 0.45s ease;
}

.cv-gx-stage-meta .elementor-heading-title {
    margin-top: 4px !important;
    color: rgba(248, 247, 244, 0.5) !important;
    font-size: 12.5px !important;
    font-weight: 500 !important;
    line-height: 1.35 !important;
    transition: color 0.45s ease;
}

/* Enviada: check lima */
.cv-gx-stage.is-done .cv-gx-stage-dot .elementor-heading-title {
    border-color: #c8ff36;
    background: #c8ff36;
    color: transparent !important;
}

.cv-gx-stage.is-done .cv-gx-stage-dot .elementor-heading-title::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: 14px;
    height: 7px;
    border-left: 2.5px solid #08090c;
    border-bottom: 2.5px solid #08090c;
    transform: translate(-50%, -70%) rotate(-45deg);
}

/* En revisión: azul con onda */
.cv-gx-stage.is-active .cv-gx-stage-dot .elementor-heading-title {
    border-color: #315cff;
    background: #315cff;
    color: #ffffff !important;
    animation: cv-gx-ring 1.8s ease-out infinite;
}

.cv-gx-stage.is-done .cv-gx-stage-title .elementor-heading-title,
.cv-gx-stage.is-active .cv-gx-stage-title .elementor-heading-title {
    color: #ffffff !important;
}

.cv-gx-stage.is-active .cv-gx-stage-meta .elementor-heading-title {
    color: #c8ff36 !important;
}

/* Lo que nos contó (solo con datos del formulario) */
.cv-gx-need {
    display: none !important;
}

.cv-gx-need.is-filled {
    display: block !important;
    margin-top: 24px !important;
    padding-top: 18px !important;
    border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.cv-gx-need p {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin: 0 !important;
}

.cv-gx-need-label {
    color: rgba(248, 247, 244, 0.55);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.cv-gx-need-value {
    padding: 7px 14px;
    border-radius: 999px;
    background: #315cff;
    color: #ffffff;
    font-size: 13px;
    font-weight: 600;
    line-height: 1.25;
}

/* ---------- Próximos pasos: el primero está en curso ---------- */
.cv-gx-path .cv-ct-step:first-child.is-on .cv-ct-step-num .elementor-heading-title {
    animation: cv-gx-ring 1.8s ease-out infinite;
}

.cv-gx-path .cv-ct-step:first-child .cv-ct-step-meta .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.cv-gx-path .cv-ct-step:first-child .cv-ct-step-meta .elementor-heading-title::before {
    content: "";
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #315cff;
    animation: cv-gx-ring 1.8s ease-out infinite;
}

/* ---------- Tarjeta de WhatsApp ---------- */
.cv-gx-wa .cv-ct-team-title .elementor-heading-title {
    max-width: 22ch;
}

.cv-gx-wa .cv-gx-wa-btn {
    width: auto !important;
    margin-top: 22px !important;
}

.cv-gx-note .elementor-heading-title {
    margin-top: 18px !important;
    color: rgba(248, 247, 244, 0.55) !important;
    font-size: 13px !important;
    font-style: italic;
    font-weight: 400 !important;
    line-height: 1.5 !important;
}

/* ---------- Móvil ---------- */
@media (max-width: 767px) {
    .cv-gx-seal,
    .cv-page-hero > .e-con-inner > .cv-gx-seal {
        width: 72px !important;
        height: 72px !important;
        margin-bottom: 22px !important;
    }

    .cv-gx-seal::after {
        left: 25px;
        top: 37px;
        border-left-width: 3.5px;
        border-bottom-width: 3.5px;
        animation-name: cv-gx-draw-sm;
    }

    @keyframes cv-gx-draw-sm {
        0% { width: 0; height: 0; opacity: 1; }
        40% { width: 0; height: 11px; opacity: 1; }
        100% { width: 24px; height: 11px; opacity: 1; }
    }

    .cv-page-hero .cv-gx-status {
        margin-top: 40px !important;
        padding: 20px 14px 22px !important;
        border-radius: 22px !important;
    }

    .cv-gx-status-label .elementor-heading-title {
        font-size: 11px !important;
        letter-spacing: 0.1em !important;
    }

    .cv-gx-stages-line {
        top: 18px;
    }

    .cv-gx-stage-dot .elementor-heading-title {
        width: 38px;
        height: 38px;
        font-size: 11px !important;
    }

    .cv-gx-stage-title .elementor-heading-title {
        font-size: 13.5px !important;
    }

    .cv-gx-stage-meta .elementor-heading-title {
        font-size: 11.5px !important;
    }

    .cv-gx-need p {
        justify-content: flex-start;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-gx-seal,
    .cv-gx-seal::before,
    .cv-gx-seal::after,
    .cv-gx-status-live .elementor-heading-title::before,
    .cv-gx-stage-dot .elementor-heading-title,
    .cv-gx-stages-line > i,
    .cv-gx-path .cv-ct-step-num .elementor-heading-title,
    .cv-gx-path .cv-ct-step-meta .elementor-heading-title::before {
        animation: none !important;
    }

    .cv-gx-seal::after {
        width: 28px;
        height: 13px;
        opacity: 1;
    }

    .cv-gx-stages-line > span {
        transition: none;
    }
}

@media (prefers-reduced-motion: reduce) and (max-width: 767px) {
    .cv-gx-seal::after {
        width: 24px;
        height: 11px;
    }
}


/* #########################################################
   52. PÁGINA DE CONTACTO (cv-co-*) (v4.0.9)
   Hero centrado de las páginas principales con el mapa
   (cv-svc-map), formulario en tarjeta blanca y columna de
   canales que acompaña el scroll.

   Formulario .. cv-co-form-section (ID: formulario), cv-co-grid,
                 cv-co-form-card, cv-co-form-title, cv-co-form-lead
                 y el widget de formulario cv-form (el mismo del popup).
   Canales ..... cv-co-aside (sticky en escritorio), cv-co-channels
                 (tarjeta oscura con glow), cv-co-channels-title,
                 cv-co-channels-text, cv-co-list (Lista de iconos:
                 WhatsApp, correo, Instagram, ciudad).
   Persona ..... cv-co-person, cv-co-person-photo, cv-co-person-copy,
                 cv-co-person-label, cv-co-person-name, cv-co-person-text.
   Qué ocurre después, preguntas y cierre: secciones ya aprobadas
   (cv-ct-path, cv-srv-faq, cv-svc-final).
   ######################################################### */

#formulario,
#que-ocurre-despues {
    scroll-margin-top: 90px;
}

.cv-co-grid {
    display: grid !important;
    grid-template-columns: minmax(0, 1.4fr) minmax(0, 0.9fr);
    gap: 32px !important;
    align-items: start;
    --widgets-spacing: 0px;
}

.cv-co-grid > .e-con {
    width: auto !important;
}

.cv-co-grid .elementor-element {
    margin-bottom: 0 !important;
}

/* ---------- Tarjeta del formulario ---------- */
.cv-co-form-card {
    gap: 0 !important;
    padding: 44px 44px 40px !important;
    border-radius: 26px;
    background: #ffffff;
    box-shadow: 0 24px 60px rgba(8, 9, 12, 0.06);
    --widgets-spacing: 0px;
}

.cv-co-form-card > .cv-eyebrow {
    width: auto !important;
}

.cv-co-form-title .elementor-heading-title {
    margin-top: 16px !important;
    color: #08090c !important;
    font-size: clamp(26px, 2.4vw, 36px) !important;
    font-weight: 800 !important;
    line-height: 1.08 !important;
    letter-spacing: -0.04em !important;
}

.cv-co-form-lead p {
    max-width: 52ch;
    margin: 10px 0 0 !important;
    color: var(--cv-p-on-light, #4a4f5a) !important;
    font-size: 15.5px !important;
    line-height: 1.55 !important;
}

.cv-co-form-card .cv-form {
    margin-top: 28px !important;
}

/* El panel de éxito queda centrado dentro de la tarjeta */
.cv-co-form-card .cv-form-success {
    padding-top: 12px;
}

/* ---------- Columna de canales ---------- */
.cv-co-aside {
    position: sticky !important;
    top: 110px;
    gap: 16px !important;
    padding: 0 !important;
    --widgets-spacing: 0px;
}

.cv-co-channels {
    position: relative;
    gap: 0 !important;
    padding: 34px 32px 30px !important;
    border-radius: 26px;
    background: #08090c;
    overflow: hidden;
    --widgets-spacing: 0px;
}

.cv-co-channels > .elementor-element {
    position: relative;
    z-index: 5;
}

.cv-co-channels > .cv-eyebrow {
    width: auto !important;
}

.cv-co-channels .cv-glow-layer {
    mix-blend-mode: screen;
    background: radial-gradient(320px circle at var(--gx, 50%) var(--gy, 50%), rgba(49, 92, 255, 0.45), rgba(49, 92, 255, 0.08) 45%, transparent 70%);
}

.cv-co-channels-title .elementor-heading-title {
    margin-top: 16px !important;
    color: #ffffff !important;
    font-size: clamp(22px, 1.9vw, 28px) !important;
    font-weight: 800 !important;
    line-height: 1.1 !important;
    letter-spacing: -0.035em !important;
}

.cv-co-channels-text p {
    margin: 10px 0 0 !important;
    color: rgba(248, 247, 244, 0.72) !important;
    font-size: 14.5px !important;
    line-height: 1.55 !important;
}

/* Lista de canales: cada uno es una fila con su ícono.
   Si la fila no es enlace (la ciudad), Elementor no usa <a>
   y el estilo va en el <li>. */
.cv-co-list {
    margin-top: 22px !important;
}

.cv-co-list .elementor-icon-list-items {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin: 0 !important;
    padding: 0 !important;
}

.cv-co-list .elementor-icon-list-items {
    list-style: none !important;
}

.cv-co-list .elementor-icon-list-item {
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
}

.cv-co-list .elementor-icon-list-item:not(:has(> a)) {
    padding: 10px 12px 10px 10px !important;
}

.cv-co-list .elementor-icon-list-item::after {
    display: none !important;
}

.cv-co-list .elementor-icon-list-item > a,
.cv-co-list .elementor-icon-list-item:not(:has(> a)) {
    display: flex !important;
    align-items: center;
    gap: 14px;
    width: 100%;
    padding: 10px 12px 10px 10px;
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 16px;
    text-decoration: none !important;
    transition: border-color 0.3s ease, background-color 0.3s ease, transform 0.35s var(--cv-ease, ease);
}

.cv-co-list .elementor-icon-list-icon {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    flex: 0 0 40px;
    width: 40px;
    height: 40px;
    padding: 0 !important;
    border: 1px solid rgba(49, 92, 255, 0.35);
    border-radius: 12px;
    background: rgba(49, 92, 255, 0.14);
    transition: background-color 0.3s ease, border-color 0.3s ease;
}

/* Elementor puede pintar el ícono como fuente (<i>) o como SVG:
   se colorean los dos */
.cv-co-list .elementor-icon-list-icon i {
    color: #315cff !important;
    font-size: 17px !important;
    transition: color 0.3s ease;
}

.cv-co-list .elementor-icon-list-icon svg {
    width: 17px !important;
    height: 17px !important;
    fill: #315cff !important;
    transition: fill 0.3s ease;
}

.cv-co-list .elementor-icon-list-text {
    padding: 0 !important;
    color: #ffffff !important;
    font-size: 14.5px !important;
    font-weight: 600 !important;
    line-height: 1.3 !important;
    overflow-wrap: anywhere;
}

@media (hover: hover) {
    .cv-co-list .elementor-icon-list-item > a:hover {
        border-color: rgba(49, 92, 255, 0.55);
        background: rgba(255, 255, 255, 0.04);
        transform: translateX(4px);
    }

    .cv-co-list .elementor-icon-list-item > a:hover .elementor-icon-list-icon {
        border-color: #315cff;
        background: #315cff;
    }

    .cv-co-list .elementor-icon-list-item > a:hover .elementor-icon-list-icon i {
        color: #ffffff !important;
    }

    .cv-co-list .elementor-icon-list-item > a:hover .elementor-icon-list-icon svg {
        fill: #ffffff !important;
    }
}

/* ---------- Quién lee su solicitud ---------- */
.cv-co-person {
    flex-wrap: nowrap !important;
    align-items: center !important;
    gap: 16px !important;
    padding: 16px 20px 16px 16px !important;
    border-radius: 22px;
    background: #ffffff;
    box-shadow: 0 18px 40px rgba(8, 9, 12, 0.05);
    --widgets-spacing: 0px;
}

.cv-co-person > .elementor-element,
.cv-co-person > .e-con {
    width: auto !important;
}

.cv-co-person-photo {
    flex: 0 0 84px;
}

.cv-co-person-photo img {
    display: block;
    width: 84px !important;
    height: 84px !important;
    border-radius: 18px !important;
    object-fit: cover;
    object-position: 50% 20%;
}

.cv-co-person-copy {
    flex: 1 1 auto;
    gap: 0 !important;
    padding: 0 !important;
    min-width: 0;
    --widgets-spacing: 0px;
}

.cv-co-person-label .elementor-heading-title {
    color: #315cff !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 11px !important;
    font-weight: 600 !important;
    letter-spacing: 0.06em !important;
    line-height: 1.2 !important;
    text-transform: uppercase;
}

.cv-co-person-name .elementor-heading-title {
    margin-top: 6px !important;
    color: #08090c !important;
    font-size: 17px !important;
    font-weight: 800 !important;
    line-height: 1.15 !important;
    letter-spacing: -0.02em !important;
}

.cv-co-person-text p {
    margin: 4px 0 0 !important;
    color: var(--cv-p-on-light, #4a4f5a) !important;
    font-size: 13.5px !important;
    line-height: 1.45 !important;
}

/* ---------- Tablet ---------- */
@media (max-width: 1024px) {
    .cv-co-grid {
        grid-template-columns: 1fr;
        gap: 20px !important;
    }

    .cv-co-aside {
        position: relative !important;
        top: auto;
        display: grid !important;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        align-items: stretch;
    }

    .cv-co-aside > .e-con {
        width: auto !important;
    }

    .cv-co-person {
        align-items: flex-start !important;
    }
}

/* ---------- Móvil ---------- */
@media (max-width: 767px) {
    .cv-co-form-card {
        padding: 28px 18px 24px !important;
        border-radius: 22px;
    }

    .cv-co-aside {
        grid-template-columns: 1fr;
    }

    .cv-co-channels {
        padding: 26px 18px 20px !important;
        border-radius: 22px;
    }

    .cv-co-list .elementor-icon-list-text {
        font-size: 14px !important;
    }

    .cv-co-person-photo,
    .cv-co-person-photo img {
        flex-basis: 68px;
        width: 68px !important;
        height: 68px !important;
    }
}


/* #########################################################
   53. PASOS CON LÍNEA: TARJETAS DE LA MISMA ALTURA (v4.1.0)
   En Contacto, Gracias y Cómo trabajamos las cuatro tarjetas
   de cv-ct-path quedan del alto de la más larga.
   ######################################################### */

.cv-ct-path {
    align-items: stretch !important;
}

.cv-ct-path > .cv-ct-step {
    align-self: stretch !important;
    height: auto !important;
}

.cv-ct-step > .cv-ct-step-card {
    flex: 1 1 auto !important;
    align-self: stretch !important;
}


/* #########################################################
   54. CONTACTO: PREGUNTAS FRECUENTES (cv-co-faq-*) (v4.1.0)
   La columna izquierda (sticky) suma una tarjeta oscura de
   ayuda para que no quede vacía, y las preguntas son más
   compactas.
   cv-co-faq-section (en la sección), cv-co-faq-help,
   cv-co-faq-help-title, cv-co-faq-help-text.
   ######################################################### */

.cv-co-faq-help {
    position: relative;
    gap: 0 !important;
    margin-top: 32px !important;
    padding: 24px 26px !important;
    border-radius: 22px;
    background: #08090c;
    overflow: hidden;
    --widgets-spacing: 0px;
}

.cv-co-faq-help .elementor-element {
    margin-bottom: 0 !important;
}

.cv-co-faq-help .cv-glow-layer {
    mix-blend-mode: screen;
    background: radial-gradient(260px circle at var(--gx, 50%) var(--gy, 50%), rgba(49, 92, 255, 0.45), rgba(49, 92, 255, 0.08) 45%, transparent 70%);
}

.cv-co-faq-help > .elementor-element {
    position: relative;
    z-index: 5;
}

.cv-co-faq-help-title .elementor-heading-title {
    color: #ffffff !important;
    font-size: 19px !important;
    font-weight: 800 !important;
    line-height: 1.2 !important;
    letter-spacing: -0.02em !important;
}

.cv-co-faq-help-text p {
    margin: 6px 0 0 !important;
    color: rgba(248, 247, 244, 0.72) !important;
    font-size: 14.5px !important;
    line-height: 1.5 !important;
}

.cv-co-faq-help .elementor-widget-button {
    width: auto !important;
    margin-top: 14px !important;
}

/* Preguntas más compactas */
.cv-co-faq-section .cv-srv-faq-list .elementor-tab-title {
    padding-top: 18px !important;
    padding-bottom: 18px !important;
}

.cv-co-faq-section .cv-srv-faq-list .elementor-accordion-title {
    font-size: clamp(16px, 1.25vw, 18px) !important;
}

@media (max-width: 1024px) {
    .cv-co-faq-help {
        margin-top: 24px !important;
    }
}


/* #########################################################
   55. CIFRAS QUE SIEMPRE CABEN (v4.1.1)
   Las cifras largas ("~USD 12.000", "7 → 15+") se salían de
   su tarjeta. Ahora la tarjeta puede encogerse y el JS
   (módulo 25) baja el tamaño de la cifra hasta que entra
   en una sola línea. Aplica a:
   · Resultados de cada caso (cv-cx-kpi + cv-svc-kpi-value)
   · Cifra destacada del hero del caso (cv-cx-metric-value)
   · Cifras del hero de Casos (cv-ch-proof-value)
   · Cifras de las páginas de servicio (cv-svc-kpi-value)
   ######################################################### */
.cv-svc-kpi,
.cv-cx-metric,
.cv-ch-proof-item {
    min-width: 0 !important;
}

.cv-svc-kpi > .elementor-element,
.cv-cx-metric > .elementor-element,
.cv-ch-proof-item > .elementor-element {
    min-width: 0;
    max-width: 100% !important;
}

.cv-svc-kpi-value .elementor-heading-title,
.cv-cx-metric-value .elementor-heading-title,
.cv-ch-proof-value .elementor-heading-title {
    display: block;
    max-width: 100%;
    white-space: nowrap !important;
}


/* #########################################################
   56. PÁGINA DE CADA CASO: CIFRAS EN AZUL Y NEGRO Y
       LECTURA COMERCIAL CLARA (v4.1.2)
   · Cifras de Resultados y cifra destacada del hero: los
     números van en azul y los símbolos y unidades (+, %, →,
     ~USD) en negro. El JS (módulo 26) envuelve los números
     en cv-fig-num.
   · Lectura comercial: deja la tarjeta oscura y pasa a una
     tarjeta crema en dos columnas: a la izquierda la etiqueta
     y el botón negro; a la derecha el texto, que se ilumina
     palabra por palabra con el scroll (cv-scroll-highlight,
     lo agrega el JS). Sin luz de mouse: es fondo claro.
   · Hero claro: la página de cada caso deja el hero oscuro y
     pasa a crema, para diferenciarse de las demás páginas.
     Sin retícula ni luz de mouse (son de fondos oscuros).
   · Imagen del hero sin inclinación 3D con el mouse: entra
     abriéndose y luego solo acompaña el scroll (cv-cx-shot-calm,
     lo pone el JS en lugar de cv-float-media).
   ######################################################### */

/* ---------- Hero claro ---------- */
.cv-cx-hero.cv-svc-hero {
    background: #f5f2ea !important;
}

.cv-cx-hero .cv-hero-fx {
    display: none !important;
}

.cv-cx-hero .cv-cx-crumb .elementor-heading-title {
    color: rgba(8, 9, 12, 0.5) !important;
}

.cv-cx-hero .cv-cx-crumb a {
    color: rgba(8, 9, 12, 0.72) !important;
}

.cv-cx-hero .cv-cx-crumb a:hover {
    color: #315cff !important;
}

.cv-cx-hero .cv-eyebrow-dark .elementor-heading-title {
    border-color: rgba(49, 92, 255, 0.22) !important;
    background: rgba(49, 92, 255, 0.07) !important;
    color: #315cff !important;
}

.cv-cx-hero .cv-hero-title .elementor-heading-title,
.cv-cx-hero .cv-hero-title .cv-line-inner {
    color: #08090c !important;
}

.cv-cx-hero .cv-hero-copy p,
.cv-cx-hero .cv-cx-intro p {
    color: #3c414b !important;
}

.cv-cx-hero .cv-btn-lime .elementor-button {
    background: #08090c !important;
    border-color: #08090c !important;
    color: #ffffff !important;
    box-shadow: 0 8px 22px rgba(8, 9, 12, 0.14) !important;
}

.cv-cx-hero .cv-btn-lime .elementor-button:hover {
    background: #315cff !important;
    border-color: #315cff !important;
    color: #ffffff !important;
    box-shadow: 0 14px 30px rgba(49, 92, 255, 0.3) !important;
}

.cv-cx-hero .cv-btn-ghost-dark .elementor-button {
    border-color: rgba(8, 9, 12, 0.18) !important;
    background: transparent !important;
    color: #08090c !important;
    box-shadow: none !important;
}

.cv-cx-hero .cv-btn-ghost-dark .elementor-button:hover {
    border-color: #315cff !important;
    background: transparent !important;
    color: #315cff !important;
}

.cv-cx-hero .cv-cx-shot img {
    filter: drop-shadow(0 30px 50px rgba(8, 9, 12, 0.18)) !important;
}

.cv-cx-hero .cv-cx-metric {
    border: 1px solid rgba(49, 92, 255, 0.14);
    box-shadow: 0 30px 60px -24px rgba(8, 9, 12, 0.28);
}

/* La imagen tranquila: el recorte de la entrada respeta las esquinas */
.cv-cx-shot-calm {
    overflow: hidden;
    border-radius: 18px;
}

/* ---------- Cifras en azul y negro ---------- */
.cv-cx-results .cv-svc-kpi-value .elementor-heading-title,
.cv-cx-metric-value .elementor-heading-title {
    color: #08090c !important;
}

.cv-cx-results .cv-svc-kpi-value .cv-fig-num,
.cv-cx-results .cv-svc-kpi-value .cv-count-value,
.cv-cx-metric-value .cv-fig-num,
.cv-cx-metric-value .cv-count-value {
    color: #315cff !important;
}

/* ---------- Lectura comercial ---------- */
.cv-cx-reading {
    display: grid !important;
    grid-template-columns: minmax(220px, 300px) minmax(0, 1fr);
    grid-template-rows: auto 1fr;
    column-gap: 72px !important;
    row-gap: 28px !important;
    align-items: start !important;
    padding: 56px 60px !important;
    border: 1px solid rgba(8, 9, 12, 0.06);
    background: #f5f2ea !important;
}

.cv-cx-reading-copy {
    display: contents !important;
}

.cv-cx-reading-copy > .cv-eyebrow {
    grid-column: 1;
    grid-row: 1;
    width: auto !important;
    margin: 0 !important;
}

.cv-cx-reading-copy > .cv-cx-reading-text {
    grid-column: 2;
    grid-row: 1 / span 2;
    width: 100% !important;
    max-width: 760px;
    margin: 0 !important;
}

.cv-cx-reading > .elementor-widget-button {
    grid-column: 1;
    grid-row: 2;
    align-self: end !important;
    margin: 0 !important;
}

.cv-cx-reading .cv-eyebrow-dark .elementor-heading-title {
    border-color: rgba(49, 92, 255, 0.22) !important;
    background: rgba(49, 92, 255, 0.07) !important;
    color: #315cff !important;
}

.cv-cx-reading-text .elementor-widget-container {
    margin-top: 0 !important;
}

.cv-cx-reading-text,
.cv-cx-reading-text p {
    color: #3c414b;
    font-size: clamp(18px, 1.45vw, 21px);
    font-weight: 500;
    line-height: 1.55;
    letter-spacing: -0.01em;
}

.cv-cx-reading-text p {
    margin: 0 0 14px !important;
}

.cv-cx-reading-text p:first-child {
    color: #08090c;
}

.cv-cx-reading .cv-btn-lime .elementor-button {
    background: #08090c !important;
    border-color: #08090c !important;
    color: #ffffff !important;
    box-shadow: 0 8px 22px rgba(8, 9, 12, 0.14) !important;
}

.cv-cx-reading .cv-btn-lime .elementor-button:hover {
    background: #315cff !important;
    border-color: #315cff !important;
    color: #ffffff !important;
    box-shadow: 0 14px 30px rgba(49, 92, 255, 0.3) !important;
}

/* La luz del mouse es solo para fondos oscuros */
.cv-cx-reading .cv-glow-layer {
    display: none !important;
}

@media (max-width: 1024px) {
    .cv-cx-reading {
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: auto;
        row-gap: 22px !important;
        padding: 44px 40px !important;
    }

    .cv-cx-reading-copy > .cv-eyebrow,
    .cv-cx-reading-copy > .cv-cx-reading-text,
    .cv-cx-reading > .elementor-widget-button {
        grid-column: 1;
        grid-row: auto;
    }

    .cv-cx-reading > .elementor-widget-button {
        margin-top: 6px !important;
    }
}

@media (max-width: 767px) {
    .cv-cx-reading {
        padding: 32px 24px !important;
    }

    .cv-cx-reading-text,
    .cv-cx-reading-text p {
        font-size: 17px;
    }

    .cv-cx-reading > .elementor-widget-button,
    .cv-cx-reading > .elementor-widget-button .elementor-button {
        width: 100% !important;
    }

    .cv-cx-reading > .elementor-widget-button .elementor-button {
        justify-content: center;
    }
}


/* #########################################################
   57. TARJETA DE CASO EN VERSIÓN CLARA (v4.1.4)
   La misma tarjeta, en blanco, para secciones de fondo claro.
   Se activa de dos formas:
   · Plantilla de loop propia: "Loop — Tarjeta de caso clara"
     (contenedor cv-caso cv-caso-light).
   · O sobre el Loop 986: cv-casos-light en "Clases CSS" del
     widget Loop Grid (Avanzado).
   · Tarjeta blanca con borde suave; textos en negro y gris.
   · Acentos en azul (punto del sector, línea y flecha), el
     cliente pasa a azul con el hover.
   · El logo conserva su píldora oscura porque los logos son
     blancos.
   · Sin luz de mouse: es fondo claro.
   ######################################################### */
:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light) {
    background: #ffffff !important;
    box-shadow: inset 0 0 0 1px rgba(8, 9, 12, 0.07), 0 2px 6px rgba(8, 9, 12, 0.04);
    color: #08090c;
}

:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light):hover,
:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light):focus-visible {
    box-shadow: inset 0 0 0 1px rgba(49, 92, 255, 0.18), 0 30px 60px -28px rgba(8, 9, 12, 0.22);
}

:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light) .cv-caso-frame {
    background: #f5f2ea;
}

:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light) .cv-caso-tag::before {
    border-color: rgba(49, 92, 255, 0.16);
    background: rgba(255, 255, 255, 0.86);
    color: #315cff;
}

:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light) .cv-caso-sector .elementor-heading-title {
    color: rgba(8, 9, 12, 0.55) !important;
}

:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light) .cv-caso-sector .elementor-heading-title::before {
    background: #315cff;
}

:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light) .cv-caso-client .elementor-heading-title {
    color: #08090c !important;
}

:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light):hover .cv-caso-client .elementor-heading-title,
:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light):focus-visible .cv-caso-client .elementor-heading-title {
    color: #315cff !important;
}

:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light) .cv-caso-title .elementor-heading-title {
    color: #3c414b !important;
}

:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light) .cv-caso-foot::before {
    background: rgba(8, 9, 12, 0.1);
}

:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light) .cv-caso-foot::after {
    background: #315cff;
}

:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light) .cv-caso-more .elementor-heading-title {
    color: #08090c !important;
}

:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light):hover .cv-caso-more .elementor-heading-title,
:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light):focus-visible .cv-caso-more .elementor-heading-title {
    color: #315cff !important;
}

:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light) .cv-caso-arrow .elementor-icon {
    background: rgba(49, 92, 255, 0.1) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6h8M6.5 2.5L10 6l-3.5 3.5' fill='none' stroke='%23315cff' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 50% 50% / 14px no-repeat !important;
}

:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light) .cv-caso-arrow .elementor-icon::after {
    border-color: rgba(49, 92, 255, 0.45);
}

:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light):hover .cv-caso-arrow .elementor-icon,
:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light):focus-visible .cv-caso-arrow .elementor-icon {
    background-color: #315cff !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6h8M6.5 2.5L10 6l-3.5 3.5' fill='none' stroke='%23ffffff' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
    box-shadow: 0 10px 26px rgba(49, 92, 255, 0.3);
}

:is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light) .cv-glow-layer {
    display: none !important;
}

@media (hover: none) {
    :is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light) .cv-caso-arrow .elementor-icon {
        background-color: #315cff !important;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6h8M6.5 2.5L10 6l-3.5 3.5' fill='none' stroke='%23ffffff' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
    }

    :is(.cv-casos-light .cv-caso, .cv-caso.cv-caso-light) .cv-caso-more .elementor-heading-title {
        color: #315cff !important;
    }
}


/* #########################################################
   58. CASOS: HERO CON MENOS VERDE (v4.1.6)
   Las cifras del hero pasan a blanco con el punto azul; el
   verde queda solo en el botón principal.
   ######################################################### */
.cv-ch-proof-value .elementor-heading-title {
    color: #ffffff !important;
}

.cv-ch-proof-client .elementor-heading-title::before {
    background: #315cff;
}

@media (hover: hover) {
    .cv-ch-proof-item:hover {
        border-color: rgba(49, 92, 255, 0.6);
    }
}


/* #########################################################
   59. FOOTER v3 (v4.1.9)
   Plantilla: cv-footer > cv-footer-bento (tres tarjetas
   redondeadas) + cv-footer-bottom.
   - Tarjeta azul oscuro (#0f1a48) con la marca y el botón lima.
   - Tarjeta oscura con Servicios y Compañía.
   - Tarjeta oscura con contacto en filas (etiqueta + dato)
     y redes en cuadros redondeados.
   - Sin entradas animadas ni luz del mouse: solo la línea
     lima del header en los enlaces y respuestas al hover.
   ######################################################### */

.cv-footer {
    background: #08090c !important;
    background-image: none !important;
}


/* ---------- Tarjetas ---------- */

.cv-footer .cv-footer-bento {
    display: grid !important;
    grid-template-columns: minmax(0, 1.12fr) minmax(0, 1.25fr) minmax(0, 0.95fr);
    gap: 16px !important;
    align-items: stretch;
}

.cv-footer .cv-footer-card {
    width: auto !important;
    max-width: none !important;
    min-width: 0;
    padding: 36px !important;
    border-radius: var(--cv-r-card) !important;
    background: rgba(255, 255, 255, 0.035) !important;
    border: 1px solid rgba(255, 255, 255, 0.08) !important;
    gap: 0 !important;
    --gap: 0px;
    --row-gap: 0px;
    --widgets-spacing: 0px;
}

.cv-footer .cv-footer-card .elementor-element,
.cv-footer .cv-footer-card .e-con {
    margin: 0 !important;
    --widgets-spacing: 0px;
}

.cv-footer .cv-footer-card .e-con {
    padding: 0 !important;
    gap: 0 !important;
}


/* ---------- Tarjeta de marca (azul) ---------- */

.cv-footer .cv-footer-card-brand {
    background: #0f1a48 !important;
    border-color: rgba(49, 92, 255, 0.35) !important;
}

.cv-footer .cv-footer-card-brand .elementor-widget-image img {
    width: 100% !important;
    max-width: 168px !important;
    height: auto;
}

.cv-footer .cv-footer-card-brand .elementor-widget-image,
.cv-footer .cv-footer-card-brand .elementor-widget-image .elementor-widget-container {
    text-align: left !important;
}

.cv-footer .cv-footer-card-brand .elementor-widget-heading .elementor-heading-title {
    margin: 28px 0 0 !important;
    max-width: 360px;
    color: #ffffff !important;
    font-size: 21px !important;
    font-weight: 700 !important;
    line-height: 1.22 !important;
    letter-spacing: -0.025em !important;
}

.cv-footer .cv-footer-card-brand .elementor-widget-text-editor,
.cv-footer .cv-footer-card-brand .elementor-widget-text-editor p {
    max-width: 380px;
    color: rgba(255, 255, 255, 0.82) !important;
    font-size: 15px !important;
    line-height: 1.55 !important;
}

.cv-footer .cv-footer-card-brand .elementor-element.elementor-widget-text-editor {
    margin-top: 12px !important;
}

.cv-footer .cv-footer-card-brand .elementor-widget-text-editor p {
    margin: 0 !important;
}

.cv-footer .cv-footer-card-brand .elementor-element.elementor-widget-button {
    margin-top: auto !important;
    padding-top: 28px;
}

.cv-footer .cv-footer-card-brand .elementor-widget-button .elementor-button {
    min-height: 48px;
    padding: 13px 22px !important;
    font-size: 14px !important;
    box-shadow: none !important;
}

.cv-footer .cv-footer-card-brand .elementor-widget-button .elementor-button:hover {
    box-shadow: 0 12px 28px rgba(8, 9, 12, 0.28) !important;
}


/* ---------- Títulos de tarjeta ---------- */

.cv-footer .cv-footer-title .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 20px !important;
    color: rgba(248, 247, 244, 0.5) !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    line-height: 1 !important;
    letter-spacing: 0.08em !important;
    text-transform: uppercase !important;
}

.cv-footer .cv-footer-title .elementor-heading-title::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 2px;
    background: var(--cv-lime);
}


/* ---------- Tarjeta de enlaces ---------- */

.cv-footer .cv-footer-card-links {
    display: grid !important;
    grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
    column-gap: 28px !important;
}

.cv-footer .cv-footer-links-col {
    width: auto !important;
    min-width: 0;
}

.cv-footer .cv-footer-menu .elementor-nav-menu--dropdown {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
}

.cv-footer .cv-footer-menu .elementor-nav-menu li {
    border: 0 !important;
}

.cv-footer .cv-footer-menu .elementor-nav-menu a,
.cv-footer .cv-footer-menu .elementor-nav-menu a.elementor-item-active {
    position: relative;
    display: inline-flex !important;
    width: auto !important;
    padding: 5px 0 !important;
    color: rgba(248, 247, 244, 0.8) !important;
    background: transparent !important;
    font-size: 15px !important;
    font-weight: 500 !important;
    line-height: 1.4 !important;
    transition: color 0.3s ease !important;
}

/* Sin flechas de submenú en el footer */
.cv-footer .cv-footer-menu .sub-arrow,
.cv-footer .cv-footer-menu .elementor-menu-toggle {
    display: none !important;
}


/* ---------- Tarjeta de contacto ---------- */

.cv-footer .cv-footer-card-contact {
    display: flex !important;
    flex-direction: column !important;
}

.cv-footer .cv-footer-card .e-con.cv-footer-row {
    position: relative;
    padding: 14px 36px 14px 0 !important;
    border-top: 1px solid rgba(255, 255, 255, 0.08) !important;
}

.cv-footer .cv-footer-rows > .cv-footer-row:last-child {
    border-bottom: 1px solid rgba(255, 255, 255, 0.08) !important;
}

.cv-footer .cv-footer-label .elementor-heading-title {
    margin: 0 !important;
    color: rgba(248, 247, 244, 0.45) !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    line-height: 1.3 !important;
    letter-spacing: 0 !important;
}

.cv-footer .cv-footer-value .elementor-heading-title,
.cv-footer .cv-footer-value .elementor-heading-title a {
    position: relative;
    display: inline-block;
    margin: 4px 0 0 !important;
    color: #ffffff !important;
    font-size: 15px !important;
    font-weight: 600 !important;
    line-height: 1.35 !important;
    letter-spacing: -0.01em !important;
    white-space: nowrap;
    transition: color 0.3s ease;
}

.cv-footer .cv-footer-value .elementor-heading-title a {
    margin: 0 !important;
}

/* Flecha que aparece al pasar el mouse por una fila con enlace */
.cv-footer .cv-footer-row-link::after {
    content: "";
    position: absolute;
    top: 50%;
    right: 0;
    width: 26px;
    height: 26px;
    margin-top: -13px;
    border-radius: 50%;
    background: var(--cv-lime) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3.5 8.5l5-5M4.5 3.5h4v4' fill='none' stroke='%2308090c' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 11px no-repeat;
    opacity: 0;
    transform: scale(0.6) rotate(-20deg);
    transition: opacity 0.3s ease, transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
    pointer-events: none;
}

.cv-footer .cv-footer-row-link:hover::after {
    opacity: 1;
    transform: none;
}

/* Toda la fila se puede clicar */
.cv-footer .cv-footer-row-link .cv-footer-value a::before {
    content: "";
    position: absolute;
    inset: -40px -400px -14px -400px;
}

.cv-footer .cv-footer-row-link {
    overflow: hidden;
}


/* ---------- Línea lima en los enlaces ---------- */

.cv-footer .cv-footer-menu .elementor-nav-menu a::after,
.cv-footer .cv-footer-value .elementor-heading-title a::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 2px;
    height: 1.5px;
    border-radius: 2px;
    background: var(--cv-lime);
    transform: scaleX(0);
    transform-origin: right center;
    transition: transform 0.45s var(--cv-ease);
    pointer-events: none;
}

.cv-footer .cv-footer-value .elementor-heading-title a::after {
    bottom: -2px;
}

.cv-footer .cv-footer-menu .elementor-nav-menu a:hover,
.cv-footer .cv-footer-menu .elementor-nav-menu a:focus-visible {
    color: #ffffff !important;
}

.cv-footer .cv-footer-menu .elementor-nav-menu a:hover::after,
.cv-footer .cv-footer-menu .elementor-nav-menu a:focus-visible::after,
.cv-footer .cv-footer-row-link:hover .cv-footer-value a::after {
    transform: scaleX(1);
    transform-origin: left center;
}


/* ---------- Redes ---------- */

.cv-footer .cv-footer-card-contact .elementor-element.cv-footer-social {
    margin-top: auto !important;
    padding-top: 22px;
}

.cv-footer .cv-footer-social .elementor-social-icons-wrapper {
    display: flex !important;
    gap: 8px;
}

.cv-footer .cv-footer-social .elementor-grid-item {
    margin: 0 !important;
    padding: 0 !important;
}

.cv-footer .cv-footer-social .elementor-social-icon {
    width: 42px !important;
    height: 42px !important;
    padding: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border-radius: 12px !important;
    background: rgba(255, 255, 255, 0.04) !important;
    border: 1px solid rgba(255, 255, 255, 0.12) !important;
    line-height: 1 !important;
    transition: background-color 0.3s ease, border-color 0.3s ease !important;
}

.cv-footer .cv-footer-social .elementor-social-icon i,
.cv-footer .cv-footer-social .elementor-social-icon svg {
    position: static !important;
    display: block;
    margin: 0 !important;
    color: #ffffff !important;
    fill: #ffffff !important;
    font-size: 16px !important;
    width: 16px !important;
    height: 16px !important;
    line-height: 16px !important;
    text-align: center;
}

.cv-footer .cv-footer-social .elementor-social-icon:hover {
    background: var(--cv-lime) !important;
    border-color: var(--cv-lime) !important;
}

.cv-footer .cv-footer-social .elementor-social-icon:hover i,
.cv-footer .cv-footer-social .elementor-social-icon:hover svg {
    color: var(--cv-ink) !important;
    fill: var(--cv-ink) !important;
}


/* ---------- Franja inferior ---------- */

.cv-footer .cv-footer-bottom {
    border: 0 !important;
    align-items: center !important;
    padding-top: 22px !important;
    padding-bottom: 30px !important;
}

.cv-footer .cv-footer-copy,
.cv-footer .cv-footer-copy p {
    margin: 0 !important;
    color: rgba(248, 247, 244, 0.5) !important;
    font-size: 13px !important;
    line-height: 1.6 !important;
}

.cv-footer .cv-footer-legal {
    --e-nav-menu-divider-color: rgba(255, 255, 255, 0.16);
}

.cv-footer .cv-footer-legal .elementor-nav-menu--main .elementor-item {
    padding-top: 4px !important;
    padding-bottom: 4px !important;
    color: rgba(248, 247, 244, 0.5) !important;
    font-size: 13px !important;
    transition: color 0.3s ease !important;
}

.cv-footer .cv-footer-legal .elementor-nav-menu--main .elementor-item:hover,
.cv-footer .cv-footer-legal .elementor-nav-menu--main .elementor-item.elementor-item-active {
    color: var(--cv-lime) !important;
}

.cv-footer .cv-footer-legal .sub-arrow {
    display: none !important;
}

.cv-footer .cv-footer-totop .elementor-button {
    min-height: 38px;
    padding: 8px 14px 8px 16px !important;
    border: 1px solid rgba(255, 255, 255, 0.14) !important;
    border-radius: 12px !important;
    background: transparent !important;
    color: rgba(248, 247, 244, 0.8) !important;
    font-family: "Plus Jakarta Sans", sans-serif !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    box-shadow: none !important;
    transition: background-color 0.3s ease, border-color 0.3s ease, color 0.3s ease !important;
}

.cv-footer .cv-footer-totop .elementor-button-icon {
    transition: transform 0.35s var(--cv-ease);
}

.cv-footer .cv-footer-totop .elementor-button-icon svg {
    width: 12px;
    height: 12px;
    fill: currentColor;
}

.cv-footer .cv-footer-totop .elementor-button:hover {
    background: var(--cv-lime) !important;
    border-color: var(--cv-lime) !important;
    color: var(--cv-ink) !important;
}

.cv-footer .cv-footer-totop .elementor-button:hover .elementor-button-icon {
    transform: translateY(-3px);
}


/* ---------- Tablet ---------- */

@media (max-width: 1024px) {

    .cv-footer .cv-footer-bento {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .cv-footer .cv-footer-card-brand {
        grid-column: 1 / -1;
    }

    .cv-footer .cv-footer-card {
        padding: 30px !important;
    }

    .cv-footer .cv-footer-bottom {
        justify-content: center !important;
        row-gap: 12px !important;
        text-align: center;
    }
}


/* ---------- Móvil ---------- */

@media (max-width: 767px) {

    .cv-footer .cv-footer-bento {
        grid-template-columns: minmax(0, 1fr);
        gap: 12px !important;
    }

    .cv-footer .cv-footer-card {
        padding: 26px 22px !important;
    }

    .cv-footer .cv-footer-card-brand .elementor-widget-heading .elementor-heading-title {
        margin-top: 22px !important;
        font-size: 19px !important;
    }

    .cv-footer .cv-footer-card-links {
        grid-template-columns: minmax(0, 1fr);
        row-gap: 26px !important;
    }

    .cv-footer .cv-footer-bottom {
        flex-direction: column !important;
        gap: 12px !important;
    }

    .cv-footer .cv-footer-copy,
    .cv-footer .cv-footer-copy p {
        text-align: center !important;
    }

    .cv-footer .cv-footer-legal .elementor-nav-menu {
        flex-wrap: wrap;
        justify-content: center;
    }
}


/* #########################################################
   60. MEGAMENÚ DE SERVICIOS v2 (v4.2.0)
   Misma plantilla (cv-mega-wrap > cv-mega + cv-mega-all),
   sin cambios en Elementor: todo es CSS.
   - Panel blanco con el radio de las tarjetas del sitio.
   - Servicios como tarjetas crema de la misma altura, número
     en etiqueta mono pequeña en azul (v4.2.1).
   - Se conserva el hover: tarjeta negra, número lima y flecha.
   - Tarjeta CTA en el azul oscuro del footer (#0f1a48).
   - "Ver todos los servicios" con la línea plana del header.
   - Sin entrada tarjeta por tarjeta: el panel aparece de una vez.
   - Tablet y móvil: lista compacta solo con los nombres.
   El :not(#cv-m) solo sube la prioridad sobre los ajustes 33.
   ######################################################### */

/* ---------- Panel ---------- */

.cv-mega-wrap:not(#cv-m) {
    padding: 10px !important;
    border: 1px solid rgba(8, 9, 12, 0.07) !important;
    border-radius: var(--cv-r-card) !important;
    background: #ffffff !important;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
    box-shadow: 0 24px 60px rgba(8, 9, 12, 0.14) !important;
}

.cv-mega-wrap:not(#cv-m) .cv-mega.e-con {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    gap: 8px !important;
    align-items: stretch !important;
    align-content: stretch !important;
}


/* ---------- Cada servicio ---------- */

.cv-mega-wrap:not(#cv-m) .cv-mega-item.e-con {
    display: flex !important;
    flex-direction: column !important;
    justify-content: flex-start !important;
    height: auto !important;
    min-height: 0 !important;
    padding: 18px 18px 20px !important;
    border-radius: 16px !important;
    background: var(--cv-cream) !important;
    border: 1px solid rgba(8, 9, 12, 0.05) !important;
    transition: background-color 0.3s ease, border-color 0.3s ease !important;
}

.cv-mega-wrap:not(#cv-m) .cv-mega-num {
    width: auto !important;
    align-self: flex-start;
}

.cv-mega-wrap:not(#cv-m) .cv-mega-num .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    height: 22px;
    padding: 0 9px;
    border-radius: var(--cv-r-pill);
    border: 1px solid rgba(49, 92, 255, 0.3);
    background: rgba(49, 92, 255, 0.06);
    color: #315cff !important;
    font-size: 11px !important;
    letter-spacing: 0.06em !important;
    transition: color 0.3s ease, border-color 0.3s ease;
}

.cv-mega-wrap:not(#cv-m) .cv-mega-item .cv-mega-title .elementor-heading-title {
    margin: 16px 0 0 !important;
    padding-right: 24px;
    font-size: 16px !important;
    line-height: 1.25 !important;
}

.cv-mega-wrap:not(#cv-m) .cv-mega-item .cv-mega-desc .elementor-heading-title {
    margin: 6px 0 0 !important;
    font-size: 13.5px !important;
    line-height: 1.45 !important;
}

/* Hover conservado: tarjeta negra, número lima, flecha lima */
.cv-mega-wrap:not(#cv-m) .cv-mega-item.e-con:hover,
.cv-mega-wrap:not(#cv-m) .cv-mega-item.e-con:focus-visible {
    background: #08090c !important;
    border-color: #08090c !important;
}

.cv-mega-wrap:not(#cv-m) .cv-mega-item:hover .cv-mega-num .elementor-heading-title,
.cv-mega-wrap:not(#cv-m) .cv-mega-item:focus-visible .cv-mega-num .elementor-heading-title {
    color: #c8ff36 !important;
    border-color: rgba(200, 255, 54, 0.4);
    background: rgba(200, 255, 54, 0.08);
}

.cv-mega-wrap:not(#cv-m) .cv-mega-item::after {
    top: 16px;
    right: 16px;
}


/* ---------- Tarjeta CTA ---------- */

.cv-mega-wrap:not(#cv-m) .cv-mega-cta.e-con {
    display: flex !important;
    flex-direction: column !important;
    justify-content: space-between !important;
    height: auto !important;
    min-height: 0 !important;
    padding: 18px 18px 18px !important;
    border-radius: 16px !important;
    background: #0f1a48 !important;
    background-image: none !important;
    border: 1px solid rgba(49, 92, 255, 0.35) !important;
}

.cv-mega-wrap:not(#cv-m) .cv-mega-cta .cv-mega-cta-title .elementor-heading-title {
    font-size: 16px !important;
}

.cv-mega-wrap:not(#cv-m) .cv-mega-cta .cv-mega-cta-text .elementor-heading-title {
    margin: 6px 0 0 !important;
    font-size: 13.5px !important;
}

.cv-mega-wrap:not(#cv-m) .cv-mega-cta .cv-mega-cta-btn {
    margin-top: 14px !important;
    align-self: flex-start;
}

.cv-mega-wrap:not(#cv-m) .cv-mega-cta .cv-mega-cta-btn .elementor-button {
    min-height: 40px !important;
    padding: 9px 16px !important;
    border-radius: var(--cv-r-btn) !important;
    font-size: 14px !important;
    box-shadow: none !important;
}


/* ---------- Ver todos los servicios ---------- */

.cv-mega-wrap:not(#cv-m) .cv-mega-all {
    margin: 10px 0 0 !important;
    padding: 12px 10px 4px !important;
    border-top: 1px solid rgba(8, 9, 12, 0.07);
}

.cv-mega-wrap:not(#cv-m) .cv-mega-all .elementor-heading-title {
    display: inline-block;
}

.cv-mega-wrap:not(#cv-m) .cv-mega-all .elementor-heading-title a {
    position: relative;
    display: inline-block;
    padding: 4px 0;
    color: #08090c !important;
    font-size: 14px !important;
    font-weight: 700 !important;
}

.cv-mega-wrap:not(#cv-m) .cv-mega-all .elementor-heading-title a::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 2px;
    border-radius: 2px;
    background: var(--cv-blue);
    transform: scaleX(0);
    transform-origin: right center;
    transition: transform 0.45s var(--cv-ease);
}

.cv-mega-wrap:not(#cv-m) .cv-mega-all .elementor-heading-title a:hover {
    color: #315cff !important;
}

.cv-mega-wrap:not(#cv-m) .cv-mega-all .elementor-heading-title a:hover::after,
.cv-mega-wrap:not(#cv-m) .cv-mega-all .elementor-heading-title a:focus-visible::after {
    transform: scaleX(1);
    transform-origin: left center;
}


/* ---------- Apertura: una sola entrada suave ---------- */

.elementskit-navbar-nav > li:hover .cv-mega-wrap:not(#cv-m) .cv-mega-item,
.elementskit-navbar-nav > li:hover .cv-mega-wrap:not(#cv-m) .cv-mega-cta {
    animation: none !important;
}

@media (min-width: 1025px) {
    .elementskit-navbar-nav > li:hover .cv-mega-wrap:not(#cv-m) {
        animation: cv-mega-open 0.3s var(--cv-ease) both;
    }
}

@keyframes cv-mega-open {
    from { opacity: 0; transform: translateY(6px); }
    to { opacity: 1; transform: none; }
}


/* ---------- Escritorio angosto ---------- */

@media (min-width: 1025px) and (max-width: 1240px) {
    .cv-mega-wrap:not(#cv-m) .cv-mega-item .cv-mega-desc .elementor-heading-title {
        font-size: 13px !important;
    }

    .cv-mega-wrap:not(#cv-m) .cv-mega-item.e-con,
    .cv-mega-wrap:not(#cv-m) .cv-mega-cta.e-con {
        padding: 16px !important;
    }
}


/* ---------- Tablet y móvil: lista compacta ---------- */

@media (max-width: 1024px) {

    .cv-mega-wrap:not(#cv-m) {
        padding: 4px 0 8px !important;
        border: 0 !important;
        border-radius: 0 !important;
        background: transparent !important;
        box-shadow: none !important;
        animation: none !important;
    }

    .cv-mega-wrap:not(#cv-m) .cv-mega.e-con {
        grid-template-columns: minmax(0, 1fr) !important;
        gap: 0 !important;
    }

    .cv-mega-wrap:not(#cv-m) .cv-mega-item.e-con {
        flex-direction: row !important;
        align-items: center !important;
        gap: 12px !important;
        min-height: 0 !important;
        padding: 12px 14px !important;
        border: 0 !important;
        border-radius: 12px !important;
        background: transparent !important;
    }

    .cv-mega-wrap:not(#cv-m) .cv-mega-item.e-con > .elementor-element {
        width: auto !important;
    }

    .cv-mega-wrap:not(#cv-m) .cv-mega-item .cv-mega-desc {
        display: none !important;
    }

    .cv-mega-wrap:not(#cv-m) .cv-mega-num .elementor-heading-title {
        height: 20px;
        padding: 0 7px;
        font-size: 10.5px !important;
    }

    .cv-mega-wrap:not(#cv-m) .cv-mega-item .cv-mega-title .elementor-heading-title {
        margin: 0 !important;
        padding-right: 0;
        font-size: 15px !important;
        font-weight: 700 !important;
    }

    /* Al tocar: crema suave, sin tarjeta negra */
    .cv-mega-wrap:not(#cv-m) .cv-mega-item.e-con:hover,
    .cv-mega-wrap:not(#cv-m) .cv-mega-item.e-con:focus-visible,
    .cv-mega-wrap:not(#cv-m) .cv-mega-item.e-con:active {
        background: var(--cv-cream) !important;
    }

    .cv-mega-wrap:not(#cv-m) .cv-mega-item:hover .cv-mega-num .elementor-heading-title,
    .cv-mega-wrap:not(#cv-m) .cv-mega-item:focus-visible .cv-mega-num .elementor-heading-title {
        color: #315cff !important;
        border-color: rgba(49, 92, 255, 0.35);
    }

    .cv-mega-wrap:not(#cv-m) .cv-mega-item:hover .cv-mega-title .elementor-heading-title,
    .cv-mega-wrap:not(#cv-m) .cv-mega-item:focus-visible .cv-mega-title .elementor-heading-title {
        color: #08090c !important;
    }

    .cv-mega-wrap:not(#cv-m) .cv-mega-item::after {
        display: none !important;
    }

    .cv-mega-wrap:not(#cv-m) .cv-mega-cta.e-con {
        min-height: 0 !important;
        margin: 10px 0 0 !important;
        padding: 16px !important;
    }

    .cv-mega-wrap:not(#cv-m) .cv-mega-all {
        margin: 8px 0 0 !important;
        padding: 10px 14px 0 !important;
        border-top: 0;
    }
}


/* #########################################################
   61. HOME MÁS LIVIANO (v4.2.2)
   - Escalera: el sticky lo hace el navegador (position: sticky)
     y no el JavaScript de Elementor. El scroll queda suave y las
     tarjetas no se corren. Cada tarjeta baja 20 px respecto a la
     anterior. Si la plantilla aún trae el sticky de Elementor
     (clase elementor-sticky), se respeta ese.
   - Escalera: la flecha queda quieta; solo se mueve al pasar el
     mouse (antes ocho flechas se movían a la vez).
   - Soluciones: título del panel en duo tono, blanco y azul
     (la frase después de "pero" va en cv-title-accent).
   - Cómo trabajamos en celular: primero el título, el texto y las
     etapas; después la foto de Esteban junto a su frase y los botones.
   - Cifras (cv-home-stats): un solo panel blanco con tres columnas
     separadas por líneas finas, número grande en azul con símbolos y
     unidades en negro (como las cifras de los casos), ícono pequeño
     en círculo azul claro. Clara y sin cajas sueltas.
   ######################################################### */

@media (min-width: 768px) {
    .cv-home .cv-stack {
        overflow: visible !important;
    }

    .cv-home .cv-stack > .e-con:not(.elementor-sticky) {
        position: -webkit-sticky !important;
        position: sticky !important;
        top: calc(90px + var(--cv-step, 0) * 20px) !important;
    }

    .cv-home .cv-stack > .e-con:nth-child(1):not(.elementor-sticky) { --cv-step: 0; }
    .cv-home .cv-stack > .e-con:nth-child(2):not(.elementor-sticky) { --cv-step: 1; }
    .cv-home .cv-stack > .e-con:nth-child(3):not(.elementor-sticky) { --cv-step: 2; }
    .cv-home .cv-stack > .e-con:nth-child(4):not(.elementor-sticky) { --cv-step: 3; }
    .cv-home .cv-stack > .e-con:nth-child(5):not(.elementor-sticky) { --cv-step: 4; }
    .cv-home .cv-stack > .e-con:nth-child(6):not(.elementor-sticky) { --cv-step: 5; }
    .cv-home .cv-stack > .e-con:nth-child(7):not(.elementor-sticky) { --cv-step: 6; }
    .cv-home .cv-stack > .e-con:nth-child(8):not(.elementor-sticky) { --cv-step: 7; }
    .cv-home .cv-stack > .e-con:nth-child(9):not(.elementor-sticky) { --cv-step: 8; }
    .cv-home .cv-stack > .e-con:nth-child(10):not(.elementor-sticky) { --cv-step: 9; }
    .cv-home .cv-stack > .e-con:nth-child(11):not(.elementor-sticky) { --cv-step: 10; }
    .cv-home .cv-stack > .e-con:nth-child(12):not(.elementor-sticky) { --cv-step: 11; }
}

.cv-home .cv-stack .cv-pain-card:not(:hover):not(:focus-visible) .cv-card-arrow .elementor-icon {
    animation: none !important;
}

/* ---------- Soluciones: duo tono ---------- */
.cv-sol-para .elementor-heading-title .cv-title-accent {
    color: #315cff !important;
}

/* ---------- Cómo trabajamos en celular ---------- */
@media (max-width: 767px) {
    .cv-home-how .cv-how {
        display: flex !important;
        flex-direction: column !important;
        gap: 0 !important;
    }

    .cv-home-how .cv-how-content {
        display: contents !important;
    }

    .cv-home-how .cv-how-content > .elementor-element {
        width: 100% !important;
        order: 1;
    }

    .cv-home-how .cv-how-content > .cv-stages {
        order: 2;
    }

    .cv-home-how .cv-how > .cv-how-media {
        order: 3;
        width: 100% !important;
        max-width: none !important;
        margin-top: 40px !important;
    }

    .cv-home-how .cv-how-content > .cv-founder-quote {
        order: 4;
    }

    .cv-home-how .cv-how-content > .cv-how-ctas {
        order: 5;
    }

    .cv-home-how .cv-founder-photo img {
        aspect-ratio: 4 / 5 !important;
        object-position: 50% 15%;
    }

    .cv-home-how .cv-founder-badge {
        left: 12px;
        right: 12px;
        bottom: 12px;
        padding: 12px 14px !important;
    }

    .cv-home-how .cv-founder-quote blockquote {
        margin-top: 24px !important;
    }
}

/* ---------- Cifras del Home: panel claro de tres columnas ---------- */
.cv-home-stats .cv-stats-row {
    gap: 0 !important;
    padding: 0 !important;
    border: 1px solid rgba(49, 92, 255, 0.14) !important;
    border-radius: 22px !important;
    background: #ffffff !important;
    overflow: hidden;
}

.cv-home-stats .cv-stats-row .cv-stat-card,
.cv-home-stats .cv-stats-row .cv-stat-card:first-child,
.cv-home-stats .cv-stats-row .cv-stat-card + .cv-stat-card {
    position: relative;
    flex: 1 1 0 !important;
    width: auto !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 36px 36px 34px !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
}

.cv-home-stats .cv-stats-row .cv-stat-card .elementor-widget-container {
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
}

/* Línea fina entre columnas */
.cv-home-stats .cv-stats-row .cv-stat-card + .cv-stat-card::before {
    content: "";
    position: absolute;
    top: 30px;
    bottom: 30px;
    left: 0;
    width: 1px;
    background: rgba(8, 9, 12, 0.08);
}

.cv-home-stats .cv-stats-row .cv-stat-card .elementor-icon-box-wrapper {
    display: flex !important;
    flex-direction: row-reverse !important;
    align-items: flex-start !important;
    justify-content: space-between !important;
    gap: 20px !important;
    text-align: left !important;
}

.cv-home-stats .cv-stats-row .cv-stat-card .elementor-icon-box-icon {
    flex: 0 0 auto;
    margin: 0 !important;
}

.cv-home-stats .cv-stats-row .cv-stat-card .elementor-icon {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    width: 44px !important;
    height: 44px !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 50% !important;
    background: rgba(49, 92, 255, 0.08) !important;
    color: #315cff !important;
    font-size: 20px !important;
    box-shadow: none !important;
}

.cv-home-stats .cv-stats-row .cv-stat-card .elementor-icon svg {
    width: 20px !important;
    height: 20px !important;
    fill: #315cff !important;
}

.cv-home-stats .cv-stats-row .cv-stat-card .elementor-icon-box-content {
    flex: 1 1 auto;
    min-width: 0;
}

.cv-home-stats .cv-stats-row .cv-stat-card .elementor-icon-box-title {
    margin: 0 !important;
    color: #08090c !important;
    font-size: clamp(40px, 4vw, 58px) !important;
    font-weight: 800 !important;
    line-height: 1 !important;
    letter-spacing: -0.045em !important;
    white-space: nowrap;
}

.cv-home-stats .cv-stats-row .cv-stat-card .cv-count-prefix {
    color: #08090c !important;
}

.cv-home-stats .cv-stats-row .cv-stat-card .cv-count-value {
    color: #315cff !important;
}

.cv-home-stats .cv-stats-row .cv-stat-card .cv-count-suffix {
    margin-left: 0.12em;
    color: #08090c !important;
    font-size: 0.36em;
    font-weight: 700;
    letter-spacing: -0.01em;
}

.cv-home-stats .cv-stats-row .cv-stat-card .elementor-icon-box-description {
    max-width: 28ch;
    margin: 12px 0 0 !important;
    color: #5a5f69 !important;
    font-size: 15px !important;
    font-weight: 500 !important;
    line-height: 1.45 !important;
    letter-spacing: 0 !important;
}

@media (min-width: 768px) and (max-width: 1024px) {
    .cv-home-stats .cv-stats-row .cv-stat-card,
    .cv-home-stats .cv-stats-row .cv-stat-card:first-child,
    .cv-home-stats .cv-stats-row .cv-stat-card + .cv-stat-card {
        padding: 28px 24px 26px !important;
    }

    .cv-home-stats .cv-stats-row .cv-stat-card .elementor-icon-box-wrapper {
        flex-direction: column !important;
        gap: 18px !important;
    }

    .cv-home-stats .cv-stats-row .cv-stat-card .elementor-icon-box-title {
        font-size: 40px !important;
    }
}

@media (max-width: 767px) {
    .cv-home-stats .cv-stats-row {
        flex-direction: column !important;
    }

    .cv-home-stats .cv-stats-row .cv-stat-card,
    .cv-home-stats .cv-stats-row .cv-stat-card:first-child,
    .cv-home-stats .cv-stats-row .cv-stat-card + .cv-stat-card {
        flex: 0 0 auto !important;
        width: 100% !important;
        padding: 22px 22px 20px !important;
    }

    .cv-home-stats .cv-stats-row .cv-stat-card + .cv-stat-card::before {
        top: 0;
        bottom: auto;
        left: 22px;
        right: 22px;
        width: auto;
        height: 1px;
    }

    .cv-home-stats .cv-stats-row .cv-stat-card .elementor-icon-box-wrapper {
        flex-direction: row-reverse !important;
        align-items: center !important;
    }

    .cv-home-stats .cv-stats-row .cv-stat-card .elementor-icon-box-title {
        font-size: 40px !important;
    }

    .cv-home-stats .cv-stats-row .cv-stat-card .elementor-icon-box-description {
        margin-top: 8px !important;
    }
}


/* #########################################################
   62. DESARROLLO WEB EMPRESARIAL (cv-dw-*) (v4.2.3)
   Subpágina de servicio clonada de la plantilla maestra
   (sección 41) con piezas propias para que no sea una copia:
   · Hero: la meta del mapa es una ventana de navegador
     (cv-svc-map-target + cv-dw-target).
   · Escáner azul con 6 tarjetas en 3 columnas
     (cv-svc-scan + cv-svc-scan--6).
   · Paneles nuevos en las capacidades (los anima el JS de
     entregables, sin código extra):
     cv-svc-mock--site (la página de inicio se arma por
     bloques, barra cv-dw-bar), cv-svc-mock--form (campos que
     se completan y botón que se activa) y
     cv-svc-mock--redirect (rutas antiguas → nuevas con 301:
     cv-dw-old, cv-dw-new).
   · Proyectos desarrollados: cv-dw-projects-section,
     cv-dw-projects, cv-dw-project (+ cv-srv-card, mismo hover
     de la escalera del Home), cv-dw-shot (ventana con
     cv-dw-url y la captura cv-dw-shot-img), cv-dw-project-body,
     cv-dw-project-num, cv-dw-sector, cv-dw-metric,
     cv-dw-metric-value (+ cv-count), cv-dw-metric-label,
     cv-dw-projects-cta.
   ######################################################### */

/* ---------- Hero: la meta del mapa como ventana ---------- */
.cv-svc-map-target.cv-dw-target {
    position: relative;
    padding-top: 34px !important;
}

.cv-svc-map-target.cv-dw-target::before {
    content: "";
    position: absolute;
    top: 13px;
    left: 16px;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #c8ff36;
    box-shadow: 12px 0 0 rgba(248, 247, 244, 0.28), 24px 0 0 rgba(248, 247, 244, 0.28);
}

.cv-svc-map-target.cv-dw-target::after {
    content: "";
    position: absolute;
    top: 26px;
    left: 0;
    right: 0;
    height: 1px;
    background: rgba(200, 255, 54, 0.2);
}

/* ---------- Escáner con 6 tarjetas ---------- */
.cv-svc-scan.cv-svc-scan--6 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

/* ---------- Panel: la página de inicio se arma por bloques ---------- */
.cv-svc-mock--site .cv-svc-mock-item {
    margin-top: 8px !important;
}

.cv-svc-mock--site .cv-svc-mock-label + .cv-svc-mock-item {
    margin-top: 14px !important;
}

.cv-svc-mock--site .cv-svc-mock-item .elementor-heading-title {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 12px 14px;
    border-radius: 12px;
    background: #f5f2ea;
    color: #727783 !important;
    font-size: 11.5px !important;
    font-weight: 700 !important;
    letter-spacing: 0.06em !important;
    text-transform: uppercase;
    line-height: 1.2 !important;
    opacity: 0.4;
    transform: translateY(8px);
    transition: opacity 0.5s ease, transform 0.6s var(--cv-ease), background-color 0.5s ease, color 0.5s ease;
}

.cv-svc-mock--site .cv-svc-mock-item.is-on .elementor-heading-title {
    color: #08090c !important;
    opacity: 1;
    transform: none;
}

.cv-dw-bar {
    position: relative;
    order: 2;
    display: block;
    height: 8px;
    border-radius: 4px;
    background: rgba(8, 9, 12, 0.07);
    overflow: hidden;
}

.cv-dw-bar::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: #315cff;
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 0.9s var(--cv-ease) 0.15s;
}

.cv-svc-mock--site .cv-svc-mock-item:nth-child(2) .cv-dw-bar {
    height: 14px;
}

.cv-svc-mock--site .cv-svc-mock-item.is-on .cv-dw-bar::after {
    transform: scaleX(0.72);
}

.cv-svc-mock--site .cv-svc-mock-item:nth-child(3).is-on .cv-dw-bar::after {
    transform: scaleX(0.56);
}

.cv-svc-mock--site .cv-svc-mock-item:nth-child(4).is-on .cv-dw-bar::after {
    transform: scaleX(0.84);
}

.cv-svc-mock--site .cv-svc-mock-key.is-on .elementor-heading-title {
    background: #315cff;
    color: #ffffff !important;
}

.cv-svc-mock--site .cv-svc-mock-key .cv-dw-bar {
    background: rgba(255, 255, 255, 0.2);
}

.cv-svc-mock--site .cv-svc-mock-key.is-on .cv-dw-bar::after {
    background: #c8ff36;
    transform: scaleX(0.4);
}

/* ---------- Panel: formulario que se completa ---------- */
.cv-svc-mock--form .cv-svc-mock-item {
    margin-top: 8px !important;
}

.cv-svc-mock--form .cv-svc-mock-label + .cv-svc-mock-item {
    margin-top: 14px !important;
}

.cv-svc-mock--form .cv-svc-mock-item .elementor-heading-title {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 14px;
    border: 1px solid rgba(8, 9, 12, 0.1);
    border-radius: 12px;
    background: #ffffff;
    color: #9aa0aa !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    line-height: 1.3 !important;
    transition: border-color 0.45s ease, color 0.45s ease, background-color 0.45s ease, box-shadow 0.45s ease;
}

.cv-svc-mock--form .cv-svc-mock-item:not(.cv-svc-mock-key) .elementor-heading-title::after {
    content: "";
    flex: 0 0 20px;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #315cff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2l2.3 2.3L9.5 3.8' fill='none' stroke='%23ffffff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 50% 50% / 11px no-repeat;
    opacity: 0;
    transform: scale(0.4);
    transition: opacity 0.35s ease, transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.cv-svc-mock--form .cv-svc-mock-item.is-on:not(.cv-svc-mock-key) .elementor-heading-title {
    border-color: rgba(49, 92, 255, 0.45);
    color: #08090c !important;
}

.cv-svc-mock--form .cv-svc-mock-item.is-on:not(.cv-svc-mock-key) .elementor-heading-title::after {
    opacity: 1;
    transform: scale(1);
}

/* El botón: gris hasta que el formulario está completo, luego lima */
.cv-svc-mock--form .cv-svc-mock-key {
    margin-top: 14px !important;
}

.cv-svc-mock--form .cv-svc-mock-key .elementor-heading-title {
    justify-content: center;
    border-color: transparent;
    border-radius: 999px;
    background: #ece9e1;
    color: #9aa0aa !important;
    font-weight: 700 !important;
}

.cv-svc-mock--form .cv-svc-mock-key.is-on .elementor-heading-title {
    background: #c8ff36;
    color: #08090c !important;
    animation: cv-dw-press 1.6s ease-out 0.4s;
}

@keyframes cv-dw-press {
    0% { box-shadow: 0 0 0 0 rgba(200, 255, 54, 0.6); }
    100% { box-shadow: 0 0 0 12px rgba(200, 255, 54, 0); }
}

/* ---------- Panel: migración con redirecciones 301 ---------- */
.cv-svc-mock--redirect .cv-svc-mock-label + .cv-svc-mock-item {
    margin-top: 8px !important;
}

.cv-svc-mock--redirect .cv-svc-mock-item .elementor-heading-title {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 0;
    border-top: 1px solid rgba(8, 9, 12, 0.07);
    color: #08090c !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 12.5px !important;
    font-weight: 500 !important;
    line-height: 1.3 !important;
}

.cv-dw-old {
    flex: 1 1 0;
    min-width: 0;
    overflow: hidden;
    color: #727783;
    text-overflow: ellipsis;
    white-space: nowrap;
    text-decoration: line-through;
    text-decoration-color: transparent;
    transition: color 0.4s ease, text-decoration-color 0.4s ease;
}

.cv-dw-new {
    flex: 1 1 0;
    min-width: 0;
    overflow: hidden;
    color: #315cff;
    text-overflow: ellipsis;
    white-space: nowrap;
    opacity: 0;
    transform: translateX(-10px);
    transition: opacity 0.45s ease 0.1s, transform 0.6s var(--cv-ease) 0.1s;
}

.cv-dw-new::before {
    content: "→";
    margin-right: 8px;
    color: rgba(49, 92, 255, 0.5);
}

/* Sello 301 que aparece cuando la ruta queda redirigida */
.cv-svc-mock--redirect .cv-svc-mock-item:not(.cv-svc-mock-key) .elementor-heading-title::after {
    content: "301";
    flex: 0 0 auto;
    padding: 3px 8px;
    border-radius: 999px;
    background: rgba(49, 92, 255, 0.1);
    color: #315cff;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 0.04em;
    opacity: 0;
    transform: scale(0.5);
    transition: opacity 0.35s ease 0.25s, transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) 0.25s;
}

.cv-svc-mock--redirect .cv-svc-mock-item.is-on .cv-dw-old {
    color: #9aa0aa;
    text-decoration-color: rgba(8, 9, 12, 0.35);
}

.cv-svc-mock--redirect .cv-svc-mock-item.is-on .cv-dw-new,
.cv-svc-mock--redirect .cv-svc-mock-item.is-on .elementor-heading-title::after {
    opacity: 1;
    transform: none;
}

/* Cierre del panel: lo que se conserva */
.cv-svc-mock--redirect .cv-svc-mock-key .elementor-heading-title {
    gap: 12px;
    margin-top: 4px;
    padding: 12px 14px;
    border-top: 0;
    border-radius: 12px;
    background: #f5f2ea;
    font-family: inherit !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    transition: background-color 0.5s ease, color 0.5s ease;
}

.cv-svc-mock--redirect .cv-svc-mock-key .elementor-heading-title::before {
    content: "";
    flex: 0 0 22px;
    width: 22px;
    height: 22px;
    border: 1.5px solid rgba(49, 92, 255, 0.3);
    border-radius: 50%;
    background: #ffffff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2l2.3 2.3L9.5 3.8' fill='none' stroke='%23ffffff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 50% 50% / 12px no-repeat;
    transition: background-color 0.4s ease, border-color 0.4s ease;
}

.cv-svc-mock--redirect .cv-svc-mock-key.is-on .elementor-heading-title {
    background: rgba(49, 92, 255, 0.08);
}

.cv-svc-mock--redirect .cv-svc-mock-key.is-on .elementor-heading-title::before {
    border-color: #315cff;
    background-color: #315cff;
}

/* =========================================================
   PROYECTOS DESARROLLADOS
   ========================================================= */
.cv-dw-projects {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 20px !important;
    padding: 0 !important;
    overflow: visible !important;
    cursor: auto;
    scroll-snap-type: none;
}

.cv-dw-projects > .cv-dw-project {
    width: auto !important;
    min-height: 0;
    padding: 10px !important;
}

.cv-dw-shot {
    position: relative;
    gap: 0 !important;
    --widgets-spacing: 0px;
    border-radius: 15px !important;
    background: #08090c;
    overflow: hidden;
    isolation: isolate;
}

.cv-dw-shot > .elementor-element {
    width: 100% !important;
    margin: 0 !important;
}

/* Barra del navegador: tres puntos y la dirección */
.cv-dw-url .elementor-heading-title {
    display: flex;
    align-items: center;
    gap: 10px;
    height: 36px;
    padding: 0 14px;
    color: rgba(248, 247, 244, 0.62) !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 11.5px !important;
    font-weight: 500 !important;
    letter-spacing: 0.01em !important;
    line-height: 1 !important;
    white-space: nowrap;
}

.cv-dw-url .elementor-heading-title::before {
    content: "";
    flex: 0 0 7px;
    width: 7px;
    height: 7px;
    margin-right: 26px;
    border-radius: 50%;
    background: #c8ff36;
    box-shadow: 12px 0 0 rgba(248, 247, 244, 0.25), 24px 0 0 rgba(248, 247, 244, 0.25);
}

.cv-dw-shot-img {
    overflow: hidden;
}

.cv-dw-shot-img img,
.cv-dw-shot-img .elementor-widget-container img {
    display: block;
    width: 100% !important;
    height: auto !important;
    aspect-ratio: 16 / 10;
    object-fit: cover;
    object-position: 50% 0%;
    border-radius: 0 !important;
}

.cv-dw-project-body {
    flex: 1 1 auto;
    align-items: stretch !important;
    gap: 0 !important;
    --widgets-spacing: 0px;
    padding: 20px 14px 12px !important;
}

.cv-dw-project-body > .elementor-element {
    margin: 0 !important;
}

.cv-dw-sector .elementor-heading-title {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 14px !important;
    color: #727783 !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    letter-spacing: 0.06em !important;
    text-transform: uppercase;
    line-height: 1.3 !important;
}

.cv-dw-sector .elementor-heading-title::before {
    content: "";
    flex: 0 0 6px;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #315cff;
}

.cv-dw-project .cv-srv-card-title .elementor-heading-title {
    margin-top: 10px !important;
}

.cv-dw-metric {
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 6px !important;
    margin-top: 18px !important;
    padding-top: 16px !important;
    border-top: 1px solid rgba(49, 92, 255, 0.14);
}

.cv-dw-metric > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

.cv-dw-metric-value .elementor-heading-title {
    color: #315cff !important;
    font-size: clamp(28px, 2.4vw, 36px) !important;
    font-weight: 800 !important;
    letter-spacing: -0.04em !important;
    line-height: 1 !important;
    white-space: nowrap;
}

.cv-dw-metric-value .cv-count-prefix,
.cv-dw-metric-value .cv-count-suffix {
    color: #08090c;
}

.cv-dw-metric-label .elementor-heading-title {
    color: #3c414b !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    line-height: 1.35 !important;
}

.cv-dw-projects-cta {
    margin-top: 28px !important;
}

/* =========================================================
   TABLET
   ========================================================= */
@media (max-width: 1024px) {
    .cv-svc-scan.cv-svc-scan--6 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .cv-svc-scan--6 .cv-svc-scan-cell:last-child {
        grid-column: auto;
    }

    /* Una tarjeta por fila: captura a la izquierda, texto a la derecha */
    .cv-dw-projects {
        grid-template-columns: 1fr;
        gap: 16px !important;
    }

    .cv-dw-projects > .cv-dw-project {
        display: grid !important;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        column-gap: 20px;
        align-items: stretch;
    }

    .cv-dw-project-body {
        padding: 12px 8px 8px !important;
    }

    .cv-dw-project-num {
        margin-top: 0 !important;
    }
}

/* =========================================================
   MÓVIL
   ========================================================= */
@media (max-width: 767px) {
    .cv-svc-scan.cv-svc-scan--6 {
        grid-template-columns: 1fr;
    }

    .cv-dw-projects > .cv-dw-project {
        display: flex !important;
        padding: 8px !important;
    }

    .cv-dw-project-body {
        padding: 18px 10px 10px !important;
    }

    .cv-dw-url .elementor-heading-title {
        height: 32px;
    }

    .cv-svc-mock--redirect .cv-svc-mock-item .elementor-heading-title {
        font-size: 11.5px !important;
        gap: 8px;
    }

    .cv-dw-new::before {
        margin-right: 5px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-svc-mock--form .cv-svc-mock-key.is-on .elementor-heading-title {
        animation: none !important;
    }
}

/* En el editor y con movimiento reducido los paneles se ven completos */
.elementor-editor-active .cv-svc-mock--site .cv-svc-mock-item .elementor-heading-title {
    opacity: 1;
    transform: none;
}

.elementor-editor-active .cv-dw-new {
    opacity: 1;
    transform: none;
}


/* #########################################################
   63. ECOMMERCE (cv-ec-*) (v4.2.4)
   Subpágina de servicio clonada de la maestra (sección 41) y
   de Desarrollo Web (sección 62), con piezas propias:
   · Hero: la meta del mapa es la tienda (cv-svc-map-target +
     cv-ec-target): bolsa de compras junto al título y una
     pastilla "+1 pedido" que sube cada vez que llega un pulso.
   · Sección azul: cv-svc-scan cv-svc-scan--6 cv-ec-scan. El JS
     agrega arriba el "Recorrido del comprador" (cv-ec-track),
     una línea lima que avanza con la tarjeta encendida.
   · Paneles nuevos en las capacidades (los anima el JS de
     entregables):
     cv-svc-mock--checkout (pasos cv-ec-steps con cv-ec-dot y
     "Compra completada"), cv-svc-mock--order (pedido en línea
     de tiempo: cv-ec-what + cv-ec-tag) y cv-svc-mock--growth
     (indicadores con barras: cv-ec-kpi + cv-ec-meter, y
     cv-ec-trend en la fila clave).
   · Proyecto realizado: cv-ec-case-section, cv-ec-case
     (cv-dw-shot cv-ec-shot + cv-ec-case-body con cv-dw-sector,
     cv-ec-case-title, cv-ec-case-text, cv-svc-chain y
     cv-ec-case-ctas) y cifras cv-svc-kpis cv-ec-kpis.
   ######################################################### */

/* ---------- Hero: la meta del mapa es la tienda ---------- */
.cv-svc-map-target.cv-ec-target {
    position: relative;
    overflow: visible;
}

.cv-ec-target .cv-svc-map-target-title .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

/* Bolsa de compras (línea plana lima) */
.cv-ec-target .cv-svc-map-target-title .elementor-heading-title::before {
    content: "";
    flex: 0 0 18px;
    width: 18px;
    height: 18px;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c8ff36' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 8h14l-1.2 11.2a1.5 1.5 0 0 1-1.5 1.3H7.7a1.5 1.5 0 0 1-1.5-1.3L5 8z'/%3E%3Cpath d='M9 10V7a3 3 0 0 1 6 0v3'/%3E%3C/svg%3E") 50% 50% / contain no-repeat;
}

/* "+1 pedido": sube y se desvanece con cada pulso */
.cv-svc-map-target.cv-ec-target::after {
    content: "+1 pedido";
    position: absolute;
    top: -13px;
    right: 18px;
    padding: 4px 10px;
    border-radius: 999px;
    background: #c8ff36;
    color: #08090c;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.02em;
    line-height: 1.2;
    white-space: nowrap;
    opacity: 0;
    pointer-events: none;
    transform: translateY(8px) scale(0.85);
}

.cv-svc-map-target.cv-ec-target.is-hit::after {
    animation: cv-ec-order 1.2s var(--cv-ease) forwards;
}

@keyframes cv-ec-order {
    0% { opacity: 0; transform: translateY(8px) scale(0.85); }
    22% { opacity: 1; transform: translateY(0) scale(1); }
    68% { opacity: 1; transform: translateY(-3px) scale(1); }
    100% { opacity: 0; transform: translateY(-12px) scale(1); }
}

/* ---------- Sección azul: recorrido del comprador ---------- */
.cv-ec-track {
    display: flex;
    align-items: center;
    gap: 18px;
    width: 100%;
    margin: 0 0 30px;
}

.cv-ec-track-label,
.cv-ec-track-count {
    flex: 0 0 auto;
    color: rgba(255, 255, 255, 0.78);
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    line-height: 1.2;
    white-space: nowrap;
}

.cv-ec-track-count {
    min-width: 6ch;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.cv-ec-track-count b {
    color: #c8ff36;
    font-weight: 700;
}

.cv-ec-track-line {
    position: relative;
    flex: 1 1 auto;
    height: 2px;
    border-radius: 2px;
    background: rgba(255, 255, 255, 0.24);
}

.cv-ec-track-fill {
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: #c8ff36;
    transform: scaleX(var(--ec-p, 0));
    transform-origin: left center;
    transition: transform 0.9s var(--cv-ease);
}

.cv-ec-track-dot {
    position: absolute;
    top: 50%;
    width: 10px;
    height: 10px;
    margin: -5px 0 0 -5px;
    border: 2px solid rgba(255, 255, 255, 0.5);
    border-radius: 50%;
    background: #315cff;
    transition: background-color 0.4s ease, border-color 0.4s ease, transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.cv-ec-track-dot.is-done {
    border-color: #c8ff36;
    background: #c8ff36;
}

.cv-ec-track-dot.is-now {
    transform: scale(1.45);
}

/* ---------- Panel: recorrido de compra ---------- */
.cv-ec-steps {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0 !important;
    margin-top: 18px !important;
}

.cv-ec-steps > .elementor-element {
    position: relative;
    width: auto !important;
    margin: 0 !important;
}

/* Tramo de línea entre un paso y el anterior: se dibuja al completarse */
.cv-ec-steps > .elementor-element + .elementor-element::before,
.cv-ec-steps > .elementor-element + .elementor-element::after {
    content: "";
    position: absolute;
    top: 9px;
    right: 50%;
    width: 100%;
    height: 2px;
    border-radius: 2px;
}

.cv-ec-steps > .elementor-element + .elementor-element::before {
    background: #ece9e1;
}

.cv-ec-steps > .elementor-element + .elementor-element::after {
    background: #315cff;
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform 0.4s ease;
}

.cv-ec-steps > .elementor-element.is-on + .elementor-element.is-on::after {
    transform: scaleX(1);
}

.cv-svc-mock--checkout .cv-ec-steps .cv-svc-mock-item .elementor-heading-title {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    color: #9aa0aa !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    line-height: 1.2 !important;
    text-align: center;
    transition: color 0.4s ease;
}

.cv-ec-dot {
    display: block;
    width: 20px;
    height: 20px;
    border: 2px solid #dcd8ce;
    border-radius: 50%;
    background: #ffffff 50% 50% / 11px no-repeat;
    transform: scale(0.85);
    transition: background-color 0.35s ease 0.2s, border-color 0.35s ease 0.2s, transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) 0.2s;
}

.cv-svc-mock--checkout .cv-ec-steps .cv-svc-mock-item.is-on .elementor-heading-title {
    color: #08090c !important;
}

.cv-svc-mock--checkout .cv-svc-mock-item.is-on .cv-ec-dot {
    border-color: #315cff;
    background-color: #315cff;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2l2.3 2.3L9.5 3.8' fill='none' stroke='%23ffffff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    transform: scale(1);
}

/* "Compra completada": gris hasta el último paso, luego lima */
.cv-svc-mock--checkout .cv-svc-mock-key {
    margin-top: 20px !important;
}

.cv-svc-mock--checkout .cv-svc-mock-key .elementor-heading-title {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 12px 14px;
    border-radius: 999px;
    background: #ece9e1;
    color: #9aa0aa !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    line-height: 1.3 !important;
    transition: background-color 0.45s ease, color 0.45s ease;
}

.cv-svc-mock--checkout .cv-svc-mock-key .elementor-heading-title::before {
    content: "";
    flex: 0 0 18px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #08090c url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2l2.3 2.3L9.5 3.8' fill='none' stroke='%23c8ff36' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 50% 50% / 10px no-repeat;
    opacity: 0;
    transform: scale(0.4);
    transition: opacity 0.35s ease, transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.cv-svc-mock--checkout .cv-svc-mock-key.is-on .elementor-heading-title {
    background: #c8ff36;
    color: #08090c !important;
    animation: cv-dw-press 1.6s ease-out 0.4s;
}

.cv-svc-mock--checkout .cv-svc-mock-key.is-on .elementor-heading-title::before {
    opacity: 1;
    transform: scale(1);
}

/* ---------- Panel: pedido en línea de tiempo ---------- */
.cv-svc-mock--order .cv-svc-mock-label + .cv-svc-mock-item {
    margin-top: 10px !important;
}

.cv-svc-mock--order .cv-svc-mock-item .elementor-heading-title {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 0 12px 32px;
    color: #9aa0aa !important;
    font-size: 14.5px !important;
    font-weight: 600 !important;
    line-height: 1.3 !important;
    transition: color 0.4s ease;
}

/* Punto del paso */
.cv-svc-mock--order .cv-svc-mock-item .elementor-heading-title::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 3px;
    z-index: 1;
    width: 14px;
    height: 14px;
    margin-top: -7px;
    border: 2px solid #dcd8ce;
    border-radius: 50%;
    background: #ffffff;
    transition: border-color 0.35s ease, background-color 0.35s ease, box-shadow 0.5s ease;
}

/* Línea hacia el siguiente paso: se dibuja cuando el paso se completa */
.cv-svc-mock--order .cv-svc-mock-item:not(:last-child) .elementor-heading-title::after {
    content: "";
    position: absolute;
    top: calc(50% + 7px);
    left: 9px;
    width: 2px;
    height: calc(100% - 14px);
    border-radius: 2px;
    background: #315cff;
    transform: scaleY(0);
    transform-origin: center top;
    transition: transform 0.35s ease 0.15s;
}

.cv-svc-mock--order .cv-svc-mock-item.is-on .elementor-heading-title {
    color: #08090c !important;
}

.cv-svc-mock--order .cv-svc-mock-item.is-on .elementor-heading-title::before {
    border-color: #315cff;
    background: #315cff;
    box-shadow: 0 0 0 4px rgba(49, 92, 255, 0.12);
}

.cv-svc-mock--order .cv-svc-mock-item.is-on .elementor-heading-title::after {
    transform: scaleY(1);
}

.cv-ec-what {
    min-width: 0;
}

.cv-ec-tag {
    flex: 0 0 auto;
    padding: 4px 9px;
    border-radius: 999px;
    background: #f5f2ea;
    color: #727783;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    transition: background-color 0.4s ease, color 0.4s ease;
}

.cv-svc-mock--order .cv-svc-mock-item.is-on .cv-ec-tag {
    background: rgba(49, 92, 255, 0.1);
    color: #315cff;
}

/* Último paso: el pedido llega al CRM */
.cv-svc-mock--order .cv-svc-mock-key.is-on .elementor-heading-title {
    color: #315cff !important;
}

.cv-svc-mock--order .cv-svc-mock-key.is-on .elementor-heading-title::before {
    border-color: #315cff;
    background: #c8ff36;
    animation: cv-ec-ring 1.6s ease-out 0.3s;
}

.cv-svc-mock--order .cv-svc-mock-key.is-on .cv-ec-tag {
    background: #c8ff36;
    color: #08090c;
}

@keyframes cv-ec-ring {
    0% { box-shadow: 0 0 0 0 rgba(49, 92, 255, 0.35); }
    100% { box-shadow: 0 0 0 12px rgba(49, 92, 255, 0); }
}

/* ---------- Panel: indicadores del canal ---------- */
.cv-svc-mock--growth .cv-svc-mock-label + .cv-svc-mock-item {
    margin-top: 10px !important;
}

.cv-svc-mock--growth .cv-svc-mock-item .elementor-heading-title {
    display: grid;
    grid-template-columns: 128px minmax(0, 1fr);
    align-items: center;
    gap: 16px;
    padding: 12px 0;
    border-top: 1px solid rgba(8, 9, 12, 0.07);
    line-height: 1.3 !important;
}

.cv-ec-kpi {
    color: #3c414b;
    font-size: 14px;
    font-weight: 600;
}

.cv-ec-meter {
    position: relative;
    display: block;
    height: 10px;
    border-radius: 5px;
    background: #f0ede5;
    overflow: hidden;
}

.cv-ec-meter::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: #315cff;
    transform: scaleX(0.12);
    transform-origin: left center;
    transition: transform 1.1s var(--cv-ease);
}

.cv-svc-mock--growth .cv-svc-mock-item.is-on .cv-ec-meter::after {
    transform: scaleX(0.62);
}

.cv-svc-mock--growth .cv-svc-mock-item:nth-child(3).is-on .cv-ec-meter::after {
    transform: scaleX(0.78);
}

.cv-svc-mock--growth .cv-svc-mock-item:nth-child(4).is-on .cv-ec-meter::after {
    transform: scaleX(0.5);
}

/* Fila clave: valor del cliente (tarjeta azul con texto blanco) */
.cv-svc-mock--growth .cv-svc-mock-key {
    margin-top: 8px !important;
}

.cv-svc-mock--growth .cv-svc-mock-key .elementor-heading-title {
    display: flex;
    justify-content: space-between;
    padding: 13px 14px;
    border-top: 0;
    border-radius: 12px;
    background: #f5f2ea;
    transition: background-color 0.5s ease;
}

.cv-ec-trend {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    border-radius: 999px;
    background: #c8ff36;
    color: #08090c;
    font-size: 12px;
    font-weight: 700;
    white-space: nowrap;
    opacity: 0;
    transform: translateX(-8px);
    transition: opacity 0.4s ease 0.25s, transform 0.6s var(--cv-ease) 0.25s;
}

.cv-ec-trend::before {
    content: "↗";
    font-weight: 800;
}

.cv-svc-mock--growth .cv-svc-mock-key.is-on .elementor-heading-title {
    background: #315cff;
}

.cv-svc-mock--growth .cv-svc-mock-key.is-on .cv-ec-kpi {
    color: #ffffff;
}

.cv-svc-mock--growth .cv-svc-mock-key.is-on .cv-ec-trend {
    opacity: 1;
    transform: none;
}

/* =========================================================
   PROYECTO REALIZADO (Tecnomedica)
   ========================================================= */
.cv-ec-case {
    display: grid !important;
    grid-template-columns: minmax(0, 1.12fr) minmax(0, 0.88fr);
    gap: 44px !important;
    align-items: center;
    padding: 10px !important;
    border: 1px solid rgba(49, 92, 255, 0.12);
    border-radius: 26px !important;
    background: #f8f7f4;
}

.cv-ec-case > .e-con {
    width: auto !important;
}

.cv-ec-shot {
    border-radius: 18px !important;
}

.cv-ec-case-body {
    align-items: flex-start !important;
    gap: 0 !important;
    --widgets-spacing: 0px;
    padding: 24px 32px 24px 0 !important;
}

.cv-ec-case-body > .elementor-element {
    margin: 0 !important;
}

.cv-ec-case-body .cv-dw-sector .elementor-heading-title {
    margin-top: 0 !important;
}

.cv-ec-case-title .elementor-heading-title {
    margin-top: 14px !important;
    color: #08090c !important;
    font-size: clamp(24px, 2.2vw, 32px) !important;
    font-weight: 800 !important;
    line-height: 1.1 !important;
    letter-spacing: -0.04em !important;
}

.cv-ec-case-text p {
    max-width: 48ch;
    margin: 14px 0 0 !important;
    color: var(--cv-p-on-light) !important;
    font-size: 16px !important;
    line-height: 1.6 !important;
}

.cv-ec-case-body .cv-svc-chain {
    width: 100% !important;
}

.cv-ec-case-ctas {
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 14px 26px !important;
    width: 100% !important;
    margin-top: 28px !important;
}

.cv-ec-case-ctas > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

.cv-ec-kpis {
    margin-top: 20px !important;
}

/* =========================================================
   TABLET
   ========================================================= */
@media (max-width: 1024px) {
    .cv-ec-case {
        grid-template-columns: 1fr;
        gap: 0 !important;
    }

    .cv-ec-case-body {
        padding: 26px 18px 18px !important;
    }

    .cv-ec-track {
        gap: 14px;
    }
}

/* =========================================================
   MÓVIL
   ========================================================= */
@media (max-width: 767px) {
    .cv-svc-map-target.cv-ec-target::after {
        right: 12px;
    }

    /* Las tarjetas van una debajo de otra: el recorrido queda solo con la línea */
    .cv-ec-track-label {
        display: none;
    }

    .cv-svc-mock--checkout .cv-ec-steps .cv-svc-mock-item .elementor-heading-title {
        font-size: 12px !important;
    }

    .cv-svc-mock--order .cv-svc-mock-item .elementor-heading-title {
        font-size: 13.5px !important;
    }

    .cv-svc-mock--growth .cv-svc-mock-item .elementor-heading-title {
        grid-template-columns: 108px minmax(0, 1fr);
        gap: 12px;
    }

    .cv-ec-kpi {
        font-size: 13px;
    }

    .cv-ec-case {
        padding: 8px !important;
        border-radius: 22px !important;
    }

    .cv-ec-case-body {
        padding: 22px 12px 14px !important;
    }

    .cv-ec-case-ctas {
        flex-direction: column !important;
        align-items: flex-start !important;
        gap: 6px !important;
        margin-top: 22px !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-svc-map-target.cv-ec-target.is-hit::after,
    .cv-svc-mock--checkout .cv-svc-mock-key.is-on .elementor-heading-title,
    .cv-svc-mock--order .cv-svc-mock-key.is-on .elementor-heading-title::before {
        animation: none !important;
    }
}

/* En el editor los paneles se ven completos */
.elementor-editor-active .cv-svc-mock--checkout .cv-svc-mock-item .cv-ec-dot {
    border-color: #315cff;
    background-color: #315cff;
}

.elementor-editor-active .cv-ec-meter::after {
    transform: scaleX(0.6);
}

.elementor-editor-active .cv-ec-trend {
    opacity: 1;
    transform: none;
}

/* Ecommerce v4.2.6: la captura de Tecnomedica se ve completa y quieta,
   como las demás imágenes de contenido (sin recorte 16:10 ni movimiento) */
.cv-ec-shot .cv-dw-shot-img img,
.cv-ec-shot .cv-dw-shot-img .elementor-widget-container img {
    aspect-ratio: auto;
    object-fit: contain;
    transform: none !important;
}


/* #########################################################
   64. GENERACIÓN DE DEMANDA (cv-gd-*) (v4.2.7)
   Subpágina de servicio clonada de la maestra (sección 41) y
   de Ecommerce (sección 63), con piezas propias:
   · Hero: la meta del mapa es el pipeline comercial
     (cv-svc-map-target + cv-gd-target): embudo lima junto al
     título y una pastilla "+1 oportunidad" con cada pulso.
   · Sección azul: cv-svc-scan cv-svc-scan--6 cv-gd-scan. El JS
     agrega arriba "Del público a la venta" (cv-gd-flow): seis
     bloques que se angostan como un embudo; se enciende el de
     la tarjeta activa.
   · Paneles nuevos en las capacidades (los anima el JS de
     entregables):
     cv-svc-mock--budget (barra de inversión cv-gd-split que se
     reparte y luego se reasigna; filas con cv-gd-sw y
     cv-gd-note; fila clave con cv-gd-pill),
     cv-svc-mock--message (anuncio, landing y formulario en
     escalera con cv-gd-tag) y cv-svc-mock--lead (ficha con
     cv-gd-k / cv-gd-v y etapas cv-gd-stages en la fila clave).
   · Caso: estructura de la maestra (cv-svc-case) y debajo el
     embudo de resultados cv-gd-funnel (cv-gd-stage con
     cv-gd-stage-value + cv-count y cv-gd-stage-name; la última
     etapa es cv-gd-stage--key) y la nota cv-gd-funnel-note.
   ######################################################### */

/* ---------- Hero: la meta del mapa es el pipeline ---------- */
.cv-svc-map-target.cv-gd-target {
    position: relative;
    overflow: visible;
}

.cv-gd-target .cv-svc-map-target-title .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

/* Embudo (línea plana lima) */
.cv-gd-target .cv-svc-map-target-title .elementor-heading-title::before {
    content: "";
    flex: 0 0 18px;
    width: 18px;
    height: 18px;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c8ff36' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 5h17l-6.5 7.6V19l-4 1.5v-7.9L3.5 5z'/%3E%3C/svg%3E") 50% 50% / contain no-repeat;
}

/* "+1 oportunidad": sube y se desvanece con cada pulso */
.cv-svc-map-target.cv-gd-target::after {
    content: "+1 oportunidad";
    position: absolute;
    top: -13px;
    right: 18px;
    padding: 4px 10px;
    border-radius: 999px;
    background: #c8ff36;
    color: #08090c;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.02em;
    line-height: 1.2;
    white-space: nowrap;
    opacity: 0;
    pointer-events: none;
    transform: translateY(8px) scale(0.85);
}

.cv-svc-map-target.cv-gd-target.is-hit::after {
    animation: cv-gd-hit 1.2s var(--cv-ease) forwards;
}

@keyframes cv-gd-hit {
    0% { opacity: 0; transform: translateY(8px) scale(0.85); }
    22% { opacity: 1; transform: translateY(0) scale(1); }
    68% { opacity: 1; transform: translateY(-3px) scale(1); }
    100% { opacity: 0; transform: translateY(-12px) scale(1); }
}

/* ---------- Sección azul: del público a la venta ---------- */
.cv-gd-flow {
    display: flex;
    align-items: center;
    gap: 20px;
    width: 100%;
    margin: 0 0 30px;
}

.cv-gd-flow-label,
.cv-gd-flow-count {
    flex: 0 0 auto;
    color: rgba(255, 255, 255, 0.78);
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    line-height: 1.2;
    white-space: nowrap;
}

.cv-gd-flow-count {
    min-width: 11ch;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.cv-gd-flow-count b {
    color: #c8ff36;
    font-weight: 700;
}

.cv-gd-flow-bars {
    display: flex;
    flex: 1 1 auto;
    align-items: center;
    gap: 6px;
    height: 44px;
}

/* Cada bloque es un poco más bajo que el anterior: un embudo de lado */
.cv-gd-flow-seg {
    display: flex;
    flex: 1 1 0;
    align-items: center;
    justify-content: center;
    height: var(--gd-h, 100%);
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.14);
    color: rgba(255, 255, 255, 0.7);
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 11px;
    font-weight: 700;
    line-height: 1;
    transition: background-color 0.45s ease, color 0.45s ease, transform 0.55s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.cv-gd-flow-seg.is-done {
    background: rgba(255, 255, 255, 0.34);
    color: #ffffff;
}

.cv-gd-flow-seg.is-now {
    background: #c8ff36;
    color: #08090c;
    transform: scaleY(1.12);
}

/* ---------- Panel: inversión por canal ---------- */
.cv-gd-split {
    display: flex;
    gap: 4px;
    width: 100%;
    height: 14px;
    margin: 14px 0 8px;
}

.cv-gd-split > span {
    flex: 0 1 0;
    min-width: 0;
    border-radius: 999px;
    transition: flex-grow 1.1s var(--cv-ease);
}

.cv-gd-split > span:nth-child(1),
.cv-svc-mock--budget .cv-svc-mock-item:nth-child(3) .cv-gd-sw {
    background: #315cff;
}

.cv-gd-split > span:nth-child(2),
.cv-svc-mock--budget .cv-svc-mock-item:nth-child(4) .cv-gd-sw {
    background: #08090c;
}

.cv-gd-split > span:nth-child(3),
.cv-svc-mock--budget .cv-svc-mock-item:nth-child(5) .cv-gd-sw {
    background: #c8ff36;
}

/* Primero se reparte en partes iguales… */
.cv-svc-mock--budget .cv-svc-mock-item.is-on .cv-gd-split > span {
    flex-grow: 1;
}

/* …y cuando llega la fila clave se reasigna hacia lo que trae calidad */
.cv-svc-mock--budget:has(.cv-svc-mock-key.is-on) .cv-gd-split > span:nth-child(1) {
    flex-grow: 2.2;
}

.cv-svc-mock--budget:has(.cv-svc-mock-key.is-on) .cv-gd-split > span:nth-child(2) {
    flex-grow: 0.8;
}

.cv-svc-mock--budget:has(.cv-svc-mock-key.is-on) .cv-gd-split > span:nth-child(3) {
    flex-grow: 1.5;
}

.cv-svc-mock--budget .cv-svc-mock-item:not(.cv-svc-mock-key) .elementor-heading-title {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 0;
    color: #9aa0aa !important;
    font-size: 14.5px !important;
    font-weight: 600 !important;
    line-height: 1.3 !important;
    transition: color 0.4s ease;
}

.cv-svc-mock--budget .cv-svc-mock-item:nth-child(n+4):not(.cv-svc-mock-key) .elementor-heading-title {
    border-top: 1px solid rgba(8, 9, 12, 0.07);
}

.cv-svc-mock--budget .cv-svc-mock-item:nth-child(2) .elementor-heading-title {
    padding: 0;
}

.cv-svc-mock--budget .cv-svc-mock-item.is-on .elementor-heading-title {
    color: #08090c !important;
}

.cv-gd-sw {
    flex: 0 0 10px;
    width: 10px;
    height: 10px;
    border-radius: 3px;
    opacity: 0.3;
    transition: opacity 0.4s ease;
}

.cv-svc-mock--budget .cv-svc-mock-item.is-on .cv-gd-sw {
    opacity: 1;
}

.cv-gd-note {
    margin-left: auto;
    color: #9aa0aa;
    font-size: 12.5px;
    font-weight: 500;
    text-align: right;
}

.cv-svc-mock--budget .cv-svc-mock-key {
    margin-top: 8px !important;
}

.cv-svc-mock--budget .cv-svc-mock-key .elementor-heading-title {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 13px 14px;
    border-radius: 12px;
    background: #f5f2ea;
    color: #9aa0aa !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    line-height: 1.3 !important;
    transition: background-color 0.5s ease, color 0.5s ease;
}

.cv-gd-pill {
    flex: 0 0 auto;
    padding: 4px 10px;
    border-radius: 999px;
    background: #c8ff36;
    color: #08090c;
    font-size: 12px;
    font-weight: 700;
    white-space: nowrap;
    opacity: 0;
    transform: translateX(-8px);
    transition: opacity 0.4s ease 0.35s, transform 0.6s var(--cv-ease) 0.35s;
}

.cv-svc-mock--budget .cv-svc-mock-key.is-on .elementor-heading-title {
    background: #315cff;
    color: #ffffff !important;
}

.cv-svc-mock--budget .cv-svc-mock-key.is-on .cv-gd-pill {
    opacity: 1;
    transform: none;
}

/* ---------- Panel: del anuncio a la solicitud (escalera) ---------- */
.cv-svc-mock--message .cv-svc-mock-label + .cv-svc-mock-item {
    margin-top: 14px !important;
}

.cv-svc-mock--message .cv-svc-mock-item:not(.cv-svc-mock-key) + .cv-svc-mock-item {
    margin-top: 8px !important;
}

/* Escalera: cada paso entra un poco más, sin salirse del panel */
.cv-svc-mock--message .cv-svc-mock-item:nth-child(3) {
    width: calc(100% - 18px) !important;
    margin-left: 18px !important;
}

.cv-svc-mock--message .cv-svc-mock-item:nth-child(4) {
    width: calc(100% - 36px) !important;
    margin-left: 36px !important;
}

.cv-svc-mock--message .cv-svc-mock-item:not(.cv-svc-mock-key) .elementor-heading-title {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 11px 14px;
    border: 1px solid rgba(8, 9, 12, 0.08);
    border-radius: 14px;
    background: #ffffff;
    color: #9aa0aa !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    line-height: 1.35 !important;
    opacity: 0.45;
    transform: translateX(-10px);
    transition: opacity 0.45s ease, transform 0.6s var(--cv-ease), color 0.45s ease, border-color 0.45s ease;
}

.cv-svc-mock--message .cv-svc-mock-item.is-on:not(.cv-svc-mock-key) .elementor-heading-title {
    border-color: rgba(49, 92, 255, 0.22);
    color: #08090c !important;
    opacity: 1;
    transform: none;
}

.cv-gd-tag {
    flex: 0 0 auto;
    min-width: 9.5ch;
    padding: 4px 9px;
    border-radius: 999px;
    background: #f5f2ea;
    color: #727783;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-align: center;
    text-transform: uppercase;
    transition: background-color 0.4s ease, color 0.4s ease;
}

.cv-svc-mock--message .cv-svc-mock-item.is-on .cv-gd-tag {
    background: rgba(49, 92, 255, 0.1);
    color: #315cff;
}

.cv-svc-mock--message .cv-svc-mock-key {
    margin-top: 16px !important;
}

.cv-svc-mock--message .cv-svc-mock-key .elementor-heading-title {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 12px 14px;
    border-radius: 999px;
    background: #ece9e1;
    color: #9aa0aa !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    line-height: 1.3 !important;
    transition: background-color 0.45s ease, color 0.45s ease;
}

.cv-svc-mock--message .cv-svc-mock-key .elementor-heading-title::before {
    content: "";
    flex: 0 0 18px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #08090c url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2l2.3 2.3L9.5 3.8' fill='none' stroke='%23c8ff36' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 50% 50% / 10px no-repeat;
    opacity: 0;
    transform: scale(0.4);
    transition: opacity 0.35s ease, transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.cv-svc-mock--message .cv-svc-mock-key.is-on .elementor-heading-title {
    background: #c8ff36;
    color: #08090c !important;
}

.cv-svc-mock--message .cv-svc-mock-key.is-on .elementor-heading-title::before {
    opacity: 1;
    transform: scale(1);
}

/* ---------- Panel: ficha del lead ---------- */
.cv-svc-mock--lead .cv-svc-mock-label + .cv-svc-mock-item {
    margin-top: 8px !important;
}

.cv-svc-mock--lead .cv-svc-mock-item .elementor-heading-title {
    display: grid;
    grid-template-columns: 112px minmax(0, 1fr);
    align-items: center;
    gap: 14px;
    padding: 12px 0;
    border-top: 1px solid rgba(8, 9, 12, 0.07);
    line-height: 1.3 !important;
}

.cv-svc-mock--lead .cv-svc-mock-label + .cv-svc-mock-item .elementor-heading-title {
    border-top: 0;
}

.cv-gd-k {
    color: #727783;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

/* El valor se "escribe" de izquierda a derecha */
.cv-gd-v {
    justify-self: start;
    color: #08090c;
    font-size: 14.5px;
    font-weight: 600;
    clip-path: inset(0 100% 0 0);
    transition: clip-path 0.7s var(--cv-ease);
}

.cv-svc-mock--lead .cv-svc-mock-item.is-on .cv-gd-v {
    clip-path: inset(0 0 0 0);
}

.cv-svc-mock--lead .cv-svc-mock-key .elementor-heading-title {
    margin-top: 6px;
    padding: 13px 14px;
    border-top: 0;
    border-radius: 12px;
    background: #f5f2ea;
}

.cv-gd-stages {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
}

.cv-gd-stages > span {
    padding: 5px 10px;
    border-radius: 999px;
    background: #ffffff;
    color: #9aa0aa;
    font-size: 12.5px;
    font-weight: 700;
    white-space: nowrap;
    transition: background-color 0.4s ease, color 0.4s ease;
}

.cv-svc-mock--lead .cv-svc-mock-key.is-on .cv-gd-stages > span {
    background: #315cff;
    color: #ffffff;
}

.cv-svc-mock--lead .cv-svc-mock-key.is-on .cv-gd-stages > span:nth-child(2) {
    transition-delay: 0.45s;
}

.cv-svc-mock--lead .cv-svc-mock-key.is-on .cv-gd-stages > span:nth-child(3) {
    background: #c8ff36;
    color: #08090c;
    transition-delay: 0.9s;
}

/* =========================================================
   CASO: EMBUDO DE RESULTADOS (Super Autos Miami)
   ========================================================= */
.cv-gd-funnel {
    width: 100% !important;
    gap: 0 !important;
    --widgets-spacing: 0px;
    margin-top: 64px !important;
    padding: 28px !important;
    border: 1px solid rgba(49, 92, 255, 0.12);
    border-radius: 26px !important;
    background: #f8f7f4;
}

.cv-gd-funnel-head > .elementor-element,
.cv-gd-stage > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

.cv-gd-funnel > .elementor-element {
    width: 100% !important;
    margin: 0 !important;
}

.cv-gd-funnel > .cv-gd-funnel-note {
    width: auto !important;
}

.cv-gd-funnel-head {
    flex-wrap: wrap !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 8px 20px !important;
}

.cv-gd-funnel-label .elementor-heading-title {
    color: #315cff !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 11.5px !important;
    font-weight: 600 !important;
    letter-spacing: 0.08em !important;
    text-transform: uppercase;
    line-height: 1.2 !important;
}

.cv-gd-funnel-meta .elementor-heading-title {
    color: #727783 !important;
    font-size: 13.5px !important;
    font-weight: 600 !important;
    line-height: 1.3 !important;
}

.cv-gd-stages-list {
    align-items: center !important;
    gap: 10px !important;
    --widgets-spacing: 0px;
    margin-top: 22px !important;
}

.cv-gd-funnel > .cv-gd-stages-list {
    margin-top: 22px !important;
}

/* Cada etapa es más angosta: el embudo se lee de arriba hacia abajo */
.cv-gd-stage {
    display: grid !important;
    grid-template-columns: auto auto;
    justify-content: center;
    align-items: baseline;
    gap: 18px !important;
    width: var(--gd-w, 100%) !important;
    padding: 22px 26px !important;
    border-radius: 18px !important;
    background: #ffffff;
    transition: clip-path 1s var(--cv-ease), box-shadow 0.45s ease, transform 0.45s var(--cv-ease) !important;
}

.cv-gd-stages-list > .cv-gd-stage:nth-child(1) {
    --gd-w: 100%;
}

.cv-gd-stages-list > .cv-gd-stage:nth-child(2) {
    --gd-w: 84%;
}

.cv-gd-stages-list > .cv-gd-stage:nth-child(3) {
    --gd-w: 68%;
}

.cv-gd-stage:hover {
    box-shadow: 0 22px 46px rgba(8, 9, 12, 0.08);
    transform: translateY(-4px);
}

.cv-gd-stage-value .elementor-heading-title {
    color: #315cff !important;
    font-size: clamp(30px, 3vw, 44px) !important;
    font-weight: 800 !important;
    line-height: 1 !important;
    letter-spacing: -0.04em !important;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.cv-gd-stage-name .elementor-heading-title {
    color: #3c414b !important;
    font-size: 16px !important;
    font-weight: 600 !important;
    line-height: 1.35 !important;
}

/* El dato principal: unidades vendidas (azul con texto blanco y cifra lima) */
.cv-gd-stage--key {
    background: #315cff !important;
}

.cv-gd-stage--key .cv-gd-stage-value .elementor-heading-title {
    color: #c8ff36 !important;
}

.cv-gd-stage--key .cv-gd-stage-name .elementor-heading-title {
    color: #ffffff !important;
}

.cv-gd-funnel-note .elementor-heading-title {
    margin-top: 18px !important;
    color: #727783 !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.04em !important;
    line-height: 1.4 !important;
    text-align: center;
}

.cv-gd-funnel-note {
    align-self: center !important;
}

/* Botones del caso en una sola fila */
.cv-gd-case-ctas {
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 14px 26px !important;
    width: 100% !important;
    margin-top: 28px !important;
}

.cv-gd-case-ctas > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

/* Entrada: cada etapa se abre desde el centro (lo prepara el JS) */
.cv-gd-funnel.is-ready .cv-gd-stage {
    clip-path: inset(0 50% 0 50% round 18px);
}

.cv-gd-funnel.is-ready .cv-gd-stage.is-on {
    clip-path: inset(0 0 0 0 round 18px);
}

/* =========================================================
   TABLET
   ========================================================= */
@media (max-width: 1024px) {
    .cv-gd-flow {
        gap: 14px;
    }

    .cv-gd-stages-list > .cv-gd-stage:nth-child(2) {
        --gd-w: 90%;
    }

    .cv-gd-stages-list > .cv-gd-stage:nth-child(3) {
        --gd-w: 80%;
    }
}

/* =========================================================
   MÓVIL
   ========================================================= */
@media (max-width: 767px) {
    .cv-svc-map-target.cv-gd-target::after {
        right: 12px;
    }

    /* Las tarjetas van una debajo de otra: queda solo el embudo y el contador */
    .cv-gd-flow-label {
        display: none;
    }

    .cv-gd-flow-bars {
        height: 34px;
        gap: 4px;
    }

    .cv-gd-flow-count {
        min-width: 0;
    }

    .cv-gd-note {
        display: none;
    }

    .cv-svc-mock--message .cv-svc-mock-item:nth-child(3) {
        width: calc(100% - 10px) !important;
        margin-left: 10px !important;
    }

    .cv-svc-mock--message .cv-svc-mock-item:nth-child(4) {
        width: calc(100% - 20px) !important;
        margin-left: 20px !important;
    }

    .cv-svc-mock--message .cv-svc-mock-item:not(.cv-svc-mock-key) .elementor-heading-title {
        align-items: flex-start;
        flex-direction: column;
        gap: 8px;
        font-size: 13.5px !important;
    }

    .cv-svc-mock--lead .cv-svc-mock-item .elementor-heading-title {
        grid-template-columns: 1fr;
        gap: 6px;
    }

    .cv-svc-mock--budget .cv-svc-mock-key .elementor-heading-title {
        font-size: 13.5px !important;
    }

    .cv-gd-funnel {
        padding: 20px 14px !important;
        border-radius: 22px !important;
        margin-top: 44px !important;
    }

    .cv-gd-stage {
        grid-template-columns: 1fr;
        justify-items: center;
        gap: 6px !important;
        padding: 18px 20px !important;
        text-align: center;
    }

    .cv-gd-case-ctas {
        flex-direction: column !important;
        align-items: flex-start !important;
        gap: 6px !important;
        margin-top: 22px !important;
    }

    .cv-gd-stages-list > .cv-gd-stage:nth-child(2) {
        --gd-w: 94%;
    }

    .cv-gd-stages-list > .cv-gd-stage:nth-child(3) {
        --gd-w: 88%;
    }

    .cv-gd-stage-name .elementor-heading-title {
        font-size: 15px !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-svc-map-target.cv-gd-target.is-hit::after {
        animation: none !important;
    }

    .cv-gd-funnel.is-ready .cv-gd-stage {
        clip-path: none;
    }
}

/* En el editor los paneles se ven completos */
.elementor-editor-active .cv-gd-split > span {
    flex-grow: 1;
}

.elementor-editor-active .cv-svc-mock--message .cv-svc-mock-item .elementor-heading-title {
    opacity: 1;
    transform: none;
}

.elementor-editor-active .cv-gd-v,
.elementor-editor-active .cv-gd-pill {
    clip-path: none;
    opacity: 1;
    transform: none;
}


/* #########################################################
   65. SEO Y VISIBILIDAD EN IA (cv-seo-*) (v4.2.8)
   Subpágina de servicio clonada de la maestra (sección 41) y
   de Generación de Demanda (sección 64), con piezas propias:
   · Hero: la meta del mapa es la presencia en búsquedas
     (cv-svc-map-target + cv-seo-target): lupa lima junto al
     título y una pastilla "+1 visita" con cada pulso.
   · Sección azul: cv-svc-scan cv-svc-scan--6 cv-seo-scan. El JS
     agrega arriba "Señal de visibilidad" (cv-seo-signal): seis
     barras que suben como la señal de un celular; se enciende
     la de la tarjeta activa.
   · Paneles nuevos en las capacidades (los anima el JS de
     entregables):
     cv-svc-mock--audit (revisión técnica: cv-seo-k + estado
     cv-seo-st que pasa de "Revisar" a "Corregido"),
     cv-svc-mock--serp (buscador con cv-seo-q que se escribe,
     resultado cv-seo-url / cv-seo-t / cv-seo-d y cv-seo-chip) y
     cv-svc-mock--answer (pregunta cv-seo-ask, respuesta con
     líneas cv-seo-lines y fuentes cv-seo-src).
   · Caso: estructura de la maestra (cv-svc-case) y debajo el
     tablero antes / después cv-seo-results (filas cv-seo-row con
     cv-seo-row-name, -before, -after + cv-count y -change; la
     fila de posición es cv-seo-row--rank y la de reservas
     cv-seo-row--key) y la nota cv-seo-results-note.
   ######################################################### */

/* ---------- Hero: la meta del mapa es la presencia en búsquedas ---------- */
.cv-svc-map-target.cv-seo-target {
    position: relative;
    overflow: visible;
}

.cv-seo-target .cv-svc-map-target-title .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

/* Lupa (línea plana lima) */
.cv-seo-target .cv-svc-map-target-title .elementor-heading-title::before {
    content: "";
    flex: 0 0 18px;
    width: 18px;
    height: 18px;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c8ff36' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='10.5' cy='10.5' r='6.5'/%3E%3Cpath d='M15.4 15.4L20.5 20.5'/%3E%3C/svg%3E") 50% 50% / contain no-repeat;
}

/* "+1 visita": sube y se desvanece con cada pulso */
.cv-svc-map-target.cv-seo-target::after {
    content: "+1 visita";
    position: absolute;
    top: -13px;
    right: 18px;
    padding: 4px 10px;
    border-radius: 999px;
    background: #c8ff36;
    color: #08090c;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.02em;
    line-height: 1.2;
    white-space: nowrap;
    opacity: 0;
    pointer-events: none;
    transform: translateY(8px) scale(0.85);
}

.cv-svc-map-target.cv-seo-target.is-hit::after {
    animation: cv-seo-hit 1.2s var(--cv-ease) forwards;
}

@keyframes cv-seo-hit {
    0% { opacity: 0; transform: translateY(8px) scale(0.85); }
    22% { opacity: 1; transform: translateY(0) scale(1); }
    68% { opacity: 1; transform: translateY(-3px) scale(1); }
    100% { opacity: 0; transform: translateY(-12px) scale(1); }
}

/* ---------- Sección azul: señal de visibilidad ---------- */
.cv-seo-signal {
    display: flex;
    align-items: flex-end;
    gap: 20px;
    width: 100%;
    margin: 0 0 30px;
}

.cv-seo-signal-label,
.cv-seo-signal-count {
    flex: 0 0 auto;
    padding-bottom: 2px;
    color: rgba(255, 255, 255, 0.78);
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    line-height: 1.2;
    white-space: nowrap;
}

.cv-seo-signal-count {
    min-width: 11ch;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.cv-seo-signal-count b {
    color: #c8ff36;
    font-weight: 700;
}

.cv-seo-signal-bars {
    display: flex;
    flex: 1 1 auto;
    align-items: flex-end;
    gap: 6px;
    height: 46px;
}

/* Cada barra es un poco más alta que la anterior: la señal sube */
.cv-seo-signal-bar {
    display: flex;
    flex: 1 1 0;
    align-items: flex-end;
    justify-content: center;
    height: var(--seo-h, 100%);
    padding-bottom: 7px;
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.14);
    color: rgba(255, 255, 255, 0.7);
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 11px;
    font-weight: 700;
    line-height: 1;
    transform-origin: 50% 100%;
    transition: background-color 0.45s ease, color 0.45s ease;
}

.cv-seo-signal-bar.is-done {
    background: rgba(255, 255, 255, 0.34);
    color: #ffffff;
}

.cv-seo-signal-bar.is-now {
    background: #c8ff36;
    color: #08090c;
}

/* ---------- Panel: revisión técnica ---------- */
.cv-svc-mock--audit .cv-svc-mock-label + .cv-svc-mock-item {
    margin-top: 8px !important;
}

.cv-svc-mock--audit .cv-svc-mock-item:not(.cv-svc-mock-key) .elementor-heading-title {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 0;
    border-top: 1px solid rgba(8, 9, 12, 0.07);
    color: #08090c !important;
    font-size: 14.5px !important;
    font-weight: 600 !important;
    line-height: 1.3 !important;
}

.cv-svc-mock--audit .cv-svc-mock-label + .cv-svc-mock-item .elementor-heading-title {
    border-top: 0 !important;
}

.cv-seo-k {
    min-width: 0;
}

/* Estado: dos palabras apiladas; al encenderse sube "Corregido" */
.cv-seo-st {
    position: relative;
    display: inline-grid;
    flex: 0 0 auto;
    overflow: hidden;
    padding: 4px 10px;
    border-radius: 999px;
    background: #f5f2ea;
    color: #9aa0aa;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-align: center;
    text-transform: uppercase;
    line-height: 1.3;
    transition: background-color 0.4s ease, color 0.4s ease;
}

.cv-seo-st > span {
    grid-area: 1 / 1;
    transition: transform 0.55s var(--cv-ease), opacity 0.4s ease;
}

.cv-seo-st > span:nth-child(2) {
    opacity: 0;
    transform: translateY(110%);
}

.cv-svc-mock--audit .cv-svc-mock-item.is-on .cv-seo-st {
    background: rgba(49, 92, 255, 0.1);
    color: #315cff;
}

.cv-svc-mock--audit .cv-svc-mock-item.is-on .cv-seo-st > span:nth-child(1) {
    opacity: 0;
    transform: translateY(-110%);
}

.cv-svc-mock--audit .cv-svc-mock-item.is-on .cv-seo-st > span:nth-child(2) {
    opacity: 1;
    transform: none;
}

.cv-svc-mock--audit .cv-svc-mock-key {
    margin-top: 10px !important;
}

.cv-svc-mock--audit .cv-svc-mock-key .elementor-heading-title {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 12px 14px;
    border-radius: 999px;
    background: #ece9e1;
    color: #9aa0aa !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    line-height: 1.3 !important;
    transition: background-color 0.45s ease, color 0.45s ease;
}

.cv-svc-mock--audit .cv-svc-mock-key .elementor-heading-title::before,
.cv-svc-mock--answer .cv-svc-mock-key .elementor-heading-title::before {
    content: "";
    flex: 0 0 18px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #08090c url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2l2.3 2.3L9.5 3.8' fill='none' stroke='%23c8ff36' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 50% 50% / 10px no-repeat;
    opacity: 0;
    transform: scale(0.4);
    transition: opacity 0.35s ease, transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.cv-svc-mock--audit .cv-svc-mock-key.is-on .elementor-heading-title {
    background: #c8ff36;
    color: #08090c !important;
}

.cv-svc-mock--audit .cv-svc-mock-key.is-on .elementor-heading-title::before,
.cv-svc-mock--answer .cv-svc-mock-key.is-on .elementor-heading-title::before {
    opacity: 1;
    transform: scale(1);
}

/* ---------- Panel: resultado de búsqueda ---------- */
.cv-svc-mock--serp .cv-svc-mock-label + .cv-svc-mock-item {
    margin-top: 14px !important;
}

/* Buscador: la consulta se escribe de izquierda a derecha */
.cv-svc-mock--serp .cv-svc-mock-label + .cv-svc-mock-item .elementor-heading-title {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 11px 16px;
    border: 1px solid rgba(8, 9, 12, 0.1);
    border-radius: 999px;
    background: #ffffff;
    color: #08090c !important;
    font-size: 14.5px !important;
    font-weight: 600 !important;
    line-height: 1.3 !important;
    transition: border-color 0.45s ease;
}

.cv-svc-mock--serp .cv-svc-mock-label + .cv-svc-mock-item .elementor-heading-title::before {
    content: "";
    flex: 0 0 16px;
    width: 16px;
    height: 16px;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23315cff' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='10.5' cy='10.5' r='6.5'/%3E%3Cpath d='M15.4 15.4L20.5 20.5'/%3E%3C/svg%3E") 50% 50% / contain no-repeat;
}

.cv-svc-mock--serp .cv-svc-mock-label + .cv-svc-mock-item.is-on .elementor-heading-title {
    border-color: rgba(49, 92, 255, 0.4);
}

.cv-seo-q {
    flex: 1 1 0;
    width: 0;
    min-width: 0;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    clip-path: inset(0 100% 0 0);
    transition: clip-path 1.1s steps(24, end);
}

.cv-svc-mock--serp .cv-svc-mock-item.is-on .cv-seo-q {
    clip-path: inset(0 0 0 0);
}

/* Los textos de una línea no deben ensanchar el panel en celular */
.cv-svc-mock--serp,
.cv-svc-mock--serp > .elementor-element,
.cv-svc-mock--serp .elementor-widget-container,
.cv-svc-mock--serp .elementor-heading-title {
    min-width: 0;
    max-width: 100%;
}

/* Resultado */
.cv-svc-mock--serp .cv-svc-mock-item:nth-child(3) {
    margin-top: 12px !important;
}

.cv-svc-mock--serp .cv-svc-mock-item:nth-child(3) .elementor-heading-title {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 5px;
    padding: 14px 16px;
    border-radius: 14px;
    background: #f8f7f4;
    line-height: 1.35 !important;
    opacity: 0;
    transform: translateY(12px);
    transition: opacity 0.5s ease, transform 0.7s var(--cv-ease);
}

.cv-svc-mock--serp .cv-svc-mock-item:nth-child(3).is-on .elementor-heading-title {
    opacity: 1;
    transform: none;
}

.cv-seo-url {
    display: block;
    width: 100%;
    min-width: 0;
    overflow: hidden;
    color: #727783;
    font-size: 12.5px;
    font-weight: 500;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.cv-seo-t {
    color: #315cff;
    font-size: 16px;
    font-weight: 700;
    letter-spacing: -0.01em;
}

.cv-seo-d {
    color: #3c414b;
    font-size: 13.5px;
    font-weight: 500;
}

/* Datos enriquecidos del resultado */
.cv-svc-mock--serp .cv-svc-mock-item:nth-child(4) .elementor-heading-title {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    padding: 10px 16px 0;
}

.cv-seo-chip {
    padding: 5px 10px;
    border: 1px solid rgba(8, 9, 12, 0.1);
    border-radius: 999px;
    background: #ffffff;
    color: #9aa0aa;
    font-size: 12px;
    font-weight: 600;
    line-height: 1.2;
    white-space: nowrap;
    opacity: 0;
    transform: scale(0.85);
    transition: opacity 0.4s ease, transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1), color 0.4s ease, border-color 0.4s ease;
}

.cv-svc-mock--serp .cv-svc-mock-item.is-on .cv-seo-chip {
    border-color: rgba(49, 92, 255, 0.25);
    color: #315cff;
    opacity: 1;
    transform: none;
}

.cv-svc-mock--serp .cv-svc-mock-item.is-on .cv-seo-chip:nth-child(2) {
    transition-delay: 0.15s;
}

.cv-svc-mock--serp .cv-svc-mock-item.is-on .cv-seo-chip:nth-child(3) {
    transition-delay: 0.3s;
}

.cv-svc-mock--serp .cv-svc-mock-key {
    margin-top: 14px !important;
}

.cv-svc-mock--serp .cv-svc-mock-key .elementor-heading-title {
    padding: 13px 14px;
    border-radius: 12px;
    background: #f5f2ea;
    color: #9aa0aa !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    line-height: 1.3 !important;
    text-align: center;
    transition: background-color 0.5s ease, color 0.5s ease;
}

.cv-svc-mock--serp .cv-svc-mock-key.is-on .elementor-heading-title {
    background: #315cff;
    color: #ffffff !important;
}

/* ---------- Panel: respuesta de un asistente de IA ---------- */
.cv-svc-mock--answer .cv-svc-mock-label + .cv-svc-mock-item {
    margin-top: 14px !important;
}

/* Pregunta del usuario: burbuja a la derecha */
.cv-svc-mock--answer .cv-svc-mock-label + .cv-svc-mock-item .elementor-heading-title {
    display: flex;
    justify-content: flex-end;
}

.cv-seo-ask {
    max-width: 86%;
    padding: 11px 14px;
    border-radius: 16px 16px 4px 16px;
    background: #f5f2ea;
    color: #08090c;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.4;
    opacity: 0;
    transform: translateY(10px);
    transition: opacity 0.45s ease, transform 0.6s var(--cv-ease);
}

.cv-svc-mock--answer .cv-svc-mock-item.is-on .cv-seo-ask {
    opacity: 1;
    transform: none;
}

/* Respuesta: tres líneas que se dibujan */
.cv-svc-mock--answer .cv-svc-mock-item:nth-child(3) {
    margin-top: 12px !important;
}

.cv-seo-lines {
    display: grid;
    gap: 8px;
    padding: 14px 16px;
    border: 1px solid rgba(49, 92, 255, 0.14);
    border-radius: 16px 16px 16px 4px;
}

.cv-seo-lines > span {
    display: block;
    height: 8px;
    border-radius: 999px;
    background: rgba(49, 92, 255, 0.16);
    transform: scaleX(0);
    transform-origin: 0 50%;
    transition: transform 0.7s var(--cv-ease);
}

.cv-seo-lines > span:nth-child(2) {
    width: 88%;
}

.cv-seo-lines > span:nth-child(3) {
    width: 62%;
}

.cv-svc-mock--answer .cv-svc-mock-item.is-on .cv-seo-lines > span {
    transform: scaleX(1);
}

.cv-svc-mock--answer .cv-svc-mock-item.is-on .cv-seo-lines > span:nth-child(2) {
    transition-delay: 0.18s;
}

.cv-svc-mock--answer .cv-svc-mock-item.is-on .cv-seo-lines > span:nth-child(3) {
    transition-delay: 0.36s;
}

/* Fuentes que respaldan la respuesta */
.cv-svc-mock--answer .cv-svc-mock-item:nth-child(4) .elementor-heading-title {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 10px;
    padding: 12px 0 0;
}

.cv-svc-mock--answer .cv-seo-k {
    color: #727783;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.cv-seo-src {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.cv-seo-src > span {
    padding: 5px 10px;
    border-radius: 999px;
    background: #f5f2ea;
    color: #9aa0aa;
    font-size: 12px;
    font-weight: 700;
    line-height: 1.2;
    white-space: nowrap;
    transition: background-color 0.4s ease, color 0.4s ease;
}

.cv-svc-mock--answer .cv-svc-mock-item.is-on .cv-seo-src > span {
    background: #315cff;
    color: #ffffff;
}

.cv-svc-mock--answer .cv-svc-mock-item.is-on .cv-seo-src > span:nth-child(2) {
    transition-delay: 0.2s;
}

.cv-svc-mock--answer .cv-svc-mock-item.is-on .cv-seo-src > span:nth-child(3) {
    transition-delay: 0.4s;
}

.cv-svc-mock--answer .cv-svc-mock-key {
    margin-top: 14px !important;
}

.cv-svc-mock--answer .cv-svc-mock-key .elementor-heading-title {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 12px 14px;
    border-radius: 999px;
    background: #ece9e1;
    color: #9aa0aa !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    line-height: 1.3 !important;
    transition: background-color 0.45s ease, color 0.45s ease;
}

.cv-svc-mock--answer .cv-svc-mock-key.is-on .elementor-heading-title {
    background: #c8ff36;
    color: #08090c !important;
}

/* =========================================================
   CASO: TABLERO ANTES / DESPUÉS (Ana Valenzuela)
   ========================================================= */
.cv-seo-results {
    width: 100% !important;
    gap: 0 !important;
    --widgets-spacing: 0px;
    margin-top: 64px !important;
    padding: 28px !important;
    border: 1px solid rgba(49, 92, 255, 0.12);
    border-radius: 26px !important;
    background: #f8f7f4;
}

.cv-seo-results > .elementor-element {
    width: 100% !important;
    margin: 0 !important;
}

.cv-seo-results-head > .elementor-element,
.cv-seo-row > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

.cv-seo-results-head {
    flex-wrap: wrap !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 8px 20px !important;
}

.cv-seo-results-label .elementor-heading-title {
    color: #315cff !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 11.5px !important;
    font-weight: 600 !important;
    letter-spacing: 0.08em !important;
    text-transform: uppercase;
    line-height: 1.2 !important;
}

.cv-seo-results-meta .elementor-heading-title {
    color: #727783 !important;
    font-size: 13.5px !important;
    font-weight: 600 !important;
    line-height: 1.3 !important;
}

.cv-seo-results > .cv-seo-rows {
    gap: 10px !important;
    --widgets-spacing: 0px;
    margin-top: 22px !important;
}

/* Cada fila: métrica · antes → después · cambio, con una barra abajo */
.cv-seo-row {
    position: relative;
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) 96px 120px 168px;
    align-items: center;
    gap: 18px !important;
    width: 100% !important;
    padding: 20px 24px 26px !important;
    border-radius: 18px !important;
    background: #ffffff;
    transition: box-shadow 0.45s ease, transform 0.45s var(--cv-ease) !important;
}

.cv-seo-row:hover {
    box-shadow: 0 22px 46px rgba(8, 9, 12, 0.08);
    transform: translateY(-4px);
}

/* Barra: la parte gris es la línea base de marzo; la azul crece hasta junio */
.cv-seo-row::before,
.cv-seo-row::after {
    content: "";
    position: absolute;
    left: 24px;
    bottom: 12px;
    height: 4px;
    border-radius: 999px;
    pointer-events: none;
}

.cv-seo-row::before {
    right: 24px;
    background: rgba(8, 9, 12, 0.06);
}

.cv-seo-row::after {
    width: calc((100% - 48px) * var(--seo-b, 0.3));
    background: #315cff;
    transform-origin: 0 50%;
    transition: width 1.3s var(--cv-ease);
}

.cv-seo-row.is-on::after {
    width: calc(100% - 48px);
}

.cv-seo-rows > .cv-seo-row:nth-child(1) {
    --seo-b: 0.47;
}

.cv-seo-rows > .cv-seo-row:nth-child(2) {
    --seo-b: 0.21;
}

.cv-seo-rows > .cv-seo-row:nth-child(3) {
    --seo-b: 0.37;
}

.cv-seo-rows > .cv-seo-row:nth-child(4) {
    --seo-b: 0.47;
}

.cv-seo-row-name .elementor-heading-title {
    color: #08090c !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.3 !important;
}

.cv-seo-row-before .elementor-heading-title {
    color: #9aa0aa !important;
    font-size: 18px !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    text-align: right;
    text-decoration: line-through;
    text-decoration-thickness: 1.5px;
    text-decoration-color: rgba(154, 160, 170, 0.6);
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.cv-seo-row-after .elementor-heading-title {
    display: block;
    color: #315cff !important;
    font-size: clamp(28px, 2.6vw, 38px) !important;
    font-weight: 800 !important;
    line-height: 1 !important;
    letter-spacing: -0.04em !important;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

/* Flecha entre el antes y el después */
.cv-seo-row-after .elementor-heading-title::before {
    content: "→";
    display: inline-block;
    margin-right: 12px;
    color: #9aa0aa;
    font-size: 16px;
    font-weight: 600;
    letter-spacing: 0;
    vertical-align: 0.3em;
}

.cv-seo-row-change {
    justify-self: end;
}

.cv-seo-row-change .elementor-heading-title {
    display: inline-block;
    padding: 6px 12px;
    border-radius: 999px;
    background: rgba(49, 92, 255, 0.1);
    color: #315cff !important;
    font-size: 13px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    white-space: nowrap;
}

/* El dato de negocio: reservas (azul con texto blanco y cifra lima) */
.cv-seo-row--key {
    background: #315cff !important;
}

.cv-seo-row--key::before {
    background: rgba(255, 255, 255, 0.18);
}

.cv-seo-row--key::after {
    background: #c8ff36;
}

.cv-seo-row--key .cv-seo-row-name .elementor-heading-title {
    color: #ffffff !important;
}

.cv-seo-row--key .cv-seo-row-before .elementor-heading-title {
    color: rgba(255, 255, 255, 0.6) !important;
    text-decoration-color: rgba(255, 255, 255, 0.45);
}

.cv-seo-row--key .cv-seo-row-after .elementor-heading-title {
    color: #c8ff36 !important;
}

.cv-seo-row--key .cv-seo-row-after .elementor-heading-title::before {
    color: rgba(255, 255, 255, 0.6);
}

.cv-seo-row--key .cv-seo-row-change .elementor-heading-title {
    background: #c8ff36;
    color: #08090c !important;
}

.cv-seo-results-note {
    align-self: center !important;
    width: auto !important;
}

.cv-seo-results-note .elementor-heading-title {
    margin-top: 18px !important;
    color: #727783 !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.04em !important;
    line-height: 1.5 !important;
    text-align: center;
}

/* Botones del caso en una sola fila */
.cv-seo-case-ctas {
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 14px 26px !important;
    width: 100% !important;
    margin-top: 28px !important;
}

.cv-seo-case-ctas > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

/* Entrada: cada fila se abre de izquierda a derecha (lo prepara el JS) */
.cv-seo-results.is-ready .cv-seo-row {
    clip-path: inset(0 100% 0 0 round 18px);
    transition: clip-path 0.9s var(--cv-ease), box-shadow 0.45s ease, transform 0.45s var(--cv-ease) !important;
}

.cv-seo-results.is-ready .cv-seo-row.is-open {
    clip-path: inset(0 0 0 0 round 18px);
}

/* =========================================================
   TABLET
   ========================================================= */
@media (max-width: 1024px) {
    .cv-seo-signal {
        gap: 14px;
    }

    .cv-seo-row {
        grid-template-columns: minmax(0, 1fr) 80px 104px 150px;
        gap: 14px !important;
        padding: 18px 20px 24px !important;
    }

    .cv-seo-row::before,
    .cv-seo-row::after {
        left: 20px;
    }

    .cv-seo-row::before {
        right: 20px;
    }

    .cv-seo-row::after {
        width: calc((100% - 40px) * var(--seo-b, 0.3));
    }

    .cv-seo-row.is-on::after {
        width: calc(100% - 40px);
    }
}

/* =========================================================
   MÓVIL
   ========================================================= */
@media (max-width: 767px) {
    .cv-svc-map-target.cv-seo-target::after {
        right: 12px;
    }

    /* Las tarjetas van una debajo de otra: quedan solo la señal y el contador */
    .cv-seo-signal-label {
        display: none;
    }

    .cv-seo-signal-bars {
        height: 36px;
        gap: 4px;
    }

    .cv-seo-signal-bar {
        padding-bottom: 5px;
        font-size: 10px;
    }

    .cv-seo-signal-count {
        min-width: 0;
    }

    .cv-svc-mock--audit .cv-svc-mock-item:not(.cv-svc-mock-key) .elementor-heading-title {
        font-size: 13.5px !important;
    }

    .cv-seo-t {
        font-size: 15px;
    }

    .cv-seo-ask {
        max-width: 94%;
    }

    .cv-seo-results {
        padding: 20px 14px !important;
        border-radius: 22px !important;
        margin-top: 44px !important;
    }

    /* Métrica arriba, luego antes → después y debajo el cambio */
    .cv-seo-row {
        grid-template-columns: auto minmax(0, 1fr);
        gap: 10px 14px !important;
        padding: 18px 18px 28px !important;
    }

    .cv-seo-row > .cv-seo-row-name,
    .cv-seo-row > .cv-seo-row-change {
        grid-column: 1 / -1;
    }

    .cv-seo-row-change {
        justify-self: start;
    }

    .cv-seo-row::before,
    .cv-seo-row::after {
        left: 18px;
    }

    .cv-seo-row::before {
        right: 18px;
    }

    .cv-seo-row::after {
        width: calc((100% - 36px) * var(--seo-b, 0.3));
    }

    .cv-seo-row.is-on::after {
        width: calc(100% - 36px);
    }

    .cv-seo-row-name .elementor-heading-title {
        font-size: 15px !important;
    }

    .cv-seo-row-before .elementor-heading-title {
        font-size: 16px !important;
        text-align: left;
    }

    .cv-seo-row-after .elementor-heading-title {
        font-size: 28px !important;
    }

    .cv-seo-row-change .elementor-heading-title {
        padding: 5px 10px;
        font-size: 12px !important;
    }

    .cv-seo-case-ctas {
        flex-direction: column !important;
        align-items: flex-start !important;
        gap: 6px !important;
        margin-top: 22px !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-svc-map-target.cv-seo-target.is-hit::after {
        animation: none !important;
    }

    .cv-seo-results.is-ready .cv-seo-row {
        clip-path: none;
    }
}

/* En el editor los paneles y el tablero se ven completos */
.elementor-editor-active .cv-seo-q,
.elementor-editor-active .cv-seo-row {
    clip-path: none;
}

.elementor-editor-active .cv-seo-ask,
.elementor-editor-active .cv-seo-chip,
.elementor-editor-active .cv-svc-mock--serp .cv-svc-mock-item .elementor-heading-title {
    opacity: 1;
    transform: none;
}

.elementor-editor-active .cv-seo-lines > span {
    transform: none;
}

.elementor-editor-active .cv-seo-row::after {
    width: calc(100% - 48px);
}


/* #########################################################
   66. PANELES DE SERVICIO: ESPACIADO DE LETRAS NORMAL (v4.2.9)
   Cuando el título del widget no define su propio tamaño, hereda
   el tamaño grande y el espaciado negativo de los títulos del
   kit de Elementor; en los textos pequeños de los paneles eso
   pegaba las palabras ("Casodeéxito"). Aquí todos los textos de
   los paneles (cv-svc-mock-item) vuelven al espaciado normal.
   Las etiquetas en mono que definen su propio espaciado
   (cv-seo-k, cv-gd-tag, cv-ec-tag…) lo conservan.
   ######################################################### */
.cv-svc-mock:not(.cv-svc-mock--site) .cv-svc-mock-item:not(.cv-svc-mock-tag) .elementor-heading-title {
    letter-spacing: normal !important;
    word-spacing: normal !important;
}



/* #########################################################
   67. CRM Y AUTOMATIZACIÓN (cv-crm-*) (v4.3.0)
   Subpágina de servicio clonada de la maestra (sección 41) y
   de SEO y Visibilidad (sección 65), con piezas propias:
   · Hero: la meta del mapa es el pipeline comercial
     (cv-svc-map-target + cv-crm-target): tablero lima de tres
     columnas junto al título y una pastilla "+1 seguimiento"
     con cada pulso.
   · Sección azul: cv-svc-scan cv-svc-scan--6 cv-crm-scan. El JS
     agrega arriba la ficha de un prospecto (cv-crm-record) que
     avanza con la tarjeta activa: segmentos y estado que cambia.
   · Paneles nuevos en las capacidades (los anima el JS de
     entregables con is-on):
     cv-svc-mock--board (tablero cv-crm-board con columnas
     cv-crm-col-h y tarjetas cv-crm-cards; filas cv-crm-k /
     cv-crm-v), cv-svc-mock--sync (canal cv-crm-ch, línea
     cv-crm-line e interruptor cv-crm-sw) y cv-svc-mock--flow
     (regla cv-crm-if + acción cv-crm-do unidas por una línea).
   · Caso: estructura de la maestra (cv-svc-case) y debajo
     cv-crm-results: 25 → +80 vehículos al mes con una retícula
     de puntos (cv-crm-dots, la arma el JS: un punto por
     vehículo) y tres cifras cv-crm-kpi.
   Todos los textos pequeños llevan espaciado de letras normal
   (ver sección 66).
   ######################################################### */

/* ---------- Hero: la meta del mapa es el pipeline ---------- */
.cv-svc-map-target.cv-crm-target {
    position: relative;
    overflow: visible;
}

.cv-crm-target .cv-svc-map-target-title .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

/* Tablero de tres columnas (línea plana lima) */
.cv-crm-target .cv-svc-map-target-title .elementor-heading-title::before {
    content: "";
    flex: 0 0 18px;
    width: 18px;
    height: 18px;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c8ff36' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='16' rx='3'/%3E%3Cpath d='M9 4v16M15 4v16M5.5 8h1.5M11 8h2M11 11.5h2M17 8h1.5'/%3E%3C/svg%3E") 50% 50% / contain no-repeat;
}

/* "+1 seguimiento": sube y se desvanece con cada pulso */
.cv-svc-map-target.cv-crm-target::after {
    content: "+1 seguimiento";
    position: absolute;
    top: -13px;
    right: 18px;
    padding: 4px 10px;
    border-radius: 999px;
    background: #c8ff36;
    color: #08090c;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.02em;
    line-height: 1.2;
    white-space: nowrap;
    opacity: 0;
    pointer-events: none;
    transform: translateY(8px) scale(0.85);
}

.cv-svc-map-target.cv-crm-target.is-hit::after {
    animation: cv-crm-hit 1.2s var(--cv-ease) forwards;
}

@keyframes cv-crm-hit {
    0% { opacity: 0; transform: translateY(8px) scale(0.85); }
    22% { opacity: 1; transform: translateY(0) scale(1); }
    68% { opacity: 1; transform: translateY(-3px) scale(1); }
    100% { opacity: 0; transform: translateY(-12px) scale(1); }
}

/* ---------- Sección azul: ficha del prospecto ---------- */
.cv-crm-record {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) minmax(0, 300px);
    align-items: center;
    gap: 22px;
    width: 100%;
    margin: 0 0 30px;
    padding: 14px 18px;
    border: 1px solid rgba(255, 255, 255, 0.22);
    border-radius: 18px;
    background: rgba(255, 255, 255, 0.08);
}

.cv-crm-record-id {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: #ffffff;
    font-size: 14px;
    font-weight: 700;
    letter-spacing: normal;
    line-height: 1.2;
    white-space: nowrap;
}

/* Inicial del prospecto en un círculo lima */
.cv-crm-record-id i {
    display: inline-grid;
    place-items: center;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: #c8ff36;
    color: #08090c;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 12px;
    font-style: normal;
    font-weight: 700;
    letter-spacing: normal;
}

.cv-crm-record-steps {
    display: flex;
    gap: 6px;
    min-width: 0;
}

.cv-crm-record-step {
    flex: 1 1 0;
    height: 8px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.16);
    transform-origin: 0 50%;
    transition: background-color 0.45s ease;
}

.cv-crm-record-step.is-done {
    background: rgba(255, 255, 255, 0.5);
}

.cv-crm-record-step.is-now {
    background: #c8ff36;
}

.cv-crm-record-status {
    display: grid;
    gap: 3px;
    min-width: 0;
    overflow: hidden;
}

.cv-crm-record-k {
    color: rgba(255, 255, 255, 0.7);
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    line-height: 1.2;
}

.cv-crm-record-v {
    overflow: hidden;
    color: #ffffff;
    font-size: 14.5px;
    font-weight: 700;
    letter-spacing: normal;
    line-height: 1.3;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.cv-crm-record-v.is-roll {
    animation: cv-crm-roll 0.55s var(--cv-ease);
}

@keyframes cv-crm-roll {
    0% { opacity: 0; transform: translateY(70%); }
    100% { opacity: 1; transform: none; }
}

/* ---------- Panel: tablero del pipeline ---------- */
.cv-crm-board {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 8px !important;
    --widgets-spacing: 0px;
    margin-top: 14px !important;
}

.cv-crm-board > .elementor-element {
    width: auto !important;
    min-width: 0;
    margin: 0 !important;
}

.cv-svc-mock--board .cv-crm-board .elementor-heading-title {
    display: grid;
    align-content: start;
    gap: 8px;
    min-height: 128px;
    padding: 10px 8px;
    border-radius: 14px;
    background: #f8f7f4;
    transition: background-color 0.45s ease;
}

.cv-crm-col-h {
    overflow: hidden;
    color: #727783;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: normal;
    line-height: 1.2;
    white-space: nowrap;
    text-overflow: ellipsis;
    transition: color 0.4s ease;
}

.cv-crm-cards {
    display: grid;
    gap: 6px;
}

/* Cada tarjeta es un negocio: entra desde arriba */
.cv-crm-cards > span {
    position: relative;
    display: block;
    height: 24px;
    border: 1px solid rgba(8, 9, 12, 0.06);
    border-radius: 8px;
    background: #ffffff;
    opacity: 0;
    transform: translateY(-10px);
    transition: opacity 0.4s ease, transform 0.55s cubic-bezier(0.34, 1.56, 0.64, 1), background-color 0.45s ease;
}

/* Dos líneas de texto simuladas dentro de cada tarjeta */
.cv-crm-cards > span::before,
.cv-crm-cards > span::after {
    content: "";
    position: absolute;
    left: 7px;
    height: 3px;
    border-radius: 999px;
    background: rgba(8, 9, 12, 0.12);
}

.cv-crm-cards > span::before {
    top: 7px;
    width: 58%;
}

.cv-crm-cards > span::after {
    top: 14px;
    width: 34%;
    background: rgba(49, 92, 255, 0.35);
}

.cv-crm-board .cv-svc-mock-item.is-on .cv-crm-col-h {
    color: #315cff;
}

.cv-crm-board .cv-svc-mock-item.is-on .cv-crm-cards > span {
    opacity: 1;
    transform: none;
}

.cv-crm-board .cv-svc-mock-item.is-on .cv-crm-cards > span:nth-child(2) {
    transition-delay: 0.12s;
}

.cv-crm-board .cv-svc-mock-item.is-on .cv-crm-cards > span:nth-child(3) {
    transition-delay: 0.24s;
}

/* El negocio de la columna Cierre queda en lima */
.cv-crm-board > .elementor-element:last-child.is-on .cv-crm-cards > span {
    border-color: transparent;
    background: #c8ff36;
}

.cv-crm-board > .elementor-element:last-child.is-on .cv-crm-cards > span::before,
.cv-crm-board > .elementor-element:last-child.is-on .cv-crm-cards > span::after {
    background: rgba(8, 9, 12, 0.3);
}

/* Reglas: para avanzar y si se pierde */
.cv-svc-mock--board > .cv-svc-mock-item:not(.cv-svc-mock-key) .elementor-heading-title {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 2px 0;
    line-height: 1.3 !important;
    opacity: 0;
    transform: translateY(8px);
    transition: opacity 0.45s ease, transform 0.6s var(--cv-ease);
}

.cv-svc-mock--board > .cv-svc-mock-item:not(.cv-svc-mock-key).is-on .elementor-heading-title {
    opacity: 1;
    transform: none;
}

.cv-crm-k {
    flex: 0 0 auto;
    color: #727783;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.cv-crm-v {
    min-width: 0;
    color: #08090c;
    font-size: 14px;
    font-weight: 600;
    letter-spacing: normal;
    text-align: right;
}

.cv-svc-mock--board .cv-svc-mock-key,
.cv-svc-mock--sync .cv-svc-mock-key,
.cv-svc-mock--flow .cv-svc-mock-key {
    margin-top: 14px !important;
}

.cv-svc-mock--board .cv-svc-mock-key .elementor-heading-title,
.cv-svc-mock--sync .cv-svc-mock-key .elementor-heading-title,
.cv-svc-mock--flow .cv-svc-mock-key .elementor-heading-title {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 12px 14px;
    border-radius: 999px;
    background: #ece9e1;
    color: #9aa0aa !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    line-height: 1.3 !important;
    text-align: center;
    transition: background-color 0.45s ease, color 0.45s ease;
}

.cv-svc-mock--board .cv-svc-mock-key.is-on .elementor-heading-title {
    background: #315cff;
    color: #ffffff !important;
}

/* ---------- Panel: integraciones con interruptores ---------- */
.cv-svc-mock--sync .cv-svc-mock-label + .cv-svc-mock-item {
    margin-top: 8px !important;
}

.cv-svc-mock--sync .cv-svc-mock-item:not(.cv-svc-mock-key) .elementor-heading-title {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 12px 0;
    border-top: 1px solid rgba(8, 9, 12, 0.07);
    line-height: 1.3 !important;
}

.cv-svc-mock--sync .cv-svc-mock-label + .cv-svc-mock-item .elementor-heading-title {
    border-top: 0;
}

.cv-crm-ch {
    flex: 0 0 auto;
    color: #08090c;
    font-size: 14.5px;
    font-weight: 600;
    letter-spacing: normal;
    white-space: nowrap;
}

/* Línea del canal al CRM: se llena cuando el canal se conecta */
.cv-crm-line {
    position: relative;
    flex: 1 1 auto;
    min-width: 24px;
    height: 2px;
    border-radius: 999px;
    background: rgba(8, 9, 12, 0.08);
    overflow: hidden;
}

.cv-crm-line::after {
    content: "";
    position: absolute;
    inset: 0;
    background: #315cff;
    transform: scaleX(0);
    transform-origin: 0 50%;
    transition: transform 0.7s var(--cv-ease) 0.15s;
}

.cv-svc-mock--sync .cv-svc-mock-item.is-on .cv-crm-line::after {
    transform: scaleX(1);
}

/* Interruptor */
.cv-crm-sw {
    position: relative;
    flex: 0 0 38px;
    width: 38px;
    height: 22px;
    border-radius: 999px;
    background: #ece9e1;
    transition: background-color 0.4s ease;
}

.cv-crm-sw::after {
    content: "";
    position: absolute;
    top: 3px;
    left: 3px;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: #ffffff;
    box-shadow: 0 1px 3px rgba(8, 9, 12, 0.18);
    transition: transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.cv-svc-mock--sync .cv-svc-mock-item.is-on .cv-crm-sw {
    background: #315cff;
}

.cv-svc-mock--sync .cv-svc-mock-item.is-on .cv-crm-sw::after {
    transform: translateX(16px);
}

.cv-svc-mock--sync .cv-svc-mock-key.is-on .elementor-heading-title {
    background: #c8ff36;
    color: #08090c !important;
}

/* ---------- Panel: automatización (si / entonces) ---------- */
.cv-svc-mock--flow .cv-svc-mock-label + .cv-svc-mock-item {
    margin-top: 14px !important;
}

.cv-svc-mock--flow .cv-svc-mock-item:not(.cv-svc-mock-key) {
    position: relative;
}

/* Línea vertical que une los pasos */
.cv-svc-mock--flow .cv-svc-mock-item:not(.cv-svc-mock-key):not(:nth-last-child(2))::after {
    content: "";
    position: absolute;
    top: 34px;
    bottom: -4px;
    left: 37px;
    width: 2px;
    border-radius: 999px;
    background: rgba(49, 92, 255, 0.14);
    transform: scaleY(0);
    transform-origin: 50% 0;
    transition: transform 0.5s var(--cv-ease) 0.2s;
}

.cv-svc-mock--flow .cv-svc-mock-item.is-on::after {
    transform: scaleY(1) !important;
}

.cv-svc-mock--flow .cv-svc-mock-item:not(.cv-svc-mock-key) .elementor-heading-title {
    display: grid;
    grid-template-columns: 76px minmax(0, 1fr);
    align-items: center;
    gap: 12px;
    padding: 6px 0 12px;
    line-height: 1.35 !important;
}

.cv-crm-if {
    justify-self: stretch;
    padding: 6px 0;
    border-radius: 999px;
    background: #f5f2ea;
    color: #9aa0aa;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-align: center;
    text-transform: uppercase;
    white-space: nowrap;
    transition: background-color 0.4s ease, color 0.4s ease;
}

.cv-crm-do {
    color: #9aa0aa;
    font-size: 14.5px;
    font-weight: 600;
    letter-spacing: normal;
    transition: color 0.4s ease;
}

.cv-svc-mock--flow .cv-svc-mock-item.is-on .cv-crm-if {
    background: rgba(49, 92, 255, 0.1);
    color: #315cff;
}

/* Las condiciones (Si…) en lima, las acciones en azul */
.cv-svc-mock--flow .cv-svc-mock-label + .cv-svc-mock-item.is-on .cv-crm-if,
.cv-svc-mock--flow .cv-svc-mock-item:nth-child(4).is-on .cv-crm-if {
    background: #c8ff36;
    color: #08090c;
}

.cv-svc-mock--flow .cv-svc-mock-item.is-on .cv-crm-do {
    color: #08090c;
}

.cv-svc-mock--flow .cv-svc-mock-key .elementor-heading-title::before {
    content: "";
    flex: 0 0 18px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #08090c url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2l2.3 2.3L9.5 3.8' fill='none' stroke='%23c8ff36' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 50% 50% / 10px no-repeat;
    opacity: 0;
    transform: scale(0.4);
    transition: opacity 0.35s ease, transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.cv-svc-mock--flow .cv-svc-mock-key.is-on .elementor-heading-title {
    background: #c8ff36;
    color: #08090c !important;
}

.cv-svc-mock--flow .cv-svc-mock-key.is-on .elementor-heading-title::before {
    opacity: 1;
    transform: scale(1);
}

/* =========================================================
   CASO: VEHÍCULOS AL MES (American Dealer Orlando)
   ========================================================= */
.cv-crm-results {
    width: 100% !important;
    gap: 0 !important;
    --widgets-spacing: 0px;
    margin-top: 64px !important;
    padding: 28px !important;
    border: 1px solid rgba(49, 92, 255, 0.12);
    border-radius: 26px !important;
    background: #f8f7f4;
}

.cv-crm-results > .elementor-element {
    width: 100% !important;
    margin: 0 !important;
}

.cv-crm-results-head > .elementor-element,
.cv-crm-units > .elementor-element,
.cv-crm-kpis > .elementor-element,
.cv-crm-kpi > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

.cv-crm-results-head {
    flex-wrap: wrap !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 8px 20px !important;
}

.cv-crm-results-label .elementor-heading-title {
    color: #315cff !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 11.5px !important;
    font-weight: 600 !important;
    letter-spacing: 0.08em !important;
    text-transform: uppercase;
    line-height: 1.2 !important;
}

.cv-crm-results-meta .elementor-heading-title {
    color: #727783 !important;
    font-size: 13.5px !important;
    font-weight: 600 !important;
    letter-spacing: normal !important;
    line-height: 1.3 !important;
}

/* Antes · puntos · después */
.cv-crm-units {
    display: grid !important;
    grid-template-columns: 170px minmax(0, 1fr) 190px;
    align-items: center;
    gap: 28px !important;
    margin-top: 22px !important;
    padding: 26px 28px !important;
    border-radius: 20px !important;
    background: #ffffff;
}

.cv-crm-units-from .elementor-heading-title,
.cv-crm-units-to .elementor-heading-title {
    display: grid;
    gap: 8px;
    line-height: 1 !important;
}

.cv-crm-units-from b,
.cv-crm-units-to b {
    font-size: clamp(40px, 4vw, 58px);
    font-weight: 800;
    letter-spacing: -0.04em;
    line-height: 0.95;
    font-variant-numeric: tabular-nums;
}

.cv-crm-units-from b {
    color: #08090c;
}

.cv-crm-units-to b {
    color: #315cff;
}

.cv-crm-units-from span,
.cv-crm-units-to span {
    color: #727783;
    font-size: 14px;
    font-weight: 600;
    letter-spacing: normal;
    line-height: 1.35;
}

.cv-crm-units-to {
    text-align: right;
}

/* Retícula: un punto por vehículo vendido en el mes */
.cv-crm-dots {
    display: grid;
    grid-template-columns: repeat(20, minmax(0, 18px));
    justify-content: center;
    gap: 9px;
    min-width: 0;
}

.cv-crm-dot {
    display: block;
    aspect-ratio: 1;
    border-radius: 50%;
    background: rgba(8, 9, 12, 0.07);
    transform: scale(0.55);
    transition: background-color 0.35s ease, transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.cv-crm-dot.is-base {
    background: #08090c;
    transform: none;
}

.cv-crm-dot.is-new {
    background: #315cff;
    transform: none;
}

/* Tres cifras del caso */
.cv-crm-kpis {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px !important;
    margin-top: 10px !important;
}

.cv-crm-kpi {
    gap: 6px !important;
    --widgets-spacing: 0px;
    padding: 20px 22px !important;
    border-radius: 18px !important;
    background: #ffffff;
    transition: box-shadow 0.45s ease, transform 0.45s var(--cv-ease) !important;
}

.cv-crm-kpi:hover {
    box-shadow: 0 22px 46px rgba(8, 9, 12, 0.08);
    transform: translateY(-4px);
}

.cv-crm-kpi-value .elementor-heading-title {
    color: #315cff !important;
    font-size: clamp(26px, 2.4vw, 34px) !important;
    font-weight: 800 !important;
    letter-spacing: -0.03em !important;
    line-height: 1 !important;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.cv-crm-kpi-name .elementor-heading-title {
    color: #3c414b !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    letter-spacing: normal !important;
    line-height: 1.35 !important;
}

.cv-crm-results-note {
    align-self: center !important;
    width: auto !important;
}

.cv-crm-results-note .elementor-heading-title {
    margin-top: 18px !important;
    color: #727783 !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.04em !important;
    line-height: 1.5 !important;
    text-align: center;
}

/* Botones del caso en una sola fila */
.cv-crm-case-ctas {
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 14px 26px !important;
    width: 100% !important;
    margin-top: 28px !important;
}

.cv-crm-case-ctas > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

/* =========================================================
   TABLET
   ========================================================= */
@media (max-width: 1024px) {
    .cv-crm-record {
        grid-template-columns: auto minmax(0, 1fr);
        gap: 14px 18px;
    }

    .cv-crm-record-status {
        grid-column: 1 / -1;
    }

    .cv-crm-units {
        grid-template-columns: 1fr 1fr;
        gap: 22px !important;
    }

    .cv-crm-units > .cv-crm-units-from {
        grid-column: 1;
        grid-row: 1;
    }

    .cv-crm-units > .cv-crm-units-to {
        grid-column: 2;
        grid-row: 1;
    }

    .cv-crm-dots {
        grid-column: 1 / -1;
        grid-row: 2;
    }
}

/* =========================================================
   MÓVIL
   ========================================================= */
@media (max-width: 767px) {
    .cv-svc-map-target.cv-crm-target::after {
        right: 12px;
    }

    .cv-crm-record {
        padding: 12px 14px;
        margin-bottom: 22px;
    }

    .cv-crm-record-id {
        font-size: 13px;
    }

    .cv-crm-board {
        gap: 6px !important;
    }

    .cv-svc-mock--board .cv-crm-board .elementor-heading-title {
        min-height: 112px;
        padding: 8px 6px;
    }

    .cv-crm-col-h {
        font-size: 11px;
    }

    .cv-svc-mock--board > .cv-svc-mock-item:not(.cv-svc-mock-key) .elementor-heading-title {
        flex-direction: column;
        align-items: flex-start;
        gap: 4px;
    }

    .cv-crm-v {
        text-align: left;
    }

    .cv-crm-ch,
    .cv-crm-do {
        font-size: 13.5px;
    }

    .cv-svc-mock--flow .cv-svc-mock-item:not(.cv-svc-mock-key) .elementor-heading-title {
        grid-template-columns: 68px minmax(0, 1fr);
        gap: 10px;
    }

    .cv-svc-mock--flow .cv-svc-mock-item:not(.cv-svc-mock-key):not(:nth-last-child(2))::after {
        left: 33px;
    }

    .cv-crm-results {
        padding: 20px 14px !important;
        border-radius: 22px !important;
        margin-top: 44px !important;
    }

    .cv-crm-units {
        padding: 20px 18px !important;
        gap: 18px !important;
    }

    .cv-crm-dots {
        grid-template-columns: repeat(10, minmax(0, 18px));
        gap: 8px;
    }

    .cv-crm-units-from span,
    .cv-crm-units-to span {
        font-size: 13px;
    }

    .cv-crm-kpis {
        grid-template-columns: minmax(0, 1fr);
    }

    .cv-crm-kpi {
        padding: 16px 18px !important;
    }

    .cv-crm-case-ctas {
        flex-direction: column !important;
        align-items: flex-start !important;
        gap: 6px !important;
        margin-top: 22px !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-svc-map-target.cv-crm-target.is-hit::after,
    .cv-crm-record-v.is-roll {
        animation: none !important;
    }
}

/* En el editor los paneles se ven completos */
.elementor-editor-active .cv-crm-cards > span,
.elementor-editor-active .cv-svc-mock--board > .cv-svc-mock-item .elementor-heading-title {
    opacity: 1;
    transform: none;
}

.elementor-editor-active .cv-crm-line::after,
.elementor-editor-active .cv-svc-mock--flow .cv-svc-mock-item::after {
    transform: none;
}



/* #########################################################
   68. ANALÍTICA Y CONVERSIÓN (cv-an-*) (v4.3.1)
   Subpágina de servicio clonada de la maestra (sección 41) y
   de CRM y Automatización (sección 67), con piezas propias:
   · Hero: la meta del mapa son las decisiones con evidencia
     (cv-svc-map-target + cv-an-target): línea de tendencia
     lima junto al título y una pastilla "+1 conversión" con
     cada pulso.
   · Sección azul: cv-svc-scan cv-svc-scan--6 cv-an-scan. El JS
     agrega arriba "Lectura del recorrido" (cv-an-trace): una
     línea que se dibuja punto por punto con la tarjeta activa.
   · Paneles nuevos en las capacidades (los anima el JS de
     entregables con is-on):
     cv-svc-mock--events (eventos cv-an-ev, origen cv-an-src y
     verificación cv-an-ok), cv-svc-mock--leak (pasos cv-an-step,
     porcentaje cv-an-pct, barra cv-an-track / cv-an-fill y
     marca cv-an-flag) y cv-svc-mock--test (hipótesis cv-an-k /
     cv-an-v y variantes cv-an-var, cv-an-vname, cv-an-rate,
     cv-an-win).
   · Caso: estructura de la maestra (cv-svc-case) y debajo
     cv-an-results: barras marzo → junio (cv-an-bar), el
     crecimiento (cv-an-delta) y tres puntos de entrada
     (cv-an-src). El JS cuenta las cifras y enciende is-on.
   Todos los textos pequeños llevan espaciado de letras normal
   (ver sección 66).
   ######################################################### */

/* ---------- Hero: la meta del mapa son las decisiones ---------- */
.cv-svc-map-target.cv-an-target {
    position: relative;
    overflow: visible;
}

.cv-an-target .cv-svc-map-target-title .elementor-heading-title {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

/* Línea de tendencia (línea plana lima) */
.cv-an-target .cv-svc-map-target-title .elementor-heading-title::before {
    content: "";
    flex: 0 0 18px;
    width: 18px;
    height: 18px;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c8ff36' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 20h18M4 16l5-5 4 3 7-8'/%3E%3Cpath d='M15 6h5v5'/%3E%3C/svg%3E") 50% 50% / contain no-repeat;
}

/* "+1 conversión": sube y se desvanece con cada pulso */
.cv-svc-map-target.cv-an-target::after {
    content: "+1 conversión";
    position: absolute;
    top: -13px;
    right: 18px;
    padding: 4px 10px;
    border-radius: 999px;
    background: #c8ff36;
    color: #08090c;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.02em;
    line-height: 1.2;
    white-space: nowrap;
    opacity: 0;
    pointer-events: none;
    transform: translateY(8px) scale(0.85);
}

.cv-svc-map-target.cv-an-target.is-hit::after {
    animation: cv-an-hit 1.2s var(--cv-ease) forwards;
}

@keyframes cv-an-hit {
    0% { opacity: 0; transform: translateY(8px) scale(0.85); }
    22% { opacity: 1; transform: translateY(0) scale(1); }
    68% { opacity: 1; transform: translateY(-3px) scale(1); }
    100% { opacity: 0; transform: translateY(-12px) scale(1); }
}

/* ---------- Sección azul: lectura del recorrido ---------- */
.cv-an-trace {
    display: grid;
    grid-template-columns: minmax(0, 250px) minmax(0, 1fr) auto;
    align-items: center;
    gap: 28px;
    width: 100%;
    margin: 0 0 30px;
    padding: 16px 22px;
    border: 1px solid rgba(255, 255, 255, 0.22);
    border-radius: 18px;
    background: rgba(255, 255, 255, 0.08);
}

.cv-an-trace-info {
    display: grid;
    gap: 4px;
    min-width: 0;
    overflow: hidden;
}

.cv-an-trace-k {
    color: rgba(255, 255, 255, 0.7);
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    line-height: 1.2;
}

.cv-an-trace-v {
    overflow: hidden;
    color: #ffffff;
    font-size: 15px;
    font-weight: 700;
    letter-spacing: normal;
    line-height: 1.3;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.cv-an-trace-v.is-roll {
    animation: cv-an-roll 0.55s var(--cv-ease);
}

@keyframes cv-an-roll {
    0% { opacity: 0; transform: translateY(70%); }
    100% { opacity: 1; transform: none; }
}

/* Gráfico: la línea base tenue y la línea lima que avanza */
.cv-an-trace-chart {
    position: relative;
    height: 58px;
    min-width: 0;
    margin: 0 10px;
}

.cv-an-trace-chart svg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    overflow: visible;
}

.cv-an-trace-base,
.cv-an-trace-line {
    fill: none;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
    vector-effect: non-scaling-stroke;
}

.cv-an-trace-base {
    stroke: rgba(255, 255, 255, 0.22);
    stroke-dasharray: 4 5;
}

.cv-an-trace-line {
    stroke: #c8ff36;
    stroke-width: 2.5;
    opacity: 0;
    transition: d 0.9s var(--cv-ease), opacity 0.3s ease;
}

.cv-an-trace-dot {
    position: absolute;
    width: 12px;
    height: 12px;
    border: 2px solid rgba(255, 255, 255, 0.45);
    border-radius: 50%;
    background: #315cff;
    transform: translate(-50%, -50%);
    transition: background-color 0.4s ease, border-color 0.4s ease, transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.cv-an-trace-dot.is-done {
    border-color: #ffffff;
    background: #ffffff;
}

.cv-an-trace-dot.is-now {
    border-color: #c8ff36;
    background: #c8ff36;
    transform: translate(-50%, -50%) scale(1.35);
}

.cv-an-trace-count {
    color: rgba(255, 255, 255, 0.7);
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.04em;
    white-space: nowrap;
}

.cv-an-trace-count b {
    color: #c8ff36;
    font-weight: 700;
}

/* ---------- Paneles: textos comunes ---------- */
.cv-svc-mock--events .cv-svc-mock-label + .cv-svc-mock-item,
.cv-svc-mock--leak .cv-svc-mock-label + .cv-svc-mock-item,
.cv-svc-mock--test .cv-svc-mock-label + .cv-svc-mock-item {
    margin-top: 8px !important;
}

.cv-svc-mock--events .cv-svc-mock-key,
.cv-svc-mock--leak .cv-svc-mock-key,
.cv-svc-mock--test .cv-svc-mock-key {
    margin-top: 14px !important;
}

.cv-svc-mock--events .cv-svc-mock-key .elementor-heading-title,
.cv-svc-mock--leak .cv-svc-mock-key .elementor-heading-title,
.cv-svc-mock--test .cv-svc-mock-key .elementor-heading-title {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 12px 14px;
    border-radius: 999px;
    background: #ece9e1;
    color: #9aa0aa !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    line-height: 1.3 !important;
    text-align: center;
    transition: background-color 0.45s ease, color 0.45s ease;
}

/* Barra común (embudo y prueba): crece desde la izquierda */
.cv-an-track {
    position: relative;
    display: block;
    height: 8px;
    border-radius: 999px;
    background: #f1eee6;
    overflow: hidden;
}

.cv-an-fill {
    position: absolute;
    inset: 0 auto 0 0;
    width: 100%;
    border-radius: inherit;
    background: #315cff;
    transform: scaleX(0);
    transform-origin: 0 50%;
    transition: transform 0.9s var(--cv-ease) 0.1s, background-color 0.45s ease;
}

/* ---------- Panel: registro de eventos ---------- */
.cv-svc-mock--events .cv-svc-mock-item:not(.cv-svc-mock-key) .elementor-heading-title {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 11px 0;
    border-top: 1px solid rgba(8, 9, 12, 0.07);
    line-height: 1.3 !important;
    opacity: 0.45;
    transition: opacity 0.45s ease;
}

.cv-svc-mock--events .cv-svc-mock-label + .cv-svc-mock-item .elementor-heading-title {
    border-top: 0;
}

.cv-svc-mock--events .cv-svc-mock-item.is-on .elementor-heading-title {
    opacity: 1;
}

.cv-an-ev {
    flex: 0 0 auto;
    padding: 5px 10px;
    border-radius: 8px;
    background: #f5f2ea;
    color: #08090c;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: normal;
    line-height: 1.2;
    white-space: nowrap;
    transition: background-color 0.45s ease, color 0.45s ease;
}

.cv-svc-mock--events .cv-svc-mock-item.is-on .cv-an-ev {
    background: rgba(49, 92, 255, 0.1);
    color: #315cff;
}

.cv-an-src {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    color: #727783;
    font-size: 13.5px;
    font-weight: 600;
    letter-spacing: normal;
    white-space: nowrap;
    text-overflow: ellipsis;
}

/* Verificación: anillo vacío que se vuelve check azul */
.cv-an-ok {
    position: relative;
    flex: 0 0 22px;
    width: 22px;
    height: 22px;
    border: 2px solid #e3dfd5;
    border-radius: 50%;
    transition: background-color 0.4s ease, border-color 0.4s ease;
}

.cv-an-ok::after {
    content: "";
    position: absolute;
    inset: 0;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2l2.3 2.3L9.5 3.8' fill='none' stroke='%23ffffff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 50% 50% / 11px no-repeat;
    opacity: 0;
    transform: scale(0.4);
    transition: opacity 0.35s ease, transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.cv-svc-mock--events .cv-svc-mock-item.is-on .cv-an-ok {
    border-color: #315cff;
    background: #315cff;
}

.cv-svc-mock--events .cv-svc-mock-item.is-on .cv-an-ok::after {
    opacity: 1;
    transform: none;
}

.cv-svc-mock--events .cv-svc-mock-key.is-on .elementor-heading-title {
    background: #315cff;
    color: #ffffff !important;
}

/* ---------- Panel: embudo con punto de fuga ---------- */
.cv-svc-mock--leak .cv-svc-mock-item:not(.cv-svc-mock-key) .elementor-heading-title {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 8px 12px;
    padding: 10px 0;
    line-height: 1.3 !important;
}

.cv-svc-mock--leak .cv-an-track {
    grid-column: 1 / -1;
}

.cv-an-step {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    min-width: 0;
    color: #08090c;
    font-size: 14.5px;
    font-weight: 600;
    letter-spacing: normal;
}

.cv-an-pct {
    color: #727783;
    font-size: 14px;
    font-weight: 700;
    letter-spacing: normal;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

/* Ancho de cada paso del recorrido */
.cv-svc-mock--leak .cv-svc-mock-item:nth-child(3) .cv-an-fill { width: 48%; }
.cv-svc-mock--leak .cv-svc-mock-item:nth-child(4) .cv-an-fill { width: 19%; }
.cv-svc-mock--leak .cv-svc-mock-item:nth-child(5) .cv-an-fill { width: 6%; min-width: 10px; }

.cv-svc-mock--leak .cv-svc-mock-item.is-on .cv-an-fill {
    transform: none;
}

/* Marca "Punto de fuga" en lima */
.cv-an-flag {
    padding: 3px 9px;
    border-radius: 999px;
    background: #c8ff36;
    color: #08090c;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 0.04em;
    line-height: 1.3;
    text-transform: uppercase;
    white-space: nowrap;
    opacity: 0;
    transform: translateX(-6px) scale(0.85);
    transition: opacity 0.4s ease 0.7s, transform 0.55s cubic-bezier(0.34, 1.56, 0.64, 1) 0.7s;
}

.cv-svc-mock--leak .cv-svc-mock-item.is-on .cv-an-flag {
    opacity: 1;
    transform: none;
}

.cv-svc-mock--leak .cv-svc-mock-item:nth-child(5).is-on .cv-an-pct {
    color: #08090c;
}

.cv-svc-mock--leak .cv-svc-mock-key.is-on .elementor-heading-title {
    background: #08090c;
    color: #ffffff !important;
}

/* ---------- Panel: prueba de una hipótesis ---------- */
.cv-svc-mock--test .cv-svc-mock-label + .cv-svc-mock-item .elementor-heading-title {
    display: grid;
    gap: 6px;
    padding: 12px 14px;
    border-radius: 14px;
    background: #f8f7f4;
    line-height: 1.35 !important;
}

.cv-an-k {
    color: #727783;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.cv-an-v {
    color: #08090c;
    font-size: 14.5px;
    font-weight: 600;
    letter-spacing: normal;
}

.cv-svc-mock--test .cv-svc-mock-item:nth-child(n+3):not(.cv-svc-mock-key) .elementor-heading-title {
    display: grid;
    grid-template-columns: 30px minmax(0, 1fr) auto;
    align-items: center;
    gap: 8px 12px;
    padding: 14px 0 4px;
    line-height: 1.3 !important;
}

.cv-svc-mock--test .cv-an-track {
    grid-column: 2 / -1;
}

.cv-an-var {
    display: inline-grid;
    grid-row: span 2;
    place-items: center;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: #f1eee6;
    color: #727783;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: normal;
    transition: background-color 0.45s ease, color 0.45s ease;
}

.cv-an-vname {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    min-width: 0;
    color: #3c414b;
    font-size: 14px;
    font-weight: 600;
    letter-spacing: normal;
}

.cv-an-rate {
    color: #727783;
    font-size: 15px;
    font-weight: 800;
    letter-spacing: normal;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.cv-an-win {
    padding: 3px 9px;
    border-radius: 999px;
    background: #c8ff36;
    color: #08090c;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 0.04em;
    line-height: 1.3;
    text-transform: uppercase;
    opacity: 0;
    transform: scale(0.8);
    transition: opacity 0.4s ease 0.8s, transform 0.55s cubic-bezier(0.34, 1.56, 0.64, 1) 0.8s;
}

/* Variante A: 2,1 % frente a 3,4 % de la B */
.cv-svc-mock--test .cv-svc-mock-item:nth-child(3) .cv-an-fill {
    width: 62%;
    background: #9aa0aa;
}

.cv-svc-mock--test .cv-svc-mock-item.is-on .cv-an-fill {
    transform: none;
}

.cv-svc-mock--test .cv-svc-mock-item:nth-child(4).is-on .cv-an-var {
    background: #315cff;
    color: #ffffff;
}

.cv-svc-mock--test .cv-svc-mock-item:nth-child(4).is-on .cv-an-rate {
    color: #315cff;
}

.cv-svc-mock--test .cv-svc-mock-item.is-on .cv-an-win {
    opacity: 1;
    transform: none;
}

.cv-svc-mock--test .cv-svc-mock-key.is-on .elementor-heading-title {
    background: #c8ff36;
    color: #08090c !important;
}

/* =========================================================
   CASO: CONVERSIONES MEDIDAS (PICSO)
   ========================================================= */
.cv-an-results {
    width: 100% !important;
    gap: 0 !important;
    --widgets-spacing: 0px;
    margin-top: 64px !important;
    padding: 28px !important;
    border: 1px solid rgba(49, 92, 255, 0.12);
    border-radius: 26px !important;
    background: #f8f7f4;
}

.cv-an-results > .elementor-element {
    width: 100% !important;
    margin: 0 !important;
}

.cv-an-results-head > .elementor-element,
.cv-an-bars > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

.cv-an-growth > .elementor-element,
.cv-an-sources > .elementor-element {
    width: 100% !important;
    margin: 0 !important;
}

.cv-an-results-head {
    flex-wrap: wrap !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 8px 20px !important;
}

.cv-an-results-label .elementor-heading-title,
.cv-an-growth-label .elementor-heading-title,
.cv-an-sources-label .elementor-heading-title {
    color: #315cff !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 11.5px !important;
    font-weight: 600 !important;
    letter-spacing: 0.08em !important;
    text-transform: uppercase;
    line-height: 1.2 !important;
}

.cv-an-growth-label .elementor-heading-title,
.cv-an-sources-label .elementor-heading-title {
    color: #727783 !important;
}

.cv-an-results-meta .elementor-heading-title {
    color: #727783 !important;
    font-size: 13.5px !important;
    font-weight: 600 !important;
    letter-spacing: normal !important;
    line-height: 1.3 !important;
}

/* Dos tarjetas: crecimiento y puntos de entrada */
.cv-an-board {
    display: grid !important;
    grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);
    gap: 10px !important;
    margin-top: 22px !important;
}

.cv-an-board > .elementor-element {
    width: auto !important;
    min-width: 0;
    margin: 0 !important;
}

.cv-an-growth,
.cv-an-sources {
    gap: 0 !important;
    --widgets-spacing: 0px;
    padding: 24px 26px !important;
    border-radius: 20px !important;
    background: #ffffff;
}

/* Barras marzo → junio: crecen desde abajo, con el mes debajo */
.cv-an-bars {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: stretch;
    gap: 18px !important;
    height: 230px;
    margin-top: 18px !important;
    padding: 0 6px !important;
}

.cv-an-bar,
.cv-an-bar > .elementor-widget-container {
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    height: 100%;
}

.cv-an-bar .elementor-heading-title {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    line-height: 1 !important;
}

.cv-an-bar b {
    order: 1;
    color: #08090c;
    font-size: clamp(26px, 2.6vw, 36px);
    font-weight: 800;
    letter-spacing: -0.03em;
    line-height: 1;
    font-variant-numeric: tabular-nums;
}

.cv-an-bar--to b {
    color: #315cff;
}

.cv-an-bar .elementor-heading-title::before {
    content: "";
    order: 2;
    display: block;
    width: min(100%, 112px);
    height: calc(var(--an-h, 1) * 140px);
    border-radius: 12px 12px 4px 4px;
    background: #08090c;
    transform: scaleY(0);
    transform-origin: 50% 100%;
    transition: transform 1.1s var(--cv-ease);
}

.cv-an-bar--from {
    --an-h: 0.3125;
}

.cv-an-bar--to .elementor-heading-title::before {
    background: #315cff;
    transition-delay: 0.35s;
}

.cv-an-bar span {
    order: 3;
    color: #727783;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: normal;
    line-height: 1.2;
}

.cv-an-delta {
    margin-top: 22px !important;
    padding-top: 18px;
    border-top: 1px solid rgba(8, 9, 12, 0.07);
}

.cv-an-delta .elementor-heading-title {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 6px 12px;
    line-height: 1.2 !important;
}

.cv-an-delta b {
    padding: 4px 12px;
    border-radius: 999px;
    background: #c8ff36;
    color: #08090c;
    font-size: 20px;
    font-weight: 800;
    letter-spacing: -0.01em;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.cv-an-delta span {
    color: #3c414b;
    font-size: 14px;
    font-weight: 600;
    letter-spacing: normal;
}

/* Puntos de entrada */
.cv-an-src .elementor-heading-title {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: baseline;
    gap: 2px 14px;
    padding: 16px 0 14px;
    border-top: 1px solid rgba(8, 9, 12, 0.07);
    line-height: 1.3 !important;
}

.cv-an-sources-label + .cv-an-src .elementor-heading-title {
    margin-top: 6px;
    border-top: 0;
}

.cv-an-src-name {
    color: #08090c;
    font-size: 15.5px;
    font-weight: 700;
    letter-spacing: normal;
}

.cv-an-src b {
    grid-row: span 2;
    align-self: center;
    color: #315cff;
    font-size: clamp(26px, 2.4vw, 34px);
    font-weight: 800;
    letter-spacing: -0.03em;
    line-height: 1;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.cv-an-src-what {
    color: #727783;
    font-size: 13.5px;
    font-weight: 600;
    letter-spacing: normal;
}

/* Barra proporcional (651 es el máximo) */
.cv-an-src-bar {
    position: relative;
    grid-column: 1 / -1;
    height: 6px;
    margin-top: 10px;
    border-radius: 999px;
    background: #f1eee6;
    overflow: hidden;
}

.cv-an-src-bar::after {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: var(--an-w, 100%);
    border-radius: inherit;
    background: #315cff;
    transform: scaleX(0);
    transform-origin: 0 50%;
    transition: transform 1s var(--cv-ease);
}

.cv-an-src:nth-child(2) { --an-w: 27%; }
.cv-an-src:nth-child(3) { --an-w: 100%; }
.cv-an-src:nth-child(4) { --an-w: 47%; }

.cv-an-src:nth-child(3) .cv-an-src-bar::after { transition-delay: 0.15s; }
.cv-an-src:nth-child(4) .cv-an-src-bar::after { transition-delay: 0.3s; }

/* Encendido (lo pone el JS; en el editor se ve completo) */
.cv-an-results.is-on .cv-an-bar .elementor-heading-title::before,
.cv-an-results.is-on .cv-an-src-bar::after,
.elementor-editor-active .cv-an-bar .elementor-heading-title::before,
.elementor-editor-active .cv-an-src-bar::after {
    transform: none;
}

.cv-an-results-note {
    align-self: center !important;
    width: auto !important;
}

.cv-an-results-note .elementor-heading-title {
    margin-top: 18px !important;
    color: #727783 !important;
    font-family: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.04em !important;
    line-height: 1.5 !important;
    text-align: center;
}

/* Botones del caso en una sola fila */
.cv-an-case-ctas {
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 14px 26px !important;
    width: 100% !important;
    margin-top: 28px !important;
}

.cv-an-case-ctas > .elementor-element {
    width: auto !important;
    margin: 0 !important;
}

/* =========================================================
   TABLET
   ========================================================= */
@media (max-width: 1024px) {
    .cv-an-trace {
        grid-template-columns: minmax(0, 1fr) auto;
        gap: 14px 18px;
    }

    .cv-an-trace-chart {
        grid-column: 1 / -1;
        grid-row: 2;
        margin: 0 8px;
    }

    .cv-an-board {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* =========================================================
   MÓVIL
   ========================================================= */
@media (max-width: 767px) {
    .cv-svc-map-target.cv-an-target::after {
        right: 12px;
    }

    .cv-an-trace {
        padding: 14px 16px;
        margin-bottom: 22px;
    }

    .cv-an-trace-v {
        font-size: 14px;
    }

    .cv-an-trace-chart {
        height: 48px;
    }

    .cv-an-ev {
        font-size: 11px;
        padding: 4px 8px;
    }

    .cv-an-src,
    .cv-an-step,
    .cv-an-v {
        font-size: 13.5px;
    }

    .cv-an-vname {
        font-size: 13px;
    }

    .cv-an-results {
        padding: 20px 14px !important;
        border-radius: 22px !important;
        margin-top: 44px !important;
    }

    .cv-an-growth,
    .cv-an-sources {
        padding: 20px 18px !important;
    }

    .cv-an-bars {
        height: 200px;
    }

    .cv-an-bar .elementor-heading-title::before {
        height: calc(var(--an-h, 1) * 116px);
    }

    .cv-an-case-ctas {
        flex-direction: column !important;
        align-items: flex-start !important;
        gap: 6px !important;
        margin-top: 22px !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cv-svc-map-target.cv-an-target.is-hit::after,
    .cv-an-trace-v.is-roll {
        animation: none !important;
    }

    .cv-an-fill,
    .cv-an-src-bar::after,
    .cv-an-bar .elementor-heading-title::before,
    .cv-an-trace-line {
        transition: none !important;
    }
}

/* En el editor los paneles se ven completos */
.elementor-editor-active .cv-an-fill {
    transform: none;
}

.elementor-editor-active .cv-svc-mock--events .cv-svc-mock-item .elementor-heading-title,
.elementor-editor-active .cv-an-flag,
.elementor-editor-active .cv-an-win {
    opacity: 1;
    transform: none;
}
