/* ===================================
   ANIMATION SYSTEM - REUSABLE VARIABLES
   =================================== */
:root {
    /* Animation timing */
    --rotation-duration: 10s;
    --pulse-duration: 6s;
    
    /* Opacity values */
    --purple-pulse-opacity-low: 0.0;
    --purple-pulse-opacity-high: 0.2;
    --pink-pulse-opacity-low: 0.0;
    --pink-pulse-opacity-high: 0.1;
    
    /* Light dimensions */
    --light-size: 150vw;
    --light-blur: 200px;
    
    /* Animation positions */
    --orbit-radius: 80vw;
    --orbit-squeeze: 0.75; /* Mais achatado para enfatizar as arestas verticais */
    
    /* Animation angles */
    --purple-start-angle: 0deg;
    --purple-end-angle: 360deg;
    --purple-rotate-start: 0deg;
    --purple-rotate-end: -360deg;
    
    --pink-start-angle: 180deg;
    --pink-end-angle: -180deg;
    --pink-rotate-start: -180deg;
    --pink-rotate-end: 180deg;
    
    /* Position offset */
    --center-offset-x: 0%;
    --center-offset-y: 0%;

    /* ===================================
       REUSABLE ANIMATION VARIABLES
       =================================== */
    
    /* Animation durations */
    --anim-duration-fast: 0.6s;
    --anim-duration-normal: 1.0s;
    --anim-duration-slow: 1.4s;
    --anim-duration-slower: 1.8s;
    --anim-duration-slowest: 2.5s;
    
    /* Animation delays */
    --anim-delay-early: 0.3s;
    --anim-delay-normal: 0.5s;
    --anim-delay-late: 0.8s;
    --anim-delay-later: 1.2s;
    --anim-delay-latest: 1.8s;
    
    /* Animation easing */
    --anim-ease-out: ease-out;
    --anim-ease-in-out: ease-in-out;
    
    /* Transform distances */
    --transform-distance-small: 20px;
    --transform-distance-medium: 30px;
    --transform-distance-large: 40px;
    --transform-distance-larger: 50px;
    
    /* Scale values */
    --scale-small: 0.9;
    --scale-normal: 1.0;
    --scale-large: 1.05;
}

/* ===================================
   REUSABLE ANIMATION CLASSES
   =================================== */

/* Base animation classes */
.animate-fade-in {
    opacity: 0;
    animation: fadeIn var(--anim-duration-normal) var(--anim-ease-out) forwards;
    will-change: opacity, transform;
}

.animate-fade-in-up {
    opacity: 0;
    transform: translateY(var(--transform-distance-medium));
    animation: fadeInUp var(--anim-duration-normal) var(--anim-ease-out) forwards;
    will-change: opacity, transform;
}

.animate-fade-in-up-large {
    opacity: 0;
    transform: translateY(var(--transform-distance-large));
    animation: fadeInUp var(--anim-duration-slow) var(--anim-ease-out) forwards;
    will-change: opacity, transform;
}

.animate-fade-in-up-larger {
    opacity: 0;
    transform: translateY(var(--transform-distance-larger));
    animation: fadeInUp var(--anim-duration-slow) var(--anim-ease-out) forwards;
    will-change: opacity, transform;
}

.animate-scale-in {
    opacity: 0;
    transform: scale(var(--scale-large));
    animation: scaleIn var(--anim-duration-slowest) var(--anim-ease-out) forwards;
    will-change: opacity, transform;
}

.animate-stagger {
    opacity: 0;
    transform: translateY(var(--transform-distance-small));
    animation: fadeInUp var(--anim-duration-fast) var(--anim-ease-out) forwards;
    will-change: opacity, transform;
}

/* Delay utility classes */
.animate-delay-early { animation-delay: var(--anim-delay-early); }
.animate-delay-normal { animation-delay: var(--anim-delay-normal); }
.animate-delay-late { animation-delay: var(--anim-delay-late); }
.animate-delay-later { animation-delay: var(--anim-delay-later); }
.animate-delay-latest { animation-delay: var(--anim-delay-latest); }

