/* SST Animations */
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes load{0%{width:0}100%{width:100%}}
@keyframes blink{0%,100%{border-color:var(--gold)}50%{border-color:transparent}}
@keyframes fadeUp{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@keyframes ripple{to{width:420px;height:420px;opacity:0}}
@keyframes typing{0%,60%,100%{transform:translateY(0)}30%{transform:translateY(-6px)}}
@keyframes loaderPulse{0%,100%{transform:scale(.98)}50%{transform:scale(1.04)}}
@keyframes shineMove{from{left:-100%}to{left:130%}}
.reveal{opacity:0;transform:translateY(18px);transition:.7s var(--ease)}
.reveal.in{opacity:1;transform:translateY(0)}
.shine{position:relative;overflow:hidden}
.shine:after{content:'';position:absolute;top:0;left:-100%;width:60%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.26),transparent);transform:skewX(-20deg);transition:.6s}
.shine:hover:after{left:130%;transition:1s}
.glass{backdrop-filter:blur(16px) saturate(1.2);-webkit-backdrop-filter:blur(16px) saturate(1.2)}
.hover-lift{transition:.45s var(--ease)}.hover-lift:hover{transform:translateY(-6px);box-shadow:var(--shadow)}
.lazy{opacity:0;transition:.6s}.lazy.loaded{opacity:1}
