/* 
Theme Name: Hello Elementor Child
Theme URI: https://github.com/elementor/hello-theme-child/
Description: Hello Elementor Child is a child theme of Hello Elementor, created by Elementor team
Author: Elementor Team
Author URI: https://elementor.com/
Template: hello-elementor
Version: 2.0.0
Text Domain: hello-elementor-child
License: GNU General Public License v3 or later.
License URI: https://www.gnu.org/licenses/gpl-3.0.html
Tags: flexible-header, custom-colors, custom-menu, custom-logo, editor-style, featured-images, rtl-language-support, threaded-comments, translation-ready
*/

/* Add your custom styles here */

/* ========================================================================== */
/* FLUID SCALING SYSTEM - NATIVE ELEMENTOR INTEGRATION */
/* ========================================================================== */

:root {
    /* 1. Base de diseño */
    --size-unit: 16;
    --size-container-ideal: 1440;
    --size-container-min: 992px;
    --size-container-max: 1920px;

    /* El ancho de pantalla actual */
    --size-container: clamp(var(--size-container-min), 100vw, var(--size-container-max));

    /* La variable maestra de escalado (define cuánto mide 1rem/1em) */
    --size-font: calc(var(--size-container) / (var(--size-container-ideal) / var(--size-unit)));

    /* Espaciados */
    --osmo-gap: 2em;
    --osmo-container-padding: 2em;
}

.container {
    max-width: var(--size-container);
    width: 100%;
    margin-inline: auto;
    position: relative;
}

/* Custom Easing */
:root {
    --osmo-ease: cubic-bezier(0.65, 0, 0.35, 1);
}

/* Se aplica a la raíz */
html {
    font-size: var(--size-font) !important;
}

body {
    overflow-x: clip;
    transition: unset !important;

    &.is-loading {
        overflow: hidden !important;
        height: 100vh !important;
    }
}

/* ========================================================================== */
/* BREAKPOINTS (Flujo de escalado ininterrumpido) */
/* ========================================================================== */

/* Tablet */
@media (width<=991px) {
    :root {
        --size-container-ideal: 834;
        --size-container-min: 768px;
        --size-container-max: 991px;
        --osmo-container-padding: 1.5em;
    }
}

/* Móvil */
@media (width<=767px) {
    :root {
        --size-container-ideal: 480;
        --size-container-min: 320px;
        --size-container-max: 767px;
        --osmo-container-padding: 1em;
    }
}

/* ========================================================================== */
/* ELEMENTOR CONTAINERS (Fluid Integration) */
/* ========================================================================== */

/* 1. Container padding */
body .e-con.e-parent {
    padding-left: var(--osmo-container-padding) !important;
    padding-right: var(--osmo-container-padding) !important;
}

/* 2. Forzamos a que la caja interior (boxed) obedezca la medida fluida */
body .e-con-boxed>.e-con-inner {
    max-width: var(--size-container) !important;
    width: 100% !important;
    margin-left: auto !important;
    margin-right: auto !important;
}

/* ========================================================================== */
/* HEADINGS FLUIDOS                                                            */
/* Especificidad intencionalmente BAJA (0,1,1) para que los tamaños definidos */
/* en Elementor (0,3-4,0) siempre tengan más peso. El sistema fluido actúa   */
/* solo como fallback cuando Elementor no define un tamaño explícito.         */
/* ========================================================================== */

h1.elementor-heading-title,
.hero-heading-container h1 {
    font-size: 3.125em;
    color: #fff;
    /* Aseguramos que sea blanco sobre el fondo oscuro */
    position: relative;
    z-index: 1;

    &.hero-text-reveal-title,
    &.slot-initialized {
        font-size: clamp(1.7rem, 4vw, 2.35rem);
        line-height: 1.1;
        display: block !important;
        opacity: 1 !important;
        visibility: visible !important;
        margin: 0;
    }
}

.xxl-h1 h1.elementor-heading-title {
    font-size: 6.5em;

    @media (width <=768px) {
        font-size: 3.35em;
    }
}

.main-heading {
    width: 100%;
    display: flex;
    justify-content: flex-start;
}

.hero-heading-container {
    width: 100%;
    position: relative;
    overflow: hidden;
    min-height: 1.2em;
    /* Asegura que el contenedor no colapse */

    & h1 {
        margin: 0;

        /* Ocultamos los spans secundarios solo si el H1 no ha sido inicializado por JS */
        &:not(.slot-initialized) span:not(:first-child) {
            display: none;
        }

        & .line {
            display: block;
            overflow: hidden;
            vertical-align: bottom;
        }
    }
}

h2.elementor-heading-title,
h2 {
    font-size: 1.575em;
    line-height: 1.2;

    @media (width <=768px) {
        font-size: 2em;
    }
}

h3.elementor-heading-title {
    font-size: 1.15em;
    line-height: 1.4em;
}

h4.elementor-heading-title {
    font-size: 1em;
}

h5.elementor-heading-title {
    font-size: 0.875em;
}

/* Párrafos: ritmo vertical basado en la unidad lh */
.elementor-text-editor,
.elementor-widget-text-editor p,
ul li {
    font-size: 1em;
    line-height: 1.4;
    /*margin-block: 1lh;*/
}

/* ==========================================================================
   Preloader Styles
   ========================================================================== */

body.is-loading {
    overflow: hidden !important;
    height: 100dvh !important;
}


#site-preloader {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100% !important;
    height: 100dvh !important;
    background-color: #0A0A0A;
    z-index: 999999;
    display: flex;
    align-items: end;
    transition: opacity 0.8s cubic-bezier(0.85, 0, 0.15, 1), visibility 0.8s cubic-bezier(0.85, 0, 0.15, 1);
    justify-content: flex-end;

    &.loaded {
        opacity: 0;
        visibility: hidden;
        pointer-events: none;
    }

    & .preloader-content {
        width: 100%;
        display: flex;
        flex-direction: column;
        align-items: end;
        gap: 20px;
        justify-content: flex-end;

        & .preloader-logo {
            position: fixed;
            top: 24px;
            left: 24px;
            width: 25rem;
            max-width: 80vw;
            opacity: 1;

            & img {
                width: 100%;
                height: auto;
            }
        }

        & .preloader-counter {
            display: flex;
            font-family: var(--e-global-typography-primary-font-family, 'Inter', sans-serif);
            font-size: 12rem;
            font-weight: 700;
            color: #ffffff;
            line-height: 2ch;
            height: 2ch;
            overflow: hidden;
            margin-right: 1rem;

            @media (width <=768px) {
                font-size: 15vw;
                margin-right: 0.5rem;
            }

            & .number-track {
                display: flex;
                flex-direction: column;

                & span {
                    display: block;
                    height: 2ch;
                    width: 1ch;
                    text-align: center;
                }
            }

            & .percent-symbol {
                height: 2ch;
                display: block;
            }
        }

        & .preloader-bar-wrapper {
            width: 100%;
            height: 8px;
            background-color: rgba(255, 255, 255, 0.1);
            border-radius: 4px;
            overflow: hidden;
            position: relative;

            & .preloader-bar {
                position: absolute;
                top: 0;
                left: 0;
                height: 100%;
                width: 0%;
                background-color: #FDC631;
                border-radius: 4px;
            }
        }
    }
}

#wpfooter {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 10px 20px;
    color: #50575e;
    display: flex;
    flex-direction: column;
    place-content: start;

    & p {
        font-size: 16px;
        margin: 0;
        line-height: 1.55;
        display: flex;
        place-items: center;
        place-content: center;

        & img {
            max-width: 120px;
        }
    }
}

/* Page Transition Curtain */
#page-transition-curtain {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100% !important;
    height: 100dvh !important;
    background-color: #1a1a1a;
    z-index: 9999999;
    pointer-events: none;
    clip-path: inset(0% 0% 0% 0%);
    /* Cubriendo por defecto hasta que JS actúe */
    will-change: clip-path;
}


/* --- Social --- */
.social {
    & .elementor-widget-social-icons .elementor-grid {
        display: flex;
        gap: 24px;
    }

    & .elementor-grid-item {
        transition: transform 0.3s ease !important;

        &:hover {
            transform: translateY(-4px);
        }
    }
}



/* Fonts settings */
@font-face {
    font-family: 'LEMON MILK';
    src: url('/wp-content/uploads/2026/04/LEMONMILK-Bold.eot');
    src: url('/wp-content/uploads/2026/04/LEMONMILK-Bold.eot?#iefix') format('embedded-opentype'),
        url('/wp-content/uploads/2026/04/LEMONMILK-Bold.woff2') format('woff2'),
        url('/wp-content/uploads/2026/04/LEMONMILK-Bold.woff') format('woff'),
        url('/wp-content/uploads/2026/04/LEMONMILK-Bold.ttf') format('truetype'),
        url('/wp-content/uploads/2026/04/LEMONMILK-Bold.svg#LEMONMILK-Bold') format('svg');
    font-weight: bold;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'LEMON MILK';
    src: url('/wp-content/uploads/2026/04/LEMONMILK-BoldItalic.eot');
    src: url('/wp-content/uploads/2026/04/LEMONMILK-BoldItalic.eot?#iefix') format('embedded-opentype'),
        url('/wp-content/uploads/2026/04/LEMONMILK-BoldItalic.woff2') format('woff2'),
        url('/wp-content/uploads/2026/04/LEMONMILK-BoldItalic.woff') format('woff'),
        url('/wp-content/uploads/2026/04/LEMONMILK-BoldItalic.ttf') format('truetype'),
        url('/wp-content/uploads/2026/04/LEMONMILK-BoldItalic.svg#LEMONMILK-BoldItalic') format('svg');
    font-weight: bold;
    font-style: italic;
    font-display: swap;
}

@font-face {
    font-family: 'LEMON MILK';
    src: url('/wp-content/uploads/2026/04/LEMONMILK-Light.eot');
    src: url('/wp-content/uploads/2026/04/LEMONMILK-Light.eot?#iefix') format('embedded-opentype'),
        url('/wp-content/uploads/2026/04/LEMONMILK-Light.woff2') format('woff2'),
        url('/wp-content/uploads/2026/04/LEMONMILK-Light.woff') format('woff'),
        url('/wp-content/uploads/2026/04/LEMONMILK-Light.ttf') format('truetype'),
        url('/wp-content/uploads/2026/04/LEMONMILK-Light.svg#LEMONMILK-Light') format('svg');
    font-weight: 300;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'LEMON MILK';
    src: url('/wp-content/uploads/2026/04/LEMONMILK-LightItalic.eot');
    src: url('/wp-content/uploads/2026/04/LEMONMILK-LightItalic.eot?#iefix') format('embedded-opentype'),
        url('/wp-content/uploads/2026/04/LEMONMILK-LightItalic.woff2') format('woff2'),
        url('/wp-content/uploads/2026/04/LEMONMILK-LightItalic.woff') format('woff'),
        url('/wp-content/uploads/2026/04/LEMONMILK-LightItalic.ttf') format('truetype'),
        url('/wp-content/uploads/2026/04/LEMONMILK-LightItalic.svg#LEMONMILK-LightItalic') format('svg');
    font-weight: 300;
    font-style: italic;
    font-display: swap;
}

