/**
 * S615 Animation System — CSS-only scroll/reveal animations
 * No JavaScript libraries needed. Uses IntersectionObserver trigger.
 */

/* Hidden state (before animation) */
[data-s615-animate] {
    opacity: 0;
    transition: opacity .6s ease, transform .6s cubic-bezier(.4,0,.2,1);
}
[data-s615-animate].s615-visible {
    opacity: 1;
    transform: none !important;
}

/* Animation types */
[data-s615-animate="fade-up"] { transform: translateY(30px) }
[data-s615-animate="fade-down"] { transform: translateY(-30px) }
[data-s615-animate="fade-left"] { transform: translateX(30px) }
[data-s615-animate="fade-right"] { transform: translateX(-30px) }
[data-s615-animate="zoom-in"] { transform: scale(0.9) }
[data-s615-animate="zoom-out"] { transform: scale(1.1) }
[data-s615-animate="flip-up"] { transform: perspective(1000px) rotateX(10deg); transform-origin: bottom }
[data-s615-animate="flip-left"] { transform: perspective(1000px) rotateY(10deg); transform-origin: right }
[data-s615-animate="slide-up"] { transform: translateY(60px) }
[data-s615-animate="slide-down"] { transform: translateY(-60px) }

/* Stagger delays */
[data-s615-delay="100"] { transition-delay: .1s }
[data-s615-delay="200"] { transition-delay: .2s }
[data-s615-delay="300"] { transition-delay: .3s }
[data-s615-delay="400"] { transition-delay: .4s }
[data-s615-delay="500"] { transition-delay: .5s }
[data-s615-delay="600"] { transition-delay: .6s }
[data-s615-delay="700"] { transition-delay: .7s }
[data-s615-delay="800"] { transition-delay: .8s }

/* Duration modifiers */
[data-s615-duration="fast"] { transition-duration: .3s }
[data-s615-duration="slow"] { transition-duration: 1s }
[data-s615-duration="slower"] { transition-duration: 1.5s }

/* Easing modifiers */
[data-s615-easing="bounce"] { transition-timing-function: cubic-bezier(.68,-.6,.32,1.6) }
[data-s615-easing="elastic"] { transition-timing-function: cubic-bezier(.68,-.6,.27,1.65) }

/* Hover animations (always active, no observer needed) */
.s615-hover-lift { transition: transform var(--s615-transition), box-shadow var(--s615-transition) }
.s615-hover-lift:hover { transform: translateY(-4px); box-shadow: var(--s615-shadow-lg) }
.s615-hover-scale { transition: transform var(--s615-transition) }
.s615-hover-scale:hover { transform: scale(1.03) }
.s615-hover-glow { transition: box-shadow var(--s615-transition) }
.s615-hover-glow:hover { box-shadow: 0 0 20px rgba(0,138,201,.3) }

/* Infinite animations */
@keyframes s615-float { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-8px) } }
@keyframes s615-pulse { 0%,100% { opacity: 1 } 50% { opacity: .6 } }
@keyframes s615-spin { from { transform: rotate(0) } to { transform: rotate(360deg) } }
@keyframes s615-bounce { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-12px) } }

.s615-anim-float { animation: s615-float 3s ease-in-out infinite }
.s615-anim-pulse { animation: s615-pulse 2s ease-in-out infinite }
.s615-anim-spin { animation: s615-spin 4s linear infinite }
.s615-anim-bounce { animation: s615-bounce 2s ease-in-out infinite }
