/* Scroll-reveal + keyframes */
[data-reveal] { opacity: 0; transform: translateY(24px); transition: opacity 0.7s ease-out, transform 0.7s ease-out; }
[data-reveal].is-visible { opacity: 1; transform: translateY(0); }
header[data-reveal] { opacity: 1; transform: none; }

@keyframes fade-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
@keyframes scale-in { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } }
@keyframes slow-zoom { from { transform: scale(1); } to { transform: scale(1.08); } }
@keyframes float-gentle { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
@keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
.animate-fade-in { animation: fade-in 0.6s ease-out both; }
.animate-scale-in { animation: scale-in 0.3s ease-out both; }
.animate-slow-zoom { animation: slow-zoom 20s ease-in-out infinite alternate; }
.animate-float-gentle { animation: float-gentle 4s ease-in-out infinite; }

a, button { transition: color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease; }