@font-face {
    font-family: 'LEMON MILK';
    src: url('LEMONMILK-Medium.eot');
    src: url('LEMONMILK-Medium.eot?#iefix') format('embedded-opentype'),
        url('LEMONMILK-Medium.woff2') format('woff2'),
        url('LEMONMILK-Medium.woff') format('woff'),
        url('LEMONMILK-Medium.ttf') format('truetype'),
        url('LEMONMILK-Medium.svg#LEMONMILK-Medium') format('svg');
    font-weight: 500;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'LEMON MILK';
    src: url('LEMONMILK-MediumItalic.eot');
    src: url('LEMONMILK-MediumItalic.eot?#iefix') format('embedded-opentype'),
        url('LEMONMILK-MediumItalic.woff2') format('woff2'),
        url('LEMONMILK-MediumItalic.woff') format('woff'),
        url('LEMONMILK-MediumItalic.ttf') format('truetype'),
        url('LEMONMILK-MediumItalic.svg#LEMONMILK-MediumItalic') format('svg');
    font-weight: 500;
    font-style: italic;
    font-display: swap;
}

@font-face {
    font-family: 'LEMON MILK';
    src: url('/wp-content/uploads/2026/04/LEMONMILK-Regular.eot');
    src: url('/wp-content/uploads/2026/04/LEMONMILK-Regular.eot?#iefix') format('embedded-opentype'),
        url('/wp-content/uploads/2026/04/LEMONMILK-Regular.woff2') format('woff2'),
        url('/wp-content/uploads/2026/04/LEMONMILK-Regular.woff') format('woff'),
        url('/wp-content/uploads/2026/04/LEMONMILK-Regular.ttf') format('truetype'),
        url('/wp-content/uploads/2026/04/LEMONMILK-Regular.svg#LEMONMILK-Regular') format('svg');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'LEMON MILK';
    src: url('/wp-content/uploads/2026/04/LEMONMILK-RegularItalic.eot');
    src: url('/wp-content/uploads/2026/04/LEMONMILK-RegularItalic.eot?#iefix') format('embedded-opentype'),
        url('/wp-content/uploads/2026/04/LEMONMILK-RegularItalic.woff2') format('woff2'),
        url('/wp-content/uploads/2026/04/LEMONMILK-RegularItalic.woff') format('woff'),
        url('/wp-content/uploads/2026/04/LEMONMILK-RegularItalic.ttf') format('truetype'),
        url('/wp-content/uploads/2026/04/LEMONMILK-RegularItalic.svg#LEMONMILK-RegularItalic') format('svg');
    font-weight: normal;
    font-style: italic;
    font-display: swap;
}

#content {
    overflow-x: clip;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    line-height: 1.2em;
}

.text-xxl .elementor-heading-title {
    line-height: 1.2;
    font-size: 6.5em;

    @media (width <=768px) {
        font-size: 3.35em;
    }
}

.elementor-popup-modal .dialog-widget-content {
    background-color: unset;
}

/* Text Reveal Animation (Osmo Style) */
.elementor-heading-title .line,
h1 .line,
h2 .line,
h3 .line,
h4 .line,
h5 .line,
h6 .line {
    overflow: hidden;
    vertical-align: bottom;
}

.elementor-heading-title .letter,
h1 .letter,
h2 .letter,
h3 .letter,
h4 .letter,
h5 .letter,
h6 .letter {
    display: inline-block;
    will-change: transform;
}

/* General Text Mask Animation */
/* SplitText Mask classes for paragraph animations */
.split-line-outer {
    overflow: hidden !important;
    display: block !important;
}

.split-line-inner {
    display: inline-block !important;
}

/* Fix para viñetas y numeración de listas en Safari / iOS */
.elementor-widget-text-editor ul {
    list-style-type: disc !important;
    padding-left: 1.5em !important;
}

.elementor-widget-text-editor ol {
    list-style-type: decimal !important;
    padding-left: 1.5em !important;
}

.elementor-widget-text-editor li {
    display: list-item !important;
    list-style-position: outside !important;
}

.elementor-widget-text-editor li::marker {
    color: inherit;
}

@media (max-width: 768px) {
    .text-scroll-mask {
        font-size: 0.75em !important;
    }
}

/* Fonts settings. End */

/* Buttons settings */

.button-xl .elementor-button {
    min-width: 300px;
}

/* Buttons settings. End*/

/* Links settings */
header .elementor-nav-menu .menu-item a.elementor-item::after {
    bottom: -5px;
}

.elementor-nav-menu .menu-item a.elementor-item,
.footer a {
    color: #fff;
}

.elementor-nav-menu .menu-item a.elementor-item,
.footer a,
.elementor-icon-box-description a {
    position: relative;
    text-decoration: none;
    display: inline-block;
    padding-bottom: 4px;

    &::after {
        content: "";
        position: absolute;
        width: 100%;
        color: #C5AE79;
        height: 1px;
        bottom: 0;
        left: 0;
        background-color: currentColor;
        transform: scaleX(0);
        transform-origin: left;
        transition: transform 0.4s cubic-bezier(.65, .01, .05, .99);
    }

    &:hover::after {
        transform: scaleX(1);
    }

    &:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted) {

        &::after,
        &::before {
            opacity: unset;
        }
    }
}

/* Exclude Site Logo, Social Icons and Design Logo from footer link decoration */
.footer .elementor-widget-theme-site-logo a,
.footer .elementor-widget-theme-site-logo a::after,
.footer .elementor-social-icons-wrapper a,
.footer .elementor-social-icons-wrapper a::after,
.footer .design a,
.footer .design a::after {
    padding-bottom: 0;
    content: none !important;
}

/* Adjust link underline position for .design */
.footer .design a {
    position: relative;

    &::after {
        content: "" !important;
        position: absolute;
        width: 100%;
        color: #C5AE79;
        height: 1px;
        bottom: -6px !important;
        left: 0;
        background-color: currentColor;
        transform: scaleX(0);
        transform-origin: left;
        transition: transform 0.4s cubic-bezier(.65, .01, .05, .99);
    }

    &:hover::after {
        transform: scaleX(1);
    }
}

/* Links settings. End */

/* Color settings */
#content .blanco-suave {
    color: #FFFFFFB3;

    & :not(.elementor-icon-box-title) {
        color: #FFFFFFB3;
    }
}

/* Color settings. End*/

/* Lennis settings */
html.lenis {
    height: auto;
}

.lenis.lenis-smooth {
    scroll-behavior: auto;
}

.lenis.lenis-smooth [data-lenis-prevent] {
    overscroll-behavior: contain;
}

.lenis.lenis-stopped {
    overflow: hidden;
}

/* Lennis settings. End */

/* Utility for blocking scroll when popup is open */
body.is-popup-open {
    overflow: hidden !important;
}

/* Header settings. */
.elementor-menu-cart__container.elementor-lightbox {
    left: -270px !important;
    top: 58px !important;
}

nav.cpel-switcher__nav * {
    background-color: transparent !important;
    color: #fff !important;
}

/* Chevron down icon para el selector de idiomas */
nav.cpel-switcher__nav .cpel-switcher__toggle a {
    display: inline-flex !important;
    align-items: center !important;
}

nav.cpel-switcher__nav .cpel-switcher__toggle a::after {
    content: '' !important;
    display: inline-block !important;
    width: 6px !important;
    height: 6px !important;
    border-right: 2px solid #ffffff !important;
    border-bottom: 2px solid #ffffff !important;
    transform: rotate(45deg);
    margin-left: 6px !important;
    margin-bottom: 2px !important;
    transition: transform 0.3s ease !important;
}

nav.cpel-switcher__nav .cpel-switcher__toggle--on a::after {
    transform: rotate(-135deg) translateY(-2px);
}

/* ==========================================================================
   ELEMENTOR MENU CART (SIDE CART) - DARK MODE
   ========================================================================== */
.wp-block-woocommerce-cart.alignwide {
    margin-inline: inherit !important;
}

.elementor-menu-cart__footer-buttons {
    display: flex;
    flex-direction: column;
}

.elementor-menu-cart__main {
    background-color: #1B1E1B !important;
    color: #ffffff !important;
    border-left: 1px solid rgba(255, 255, 255, 0.1) !important;
}

.elementor-menu-cart__close-button,
.elementor-menu-cart__close-button::before,
.elementor-menu-cart__close-button::after {
    color: #ffffff !important;
}

.elementor-menu-cart__product {
    border-bottom: 1px solid rgba(255, 255, 255, 0.1) !important;
}

.elementor-menu-cart__product-name a,
.elementor-menu-cart__product-price,
.elementor-menu-cart__subtotal strong,
.elementor-menu-cart__subtotal .amount,
.elementor-menu-cart__product-quantity {
    color: #ffffff !important;
}

.elementor-menu-cart__product-name a:hover {
    color: #FDC631 !important;
}

.elementor-menu-cart__product-remove a {
    color: rgba(255, 255, 255, 0.5) !important;
}

.elementor-menu-cart__product-remove a:hover {
    color: #ff4c4c !important;
}

.elementor-menu-cart__subtotal {
    border-top: 1px solid rgba(255, 255, 255, 0.1) !important;
    color: #ffffff !important;
}

/* Side Cart Footer Buttons */
.elementor-menu-cart__footer-buttons .elementor-button {
    border-radius: 100vmax !important;
    font-size: 1em;
    font-weight: 700 !important;
    text-transform: uppercase !important;
    padding: 12px 24px !important;
    transition: all 0.3s ease !important;
}

.elementor-menu-cart__footer-buttons .elementor-button--view-cart {
    background-color: transparent !important;
    border: 1px solid #ffffff !important;
    color: #ffffff !important;
}

.elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover {
    background-color: #ffffff !important;
    color: #000 !important;
}

.elementor-menu-cart__footer-buttons .elementor-button--checkout {
    background-color: #FDC631 !important;
    border: 1px solid #FDC631 !important;
    color: #000 !important;
}

.elementor-menu-cart__footer-buttons .elementor-button--checkout:hover {
    background-color: #fff !important;
    border-color: #fff !important;
    color: #000 !important;
}

/* transparent header */
.transparent-header {
    backdrop-filter: blur(100px);
    z-index: 100 !important;

    &>.e-con-inner {
        display: grid;
        grid-template-columns: auto 1fr auto;
    }

    & .elementor-widget-theme-site-logo img {
        min-width: 174px;
    }

    @media (width <=1024px) {
        .nav-container {
            display: none;
        }

        &>.e-con-inner {
            grid-template-columns: 1fr auto;
        }
    }
}

.burger-container {
    width: fit-content;

    .elementor-icon {
        cursor: pointer;
        display: flex !important;
        align-items: center;
        justify-content: center;
        overflow: hidden;
        padding: 5px;
    }

    & svg {
        display: none !important;
    }

    .hamburger {
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        width: 28px;
        height: 18px;
        position: relative;
        overflow: hidden;
        cursor: pointer;
    }

    .line {
        background-color: #fff;
        height: 2px;
        width: 100%;
        position: relative;
        pointer-events: none;
        transition: transform .8s cubic-bezier(.24, .43, .15, .97);
    }

    .line:nth-child(1) {
        transition-delay: 0s;
    }

    .line:nth-child(2) {
        transition-delay: 0.15s;
    }

    .line:nth-child(3) {
        transition-delay: 0.3s;
    }

    .line::before {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 2px;
        background-color: currentColor;
        transform: translate(-170%);
    }

    &:hover .line {
        transform: translate(170%);
    }
}

