/* OPH Scroll Sections — revelacao progressiva das seccoes */

html.oph-ss-ready .oph-ss {
    opacity: 0;
    transition-property: opacity, transform, filter;
    transition-duration: var(--oph-ss-duration, 800ms);
    transition-timing-function: var(--oph-ss-easing, cubic-bezier(0.22, 0.7, 0.3, 1));
    transition-delay: var(--oph-ss-delay, 0ms);
    will-change: opacity, transform;
}

html.oph-ss-ready .oph-ss[data-oph-effect="fade-up"]    { transform: translate3d(0, var(--oph-ss-distance, 40px), 0); }
html.oph-ss-ready .oph-ss[data-oph-effect="fade-down"]  { transform: translate3d(0, calc(var(--oph-ss-distance, 40px) * -1), 0); }
html.oph-ss-ready .oph-ss[data-oph-effect="fade-left"]  { transform: translate3d(var(--oph-ss-distance, 40px), 0, 0); }
html.oph-ss-ready .oph-ss[data-oph-effect="fade-right"] { transform: translate3d(calc(var(--oph-ss-distance, 40px) * -1), 0, 0); }
html.oph-ss-ready .oph-ss[data-oph-effect="zoom-in"]    { transform: scale(0.94); }
html.oph-ss-ready .oph-ss[data-oph-effect="zoom-out"]   { transform: scale(1.06); }
html.oph-ss-ready .oph-ss[data-oph-effect="blur-up"]    { transform: translate3d(0, var(--oph-ss-distance, 40px), 0); filter: blur(8px); }
html.oph-ss-ready .oph-ss[data-oph-effect="mask-up"] {
    transform: translate3d(0, var(--oph-ss-distance, 40px), 0);
    clip-path: inset(0 0 100% 0);
}

/* Estado revelado */
html.oph-ss-ready .oph-ss.oph-ss-in {
    opacity: 1;
    transform: none;
    filter: none;
    clip-path: inset(0 0 0 0);
}

/* Elementos que o plugin decidiu nao animar (hero, excluidos, nested) */
html.oph-ss-ready .oph-ss-off {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
}

/* Filhos com stagger */
html.oph-ss-ready .oph-ss-child {
    opacity: 0;
    transform: translate3d(0, var(--oph-ss-child-distance, 24px), 0);
    transition-property: opacity, transform;
    transition-duration: var(--oph-ss-duration, 800ms);
    transition-timing-function: var(--oph-ss-easing, cubic-bezier(0.22, 0.7, 0.3, 1));
    transition-delay: var(--oph-ss-child-delay, 0ms);
    will-change: opacity, transform;
}

html.oph-ss-ready .oph-ss-child.oph-ss-in {
    opacity: 1;
    transform: none;
}

/* Depois da animacao libertamos o will-change para nao pesar no compositor */
html.oph-ss-ready .oph-ss.oph-ss-done,
html.oph-ss-ready .oph-ss-child.oph-ss-done {
    will-change: auto;
}

/* Evita a barra horizontal causada por efeitos laterais */
html.oph-ss-nohscroll body {
    overflow-x: clip;
}

/* Placeholder dos embeds adiados */
.oph-ss-embed-holder {
    position: relative;
    display: block;
    background: rgba(14, 17, 17, 0.06);
}

/* Respeitar preferencia do sistema */
@media (prefers-reduced-motion: reduce) {
    html.oph-ss-reduced .oph-ss,
    html.oph-ss-reduced .oph-ss-child {
        opacity: 1 !important;
        transform: none !important;
        filter: none !important;
        clip-path: none !important;
        transition: none !important;
    }
}
