@keyframes scaleIn { from { opacity: 0; transform: scale(0.94); } to { opacity: 1; transform: scale(1); } }
@keyframes toastIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes fadeUp { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: translateY(0); } }
.stagger > * { animation: fadeUp 0.5s var(--ease-out) both; }
.stagger > *:nth-child(1) { animation-delay: 0.02s; }
.stagger > *:nth-child(2) { animation-delay: 0.06s; }
.stagger > *:nth-child(3) { animation-delay: 0.1s; }
.stagger > *:nth-child(4) { animation-delay: 0.14s; }
.stagger > *:nth-child(5) { animation-delay: 0.18s; }
.stagger > *:nth-child(6) { animation-delay: 0.22s; }
.press-scale { transition: transform 0.12s var(--ease-out); }
.press-scale:active { transform: scale(0.96); }
.reveal-section { opacity: 0; transform: translateY(20px); transition: opacity 0.6s var(--ease-out), transform 0.6s var(--ease-out); }
.reveal-section.is-visible { opacity: 1; transform: translateY(0); }
@keyframes floatOrb { 0%, 100% { transform: translate(0, 0); } 50% { transform: translate(18px, -22px); } }
@keyframes heroGlowDrift { 0%, 100% { background-position: 0% 0%, 0 0; } 50% { background-position: 100% 30%, 0 0; } }
@keyframes scrollHintBounce { 0%, 100% { transform: translate(-50%, 0); } 50% { transform: translate(-50%, 8px); } }
