/* --- CORE --- */
body { background-color: #FFFFFF; color: #0A0A0A; }
::selection { background-color: #D81B1B; color: #FFFFFF; }

/* --- ANIMATIONS --- */
.reveal-up { opacity: 0; transform: translateY(80px) scale(0.95); transition: all 1.2s cubic-bezier(0.215, 0.610, 0.355, 1.000); }
.reveal-up.active { opacity: 1; transform: translateY(0) scale(1); }

.reveal-side { opacity: 0; transform: translateX(-100px); transition: all 1.2s cubic-bezier(0.215, 0.610, 0.355, 1.000); }
.reveal-side.active { opacity: 1; transform: translateX(0); }

.scroll-zoom img { transition: transform 1.8s cubic-bezier(0.215, 0.610, 0.355, 1.000); }
.scroll-zoom.active img { transform: scale(1.1); }

/* --- LOADER --- */
#loader {
    position: fixed; inset: 0; background-color: #D81B1B; z-index: 10000;
    display: flex; justify-content: center; align-items: center;
}
.loader-logo { animation: pulse-violent 2s infinite; }
@keyframes pulse-violent {
    0%, 100% { transform: scale(1); opacity: 1; filter: drop-shadow(0 0 0 rgba(255,255,255,0)); }
    50% { transform: scale(1.1); opacity: 0.9; filter: drop-shadow(0 0 20px rgba(255,255,255,0.4)); }
}
.loader-exit { animation: curtain-up 1s cubic-bezier(0.87, 0, 0.13, 1) forwards; }
@keyframes curtain-up { to { transform: translateY(-100%); } }

/* --- LOGO LOGIC (CSS STATE BASED - BUG FREE) --- */
/* Transizione fluida per il filtro */
#header-logo {
    transition: filter 0.3s ease, transform 0.3s ease;
    backface-visibility: hidden; /* Previene flickering */
}

/* 1. STATO TOP (Sfondo Trasparente) */
/* Default: Logo Rosso (Nessun filtro) */
#navbar:not(.scrolled) #header-logo {
    filter: none;
}
/* Hover: Diventa Bianco */
#navbar:not(.scrolled) .logo-link:hover #header-logo {
    filter: brightness(0) invert(1);
}

/* 2. STATO SCROLLED (Sfondo Nero) */
/* Default: Diventa Bianco */
#navbar.scrolled #header-logo {
    filter: brightness(0) invert(1);
}
/* Hover: Torna Rosso (Nessun filtro) */
#navbar.scrolled .logo-link:hover #header-logo {
    filter: none;
}

/* Navbar Background Transition */
#navbar { transition: background-color 0.4s ease, padding 0.4s ease, box-shadow 0.4s ease; }

/* --- UTILS --- */
.text-stroke-white { -webkit-text-stroke: 2px white; color: transparent; }
.text-stroke-red { -webkit-text-stroke: 1px #D81B1B; color: transparent; }

.hover-underline-red {
    background-image: linear-gradient(#D81B1B, #D81B1B);
    background-position: 0% 100%; background-repeat: no-repeat;
    background-size: 0% 3px; transition: background-size .3s;
}
.hover-underline-red:hover { background-size: 100% 3px; }

.map-container iframe { filter: grayscale(100%) invert(100%) contrast(1.2) brightness(0.7); transition: all 0.6s ease-out; pointer-events: none; }
.map-container:hover iframe { filter: grayscale(0%) invert(0%) contrast(1) brightness(1); transform: scale(1.02); pointer-events: auto; }

::-webkit-scrollbar { width: 0px; background: transparent; }
