/* BOHSEI SCIENCE — progressive motion enhancement, 2026-10-28.
   Content remains visible without JavaScript, on unsupported browsers,
   and with reduced-motion preferences. No external libraries or imagery. */
@keyframes bohsei-hero-soft-enter {
  from { opacity:0; translate: 0 28px; filter: blur(5px); }
  to   { opacity:1; translate: 0 0; filter: blur(0); }
}
@keyframes bohsei-shimmer {
  from {transform:translateX(-110%)}
  to {transform:translateX(225%)}
}
/* Subtle scroll progress, drawn as a separate inert decoration. */
.bohsei-scroll-progress {
 position:fixed; inset:0 auto auto 0; z-index:90; pointer-events:none;
 width:100%; height:3px; transform:scaleX(0); transform-origin:0 50%;
 background:linear-gradient(90deg,#16b4c4,#1581b6,#194e7b);
 opacity:.85;
}
/* Individual CSS translate intentionally keeps existing transform/hover states intact. */
html.bohsei-motion-on .bohsei-motion-item {
 opacity:0; translate:0 30px; filter:blur(3px);
 transition: opacity .86s cubic-bezier(.19,1,.22,1),
             translate 1.06s cubic-bezier(.19,1,.22,1),
             filter .82s ease,
             clip-path 1.1s cubic-bezier(.19,1,.22,1);
 transition-delay:var(--bohsei-delay,0ms);
}
html.bohsei-motion-on .bohsei-motion-item.bohsei-enter-left {translate:-34px 13px}
html.bohsei-motion-on .bohsei-motion-item.bohsei-enter-right {translate:34px 13px}
html.bohsei-motion-on .bohsei-motion-item.bohsei-enter-soft {translate:0 18px; filter:blur(1px)}
html.bohsei-motion-on .bohsei-motion-item.bohsei-revealed {
 opacity:1; translate:0 0; filter:blur(0);
}
html.bohsei-motion-on .bohsei-motion-item.bohsei-enter-photo {
 clip-path:inset(0 8% 0 0 round 10px);
}
html.bohsei-motion-on .bohsei-motion-item.bohsei-enter-photo.bohsei-revealed {
 clip-path:inset(0 0 0 0 round 10px);
}
/* Typography and photographic microinteractions after the main reveal. */
.service-card .service-photo img, .service-card .service-photo .stock-image {
 transition:transform .85s cubic-bezier(.19,1,.22,1);
}
@media (hover:hover) and (pointer:fine) {
 .service-card:hover .service-photo img, .service-card:hover .service-photo .stock-image {
   transform:scale(1.045);
 }
 .desktop-nav > a:not(.nav-contact){position:relative}
 .desktop-nav > a:not(.nav-contact)::after{
   content:"";position:absolute;inset:auto 0 5px 0;height:2px;
   transform:scaleX(0);transform-origin:right center;
   background:var(--teal);transition:transform .34s cubic-bezier(.2,.7,.2,1);
 }
 .desktop-nav > a:not(.nav-contact):hover::after,
 .desktop-nav > a[aria-current="page"]:not(.nav-contact)::after {
   transform:scaleX(1);transform-origin:left center;
 }
}
/* Newer Chromium/Edge can use scroll timelines for decorative drift,
   while reveal-once behavior is also available in older browsers. */
@supports (animation-timeline: view()) {
 @keyframes bohsei-ambient-drift {from{transform:scale(1.035) translateY(-1.2%)}to{transform:scale(1.035) translateY(1.2%)}}
 .home-services .service-card .service-photo .stock-image {
  animation:bohsei-ambient-drift linear both;
  animation-timeline:view();animation-range:cover 0% cover 100%;
 }
}
@media (max-width:690px) {
 html.bohsei-motion-on .bohsei-motion-item {translate:0 20px;filter:none;
  transition-duration:.65s,.8s,.6s,.8s}
 html.bohsei-motion-on .bohsei-motion-item.bohsei-enter-left,
 html.bohsei-motion-on .bohsei-motion-item.bohsei-enter-right {translate:0 20px}
}
@media (prefers-reduced-motion:reduce) {
 html.bohsei-motion-on .bohsei-motion-item,
 html.bohsei-motion-on .bohsei-motion-item.bohsei-enter-left,
 html.bohsei-motion-on .bohsei-motion-item.bohsei-enter-right,
 html.bohsei-motion-on .bohsei-motion-item.bohsei-enter-photo {
  opacity:1!important;translate:none!important;filter:none!important;
  clip-path:none!important;transition:none!important;animation:none!important;
 }
 .bohsei-scroll-progress {display:none}
 .service-card .service-photo img,.service-card .service-photo .stock-image {transition:none!important;animation:none!important}
}
