.sme-motion-root,
.sme-motion-root * {
    backface-visibility: hidden;
}

.sme-sticky-active {
    height: fit-content;
}


/* Content Scale controller widget */
.sme-content-scale-controller-widget,
.sme-content-scale-controller {
    display: none !important;
}

.sme-content-scale-parent {
    backface-visibility: hidden;
    transform-style: preserve-3d;
}

body.elementor-editor-active .sme-content-scale-controller-widget,
body.elementor-editor-preview .sme-content-scale-controller-widget,
.elementor-editor-active .sme-content-scale-controller-widget {
    display: block !important;
    width: 100%;
}

body.elementor-editor-active .sme-content-scale-controller,
body.elementor-editor-preview .sme-content-scale-controller,
.elementor-editor-active .sme-content-scale-controller {
    display: flex !important;
    align-items: center;
    gap: 8px;
    width: 100%;
    min-height: 42px;
    padding: 8px 10px;
    border-left: 4px solid #6c55ea;
    background: rgba(108, 85, 234, .13);
    color: #4f3bc7;
    font: 700 12px/1.3 Arial, sans-serif;
}

.sme-content-scale-controller__icon {
    font-size: 13px;
}

.sme-content-scale-controller__badge {
    margin-left: auto;
    padding: 3px 8px;
    border-radius: 999px;
    background: #6c55ea;
    color: #fff;
    font-size: 10px;
    line-height: 1;
}

.sme-content-scale-controller__status {
    font-weight: 500;
    opacity: .76;
}

body.elementor-editor-active .sme-content-scale-controller--invalid,
body.elementor-editor-preview .sme-content-scale-controller--invalid,
.elementor-editor-active .sme-content-scale-controller--invalid {
    border-left-color: #d63638;
    background: rgba(214, 54, 56, .10);
    color: #8a1f21;
}

/* Scroll Zoom widget */
.sme-scroll-zoom-spacer {
    position: relative;
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 0;
    overflow: visible;
}

.sme-scroll-zoom-parent {
    box-sizing: border-box;
}

.sme-scroll-zoom-child {
    box-sizing: border-box;
    transform: translateZ(0);
    backface-visibility: hidden;
}

.sme-scroll-zoom-controller-widget,
.sme-scroll-zoom-controller {
    display: none !important;
}

.sme-scroll-zoom-hides-content .sme-zoom-reveal-item {
    opacity: 0;
    pointer-events: none;
    transition: opacity var(--sme-zoom-fade-duration, 600ms) ease;
}

.sme-scroll-zoom-hides-content.sme-zoom-content-visible .sme-zoom-reveal-item {
    opacity: 1;
    pointer-events: auto;
}

/* Blur Reveal */
.sme-text-animation-blur .sme-blur-reveal-target {
    opacity: 0;
    filter: blur(16px);
    transform: translateY(14px);
    transition:
        opacity var(--sme-zoom-fade-duration, 600ms) ease,
        filter var(--sme-zoom-fade-duration, 600ms) ease,
        transform var(--sme-zoom-fade-duration, 600ms) cubic-bezier(.22, 1, .36, 1);
}

.sme-text-animation-blur.sme-zoom-content-visible .sme-blur-reveal-target {
    opacity: 1;
    filter: blur(0);
    transform: translateY(0);
}

/* Block Reveal */
.sme-block-reveal-target {
    position: relative;
    overflow: hidden;
}

.sme-text-animation-block .sme-block-reveal-target {
    opacity: 0;
}

.sme-text-animation-block.sme-zoom-content-visible .sme-block-reveal-target {
    animation: sme-block-text-reveal var(--sme-zoom-fade-duration, 600ms) linear both;
}

@keyframes sme-block-text-reveal {
    0%, 44% { opacity: 0; }
    45%, 100% { opacity: 1; }
}

