/* Bassline Capital Group - animations */
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(46,204,113,.55)}70%{box-shadow:0 0 0 10px rgba(46,204,113,0)}100%{box-shadow:0 0 0 0 rgba(46,204,113,0)}}
@keyframes pulse-gold{0%{box-shadow:0 0 0 0 rgba(255,138,91,.7)}70%{box-shadow:0 0 0 14px rgba(255,138,91,0)}100%{box-shadow:0 0 0 0 rgba(255,138,91,0)}}
@keyframes ticker{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes loader-out{to{opacity:0;visibility:hidden}}

/* page loader: fades out on its own even without JS */
.page-loader{position:fixed;inset:0;z-index:5000;background:var(--navy);display:flex;align-items:center;justify-content:center;animation:loader-out .4s ease 1s forwards}
.page-loader.done{opacity:0;visibility:hidden;transition:opacity .4s,visibility .4s;animation:none}
.spinner{width:46px;height:46px;border-radius:50%;border:4px solid rgba(255,255,255,.15);border-top-color:var(--gold);animation:spin .8s linear infinite}

/* scroll reveal (only hidden when JS is running) */
.js .reveal{opacity:0;transform:translateY(28px);transition:opacity .7s ease,transform .7s ease}
.js .reveal.is-visible{opacity:1;transform:none}
.reveal.d1{transition-delay:.12s}.reveal.d2{transition-delay:.24s}.reveal.d3{transition-delay:.36s}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .js .reveal{opacity:1;transform:none}
}
