/* CoachPro premium scroll progress — fixed above page navigation. */
.cp-scroll-progress{
  --cp-scroll-color:#f97316;
  --cp-scroll-color-rgb:249,115,22;
  position:fixed;
  inset:0 0 auto 0;
  z-index:10050;
  height:4px;
  pointer-events:none;
  overflow:visible;
  background:color-mix(in srgb,var(--cp-scroll-color) 10%,transparent);
  contain:layout paint style;
}
.cp-scroll-progress__bar{
  position:absolute;
  inset:0 auto 0 0;
  width:100%;
  transform:scaleX(0);
  transform-origin:0 50%;
  border-radius:0 999px 999px 0;
  background:linear-gradient(90deg,
    color-mix(in srgb,var(--cp-scroll-color),#fff 4%),
    var(--cp-scroll-color) 72%,
    color-mix(in srgb,var(--cp-scroll-color),#fff 32%));
  box-shadow:
    0 0 8px rgba(var(--cp-scroll-color-rgb),.72),
    0 0 18px rgba(var(--cp-scroll-color-rgb),.34);
  will-change:transform;
}
.cp-scroll-progress__bar::after{
  content:"";
  position:absolute;
  top:50%;
  right:-1px;
  width:8px;
  height:8px;
  border-radius:50%;
  transform:translate(50%,-50%);
  background:color-mix(in srgb,var(--cp-scroll-color),#fff 38%);
  box-shadow:
    0 0 0 2px rgba(255,255,255,.28),
    0 0 12px rgba(var(--cp-scroll-color-rgb),.95),
    0 0 24px rgba(var(--cp-scroll-color-rgb),.52);
  opacity:0;
  transition:opacity .16s ease;
}
.cp-scroll-progress.is-active .cp-scroll-progress__bar::after{opacity:1}
.cp-scroll-progress.is-complete .cp-scroll-progress__bar::after{opacity:0}
@media (max-width:767.98px){
  .cp-scroll-progress{height:3px}
  .cp-scroll-progress__bar::after{width:7px;height:7px}
}
@media (prefers-reduced-motion:reduce){
  .cp-scroll-progress__bar::after{transition:none}
}
@media print{.cp-scroll-progress{display:none!important}}

/* Safari / iOS visual viewport stabilisation.
   Safari can temporarily cover elements placed exactly at top:0 while its
   browser chrome collapses. The JS updates --cp-visual-viewport-top. */
.cp-scroll-progress{
  top:calc(var(--cp-visual-viewport-top, 0px) + var(--cp-scroll-edge-gap, 0px));
  right:0;
  bottom:auto;
  left:0;
  inset:auto 0 auto 0;
  transform:translate3d(0,0,0);
  -webkit-transform:translate3d(0,0,0);
  -webkit-backface-visibility:hidden;
  backface-visibility:hidden;
  isolation:isolate;
}
html.cp-ios-safari .cp-scroll-progress{
  --cp-scroll-edge-gap:2px;
}
@media (display-mode:standalone){
  html.cp-ios-safari .cp-scroll-progress{
    --cp-scroll-edge-gap:max(1px, env(safe-area-inset-top));
  }
}


/* Native CoachPro app — trainer profile:
   keep the scroll-progress strip glued to the BOTTOM of the app navbar.
   Native WKWebView visualViewport.offsetTop can otherwise place it too low. */
body.inapp-shell.public-trainer-page .cp-scroll-progress--trainer,
html.cp-native-app body.public-trainer-page .cp-scroll-progress--trainer,
html.cp-native-shell body.public-trainer-page .cp-scroll-progress--trainer{
  top:calc(var(--safe-top, 0px) + max(var(--nav-h, 0px), 56px)) !important;
  --cp-scroll-edge-gap:0px;
}