.sme-block-reveal-overlay {
    position: absolute;
    z-index: 5;
    inset: 0;
    display: block;
    pointer-events: none;
    background: var(--sme-zoom-block-color, #fff);
    transform: translateX(-105%);
    opacity: 0;
}

.sme-text-animation-block.sme-zoom-content-visible .sme-block-reveal-overlay {
    animation: sme-block-reveal var(--sme-zoom-fade-duration, 600ms) cubic-bezier(.77, 0, .18, 1) both;
}

@keyframes sme-block-reveal {
    0% {
        opacity: 1;
        transform: translateX(-105%);
    }
    45% {
        opacity: 1;
        transform: translateX(0%);
    }
    55% {
        opacity: 1;
        transform: translateX(0%);
    }
    100% {
        opacity: 1;
        transform: translateX(105%);
    }
}

/* Slide Reveal */
.sme-slide-char {
    display: inline-block;
    opacity: 0;
    will-change: transform, opacity;
    transition:
        opacity var(--sme-zoom-fade-duration, 600ms) ease,
        transform var(--sme-zoom-fade-duration, 600ms) cubic-bezier(.22, 1, .36, 1);
    transition-delay: calc(var(--sme-char-index, 0) * 9ms);
}

.sme-slide-direction-up .sme-slide-char {
    transform: translateY(1.1em);
}

.sme-slide-direction-down .sme-slide-char {
    transform: translateY(-1.1em);
}

.sme-slide-direction-left .sme-slide-char {
    transform: translateX(1.1em);
}

.sme-slide-direction-right .sme-slide-char {
    transform: translateX(-1.1em);
}

.sme-text-animation-slide.sme-zoom-content-visible .sme-slide-char {
    opacity: 1;
    transform: translate(0, 0);
}

/* Visible controller and validation inside Elementor editor only. */
body.elementor-editor-active .sme-scroll-zoom-controller-widget,
body.elementor-editor-preview .sme-scroll-zoom-controller-widget,
.elementor-editor-active .sme-scroll-zoom-controller-widget {
    display: block !important;
}

body.elementor-editor-active .sme-scroll-zoom-controller,
body.elementor-editor-preview .sme-scroll-zoom-controller,
.elementor-editor-active .sme-scroll-zoom-controller {
    display: flex !important;
    align-items: center;
    justify-content: center;
    gap: 4px;
    width: 100%;
    min-height: 42px;
    padding: 8px 12px;
    border: 1px dashed #6c7cff;
    border-radius: 6px;
    background: rgba(108, 124, 255, .10);
    color: #26336d;
    font: 600 12px/1.3 Arial, sans-serif;
    text-align: center;
}

body.elementor-editor-active .sme-scroll-zoom-controller--invalid,
body.elementor-editor-preview .sme-scroll-zoom-controller--invalid,
.elementor-editor-active .sme-scroll-zoom-controller--invalid {
    border-color: #d63638;
    background: rgba(214, 54, 56, .10);
    color: #8a1f21;
}

@media (prefers-reduced-motion: reduce) {
    .sme-motion-root,
    .sme-motion-root * {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        scroll-behavior: auto !important;
        transition-duration: 0.01ms !important;
    }
}

/* Scroll Zoom v2: the JS handler owns layout only on the published page. */
.sme-scroll-zoom-spacer {
    box-sizing: border-box;
    isolation: isolate;
}

.sme-scroll-zoom-parent {
    transform: none !important;
}

.sme-scroll-zoom-child {
    contain: paint;
}

/* ============================================================
   Scroll Zoom v3 · background first, content reveal afterwards
   ============================================================ */
.sme-scroll-zoom-spacer {
    position: relative;
    box-sizing: border-box;
    min-width: 0;
    padding: 0;
    overflow: visible;
    isolation: isolate;
}

.sme-scroll-zoom-parent.sme-scroll-zoom-ready {
    box-sizing: border-box;
    transform: none !important;
}

.sme-scroll-zoom-child.sme-scroll-zoom-ready {
    box-sizing: border-box;
    contain: paint;
    backface-visibility: hidden;
    transform: translateZ(0);
}

/* Only the child content is hidden. Its CSS background, background overlay
   and background video remain visible while clip-path expands. */
.sme-scroll-zoom-hides-content .sme-zoom-reveal-item {
    opacity: 0 !important;
    pointer-events: none !important;
    transition: opacity var(--sme-zoom-fade-duration, 600ms) ease !important;
    will-change: opacity;
}

.sme-scroll-zoom-hides-content.sme-zoom-content-visible .sme-zoom-reveal-item {
    opacity: 1 !important;
    pointer-events: auto !important;
}

.sme-scroll-zoom-hides-content.sme-text-animation-blur .sme-blur-reveal-target {
    opacity: 0 !important;
    filter: blur(16px) !important;
    transform: translateY(18px) !important;
    transition:
        opacity var(--sme-zoom-fade-duration, 600ms) ease,
        filter var(--sme-zoom-fade-duration, 600ms) ease,
        transform var(--sme-zoom-fade-duration, 600ms) cubic-bezier(.22, 1, .36, 1) !important;
}

.sme-scroll-zoom-hides-content.sme-text-animation-blur.sme-zoom-content-visible .sme-blur-reveal-target {
    opacity: 1 !important;
    filter: blur(0) !important;
    transform: translateY(0) !important;
}

/* ============================================================
   Horizontal Slider v1
   ============================================================ */
.sme-horizontal-slider-controller-widget,
.sme-horizontal-slider-controller {
    display: none !important;
}

.sme-horizontal-slider-spacer {
    position: relative;
    width: 100%;
    min-width: 0;
    padding: 0;
    margin: 0;
    overflow: visible;
    isolation: isolate;
}

.sme-horizontal-slider-parent {
    box-sizing: border-box;
    overscroll-behavior: contain;
}

.sme-horizontal-slider-host {
    box-sizing: border-box;
}

.sme-horizontal-slider-track {
    box-sizing: border-box;
    backface-visibility: hidden;
    transform: translate3d(0, 0, 0);
}

.sme-horizontal-slider-track > .e-con {
    box-sizing: border-box;
    backface-visibility: hidden;
}

/* The controller remains visible only while designing the hierarchy. */
body.elementor-editor-active .sme-horizontal-slider-controller-widget,
body.elementor-editor-preview .sme-horizontal-slider-controller-widget,
.elementor-editor-active .sme-horizontal-slider-controller-widget {
    display: block !important;
}

body.elementor-editor-active .sme-horizontal-slider-controller,
body.elementor-editor-preview .sme-horizontal-slider-controller,
.elementor-editor-active .sme-horizontal-slider-controller {
    display: flex !important;
    align-items: center;
    justify-content: center;
    gap: 4px;
    width: 100%;
    min-height: 42px;
    padding: 8px 12px;
    border: 1px dashed #6c7cff;
    border-radius: 6px;
    background: rgba(108, 124, 255, .10);
    color: #26336d;
    font: 600 12px/1.3 Arial, sans-serif;
    text-align: center;
}

body.elementor-editor-active .sme-horizontal-slider-controller--invalid,
body.elementor-editor-preview .sme-horizontal-slider-controller--invalid,
.elementor-editor-active .sme-horizontal-slider-controller--invalid {
    border-color: #d63638;
    background: rgba(214, 54, 56, .10);
    color: #8a1f21;
}

/* Horizontal Slider 0.6.1: estabilidad en layouts flex/grid de Elementor. */
.sme-horizontal-slider-spacer {
    flex-shrink: 0;
    max-width: 100%;
    min-height: 1px;
}

.sme-horizontal-slider-parent,
.sme-horizontal-slider-host {
    min-width: 0;
}

.sme-horizontal-slider-track {
    max-width: none !important;
}

/* ============================================================
   Horizontal Slider v2 · viewport sticky interno (0.8.2)
   ============================================================ */
.sme-horizontal-slider-section {
    position: relative;
    width: 100%;
    max-width: none;
    min-width: 0;
    overflow: visible;
}

.sme-horizontal-slider-host {
    position: relative;
    width: 100%;
    max-width: none;
    min-width: 0;
    overflow: visible;
}

.sme-horizontal-slider-viewport {
    position: sticky;
    top: 0;
    width: 100%;
    height: 100vh;
    overflow: hidden;
    box-sizing: border-box;
    isolation: isolate;
}

.sme-horizontal-slider-track {
    display: flex;
    flex-flow: row nowrap;
    align-items: stretch;
    width: max-content;
    max-width: none !important;
    height: 100%;
    transform: translate3d(0, 0, 0);
    will-change: transform;
    backface-visibility: hidden;
}

.sme-horizontal-slider-track > .e-con {
    flex-shrink: 0;
    box-sizing: border-box;
    backface-visibility: hidden;
}

/* Horizontal Slider 0.8.2: el gesto vertical pertenece al scroll de página,
   incluso cuando el puntero está sobre widgets internos del panel. */
.sme-horizontal-slider-viewport,
.sme-horizontal-slider-track,
.sme-horizontal-slider-track > .e-con {
    touch-action: pan-y;
    overscroll-behavior: none;
}

/* ============================================================
   Stacked Cards v1
   ============================================================ */
.sme-stacked-cards-controller-widget,
.sme-stacked-cards-controller {
    display: none !important;
}

.sme-stacked-cards-host,
.sme-stacked-cards-section {
    overflow: visible;
}

.sme-stacked-card {
    box-sizing: border-box;
    backface-visibility: hidden;
    transform-style: preserve-3d;
}

.sme-stacked-card-marker {
    display: block;
    width: 0;
    height: 0;
    margin: 0;
    padding: 0;
    border: 0;
    pointer-events: none;
    visibility: hidden;
}

.sme-stacked-cards-tail {
    display: block;
    width: 100%;
    min-height: 0;
    margin: 0;
    padding: 0;
    pointer-events: none;
}

body.elementor-editor-active .sme-stacked-cards-controller-widget,
body.elementor-editor-preview .sme-stacked-cards-controller-widget,
.elementor-editor-active .sme-stacked-cards-controller-widget {
    display: block !important;
    width: 100%;
}

body.elementor-editor-active .sme-stacked-cards-controller,
body.elementor-editor-preview .sme-stacked-cards-controller,
.elementor-editor-active .sme-stacked-cards-controller {
    display: flex !important;
    align-items: center;
    justify-content: center;
    gap: 4px;
    width: 100%;
    min-height: 42px;
    padding: 8px 12px;
    border: 1px dashed #6c55ea;
    border-radius: 6px;
    background: rgba(108, 85, 234, .10);
    color: #4f3bc7;
    font: 700 12px/1.3 Arial, sans-serif;
    text-align: center;
}

body.elementor-editor-active .sme-stacked-cards-controller--invalid,
body.elementor-editor-preview .sme-stacked-cards-controller--invalid,
.elementor-editor-active .sme-stacked-cards-controller--invalid {
    border-color: #d63638;
    background: rgba(214, 54, 56, .10);
    color: #8a1f21;
}

/* Smooth Scroll global */
html.sme-smooth-scroll-active { scroll-behavior: auto !important; }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: clip; }
.lenis.lenis-smooth iframe { pointer-events: none; }

