/* Shared motion: soft landings, short navigation, native scrolling. */
.mascot-wrap{display:flex;justify-content:center;align-items:center}
.mascot-rig{position:relative;height:100%;aspect-ratio:1144/1375;max-width:100%;isolation:isolate}
.mascot-rig img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}
.mascot-body{clip-path:polygon(0 0,75% 0,75% 25.6%,100% 25.6%,100% 100%,0 100%)}
.mascot-hand{clip-path:polygon(75% 0,100% 0,100% 28.5%,75% 28.5%);mask-image:linear-gradient(to bottom,#000 25%,transparent 28.5%);transform-origin:86.5% 26%;pointer-events:none}
@media(prefers-reduced-motion:no-preference){
 .mascot-hand{animation:yeti-gentle-wave 1.8s ease-in-out infinite;animation-play-state:paused}
 .is-waving .mascot-hand{animation-play-state:running}
 @keyframes yeti-gentle-wave{
  0%,100%{transform:rotate(-10deg)}
  50%{transform:rotate(12deg)}
 }
}
:root{--motion-ease:cubic-bezier(.22,.61,.36,1)}
@view-transition{navigation:auto}
@keyframes page-leave{to{opacity:0}}
@keyframes page-arrive{from{opacity:0}to{opacity:1}}
::view-transition-old(root){animation:page-leave 280ms ease-out both}
::view-transition-new(root){animation:page-arrive 520ms var(--motion-ease) both}
@media(prefers-reduced-motion:no-preference){
 .round-link,.hero-cta,.estimate-cta,.header-contact,.quiet-link,.scene-toolbar button,.scene-start{transition:background-color .35s var(--motion-ease),color .35s var(--motion-ease),opacity .35s var(--motion-ease),transform .45s var(--motion-ease),border-color .35s var(--motion-ease)}
 .detail-symbol{transition:transform .4s var(--motion-ease)}
 .services-dropdown{animation:dropdown-arrive .35s var(--motion-ease) both}
 @keyframes dropdown-arrive{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
 @supports(transition-behavior:allow-discrete){
  .mobile-menu{opacity:1;transform:none;transition:opacity .36s var(--motion-ease),transform .48s var(--motion-ease),display .48s allow-discrete}
  .mobile-menu[hidden]{opacity:0;transform:translateY(-12px)}
  dialog{opacity:0;transform:translateY(16px);transition:opacity .3s var(--motion-ease),transform .45s var(--motion-ease),display .45s allow-discrete,overlay .45s allow-discrete}
  dialog[open]{opacity:1;transform:none}
  dialog::backdrop{opacity:0;transition:opacity .35s var(--motion-ease),display .45s allow-discrete,overlay .45s allow-discrete}
  dialog[open]::backdrop{opacity:1}
  @starting-style{
   .mobile-menu:not([hidden]){opacity:0;transform:translateY(-12px)}
   dialog[open]{opacity:0;transform:translateY(16px)}
   dialog[open]::backdrop{opacity:0}
  }
 }
}
@media(prefers-reduced-motion:reduce){
 @view-transition{navigation:none}
 html{scroll-behavior:auto}
 ::view-transition-old(root),::view-transition-new(root){animation:none!important}
}

/* A modal owns scrolling; wheel and touch must not move the page behind it. */
html:has(dialog[open]),body:has(dialog[open]){overflow:hidden}
.header.menu-is-open{background:var(--pine)}
