/* Bruce Athletes - site loader. Logo: mainlogo.png (same folder) */
html.is-loading,html.is-loading body{overflow:hidden}
.ba-skip .ba-loader,.ba-loader[hidden]{display:none!important}

.ba-loader{position:fixed;inset:0;z-index:99999;display:grid;place-items:center;
  animation:baFailsafe 0s linear 10s forwards}
@keyframes baFailsafe{to{visibility:hidden;pointer-events:none}}

.ba-loader__panel{position:absolute;left:0;right:0;height:50.2%;background:#0a0a0b;
  }
.ba-loader__panel--top{top:0}
.ba-loader__panel--bottom{bottom:0}
.ba-loader__panel::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;
  background:repeating-linear-gradient(0deg,rgba(236,232,225,.03) 0,rgba(236,232,225,.03) 1px,transparent 1px,transparent 4px)}

.ba-loader__center{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:26px;
  padding:0 24px;text-align:center}

/* logo: rises into view, then a steel light sweeps across it */
.ba-loader__mark{position:relative;width:96px;aspect-ratio:1290/1219;
  clip-path:inset(100% 0 0 0);animation:baMarkIn 1.1s cubic-bezier(.16,1,.3,1) .15s forwards}
.ba-loader__mark img{display:block;width:100%;height:100%;object-fit:contain}
.ba-loader__mark-base{opacity:.16;filter:grayscale(1) brightness(.75)}
.ba-loader__mark-fill{position:absolute;inset:0;
  -webkit-mask-image:linear-gradient(to top,#000 calc(var(--p,1%) - 5%),transparent var(--p,1%));
  mask-image:linear-gradient(to top,#000 calc(var(--p,1%) - 5%),transparent var(--p,1%))}
.ba-loader__mark::after{content:"";position:absolute;inset:0;
  background:linear-gradient(110deg,transparent 35%,rgba(255,255,255,.95) 50%,transparent 65%) 130% 0/250% 100% no-repeat;
  -webkit-mask:url(mainlogo.png) center/contain no-repeat;mask:url(mainlogo.png) center/contain no-repeat}
@keyframes baMarkIn{to{clip-path:inset(0 0 0 0)}}
@keyframes baSweep{0%{background-position:130% 0}100%{background-position:-30% 0}}

.ba-loader__word{font-family:'Bruce Athletes','Big Shoulders Display',sans-serif;font-size:22px;line-height:1;
  color:#ece8e1;white-space:nowrap;opacity:0;letter-spacing:.5em;margin-right:-.5em;
  animation:baWord 1.4s cubic-bezier(.16,1,.3,1) .5s forwards}
@keyframes baWord{to{opacity:1;letter-spacing:.2em;margin-right:-.2em}}

.ba-loader__meter{display:flex;align-items:center;gap:14px;opacity:0;animation:baFade .7s ease .4s forwards}
@keyframes baFade{to{opacity:1}}
.ba-loader__line{position:relative;width:150px;height:1px;background:rgba(236,232,225,.16);overflow:hidden}
.ba-loader__fill{position:absolute;inset:0;background:#a3271e;transform:scaleX(0);transform-origin:left}
.ba-loader__num{min-width:3ch;text-align:left;font-family:'Big Shoulders Display',sans-serif;font-weight:700;
  font-size:14px;letter-spacing:.08em;color:#a9a49c;font-variant-numeric:tabular-nums}

/* finish: red line flashes, logo glints once */
.ba-loader.is-finish .ba-loader__fill{background:#e0392b;box-shadow:0 0 14px 2px rgba(224,57,43,.75);transition:background .15s ease,box-shadow .15s ease}
.ba-loader.is-finish .ba-loader__num{color:#ece8e1;transition:color .15s ease}
.ba-loader.is-finish .ba-loader__mark::after{animation:baSweep .55s ease-in-out 1 forwards}
.ba-loader.is-finish .ba-loader__mark-fill{animation:baPulse .55s ease 1}
@keyframes baPulse{50%{filter:brightness(1.6)}}

/* exit: simple smooth fade out */
.ba-loader{transition:opacity .6s ease}
.ba-loader.is-done{opacity:0;pointer-events:none}

/* cinematic reveal: uses the separate "scale" property so it never fights the pages' own video motion */
.hero-video,.coach-hero-video{scale:1;transition:scale 2.2s cubic-bezier(.16,1,.3,1)}
html.is-loading .hero-video,html.is-loading .coach-hero-video{scale:1.14;transition:none}

/* hold the page's own intro animations until the loader fades out (they then play as normal) */
html.is-loading .site-header,html.is-loading header.site,
html.is-loading .hero-copy,html.is-loading .hero-copy *,
html.is-loading .hero-in>*{animation-play-state:paused!important}

@media (max-width:480px){
  .ba-loader__mark{width:80px}
  .ba-loader__word{font-size:18px}
  .ba-loader__line{width:120px}
}
@media (prefers-reduced-motion:reduce){
  .ba-loader__mark{clip-path:none;animation:none}
  .ba-loader__mark::after{animation:none!important;display:none}
  .ba-loader__mark-fill{animation:none!important}
  html.is-loading .hero-video,html.is-loading .coach-hero-video{scale:1}
  .ba-loader__word{animation:none;opacity:1;letter-spacing:.2em;margin-right:-.2em}
  .ba-loader__meter{animation:none;opacity:1}
  .ba-loader,.ba-loader.is-done{transition:opacity .4s ease}
}
