﻿/**
 * Fundos Forestación — tema forestal (solo body.page-fundos-forestacion).
 * Paleta: #00927a #00c6a0 #00b27f #00cc8d #006854 #c69c6d
 */

body.page-fundos-forestacion {
    --ff-deep: #006854;
    --ff-primary: #00927a;
    --ff-emerald: #00b27f;
    --ff-mint: #00c6a0;
    --ff-bright: #00cc8d;
    --ff-earth: #c69c6d;

    --bs-primary: var(--ff-emerald);
    --bs-primary-rgb: 0, 178, 127;
    --bs-link-color: var(--ff-primary);
    --bs-link-hover-color: var(--ff-deep);
}

body.page-fundos-forestacion .text-primary {
    color: var(--ff-emerald) !important;
}

body.page-fundos-forestacion .btn-primary {
    --bs-btn-bg: var(--ff-emerald);
    --bs-btn-border-color: var(--ff-emerald);
    --bs-btn-hover-bg: var(--ff-deep);
    --bs-btn-hover-border-color: var(--ff-deep);
    --bs-btn-active-bg: var(--ff-deep);
    --bs-btn-active-border-color: var(--ff-deep);
}

body.page-fundos-forestacion .btn-outline-primary {
    --bs-btn-color: var(--ff-emerald);
    --bs-btn-border-color: var(--ff-emerald);
    --bs-btn-hover-bg: var(--ff-emerald);
    --bs-btn-hover-border-color: var(--ff-emerald);
}

body.page-fundos-forestacion #orbeNavbar.initial-navbar:not(.scrolled-navbar) {
    --navbar-glass-bg: rgba(0, 64, 52, 0.45);
    --navbar-glass-border: rgba(0, 198, 160, 0.22);
}

body.page-fundos-forestacion #orbeNavbar.initial-navbar.scrolled-navbar {
    border-bottom-color: rgba(0, 146, 122, 0.12);
    box-shadow: 0 0.25rem 1rem rgba(0, 104, 84, 0.08);
}

body.page-fundos-forestacion #layoutDefault_footer {
    --layout-footer-bridge-accent: var(--ff-earth);
}

/* Morph desde la franja del home (view-transition-name compartido) */
@view-transition {
    navigation: auto;
}

::view-transition-group(ff-hero),
::view-transition-group(ff-hero-title) {
    animation-duration: 0.75s;
    animation-timing-function: cubic-bezier(0.33, 1, 0.68, 1);
}

::view-transition-old(ff-hero),
::view-transition-new(ff-hero) {
    height: 100%;
    object-fit: cover;
}

.ff-hero__title-wrap {
    view-transition-name: ff-hero-title;
}

@media (prefers-reduced-motion: reduce) {
    ::view-transition-group(*),
    ::view-transition-old(*),
    ::view-transition-new(*) {
        animation: none !important;
    }
}

/* Hero acordeón — título central, textos laterales */
.ff-hero {
    view-transition-name: ff-hero;
    --ff-hero-ease: cubic-bezier(0.33, 1, 0.68, 1);
    --ff-hero-dur: 0.72s;
    --ff-hero-blend: 7.5rem;
    position: relative;
    min-height: min(92vh, 880px);
    background: var(--ff-deep);
    overflow: hidden;
}

.ff-hero__accordion {
    position: relative;
    display: flex;
    min-height: min(92vh, 880px);
    width: 100%;
}

.ff-hero__title-wrap {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%) scale(1);
    z-index: 9;
    pointer-events: none;
    text-align: center;
    width: max-content;
    max-width: 92vw;
    transition: transform var(--ff-hero-dur) var(--ff-hero-ease);
}

.ff-hero__title-main {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0;
    line-height: 0.92;
    letter-spacing: 0;
    text-transform: uppercase;
    margin: 0;
}

.ff-hero__title-forestacion {
    font-size: clamp(1.9rem, 4.6vw, 3rem);
    font-weight: 600;
    color: #fff;
    white-space: nowrap;
    letter-spacing: 0;
    line-height: 1;
    width: max-content;
    text-shadow:
        0 2px 8px rgba(0, 0, 0, 0.75),
        0 8px 28px rgba(0, 0, 0, 0.55);
}

.ff-hero__title-fundos {
    display: block;
    font-size: clamp(2.85rem, 7.5vw, 5.15rem);
    font-weight: 700;
    color: var(--ff-bright, #00cc8d);
    white-space: nowrap;
    letter-spacing: 0;
    line-height: 0.88;
    width: max-content;
    text-align: center;
    transform-origin: center center;
    text-shadow:
        0 2px 6px rgba(0, 40, 32, 0.7),
        0 10px 28px rgba(0, 0, 0, 0.55);
}

.ff-hero__panel {
    position: relative;
    flex: 1 1 50%;
    min-width: 0;
    overflow: hidden;
    outline: none;
    transition: flex var(--ff-hero-dur) var(--ff-hero-ease);
}

.ff-hero__panel[data-ff-side="left"] {
    z-index: 1;
}

.ff-hero__panel[data-ff-side="right"] {
    z-index: 2;
    margin-left: calc(var(--ff-hero-blend) * -1);
    -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 var(--ff-hero-blend));
    mask-image: linear-gradient(90deg, transparent 0%, #000 var(--ff-hero-blend));
}

.ff-hero__accordion--left .ff-hero__panel[data-ff-side="left"],
.ff-hero__accordion--right .ff-hero__panel[data-ff-side="right"] {
    flex: 1.85 1 62%;
}

.ff-hero__accordion--left .ff-hero__panel[data-ff-side="right"],
.ff-hero__accordion--right .ff-hero__panel[data-ff-side="left"] {
    flex: 0.75 1 38%;
}


.ff-hero__media {
    position: absolute;
    inset: 0;
    transition: transform var(--ff-hero-dur) var(--ff-hero-ease);
}

.ff-hero__media video,
.ff-hero__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition:
        filter var(--ff-hero-dur) var(--ff-hero-ease),
        transform var(--ff-hero-dur) var(--ff-hero-ease);
}

.ff-hero__panel.is-expanded .ff-hero__media {
    transform: scale(1.06);
}

.ff-hero__panel.is-expanded .ff-hero__media video,
.ff-hero__panel.is-expanded .ff-hero__media img {
    filter: none;
}

.ff-hero__panel.is-collapsed .ff-hero__media video,
.ff-hero__panel.is-collapsed .ff-hero__media img {
    filter: blur(10px) brightness(0.72) saturate(0.9);
    transform: scale(1.08);
}

.ff-hero__panel.is-collapsed .ff-hero__media {
    transform: scale(1.02);
}

.ff-hero::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 38%;
    z-index: 8;
    pointer-events: none;
    background: linear-gradient(180deg, transparent 0%, rgba(0, 30, 24, 0.55) 100%);
}

.ff-hero__tagline {
    margin: 1rem 0 0;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.32em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.85);
    text-shadow: 0 2px 10px rgba(0, 0, 0, 0.6);
    transition: opacity 0.4s ease;
}

.ff-hero__accordion--left .ff-hero__tagline,
.ff-hero__accordion--right .ff-hero__tagline {
    opacity: 0;
}

.ff-hero__scroll {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 1.25rem;
    z-index: 10;
    width: 2.75rem;
    height: 2.75rem;
    margin-inline: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    text-decoration: none;
}

.ff-hero__scroll:hover .ff-hero__scroll-chevron i {
    color: var(--ff-bright);
}

.ff-hero__scroll-chevron {
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
}

.ff-hero__scroll-chevron i {
    display: block;
    font-size: 1.35rem;
    color: rgba(255, 255, 255, 0.38);
    background: linear-gradient(
        180deg,
        rgba(255, 255, 255, 0.32) 0%,
        rgba(255, 255, 255, 0.32) 38%,
        var(--ff-bright) 50%,
        rgba(255, 255, 255, 0.32) 62%,
        rgba(255, 255, 255, 0.32) 100%
    );
    background-size: 100% 280%;
    background-position: 0% 0%;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: ffHeroScrollChevron 1.8s cubic-bezier(0.33, 1, 0.68, 1) infinite;
}

@keyframes ffHeroScrollChevron {
    0% {
        background-position: 0% 0%;
        transform: translateY(0);
    }

    55% {
        background-position: 0% 100%;
        transform: translateY(0.28rem);
    }

    100% {
        background-position: 0% 100%;
        transform: translateY(0);
    }
}

@media (prefers-reduced-motion: reduce) {
    .ff-hero__scroll-chevron i {
        animation: none;
        background-position: 0% 50%;
        color: var(--ff-bright);
        -webkit-text-fill-color: var(--ff-bright);
    }
}

.ff-hero__overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    background: rgba(0, 52, 44, 0.58);
    transition: opacity var(--ff-hero-dur) var(--ff-hero-ease);
    pointer-events: none;
}

.ff-hero__panel.is-expanded .ff-hero__overlay {
    opacity: 0;
}

.ff-hero__panel.is-collapsed .ff-hero__overlay {
    opacity: 0.82;
}

.ff-hero__edge-shade {
    position: absolute;
    inset: 0;
    z-index: 2;
    opacity: 0.35;
    transition: opacity var(--ff-hero-dur) var(--ff-hero-ease);
    pointer-events: none;
}

.ff-hero__edge-shade--left {
    background: linear-gradient(
        90deg,
        rgba(0, 12, 10, 0.82) 0%,
        rgba(0, 20, 16, 0.45) 22%,
        transparent 52%
    );
}

.ff-hero__edge-shade--right {
    background: linear-gradient(
        270deg,
        rgba(0, 12, 10, 0.82) 0%,
        rgba(0, 20, 16, 0.45) 22%,
        transparent 52%
    );
}

.ff-hero__panel.is-expanded .ff-hero__edge-shade {
    opacity: 1;
}

.ff-hero__panel.is-collapsed .ff-hero__edge-shade {
    opacity: 0.55;
}

.ff-hero__copy {
    position: absolute;
    z-index: 3;
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    flex-direction: column;
    justify-content: center;
    width: min(100%, 34rem);
    padding-top: 0;
    padding-bottom: 0;
    color: #fff;
    pointer-events: none;
    box-sizing: border-box;
    transition: transform 0.62s var(--ff-hero-ease);
}

.ff-hero__panel[data-ff-side="left"] .ff-hero__copy {
    left: 0;
    right: auto;
    align-items: flex-start;
    text-align: left;
    padding-left: clamp(1.5rem, 5vw, 3.5rem);
    padding-right: clamp(2.5rem, 10vw, 5rem);
    transform: translateY(calc(-50% - 0.35rem));
}

.ff-hero__panel[data-ff-side="right"] .ff-hero__copy {
    right: 0;
    left: auto;
    align-items: flex-end;
    text-align: right;
    padding-right: clamp(1.5rem, 5vw, 3.5rem);
    padding-left: clamp(2.5rem, 10vw, 5rem);
    transform: translateY(calc(-50% - 0.35rem));
}

.ff-hero__panel[data-ff-side="left"].is-collapsed .ff-hero__copy {
    transform: translate3d(-130%, calc(-50% - 0.35rem), 0);
}

.ff-hero__panel[data-ff-side="right"].is-collapsed .ff-hero__copy {
    transform: translate3d(130%, calc(-50% - 0.35rem), 0);
}

.ff-hero__eyebrow {
    font-size: clamp(0.95rem, 1.5vw, 1.15rem);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.82);
    margin-bottom: 0.35rem;
    white-space: nowrap;
    transition: font-size 0.5s var(--ff-hero-ease), margin 0.5s var(--ff-hero-ease);
}

.ff-hero__zone-title {
    font-size: clamp(2rem, 3.8vw, 2.85rem);
    line-height: 1.08;
    margin-bottom: 0;
    text-transform: uppercase;
    white-space: nowrap;
    transition: font-size 0.5s var(--ff-hero-ease);
}

.ff-hero__panel.is-expanded .ff-hero__eyebrow {
    font-size: 0.72rem;
    margin-bottom: 0.35rem;
}

.ff-hero__panel.is-expanded .ff-hero__zone-title {
    font-size: clamp(1.35rem, 2.4vw, 1.85rem);
}

.ff-hero__reveal {
    display: grid;
    grid-template-rows: 0fr;
    width: 100%;
    transition: grid-template-rows 0.55s var(--ff-hero-ease);
}

.ff-hero__panel.is-expanded .ff-hero__reveal,
.ff-hero__panel.is-revealed .ff-hero__reveal {
    grid-template-rows: 1fr;
}

.ff-hero__reveal-inner {
    overflow: hidden;
    min-height: 0;
}

.ff-hero__lead {
    font-size: 0.92rem;
    line-height: 1.55;
    color: rgba(255, 255, 255, 0.9);
    margin: 0.85rem 0 0;
    opacity: 0;
    transform: translateY(0.85rem);
    transition:
        opacity 0.45s var(--ff-hero-ease) 0.08s,
        transform 0.5s var(--ff-hero-ease) 0.08s;
}

