/* Motion is progressive and decorative; no content starts hidden. */
.scroll-progress{position:fixed;inset:0 0 auto;height:3px;background:var(--red);z-index:50;transform:scaleX(0);transform-origin:left;pointer-events:none}
.site-header{transition:box-shadow .3s ease,border-color .3s ease}
.site-header.has-scrolled{box-shadow:0 8px 30px #0003;border-bottom-color:#633235}

@media(prefers-reduced-motion:no-preference){
  .button{position:relative;overflow:hidden;isolation:isolate;transition:background .25s ease,color .25s ease,transform .3s cubic-bezier(.2,.8,.2,1),box-shadow .3s ease}
  .button::before{content:'';position:absolute;inset:-45% -10%;background:linear-gradient(105deg,transparent 30%,#ffffff24 48%,transparent 65%);transform:translateX(-115%);pointer-events:none;transition:transform .7s cubic-bezier(.25,.6,.3,1)}
  .button:hover::before,.button:focus-visible::before{transform:translateX(115%)}
  .button:hover{box-shadow:0 8px 22px -13px #0009}
  .button:active{transform:translateY(0) scale(.98);transition-duration:.1s}
  .button .icon,.text-link .icon,.service-card>a .icon,.related-links .icon{transition:translate .3s cubic-bezier(.2,.8,.2,1)}
  .button:hover .icon:last-child,.text-link:hover .icon,.service-card>a:hover .icon,.related-links a:hover .icon{translate:4px 0}
  .service-card{position:relative;transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s ease,background .25s ease}
  .service-card::after{content:'';position:absolute;bottom:-1px;left:-1px;right:-1px;height:3px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform .4s ease;pointer-events:none}
  .service-card:hover,.service-card:focus-within{transform:translateY(-5px);box-shadow:0 18px 30px -23px #0009;z-index:1}
  .service-card:hover::after,.service-card:focus-within::after{transform:scaleX(1)}
  .service-card .service-icon{transition:transform .4s cubic-bezier(.2,.8,.2,1)}
  .service-card:hover .service-icon{transform:translateY(-3px) rotate(-5deg)}
  .image-caption a{transition:background .25s ease,border-color .25s ease,transform .35s ease}
  .image-caption a:hover{transform:rotate(-35deg)}
  #primary-nav>a{position:relative}
  #primary-nav>a::after{content:'';position:absolute;left:0;right:0;bottom:-8px;height:2px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform .3s ease}
  #primary-nav>a:hover::after,#primary-nav>a:focus-visible::after{transform:scaleX(1)}
  .hero-visual.is-revealed::after{transform-origin:top;animation:rail-draw 1.1s cubic-bezier(.2,.8,.2,1) .2s both}
  .hero-visual.is-revealed .image-caption{position:relative;overflow:hidden}
  .hero-visual.is-revealed .image-caption::after{content:'';position:absolute;inset:0;background:linear-gradient(105deg,transparent 30%,#ffffff0e 50%,transparent 70%);pointer-events:none;animation:caption-sweep 1.4s ease-out .45s both}
  .motion-enhanced .red-line{transform-origin:left;animation:rail-draw .75s ease-out .15s both}
  .coverage-board.is-revealed .location-dot{position:relative}
  .coverage-board.is-revealed .location-dot::after{content:'';position:absolute;inset:-4px;border:1px solid #ed575c;border-radius:50%;pointer-events:none;animation:location-ping 1.7s ease-out .2s 3}
  .steps li{position:relative}
  .steps li.is-revealed::after{content:'';position:absolute;bottom:-1px;left:0;width:70px;height:1px;background:var(--red);transform-origin:left;animation:route-draw .8s cubic-bezier(.2,.8,.2,1) .2s both}
  .faq-list details[open]>p{animation:answer-enter .3s ease-out}
  dialog[open]{animation:dialog-enter .25s cubic-bezier(.2,.8,.2,1)}
  dialog[open]::backdrop{animation:backdrop-enter .2s ease-out}
  @keyframes rail-draw{from{scale:1 0}to{scale:1 1}}
  @keyframes route-draw{from{scale:0 1}to{scale:1 1}}
  @keyframes caption-sweep{from{translate:-110% 0}to{translate:110% 0}}
  @keyframes location-ping{0%{scale:1;opacity:.65}100%{scale:2.8;opacity:0}}
  @keyframes answer-enter{from{opacity:.45;translate:0 -6px}to{opacity:1;translate:0 0}}
  @keyframes dialog-enter{from{opacity:.6;translate:0 12px;scale:.985}to{opacity:1;translate:0 0;scale:1}}
  @keyframes backdrop-enter{from{opacity:0}to{opacity:1}}
}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .motion-tilt{transform:perspective(1000px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));transition:transform .45s cubic-bezier(.2,.7,.2,1)}
  .work-card figcaption{transition:border-color .35s ease}
  .work-card:hover figcaption{border-color:var(--red)}
}
@media(max-width:680px){#primary-nav>a::after{bottom:6px;right:auto;width:28px}.scroll-progress{height:2px}}
@media(prefers-reduced-motion:reduce){.scroll-progress{display:none}.motion-tilt{transform:none!important}.service-card:hover,.service-card:focus-within{transform:none}.site-header{transition:none}}
