/* ========================================
   360Walk — Premium 3D Animations v2
   ======================================== */

/* Scroll Reveal — Fade Up */
.reveal {
    opacity: 0;
    transform: translateY(50px);
    transition: all 0.9s cubic-bezier(0.23, 1, 0.32, 1);
}
.reveal.visible {
    opacity: 1;
    transform: translateY(0);
}

/* Reveal — Slide Left */
.reveal-left {
    opacity: 0;
    transform: translateX(-80px) rotate(-2deg);
    transition: all 0.9s cubic-bezier(0.23, 1, 0.32, 1);
}
.reveal-left.visible {
    opacity: 1;
    transform: translateX(0) rotate(0);
}

/* Reveal — Slide Right */
.reveal-right {
    opacity: 0;
    transform: translateX(80px) rotate(2deg);
    transition: all 0.9s cubic-bezier(0.23, 1, 0.32, 1);
}
.reveal-right.visible {
    opacity: 1;
    transform: translateX(0) rotate(0);
}

/* Stagger children — cascading delays */
.stagger-children .reveal:nth-child(1) { transition-delay: 0.05s; }
.stagger-children .reveal:nth-child(2) { transition-delay: 0.12s; }
.stagger-children .reveal:nth-child(3) { transition-delay: 0.19s; }
.stagger-children .reveal:nth-child(4) { transition-delay: 0.26s; }
.stagger-children .reveal:nth-child(5) { transition-delay: 0.33s; }
.stagger-children .reveal:nth-child(6) { transition-delay: 0.4s; }

/* 3D Card Tilt */
.tilt-3d {
    transform-style: preserve-3d;
    transition: transform 0.15s ease-out, box-shadow 0.3s ease;
    will-change: transform;
}
.tilt-3d:hover {
    box-shadow: 0 25px 60px rgba(107, 33, 168, 0.15);
}

/* Floating — smooth bounce */
@keyframes float {
    0%, 100% { transform: translateY(0px) rotate(0deg); }
    25% { transform: translateY(-8px) rotate(0.5deg); }
    75% { transform: translateY(4px) rotate(-0.5deg); }
}
.float {
    animation: float 5s ease-in-out infinite;
}

/* Pulse glow — CTA buttons */
@keyframes pulse-glow {
    0%, 100% { box-shadow: 0 0 0 0 rgba(139, 92, 246, 0.4); }
    50% { box-shadow: 0 0 0 20px rgba(139, 92, 246, 0); }
}
.pulse-glow {
    animation: pulse-glow 2.5s ease-in-out infinite;
}

/* Gradient background animation */
@keyframes gradient-shift {
    0% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
    100% { background-position: 0% 50%; }
}
.gradient-animate {
    background-size: 200% 200%;
    animation: gradient-shift 6s ease infinite;
}

/* 3D Rotate on scroll */
.reveal-3d {
    opacity: 0;
    transform: perspective(1200px) rotateY(20deg) translateX(50px) scale(0.95);
    transition: all 1.1s cubic-bezier(0.23, 1, 0.32, 1);
}
.reveal-3d.visible {
    opacity: 1;
    transform: perspective(1200px) rotateY(0) translateX(0) scale(1);
}

/* Scale in from center */
.reveal-scale {
    opacity: 0;
    transform: scale(0.8);
    transition: all 0.9s cubic-bezier(0.23, 1, 0.32, 1);
}
.reveal-scale.visible {
    opacity: 1;
    transform: scale(1);
}

/* Hero text — initial hidden for split animation */
.hero h1 {
    opacity: 1;
}

/* Word animation helper */
.word-anim {
    display: inline-block;
    margin-right: 0.25em;
}

/* Vorteil cards — hover lift + glow */
.vorteil-card {
    transition: all 0.5s cubic-bezier(0.23, 1, 0.32, 1);
    position: relative;
    overflow: hidden;
}
.vorteil-card::before {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at var(--mouse-x, 50%) var(--mouse-y, 50%), rgba(107,33,168,0.06) 0%, transparent 60%);
    opacity: 0;
    transition: opacity 0.3s;
    pointer-events: none;
}
.vorteil-card:hover::before {
    opacity: 1;
}
.vorteil-card:hover {
    transform: perspective(800px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)) translateY(-8px) scale(1.02);
    box-shadow: 0 20px 50px rgba(107, 33, 168, 0.12);
}

/* Step items — counter animation */
.step-item {
    transition: all 0.5s cubic-bezier(0.23, 1, 0.32, 1);
}
.step-item:hover {
    transform: translateY(-6px);
}
.step-item:hover .step-number {
    transform: scale(1.15) rotateZ(-5deg);
    box-shadow: 0 8px 30px rgba(107, 33, 168, 0.3);
}
.step-number {
    transition: all 0.4s cubic-bezier(0.23, 1, 0.32, 1);
}

/* Hero badge entrance */
.hero-badge {
    animation: badgeIn 0.8s cubic-bezier(0.23, 1, 0.32, 1) 0.1s both;
}
@keyframes badgeIn {
    from { opacity: 0; transform: translateY(-20px) scale(0.9); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}

/* Hero subtitle entrance */
.hero-subtitle {
    animation: fadeInUp 0.8s cubic-bezier(0.23, 1, 0.32, 1) 0.6s both;
}
@keyframes fadeInUp {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
}

/* Hero CTA entrance */
.hero-ctas {
    animation: fadeInUp 0.8s cubic-bezier(0.23, 1, 0.32, 1) 0.8s both;
}

/* Hero stats entrance */
.hero-stats {
    animation: fadeInUp 0.8s cubic-bezier(0.23, 1, 0.32, 1) 1s both;
}

/* Hero stat numbers — glow on hover */
.hero-stat-number {
    transition: all 0.3s;
}
.hero-stat:hover .hero-stat-number {
    text-shadow: 0 0 20px rgba(139, 92, 246, 0.5);
    transform: scale(1.1);
}

/* Tour frame — perspective tilt on scroll */
.hero-tour-frame {
    transition: transform 0.5s cubic-bezier(0.23, 1, 0.32, 1);
    transform-style: preserve-3d;
}

/* Section badge — icon spin on hover */
.section-badge:hover i {
    animation: iconSpin 0.6s ease;
}
@keyframes iconSpin {
    0% { transform: rotate(0); }
    100% { transform: rotate(360deg); }
}

/* CTA Section — floating orbs (contained) */
.cta-section {
    position: relative;
    overflow: hidden;
}
.cta-section::after {
    content: '';
    position: absolute;
    width: 300px; height: 300px;
    border-radius: 50%;
    filter: blur(80px);
    opacity: 0.15;
    pointer-events: none;
    background: rgba(255, 255, 255, 0.3);
    top: -100px; right: -100px;
    animation: float 8s ease-in-out infinite;
}

/* Smooth scroll */
html { scroll-behavior: smooth; }

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