.ff-hero__panel[data-ff-side="left"] .ff-hero__lead {
    transform: translate(-1.15rem, 0.35rem);
}

.ff-hero__panel[data-ff-side="right"] .ff-hero__lead {
    transform: translate(1.15rem, 0.35rem);
}

.ff-hero__panel.is-expanded .ff-hero__lead,
.ff-hero__panel.is-revealed .ff-hero__lead {
    opacity: 1;
    transform: translate(0, 0);
}

.ff-hero__cta-wrap {
    margin-top: 1.1rem;
    margin-bottom: 0.15rem;
    opacity: 0;
    transform: translateY(0.65rem);
    transition:
        opacity 0.45s var(--ff-hero-ease) 0.12s,
        transform 0.5s var(--ff-hero-ease) 0.12s;
}

.ff-hero__panel.is-expanded .ff-hero__cta-wrap,
.ff-hero__panel.is-revealed .ff-hero__cta-wrap {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}

/* Desktop fluido: todo deriva de --ff-e (expansión) y --ff-c (colapso) 0–1, animados por JS */
.ff-hero--fluid .ff-hero__title-wrap,
.ff-hero--fluid .ff-hero__panel {
    flex: 1 1 50%;
}

.ff-hero--fluid .ff-hero__media,
.ff-hero--fluid .ff-hero__media video,
.ff-hero--fluid .ff-hero__media img,
.ff-hero--fluid .ff-hero__overlay,
.ff-hero--fluid .ff-hero__edge-shade,
.ff-hero--fluid .ff-hero__copy,
.ff-hero--fluid .ff-hero__eyebrow,
.ff-hero--fluid .ff-hero__zone-title,
.ff-hero--fluid .ff-hero__tagline {
    transition: none;
}

.ff-hero--fluid .ff-hero__media {
    transform: scale(calc(1 + 0.08 * var(--ff-e, 0) + 0.03 * var(--ff-c, 0)));
}

.ff-hero--fluid .ff-hero__media video,
.ff-hero--fluid .ff-hero__media img {
    filter:
        blur(calc(10px * var(--ff-c, 0)))
        brightness(calc(1 - 0.28 * var(--ff-c, 0)))
        saturate(calc(1 - 0.1 * var(--ff-c, 0)));
    transform: scale(calc(1 + 0.1 * var(--ff-c, 0)));
}

.ff-hero--fluid .ff-hero__overlay {
    opacity: calc(1 - var(--ff-e, 0) - 0.18 * var(--ff-c, 0));
}

.ff-hero--fluid .ff-hero__edge-shade {
    opacity: calc(0.35 + 0.65 * var(--ff-e, 0) + 0.2 * var(--ff-c, 0));
}

.ff-hero--fluid .ff-hero__panel[data-ff-side="left"] .ff-hero__copy {
    transform: translate3d(calc(-130% * var(--ff-c-slide, var(--ff-c, 0))), calc(-50% - 0.35rem), 0);
}

.ff-hero--fluid .ff-hero__panel[data-ff-side="right"] .ff-hero__copy {
    transform: translate3d(calc(130% * var(--ff-c-slide, var(--ff-c, 0))), calc(-50% - 0.35rem), 0);
}

.ff-hero--fluid .ff-hero__eyebrow {
    font-size: calc(clamp(0.95rem, 1.5vw, 1.15rem) - (clamp(0.95rem, 1.5vw, 1.15rem) - 0.72rem) * var(--ff-e, 0));
}

.ff-hero--fluid .ff-hero__zone-title {
    font-size: calc(clamp(2rem, 3.8vw, 2.85rem) - (clamp(2rem, 3.8vw, 2.85rem) - clamp(1.35rem, 2.4vw, 1.85rem)) * var(--ff-e, 0));
}

.ff-hero--fluid .ff-hero__tagline {
    opacity: calc(1 - 1.6 * var(--ff-title-focus, var(--ff-focus, 0)));
}

.ff-hero__cta {
    --bs-btn-color: var(--ff-deep);
    --bs-btn-bg: #fff;
    --bs-btn-border-color: #fff;
    --bs-btn-hover-bg: var(--ff-bright);
    --bs-btn-hover-border-color: var(--ff-bright);
    --bs-btn-hover-color: #fff;
    font-weight: 600;
    letter-spacing: 0.05em;
    box-shadow: 0 0.35rem 1.25rem rgba(0, 32, 26, 0.25);
}

.ff-hero__panel:focus-visible {
    box-shadow: inset 0 0 0 2px rgba(0, 204, 141, 0.85);
}

@media (max-width: 767.98px) {
    .ff-hero {
        --ff-hero-blend: 0;
        min-height: 0;
        display: flex;
        flex-direction: column;
        background:
            linear-gradient(180deg, #004034 0%, var(--ff-deep) 42%, #006854 100%);
        padding-top: 5.5rem;
        padding-bottom: 0.5rem;
        box-sizing: border-box;
        overflow: hidden;
    }

    .ff-hero::after {
        display: none;
    }

    .ff-hero__title-wrap {
        position: relative;
        left: auto;
        top: auto;
        transform: none !important;
        z-index: 5;
        flex: 0 0 auto;
        width: 100%;
        max-width: none;
        padding: 0.75rem 1rem 1rem;
        text-align: center;
        background: transparent;
        box-sizing: border-box;
        overflow: visible;
    }

    .ff-hero__title-main {
        align-items: center;
    }

    .ff-hero__title-fundos {
        font-size: clamp(2.55rem, 13.5vw, 3.55rem) !important;
        transform: none !important;
        line-height: 0.9;
    }

    .ff-hero__title-forestacion {
        font-size: clamp(1.4rem, 7.2vw, 1.95rem);
        margin-top: 0.15rem;
    }

    .ff-hero__tagline {
        margin-top: 0.55rem;
        opacity: 1 !important;
        letter-spacing: 0.18em;
        font-size: 0.62rem;
    }

    /* Dos tarjetas separadas, sin fusión en diagonal */
    .ff-hero__accordion {
        flex: 0 0 auto;
        flex-direction: row;
        align-items: stretch;
        min-height: 0;
        height: auto;
        gap: 0.55rem;
        margin: 0.35rem 0 0;
        padding: 0 0.85rem;
        box-sizing: border-box;
    }

    .ff-hero__panel {
        flex: 1 1 0 !important;
        width: auto;
        min-width: 0;
        min-height: clamp(13.5rem, 42vw, 16.5rem);
        height: clamp(13.5rem, 42vw, 16.5rem);
        margin: 0 !important;
        border-radius: 0.55rem;
        overflow: hidden;
        box-shadow: 0 0.45rem 1.25rem rgba(0, 24, 18, 0.28);
        background: #00382c;
        -webkit-mask-image: none !important;
        mask-image: none !important;
    }

    .ff-hero__media {
        position: absolute;
        inset: 0;
        z-index: 0;
    }

    .ff-hero__media img,
    .ff-hero__media video {
        display: block;
        width: 100%;
        height: 100%;
        object-fit: cover;
        object-position: center;
    }

    .ff-hero__overlay {
        z-index: 1;
    }

    .ff-hero__edge-shade {
        z-index: 2;
    }

    .ff-hero__copy {
        z-index: 3;
    }

    .ff-hero--fluid .ff-hero__media,
    .ff-hero--fluid .ff-hero__media img,
    .ff-hero--fluid .ff-hero__media video {
        filter: none !important;
        transform: none !important;
    }

    .ff-hero--fluid .ff-hero__overlay {
        opacity: 0.45 !important;
    }

    .ff-hero__panel[data-ff-side="right"] {
        z-index: 1;
        margin-left: 0 !important;
        -webkit-mask-image: none !important;
        mask-image: none !important;
    }

    .ff-hero__panel.is-collapsed .ff-hero__media,
    .ff-hero__panel.is-collapsed .ff-hero__media video,
    .ff-hero__panel.is-collapsed .ff-hero__media img,
    .ff-hero__panel.is-expanded .ff-hero__media,
    .ff-hero__panel.is-expanded .ff-hero__media video,
    .ff-hero__panel.is-expanded .ff-hero__media img {
        filter: none;
        transform: none;
    }

    .ff-hero__panel .ff-hero__overlay {
        opacity: 0.22;
        background: rgba(0, 28, 22, 0.35);
    }

    .ff-hero__edge-shade {
        display: none;
    }

    .ff-hero__copy {
        position: absolute;
        inset: auto 0 0;
        top: auto;
        display: flex;
        flex-direction: column;
        justify-content: flex-end;
        transform: none !important;
        width: 100%;
        max-width: none;
        padding: 1.6rem 0.65rem 0.7rem;
        box-sizing: border-box;
        pointer-events: none;
        background: linear-gradient(180deg, transparent 0%, rgba(0, 24, 18, 0.78) 100%);
    }

    .ff-hero__panel[data-ff-side="left"] .ff-hero__copy,
    .ff-hero__panel[data-ff-side="right"] .ff-hero__copy {
        left: 0;
        right: 0;
        align-items: flex-start;
        text-align: left;
        padding-left: 0.65rem;
        padding-right: 0.65rem;
    }

    .ff-hero__panel[data-ff-side="left"].is-collapsed .ff-hero__copy,
    .ff-hero__panel[data-ff-side="right"].is-collapsed .ff-hero__copy,
    .ff-hero--fluid .ff-hero__panel[data-ff-side="left"] .ff-hero__copy,
    .ff-hero--fluid .ff-hero__panel[data-ff-side="right"] .ff-hero__copy {
        transform: none !important;
    }

    .ff-hero__eyebrow,
    .ff-hero__lead {
        display: none !important;
    }

    .ff-hero__zone-title {
        font-size: clamp(0.78rem, 3.6vw, 0.95rem) !important;
        line-height: 1.15;
        margin: 0;
        white-space: normal;
        text-transform: uppercase;
        text-shadow: 0 1px 8px rgba(0, 0, 0, 0.45);
    }

    .ff-hero__reveal {
        display: block;
        grid-template-rows: none;
        width: 100%;
    }

    .ff-hero__reveal-inner {
        overflow: visible;
        min-height: 0;
    }

    .ff-hero__cta-wrap {
        margin-top: 0.35rem;
        margin-bottom: 0;
        opacity: 1 !important;
        transform: none !important;
        pointer-events: auto;
    }

    .ff-hero__cta {
        font-size: 0.58rem;
        padding: 0.25rem 0.45rem !important;
        letter-spacing: 0.03em;
    }

    .ff-hero__cta i {
        font-size: 0.65rem;
        margin-left: 0.2rem !important;
    }

    .ff-hero__scroll {
        position: relative;
        left: auto;
        right: auto;
        bottom: auto;
        margin: 0.1rem auto 0.75rem;
    }
}

/* Entrada de página — scroll reveal */
.page-fundos-forestacion .ff-enter {
    --ff-enter-ease: cubic-bezier(0.33, 1, 0.68, 1);
    --ff-enter-duration: 0.72s;
    opacity: 0;
    transition:
        opacity var(--ff-enter-duration) var(--ff-enter-ease),
        transform var(--ff-enter-duration) var(--ff-enter-ease);
    transition-delay: var(--ff-enter-delay, 0s);
    will-change: opacity, transform;
}

.page-fundos-forestacion .ff-enter.ff-enter--fade-up {
    transform: translate3d(0, 1.35rem, 0);
}

.page-fundos-forestacion .ff-enter.ff-enter--from-left {
    transform: translate3d(-1.75rem, 0, 0);
}

.page-fundos-forestacion .ff-enter.ff-enter--from-right {
    transform: translate3d(1.75rem, 0, 0);
}

.page-fundos-forestacion .ff-enter.ff-enter--fade-in {
    transform: none;
}

.page-fundos-forestacion .ff-enter.is-visible {
    opacity: 1;
    transform: translate3d(0, 0, 0);
}

.page-fundos-forestacion .ff-enter.ff-enter--fade-in.is-visible {
    transform: none;
}

@media (prefers-reduced-motion: reduce) {
    .page-fundos-forestacion .ff-enter {
        opacity: 1;
        transform: none;
        transition: none;
    }
}

/* Zonas — texto + mosaico de fotos con mapa integrado */
.ff-zona {
    --ff-zona-map-h: 7.5rem;
    position: relative;
    width: 100%;
    box-sizing: border-box;
    padding: clamp(2.5rem, 5vw, 4rem) clamp(1.25rem, 4vw, 4rem);
    background: #fff;
    scroll-margin-top: 4rem;
}

.ff-zona--alt {
    background: linear-gradient(180deg, #f2f8f5 0%, #eaf4ef 100%);
}

.ff-zona__layout {
    display: grid;
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
    gap: clamp(1.75rem, 4vw, 3.5rem);
    align-items: stretch;
}

.ff-zona--alt .ff-zona__layout {
    grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
}

.ff-zona--alt .ff-zona__copy-col {
    order: 2;
}

.ff-zona__copy-col {
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-width: 0;
}

.ff-zona__header {
    position: relative;
    margin-bottom: 1.5rem;
    padding-left: 1.1rem;
    border-left: 3px solid var(--ff-bright);
}

.ff-zona__index {
    display: block;
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    color: var(--ff-bright);
    line-height: 1;
    margin-bottom: 0.45rem;
}

.ff-zona__region {
    font-size: 0.72rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--ff-earth);
    margin-bottom: 0.2rem !important;
}

.ff-zona__title {
    color: var(--ff-deep);
    font-size: clamp(1.75rem, 3vw, 2.5rem);
    line-height: 1.02;
    text-transform: uppercase;
}

.ff-zona__superficie {
    margin-top: 0.35rem;
    font-size: 0.95rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    color: var(--ff-emerald);
}

.ff-hero__superficie {
    margin-top: 0.25rem;
    font-size: clamp(0.85rem, 1.5vw, 1rem);
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.92);
    text-shadow: 0 1px 8px rgba(0, 0, 0, 0.45);
}

