@keyframes page-in{from{opacity:0}to{opacity:1}}@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
body{animation:page-in .45s ease-out both}.reveal{opacity:0;transform:translateY(18px);transition:opacity .55s ease var(--reveal-delay,0ms),transform .55s cubic-bezier(.22,.8,.28,1) var(--reveal-delay,0ms)}.identity.reveal{transform:translate(-50%,18px)}.reveal.is-revealed{opacity:1;transform:translateY(0)}.identity.reveal.is-revealed{transform:translate(-50%,0)}
.ripple::after{content:"";position:absolute;inset:50%;border-radius:inherit;background:rgba(255,255,255,.18);animation:ripple .45s ease-out}@keyframes ripple{from{inset:50%;opacity:.8}to{inset:-15%;opacity:0}}
dialog[open] .modal-panel{animation:modal-in .3s ease-out both}@keyframes modal-in{from{opacity:0;transform:translateY(12px) scale(.985)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal,.identity.reveal{opacity:1;transform:none}.identity.reveal{transform:translateX(-50%)}.social-circle{animation:none!important}}
