/* Kribizone Discovery — animations.css */

/* Custom cursor */
.kz-cursor-dot, .kz-cursor-ring { position: fixed; top: 0; left: 0; border-radius: 50%; pointer-events: none; z-index: 99999; transform: translate(-50%, -50%); }
.kz-cursor-dot { width: 8px; height: 8px; background: var(--kz-secondary); transition: transform .15s, background .2s; }
.kz-cursor-ring { width: 38px; height: 38px; border: 2px solid var(--kz-primary); transition: transform .2s, width .2s, height .2s, border-color .2s; }
.kz-cursor-ring.hover { width: 56px; height: 56px; border-color: var(--kz-secondary); background: rgba(245,166,35,.1); }
.kz-cursor-dot.hover { transform: translate(-50%, -50%) scale(1.6); }
body.kz-cursor-active { cursor: none; }
body.kz-cursor-active a, body.kz-cursor-active button { cursor: none; }

/* Scroll reveal */
.reveal { opacity: 0; transform: translateY(40px); transition: opacity .8s cubic-bezier(.25,.8,.25,1), transform .8s cubic-bezier(.25,.8,.25,1); }
.reveal.is-visible { opacity: 1; transform: translateY(0); }

/* Floating keyframes */
@keyframes kz-float1 { 0%,100%{transform:translateY(0) rotate(0)} 50%{transform:translateY(-22px) rotate(6deg)} }
@keyframes kz-float2 { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-30px)} }
@keyframes kz-float3 { 0%,100%{transform:translateY(0) rotate(0)} 50%{transform:translateY(-16px) rotate(-8deg)} }
.float-1 { animation: kz-float1 6s ease-in-out infinite; }
.float-2 { animation: kz-float2 8s ease-in-out infinite; }
.float-3 { animation: kz-float3 7s ease-in-out infinite; }

/* Parallax wrapper */
[data-parallax] { will-change: transform; }

/* Hero typing */
.kz-hero-title[data-typing] { border-right: 3px solid transparent; }
.kz-hero-title.typing { border-right-color: var(--kz-secondary); animation: kz-caret .8s step-end infinite; }
@keyframes kz-caret { 50% { border-right-color: transparent; } }

/* Card stagger hover lift handled in main.css; add subtle entrance */
@keyframes kz-fade-up { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }

/* Shimmer skeleton */
.kz-skeleton { background: linear-gradient(90deg, #eee 25%, #f5f5f5 50%, #eee 75%); background-size: 200% 100%; animation: kz-shimmer 1.4s infinite; border-radius: 8px; }
@keyframes kz-shimmer { 0%{background-position:200% 0} 100%{background-position:-200% 0} }

/* Glass shimmer */
.glass-card::after { content: ''; position: absolute; }
.kz-cat-card { position: relative; }
.kz-cat-card::before { content: ''; position: absolute; top: 0; left: -75%; width: 50%; height: 100%; background: linear-gradient(120deg, transparent, rgba(255,255,255,.4), transparent); transform: skewX(-20deg); transition: left .6s; }
.kz-cat-card:hover::before { left: 130%; }

/* Page transition */
@keyframes kz-page-in { from { opacity: 0; } to { opacity: 1; } }
.kz-site-content { animation: kz-page-in .5s ease; }

/* Menu open animation */
.kz-burger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.kz-burger.open span:nth-child(2) { opacity: 0; }
.kz-burger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Partner marquee */
.kz-partners-track { animation: kz-marquee 28s linear infinite; }
.kz-partners:hover .kz-partners-track { animation-play-state: paused; }
@keyframes kz-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* Particle background fallback */
.kz-particles { position: absolute; inset: 0; overflow: hidden; z-index: 1; }
.kz-particles span { position: absolute; display: block; width: 6px; height: 6px; background: rgba(255,255,255,.5); border-radius: 50%; animation: kz-rise 14s linear infinite; }
@keyframes kz-rise { from { transform: translateY(110vh) scale(.4); opacity: 0; } 20% { opacity: 1; } to { transform: translateY(-10vh) scale(1); opacity: 0; } }

/* Counter pop */
.kz-counter { transition: transform .3s; }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
    .reveal { opacity: 1; transform: none; }
}
