.reveal{opacity:0;transform:translateY(20px);transition:opacity .7s ease,transform .7s ease}
.reveal.visible{opacity:1;transform:translateY(0)}
.particles{position:fixed;inset:0;z-index:-1;pointer-events:none;background-image:radial-gradient(rgba(236,253,245,.12) 1px, transparent 1px);background-size:120px 120px;animation:drift 28s linear infinite}
@keyframes drift{from{transform:translateY(0)}to{transform:translateY(40px)}}
.hero-visual img{animation:slowZoom 14s ease-in-out infinite alternate}
@keyframes slowZoom{from{transform:scale(1)}to{transform:scale(1.04)}}