/* Sticky Scroll widget · multi-item story */
.sme-sticky-scroll {
    --sme-sticky-gap: 72px;
    --sme-sticky-content-width: 42%;
    --sme-sticky-item-height: 100vh;
    --sme-sticky-content-offset: 24px;
    --sme-sticky-offset: 24px;
    --sme-sticky-image-height: 78vh;
    --sme-sticky-transition: 650ms;
    --sme-sticky-inactive-opacity: .28;
    display: grid;
    grid-template-columns:
        minmax(0, var(--sme-sticky-content-width))
        minmax(0, calc(100% - var(--sme-sticky-content-width) - var(--sme-sticky-gap)));
    align-items: start;
    gap: var(--sme-sticky-gap);
    width: 100%;
    position: relative;
    overflow: visible !important;
    isolation: isolate;
}

.sme-sticky-scroll--image-left .sme-sticky-scroll__visual-wrap {
    grid-column: 1;
    grid-row: 1;
}

.sme-sticky-scroll--image-left .sme-sticky-scroll__content-list {
    grid-column: 2;
    grid-row: 1;
}

.sme-sticky-scroll__content-list {
    min-width: 0;
    position: relative;
    z-index: 2;
}

.sme-sticky-scroll__item {
    min-height: var(--sme-sticky-item-height);
    display: flex;
    align-items: center;
    position: relative;
    box-sizing: border-box;
    padding-block: var(--sme-sticky-content-offset);
    opacity: var(--sme-sticky-inactive-opacity);
    transform: translateY(14px);
    transition:
        opacity var(--sme-sticky-transition) cubic-bezier(.22, 1, .36, 1),
        transform var(--sme-sticky-transition) cubic-bezier(.22, 1, .36, 1);
}

