/* SAF motion: finite entrances, architectural accents and local interactions. */
.hero h1>span,.hero h1>em{display:block}.hero h1 br{display:none}
.service-panel::before{transition:transform .7s var(--ease),opacity .3s var(--ease)}
.service-expanded{transform-origin:top}
.motion-active .service-panel.motion-pending{opacity:0;transform:translateY(18px)}
.motion-active .ab2-photo.motion-pending img{clip-path:inset(100% 0 0 0)}
.motion-active .ab2-photo.motion-pending .frame-trace rect{stroke-dashoffset:var(--frame-length,2000)}
.ab2-photo.has-trace u{border:0}
.frame-trace{width:100%;height:100%;overflow:visible;color:#b5925a}
.frame-trace rect{fill:none;stroke:currentColor;stroke-width:1;stroke-dasharray:var(--frame-length,2000);stroke-dashoffset:0}

/* The route shares the existing top rule; mobile has a vertical route. */
.pr2-steps{position:relative}
.pr2-steps::before{content:"";position:absolute;z-index:1;left:0;top:-1px;width:100%;height:1px;background:linear-gradient(90deg,#d6af73,#e9cfa5);transform-origin:left;transform:scaleX(1)}
.motion-active .pr2-steps::before{transition:transform 1.25s cubic-bezier(.22,.65,.3,1)}
.motion-active .pr2-steps:not(.route-entered)::before{transform:scaleX(0)}
.pr2-top i{position:relative;isolation:isolate}
.pr2-top i svg{position:relative;z-index:2}
.pr2-top i::before,.pr2-top i::after{content:"";position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;opacity:0}
.pr2-top i::before{background:var(--gold-light)}
.pr2-top i::after{border:1px solid var(--gold-light)}
.motion-active .step-entered .pr2-top i::before{animation:step-light .65s var(--ease) var(--step-delay,0ms) both}
.motion-active .step-entered .pr2-top i::after{animation:step-ring .65s var(--ease) var(--step-delay,0ms) both}
@keyframes step-light{0%{opacity:0}45%{opacity:.17}100%{opacity:.07}}
@keyframes step-ring{0%{opacity:0;transform:scale(.9)}50%{opacity:1;transform:scale(1.06)}100%{opacity:.7;transform:scale(1)}}

.under-link,.ab2-link{position:relative}
.under-link::after,.ab2-link::after{content:"";position:absolute;left:0;bottom:-1px;width:100%;height:1px;background:currentColor;transform-origin:left;transform:scaleX(0);transition:transform .3s var(--ease)}
.under-link:hover::after,.under-link:focus-visible::after,.ab2-link:hover::after,.ab2-link:focus-visible::after{transform:scaleX(1)}
.btn span,.header-action span,.under-link span,.ab2-link .s-arr,.service-arrow{transition:transform .24s var(--ease)}
.btn:hover span,.header-action:hover span{transform:translate(3px,-3px)}
.under-link:hover span,.ab2-link:hover .s-arr{transform:translateX(3px)}

@media(hover:hover) and (pointer:fine){
  .service-panel:hover::before{transform:scale(1.025)}
  .service-panel:hover .service-arrow{translate:3px -3px}
}
@media(max-width:600px){
  .pr2-steps::before{left:-10px;top:24px;width:1px;height:calc(100% - 24px);transform-origin:top;transform:scaleY(1)}
  .motion-active .pr2-steps:not(.route-entered)::before{transform:scaleY(0)}
  .motion-active .pr2-steps::before{transition-duration:.9s}
}
@media(prefers-reduced-motion:reduce){
  .motion-active .service-panel.motion-pending{opacity:1;transform:none}
  .motion-active .ab2-photo.motion-pending img{clip-path:none}
  .motion-active .ab2-photo.motion-pending .frame-trace rect{stroke-dashoffset:0}
  .motion-active .pr2-steps:not(.route-entered)::before{transform:none}
  .service-panel:hover::before,.btn:hover span,.header-action:hover span,.under-link:hover span,.ab2-link:hover .s-arr{transform:none}
  .service-panel:hover .service-arrow{translate:none}
}