/* Sidebar menu */
.elementor-popup-modal:has(#sidebar-menu),
[id^="elementor-popup-modal-"]:has(#sidebar-menu),
#elementor-popup-modal-486,
#elementor-popup-modal-34556 {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    width: 100vw !important;
    width: 100dvw !important;
    height: 100vh !important;
    height: 100dvh !important;
    z-index: 999999 !important;

    & .dialog-widget-content,
    & .dialog-message {
        width: 100% !important;
        height: 100% !important;
        min-width: 100% !important;
        min-height: 100% !important;
        place-items: center;
        background-color: transparent;
        overflow: hidden;
    }

    & .elementor-location-popup,
    & #sidebar-menu {
        min-height: 100vh;
        max-height: 100vh;
        place-content: center;
        padding-inline: 0 !important;

        & a.elementor-item {
            line-height: 1.4;
            padding-bottom: 0;
            /*padding-inline: 0;*/
            overflow: visible !important;
            display: flex !important;
            align-items: center;
            position: relative;
            transition: transform 0.4s cubic-bezier(.65, .05, 0, 1);

            &::after {
                content: none !important;
            }

            & .hover-icon {
                position: absolute;
                left: -20px;
                width: 24px;
                height: 24px;
                opacity: 0;
                transform: scale(0);
                transition: opacity 0.4s cubic-bezier(.65, .05, 0, 1), transform 0.4s cubic-bezier(.65, .05, 0, 1);
                pointer-events: none;
            }

            /* Protección para futuras animaciones (SplitText) */
            & .line,
            & .word,
            & .letter,
            & .link-line {
                pointer-events: none;
                display: inline-block;
            }
        }

        /* 2. Disparador de hover estable (desde el LI para evitar parpadeos) */
        .elementor-nav-menu li:hover>a.elementor-item {
            transform: translateX(25px);

            & .hover-icon {
                opacity: 1;
                transform: scale(1);
            }
        }
    }

    & #sidebar-menu>.e-con-inner {
        display: grid;
        max-height: 100vh;
        place-content: stretch;
        place-items: stretch;

        @media (width >=2100px) {
            grid-template-columns: auto 1fr;
        }

        @media (width <=2100px) {
            grid-template-columns: auto 1fr;
        }

        @media (width <=1024px) {
            grid-template-columns: 1fr;
        }


        min-width: 100%;
        max-width: 100% !important;
        padding: 0 !important;
        gap: 0;

        &>.elementor-element {
            min-width: 100%;
        }

        & .elementor-nav-menu {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 1rem;

            @media (width <=768px) {
                grid-template-columns: 1fr;
            }
        }

        .elementor-nav-menu li {
            max-width: fit-content;
            font-size: 1.3175em;

            @media (width <=1024px) {
                font-size: 1.15em;
            }


            & .sub-menu {
                margin: 0 !important;
                padding: 0 1rem !important;
                /* Padding 0 al cerrar para evitar saltos de altura */
                min-width: 100% !important;

                /* 1. Limpiamos y neutralizamos el fade/display de Elementor JS */
                display: block !important;
                opacity: 1 !important;
                visibility: hidden;
                pointer-events: none;

                /* 2. Posicionamiento RELATIVO para desplazar los elementos inferiores (Acordeón) */
                position: relative !important;
                top: 16px !important;
                left: 0 !important;
                transform: none !important;

                /* 3. Animación de Acordeón y Cortina coordinada */
                max-height: 0;
                clip-path: inset(0% 0% 100% 0%);

                /* La visibilidad cambia al final al cerrar (delay), pero al principio al abrir (0s) */
                transition:
                    max-height 0.6s cubic-bezier(.65, .05, 0, 1),
                    clip-path 0.6s cubic-bezier(.65, .05, 0, 1),
                    padding 0.6s cubic-bezier(.65, .05, 0, 1),
                    visibility 0s 0.6s;

                overflow: hidden;

                & li {
                    opacity: 0;
                    transform: translateY(8px);
                    transition: opacity 0.4s ease, transform 0.4s ease;
                }
            }

            /* 4. Activación coordinada */
            &:hover>.sub-menu,
            &.elementor-active>.sub-menu {
                visibility: visible;
                pointer-events: auto;
                max-height: 600px;
                /* Valor suficiente para el contenido */
                padding: 1rem !important;
                clip-path: inset(0% 0% 0% 0%);

                /* Reset de delay de visibilidad al abrir */
                transition:
                    max-height 0.6s cubic-bezier(.65, .05, 0, 1),
                    clip-path 0.6s cubic-bezier(.65, .05, 0, 1),
                    padding 0.6s cubic-bezier(.65, .05, 0, 1),
                    visibility 0s 0s;

                & li {
                    opacity: 1;
                    transform: translateY(0);

                    /* Stagger suave manual */
                    &:nth-child(1) {
                        transition-delay: 0.1s;
                    }

                    &:nth-child(2) {
                        transition-delay: 0.15s;
                    }

                    &:nth-child(3) {
                        transition-delay: 0.2s;
                    }

                    &:nth-child(4) {
                        transition-delay: 0.25s;
                    }
                }
            }
        }

        & .images-container {
            position: relative;
            display: grid;
            overflow: hidden;
            pointer-events: none;
            width: 100%;
            height: 100%;
            max-height: 100vh;

            & .elementor-widget-image {
                grid-area: 1 / 1 / 2 / 2;
                opacity: 0;
                visibility: hidden;
                width: 100%;
                height: 100%;
                margin: 0 !important;
                padding: 0 !important;

                & .elementor-widget-container,
                & figure,
                & a {
                    display: block;
                    width: 100%;
                    height: 100%;
                    margin: 0 !important;
                    padding: 0 !important;
                }

                & img {
                    width: 100% !important;
                    object-fit: cover;
                    object-position: bottom;

                    @media (height >=1200px) {
                        min-height: 100%;
                    }
                }
            }

            @media (width <=1024px) {
                display: none;

                & .elementor-widget-image {
                    display: none;
                }
            }
        }
    }

    & .nav-container {
        place-content: center !important;
        background: linear-gradient(0deg, rgba(0, 0, 0, 0.70) 0%, rgba(0, 0, 0, 0.70) 100%), rgba(255, 254, 254, 0.23);
        backdrop-filter: blur(13px);
        padding-inline: 3em;

        @media (width <=768px) {
            padding-inline: 1.5em;
        }

        @media (width <=480px) {
            padding-inline: 1em;
        }

    }

    & a.dialog-close-button {
        min-width: 50px;
        min-height: 50px;
        background-color: black;
        border-radius: 100vmax;
        top: 46px;
        right: 46px;
        display: flex !important;
        align-items: center;
        justify-content: center;
        overflow: hidden;
        opacity: 0;
        visibility: hidden;

        @media (width <=768px) {
            top: 24px;
            right: 24px;
        }
    }

    & svg.eicon-close {
        display: none !important;
    }

    .close-wrapper {
        height: 28px;
        width: 28px;
        overflow: hidden;
        position: relative;
    }

    .line-wrapper {
        height: 100%;
        width: 100%;
        top: 0;
        left: 0;
        overflow: hidden;
        position: absolute;
        transform-origin: center;
    }

    .line-wrapper:first-child {
        transform: rotate(135deg);
    }

    .line-wrapper:last-child {
        transform: rotate(-135deg);
    }

    .line {
        background-color: #fff;
        height: 2px;
        width: 100%;
        left: 50%;
        top: 50%;
        position: absolute;
        transform: translate(-50%, -50%);
        will-change: transform;
    }

    .line:before {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background-color: #fff;
    }

    /* Línea 1: Desliza hacia la derecha (+200%), su :before entra desde la izquierda (-200%) */
    .line.line-1 {
        transition: transform .8s cubic-bezier(.24, .43, .15, .97) 0.1s;
    }

    .line.line-1:before {
        transform: translate(-200%, 0);
        /* Mantenemos el eje Y en 0 relativo al padre ya centrado */
    }

    /* Línea 2: Desliza hacia la izquierda (-200%), su :before entra desde la derecha (+200%) */
    .line.line-2 {
        transition: transform .8s cubic-bezier(.24, .43, .15, .97) 0s;
    }

    .line.line-2:before {
        transform: translate(200%, 0);
    }

    & a.dialog-close-button:hover .line.line-1 {
        transform: translate(150%, -50%);
        /* -50% + 200% = 150% */
    }

    & a.dialog-close-button:hover .line.line-2 {
        transform: translate(-250%, -50%);
        /* -50% - 200% = -250% */
    }
}

/* Header settings. End */

/* Footer settings. */
.footer {
    & .footer-logo a {
        width: 100%;
    }

    & .footer-grid {
        grid-template-columns: repeat(3, 1fr);

        @media (width<=768px) {
            grid-template-columns: repeat(2, 1fr);
        }
    }

    & .social .elementor-icon {
        max-width: fit-content;
    }

    & .cta {
        @media (width<=601px) {
            & .elementor-widget-theme-site-logo {
                text-align: center;

                & a,
                & a img {
                    max-width: 310px;
                    width: 100%;
                    margin: auto;
                    text-align: center;
                }
            }
        }
    }

    .elementor-hidden-mobile_extra {
        @media (width<=768px) {
            display: none;
        }
    }

    & .copyright,
    & .design {
        width: 100%;
        height: 100%;
        display: flex;
        align-items: flex-end;
        gap: 0.5rem;

        & p {
            margin: 0;
        }

        & a {
            color: #fff;
            max-width: 100px;
            width: 100%;
            margin: 0;
            padding: 0;
            margin-top: -6px;

            & img {
                filter: drop-shadow(6px 6px 10px #ffffff2b);
            }
        }
    }

    & .design {
        @media (width<=768px) {
            place-items: end;
            place-content: end;
        }
    }

    & .copyright {
        @media (width<=601px) {
            flex-wrap: wrap;
            justify-content: center;
        }

        &>div {
            text-align: center;
            place-items: center;
            place-content: center;

            &>p {
                margin-top: 4px;
            }
        }
    }

    & .mobile-nav {
        grid-column: span 2;

        & .mobile-nav-links {
            padding-inline: 1rem;
            margin-bottom: 1.25rem;

            & a {
                font-size: 0.9em;
                text-transform: uppercase;
                font-weight: 400;
                margin: 0;
                padding: 0;
            }
        }

        & .e-n-accordion-item:not(:last-child) {
            border-bottom: 1px solid #FDC63114;
        }

        /* RESET: Desactivar estilos nativos de Elementor que interfieren con GSAP */
        & .e-n-accordion-item>.gsap-accordion-wrapper {
            border: 0;
            transition: none !important;
            overflow: hidden;
            min-height: 0 !important;
        }

        /* Forzamos el estado oculto SOLO cuando NO está abierto */
        & .e-n-accordion-item:not([open])>.gsap-accordion-wrapper {
            height: 0 !important;
            opacity: 0 !important;
            display: none !important;
            visibility: hidden !important;
        }

        /* Cuando está abierto, dejamos que GSAP mande sobre el inline */
        & .e-n-accordion-item[open]>.gsap-accordion-wrapper {
            display: block !important;
            visibility: visible !important;
        }

        & .gsap-accordion-wrapped {
            padding: 0;
        }

        & summary {
            border: 0;
            padding: 1rem 0;
            justify-content: space-between;

            & .e-n-accordion-item-title-text {
                color: var(--e-global-color-text);
                text-transform: uppercase;
                font-weight: 600;
            }

            & .e-n-accordion-item-title-icon {
                max-width: fit-content;
                display: grid;
                align-items: center;
                justify-content: center;

                & .e-opened,
                & .e-closed {
                    transition: none !important;
                    grid-area: 1 / 1;
                    /* Apila uno sobre otro sin perder dimensiones */
                    display: flex;
                    align-items: center;
                    justify-content: center;
                }

                /* Por defecto, icono cerrado es visible, abierto oculto, PERO se renderiza en DOM */
                & .e-opened {
                    opacity: 0;
                }

                & .e-closed {
                    opacity: 1;
                }

                & * {
                    max-width: 20px;
                }
            }

            & .e-n-accordion-item-title-icon * {
                fill: #fff;
            }
        }
    }

    @media (width<=600px) {
        & .footer-grid {
            grid-template-columns: 1fr !important;
        }
    }
}

/* Footer settings. End */

/* Gradient Text Utilities */
.gradient-text {
    background: linear-gradient(to right, #ffffff 0%, #C5AE79 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent;
}

/* Fix for SplitText and Gradient Text */
#content .osmo-gradient-fix,
#content .gradient-text h1,
#content .gradient-text h2,
#content .gradient-text h3,
#content .gradient-text h4,
#content .gradient-text h5,
#content .gradient-text h6,
#content .word,
#content .letter {
    background: inherit !important;
    background-image: inherit !important;
    background-attachment: inherit !important;
    background-size: inherit !important;
    background-clip: text !important;
    -webkit-background-clip: text !important;
    display: inline-block;
}

#content .line {
    background: inherit !important;
    background-image: inherit !important;
    background-attachment: inherit !important;
    background-size: inherit !important;
    background-clip: text !important;
    -webkit-background-clip: text !important;
}