.sme-sticky-scroll__item.is-active {
    opacity: 1;
    transform: translateY(0);
}

/* When centered, each narrative step occupies at least one full viewport.
   This keeps the text center aligned with the sticky visual even on widgets
   saved by previous versions with a 90vh item height. */
.sme-sticky-scroll--content-center .sme-sticky-scroll__item {
    min-height: max(var(--sme-sticky-item-height), 100vh);
}

.sme-sticky-scroll--content-top .sme-sticky-scroll__item {
    align-items: flex-start;
}

.sme-sticky-scroll--content-center .sme-sticky-scroll__item {
    align-items: center;
}

.sme-sticky-scroll--content-bottom .sme-sticky-scroll__item {
    align-items: flex-end;
}

.sme-sticky-scroll__item-inner {
    width: 100%;
}

.sme-sticky-scroll__eyebrow {
    margin: 0 0 16px;
    font-size: 13px;
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: .12em;
    text-transform: uppercase;
}

.sme-sticky-scroll__title {
    display: block;
    margin: 0 0 24px;
    font-size: clamp(38px, 5vw, 82px);
    line-height: .98;
}

.sme-sticky-scroll__description {
    font-size: 18px;
    line-height: 1.65;
}

.sme-sticky-scroll__description > :first-child { margin-top: 0; }
.sme-sticky-scroll__description > :last-child { margin-bottom: 0; }

