/* 
   TILLMAN ANIMATIONS 
   Replicating Next.js Framer Motion defaults 
*/

/* Base state for animated elements */
[data-tml-animate] {
    opacity: 0;
    /* Initially hidden */
    transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);
    /* easeOutQuad approximation */
    will-change: transform, opacity;
}

[data-tml-parallax] {
    will-change: transform;
    transition: transform 0.1s linear;
    /* Smooth out rAF jitters slightly, though rAF should be smooth */
}

/* 
   ZOOM IN (For Hero Backgrounds) 
   Default: Duration 2.5s, Scale 1.1 -> 1.0 
*/
[data-tml-animate="zoom-in"] {
    transform: scale(1.1);
    transition-property: transform, opacity;
}

[data-tml-animate="zoom-in"].is-visible {
    opacity: 1;
    transform: scale(1);
}

/* 
   FADE UP (For Text/Content) 
   Default: Slide up 50px, Opacity 0 -> 1 
*/
[data-tml-animate="fade-up"] {
    transform: translateY(50px);
    transition-property: transform, opacity;
}

[data-tml-animate="fade-up"].is-visible {
    opacity: 1;
    transform: translateY(0);
}

/* 
   FADE IN (Simple) 
*/
[data-tml-animate="fade-in"] {
    transition-property: opacity;
}

[data-tml-animate="fade-in"].is-visible {
    opacity: 1;
}

/* Utility to override duration/delay via inline styles (handled by JS) 
   but defaults provided here for fallback 
*/