.word {
    display: inline-block !important;
    white-space: nowrap !important;
}

.letter {
    display: inline-block !important;
}

/* Solo aplicar transparencia forzada si el padre la tiene */
.gradient-text h1,
.gradient-text h2,
.gradient-text h3,
.gradient-text h4,
.gradient-text h5,
.gradient-text h6,
.gradient-text .line,
.gradient-text .word,
.gradient-text .letter,
.osmo-gradient-fix,
.osmo-gradient-fix .line,
.osmo-gradient-fix .word,
.osmo-gradient-fix .letter {
    -webkit-text-fill-color: transparent !important;
    color: transparent !important;
}

/* General settings. End */

/* Page styles */
/* Home page */

/* Flair Custom Cursor */
.custom-cursor.is-active {
    display: flex;
}

.home-hero a,
.home-hero button {
    cursor: pointer !important;
}

.custom-cursor {
    position: fixed;
    top: 0;
    left: 0;
    width: 3.5rem;
    height: 3.5rem;
    pointer-events: none;
    z-index: 9998;
    display: none;
    align-items: center;
    justify-content: center;
    mix-blend-mode: normal;
    transform: translate(-50%, -50%);
    color: #ffffff;

    & .cursor-bg {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: rgba(10, 10, 10, 0.4);
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
        border: 1px solid rgba(255, 255, 255, 0.1);
        border-radius: 50%;
        will-change: transform;
        transform-origin: center center;
        transition: background 0.3s ease, border-color 0.3s ease;
    }

    & svg {
        width: 1.5rem;
        height: 1.5rem;
        display: block;
        position: relative;
        z-index: 2;
        color: currentColor;
    }

    & svg path {
        fill: none;
        stroke: currentColor;
        stroke-width: 1.5;
        stroke-linecap: round;
        stroke-linejoin: round;
    }
}

/* Flair Custom Cursor. End */

.home-hero {
    position: relative;
    overflow: hidden;
    transition: unset !important;

    &:before {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        z-index: 1;
        pointer-events: none;
        background-color: transparent;
        background: linear-gradient(190deg, rgba(0, 0, 0, 0.00) -10.05%, #080808 79.62%);
        background-size: auto, 100% 100%;
        background-position: 0% 0%, 0% 0%;
        background-repeat: repeat, no-repeat;
    }

    & h1,
    & .elementor-widget-button {
        z-index: 5;
    }

    & .elementor-widget-video {
        position: absolute !important;
        top: 0 !important;
        left: 0 !important;
        width: 100% !important;
        height: 100% !important;
        z-index: 0 !important;
        margin: 0 !important;
        padding: 0 !important;
        pointer-events: none !important;

        & .elementor-widget-container,
        & .elementor-wrapper,
        & .elementor-video {
            position: absolute !important;
            top: 0 !important;
            left: 0 !important;
            width: 100% !important;
            height: 100% !important;
            object-fit: cover !important;
            margin: 0 !important;
            padding: 0 !important;
            pointer-events: none !important;
        }
    }
}

/* Video player */
#elementor-popup-modal-532,
#elementor-popup-modal-2328 {
    background-color: #1a1a1a !important;
    justify-content: center;
    align-items: center;
    pointer-events: all;
    clip-path: inset(100% 0% 0% 0%);

    & #video-player,
    & #gallery-slider {
        width: 100%;
        max-width: 100%;
        padding: 0 !important;
    }

    & .dialog-message {
        padding: 0 !important;
        background: transparent !important;
        min-width: 80vw;
        object-fit: cover;
        min-height: 100%;
    }

    & .dialog-close-button {
        display: none !important;
    }

}

/* Video player. End */
/* Marquee */
.marquee-container,
.first-row,
.second-row,
.marquee-logos {
    overflow: hidden !important;
    flex-wrap: nowrap !important;
    display: flex !important;
    width: 100% !important;
    user-select: none !important;
    -webkit-user-select: none !important;

    & .gsap-slider-track {
        display: flex !important;
        flex-wrap: nowrap !important;
        align-items: center !important;
        gap: 3rem !important;
        width: max-content !important;
        max-width: none !important;
    }

    & .marquee-item,
    & .elementor-widget-image,
    & .draggable-slide-item,
    & .carousel-card-item,
    & .gsap-slide-cloned {
        flex: 0 0 auto !important;
        flex-shrink: 0 !important;
        width: max-content !important;
        max-width: none !important;
        display: inline-flex !important;
        align-items: center !important;

        & .e-con-inner {
            display: flex !important;
            flex-wrap: nowrap !important;
            gap: 2.5rem !important;
            align-items: center !important;
            width: max-content !important;
            max-width: none !important;

            & .elementor-widget-text-editor,
            & .elementor-widget-container,
            & .pulse,
            & .elementor-widget-html {
                white-space: nowrap !important;
                width: auto !important;
                max-width: none !important;
                flex: 0 0 auto !important;
                flex-shrink: 0 !important;
            }
        }

        & p,
        & span,
        & a,
        & div,
        & h2,
        & h3 {
            margin: 0 !important;
            white-space: nowrap !important;
            word-break: keep-all !important;
            overflow: visible !important;
            max-width: none !important;
        }

        & svg {
            flex-shrink: 0 !important;
            display: block !important;
        }
    }
}

.marquee-logos {
    padding: 80px 0 80px;

    & .marquee-item,
    & .elementor-widget-image,
    & .marquee-item .e-con-inner {
        max-width: 200px !important;
    }
}

/* Marquee. End */

/* Scroll images */

#content .scroll-images {
    position: relative;
    /*
    padding-top: 40vh;
    padding-bottom: 40vh;
    */
    z-index: 10;

    & .text-container {
        /* position: sticky;
        top: 50dvh;
        transform: translateY(-50%);*/
        z-index: 10;
        width: 100%;
        margin: auto;
        display: flex;
        justify-content: center;
        pointer-events: none;

        & h2 {
            line-height: 0.8;
            font-weight: 800;
            text-align: center;
            max-width: var(--size-container);
            margin: auto;
            font-size: 5.5em;
            text-wrap: balance;

            @media (width <=768px) {
                font-size: 2em;
            }
        }
    }

    & .images-container {
        position: relative;
    }

    & .elementor-widget-image {
        position: absolute;
        max-width: 10em;
        z-index: 1;

        @media (width <=1024px) {
            max-width: 5em;
        }
    }

    & .elementor-widget-image:nth-child(1) {
        top: 2%;
        left: 13%;
    }

    & .elementor-widget-image:nth-child(2) {
        top: 8%;
        left: 28%;
    }

    & .elementor-widget-image:nth-child(3) {
        top: 4%;
        left: 50%;
    }

    & .elementor-widget-image:nth-child(4) {
        top: 4%;
        right: 13%;
    }

    & .elementor-widget-image:nth-child(5) {
        top: 6%;
        right: 24%;
    }

    & .elementor-widget-image:nth-child(6) {
        top: 32%;
        right: 2%;
    }

    & .elementor-widget-image:nth-child(7) {
        top: 31%;
        left: 18%;
    }

    & .elementor-widget-image:nth-child(8) {
        top: 59%;
        right: 3%;
    }

    & .elementor-widget-image:nth-child(9) {
        bottom: 5%;
        left: 11%;
    }

    & .elementor-widget-image:nth-child(10) {
        bottom: 13%;
        left: 25%;
    }

    & .elementor-widget-image:nth-child(11) {
        bottom: -2%;
        left: 40%;
    }

    & .elementor-widget-image:nth-child(12) {
        bottom: 8%;
        right: 34%;
    }

    /* Ajustes específicos para móviles */

}

/* Scroll images. End*/

#row-radial-steps {
    min-height: 800px;
    transition: unset !important;
    overflow-x: clip !important;
    overflow-y: visible !important;
    transform: none !important;
    filter: none !important;
    perspective: none !important;
}

@media (width <=768px) {
    #row-radial-steps {
        height: auto !important;
        min-height: 800px !important;
    }

    #row-radial-steps .elementor-container,
    #row-radial-steps .elementor-column,
    #row-radial-steps .elementor-widget-wrap {
        height: auto !important;
        min-height: auto !important;
    }
}

#radial-steps,
#radial-steps * {
    transition: none !important;
}

#radial-steps {
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden !important;
    will-change: transform;
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;

    & .radial-wrapper,
    & .radial-wrapper svg,
    & .steps-wrapper {
        will-change: transform;
        backface-visibility: hidden;
        -webkit-backface-visibility: hidden;
    }

    & .elementor-widget-container {
        height: 100% !important;
        min-height: 100% !important;
    }

    @media (width <=768px) {
        height: 800px !important;
    }

    & .elementor-widget-html {
        width: 100%;
        height: 100%;
    }

    & .steps-container {
        position: relative;
        width: 100%;
        height: 100%;
        display: flex;
        align-items: center;
        justify-content: center;
        overflow: visible;
    }

    & .radial-wrapper {
        position: absolute;
        width: 180vw;
        height: 100%;
        min-width: 950px;
        min-height: 950px;
        max-width: 1600px;
        max-height: 177vh;
        top: 50%;
        left: 50%;
        transform: translateX(-50%);
        display: flex;
        align-items: center;
        justify-content: center;
        z-index: 1;

        @media (width <=768px) {
            min-width: 750px;
            min-height: 750px;
            height: 100%;
            top: 20%;
        }

        & svg {
            width: 100%;
            height: auto;
            transform-origin: center center;
            will-change: transform;
        }
    }

    & .steps-wrapper {
        position: relative;
        z-index: 10;
        width: 100%;
        max-width: 600px;
        height: 800px;
        max-height: 800px;
        display: flex;
        align-items: center;
        justify-content: center;
        margin-top: 0;

        @media (width <=768px) {
            height: 800px;
            max-height: 800px;
            max-width: 100%;
            padding: 0 1.5rem;
        }
    }

    & .step-content {
        position: absolute;
        top: 60%;
        left: 50%;
        transform: translate(-50%, -50%);
        width: 100%;
        opacity: 0;
        visibility: hidden;
        pointer-events: none;
        text-align: center;
        will-change: opacity, transform;

        @media (width <=768px) {
            top: 55%;
            padding: 0 1rem;
        }

        &.active {
            visibility: visible;
            pointer-events: all;
            opacity: 1;
        }

        & h3 {
            margin-bottom: 1rem;
            color: #fff;
            font-size: 2em;
            position: relative;
            text-transform: none;

            /* Aseguramos que el efecto de revelado funcione en cada línea individualmente */
            /* sin cortar elementos decorativos externos */
            & .line {
                overflow: hidden;
            }

            @media (width <=768px) {
                font-size: 28px;
                margin-bottom: 1rem;
            }
        }

        & p {
            font-size: 1rem;
            max-width: 480px;
            margin: 0 auto 2.5rem;
            line-height: 1.6;
            color: #efefef;

            @media (width <=768px) {
                font-size: 1rem;
                margin-bottom: 1.5rem;
            }
        }

        & .elementor-button {
            width: auto;
            min-width: 300px;
            background: transparent !important;
            border: 1px solid #FDC631 !important;
            color: #FDC631 !important;
            border-radius: 50px;
            padding: 15px 35px;
            transition: all 0.3s ease;
            margin: 0 auto;
            display: inline-block;
            overflow: hidden !important;
            vertical-align: middle;

            &:hover {
                background: #FDC631 !important;
                color: #000 !important;
            }

            @media (width <=768px) {
                min-width: 200px;
                padding: 12px 25px;
            }
        }
    }
}