.ff-zona__block {
    display: grid;
    grid-template-columns: 8.5rem minmax(0, 1fr);
    gap: 1rem;
    padding: 0.9rem 0;
}

.ff-zona__block + .ff-zona__block {
    border-top: 1px solid rgba(0, 178, 127, 0.22);
}

.ff-zona__block-title {
    font-size: 0.78rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--ff-primary);
    margin: 0.15rem 0 0;
    line-height: 1.3;
}

.ff-zona__block-body {
    font-size: 0.92rem;
    line-height: 1.6;
    color: #44524f;
}

.ff-zona__block-body p {
    margin-bottom: 0.5rem;
}

.ff-zona__block-body p:last-child {
    margin-bottom: 0;
}

/* Mosaico: una foto grande + dos apiladas, mapa como franja inferior */
.ff-zona__visual {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 0;
    min-height: 22rem;
}

.ff-zona__gallery {
    --ff-zona-gallery-gap: 6px;
    --ff-zona-video-strip-h: clamp(5.5rem, 13vh, 7.75rem);
    flex: 1 1 auto;
    display: grid;
    grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
    grid-template-rows: repeat(2, minmax(0, 1fr));
    gap: var(--ff-zona-gallery-gap);
    min-height: 13rem;
}

.ff-zona__gallery-item {
    position: relative;
    margin: 0;
    min-width: 0;
    min-height: 0;
    overflow: hidden;
    background: var(--ff-deep);
}

.ff-zona__gallery-item:first-child {
    grid-row: 1 / span 2;
}

/* Fundo Chacabuco (zona alterna): espejo — dos fotos a la izquierda, grande a la derecha */
.ff-zona--alt .ff-zona__gallery {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr);
}

.ff-zona--alt .ff-zona__gallery-item:first-child {
    grid-column: 2;
    grid-row: 1 / span 2;
}

.ff-zona--alt .ff-zona__gallery-item:nth-child(2) {
    grid-column: 1;
    grid-row: 1;
}

.ff-zona--alt .ff-zona__gallery-item:nth-child(3) {
    grid-column: 1;
    grid-row: 2;
}

.ff-zona__gallery-item:only-child {
    grid-column: 1 / -1;
}

.ff-zona__gallery-cell--hero {
    display: flex;
    flex-direction: column;
    min-height: 0;
    overflow: visible;
    background: transparent;
}

.ff-zona__gallery-hero-stack {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    height: 100%;
    gap: var(--ff-zona-gallery-gap, 6px);
}

.ff-zona__gallery-hero-media {
    position: relative;
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
    background: var(--ff-deep);
}

.ff-zona__gallery-hero-media .ff-zona__cell-stack {
    position: absolute;
    inset: 0;
    overflow: hidden;
}

.ff-zona__gallery-video {
    position: relative;
    flex: 0 0 var(--ff-zona-video-strip-h);
    height: var(--ff-zona-video-strip-h);
    overflow: hidden;
    background: transparent;
}

.ff-zona__gallery-video-el {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    pointer-events: none;
}

.ff-zona__gallery-video-fs,
.ff-zona__gallery-trigger-hint {
    position: absolute;
    inset: 0;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0;
    padding: 0;
    border: 0;
    background: rgba(0, 28, 22, 0.42);
    color: #fff;
    font-size: 1.15rem;
    opacity: 0;
    transition: opacity 0.28s ease, background-color 0.28s ease;
    appearance: none;
    pointer-events: none;
}

.ff-zona__gallery-video-fs {
    cursor: pointer;
    pointer-events: auto;
}

.ff-zona__gallery-video:hover .ff-zona__gallery-video-fs,
.ff-zona__gallery-video:focus-within .ff-zona__gallery-video-fs {
    opacity: 1;
}

.ff-zona__gallery-video-fs:hover,
.ff-zona__gallery-video-fs:focus-visible {
    background: rgba(0, 28, 22, 0.58);
}

.ff-zona__gallery-video-fs:focus-visible {
    outline: 2px solid rgba(255, 255, 255, 0.9);
    outline-offset: -3px;
}

.ff-zona__video-fs-root {
    position: absolute;
    inset: 0;
}

.ff-zona__video-fs-root:fullscreen,
.ff-zona__video-fs-root:-webkit-full-screen {
    width: 100%;
    height: 100%;
    background: #001a14;
}

.ff-zona__video-fs-root.ff-zona__video-fs-root--fallback-fs {
    position: fixed;
    inset: 0;
    z-index: 1080;
    width: 100%;
    height: 100%;
    background: #001a14;
}

body.ff-video-fs-body-lock {
    overflow: hidden;
}

.ff-zona__video-fs-root:fullscreen .ff-zona__gallery-video-el,
.ff-zona__video-fs-root:-webkit-full-screen .ff-zona__gallery-video-el,
.ff-zona__video-fs-root.ff-zona__video-fs-root--fallback-fs .ff-zona__gallery-video-el {
    width: 100%;
    height: 100%;
    object-fit: cover;
    pointer-events: auto;
}

.ff-zona__video-fs-root.is-morphing {
    overflow: hidden;
    will-change: top, left, width, height;
}

.ff-zona__video-fs-root.is-morphing .ff-zona__gallery-video-el {
    pointer-events: none;
}

.ff-zona__video-fs-root:fullscreen .ff-zona__gallery-video-fs,
.ff-zona__video-fs-root:-webkit-full-screen .ff-zona__gallery-video-fs,
.ff-zona__video-fs-root.ff-zona__video-fs-root--fallback-fs .ff-zona__gallery-video-fs {
    opacity: 0;
    pointer-events: none;
}

.ff-video-fs-chrome {
    display: none;
    pointer-events: none;
}

.ff-zona__video-fs-root:fullscreen .ff-video-fs-chrome,
.ff-zona__video-fs-root:-webkit-full-screen .ff-video-fs-chrome,
.ff-zona__video-fs-root.ff-zona__video-fs-root--fallback-fs .ff-video-fs-chrome {
    display: block;
    pointer-events: none;
}

.ff-video-fs-close {
    position: absolute;
    top: clamp(0.75rem, 2.5vh, 1.35rem);
    right: clamp(0.75rem, 2.5vw, 1.35rem);
    z-index: 4;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.65rem;
    height: 2.65rem;
    margin: 0;
    padding: 0;
    border: 1px solid rgba(255, 255, 255, 0.28);
    border-radius: 999px;
    background: rgba(0, 28, 22, 0.55);
    color: #fff;
    font-size: 1.2rem;
    cursor: pointer;
    pointer-events: auto;
    backdrop-filter: blur(8px);
    transition:
        opacity 0.22s ease,
        visibility 0s linear 0.22s,
        background-color 0.25s ease,
        border-color 0.25s ease,
        transform 0.22s ease;
    appearance: none;
}

.ff-zona__video-fs-root.ff-zona__video-fs-root--fallback-fs.is-video-fs-closing:not(.ff-proyecto-fs-root) .ff-video-fs-close {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: scale(0.82);
}

.ff-video-fs-close:hover,
.ff-video-fs-close:focus-visible {
    background: rgba(0, 40, 32, 0.78);
    border-color: rgba(255, 255, 255, 0.5);
}

.ff-video-fs-close:focus-visible {
    outline: 2px solid rgba(255, 255, 255, 0.92);
    outline-offset: 2px;
}

.ff-video-fs-panel {
    --ff-l3-ease: cubic-bezier(0.33, 1, 0.68, 1);
    --ff-fs-panel-w: min(22.5rem, calc(100vw - 1.75rem));
    position: absolute;
    right: clamp(0.85rem, 3vw, 2rem);
    bottom: clamp(0.85rem, 3vh, 2rem);
    z-index: 3;
    width: var(--ff-fs-panel-w);
    max-width: var(--ff-fs-panel-w);
    pointer-events: auto;
    opacity: 0;
    transform: translateY(1.15rem);
    transition: opacity 0.55s var(--ff-l3-ease), transform 0.6s var(--ff-l3-ease);
}

.ff-video-fs-panel.is-entered {
    opacity: 1;
    transform: translateY(0);
}

.ff-video-fs-gallery {
    width: 100%;
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    margin-bottom: 0;
    border-radius: 0.35rem;
    border: 1px solid transparent;
    box-shadow: none;
    background: rgba(0, 20, 16, 0.65);
    transition:
        max-height 0.58s var(--ff-l3-ease),
        opacity 0.42s ease,
        margin 0.58s var(--ff-l3-ease),
        border-color 0.35s ease,
        box-shadow 0.45s ease;
}

.ff-video-fs-gallery__viewport {
    position: relative;
    width: 100%;
    height: clamp(7.75rem, 22vh, 11.5rem);
}

.ff-video-fs-l3:hover .ff-video-fs-gallery,
.ff-video-fs-l3:focus-within .ff-video-fs-gallery,
.ff-video-fs-l3.is-detail-open .ff-video-fs-gallery {
    max-height: 13rem;
    opacity: 1;
    margin-bottom: 0.65rem;
    border-color: rgba(255, 255, 255, 0.14);
    box-shadow: 0 0.45rem 1.35rem rgba(0, 0, 0, 0.32);
}

.ff-video-fs-gallery__stack {
    position: absolute;
    inset: 0;
    overflow: hidden;
}

.ff-video-fs-gallery__layer img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    pointer-events: none;
}

.ff-video-fs-gallery__layer.is-active .ff-video-fs-gallery__caption,
.ff-video-fs-gallery__layer.is-entering .ff-video-fs-gallery__caption {
    opacity: 1;
    transform: none;
}

.ff-video-fs-gallery .ff-zona__gallery-caption {
    padding-bottom: 1.05rem;
}

.ff-video-fs-gallery__progress {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 4;
    height: 3px;
    background: rgba(255, 255, 255, 0.18);
    pointer-events: none;
}

