html.due90-lock,
html.due90-lock body{
    overflow:hidden;
}
html{
    scrollbar-gutter: stable;
}
#due90-preloader{
    position:fixed;
    inset:0;
    z-index:99999999;
    overflow:hidden;
    pointer-events:none;
}
#due90-preloader.due90-has-blur{
    backdrop-filter:blur(var(--due90-overlay-blur, 4px));
    -webkit-backdrop-filter:blur(var(--due90-overlay-blur, 4px));
}
.due90-layer{
    position:absolute;
    inset:0;
    will-change:transform, opacity;
}
.due90-layer-1{
    background:var(--due90-layer1, #ffffff);
    z-index:20;
}
.due90-layer-2{
    background:var(--due90-layer2, #faf8f5);
    z-index:10;
}
.due90-inner{
    position:absolute;
    inset:0;
    display:flex;
    align-items:center;
    justify-content:center;
    z-index:30;
    will-change:transform, opacity;
}
.due90-logo{
    width:var(--due90-logo-size, 260px);
    height:auto;
    max-width:75vw;
    max-height:70vh;
    object-fit:contain;
    opacity:0;
    transform:scale(.92);
    animation:due90LogoReveal 1.2s ease forwards;
}
@keyframes due90LogoReveal{
    0%{opacity:0;transform:scale(.92);}
    100%{opacity:1;transform:scale(1);}
}

.due90-text{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:.08em;
    font-family:var(--due90-text-font, Arial, Helvetica, sans-serif);
    font-size:var(--due90-text-size-desktop, 86px);
    font-weight:var(--due90-text-weight, 700);
    line-height:1;
    letter-spacing:var(--due90-text-letter-spacing, .12em);
    color:var(--due90-text-color, #d21f1f);
    opacity:0;
    transform:translateY(14px);
    animation:due90TextReveal 1.05s ease forwards;
}
.due90-text.is-uppercase{
    text-transform:uppercase;
}
.due90-text span{
    display:inline-block;
    opacity:0;
    transform:translateY(16px);
    animation:due90TextCharReveal .7s cubic-bezier(.22,1,.36,1) forwards;
    animation-delay:calc(.12s + (var(--due90-char-index, 0) * .055s));
}
@keyframes due90TextReveal{
    0%{opacity:0;transform:translateY(14px);}
    100%{opacity:1;transform:translateY(0);}
}
@keyframes due90TextCharReveal{
    0%{opacity:0;transform:translateY(16px);}
    100%{opacity:1;transform:translateY(0);}
}

/* Animazione 1: classica, verso l'alto */
.due90-animation-slide-up .due90-inner.open{
    animation:due90LogoExitSlide 1s cubic-bezier(.77,0,.18,1) forwards;
}
.due90-animation-slide-up .due90-layer-1.open,
.due90-animation-slide-up .due90-layer-2.open{
    animation:due90LayerExitSlide 1s cubic-bezier(.77,0,.18,1) forwards;
}
@keyframes due90LogoExitSlide{
    0%{transform:translateY(0);opacity:1;}
    100%{transform:translateY(-120%);opacity:1;}
}
@keyframes due90LayerExitSlide{
    0%{transform:translateY(0);}
    100%{transform:translateY(-100%);}
}

/* Animazione 2: fade morbido */
.due90-animation-fade .due90-inner.open{
    animation:due90LogoExitFade .75s ease forwards;
}
.due90-animation-fade .due90-layer-1.open,
.due90-animation-fade .due90-layer-2.open{
    animation:due90LayerExitFade .95s ease forwards;
}
@keyframes due90LogoExitFade{
    0%{opacity:1;}
    100%{opacity:0;}
}
@keyframes due90LayerExitFade{
    0%{opacity:1;}
    100%{opacity:0;}
}

/* Animazione 3: zoom dinamico */
.due90-animation-zoom .due90-inner.open{
    animation:due90LogoExitZoom .85s cubic-bezier(.22,1,.36,1) forwards;
}
.due90-animation-zoom .due90-layer-1.open,
.due90-animation-zoom .due90-layer-2.open{
    animation:due90LayerExitZoom .95s cubic-bezier(.77,0,.18,1) forwards;
}
@keyframes due90LogoExitZoom{
    0%{opacity:1;transform:scale(1);}
    100%{opacity:0;transform:scale(1.18);}
}
@keyframes due90LayerExitZoom{
    0%{opacity:1;transform:scale(1);}
    100%{opacity:0;transform:scale(1.08);}
}

@media(max-width:1024px){
    .due90-logo{
        width:min(var(--due90-logo-size-tablet, 180px), 75vw);
    }
    .due90-text{
        font-size:var(--due90-text-size-tablet, 64px);
    }
}
@media(max-width:767px){
    .due90-logo{
        width:min(var(--due90-logo-size-mobile, 140px), 75vw);
    }
    .due90-text{
        font-size:var(--due90-text-size-mobile, 42px);
    }
}
@media (prefers-reduced-motion: reduce){
    .due90-logo,
    .due90-text,
    .due90-text span{
        animation:none;
        opacity:1;
        transform:none;
    }
    .due90-inner.open,
    .due90-layer-1.open,
    .due90-layer-2.open{
        animation:none!important;
        opacity:0!important;
    }
}