/* Circular slider */
.circular-heading {
    position: absolute;
    z-index: 1000;
}

.circular-slider {
    overflow: visible;
    cursor: grab;
    user-select: none;
    -webkit-user-select: none;

    & .e-con-inner {
        flex-direction: row;
        min-height: 700px;

        @media (width <=768px) {
            min-height: 480px;
        }

        @media (width <=425px) {
            min-height: 180px;
        }
    }

    & .slide-item {
        position: relative;
        height: 766px;
        overflow: hidden;

        &::after {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: linear-gradient(180deg, rgba(0, 0, 0, 0.85) 0.52%, rgba(0, 0, 0, 0.00) 45.69%),
                linear-gradient(180deg, rgba(0, 0, 0, 0.00) 46.74%, #0A0A0A 91.91%);
            z-index: 1;
            opacity: var(--slide-overlay-opacity, 0.5);
            will-change: opacity;
            pointer-events: none;
            border-radius: inherit;
        }

        @media (width <=768px) {
            height: 500px;
        }

        @media (width <=425px) {
            height: 240px;
        }

        /* BLOQUEO DE FANTASMAS: Evita que CSS Engine anime los saltos lógicos de GSAP */
        transition: none !important;

        & * {
            transition: none !important;
        }

        & .elementor-widget-heading {
            position: absolute;
            bottom: 64px;
            left: 50%;
            transform: translateX(-50%);
            z-index: 10;
            width: 100%;
            text-align: center;
            overflow: hidden;

            @media (width <=425px) {
                bottom: 24px;
            }

            /* Efecto Caja: oculta el texto cuando baja */
            & .elementor-heading-title {
                font-family: 'LEMON MILK', sans-serif !important;
                color: #ffffff !important;
                text-transform: uppercase !important;
                display: block;
                will-change: transform;
                line-height: normal;
                padding-inline: 1rem;

                @media (width <=425px) {
                    font-size: 1.25rem !important;
                    /* clamp to smaller size for 170px width */
                    padding: 0 10px;
                    word-break: break-word;
                    /* allow breaking if extremely long */
                }
            }
        }

        & .elementor-widget-image {
            height: 100%;

            & img {
                position: absolute;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
                object-fit: cover;
                z-index: 0;
                filter: brightness(var(--slide-brightness, 1));
                will-change: filter;
            }
        }
    }
}

/* Form row */
.elementor-element.form-row h2 {
    max-width: 700px;
}

.contact-form.contacto,
.contact-form.contact,
.contact-form.formaciones,
.contact-form.reservas {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;

    & .form-row {
        display: flex;
        flex-direction: column;


        & label {
            font-weight: 500;
            color: #ffffff;
            visibility: hidden;
            height: 0;
        }

        &.select label,
        & label[for="cv"] {
            height: auto;
            visibility: visible;
            margin-bottom: 0.5rem;
        }

        & .wpcf7-list-item {
            margin: 0;
        }

        & .wpcf7-acceptance label {
            visibility: visible;
            height: auto;
            max-width: fit-content;

            & input[type="checkbox"] {
                max-width: fit-content;
                accent-color: #FDC631;
                margin-right: 0.5rem;
                min-width: 18px;
                min-height: 18px;
                vertical-align: middle;
            }

            & a {
                color: inherit;
                text-decoration: underline;
                text-underline-offset: 4px;
            }
        }

        & .wpcf7-submit {
            max-width: fit-content;
            align-self: center;
            /* Centrado horizontal en flex column */
            margin-top: 1rem;
        }



        & textarea {
            height: auto;
            max-height: 160px;
        }

        & select {
            appearance: none;
            -webkit-appearance: none;
            -moz-appearance: none;
            background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23FDC631' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E") !important;
            background-repeat: no-repeat !important;
            background-size: 16px !important;
            background-position: right 8px center !important;
            padding-right: 28px !important;
            cursor: pointer;
        }

        & input:not([type="submit"]),
        & textarea,
        & select {
            background-color: transparent !important;
            border: none;
            border-bottom: 1px solid #FDC631;
            color: #ffffff;
            padding: 12px;
            border-radius: 0;
            width: 100%;
            padding-inline: 0;

            & option {
                background-color: #222;
                color: #fff;
            }

            /* Placeholder styling */
            &::placeholder {
                color: #fff;
                opacity: 1;
            }

            &::-webkit-input-placeholder {
                color: #fff;
                opacity: 1;
            }

            &::-moz-placeholder {
                color: #fff;
                opacity: 1;
            }

            &:-ms-input-placeholder {
                color: #fff;
                opacity: 1;
            }

            &:focus {
                outline: none;
            }
        }
    }

    @media (width<=425px) {
        &.formaciones .form-row.button-row button {
            font-size: 1em;
        }
    }
}

/* Form row. End */

/* Recognition grid */
.recognition-grid {
    & .e-con-inner {
        display: grid;
        grid-template-columns: repeat(6, 1fr);
        gap: 2.5rem;

        @media (width<=767px) {
            grid-template-columns: repeat(2, 1fr);
            gap: 1em;
        }
    }

    & .elementor-widget-heading {
        grid-column: span 2;
    }
}

/* recognition accordion */
#content .recognition-accordion {
    gap: 0 !important;
    position: relative;
    /* Para la cortina compartida */

    & .acc-curtain {
        position: absolute;
        left: 0;
        width: 100%;
        background-color: #080808;
        transform: scaleY(0);
        z-index: 0;
        transform-origin: top;
        pointer-events: none;
        will-change: transform, top, height;
    }

    /* Lógica de Foco en Imágenes (Sibling Hover) */
    &:hover .recognition-award img {
        filter: saturate(0);
        opacity: 0.5;
    }

    & .acc-item {
        position: relative;
        border-top: 1px solid #1f212436;
        padding: 1rem 1.5rem 0;
        transition: border-color 0.4s ease;
        width: 100%;
        z-index: 1;

        &:hover .recognition-award img {
            filter: saturate(1) !important;
            opacity: 1 !important;
        }

        &>.elementor-element {
            gap: 1rem;
        }

        /* Por encima de la cortina */

        &:first-child {
            border-top: none;
        }

        &:last-child {
            border-bottom: none;
        }

        &.is-active {
            border-color: #1f212436;
        }

        & .acc-curtain {
            position: absolute;
            top: 0;
            left: -10vw;
            width: 120vw;
            height: 100%;
            background: #080808;
            pointer-events: none;
            z-index: 0;
            transform: scaleY(0);
            will-change: transform, height, y;
        }

        & .hover-icon {
            position: absolute;
            left: 1rem;
            top: 66px;
            transform: scale(0);
            width: 24px;
            height: 24px;
            opacity: 0;
            transition: all 0.4s cubic-bezier(.65, .05, 0, 1);
            z-index: 3;
            pointer-events: none;
        }

        &:hover>.hover-icon {
            opacity: 1;
            transform: scale(1);
        }

        & .elementor-widget-heading {
            display: flex;
            justify-content: space-between;
            place-items: center;
            gap: 1rem;
            position: relative;
            z-index: 2;

            & .elementor-widget-container {
                display: flex !important;
                flex-direction: row !important;
                flex-wrap: nowrap !important;
                justify-content: space-between !important;
                align-items: center !important;
                gap: 2rem;
                width: 100% !important;
                overflow: visible !important;
            }
        }

        &:hover h3 {
            transform: translateX(32px);
        }

        & .recognition-award img {
            transition: filter 0.6s ease, opacity 0.6s ease;
        }

        & h3 {
            text-transform: unset !important;
            margin: 0 !important;
            font-weight: 600;

            letter-spacing: 1.5px;
            transition: color 0.4s ease, transform 0.4s cubic-bezier(.65, .05, 0, 1);
            display: inline-block !important;
            width: auto !important;
        }
    }

    & .gsap-acc-wrapper {
        margin: 1rem 0;
    }

    & .elementor-widget-text-editor p {
        font-size: 1.45em;
        margin: 0;
        text-wrap: balance;
        padding-bottom: 1rem;
        transition: color 0.4s ease;

        @media (width <=767px) {
            font-size: 1.25em;
        }
    }
}

.scroll-images,
.scroll-images * {
    transition: none !important;
}

.scroll-images {
    will-change: transform;

    & video {
        min-height: 100svh;
    }
}

.scroll-images .elementor-widget-image {
    will-change: transform;
}

/* Home page. End */

/* About page. */
.historia .content {
    @media(width>=768.9px) {
        flex-wrap: nowrap;
    }

    @media (width<=768px) {
        gap: 1.5rem;

        & h3 {
            font-size: 0.8em;
        }

        .item {
            gap: 0.5rem;
        }
    }

    @media (width<=500px) {
        .images {
            min-height: 200px;
        }

        & h3 {
            font-size: 1.5em;
        }
    }
}

.historia .images {
    position: relative;
    overflow: hidden;

    & .elementor-widget-image {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        opacity: 0;

        & img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }

        &.image-2 img,
        &.image-3 img {
            object-position: 0% 20%;
        }
    }
}

.historia .items-container .item {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    padding: 1.5rem 0.5rem;
    cursor: pointer;
    position: relative;
    --item-border-width: 0%;

    /* Línea base que se anima de width 0 a 100% al entrar en pantalla */
    &::after {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        width: var(--item-border-width, 0%);
        height: 1px;
        background-color: #bdbdbd;
        z-index: 1;
    }

    /* Línea destacada para el hover */
    &::before {
        content: "";
        position: absolute;
        top: -1px;
        left: 0;
        width: 0%;
        height: 3px;
        background-color: #000;
        transition: width 0.8s cubic-bezier(0.625, 0.05, 0, 1);
        z-index: 2;
    }

    &:hover::before {
        width: 100%;
    }

    &:last-child {
        border-bottom: 1px solid #bdbdbd;
    }

    & .elementor-widget-heading {
        width: 100%;
    }

    & p {
        margin-right: 4em;
        margin-bottom: 0;
        width: 100%;
    }
}

.row-text-mask {
    /* Para que no haya conflictos con Elementor y GSAP pinned */
    transition: unset !important;
}

.text-scroll-mask {
    font-size: 1.3em;
    max-width: 93% !important;

    & p {
        margin-bottom: 0.85em;

        &:last-child {
            margin-bottom: 0;
        }
    }
}

@media (width <=1024px) {

    .row-text-mask .text-scroll-mask,
    .row-text-mask .text-scroll-mask * {
        color: #C5AE79 !important;
    }
}

#content .valores {

    @media (width<=425px) {
        padding-top: 14em;
    }

    & h2 {}

    &>.e-con-inner {
        display: grid;
        grid-template-columns: repeat(4, 1fr);
        gap: 4rem;

        @media (width <=991px) {
            grid-template-columns: repeat(2, 1fr);
            gap: 2rem;
        }

        @media (width <=768px) {
            grid-template-columns: 1fr;
            gap: 2rem;
        }

        & .text {
            grid-column: span 4;

            @media (width <=768px) {
                grid-column: 1;
            }
        }

        & .card {
            width: 100%;

            &:hover .icon {
                transform: rotate(60deg);
            }
        }

        & .icon {
            width: 100%;
            max-width: 32px;
            transform-origin: center center;
            transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
        }
    }
}