.ff-video-fs-gallery__progress-bar {
    display: block;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, var(--ff-emerald, #00b27f), var(--ff-bright, #00cc8d));
    transform: scaleX(0);
    transform-origin: left center;
    will-change: transform;
}

.ff-video-fs-gallery__progress-bar.is-running {
    animation: ffVideoFsGalleryProgress var(--ff-fs-gallery-interval, 4500ms) linear forwards;
}

@keyframes ffVideoFsGalleryProgress {
    from {
        transform: scaleX(0);
    }
    to {
        transform: scaleX(1);
    }
}

.ff-video-fs-l3 {
    width: 100%;
}

.ff-video-fs-l3__stack {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
}

.ff-video-fs-l3__detail {
    overflow: hidden;
    max-height: 0;
    opacity: 0;
    transform: translateY(0.65rem);
    transition:
        max-height 0.55s var(--ff-l3-ease),
        opacity 0.4s ease,
        transform 0.55s var(--ff-l3-ease),
        margin 0.55s var(--ff-l3-ease);
    margin-bottom: 0;
}

.ff-video-fs-l3:hover .ff-video-fs-l3__detail,
.ff-video-fs-l3:focus-within .ff-video-fs-l3__detail,
.ff-video-fs-l3.is-detail-open .ff-video-fs-l3__detail {
    max-height: 28rem;
    opacity: 1;
    transform: translateY(0);
    margin-bottom: 0.65rem;
}

.ff-video-fs-l3__lead {
    margin: 0 0 0.65rem;
    padding: 0.85rem 1rem 0;
    font-size: 0.82rem;
    line-height: 1.45;
    color: rgba(255, 255, 255, 0.92);
}

.ff-video-fs-l3__facts {
    margin: 0;
    padding: 0 1rem 0.85rem;
    list-style: none;
    font-size: 0.76rem;
    line-height: 1.42;
    color: rgba(255, 255, 255, 0.86);
}

.ff-video-fs-l3__facts li {
    position: relative;
    padding-left: 0.85rem;
    margin-bottom: 0.45rem;
}

.ff-video-fs-l3__facts li:last-child {
    margin-bottom: 0;
}

.ff-video-fs-l3__facts li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0.45em;
    width: 0.3rem;
    height: 0.3rem;
    border-radius: 50%;
    background: var(--ff-bright, #00cc8d);
}

.ff-video-fs-l3__facts strong {
    color: #fff;
    font-weight: 600;
}

.ff-video-fs-l3__bar {
    position: relative;
    padding: 0.75rem 1rem 0.8rem 0.95rem;
    border-radius: 0.35rem;
    background: linear-gradient(125deg, rgba(0, 40, 32, 0.92) 0%, rgba(0, 60, 50, 0.78) 100%);
    border: 1px solid rgba(255, 255, 255, 0.14);
    box-shadow: 0 0.65rem 2rem rgba(0, 0, 0, 0.38);
    backdrop-filter: blur(10px);
    transition: transform 0.55s var(--ff-l3-ease), box-shadow 0.4s ease;
}

.ff-video-fs-l3__bar::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0.55rem;
    bottom: 0.55rem;
    width: 3px;
    border-radius: 0 2px 2px 0;
    background: linear-gradient(180deg, var(--ff-bright, #00cc8d), var(--ff-emerald, #00b27f));
}

.ff-video-fs-l3:hover .ff-video-fs-l3__bar,
.ff-video-fs-l3:focus-within .ff-video-fs-l3__bar,
.ff-video-fs-l3.is-detail-open .ff-video-fs-l3__bar {
    transform: translateY(-2px);
    box-shadow: 0 0.85rem 2.35rem rgba(0, 0, 0, 0.45);
}

.ff-video-fs-l3__detail {
    border-radius: 0.35rem;
    background: linear-gradient(160deg, rgba(0, 24, 20, 0.94) 0%, rgba(0, 48, 40, 0.82) 100%);
    border: 1px solid rgba(255, 255, 255, 0.12);
    backdrop-filter: blur(12px);
}

.ff-video-fs-l3__eyebrow {
    display: block;
    margin-bottom: 0.2rem;
    font-size: 0.62rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--ff-bright, #00cc8d);
}

.ff-video-fs-l3__name {
    font-size: clamp(1.28rem, 3vw, 1.62rem);
    line-height: 1.1;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #fff;
}

.ff-video-fs-l3__loc {
    margin-top: 0.28rem;
    font-size: 0.78rem;
    line-height: 1.35;
    color: rgba(255, 255, 255, 0.78);
}

.ff-video-fs-l3__loc i {
    margin-right: 0.3rem;
    color: var(--ff-mint, #00c6a0);
    font-size: 0.72rem;
}

.ff-video-fs-l3__loc-region {
    color: rgba(255, 255, 255, 0.62);
}

@media (prefers-reduced-motion: reduce) {
    .ff-video-fs-panel,
    .ff-video-fs-l3__detail,
    .ff-video-fs-l3__bar,
    .ff-video-fs-gallery,
    .ff-video-fs-gallery__progress-bar {
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
    }

    .ff-video-fs-panel {
        opacity: 1;
        transform: none;
    }
}

.ff-zona__gallery-item img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.8s cubic-bezier(0.33, 1, 0.68, 1);
    pointer-events: none;
}

.ff-zona__gallery-trigger {
    position: absolute;
    inset: 0;
    z-index: 1;
    display: block;
    width: 100%;
    height: 100%;
    padding: 0;
    margin: 0;
    border: 0;
    background: transparent;
    cursor: zoom-in;
    appearance: none;
    overflow: hidden;
}

.ff-zona__gallery-trigger:focus-visible {
    outline: 2px solid rgba(255, 255, 255, 0.92);
    outline-offset: -3px;
}

.ff-zona__gallery-trigger:hover .ff-zona__gallery-trigger-hint,
.ff-zona__gallery-trigger:focus-visible .ff-zona__gallery-trigger-hint {
    opacity: 1;
}

.ff-zona__gallery-trigger:hover .ff-zona__gallery-trigger-hint {
    background: rgba(0, 28, 22, 0.58);
}

.ff-zona__gallery-caption {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 1.5rem 0.85rem 0.6rem;
    font-size: 0.74rem;
    line-height: 1.35;
    color: #fff;
    background: linear-gradient(180deg, transparent 0%, rgba(0, 40, 32, 0.78) 100%);
    opacity: 0;
    transform: translateY(0.4rem);
    transition: opacity 0.35s ease, transform 0.35s ease;
    pointer-events: none;
}

.ff-zona__gallery-item:first-child .ff-zona__gallery-caption,
.ff-zona__gallery-cell:hover .ff-zona__cell-layer.is-active .ff-zona__gallery-caption {
    opacity: 1;
    transform: none;
}

/* Galería mosaico — turnos alternados + empuje (keyframes) */
.ff-zona__gallery--grid-rotate {
    --ff-slide-duration: 0.92s;
}

.ff-zona__gallery--grid-rotate .ff-zona__gallery-item.ff-zona__gallery-cell {
    isolation: isolate;
}

.ff-zona__gallery--grid-rotate .ff-zona__gallery-cell .ff-zona__cell-stack {
    position: absolute;
    inset: 0;
    overflow: hidden;
}

.ff-zona__cell-layer {
    position: absolute;
    inset: 0;
    margin: 0;
    visibility: hidden;
    pointer-events: none;
    z-index: 0;
    transform: translate3d(0, 0, 0);
}

.ff-zona__cell-layer.is-active:not(.is-exiting):not(.is-entering) {
    visibility: visible;
    pointer-events: auto;
    z-index: 1;
}

.ff-zona__cell-layer.is-entering,
.ff-zona__cell-layer.is-exiting {
    visibility: visible;
    pointer-events: none;
    animation-duration: var(--ff-slide-duration);
    animation-timing-function: cubic-bezier(0.45, 0.05, 0.2, 1);
    animation-fill-mode: forwards;
}

.ff-zona__cell-layer.is-entering {
    z-index: 2;
}

.ff-zona__cell-layer.is-exiting {
    z-index: 1;
}

.ff-zona__cell-layer.ff-push-enter-from-left {
    animation-name: ffPushEnterFromLeft;
}

.ff-zona__cell-layer.ff-push-enter-from-right {
    animation-name: ffPushEnterFromRight;
}

.ff-zona__cell-layer.ff-push-enter-from-up {
    animation-name: ffPushEnterFromUp;
}

.ff-zona__cell-layer.ff-push-enter-from-down {
    animation-name: ffPushEnterFromDown;
}

.ff-zona__cell-layer.ff-push-exit-to-left {
    animation-name: ffPushExitToLeft;
}

.ff-zona__cell-layer.ff-push-exit-to-right {
    animation-name: ffPushExitToRight;
}

.ff-zona__cell-layer.ff-push-exit-to-up {
    animation-name: ffPushExitToUp;
}

.ff-zona__cell-layer.ff-push-exit-to-down {
    animation-name: ffPushExitToDown;
}

@keyframes ffPushEnterFromLeft {
    from { transform: translate3d(-100%, 0, 0); }
    to { transform: translate3d(0, 0, 0); }
}

@keyframes ffPushEnterFromRight {
    from { transform: translate3d(100%, 0, 0); }
    to { transform: translate3d(0, 0, 0); }
}

@keyframes ffPushEnterFromUp {
    from { transform: translate3d(0, -100%, 0); }
    to { transform: translate3d(0, 0, 0); }
}

@keyframes ffPushEnterFromDown {
    from { transform: translate3d(0, 100%, 0); }
    to { transform: translate3d(0, 0, 0); }
}

@keyframes ffPushExitToLeft {
    from { transform: translate3d(0, 0, 0); }
    to { transform: translate3d(-100%, 0, 0); }
}

@keyframes ffPushExitToRight {
    from { transform: translate3d(0, 0, 0); }
    to { transform: translate3d(100%, 0, 0); }
}

@keyframes ffPushExitToUp {
    from { transform: translate3d(0, 0, 0); }
    to { transform: translate3d(0, -100%, 0); }
}

@keyframes ffPushExitToDown {
    from { transform: translate3d(0, 0, 0); }
    to { transform: translate3d(0, 100%, 0); }
}

.ff-zona__gallery-cell:first-child .ff-zona__cell-layer.is-active .ff-zona__gallery-caption,
.ff-zona__cell-layer.is-active .ff-zona__gallery-caption {
    opacity: 1;
    transform: none;
}

.ff-zona__cell-layer.is-active:not(.is-entering):not(.is-exiting) .ff-zona__gallery-trigger:hover img,
.ff-zona__cell-layer.is-active:not(.is-entering):not(.is-exiting) .ff-zona__gallery-trigger:focus-visible img {
    transform: scale(1.05);
}

@media (prefers-reduced-motion: reduce) {
    .ff-zona__cell-layer.is-entering,
    .ff-zona__cell-layer.is-exiting {
        animation: none;
    }

    .ff-zona__cell-layer:not(.is-active) {
        display: none;
    }
}

.ff-zona__mapa-wrap {
    --ff-zona-map-ui-opacity: 0.38;
    --ff-zona-map-ui-ease: cubic-bezier(0.33, 1, 0.68, 1);
    position: relative;
    flex: 0 0 var(--ff-zona-map-h);
    height: var(--ff-zona-map-h);
    overflow: hidden;
}

.ff-zona__mapa-wrap:not(.is-map-ui-ready) .ff-zona__mapa-tag,
.ff-zona__mapa-wrap:not(.is-map-ui-ready) .ff-zona__mapa-tiles,
.ff-zona__mapa-wrap:not(.is-map-ui-ready) .leaflet-control-zoom {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translate3d(0, 0.4rem, 0);
}

.ff-zona__mapa-wrap.is-map-ui-ready .ff-zona__mapa-tag,
.ff-zona__mapa-wrap.is-map-ui-ready .ff-zona__mapa-tiles,
.ff-zona__mapa-wrap.is-map-ui-ready .leaflet-control-zoom {
    opacity: var(--ff-zona-map-ui-opacity);
    visibility: visible;
    pointer-events: auto;
    transform: translate3d(0, 0, 0);
    transition:
        opacity 0.48s var(--ff-zona-map-ui-ease),
        transform 0.52s var(--ff-zona-map-ui-ease),
        visibility 0s;
}

.ff-zona__mapa-wrap.is-map-ui-ready .ff-zona__mapa-tag {
    transition-delay: 0.04s;
}

.ff-zona__mapa-wrap.is-map-ui-ready .leaflet-control-zoom {
    transition-delay: 0.1s;
}

.ff-zona__mapa-wrap.is-map-ui-ready .ff-zona__mapa-tiles {
    transition-delay: 0.16s;
}

.ff-zona__mapa-wrap.is-map-ui-ready:hover .ff-zona__mapa-tag,
.ff-zona__mapa-wrap.is-map-ui-ready:hover .ff-zona__mapa-tiles,
.ff-zona__mapa-wrap.is-map-ui-ready:hover .leaflet-control-zoom,
.ff-zona__mapa-wrap.is-map-ui-ready:focus-within .ff-zona__mapa-tag,
.ff-zona__mapa-wrap.is-map-ui-ready:focus-within .ff-zona__mapa-tiles,
.ff-zona__mapa-wrap.is-map-ui-ready:focus-within .leaflet-control-zoom {
    opacity: 1;
}

.ff-zona__mapa-tag {
    position: absolute;
    top: 0.55rem;
    right: 0.55rem;
    z-index: 500;
    padding: 0.3rem 0.65rem;
    font-size: 0.68rem;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #fff;
    background: var(--ff-deep);
    pointer-events: none;
}

.ff-mapa-osm {
    width: 100%;
    z-index: 1;
}

.ff-zona__mapa {
    height: 100% !important;
    min-height: 0 !important;
}

.ff-mapa-osm.leaflet-container {
    font-family: inherit;
}

.ff-zona__mapa-tiles {
    position: absolute;
    left: 0.45rem;
    bottom: 0.45rem;
    z-index: 500;
    display: inline-flex;
    gap: 0.25rem;
    padding: 0.2rem;
    border-radius: 999px;
    background: rgba(0, 28, 22, 0.78);
    border: 1px solid rgba(255, 255, 255, 0.16);
    pointer-events: auto;
}

.ff-zona__mapa-tiles-btn {
    margin: 0;
    padding: 0.28rem 0.55rem;
    border: none;
    border-radius: 999px;
    background: transparent;
    color: rgba(255, 255, 255, 0.82);
    font-size: 0.62rem;
    line-height: 1.2;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    cursor: pointer;
    appearance: none;
    transition: background 0.2s ease, color 0.2s ease;
}

.ff-zona__mapa-tiles-btn.is-active,
.ff-zona__mapa-tiles-btn:hover,
.ff-zona__mapa-tiles-btn:focus-visible {
    background: rgba(0, 204, 141, 0.38);
    color: #fff;
}

.ff-zona__mapa-wrap .leaflet-control-attribution {
    display: none !important;
}

.ff-zona__mapa-wrap .leaflet-control-zoom {
    border: none !important;
    box-shadow: 0 0.35rem 1rem rgba(0, 0, 0, 0.28) !important;
    transition:
        opacity 0.48s var(--ff-zona-map-ui-ease, cubic-bezier(0.33, 1, 0.68, 1)),
        transform 0.52s var(--ff-zona-map-ui-ease, cubic-bezier(0.33, 1, 0.68, 1)),
        visibility 0s;
}

.ff-zona__mapa-wrap .leaflet-control-zoom a {
    background: rgba(0, 28, 22, 0.82) !important;
    color: #fff !important;
    border-color: rgba(255, 255, 255, 0.18) !important;
}

.ff-zona__mapa-wrap .leaflet-control-zoom a:hover {
    background: rgba(0, 204, 141, 0.42) !important;
}

@media (hover: none) {
    .ff-zona__mapa-wrap.is-map-ui-ready .ff-zona__mapa-tag,
    .ff-zona__mapa-wrap.is-map-ui-ready .ff-zona__mapa-tiles,
    .ff-zona__mapa-wrap.is-map-ui-ready .leaflet-control-zoom {
        opacity: 0.72;
    }
}

@media (prefers-reduced-motion: reduce) {
    .ff-zona__mapa-wrap.is-map-ui-ready .ff-zona__mapa-tag,
    .ff-zona__mapa-wrap.is-map-ui-ready .ff-zona__mapa-tiles,
    .ff-zona__mapa-wrap.is-map-ui-ready .leaflet-control-zoom {
        opacity: var(--ff-zona-map-ui-opacity);
        transform: none;
        transition: opacity 0.2s ease;
    }

    .ff-zona__mapa-wrap.is-map-ui-ready:hover .ff-zona__mapa-tag,
    .ff-zona__mapa-wrap.is-map-ui-ready:hover .ff-zona__mapa-tiles,
    .ff-zona__mapa-wrap.is-map-ui-ready:hover .leaflet-control-zoom,
    .ff-zona__mapa-wrap.is-map-ui-ready:focus-within .ff-zona__mapa-tag,
    .ff-zona__mapa-wrap.is-map-ui-ready:focus-within .ff-zona__mapa-tiles,
    .ff-zona__mapa-wrap.is-map-ui-ready:focus-within .leaflet-control-zoom {
        opacity: 1;
    }
}

@media (max-width: 1199.98px) {
    .ff-zona__block {
        grid-template-columns: 1fr;
        gap: 0.3rem;
    }
}

@media (max-width: 991.98px) {
    .ff-zona__layout,
    .ff-zona--alt .ff-zona__layout {
        grid-template-columns: 1fr;
    }

    .ff-zona--alt .ff-zona__copy-col {
        order: 0;
    }

    .ff-zona__visual {
        min-height: 0;
    }

    .ff-zona__gallery {
        flex: none;
        height: clamp(15rem, 55vw, 22rem);
    }
}

@media (max-width: 575.98px) {
    .ff-zona__gallery {
        grid-template-columns: 1fr 1fr;
        grid-template-rows: 1.4fr 1fr;
        height: 20rem;
    }

    .ff-zona__gallery-item:first-child {
        grid-row: auto;
        grid-column: 1 / -1;
    }

    .ff-zona--alt .ff-zona__gallery {
        grid-template-columns: 1fr 1fr;
    }

    .ff-zona--alt .ff-zona__gallery-item:first-child,
    .ff-zona--alt .ff-zona__gallery-item:nth-child(2),
    .ff-zona--alt .ff-zona__gallery-item:nth-child(3) {
        grid-column: auto;
        grid-row: auto;
    }

    .ff-zona--alt .ff-zona__gallery-item:first-child {
        grid-column: 1 / -1;
    }
}

/* Proyectos integrados — dos columnas a ancho completo */
.ff-proyectos-integrados {
    width: 100%;
    box-sizing: border-box;
    scroll-margin-top: 4rem;
    background: linear-gradient(180deg, #eaf4ef 0%, #f2f8f5 12%, #fff 100%);
}

.ff-proyectos-integrados__intro {
    padding: clamp(2.25rem, 4.5vw, 3.25rem) clamp(1.25rem, 4vw, 4rem) clamp(1.5rem, 3vw, 2rem);
    text-align: center;
    border-top: 1px solid rgba(0, 146, 122, 0.12);
}

.ff-proyectos-integrados__eyebrow {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--ff-earth);
    margin-bottom: 0.5rem;
}

.ff-proyectos-integrados__title {
    color: var(--ff-deep);
    font-size: clamp(1.65rem, 3.2vw, 2.35rem);
    line-height: 1.05;
    text-transform: uppercase;
}

.ff-proyectos-integrados__list {
    display: flex;
    flex-direction: column;
    width: 100%;
    gap: 0;
    border-top: 1px solid rgba(0, 104, 84, 0.1);
}

.ff-proyectos-integrados__feature {
    position: relative;
    width: 100%;
    min-height: clamp(22rem, 56vh, 38rem);
    background-color: var(--ff-deep);
    overflow: hidden;
    border-bottom: 1px solid rgba(0, 104, 84, 0.1);
}

.ff-proyectos-integrados__feature:last-child {
    border-bottom: none;
}

.ff-proyectos-integrados__feature-stage {
    position: absolute;
    inset: 0;
    z-index: 0;
}

.ff-proyectos-integrados__gallery {
    width: 100%;
    height: 100%;
    min-height: clamp(22rem, 56vh, 38rem);
    flex: none;
}

.ff-proyectos-integrados__gallery .ff-zona__gallery-caption {
    display: none;
}

.ff-proyectos-integrados__gallery .ff-zona__gallery-trigger-hint {
    background: transparent;
}

.ff-proyectos-integrados__gallery .ff-zona__gallery-trigger:hover .ff-zona__gallery-trigger-hint,
.ff-proyectos-integrados__gallery .ff-zona__gallery-trigger:focus-visible .ff-zona__gallery-trigger-hint {
    background: transparent;
}

.ff-proyectos-integrados__feature-content {
    position: relative;
    z-index: 2;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    align-items: flex-start;
    min-height: clamp(22rem, 56vh, 38rem);
    padding: clamp(1.5rem, 3.5vw, 2.5rem) clamp(1.25rem, 4vw, 4rem);
    padding-left: clamp(0.85rem, 2.2vw, 1.35rem);
    box-sizing: border-box;
    color: #fff;
    pointer-events: none;
}

.ff-proyectos-integrados__feature-content .ff-proyectos-integrados__col-panel {
    pointer-events: auto;
}

.ff-proyectos-integrados__col-panel {
    --ff-col-panel-solid: rgba(0, 28, 22, 0.82);
    width: min(100%, clamp(16rem, 62%, 24.5rem));
    max-width: none;
    padding: clamp(1.1rem, 2.2vw, 1.5rem) clamp(2.75rem, 22%, 5rem) clamp(1.1rem, 2.2vw, 1.5rem)
        clamp(1.2rem, 2.8vw, 1.65rem);
    box-sizing: border-box;
    border: none;
    border-left: 1px solid rgba(255, 255, 255, 0.1);
    background: linear-gradient(
        90deg,
        var(--ff-col-panel-solid) 0%,
        rgba(0, 28, 22, 0.76) 38%,
        rgba(0, 28, 22, 0.38) 68%,
        rgba(0, 28, 22, 0) 100%
    );
}

.ff-proyectos-integrados__lead {
    margin-top: 0.75rem;
    max-width: 28rem;
    font-size: 0.88rem;
    line-height: 1.5;
    color: rgba(255, 255, 255, 0.9);
}

.ff-proyectos-integrados__index {
    display: block;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    color: var(--ff-bright);
    line-height: 1;
    margin-bottom: 0.45rem;
}

.ff-proyectos-integrados__region {
    font-size: 0.72rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.78);
}

.ff-proyectos-integrados__name {
    font-size: clamp(1.5rem, 2.8vw, 2.15rem);
    line-height: 1.05;
    text-transform: uppercase;
    margin-top: 0.2rem;
    text-shadow: 0 2px 18px rgba(0, 0, 0, 0.35);
}

.ff-proyectos-integrados__loc {
    margin-top: 0.55rem;
    font-size: 0.84rem;
    color: rgba(255, 255, 255, 0.88);
}

.ff-proyectos-integrados__loc i {
    color: var(--ff-bright);
    margin-right: 0.25rem;
}

.ff-proyectos-integrados__cta-wrap {
    margin-top: 1.15rem;
}

.ff-proyectos-integrados__cta {
    --bs-btn-color: var(--ff-deep);
    --bs-btn-bg: #fff;
    --bs-btn-border-color: #fff;
    --bs-btn-hover-bg: var(--ff-bright);
    --bs-btn-hover-border-color: var(--ff-bright);
    --bs-btn-hover-color: #fff;
    font-weight: 600;
    letter-spacing: 0.05em;
    box-shadow: 0 0.35rem 1.25rem rgba(0, 32, 26, 0.28);
}

.ff-proyectos-integrados__fs-host {
    display: none !important;
}

.ff-proyecto-fs-wrap {
    position: absolute;
    inset: 0;
    pointer-events: none;
}

.ff-proyecto-fs-root {
    display: none !important;
    position: absolute;
    inset: 0;
    background: #001a14;
    pointer-events: none !important;
}

.ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs {
    display: block !important;
    position: fixed !important;
    inset: 0 !important;
    z-index: 1080 !important;
    width: 100% !important;
    height: 100% !important;
    pointer-events: auto !important;
}

.ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs.is-chrome-exiting {
    pointer-events: none !important;
}

.ff-proyecto-fs-root:fullscreen,
.ff-proyecto-fs-root:-webkit-full-screen,
.ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs {
    width: 100%;
    height: 100%;
}

.ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs {
    position: fixed;
    inset: 0;
    z-index: 1080;
    pointer-events: auto;
}

.ff-proyecto-fs-root {
    transform: translate3d(0, 100%, 0);
    transition: transform 0.7s cubic-bezier(0.65, 0, 0.35, 1);
    will-change: transform;
}

.ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs.is-sheet-open {
    transform: translate3d(0, 0, 0);
}

.ff-proyecto-fs-root.is-chrome-exiting,
.ff-zona__video-fs-root.is-morphing.ff-zona__video-fs-root--fallback-fs {
    pointer-events: none !important;
}

.ff-proyecto-fs-l3 .ff-video-fs-l3__detail,
.ff-proyecto-fs-l3:hover .ff-video-fs-l3__detail,
.ff-proyecto-fs-l3.is-detail-open .ff-video-fs-l3__detail {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
}

.ff-proyecto-fs__bg-stack {
    position: absolute;
    inset: 0;
    overflow: hidden;
    z-index: 0;
}

.ff-proyecto-fs__bg-strip {
    --ff-bg-frames: 2;
    display: flex;
    height: 100%;
    width: calc(var(--ff-bg-frames) * 100%);
    will-change: transform;
}

.ff-proyecto-fs__bg-frame {
    flex: 0 0 calc(100% / var(--ff-bg-frames));
    width: calc(100% / var(--ff-bg-frames));
    height: 100%;
    object-fit: cover;
    object-position: center;
    user-select: none;
    pointer-events: none;
}

.ff-proyecto-fs__bg-layer {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

.ff-proyecto-fs__shade {
    display: none;
}

.ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs {
    --ff-proyecto-enter-ease: cubic-bezier(0.33, 1, 0.68, 1);
}

.ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs .ff-video-fs-close,
.ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs .ff-proyecto-fs__aside-glass {
    opacity: 0;
    transform: translate3d(0, 2.15rem, 0);
    transition:
        opacity 0.55s var(--ff-proyecto-enter-ease),
        transform 0.62s var(--ff-proyecto-enter-ease);
    will-change: transform, opacity;
}

.ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs.is-chrome-entered .ff-video-fs-close {
    opacity: 1;
    transform: translate3d(0, 0, 0);
    transition-delay: 0.04s;
}

.ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs.is-chrome-entered .ff-proyecto-fs__aside-glass {
    opacity: 1;
    transform: translate3d(0, 0, 0);
    transition-delay: 0.08s;
}

.ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs .ff-proyecto-fs__mapa-wrap {
    opacity: 0;
    transform: translate3d(0, 0.85rem, 0);
    max-height: 0;
    overflow: hidden;
    pointer-events: none;
    transition:
        opacity 0.5s var(--ff-proyecto-enter-ease),
        transform 0.55s var(--ff-proyecto-enter-ease),
        max-height 0.55s cubic-bezier(0.65, 0, 0.35, 1);
}

.ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs.is-map-revealed .ff-proyecto-fs__mapa-wrap {
    opacity: 1;
    transform: translate3d(0, 0, 0);
    pointer-events: auto;
}

.ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs.is-map-revealed:not(.is-map-reveal-settled) .ff-proyecto-fs__mapa-wrap {
    max-height: 30rem;
}

.ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs.is-map-revealed.is-map-reveal-settled .ff-proyecto-fs__mapa-wrap {
    max-height: none;
}

.ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs:not(.is-map-revealed) .ff-proyecto-fs__mapa,
.ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs:not(.is-map-revealed) .ff-proyecto-fs__mapa-shell {
    visibility: hidden;
}

.ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs.is-map-revealed .ff-proyecto-fs__mapa,
.ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs.is-map-revealed .ff-proyecto-fs__mapa-shell {
    visibility: visible;
}

.ff-proyecto-fs-root.is-chrome-exiting {
    --ff-fs-exit-slide: 100vh;
    --ff-fs-exit-ease: cubic-bezier(0.65, 0, 0.35, 1);
    overflow: hidden;
}

.ff-proyecto-fs-root.is-chrome-exiting .ff-proyecto-fs-panel.ff-video-fs-panel {
    opacity: 0;
    transform: translate3d(0, var(--ff-fs-exit-slide), 0) !important;
    transition:
        opacity 0.58s var(--ff-fs-exit-ease),
        transform 0.7s var(--ff-fs-exit-ease);
    transition-delay: 0s;
}

.ff-proyecto-fs-root.is-chrome-exiting .ff-proyecto-fs__mapa-wrap {
    opacity: 0;
    transform: translate3d(0, var(--ff-fs-exit-slide), 0);
    transition:
        opacity 0.55s var(--ff-fs-exit-ease),
        transform 0.68s var(--ff-fs-exit-ease),
        max-height 0.55s var(--ff-fs-exit-ease);
    transition-delay: 0.05s;
}

.ff-proyecto-fs-root.is-chrome-exiting .ff-proyecto-fs__aside-glass {
    opacity: 0;
    transform: translate3d(0, var(--ff-fs-exit-slide), 0);
    transition:
        opacity 0.58s var(--ff-fs-exit-ease),
        transform 0.7s var(--ff-fs-exit-ease);
    transition-delay: 0.08s;
}

.ff-proyecto-fs-root.is-chrome-exiting .ff-video-fs-close {
    opacity: 0;
    transform: translate3d(0, var(--ff-fs-exit-slide), 0);
    transition:
        opacity 0.55s var(--ff-fs-exit-ease),
        transform 0.68s var(--ff-fs-exit-ease);
    transition-delay: 0.12s;
}

@media (prefers-reduced-motion: reduce) {
    .ff-proyecto-fs-root.is-chrome-exiting .ff-video-fs-close,
    .ff-proyecto-fs-root.is-chrome-exiting .ff-proyecto-fs__aside-glass,
    .ff-proyecto-fs-root.is-chrome-exiting .ff-proyecto-fs__mapa-wrap,
    .ff-proyecto-fs-root.is-chrome-exiting .ff-proyecto-fs-panel.ff-video-fs-panel {
        opacity: 0;
        transform: none;
        transition: none;
    }

    .ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs .ff-video-fs-close,
    .ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs .ff-proyecto-fs__aside-glass,
    .ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs .ff-proyecto-fs__mapa-wrap,
    .ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs .ff-proyecto-fs-panel.ff-video-fs-panel {
        opacity: 1;
        transform: none;
        max-height: none;
        transition: none;
        pointer-events: auto;
    }

    .ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs .ff-proyecto-fs__mapa,
    .ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs .ff-proyecto-fs__mapa-shell {
        visibility: visible;
    }
}

.ff-proyecto-fs-root:fullscreen .ff-video-fs-chrome,
.ff-proyecto-fs-root:-webkit-full-screen .ff-video-fs-chrome,
.ff-proyecto-fs-root.ff-zona__video-fs-root--fallback-fs .ff-video-fs-chrome {
    display: block;
    pointer-events: none;
    z-index: 2;
}

.ff-proyecto-fs__aside {
    position: absolute;
    left: clamp(0.85rem, 3vw, 2rem);
    bottom: clamp(0.85rem, 3vh, 2rem);
    z-index: 3;
    display: flex;
    flex-direction: column;
    gap: 0;
    width: min(28.5rem, calc(58vw - 1rem));
    max-width: calc(100vw - 1.75rem);
    max-height: calc(100vh - 5.5rem);
    pointer-events: auto;
}

.ff-proyecto-fs__aside-inner {
    display: flex;
    flex-direction: column;
    gap: 0;
    min-height: 0;
}

.ff-proyecto-fs__aside-glass {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 0.55rem 0.6rem 0.62rem;
    border-radius: 0.55rem;
    background: linear-gradient(
        155deg,
        rgba(0, 36, 30, 0.78) 0%,
        rgba(0, 18, 14, 0.62) 48%,
        rgba(0, 28, 22, 0.7) 100%
    );
    border: 1px solid rgba(255, 255, 255, 0.14);
    box-shadow:
        0 0.85rem 2.35rem rgba(0, 0, 0, 0.45),
        inset 0 1px 0 rgba(255, 255, 255, 0.14),
        inset 0 -1px 0 rgba(0, 0, 0, 0.22);
    -webkit-backdrop-filter: blur(16px) saturate(1.2);
    backdrop-filter: blur(16px) saturate(1.2);
    overflow: hidden;
    transition:
        box-shadow 0.5s cubic-bezier(0.65, 0, 0.35, 1),
        padding 0.55s cubic-bezier(0.65, 0, 0.35, 1),
        gap 0.55s cubic-bezier(0.65, 0, 0.35, 1);
}

.ff-proyecto-fs__aside-glass::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    pointer-events: none;
    background: linear-gradient(
        125deg,
        rgba(255, 255, 255, 0.14) 0%,
        transparent 42%,
        transparent 68%,
        rgba(255, 255, 255, 0.06) 100%
    );
    opacity: 0.85;
}

.ff-proyecto-fs__aside-glass {
    position: relative;
}

.ff-proyecto-fs__aside-glass:has(.ff-proyecto-fs__mapa-wrap.is-map-collapsed) {
    gap: 0.35rem;
    padding-bottom: 0.48rem;
    box-shadow:
        0 0.55rem 1.65rem rgba(0, 0, 0, 0.38),
        inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

.ff-proyecto-fs__aside-media {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    order: 2;
    position: relative;
    z-index: 1;
    padding-top: 0.15rem;
    border-top: 1px solid rgba(255, 255, 255, 0.08);
    transition: padding-top 0.55s cubic-bezier(0.65, 0, 0.35, 1);
}

.ff-proyecto-fs__aside-glass:has(.ff-proyecto-fs__mapa-wrap.is-map-collapsed) .ff-proyecto-fs__aside-media {
    padding-top: 0.35rem;
}

.ff-proyecto-fs__mapa-wrap {
    order: 1;
    position: relative;
    z-index: 1;
}

.ff-proyecto-fs__carousel {
    position: relative;
    display: block;
    padding: 0;
    overflow: hidden;
    overscroll-behavior-x: none;
    border: none;
    border-radius: 0;
    background: transparent;
    backdrop-filter: none;
    -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 16%, #000 84%, transparent 100%);
    mask-image: linear-gradient(90deg, transparent 0%, #000 16%, #000 84%, transparent 100%);
}

.ff-proyecto-fs__carousel-track {
    display: flex;
    flex-wrap: nowrap;
    gap: 0.4rem;
    will-change: transform;
}

.ff-proyecto-fs__carousel::-webkit-scrollbar {
    display: none;
    width: 0;
    height: 0;
}

.ff-proyecto-fs__carousel-btn {
    flex: 0 0 auto;
    width: 3.55rem;
    height: 2.45rem;
    pointer-events: auto;
    margin: 0;
    padding: 0;
    border: none;
    border-radius: 0.2rem;
    background: transparent;
    box-shadow: none;
    cursor: pointer;
    overflow: hidden;
    opacity: 0.72;
    transition: opacity 0.25s ease, box-shadow 0.25s ease;
    appearance: none;
}

.ff-proyecto-fs__carousel-btn img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    pointer-events: none;
    user-select: none;
}

.ff-proyecto-fs__carousel-btn.is-active {
    opacity: 1;
    box-shadow: inset 0 0 0 2px var(--ff-bright);
}

.ff-proyecto-fs__carousel-btn:hover,
.ff-proyecto-fs__carousel-btn:focus-visible {
    opacity: 1;
}

.ff-proyecto-fs__mapa-wrap {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    border-radius: 0.38rem;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, 0.1);
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.18);
    background: rgba(0, 12, 10, 0.55);
    transition:
        box-shadow 0.55s cubic-bezier(0.65, 0, 0.35, 1),
        border-color 0.55s cubic-bezier(0.65, 0, 0.35, 1),
        background 0.55s cubic-bezier(0.65, 0, 0.35, 1);
}

