@keyframes floatBlob{0%,100%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(4vw,-3vh,0) scale(1.08)}}
@keyframes sparkleDrift{from{background-position:0 0,0 0,0 0}to{background-position:0 360px,0 280px,0 420px}}
@keyframes fadeUp{from{opacity:0;transform:translateY(38px)}to{opacity:1;transform:translateY(0)}}
@keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.035)}}
@keyframes shimmer{0%{transform:translateX(120%) rotate(18deg)}100%{transform:translateX(-160%) rotate(18deg)}}
.open-btn{animation:breathe 2.5s ease-in-out infinite}.panel.reveal{opacity:0;transform:translateY(34px);transition:opacity .85s ease,transform .85s ease}.panel.reveal.visible{opacity:1;transform:translateY(0)}.open-btn:after{content:"";position:absolute;top:-30%;bottom:-30%;width:52px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.7),transparent);animation:shimmer 3.8s ease-in-out infinite;pointer-events:none}.intro.opened .royal-gate{animation:gateBrighten 2.2s ease forwards}@keyframes gateBrighten{to{filter:saturate(1.08) brightness(1.06)}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}