#content .areas {
    & .areas-container {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        min-height: 70vh;
        gap: 2rem;

        &:hover .area-item:not(:hover) {
            filter: blur(5px);
            opacity: 0.7;
        }

        & .area-item {
            min-height: 100%;
            transition: filter 0.4s ease, opacity 0.4s ease;
        }

        & .area-item::before {
            background-image: linear-gradient(180deg, rgb(0 0 0 / 0%) 50%, rgb(0 0 0) 70%);
        }

        @media (width <=959px) {
            grid-template-columns: 1fr;
            gap: 1rem;

            & .area-item {
                min-height: 16em;
            }
        }
    }
}

/* About page. End */

/* Responsabilidad page */
.hero::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
    pointer-events: none;
    background-color: transparent;
    background: linear-gradient(190deg, rgba(0, 0, 0, 0.00) -10.05%, #080808 79.62%);
    background-size: auto, 100% 100%;
    background-position: 0% 0%, 0% 0%;
    background-repeat: repeat, no-repeat;
}


html .gradient-cta {
    &::before {
        content: '';
        background: linear-gradient(180deg, #0A0A0A 0%, rgba(0, 0, 0, 0.00) 5.62%, rgba(0, 0, 0, 0.00) 94.38%, #0A0A0A 100%);
        position: absolute;
        inset: 0;
    }
}




/* Servicios VIP */
.row-scrolling-cards {
    transition: unset !important;
    /* Evita que Elementor añada estilos de transición que choquen con GSAP ScrollTrigger */

    &>.e-con-inner {
        display: grid;
        grid-template-columns: 1fr 500px;

        @media (width <=1440px) {
            grid-template-columns: auto 35%;
        }

        @media (width <=991px) {
            grid-template-columns: 1fr;
        }
    }

    & .cards-container {
        position: relative;
        display: grid;
        place-items: center;
        min-height: 410px;
        min-width: 100%;

        @media (width <=768px) {
            min-height: 310px;
        }

        & .card-item {
            position: absolute;
            width: 100%;
            height: 100%;
            display: flex;
            will-change: transform, opacity;

            @media (width <=991px) {
                max-width: 30em;
                left: 0;
                right: 0;
                margin-inline: auto;
            }

            @media (width <=768px) {
                max-width: 90%;
                flex-wrap: nowrap;
            }

            &:nth-child(1) {
                z-index: 6;
                transform: rotate(-3.803deg);
                bottom: -50px;
            }

            &:nth-child(2) {
                z-index: 5;
                transform: rotate(-16.976deg);
                right: 10px;
            }

            &:nth-child(3) {
                z-index: 4;
                transform: rotate(2.5deg);
            }

            &:nth-child(4) {
                z-index: 3;
                transform: rotate(-4deg);
            }

            &:nth-child(5) {
                z-index: 2;
                transform: rotate(3deg);
            }

            &:nth-child(6) {
                z-index: 1;
                transform: rotate(-1.5deg);
            }
        }
    }

    &.ingenieria .card-item {
        height: fit-content;
    }
}

/* ========================================================================== */
/* GRID GALLERY (Mosaic Layout)                                               */
/* ========================================================================== */

.grid-gallery,
.grid-gallery>.e-con-inner {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)) !important;
    grid-auto-rows: 200px;
    grid-auto-flow: dense;
    gap: 10px;
    padding: 10px 0;
}

/* Base style for the image widgets */
.grid-gallery .elementor-widget-image {
    width: 100%;
    height: 100%;
    margin: 0;
    overflow: hidden;
    will-change: transform, opacity;
    /* Optimización para animaciones GSAP */
}

.grid-gallery .elementor-widget-image .elementor-widget-container,
.grid-gallery .elementor-widget-image .elementor-widget-container a,
.grid-gallery .elementor-widget-image img {
    height: 100%;
    width: 100%;
    object-fit: cover;
}

/* Hover effect */
.grid-gallery .elementor-widget-image img {
    transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1) !important;
}

.grid-gallery .elementor-widget-image:hover img {
    transform: scale(1.05) !important;
}

/* Automatic Mosaic Logic (Organic layout) */
/* Every 3rd image is tall */
.grid-gallery .elementor-widget-image:nth-child(3n) {
    grid-row: span 2;
}

/* Every 5th image is wide */
.grid-gallery .elementor-widget-image:nth-child(5n) {
    grid-column: span 2;
}

/* Specific big ones to break the pattern */
.grid-gallery .elementor-widget-image:nth-child(7n) {
    grid-column: span 2;
    grid-row: span 2;
}

/* Responsive adjustments */
@media (max-width: 1024px) {

    .grid-gallery,
    .grid-gallery>.e-con-inner {
        grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)) !important;
        grid-auto-rows: 160px !important;
    }
}

@media (max-width: 767px) {

    .grid-gallery,
    .grid-gallery>.e-con-inner {
        grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)) !important;
        grid-auto-rows: 130px !important;
        gap: 5px !important;
    }

    /* On mobile, limit spans to avoid weird gaps */
    .grid-gallery .elementor-widget-image:nth-child(n) {
        grid-column: span 1 !important;
    }

    .grid-gallery .elementor-widget-image:nth-child(3n) {
        grid-row: span 2 !important;
    }
}

/* ========================================================================== */
/* GALLERY LIGHTBOX (GSAP Powered)                                            */
/* ========================================================================== */

#gallery-lightbox {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    z-index: 9999999;
    display: none;
    align-items: center;
    justify-content: center;
    background-color: transparent;
    overflow: hidden;
}

.lightbox-curtain {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #0A0A0A;
    clip-path: inset(100% 0% 0% 0%);
    z-index: 1;
}

.lightbox-content {
    position: relative;
    z-index: 2;
    width: 100%;
    height: 100%;
    opacity: 0;
    display: flex;
    flex-direction: column;
}

.lightbox-slider {
    flex: 1;
    display: flex;
    position: relative;
    width: 100%;
}

.lightbox-slide {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 60px;
    opacity: 0;
    visibility: hidden;
    user-select: none;
}

.lightbox-slide img {
    max-width: 90%;
    max-height: 85vh;
    object-fit: contain;
    box-shadow: 0 20px 50px rgba(0, 0, 0, 0.5);
}

/* Controls */
.lightbox-close {
    position: absolute;
    top: 30px;
    right: 30px;
    width: 50px;
    height: 50px;
    background: rgba(255, 255, 255, 0.05);
    backdrop-filter: blur(10px);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    z-index: 10;
    color: #fff;
    transition: background 0.3s ease;
}

.lightbox-close:hover {
    background: rgba(255, 255, 255, 0.15);
}

.lightbox-nav {
    position: absolute;
    bottom: 40px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    gap: 30px;
    z-index: 10;
}

.lightbox-btn {
    width: 60px;
    height: 60px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: #fff;
    transition: all 0.3s ease;
}

.lightbox-btn:hover {
    background: #fff;
    color: #000;
}

.lightbox-counter {
    position: absolute;
    bottom: 105px;
    left: 50%;
    transform: translateX(-50%);
    color: rgba(255, 255, 255, 0.5);
    font-size: 0.8em;
    letter-spacing: 2px;
    z-index: 10;
}

/* GALLERY SLIDER POPUP (GSAP) */
.gallery-slider,
#gallery-slider {
    position: relative !important;
    width: 100% !important;
    height: 100% !important;
    min-height: 80vh;
    margin: auto;
    overflow: hidden;
    display: block !important;
}

/* Manejar el wrapper interno de Elementor si existe */
.gallery-slider .e-con-inner,
#gallery-slider .e-con-inner {
    height: 100% !important;
    width: 100% !important;
    position: relative !important;
    display: block !important;
}

.gallery-slider .elementor-widget-image,
#gallery-slider .elementor-widget-image {
    display: flex !important;
    align-items: center;
    justify-content: center;
    transition: none !important;
    cursor: pointer;
}

.gallery-slider .elementor-widget-image img,
#gallery-slider .elementor-widget-image img {
    min-width: 100%;
    min-height: 100%;
    object-fit: cover;
    user-select: none;
    pointer-events: none;
}

/* Estilos para Controles Generados */
#gallery-slider .slider-controls {
    position: absolute;
    top: 50%;
    left: 0;
    width: 100%;
    display: flex;
    justify-content: space-between;
    padding: 0 40px;
    transform: translateY(-50%);
    pointer-events: none;
    z-index: 100;
}

#gallery-slider .slider-btn {
    width: 60px;
    height: 60px;
    flex-shrink: 0;
    aspect-ratio: 1/1;
    padding: 0;
    background: rgba(255, 255, 255, 0.15);
    backdrop-filter: blur(15px);
    -webkit-backdrop-filter: blur(15px);
    border: 1px solid rgba(255, 255, 255, 0.3);
    border-radius: 50%;
    cursor: pointer;
    pointer-events: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);
    color: white;
    z-index: 101;
    mix-blend-mode: difference;
    box-shadow: 0px 0px 14px 0px #85858591;
}

#gallery-slider .slider-btn img {
    width: 28px;
    height: 28px;
    display: block;
    transition: filter 0.4s ease;
}

#gallery-slider .slider-btn:hover {
    background: #fff !important;
}

#gallery-slider .slider-btn:hover img {
    filter: brightness(0);
    /* Hace que el SVG blanco pase a negro */
}

.slider-counter {
    position: absolute;
    bottom: 40px;
    left: 50%;
    transform: translateX(-50%);
    color: rgba(255, 255, 255, 0.8);
    font-size: 14px;
    letter-spacing: 2px;
    z-index: 100;
    font-family: inherit;
    background: rgba(0, 0, 0, 0.3);
    padding: 10px 20px;
    border-radius: 30px;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    display: flex;
    align-items: center;
    gap: 8px;
    border: 1px solid rgba(255, 255, 255, 0.1);
}

.counter-current {
    position: relative;
    height: 1.2em;
    overflow: hidden;
    display: flex;
    align-items: center;
}

.counter-num {
    display: block;
    font-weight: 600;
}

.counter-sep,
.counter-total {
    opacity: 0.6;
}

/* 7. Estilos para el Botón de Cierre Custom (Global/Popup) */
#elementor-popup-modal-2328 .dialog-close-button {
    width: 44px !important;
    height: 44px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    background: #1a1a1a !important;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border-radius: 50% !important;
    transition: all 0.4s ease !important;
    top: 40px !important;
    right: 40px !important;
    border: 1px solid rgba(255, 255, 255, 0.2) !important;
    overflow: hidden !important;
}

#elementor-popup-modal-2328 .dialog-close-button svg {
    display: none !important;
}

/* Animación de la X (Sidebar Menu Style) */
#elementor-popup-modal-2328 .close-wrapper {
    height: 20px;
    width: 20px;
    overflow: hidden;
    position: relative;
}

#elementor-popup-modal-2328 .line-wrapper {
    height: 100%;
    width: 100%;
    position: absolute;
    top: 0;
    left: 0;
    overflow: hidden;
}

#elementor-popup-modal-2328 .line-wrapper:first-child {
    transform: rotate(45deg);
}

#elementor-popup-modal-2328 .line-wrapper:last-child {
    transform: rotate(-45deg);
}

#elementor-popup-modal-2328 .line {
    background-color: #fff;
    height: 2px;
    width: 100%;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    transition: background-color 0.4s ease;
    will-change: transform;
}