.ff-proyecto-fs__mapa-collapse {
    display: grid;
    grid-template-rows: 1fr;
    transition: grid-template-rows 0.55s cubic-bezier(0.65, 0, 0.35, 1);
}

.ff-proyecto-fs__mapa-wrap.is-map-collapsed .ff-proyecto-fs__mapa-collapse {
    grid-template-rows: 0fr;
}

.ff-proyecto-fs__mapa-collapse-inner {
    overflow: hidden;
    min-height: 0;
}

.ff-proyecto-fs__mapa-body {
    position: relative;
    height: clamp(12.5rem, 34vh, 19.5rem);
}

.ff-proyecto-fs__mapa-wrap.is-map-collapsed {
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.12);
}

.ff-proyecto-fs__mapa-badge {
    position: absolute;
    top: 0.55rem;
    left: 0.55rem;
    z-index: 4;
    display: inline-flex;
    align-items: center;
    width: auto;
    max-width: calc(100% - 3.5rem);
    margin: 0;
    padding: 0.28rem 0.55rem;
    border-radius: 999px;
    background: rgba(0, 28, 22, 0.82);
    border: 1px solid rgba(255, 255, 255, 0.18);
    color: rgba(255, 255, 255, 0.92);
    font-size: 0.62rem;
    line-height: 1.2;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    pointer-events: none;
    box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.28);
}

