*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; scroll-padding-top: 5rem; }
body { min-height: 100vh; }

/* Subtle entrance animations — progressive enhancement only, applied via JS */
.animate-on-scroll {
    opacity: 1;
    transform: none;
    transition: opacity 0.6s ease, transform 0.6s ease;
}

.animate-on-scroll.fade-up {
    opacity: 0;
    transform: translateY(24px);
}

.animate-on-scroll.fade-up.visible {
    opacity: 1;
    transform: none;
}

/* Floating card animation for hero stats */
@keyframes float {
    0%, 100% { transform: translateY(0px); }
    50% { transform: translateY(-8px); }
}

.float-slow { animation: float 6s ease-in-out infinite; }
.float-medium { animation: float 5s ease-in-out infinite; animation-delay: 1s; }
.float-fast { animation: float 4s ease-in-out infinite; animation-delay: 2s; }
.float-slower { animation: float 7s ease-in-out infinite; animation-delay: 0.5s; }

/* Decorative blob animations */
@keyframes drift {
    0%, 100% { transform: translate(0, 0) scale(1); }
    33% { transform: translate(12px, -18px) scale(1.04); }
    66% { transform: translate(-8px, 10px) scale(0.96); }
}

.drift-slow { animation: drift 20s ease-in-out infinite; }
.drift-medium { animation: drift 15s ease-in-out infinite; animation-delay: -5s; }
.drift-fast { animation: drift 12s ease-in-out infinite; animation-delay: -8s; }

/* Custom scrollbar */
::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: #FEFCF8; }
::-webkit-scrollbar-thumb { background: #A7F3D0; border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: #6EE7B7; }

/* Focus visible for keyboard users */
:focus-visible {
    outline: 2px solid #059669;
    outline-offset: 2px;
    border-radius: 4px;
}

/* Selection color */
::selection {
    background: #A7F3D0;
    color: #064E3B;
}