#elementor-popup-modal-2328 .line:before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #fff;
    /* El color que aparece en hover */
}

#elementor-popup-modal-2328 .line.line-1 {
    transition: transform .6s cubic-bezier(.24, .43, .15, .97) 0.1s;
}

#elementor-popup-modal-2328 .line.line-1:before {
    transform: translate(-200%, 0);
}

#elementor-popup-modal-2328 .line.line-2 {
    transition: transform .6s cubic-bezier(.24, .43, .15, .97) 0s;
}

#elementor-popup-modal-2328 .line.line-2:before {
    transform: translate(200%, 0);
}

/* Hover States */
#elementor-popup-modal-2328 .dialog-close-button:hover .line.line-1 {
    transform: translate(150%, -50%);
}

#elementor-popup-modal-2328 .dialog-close-button:hover .line.line-2 {
    transform: translate(-250%, -50%);
}

/* Reconocimientos / Logotipos Interactivos (Home) */
.new-recognition {
    & .e-con-inner>.elementor-element {
        grid-template-columns: repeat(2, 1fr);
        column-gap: 40px;
        row-gap: 40px;

        & .logos-block {
            grid-column: span 2;
        }

        @media (width >=1024px) {
            display: grid;
        }
    }

    & .logos-block {
        display: grid;
        grid-template-columns: repeat(6, 1fr);
        gap: 0;
        align-items: stretch;
        position: relative;

        @media (width <=768px) {
            display: flex;
            flex-direction: row;
            flex-wrap: nowrap;
            overflow-x: scroll !important;
            -webkit-overflow-scrolling: touch;
            padding-bottom: 16px;
            scroll-snap-type: x mandatory;
            scrollbar-width: thin !important;
            scrollbar-color: #C5AE79 rgba(255, 255, 255, 0.15) !important;

            &::-webkit-scrollbar {
                height: 8px !important;
                display: block !important;
                opacity: 1 !important;
                visibility: visible !important;
            }

            &::-webkit-scrollbar-track {
                background: rgba(255, 255, 255, 0.15) !important;
                border-radius: 4px !important;
                display: block !important;
                opacity: 1 !important;
            }

            &::-webkit-scrollbar-thumb {
                background: #C5AE79 !important;
                border-radius: 4px !important;
                display: block !important;
                opacity: 1 !important;
                min-width: 40px !important;
            }
        }

        & .elementor-widget-image {
            min-width: 100%;
            margin-bottom: 0;
            padding: 1.5rem;
            border-radius: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            background: transparent !important;
            border: none !important;
            position: relative;
            z-index: 2;

            @media (width <=768px) {
                min-width: 60% !important;
                max-width: 60% !important;
                scroll-snap-align: center;
                flex-shrink: 0;
            }

            & .elementor-widget-container {
                width: 100%;
                height: 100%;
                display: flex;
                align-items: center;
                justify-content: center;
                position: relative;
                background: transparent !important;
            }

            & img {
                filter: grayscale(1);
                opacity: 0.5;
                max-width: 100%;
                height: auto;
                pointer-events: none;
                transition: filter 0.4s ease, opacity 0.4s ease;

                @media (width <=768px) {
                    max-width: 100px;
                }
            }

            &.is-active img {
                filter: grayscale(0);
                opacity: 1;
            }
        }
    }

    & .logos-curtain {
        position: absolute;
        top: 0;
        left: 0;
        background: #ffffff;
        border-radius: 6px;
        z-index: 1;
        pointer-events: none;
        display: none;
    }

    & .texts-block {
        position: relative;
        display: block;
        margin-bottom: 0;
        overflow: hidden;

        & .elementor-widget-text-editor {
            width: 100%;
            position: absolute;
            top: 0;
            left: 0;
            display: none;
            opacity: 0;

            & p {
                font-weight: 400;
                font-size: 1.25em;
                line-height: 1.6;
                color: #fff;
                margin: 0;
            }
        }
    }
}

/* ========================================================================== */
/* SCROLL IMAGES SECTION                                                      */
/* ========================================================================== */

.scroll-images {
    position: relative;
    padding-block: 0 !important;
    overflow: hidden;
    transition: unset !important;
}

.scroll-images .images-container {
    position: relative;
    width: 100%;
    min-height: 100svh;
    display: flex;
    align-items: center;
    justify-content: center;
}

.scroll-images .video-container {
    position: relative;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 10;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    pointer-events: none;
}

.scroll-images .video-container .elementor-widget-heading {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    width: 100%;
    max-width: 1000px;
    z-index: 10;
    text-align: center;
    pointer-events: auto;
}

.scroll-images .video-container .elementor-widget-video {
    position: absolute;
    width: 100%;
    max-width: 800px;
    transform-origin: bottom center;
    will-change: transform, opacity;
    pointer-events: auto;
    z-index: 20;
}

@media (max-width: 768px) {

    .scroll-images .video-container .elementor-widget-video,
    .scroll-images .video-container .elementor-widget-video .elementor-widget-container,
    .scroll-images .video-container .elementor-widget-video .elementor-wrapper {
        height: 100vh !important;
        max-width: 100vw !important;
    }

    .scroll-images .video-container .elementor-widget-video video,
    .scroll-images .video-container .elementor-widget-video iframe {
        height: 100vh !important;
        width: 100vw !important;
        object-fit: cover !important;
    }
}

.scroll-images .images-container .elementor-widget-image {
    position: absolute;
    z-index: 1;
}

.scroll-images .images-container .elementor-widget-image img {
    width: 100%;
    height: auto;
    display: block;
    object-fit: cover;
}

/* ========================================================================== */
/* VIDEO SCROLL SECTION                                                       */
/* ========================================================================== */

.video-scroll {
    position: relative;
    width: 100%;
    min-height: 100vh;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: unset !important;
}

.video-scroll>.e-con-inner {
    position: relative;
    width: 100%;
    height: 100vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.video-scroll .elementor-widget-heading,
.video-scroll .elementor-widget-text-editor {
    position: relative;
    z-index: 10;
    max-width: 1000px;
    width: 100%;
    text-align: center;
    pointer-events: auto;
}

.video-scroll .elementor-widget-video {
    position: absolute;
    width: 300px;
    height: 600px;
    max-width: 100%;
    max-height: 100vh;
    transform-origin: center center;
    will-change: transform, width, height;
    pointer-events: auto;
    z-index: 5;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    --video-overlay-opacity: 0.8;
}

.video-scroll .elementor-widget-video::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(180deg, rgba(0, 0, 0, 0.85) 0.52%, rgba(0, 0, 0, 0.00) 45.69%),
        linear-gradient(180deg, rgba(0, 0, 0, 0.00) 46.74%, #0A0A0A 91.91%);
    z-index: 1;
    opacity: var(--video-overlay-opacity);
    will-change: opacity;
    pointer-events: none;
}

.video-scroll .elementor-widget-video video,
.video-scroll .elementor-widget-video .e-hosted-video,
.video-scroll .elementor-widget-video .elementor-wrapper {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
}

@media (max-width: 768px) {
    .video-scroll .elementor-widget-video {
        width: 200px;
        height: 400px;
    }
}

.video-scroll .formaciones-info,
.scroll-images .formaciones-info {
    position: absolute;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
    z-index: 30;
    width: 100%;
    pointer-events: none;
    /* Permite el scroll subyacente si lo hubiera */
    padding-left: var(--osmo-container-padding);
    padding-right: var(--osmo-container-padding);
}

.video-scroll .formaciones-info>*,
.scroll-images .formaciones-info>* {
    width: 100%;
}

.video-scroll .formaciones-info .card,
.scroll-images .formaciones-info .card {
    pointer-events: auto;
    /* Las tarjetas sí son interactivas */
    transition: none !important;
}

.video-scroll .elementor-widget-video,
.video-scroll .elementor-widget-heading,
.video-scroll .elementor-widget-text-editor {
    transition: none !important;
}

.video-scroll .indicator {
    margin: 0;
    position: absolute;
    bottom: 24px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 20;
    pointer-events: none;
    text-align: center;
}

.video-scroll .indicator p {
    margin-bottom: 12px;
    color: #fff;
    font-size: 0.85rem;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.video-scroll .indicator .elementor-widget-text-editor {
    position: relative;
    padding-bottom: 80px;
    /* Espacio para la línea generada por CSS entre el texto y el ratón */
    margin-bottom: 10px;
}

/* Creamos la línea dinámicamente con CSS puro debajo del texto */
.video-scroll .indicator .elementor-widget-text-editor::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 1px;
    height: 60px;
    /* Dos fondos: uno para la 'gota' blanca que cae, otro para el riel semitransparente */
    background-image:
        linear-gradient(to bottom, var(--e-global-color-accent), var(--e-global-color-accent)),
        linear-gradient(to bottom, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.2));
    background-size: 100% 30px, 100% 100%;
    background-repeat: no-repeat;
    animation: scrollIndicatorAnim 2s cubic-bezier(0.65, 0, 0.35, 1) infinite;
}


@media (max-width: 768px) {
    .video-scroll .indicator .elementor-widget-text-editor {
        padding-bottom: 40px;
        margin-bottom: 5px;
    }

    .video-scroll .indicator .elementor-widget-text-editor::after {
        height: 30px;
        background-size: 100% 15px, 100% 100%;
        animation-name: scrollIndicatorAnimMobile;
    }

    .formaciones-info .card p,
    .formaciones-info .elementor-widget-text-editor p,
    .formaciones-info .card {
        font-size: 0.875rem !important;
        line-height: 1.45 !important;
    }
}


@keyframes scrollIndicatorAnimMobile {
    0% {
        background-position: center -15px, center top;
    }

    100% {
        background-position: center 30px, center top;
    }
}

@keyframes scrollIndicatorAnim {
    0% {
        background-position: center -30px, center top;
    }

    100% {
        background-position: center 60px, center top;
    }
}


/*woocommerce*/
.product_meta {
    display: flex;
    flex-direction: column;
}

/* Boton Comprar Curso en Cursos/Formaciones */
.product button.single_add_to_cart_button {
    background-color: #FDC631 !important;
    line-height: 1.3;
}

.woocommerce div.product form.cart .variations select,
.woocommerce form.woocommerce-ordering select.orderby,
.variations_form select {
    color: #ffffff !important;
    max-width: 100%;
    display: inline-block;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    padding-right: 3em;
    background-color: transparent;
    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXItY2hldnJvbi1kb3duIj48cG9seWxpbmUgcG9pbnRzPSI2IDkgMTIgMTUgMTggOSI+PC9wb2x5bGluZT48L3N2Zz4=);
    background-repeat: no-repeat;
    background-size: 16px;
    -webkit-background-size: 16px;
    background-position: calc(100% - 12px) 50%;
    -webkit-background-position: calc(100% - 12px) 50%;
}

.woocommerce div.product form.cart .variations select option,
.woocommerce form.woocommerce-ordering select.orderby option,
.variations_form select option {
    background-color: #222;
    color: #ffffff;
}

.woocommerce div.product form.cart .variations select {
    min-width: 75%;
    margin-right: 1em;
}

.woocommerce form.woocommerce-ordering select.orderby {
    border: 1px solid rgba(255, 255, 255, 0.2);
    padding: 10px 3em 10px 15px;
    border-radius: 8px;
    cursor: pointer;
}

.woocommerce form.woocommerce-ordering select.orderby:focus {
    outline: none;
    border-color: #FDC631;
}

.woocommerce .product p.price {
    color: #FDC631 !important;
    font-weight: bold;
    font-size: 2.5em !important;
}