.ff-proyecto-fs__mapa-shell {
    position: absolute;
    inset: 0;
    overflow: hidden;
}

.ff-proyecto-fs__mapa-footer {
    position: relative;
    flex: 0 0 auto;
    z-index: 6;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.65rem;
    min-height: 0;
    height: 0;
    padding: 0 0.45rem 0 0.6rem;
    overflow: visible;
    pointer-events: none;
    background: transparent;
    transition:
        height 0.55s cubic-bezier(0.65, 0, 0.35, 1),
        min-height 0.55s cubic-bezier(0.65, 0, 0.35, 1),
        padding 0.55s cubic-bezier(0.65, 0, 0.35, 1),
        background 0.55s cubic-bezier(0.65, 0, 0.35, 1);
}

.ff-proyecto-fs__mapa-wrap:not(.is-map-collapsed) .ff-proyecto-fs__mapa-accordion-btn {
    position: absolute;
    right: 0.45rem;
    bottom: 0.45rem;
    z-index: 7;
}

.ff-proyecto-fs__mapa-collapsed-id {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    opacity: 0;
    max-width: 0;
    overflow: hidden;
    white-space: nowrap;
    transition:
        opacity 0.4s cubic-bezier(0.65, 0, 0.35, 1),
        max-width 0.55s cubic-bezier(0.65, 0, 0.35, 1);
    font-size: 0.62rem;
    line-height: 1;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.88);
    pointer-events: none;
}

