@keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-20px); } }
@keyframes fade-in-up { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
@keyframes confetti { 0% { transform: translate(0, 0) rotate(0deg); opacity: 1; } 100% { transform: translate(calc(cos(var(--angle)) * var(--velocity) * 100px), calc(sin(var(--angle)) * var(--velocity) * 100px)) rotate(360deg); opacity: 0; } }

.hide-scrollbar::-webkit-scrollbar { display: none; }
.hide-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }
.font-hand { font-family: 'Comic Sans MS', 'Comic Sans', cursive; }

/* --- STRICT REVEAL ANIMATION --- */
/* Separate class to avoid conflicts with Tailwind transitions */
.reveal-wrapper {
    opacity: 0;
    transform: translateY(50px);
    transition: opacity 0.8s cubic-bezier(0.5, 0, 0, 1), transform 0.8s cubic-bezier(0.5, 0, 0, 1);
    will-change: opacity, transform;
}
.reveal-wrapper.active {
    opacity: 1;
    transform: translateY(0);
}

input[type=range]::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 0; height: 0; }
input[type=range]::-moz-range-thumb { width: 0; height: 0; opacity: 0; }

.path-draw { stroke-dasharray: 1000; stroke-dashoffset: 1000; transition: stroke-dashoffset 1.5s ease-out; }
.reveal-wrapper.active .path-draw { stroke-dashoffset: 0; }
.graph-tooltip { transition: opacity 0.2s, transform 0.2s; pointer-events: none; }