/* Custom WooCommerce Quantity Input */
.quantity.custom-quantity {
    display: inline-flex;
    align-items: center;
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: 6px;
    background-color: transparent;
    overflow: hidden;
    height: 48px;
}

.quantity.custom-quantity .quantity-btn {
    background-color: transparent;
    border: none;
    border-radius: 0;
    color: #fff;
    width: 48px;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    font-size: 1.25rem;
    transition: background-color 0.3s ease;
    padding: 0;
}

.quantity.custom-quantity .quantity-btn:hover {
    background-color: rgba(255, 255, 255, 0.1);
}

.quantity.custom-quantity input.qty {
    background-color: transparent;
    border: none;
    color: #fff;
    width: 50px;
    height: 100%;
    text-align: center;
    -moz-appearance: textfield;
    padding: 0;
    font-size: 1rem;
    font-weight: 500;
}

.quantity.custom-quantity input.qty:focus {
    outline: none;
    box-shadow: none;
}

.quantity.custom-quantity input.qty::-webkit-outer-spin-button,
.quantity.custom-quantity input.qty::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

/* Fix WooCommerce Single Product Container Width */
.woocommerce-page #content,
.tax-product_cat #main {
    padding-block: 6em;
}

body.single-product .site-main {
    max-width: var(--size-container) !important;
    width: 100% !important;
    margin-left: auto !important;
    margin-right: auto !important;
    padding-left: var(--osmo-container-padding) !important;
    padding-right: var(--osmo-container-padding) !important;
    padding-block: 6em;
}

/* Fix width for all non-Elementor pages (override Hello Theme default) */
@media (min-width: 1200px) {
    body:not([class*=elementor-page-]) .site-main {
        max-width: var(--size-container) !important;
        width: 100% !important;
        margin-left: auto !important;
        margin-right: auto !important;
        padding-left: var(--osmo-container-padding) !important;
        padding-right: var(--osmo-container-padding) !important;
    }
}

body .woocommerce-tabs.wc-tabs-wrapper {
    max-width: 1140px;
    margin: auto;
}

/* Estilos de las pestañas de WooCommerce */
ul.tabs.wc-tabs {
    display: flex;
    gap: 1.5rem;
    padding-inline: 0 !important;
    padding-block: 4em 2em !important;
}

.woocommerce div.product .woocommerce-tabs .panel {
    margin-bottom: 8rem;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li {
    background-color: transparent !important;
    border-color: rgba(255, 255, 255, 0.2) !important;
    color: #fff !important;
    border-radius: 100vmax;
    margin: 0 !important;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li a {
    color: #fff !important;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after {
    display: none !important;
    /* Elimina los adornos redondos de WooCommerce si los hay */
}

/* Estado activo de las pestañas */
.woocommerce div.product .woocommerce-tabs ul.tabs li.active {
    background-color: #fff !important;
    color: #000 !important;
    border-color: #fff !important;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li.active a {
    color: #000 !important;
}

.woocommerce div.product .woocommerce-tabs ul.tabs::before {
    display: none !important;
}

.woocommerce-message {
    background-color: transparent;
    color: #fff;
}

/* ==========================================================================
   RELATED PRODUCTS - TRAINING CARD STYLE
   ========================================================================== */
.woocommerce ul.products {
    display: grid !important;
    grid-template-columns: repeat(4, 1fr) !important;
    gap: 40px !important;
}

.woocommerce ul.products::before,
.woocommerce ul.products::after {
    display: none !important;
}

.woocommerce ul.products li.product {
    width: 100% !important;
    margin: 0 !important;
    border-radius: 32px;
    overflow: hidden;
    position: relative;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
    display: flex;
    flex-direction: column;
    aspect-ratio: 3/4;
    /* Escala proporcionalmente */
    min-height: 400px;
    /* Evita que se colapse demasiado en pantallas pequeñas */
    background: #111;
}

/* El gradiente debe ir sobre toda la tarjeta pero debajo del texto */
.woocommerce ul.products li.product a.woocommerce-LoopProduct-link::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 2;
    background: linear-gradient(190deg, rgba(0, 0, 0, 0.00) -10.05%, #080808 79.62%);
    pointer-events: none;
}

.woocommerce ul.products li.product:hover img {
    transform: scale(1.1);
}

.woocommerce ul.products li.product a.woocommerce-LoopProduct-link {
    position: absolute;
    inset: 0;
    z-index: 1;
    display: block;
}

.woocommerce ul.products li.product img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.5s ease;
}

/* Título */
.woocommerce ul.products li.product h2.woocommerce-loop-product__title {
    position: absolute;
    bottom: 110px;
    left: 25px;
    right: 25px;
    z-index: 3;
    color: #fff;
    font-family: 'LEMON MILK', sans-serif;
    font-size: 24px;
    margin-bottom: 15px;
    line-height: 1.3;
    pointer-events: none;
}

/* Precio (emulando la info del training card) */
.woocommerce ul.products li.product .price {
    position: absolute;
    bottom: 85px;
    left: 25px;
    z-index: 3;
    color: rgba(255, 255, 255, 0.7) !important;
    font-size: 0.9rem !important;
    font-weight: 400;
    pointer-events: none;
    margin: 0;
    display: flex;
    gap: 10px;
    align-items: center;
}

/* Botón (emulando el elementor-button del footer) */
.woocommerce ul.products li.product .button {
    position: absolute;
    bottom: 25px;
    left: 25px;
    right: 25px;
    z-index: 10;
    font-size: 20px !important;
    background-color: #fcc42a !important;
    color: #000 !important;
    width: calc(100% - 50px);
    display: flex;
    justify-content: center;
    align-items: center;
    font-weight: 700;
    border-radius: 100vmax;
    transition: all 0.3s ease !important;
    text-align: center;
    padding: 15px 0 !important;
    margin: 0 !important;
    border: none;
}

.woocommerce ul.products li.product .button:hover {
    background-color: #fff !important;
    color: #000 !important;
}

/* ==========================================================================
   WOOCOMMERCE SINGLE PRODUCT - ADD TO CART BUTTON
   ========================================================================== */
.course-details-cta .single_add_to_cart_button,
body.single-product .single_add_to_cart_button {
    background-color: #fcc42a !important;
    color: #000 !important;
    font-weight: 700 !important;
    border-radius: 100vmax !important;
    transition: all 0.3s ease !important;
    padding: 16px 32px !important;
    font-size: 18px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-transform: uppercase !important;
    border: none !important;
}

.course-details-cta .single_add_to_cart_button:hover,
body.single-product .single_add_to_cart_button:hover {
    background-color: #fff !important;
}

.single-product .woocommerce-tabs ul {
    margin-bottom: 24px;
}

.woocommerce-product-details__short-description {
    margin-bottom: 34px;
}

.woocommerce-product-gallery__wrapper>div {
    pointer-events: none;
}

a.woocommerce-product-gallery__trigger {
    display: none;
}

.woocommerce div.product form.cart {
    margin-bottom: 2rem;

    & .quantity {
        margin: 4px 16px 0 0 !important;
    }
}

/* ==========================================================================
   WOOCOMMERCE BLOCKS CHECKOUT - ESTILO  (Contact Form)
   ========================================================================== */
.woocommerce-cart h1 {
    margin-left: 0 !important;
}

/* Contenedores de inputs limpios */
.wc-block-checkout__form .wc-block-components-text-input,
.wc-block-checkout__form .wc-blocks-components-select__container {
    background: transparent !important;
    border-radius: 0 !important;
    border: none !important;
    box-shadow: none !important;
}

/* Campos de texto y selects con borde inferior */
.wc-block-checkout__form .wc-block-components-text-input input,
.wc-block-checkout__form .wc-blocks-components-select__select,
.wc-block-checkout__form textarea {
    border: none !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.2) !important;
    border-radius: 0 !important;
    background-color: transparent !important;
    color: #fff !important;
    box-shadow: none !important;
    padding: 1.5rem 0 0.5rem 0 !important;
    font-size: 1.1rem !important;
    font-family: inherit !important;
    transition: border-color 0.3s ease !important;
    min-height: 3.5rem !important;
    /* Evita que el texto se corte verticalmente */
}

.wc-block-checkout__form .wc-blocks-components-select__select {
    padding-right: 2rem !important;
    /* Espacio para el icono de la flecha */
}

.wc-block-checkout__form .wc-block-components-text-input input:focus,
.wc-block-checkout__form .wc-blocks-components-select__select:focus,
.wc-block-checkout__form textarea:focus {
    outline: none !important;
    border-bottom-color: #FDC631 !important;
    box-shadow: none !important;
}

/* Etiquetas (Labels) uppercase, espaciadas y minimalistas */
.wc-block-checkout__form .wc-block-components-text-input label,
.wc-block-checkout__form .wc-blocks-components-select__label {
    font-size: 0.75rem !important;
    font-weight: 600 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.1em !important;
    color: rgba(255, 255, 255, 0.5) !important;
    left: 0 !important;
}

/* Ajuste para el estado activo (label flotante) */
.wc-block-checkout__form .wc-block-components-text-input.is-active label,
.wc-block-checkout__form .wc-blocks-components-select.is-active .wc-blocks-components-select__label {
    transform: translateY(-8px) scale(0.85) !important;
    color: #FDC631 !important;
}

/* Icono expandible de los selects */
.wc-block-checkout__form .wc-blocks-components-select__expand {
    fill: #fff !important;
    right: 0 !important;
}

/* Títulos de sección (Información de contacto, Facturación...) */
.wc-block-components-checkout-step__title {
    font-family: 'LEMON MILK', sans-serif !important;
    font-size: 1.5rem !important;
    color: #fff !important;
    margin-bottom: 1.5rem !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    padding-bottom: 1rem;
}

/* Casillas de verificación (Checkbox) */
.wc-block-components-checkbox__label {
    color: rgba(255, 255, 255, 0.7) !important;
    font-size: 0.9rem !important;
}

.wc-block-components-checkbox__input[type=checkbox] {
    background-color: transparent !important;
    border: 1px solid rgba(255, 255, 255, 0.2) !important;
}

.wc-block-components-checkbox__input[type=checkbox]:checked {
    background-color: #FDC631 !important;
    border-color: #FDC631 !important;
}

/* Botón de Realizar Pedido / Finalizar Compra en WooCommerce Blocks */
.wc-block-components-checkout-place-order-button,
.wc-block-cart__submit-button,
.wc-block-cart__submit .wc-block-components-button {
    background-color: #FDC631 !important;
    color: #000 !important;
    font-weight: 700 !important;
    border-radius: 100vmax !important;
    transition: all 0.3s ease !important;
    padding: 16px 32px !important;
    font-size: 18px !important;
    border: none !important;
    text-transform: uppercase !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-decoration: none !important;
    line-height: 1 !important;
}

.wc-block-components-checkout-place-order-button:hover,
.wc-block-cart__submit-button:hover,
.wc-block-cart__submit .wc-block-components-button:hover {
    background-color: #fff !important;
    color: #000 !important;
}

.wc-block-components-order-summary .wc-block-components-order-summary-item__quantity span {
    color: #000 !important;
}

span.wc-block-components-address-card__edit:hover {
    background-color: #FDC631;
    color: #000;
}

/* Footer Design Logo Image */
.copyright .design img,
.design a img {
    display: inline-block !important;
    vertical-align: middle !important;
    max-height: 24px !important;
    width: auto !important;
    opacity: 1 !important;
    visibility: visible !important;
}

/* Trainings Pagination Border Radius */
.trainings-pagination .page-numbers {
    border-radius: 100vmax !important;
}

@media (max-width: 768px) {
    .blog .post-item-card {
        width: 100% !important;
        min-width: 100% !important;
    }
}