.ff-proyecto-fs__mapa-collapsed-id i {
    font-size: 0.72rem;
    color: var(--ff-bright, #00cc8d);
}

.ff-proyecto-fs__mapa-accordion-btn {
    position: absolute;
    right: 0.45rem;
    bottom: 0.45rem;
    z-index: 1;
    display: inline-flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-end;
    gap: 0;
    width: 1.9rem;
    max-width: 1.9rem;
    height: 1.9rem;
    margin: 0;
    padding: 0;
    border: 1px solid rgba(255, 255, 255, 0.32);
    border-radius: 999px;
    background: rgba(0, 28, 22, 0.88);
    color: #fff;
    cursor: pointer;
    pointer-events: auto;
    overflow: hidden;
    white-space: nowrap;
    box-shadow: 0 0.25rem 0.85rem rgba(0, 0, 0, 0.32);
    transition:
        max-width 0.38s cubic-bezier(0.65, 0, 0.35, 1),
        width 0.38s cubic-bezier(0.65, 0, 0.35, 1),
        padding 0.38s cubic-bezier(0.65, 0, 0.35, 1),
        gap 0.38s cubic-bezier(0.65, 0, 0.35, 1),
        background 0.2s ease,
        border-color 0.2s ease;
    appearance: none;
}

.ff-proyecto-fs__mapa-accordion-btn:hover,
.ff-proyecto-fs__mapa-accordion-btn:focus-visible {
    width: auto;
    max-width: 8.75rem;
    padding-left: 0.65rem;
    gap: 0.4rem;
    background: rgba(0, 36, 30, 0.94);
    border-color: rgba(0, 204, 141, 0.55);
}

.ff-proyecto-fs__mapa-accordion-hint {
    flex: 0 1 auto;
    overflow: hidden;
    max-width: 0;
    opacity: 0;
    transform: translateX(0.4rem);
    font-size: 0.62rem;
    line-height: 1;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    transition:
        max-width 0.38s cubic-bezier(0.65, 0, 0.35, 1),
        opacity 0.28s ease,
        transform 0.38s cubic-bezier(0.65, 0, 0.35, 1);
}

.ff-proyecto-fs__mapa-accordion-btn:hover .ff-proyecto-fs__mapa-accordion-hint,
.ff-proyecto-fs__mapa-accordion-btn:focus-visible .ff-proyecto-fs__mapa-accordion-hint {
    max-width: 5.5rem;
    opacity: 1;
    transform: translateX(0);
}

.ff-proyecto-fs__mapa-accordion-hint--closed {
    display: none;
}

.ff-proyecto-fs__mapa-wrap.is-map-collapsed .ff-proyecto-fs__mapa-accordion-hint--open {
    display: none;
}

.ff-proyecto-fs__mapa-wrap.is-map-collapsed .ff-proyecto-fs__mapa-accordion-hint--closed {
    display: block;
}

.ff-proyecto-fs__mapa-accordion-icon {
    flex: 0 0 1.9rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.9rem;
    height: 1.9rem;
    font-size: 0.72rem;
    transition: transform 0.55s cubic-bezier(0.65, 0, 0.35, 1);
}

.ff-proyecto-fs__mapa-wrap.is-map-collapsed .ff-proyecto-fs__mapa-accordion-icon {
    transform: rotate(180deg);
}

.ff-proyecto-fs__mapa-wrap.is-map-collapsed .ff-proyecto-fs__mapa-footer {
    height: 2.15rem;
    min-height: 2.15rem;
    overflow: hidden;
    pointer-events: auto;
    background: rgba(0, 28, 22, 0.94);
}

.ff-proyecto-fs__mapa-wrap.is-map-collapsed .ff-proyecto-fs__mapa-collapsed-id {
    opacity: 1;
    max-width: 8rem;
}

.ff-proyecto-fs__mapa-wrap.is-map-collapsed .ff-proyecto-fs__mapa-accordion-btn {
    position: relative;
    right: auto;
    bottom: auto;
    flex: 0 0 auto;
    width: 1.9rem;
    max-width: 1.9rem;
    margin-left: auto;
    box-shadow: none;
    transition:
        max-width 0.38s cubic-bezier(0.65, 0, 0.35, 1),
        width 0.38s cubic-bezier(0.65, 0, 0.35, 1),
        padding 0.38s cubic-bezier(0.65, 0, 0.35, 1),
        gap 0.38s cubic-bezier(0.65, 0, 0.35, 1),
        background 0.2s ease,
        border-color 0.2s ease,
        bottom 0.55s cubic-bezier(0.65, 0, 0.35, 1),
        right 0.55s cubic-bezier(0.65, 0, 0.35, 1);
}

.ff-proyecto-fs__mapa-wrap.is-map-collapsed .ff-proyecto-fs__mapa-accordion-btn:hover,
.ff-proyecto-fs__mapa-wrap.is-map-collapsed .ff-proyecto-fs__mapa-accordion-btn:focus-visible {
    width: auto;
    max-width: 7.5rem;
    padding-left: 0.6rem;
}

.ff-proyecto-fs__mapa-tiles {
    position: absolute;
    left: 0.45rem;
    bottom: 0.45rem;
    z-index: 4;
    display: inline-flex;
    gap: 0.25rem;
    padding: 0.2rem;
    border-radius: 999px;
    background: rgba(0, 28, 22, 0.78);
    border: 1px solid rgba(255, 255, 255, 0.16);
    pointer-events: auto;
}

.ff-proyecto-fs__mapa-tiles-btn {
    margin: 0;
    padding: 0.28rem 0.62rem;
    border: none;
    border-radius: 999px;
    background: transparent;
    color: rgba(255, 255, 255, 0.82);
    font-size: 0.62rem;
    line-height: 1.2;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease;
    appearance: none;
}

.ff-proyecto-fs__mapa-tiles-btn.is-active,
.ff-proyecto-fs__mapa-tiles-btn:hover,
.ff-proyecto-fs__mapa-tiles-btn:focus-visible {
    background: rgba(0, 204, 141, 0.38);
    color: #fff;
}

.ff-proyecto-fs__mapa-wrap .leaflet-control-attribution {
    display: none !important;
}

.ff-proyecto-fs__mapa-wrap .leaflet-control-zoom {
    border: none !important;
    box-shadow: 0 0.35rem 1rem rgba(0, 0, 0, 0.28) !important;
}

.ff-proyecto-fs__mapa-wrap .leaflet-control-zoom a {
    background: rgba(0, 28, 22, 0.82) !important;
    color: #fff !important;
    border-color: rgba(255, 255, 255, 0.18) !important;
}

.ff-proyecto-fs__mapa-wrap .leaflet-control-zoom a:hover {
    background: rgba(0, 204, 141, 0.42) !important;
}

.ff-proyecto-fs__mapa {
    width: 100%;
    height: 100%;
    min-height: 0;
}

.ff-proyecto-fs-panel.ff-video-fs-panel {
    --ff-fs-panel-w: min(34rem, calc(100vw - 1.75rem));
    max-height: calc(100vh - 1.75rem);
    overflow: visible;
    opacity: 0;
    transform: translate3d(0, 2.15rem, 0);
    transition:
        opacity 0.55s var(--ff-proyecto-enter-ease, cubic-bezier(0.33, 1, 0.68, 1)),
        transform 0.62s var(--ff-proyecto-enter-ease, cubic-bezier(0.33, 1, 0.68, 1));
}

.ff-proyecto-fs-panel.ff-video-fs-panel.is-entered {
    opacity: 1;
    transform: translate3d(0, 0, 0);
    transition-delay: 0.26s;
}

.ff-proyecto-fs-l3.ff-video-fs-l3 {
    overflow: visible;
}

.ff-proyecto-fs-l3.ff-video-fs-l3 .ff-video-fs-l3__stack {
    position: relative;
    overflow: visible;
}

.ff-proyecto-fs-l3:hover:not(.is-detail-open) .ff-video-fs-l3__detail,
.ff-proyecto-fs-l3:focus-within:not(.is-detail-open) .ff-video-fs-l3__detail {
    margin-bottom: 0 !important;
    border: none !important;
    background: transparent !important;
    box-shadow: none !important;
}

.ff-proyecto-fs-l3 .ff-video-fs-l3__bar,
.ff-proyecto-fs-l3:hover .ff-video-fs-l3__bar,
.ff-proyecto-fs-l3:focus-within .ff-video-fs-l3__bar,
.ff-proyecto-fs-l3.is-detail-open .ff-video-fs-l3__bar {
    transform: none !important;
    box-shadow: 0 0.65rem 2rem rgba(0, 0, 0, 0.38) !important;
}

.ff-proyecto-fs-l3 .ff-video-fs-l3__bar {
    position: relative;
    z-index: 3;
    margin: 0 0.75rem;
    border-radius: 0 0 0.4rem 0.4rem;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    transition: background 0.2s ease, border-color 0.2s ease;
}

.ff-proyecto-fs-l3 .ff-video-fs-l3__detail {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 100%;
    z-index: 1;
    overflow: hidden;
    max-height: none;
    opacity: 1;
    transform: none;
    transition: none;
    margin: 0;
    padding: 0;
    border: none;
    background: transparent;
    box-shadow: none;
    pointer-events: none;
}

.ff-proyecto-fs-l3.is-detail-open .ff-video-fs-l3__detail {
    max-height: none;
    opacity: 1;
    pointer-events: auto;
}

.ff-proyecto-fs-l3 .ff-proyecto-fs__topic-panel {
    transform: translate3d(0, 101%, 0);
    transition: transform 0.45s cubic-bezier(0.33, 1, 0.68, 1);
}

.ff-proyecto-fs-l3.is-detail-open .ff-proyecto-fs__topic-panel {
    transform: translate3d(0, 0, 0);
}

.ff-proyecto-fs__topic-panel[hidden] {
    display: none !important;
}

.ff-proyecto-fs__topic-panel:not([hidden]) {
    display: block;
}

.ff-proyecto-fs__topic-body {
    margin: 0 0.75rem;
    padding: 0.9rem 1rem 0.85rem;
    max-height: min(20rem, 40vh);
    overflow-x: hidden;
    overflow-y: auto;
    font-size: 0.84rem;
    line-height: 1.55;
    color: rgba(255, 255, 255, 0.93);
    background: linear-gradient(165deg, rgba(0, 36, 30, 0.96) 0%, rgba(0, 52, 44, 0.9) 100%);
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 0.4rem 0.4rem 0 0;
    border-bottom: none;
    box-shadow: 0 -0.35rem 1.25rem rgba(0, 0, 0, 0.22);
    scrollbar-width: thin;
    scrollbar-color: rgba(0, 204, 141, 0.45) transparent;
}

.ff-proyecto-fs__topic-nav {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0;
    position: relative;
    z-index: 2;
    margin: 0 0.75rem;
    padding: 0;
    transform: none;
    overflow: visible;
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-top: none;
    border-radius: 0;
    background: rgba(0, 28, 22, 0.88);
}

.ff-proyecto-fs-l3.is-detail-open .ff-proyecto-fs__topic-nav {
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.ff-proyecto-fs__topic-btn {
    margin: 0;
    padding: 0.58rem 0.45rem;
    border: none;
    border-right: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 0;
    background: transparent;
    color: rgba(255, 255, 255, 0.82);
    font-size: 0.76rem;
    line-height: 1.2;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease, opacity 0.35s ease;
    appearance: none;
    pointer-events: auto;
    opacity: 0;
    transform: none;
}

.ff-proyecto-fs__topic-btn:last-child {
    border-right: none;
}

.ff-proyecto-fs-l3.is-ui-ready .ff-proyecto-fs__topic-btn {
    opacity: 1;
}

.ff-proyecto-fs-l3.is-ui-ready .ff-proyecto-fs__topic-btn:nth-child(1) {
    transition-delay: 0.06s;
}

.ff-proyecto-fs-l3.is-ui-ready .ff-proyecto-fs__topic-btn:nth-child(2) {
    transition-delay: 0.1s;
}

.ff-proyecto-fs-l3.is-ui-ready .ff-proyecto-fs__topic-btn:nth-child(3) {
    transition-delay: 0.14s;
}

.ff-proyecto-fs-l3:not(.is-ui-ready) .ff-proyecto-fs__topic-btn {
    pointer-events: none;
}

.ff-proyecto-fs__topic-btn:hover,
.ff-proyecto-fs__topic-btn:focus-visible {
    color: #fff;
    background: rgba(0, 204, 141, 0.22);
}

.ff-proyecto-fs__topic-btn.is-active {
    background: rgba(0, 204, 141, 0.32);
    color: #fff;
    box-shadow: none;
}

.ff-proyecto-fs-l3.is-detail-open .ff-proyecto-fs__topic-btn.is-active {
    background: rgba(0, 204, 141, 0.32);
}

.ff-proyecto-fs__topic-body p {
    margin: 0 0 0.55rem;
}

.ff-proyecto-fs__topic-body p:last-child {
    margin-bottom: 0;
}

.ff-proyecto-fs__topic-heading {
    margin: 0 0 0.65rem;
    padding-bottom: 0.55rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.14);
    font-size: 0.92rem;
    line-height: 1.25;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--ff-bright, #00cc8d);
}

.ff-proyecto-fs__topic-btn {
    position: relative;
    isolation: isolate;
}

.ff-proyecto-fs__topic-btn::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    top: 0;
    z-index: -1;
    border-radius: 0.3rem 0.3rem 0 0;
    background: transparent;
    transition: background 0.25s ease;
}

.ff-proyecto-fs-l3.is-topic-teaser .ff-proyecto-fs__topic-btn.is-teaser-wave {
    color: #fff;
    z-index: 2;
}

