/* ===================================================================
   ANIMATION BASE STYLES
   Elements start hidden, GSAP/ScrollTrigger reveals them
   =================================================================== */

/* Lenis Smooth Scroll Fixes */
html.lenis, html.lenis body {
    height: auto;
}
.lenis.lenis-smooth {
    scroll-behavior: auto !important;
}
.lenis.lenis-smooth [data-lenis-prevent] {
    overscroll-behavior: contain;
}
.lenis.lenis-stopped {
    overflow: hidden;
}
.lenis.lenis-smooth iframe {
    pointer-events: none;
}

/* SplitType Base Styles */
.line {
    padding-bottom: 0.15em;
    margin-bottom: -0.15em;
}
.char {
    display: inline-block;
    transform: translateY(100%);
    opacity: 0;
    will-change: transform, opacity;
}

/* Advanced Fade & Reveal States */
[data-animate] {
    opacity: 0;
    transform: translateY(30px);
    will-change: transform, opacity;
    transition: none;
}
[data-animate="fade-left"] {
    opacity: 0;
    transform: translateX(-30px);
}
[data-animate="fade-right"] {
    opacity: 0;
    transform: translateX(30px);
}
[data-animate="scale-in"] {
    opacity: 0;
    transform: scale(0.95);
}
[data-animate="rotate-in"] {
    opacity: 0;
    transform: translateY(30px) rotateX(-15deg);
    transform-origin: top center;
}

/* Fix: Prevent hero titles from being hidden by [data-animate] at the container level, 
   as they are animated via SplitType characters. */
.hero h1[data-animate], .hero h2[data-animate],
.page-hero h1[data-animate], .page-hero h2[data-animate] {
    opacity: 1 !important;
    transform: none !important;
}

/* Page Transition Overlay */
.page-transition-overlay {
    position: fixed;
    inset: 0;
    z-index: 99999;
    background: var(--background);
    pointer-events: none;
    transform: scaleY(0);
    transform-origin: top;
    will-change: transform;
}
.page-transition-overlay.is-animating {
    pointer-events: all;
}

/* Preloader (Awwwards Grade) */
.preloader {
    position: fixed;
    inset: 0;
    z-index: 100000;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--background);
    color: var(--foreground);
    transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}
.preloader.hidden {
    opacity: 0;
    pointer-events: none;
}
.preloader-inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.5rem;
    overflow: hidden;
}
.preloader-logo {
    font-family: var(--font-display);
    font-size: clamp(2.5rem, 5vw, 4rem);
    font-weight: 700;
    letter-spacing: -0.01em;
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0% 100%);
}
.preloader-logo-chars {
    display: inline-block;
    transform: translateY(100%);
}
.preloader-bar {
    width: 0;
    height: 1px;
    background: var(--primary);
    margin-top: 1rem;
    transform-origin: left;
}