/* Staggered animation delays */
.animate-stagger-1 { animation-delay: calc(var(--anim-delay-late) + 0.1s); }
.animate-stagger-2 { animation-delay: calc(var(--anim-delay-late) + 0.2s); }
.animate-stagger-3 { animation-delay: calc(var(--anim-delay-late) + 0.3s); }
.animate-stagger-4 { animation-delay: calc(var(--anim-delay-late) + 0.4s); }
.animate-stagger-5 { animation-delay: calc(var(--anim-delay-late) + 0.5s); }

/* ===================================
   REUSABLE KEYFRAME ANIMATIONS
   =================================== */

@keyframes fadeIn {
    0% {
        opacity: 0;
    }
    100% {
        opacity: 1;
    }
}

@keyframes fadeInUp {
    0% {
        opacity: 0;
        transform: translateY(var(--transform-distance-medium));
    }
    100% {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes scaleIn {
    0% {
        opacity: 0;
        transform: scale(var(--scale-large));
    }
    100% {
        opacity: 1;
        transform: scale(var(--scale-normal));
    }
}

@keyframes fadeInScale {
    0% {
        opacity: 0;
        transform: translateY(var(--transform-distance-small)) scale(var(--scale-small));
    }
    100% {
        opacity: 1;
        transform: translateY(0) scale(var(--scale-normal));
    }
}

@keyframes separatorFadeIn {
    0% {
        opacity: 0;
        transform: scaleY(0);
    }
    100% {
        opacity: 1;
        transform: scaleY(1);
    }
}

/* ===================================
   HERO LIGHTS EFFECTS (ORIGINAL)
   =================================== */

.hero-lights {
    background-color: #1f072f;
    position: relative;
    overflow: hidden;
    margin-bottom: -40px;
    min-height: 85vh;
}

.radial-effect-container {
    position: relative;
    z-index: 1;
    width: 100%;
    height: 100%;
    min-height: inherit;
    overflow: hidden;
}

.radial-light {
    position: absolute;
    z-index: 1;
    border-radius: 50%;
    filter: blur(var(--light-blur));
    mix-blend-mode: lighten;
    mix-blend-mode: plus-lighter;
    will-change: transform, opacity;
    transition: opacity 0.5s ease;
    pointer-events: none;
}

.light-purple {
    width: var(--light-size);
    height: var(--light-size);
    background: #9b4dca;
    animation: 
        orbit-clockwise var(--rotation-duration) infinite linear,
        pulse-purple var(--pulse-duration) infinite ease-in-out;
    opacity: var(--purple-pulse-opacity-low);
    position: absolute;
    left: 50%;
    top: 50%;
    transform-origin: center;
    z-index: 2;
}

.light-pink {
    width: var(--light-size);
    height: var(--light-size);
    background: #ff69b4;
    animation: 
        orbit-clockwise var(--rotation-duration) infinite linear reverse,
        pulse-pink var(--pulse-duration) infinite ease-in-out;
    opacity: var(--pink-pulse-opacity-low);
    position: absolute;
    left: 50%;
    top: 50%;
    transform-origin: center;
    z-index: 2;
    animation-delay: calc(var(--rotation-duration) * -0.4); /* Defasagem de 40% */
}

@keyframes orbit-clockwise {
    0% {
        transform: translate(-50%, -50%) 
                  scale(1, var(--orbit-squeeze)) 
                  rotate(0deg) 
                  translateX(var(--orbit-radius)) 
                  scale(1, calc(1/var(--orbit-squeeze)));
    }
    100% {
        transform: translate(-50%, -50%) 
                  scale(1, var(--orbit-squeeze)) 
                  rotate(360deg) 
                  translateX(var(--orbit-radius)) 
                  scale(1, calc(1/var(--orbit-squeeze)));
    }
}

@keyframes orbit-counterclockwise {
    0% {
        transform: translate(-50%, -50%) 
                  scale(1, var(--orbit-squeeze)) 
                  rotate(0deg) 
                  translateX(var(--orbit-radius)) 
                  scale(1, calc(1/var(--orbit-squeeze)));
    }
    100% {
        transform: translate(-50%, -50%) 
                  scale(1, var(--orbit-squeeze)) 
                  rotate(-360deg) 
                  translateX(var(--orbit-radius)) 
                  scale(1, calc(1/var(--orbit-squeeze)));
    }
}

@keyframes pulse-purple {
    0% {
        opacity: var(--purple-pulse-opacity-low);
    }
    50% {
        opacity: var(--purple-pulse-opacity-high);
    }
    100% {
        opacity: var(--purple-pulse-opacity-low);
    }
}

@keyframes pulse-pink {
    0% {
        opacity: var(--pink-pulse-opacity-low);
    }
    50% {
        opacity: var(--pink-pulse-opacity-high);
    }
    100% {
        opacity: var(--pink-pulse-opacity-low);
    }
}

/* ===================================
   HERO SECTION ANIMATIONS (REFACTORED)
   =================================== */

/* Hero background fade-in animation */
.hero-lights {
    animation: scaleIn var(--anim-duration-slowest) var(--anim-ease-out) forwards;
    will-change: opacity, transform;
}

/* Hero title specific animation */
.hero-title-animate {
    opacity: 0;
    transform: translateY(var(--transform-distance-large));
    animation: fadeInUp var(--anim-duration-slow) var(--anim-ease-out) var(--anim-delay-normal) forwards;
    will-change: opacity, transform;
}

/* Hero countdown card animation */
.hero-countdown-animate {
    opacity: 0;
    transform: translateY(var(--transform-distance-larger));
    animation: fadeInUp var(--anim-duration-slow) var(--anim-ease-out) var(--anim-delay-later) forwards;
    will-change: opacity, transform;
}

/* Staggered animation for countdown boxes */
.countdown-box {
    opacity: 0;
    transform: translateY(var(--transform-distance-small));
    animation: fadeInScale var(--anim-duration-fast) var(--anim-ease-out) forwards;
}

.countdown-box:nth-child(1) { animation-delay: calc(var(--anim-delay-late) + 0.1s); }
.countdown-box:nth-child(2) { animation-delay: calc(var(--anim-delay-late) + 0.2s); }
.countdown-box:nth-child(3) { animation-delay: calc(var(--anim-delay-late) + 0.3s); }
.countdown-box:nth-child(4) { animation-delay: calc(var(--anim-delay-late) + 0.4s); }

/* CTA button animation */
.hero-cta-animate {
    opacity: 0;
    transform: translateY(var(--transform-distance-medium));
    animation: fadeInUp var(--anim-duration-normal) var(--anim-ease-out) var(--anim-delay-latest) forwards;
    will-change: opacity, transform;
}

/* Event info animation (date, venue) */
.hero-countdown-animate .flex.items-start.flex-col {
    opacity: 0;
    transform: translateY(var(--transform-distance-small));
    animation: fadeInUp var(--anim-duration-normal) var(--anim-ease-out) var(--anim-delay-late) forwards;
    will-change: opacity, transform;
}

/* Countdown container animation */
.hero-countdown-animate .flex.items-start.gap-2 {
    opacity: 0;
    transform: translateY(25px);
    animation: fadeInUp var(--anim-duration-slow) var(--anim-ease-out) calc(var(--anim-delay-late) + 0.1s) forwards;
    will-change: opacity, transform;
}

/* Countdown separators animation */
.hero-countdown-animate .w-px {
    opacity: 0;
    animation: separatorFadeIn var(--anim-duration-fast) var(--anim-ease-out) forwards;
}

.hero-countdown-animate .w-px:nth-child(2) { animation-delay: calc(var(--anim-delay-late) + 0.3s); }
.hero-countdown-animate .w-px:nth-child(4) { animation-delay: calc(var(--anim-delay-late) + 0.4s); }
.hero-countdown-animate .w-px:nth-child(6) { animation-delay: calc(var(--anim-delay-late) + 0.5s); }

/* ===================================
   PROGRAMACAO PAGE ANIMATIONS
   =================================== */

/* Programação hero section - Only animate first section (title + tabs + calendar) */
.programacao-hero {
    animation: scaleIn var(--anim-duration-slow) var(--anim-ease-out) forwards;
    will-change: opacity, transform;
}

.programacao-title {
    opacity: 0;
    transform: translateY(var(--transform-distance-large));
    animation: fadeInUp var(--anim-duration-fast) var(--anim-ease-out) var(--anim-delay-early) forwards;
    will-change: opacity, transform;
}

.programacao-subtitle {
    opacity: 0;
    transform: translateY(var(--transform-distance-medium));
    animation: fadeInUp var(--anim-duration-fast) var(--anim-ease-out) var(--anim-delay-normal) forwards;
    will-change: opacity, transform;
}

.programacao-tabs {
    opacity: 0;
    transform: translateY(var(--transform-distance-medium));
    animation: fadeInUp var(--anim-duration-fast) var(--anim-ease-out) var(--anim-delay-late) forwards;
    will-change: opacity, transform;
}

/* Calendar animations - Simplified (appears all at once, faster) */
.calendar-wrapper {
    opacity: 0;
    transform: translateY(var(--transform-distance-medium));
    animation: fadeInUp var(--anim-duration-fast) var(--anim-ease-out) var(--anim-delay-late) forwards;
    will-change: opacity, transform;
}

/* Remove individual column animations - calendar appears as one unit */
.calendar-room-header {
    /* No individual animations - inherits from parent */
}

/* Calendar events - No animations, appears directly */
.calendar-event, .calendar-pill {
    /* No animations - appears directly on page load */
}

/* ===================================
   CALENDAR TABS ANIMATIONS - AGILE & RESPONSIVE
   =================================== */

/* Override global slow transitions for calendar tabs - AGGRESSIVE OVERRIDE */
.calendar-tab,
.calendar-tab *,
.calendar-tab-badge,
.calendar-tab-date {
    transition: none !important; /* Remove ALL transitions */
    animation: none !important; /* Remove ALL animations */
    animation-delay: 0s !important; /* Remove ALL delays */
    transition-delay: 0s !important; /* Remove ALL transition delays */
}

/* Active tab state change - INSTANT response */
.calendar-tab.is-active {
    transition: all 0.08s cubic-bezier(0.25, 0.46, 0.45, 0.94) !important; /* Ultra fast, instant start */
}

/* Tab hover effects - INSTANT response */
.calendar-tab:hover {
    transition: all 0.05s cubic-bezier(0.25, 0.46, 0.45, 0.94) !important; /* Instant hover */
}

/* Tab badge animations - INSTANT color changes */
.calendar-tab-badge {
    transition: background 0.08s cubic-bezier(0.25, 0.46, 0.45, 0.94) !important;
}

/* Tab date text - INSTANT color changes */
.calendar-tab-date {
    transition: color 0.05s ease !important; /* Instant color transition */
}

/* Tab border and background - INSTANT state changes */
.calendar-tab {
    transition: border-color 0.08s ease, background-color 0.08s ease !important;
}

/* Force immediate state changes for active tabs */
.calendar-tab.is-active * {
    transition: all 0.08s cubic-bezier(0.25, 0.46, 0.45, 0.94) !important;
}

/* Override any inherited transitions from parent elements */
.programacao-hero .calendar-tab,
.programacao-hero .calendar-tab * {
    transition: none !important;
    animation: none !important;
}

/* Specific override for tab states */
.calendar-tab.is-active,
.calendar-tab:hover {
    transition: all 0.08s cubic-bezier(0.25, 0.46, 0.45, 0.94) !important;
}

/* ===================================
   CALENDAR CONTENT SWITCHING ANIMATIONS
   =================================== */

/* Calendar day content switching - Fast response, no delay */
.calendar-day-content,
.calendar-day {
    transition: opacity 0.1s ease-in-out !important; /* Fast, no delay */
}

/* Active day content - Fast visibility */
.calendar-day-content.is-active,
.calendar-day.is-active {
    transition: opacity 0.08s ease-in-out !important; /* Fast visibility */
}

/* Inactive day content - Fast fade out */
.calendar-day-content:not(.is-active),
.calendar-day:not(.is-active) {
    transition: opacity 0.05s ease-in-out !important; /* Fast fade out */
}

/* ===================================
   CALENDAR TAB CLICK RESPONSE - INSTANT
   =================================== */

/* Override any transition delays for tab clicks */
.ticket-tab,
.ticket-tab *,
.ticket-tab[data-target^="day-content-"] {
    transition: none !important;
    animation: none !important;
    transition-delay: 0s !important;
}

/* Day content visibility - Fast switching */
.day-content,
.day-content *,
#day-content-0,
#day-content-1,
#day-content-2,
#day-content-3 {
    transition: opacity 0.1s ease-in-out !important; /* Fast opacity change */
    transition-delay: 0s !important; /* No delay */
}

/* Hidden state - Fast hide/show */
.day-content.hidden,
.day-content:not(.hidden) {
    transition: opacity 0.1s ease-in-out !important; /* Fast opacity change */
    transition-delay: 0s !important; /* No delay */
}

/* Force immediate visibility changes */
.day-content[class*="hidden"],
.day-content:not([class*="hidden"]) {
    transition: none !important;
    animation: none !important;
}

/* Exhibition section - No animations, appears directly */
.exhibition-section {
    /* No animations - appears directly on page load */
}

.exhibition-header {
    /* No animations - appears directly on page load */
}

.exhibition-area {
    /* No animations - appears directly on page load */
}

.exhibition-map {
    /* No animations - appears directly on page load */
}

/* ===================================
   UTILITY CLASSES
   =================================== */

/* Smooth transition for all animated elements */
.hero-lights *, .programacao-hero *, .exhibition-section * {
    transition: all 0.3s ease;
}

/* Exclude calendar tabs from slow global transitions */
.hero-lights *, .programacao-hero *, .exhibition-section *:not(.calendar-tab):not(.calendar-tab *):not(.calendar-tab-badge):not(.calendar-tab-date):not(.ticket-tab):not(.ticket-tab *) {
    transition: all 0.3s ease;
}

/* Force calendar tabs to have NO global transitions */
.calendar-tab,
.calendar-tab *,
.calendar-tab-badge,
.calendar-tab-date {
    transition: none !important;
    animation: none !important;
}

/* Reduce motion for users who prefer it */
@media (prefers-reduced-motion: reduce) {
    .animate-fade-in,
    .animate-fade-in-up,
    .animate-fade-in-up-large,
    .animate-fade-in-up-larger,
    .animate-scale-in,
    .animate-stagger,
    .hero-lights,
    .hero-title-animate,
    .hero-countdown-animate,
    .hero-cta-animate,
    .countdown-box,
    .programacao-hero,
    .programacao-title,
    .programacao-subtitle,
    .programacao-tabs,
    .calendar-wrapper,
    .calendar-room-header,
    .calendar-event,
    .calendar-pill,
    .exhibition-section,
    .exhibition-header,
    .exhibition-area,
    .exhibition-map {
        animation: none !important;
        opacity: 1 !important;
        transform: none !important;
    }
}

/* ===================================
   ANIMATION SYSTEM SUMMARY
   ===================================
   
   REUSABLE CLASSES:
   - .animate-fade-in: Simple fade in
   - .animate-fade-in-up: Fade in from bottom
   - .animate-fade-in-up-large: Larger fade in from bottom
   - .animate-fade-in-up-larger: Even larger fade in from bottom
   - .animate-scale-in: Scale in with fade
   - .animate-stagger: Staggered animation base
   
   DELAY CLASSES:
   - .animate-delay-early: 0.3s delay
   - .animate-delay-normal: 0.5s delay
   - .animate-delay-late: 0.8s delay
   - .animate-delay-later: 1.2s delay
   - .animate-delay-latest: 1.8s delay
   
   STAGGER CLASSES:
   - .animate-stagger-1 to .animate-stagger-5: Incremental delays
   
   USAGE EXAMPLE:
   <div class="animate-fade-in-up animate-delay-late">Content</div>
   <div class="animate-stagger animate-stagger-1">Item 1</div>
   <div class="animate-stagger animate-stagger-2">Item 2</div>
   
   PAGE-SPECIFIC ANIMATIONS:
   
   Homepage (Hero Section):
   - .hero-lights: Background scale in
   - .hero-title-animate: Title fade in up
   - .hero-countdown-animate: Countdown fade in up
   - .countdown-box: Staggered sequence
   - .hero-cta-animate: CTA button
   
   Programação Page:
   - .programacao-hero: Hero background (scale in)
   - .programacao-title: Title fade in up (fast)
   - .programacao-subtitle: Subtitle fade in up (fast)
   - .programacao-tabs: Tabs fade in up (fast)
   - .calendar-wrapper: Calendar grid fade in up (fast)
   - .calendar-tab: INSTANT tab switching (0.08s, no delay)
   - .calendar-day-content: Fast content switching (0.1s, no delay)
   - .ticket-tab: INSTANT tab response (no delay)
   - .day-content: Fast visibility switching (0.1s, no delay)
   - Rest of page: Appears directly without animations
   
   Notícias Page:
   - .noticias-hero: Hero background (fade in)
   - .noticias-title: Title fade in up (fast)
   - .noticias-subtitle: Subtitle fade in up (fast)
   - .news-grid: News grid fade in up (fast) - ALL CARDS TOGETHER
   - .load-more-btn: Load more button fade in
   
   Sobre Page:
   - .sobre-hero: Hero background (fade in)
   - .sobre-title: Title fade in up (fast)
   - .sobre-content: Content fade in up (fast)
   - .mosaic-grid: Image mosaic fade in up (fast)
   - .kpi-section: KPIs section fade in up (fast)
   - .previous-editions: Previous editions fade in up (fast)
   
   Contato Page:
   - .contato-hero: Hero background (fade in)
   - .contato-title: Title fade in up (fast)
   - .whatsapp-card: WhatsApp card fade in up (fast)
   - .contact-form: Contact form fade in up (fast)
   
   Call Papers Page:
   - .callpapers-hero: Hero background (fade in) - NO LIGHTS
   - .callpapers-title: Title fade in up (fast)
   - .callpapers-subtitle: Subtitle fade in up (fast)
   - .event-info-strip: Event info fade in up (fast)
   - .stats-cards: Stats cards fade in up (fast)
   - .about-section: About section fade in up (fast)
   - .topics-grid: Topics grid fade in up (fast)
   - .timeline-section: Timeline fade in up (fast)
   
   =================================== */

/* ===================================
   NOTICIAS PAGE ANIMATIONS
   =================================== */

/* Notícias hero section */
.noticias-hero {
    animation: fadeIn var(--anim-duration-slow) var(--anim-ease-out) forwards;
    will-change: opacity;
}

.noticias-title {
    opacity: 0;
    transform: translateY(var(--transform-distance-large));
    animation: fadeInUp var(--anim-duration-fast) var(--anim-ease-out) var(--anim-delay-early) forwards;
    will-change: opacity, transform;
}

.noticias-subtitle {
    opacity: 0;
    transform: translateY(var(--transform-distance-medium));
    animation: fadeInUp var(--anim-duration-fast) var(--anim-ease-out) var(--anim-delay-normal) forwards;
    will-change: opacity, transform;
}

/* News grid animation - ALL CARDS TOGETHER */
.news-grid {
    opacity: 0;
    transform: translateY(var(--transform-distance-medium));
    animation: fadeInUp var(--anim-duration-fast) var(--anim-ease-out) var(--anim-delay-late) forwards;
    will-change: opacity, transform;
}

/* Remove individual news item animations - they inherit from parent */
.news-item {
    /* No individual animations - appears with parent grid */
}

/* Load more button */
.load-more-btn {
    opacity: 0;
    transform: translateY(var(--transform-distance-small));
    animation: fadeInUp var(--anim-duration-normal) var(--anim-ease-out) calc(var(--anim-delay-late) + 0.2s) forwards;
    will-change: opacity, transform;
    position: relative;
    z-index: 10;
    pointer-events: auto;
}

.load-more-btn:hover {
    visibility: visible !important;
    opacity: 1 !important;
    display: inline-block !important;
}

.load-more-btn:focus {
    visibility: visible !important;
    opacity: 1 !important;
    display: inline-block !important;
}

/* ===================================
   SOBRE PAGE ANIMATIONS (SIMPLIFIED)
   =================================== */

/* Sobre hero section - NO SCALE, just fade in */
.sobre-hero {
    animation: fadeIn var(--anim-duration-slow) var(--anim-ease-out) forwards;
    will-change: opacity;
}

.sobre-title {
    opacity: 0;
    transform: translateY(var(--transform-distance-large));
    animation: fadeInUp var(--anim-duration-fast) var(--anim-ease-out) var(--anim-delay-early) forwards;
    will-change: opacity, transform;
}

.sobre-content {
    opacity: 0;
    transform: translateY(var(--transform-distance-medium));
    animation: fadeInUp var(--anim-duration-fast) var(--anim-ease-out) var(--anim-delay-normal) forwards;
    will-change: opacity, transform;
}

/* Mosaic grid animation */
.mosaic-grid {
    opacity: 0;
    transform: translateY(var(--transform-distance-medium));
    animation: fadeInUp var(--anim-duration-fast) var(--anim-ease-out) var(--anim-delay-late) forwards;
    will-change: opacity, transform;
}

/* KPIs section */
.kpi-section {
    opacity: 0;
    transform: translateY(var(--transform-distance-medium));
    animation: fadeInUp var(--anim-duration-slow) var(--anim-ease-out) calc(var(--anim-delay-late) + 0.2s) forwards;
    will-change: opacity, transform;
}

/* Previous editions */
.previous-editions-section {
    opacity: 0;
    transform: translateY(var(--transform-distance-medium));
    animation: fadeInUp var(--anim-duration-slow) var(--anim-ease-out) calc(var(--anim-delay-late) + 0.4s) forwards;
    will-change: opacity, transform;
}

/* ===================================
   CONTATO PAGE ANIMATIONS (SIMPLIFIED)
   =================================== */

/* Contato hero section - NO SCALE, just fade in */
.contato-hero {
    animation: fadeIn var(--anim-duration-slow) var(--anim-ease-out) forwards;
    will-change: opacity;
}

.contato-title {
    opacity: 0;
    transform: translateY(var(--transform-distance-large));
    animation: fadeInUp var(--anim-duration-fast) var(--anim-ease-out) var(--anim-delay-early) forwards;
    will-change: opacity, transform;
}

/* WhatsApp card */
.whatsapp-card {
    opacity: 0;
    transform: translateY(var(--transform-distance-medium));
    animation: fadeInUp var(--anim-duration-fast) var(--anim-ease-out) var(--anim-delay-normal) forwards;
    will-change: opacity, transform;
}

/* Contact form */
.contact-form {
    opacity: 0;
    transform: translateY(var(--transform-distance-medium));
    animation: fadeInUp var(--anim-duration-fast) var(--anim-ease-out) var(--anim-delay-late) forwards;
    will-change: opacity, transform;
}

/* ===================================
   CALL PAPERS PAGE ANIMATIONS (NO LIGHTS)
   =================================== */

/* Call Papers hero section - NO LIGHTS ANIMATION, NO SCALE */
.callpapers-hero {
    animation: fadeIn var(--anim-duration-slow) var(--anim-ease-out) forwards;
    will-change: opacity;
}

.callpapers-title {
    opacity: 0;
    transform: translateY(var(--transform-distance-large));
    animation: fadeInUp var(--anim-duration-fast) var(--anim-ease-out) var(--anim-delay-early) forwards;
    will-change: opacity, transform;
}

.callpapers-subtitle {
    opacity: 0;
    transform: translateY(var(--transform-distance-medium));
    animation: fadeInUp var(--anim-duration-fast) var(--anim-ease-out) var(--anim-delay-normal) forwards;
    will-change: opacity, transform;
}

/* Event info strip */
.event-info-strip {
    opacity: 0;
    transform: translateY(var(--transform-distance-medium));
    animation: fadeInUp var(--anim-duration-fast) var(--anim-ease-out) var(--anim-delay-late) forwards;
    will-change: opacity, transform;
}

/* Stats cards */
.stats-cards {
    opacity: 0;
    transform: translateY(var(--transform-distance-medium));
    animation: fadeInUp var(--anim-duration-slow) var(--anim-ease-out) calc(var(--anim-delay-late) + 0.2s) forwards;
    will-change: opacity, transform;
}

/* About section */
.about-section {
    opacity: 0;
    transform: translateY(var(--transform-distance-medium));
    animation: fadeInUp var(--anim-duration-slow) var(--anim-ease-out) calc(var(--anim-delay-late) + 0.4s) forwards;
    will-change: opacity, transform;
}

/* Topics grid */
.topics-grid {
    opacity: 0;
    transform: translateY(var(--transform-distance-medium));
    animation: fadeInUp var(--anim-duration-slow) var(--anim-ease-out) calc(var(--anim-delay-late) + 0.6s) forwards;
    will-change: opacity, transform;
}

/* Timeline section */
.timeline-section {
    opacity: 0;
    transform: translateY(var(--transform-distance-medium));
    animation: fadeInUp var(--anim-duration-slow) var(--anim-ease-out) calc(var(--anim-delay-late) + 0.8s) forwards;
    will-change: opacity, transform;
}

/* ===================================
   UTILITY CLASSES
   =================================== */

/* Smooth transition for all animated elements */
.hero-lights *, .programacao-hero *, .exhibition-section *,
.noticias-hero *, .sobre-hero *, .contato-hero *, .callpapers-hero * {
    transition: all 0.3s ease;
}

/* Exclude calendar tabs from slow global transitions */
.hero-lights *, .programacao-hero *, .exhibition-section *:not(.calendar-tab):not(.calendar-tab *):not(.calendar-tab-badge):not(.calendar-tab-date):not(.ticket-tab):not(.ticket-tab *) {
    transition: all 0.3s ease;
}

/* Force calendar tabs to have NO global transitions */
.calendar-tab,
.calendar-tab *,
.calendar-tab-badge,
.calendar-tab-date {
    transition: none !important;
    animation: none !important;
}

/* Reduce motion for users who prefer it */
@media (prefers-reduced-motion: reduce) {
    .animate-fade-in,
    .animate-fade-in-up,
    .animate-fade-in-up-large,
    .animate-fade-in-up-larger,
    .animate-scale-in,
    .animate-stagger,
    .hero-lights,
    .hero-title-animate,
    .hero-countdown-animate,
    .hero-cta-animate,
    .countdown-box,
    .programacao-hero,
    .programacao-title,
    .programacao-subtitle,
    .programacao-tabs,
    .calendar-wrapper,
    .calendar-room-header,
    .calendar-event,
    .calendar-pill,
    .exhibition-section,
    .exhibition-header,
    .exhibition-area,
    .exhibition-map,
    .noticias-hero,
    .noticias-title,
    .noticias-subtitle,
    .news-grid,
    .news-item,
    .load-more-btn,
    .sobre-hero,
    .sobre-title,
    .sobre-content,
    .mosaic-grid,
    .kpi-section,
    .previous-editions-section,
    .contato-hero,
    .contato-title,
    .whatsapp-card,
    .contact-form,
    .callpapers-hero,
    .callpapers-title,
    .callpapers-subtitle,
    .event-info-strip,
    .stats-cards,
    .about-section,
    .topics-grid,
    .timeline-section {
        animation: none !important;
        opacity: 1 !important;
        transform: none !important;
    }
}

/* ===================================
   CONTATO DIVISOR
   =================================== */

.contato-divisor {
    display: none;
    position: relative;
    margin: 0 2.5rem;
    flex-shrink: 0;
}

@media (min-width: 768px) {
    .contato-divisor {
        display: flex;
    }
}