.ff-proyecto-fs-l3.is-topic-teaser .ff-proyecto-fs__topic-btn.is-teaser-wave::before {
    background: rgba(0, 204, 141, 0.34);
    animation: ffProyectoTopicTeaserGrow 0.7s cubic-bezier(0.22, 1, 0.36, 1);
}

@keyframes ffProyectoTopicTeaserGrow {
    0% {
        top: 0;
    }
    40% {
        top: -0.6rem;
    }
    100% {
        top: 0;
    }
}

.ff-proyecto-fs__carousel-wrap {
    position: relative;
    display: flex;
    align-items: center;
    gap: 0.35rem;
}

.ff-proyecto-fs__carousel-wrap .ff-proyecto-fs__carousel {
    flex: 1 1 auto;
    min-width: 0;
}

.ff-proyecto-fs__carousel-arrow {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.65rem;
    height: 1.65rem;
    margin: 0;
    padding: 0;
    border: 1px solid rgba(255, 255, 255, 0.28);
    border-radius: 50%;
    background: rgba(0, 28, 22, 0.55);
    color: #fff;
    font-size: 0.68rem;
    cursor: pointer;
    pointer-events: auto;
    transition: background 0.2s ease, border-color 0.2s ease;
    appearance: none;
}

.ff-proyecto-fs__carousel-arrow:hover,
.ff-proyecto-fs__carousel-arrow:focus-visible {
    background: rgba(0, 204, 141, 0.4);
    border-color: var(--ff-bright);
}

.ff-proyecto-fs__carousel {
    touch-action: none;
    user-select: none;
}

@keyframes ffProyectoTopicTeaserLabel {
    0% {
        transform: translateY(0);
    }
    40% {
        transform: translateY(-0.3rem);
    }
    100% {
        transform: translateY(0);
    }
}

.ff-proyecto-fs__carousel-progress {
    flex: 0 0 auto;
    height: 3px;
    border-radius: 999px;
    overflow: hidden;
    background: rgba(255, 255, 255, 0.18);
}

.ff-proyecto-fs__carousel-progress-bar {
    display: block;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, var(--ff-emerald, #00b27f), var(--ff-bright, #00cc8d));
    transform: scaleX(0);
    transform-origin: left center;
}

.ff-proyecto-fs__carousel-progress-bar.is-running {
    animation: ffVideoFsGalleryProgress var(--ff-proyecto-carousel-interval, 5500ms) linear forwards;
}

@media (max-width: 991.98px) {
    .ff-proyectos-integrados__feature,
    .ff-proyectos-integrados__gallery,
    .ff-proyectos-integrados__feature-content {
        min-height: clamp(18rem, 50vh, 28rem);
    }

    .ff-proyectos-integrados__feature-content {
        padding-left: clamp(1rem, 4vw, 1.35rem);
        padding-right: clamp(1rem, 4vw, 1.35rem);
        align-items: stretch;
    }

    .ff-proyectos-integrados__col-panel {
        width: 100%;
        max-width: none;
        padding: clamp(1.1rem, 3vw, 1.45rem);
        border-left: none;
        border-right: none;
        background: linear-gradient(
            180deg,
            rgba(0, 28, 22, 0) 0%,
            rgba(0, 28, 22, 0.72) 28%,
            var(--ff-col-panel-solid, rgba(0, 28, 22, 0.82)) 100%
        );
    }

    .ff-proyecto-fs__aside {
        right: clamp(0.85rem, 3vw, 2rem);
        width: auto;
    }

    .ff-proyecto-fs__mapa-body {
        height: clamp(11rem, 30vh, 17rem);
    }

    .ff-proyecto-fs-panel.ff-video-fs-panel {
        left: clamp(0.85rem, 3vw, 2rem);
        right: clamp(0.85rem, 3vw, 2rem);
        width: auto;
        max-width: none;
    }
}

/* Contacto — misma paleta y ritmo que las zonas */
body.page-fundos-forestacion .ff-page-contacto {
    position: relative;
    padding: 0;
    background: linear-gradient(180deg, #fff 0%, #f2f8f5 28%, #eaf4ef 100%);
    scroll-margin-top: 4rem;
}

body.page-fundos-forestacion .ff-page-contacto::before {
    content: "";
    display: block;
    height: 1px;
    margin: 0 clamp(1.25rem, 4vw, 4rem);
    background: linear-gradient(
        90deg,
        transparent 0%,
        rgba(0, 178, 127, 0.22) 20%,
        rgba(198, 156, 109, 0.2) 50%,
        rgba(0, 198, 160, 0.22) 80%,
        transparent 100%
    );
}

body.page-fundos-forestacion .ff-page-contacto .franja-contacto-consultoria {
    background: transparent;
    margin: 0;
    padding: clamp(2.5rem, 5vw, 3.75rem) 0 clamp(2.75rem, 5vw, 4rem);
    isolation: isolate;
}

body.page-fundos-forestacion .ff-page-contacto .franja-contacto-consultoria::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background:
        radial-gradient(ellipse 48% 42% at 8% 92%, rgba(0, 198, 160, 0.1) 0%, transparent 58%),
        radial-gradient(ellipse 42% 38% at 92% 12%, rgba(198, 156, 109, 0.08) 0%, transparent 55%);
}

body.page-fundos-forestacion .ff-page-contacto .franja-contacto-consultoria > .container {
    position: relative;
    z-index: 1;
}

body.page-fundos-forestacion .ff-page-contacto .franja-contacto-consultoria__form-card {
    border: 1px solid rgba(0, 146, 122, 0.2) !important;
    background: rgba(255, 255, 255, 0.94);
    border-radius: 0.35rem;
    box-shadow:
        0 0.65rem 1.75rem rgba(0, 104, 84, 0.07),
        0 0 0 1px rgba(255, 255, 255, 0.6) inset;
}

body.page-fundos-forestacion .ff-page-contacto .franja-contacto-consultoria__form-card .card-title {
    color: var(--ff-deep);
    font-weight: 600;
    letter-spacing: 0.02em;
}

body.page-fundos-forestacion .ff-page-contacto .form-control.shadow {
    border-color: rgba(0, 104, 84, 0.12);
    box-shadow: 0 0.15rem 0.5rem rgba(0, 104, 84, 0.04) !important;
}

body.page-fundos-forestacion .ff-page-contacto .form-control:focus {
    border-color: rgba(0, 178, 127, 0.55);
    box-shadow: 0 0 0 0.2rem rgba(0, 178, 127, 0.14) !important;
}

body.page-fundos-forestacion .ff-page-contacto .franja-contacto-consultoria__intro-text h4 {
    color: var(--ff-deep);
}

body.page-fundos-forestacion .ff-page-contacto .franja-contacto-consultoria__intro-text p {
    color: #4a6358;
}

body.page-fundos-forestacion .ff-page-contacto .franja-contacto-consultoria__proyectos-heading {
    color: var(--ff-deep) !important;
    opacity: 0.85;
    letter-spacing: 0.14em;
}

body.page-fundos-forestacion .ff-page-contacto .franja-contacto-proyectos-swiper__nav {
    color: var(--ff-deep);
    background: rgba(255, 255, 255, 0.9);
    box-shadow: 0 2px 10px rgba(0, 104, 84, 0.12);
}

body.page-fundos-forestacion .ff-page-contacto .franja-contacto-proyectos-swiper__nav:hover,
body.page-fundos-forestacion .ff-page-contacto .franja-contacto-proyectos-swiper__nav:focus-visible {
    color: var(--ff-emerald);
    box-shadow: 0 3px 14px rgba(0, 104, 84, 0.16);
}

body.page-fundos-forestacion .ff-page-contacto .franja-contacto-consultoria__proyecto-link {
    background: #d8e8e1;
}

body.page-fundos-forestacion .ff-page-contacto .franja-contacto-consultoria__proyecto-caption {
    background: linear-gradient(
        to bottom,
        rgba(0, 64, 52, 0.92) 0%,
        rgba(0, 104, 84, 0.45) 55%,
        transparent 100%
    );
}

body.page-fundos-forestacion .ff-page-contacto #envia.btn-primary {
    letter-spacing: 0.06em;
}

/* Lightbox flotante — galerías Fundo Lonquén / Chacabuco */
.ff-lightbox {
    position: fixed;
    inset: 0;
    z-index: 1095;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: clamp(0.75rem, 3vw, 1.75rem);
}

.ff-lightbox[hidden] {
    display: none !important;
}

.ff-lightbox__backdrop {
    position: absolute;
    inset: 0;
    border: 0;
    padding: 0;
    margin: 0;
    cursor: zoom-out;
    background: rgba(0, 28, 22, 0.88);
    backdrop-filter: blur(6px);
    opacity: 1;
}

.ff-lightbox.is-morphing-opening .ff-lightbox__backdrop {
    pointer-events: none;
}

.ff-lightbox.is-morph-ready .ff-lightbox__backdrop {
    pointer-events: auto;
}

.ff-lightbox__panel {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.75rem;
    max-width: min(96vw, 72rem);
    max-height: min(92vh, 52rem);
    pointer-events: none;
}

.ff-lightbox__figure {
    margin: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.65rem;
    max-height: inherit;
    pointer-events: auto;
}

.ff-lightbox.is-morphing .ff-lightbox__figure {
    will-change: transform;
}

.ff-lightbox.is-morphing:not(.is-morph-ready) .ff-lightbox__close,
.ff-lightbox.is-morphing:not(.is-morph-ready) .ff-lightbox__nav,
.ff-lightbox.is-morph-closing .ff-lightbox__close,
.ff-lightbox.is-morph-closing .ff-lightbox__nav {
    opacity: 0;
    pointer-events: none;
}

.ff-lightbox.is-morphing:not(.is-morph-ready) .ff-lightbox__caption {
    opacity: 0;
}

.ff-lightbox.is-morph-ready .ff-lightbox__close,
.ff-lightbox.is-morph-ready .ff-lightbox__nav {
    transition: opacity 0.22s ease 0.06s;
}

.ff-lightbox.is-morphing-opening .ff-lightbox__figure img,
.ff-lightbox.is-morph-closing .ff-lightbox__figure img {
    visibility: hidden;
}

.ff-lightbox-fly {
    position: fixed;
    z-index: 1105;
    margin: 0;
    pointer-events: none;
    object-fit: cover;
    border-radius: 2px;
    box-shadow: 0 1.25rem 3rem rgba(0, 0, 0, 0.42);
}

.ff-zona__gallery-trigger.is-lb-source img {
    visibility: hidden;
}

.ff-lightbox__figure img {
    display: block;
    max-width: min(96vw, 72rem);
    max-height: min(78vh, 46rem);
    width: auto;
    height: auto;
    object-fit: contain;
    border-radius: 2px;
    box-shadow: 0 1.25rem 3rem rgba(0, 0, 0, 0.42);
}

.ff-lightbox__caption {
    margin: 0;
    max-width: 42rem;
    padding: 0 0.5rem;
    font-size: 0.82rem;
    line-height: 1.45;
    text-align: center;
    color: rgba(255, 255, 255, 0.92);
}

.ff-lightbox__close,
.ff-lightbox__nav {
    position: absolute;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    padding: 0;
    border: 1px solid rgba(255, 255, 255, 0.22);
    border-radius: 999px;
    background: rgba(0, 40, 32, 0.55);
    color: #fff;
    cursor: pointer;
    transition: background 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

.ff-lightbox__close:hover,
.ff-lightbox__close:focus-visible,
.ff-lightbox__nav:hover,
.ff-lightbox__nav:focus-visible {
    background: rgba(0, 64, 52, 0.82);
    border-color: rgba(255, 255, 255, 0.45);
}

.ff-lightbox__close {
    top: clamp(0.65rem, 2vw, 1.1rem);
    right: clamp(0.65rem, 2vw, 1.1rem);
}

.ff-lightbox__nav {
    top: 50%;
    transform: translateY(-50%);
}

.ff-lightbox__nav:hover,
.ff-lightbox__nav:focus-visible {
    transform: translateY(-50%) scale(1.04);
}

.ff-lightbox__nav--prev {
    left: clamp(0.35rem, 2vw, 1rem);
}

.ff-lightbox__nav--next {
    right: clamp(0.35rem, 2vw, 1rem);
}

.ff-lightbox__nav[hidden],
.ff-lightbox__caption[hidden] {
    display: none !important;
}

html.ff-lightbox-open {
    overscroll-behavior: none;
    scroll-behavior: auto;
}

body.ff-lightbox-open {
    overscroll-behavior: none;
}

@media (prefers-reduced-motion: reduce) {
    .ff-lightbox.is-morphing .ff-lightbox__figure {
        will-change: auto;
    }
}

@media (max-width: 575.98px) {
    .ff-lightbox__nav {
        width: 2.35rem;
        height: 2.35rem;
    }
}