.sme-sticky-scroll__button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-top: 30px;
    padding: 14px 24px;
    background: #111;
    color: #fff;
    text-decoration: none;
    border-radius: 4px;
}

.sme-sticky-scroll__visual-wrap {
    position: sticky;
    top: 0;
    height: 100vh;
    min-width: 0;
    align-self: start;
    z-index: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    box-sizing: border-box;
    padding-block: var(--sme-sticky-offset);
}

.sme-sticky-scroll--visual-top .sme-sticky-scroll__visual-wrap {
    justify-content: flex-start;
}

.sme-sticky-scroll--visual-center .sme-sticky-scroll__visual-wrap {
    justify-content: center;
}

.sme-sticky-scroll--visual-bottom .sme-sticky-scroll__visual-wrap {
    justify-content: flex-end;
}

.sme-sticky-scroll__media-stage {
    width: 100%;
    height: min(var(--sme-sticky-image-height), calc(100vh - (var(--sme-sticky-offset) * 2)));
    flex: 0 0 auto;
    position: relative;
    overflow: hidden;
    background: #ececec;
    transform: translateZ(0);
}

.sme-sticky-scroll__media {
    position: absolute;
    inset: 0;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    will-change: opacity, transform;
    transition:
        opacity var(--sme-sticky-transition) cubic-bezier(.22, 1, .36, 1),
        transform var(--sme-sticky-transition) cubic-bezier(.22, 1, .36, 1),
        visibility 0s linear var(--sme-sticky-transition);
}

.sme-sticky-scroll__media.is-active {
    opacity: 1;
    visibility: visible;
    transition-delay: 0s;
}

.sme-sticky-scroll--effect-fade .sme-sticky-scroll__media {
    transform: none;
}

.sme-sticky-scroll--effect-fade-scale .sme-sticky-scroll__media {
    transform: scale(1.055);
}

.sme-sticky-scroll--effect-fade-scale .sme-sticky-scroll__media.is-active {
    transform: scale(1);
}

.sme-sticky-scroll--effect-slide-up .sme-sticky-scroll__media {
    transform: translateY(7%);
}

.sme-sticky-scroll--effect-slide-up .sme-sticky-scroll__media.is-active {
    transform: translateY(0);
}

.sme-sticky-scroll__image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

@media (prefers-reduced-motion: reduce) {
    .sme-sticky-scroll__item,
    .sme-sticky-scroll__media {
        transition: none !important;
    }
}

@media (max-width: 767px) {
    .sme-sticky-scroll {
        --sme-sticky-gap: 28px;
        --sme-sticky-item-height: 78vh;
        display: flex;
        flex-direction: column;
        gap: var(--sme-sticky-gap);
    }

    .sme-sticky-scroll__visual-wrap,
    .sme-sticky-scroll--image-left .sme-sticky-scroll__visual-wrap {
        order: 1;
        width: 100%;
        height: min(46vh, 520px);
        top: var(--sme-sticky-offset);
        z-index: 5;
        padding-block: 0;
        justify-content: flex-start;
    }

    .sme-sticky-scroll__media-stage {
        height: 100%;
    }

    .sme-sticky-scroll__content-list,
    .sme-sticky-scroll--image-left .sme-sticky-scroll__content-list {
        order: 2;
        width: 100%;
    }

    .sme-sticky-scroll__item {
        min-height: var(--sme-sticky-item-height);
        align-items: flex-start;
        padding-block: max(38px, var(--sme-sticky-content-offset)) max(64px, var(--sme-sticky-content-offset));
    }

    .sme-sticky-scroll__title {
        font-size: clamp(34px, 11vw, 58px);
    }
}
