/* D028 - frame-1 loading overlay with minimal chrome.
   Exact frame-1 stills are encoded from the unchanged authored camera MP4s. */
#sinvecBootLoader { display:none; }
html.sinvec-boot-hold #sinvecBootLoader,
html.sinvec-boot-reveal #sinvecBootLoader {
  display:block;position:fixed;inset:0;width:100%;height:100%;height:100dvh;
  z-index:2147483000;overflow:hidden;pointer-events:auto;
  background:#151716 url('images/sinvec-loader-frame1-desktop.webp') center center / cover no-repeat;
  color:#fff;font-family:Arial,Helvetica,sans-serif;
}
html.sinvec-boot-reveal #sinvecBootLoader {opacity:0;transition:opacity .23s ease;pointer-events:none;}
/* D037: opaque camera handoff and loader removal share one compositor update.
   No 230ms fade over a moving 60fps decoder (which looked like a frame jump). */
html.sinvec-boot-reveal.sinvec-boot-desktop-handoff #sinvecBootLoader {
  opacity:0;transition:none;pointer-events:none;
}
/* Prevent hero chrome from flashing over frame 1 before the real hero landing. */
html.sinvec-boot-hold .header-main,
html.sinvec-boot-hold .nav-services,
html.sinvec-boot-hold .sinvec-mobile-services-toggle,
html.sinvec-boot-hold .hero-ui,
html.sinvec-boot-hold .service-indicator,
html.sinvec-boot-hold .service-nav,
html.sinvec-mobile-intro-running .sinvec-mobile-services-toggle,
html.sinvec-android-prehero-chrome .sinvec-mobile-services-toggle,
html.sinvec-mobile-intro-running .nav-services,
html.sinvec-android-prehero-chrome .nav-services,
html.sinvec-mobile-intro-running .header-main,
html.sinvec-android-prehero-chrome .header-main {
  opacity:0 !important;
  visibility:hidden !important;
  pointer-events:none !important;
}
.sinvec-boot-loader__bottom {
  position:absolute;left:0;right:0;bottom:0;height:100%;pointer-events:none;
}
.sinvec-boot-loader__bar {
  position:absolute;left:0;right:0;bottom:0;height:4px;overflow:hidden;
  background:rgba(255,255,255,.18);
}
#sinvecBootFill {
  display:block;height:100%;width:100%;transform:scaleX(0);transform-origin:left center;
  background:#fff;transition:transform .14s linear;
}
.sinvec-boot-loader__percent {
  position:absolute;right:max(12px,env(safe-area-inset-right,0px) + 12px);
  bottom:max(10px,env(safe-area-inset-bottom,0px) + 10px);
  font-size:13px;font-weight:700;letter-spacing:.02em;font-variant-numeric:tabular-nums;
  text-shadow:0 1px 2px rgba(0,0,0,.75);
}
html:not(.sinvec-desktop-requested) #sinvecBootLoader {background-image:url('images/sinvec-loader-frame1-desktop.webp');}
@media (max-width:900px) and (pointer:coarse) {
  html:not(.sinvec-desktop-requested) #sinvecBootLoader {
    background-image:url('images/sinvec-loader-frame1-mobile.webp');
    background-position:center center;
  }
  .sinvec-boot-loader__bar{height:3px;}
  .sinvec-boot-loader__percent{font-size:12px;bottom:max(8px,env(safe-area-inset-bottom,0px) + 8px);}
}
