@keyframes stars-in { to { opacity:1; } }
@keyframes aurora-in { to { opacity:1; } }
@keyframes aurora-drift { to { transform:translate3d(2%, -1%, 0) scale(1.08); } }
@keyframes orb-in { to { opacity:1; } }
@keyframes orb-breathe { to { transform:translate(-50%,-48%) scale(1.11); opacity:.82; } }
@keyframes copy-in { to { opacity:1; transform:translateY(0); } }
@keyframes hint-in { to { opacity:1; } }
@keyframes envelope-arrive { 0% { opacity:0; transform:translateY(28px) scale(.93) rotateX(6deg); } 100% { opacity:1; transform:translateY(0) scale(1) rotateX(0); } }
@keyframes envelope-float { 0%,100% { translate:0 0; } 50% { translate:0 -10px; } }
@keyframes envelope-breathe { 0%,100% { filter:drop-shadow(0 28px 40px rgba(0,0,0,.52)); } 50% { filter:drop-shadow(0 35px 55px rgba(81,89,170,.15)); } }
@keyframes seal-pulse { 0%,100% { box-shadow:0 5px 10px rgba(0,0,0,.45),inset 0 1px rgba(255,255,255,.32); } 50% { box-shadow:0 0 28px rgba(195,208,255,.37),0 5px 10px rgba(0,0,0,.42),inset 0 1px rgba(255,255,255,.42); } }
@keyframes card-arrive { 0% { opacity:0; transform:translate(-50%, 27%) scale(.87) rotateX(10deg); } 100% { opacity:1; transform:translate(-50%, -50%) scale(1) rotateX(0); } }
@keyframes card-pulse { 50% { box-shadow:0 0 0 1px rgba(255,255,255,.19),0 17px 54px rgba(77,92,205,.32),inset 0 1px rgba(255,255,255,.18); } }
@keyframes button-flash { 50% { background:rgba(255,255,255,.21); box-shadow:0 0 24px rgba(235,239,255,.2); } }
@keyframes reflection-sweep { 0%,38%,100% { translate:-18% 0; opacity:.52; } 61% { translate:18% 0; opacity:1; } }
@keyframes dust-drift { to { transform:translate3d(2%,-1.5%,0) rotate(2deg) scale(1.05); } }
