html.js .reveal{opacity:0;transform:translateY(30px);transition:opacity .85s var(--ease,cubic-bezier(.22,1,.36,1)),transform .85s var(--ease,cubic-bezier(.22,1,.36,1));transition-delay:var(--reveal-delay,0s);will-change:opacity,transform}
html.js .reveal.is-visible{opacity:1;transform:none}
.reveal-group>*:nth-child(1){--reveal-delay:0s}
.reveal-group>*:nth-child(2){--reveal-delay:.1s}
.reveal-group>*:nth-child(3){--reveal-delay:.2s}
.reveal-group>*:nth-child(4){--reveal-delay:.3s}
.reveal-group>*:nth-child(5){--reveal-delay:.4s}
.reveal-group>*:nth-child(6){--reveal-delay:.5s}
@keyframes heroFastReveal{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
.hero-anim{animation:heroFastReveal .8s var(--ease,cubic-bezier(.22,1,.36,1)) both}
.hero-anim:nth-child(2){animation-delay:.08s}
.hero-anim:nth-child(3){animation-delay:.16s}
.media-scroll-reveal{clip-path:inset(0 100% 0 0 round 5px);transform:translate3d(-44px,0,0);transition:clip-path 1.35s var(--ease,cubic-bezier(.22,1,.36,1)),transform 1.35s var(--ease,cubic-bezier(.22,1,.36,1));will-change:clip-path,transform}
.media-scroll-reveal.is-visible{clip-path:inset(0 0 0 0 round 5px);transform:translate3d(0,0,0)}
.service-featured,.service-small{transition:transform .25s ease,background .25s ease,border-color .25s ease}
.service-featured:hover,.service-small:hover{transform:translateY(-2px);background:var(--card-hover,#f8f8f6);border-color:var(--line-hover,rgba(16,17,16,.05))}
.service-arrow{transition:transform .25s ease}
.service-featured:hover .service-arrow,.service-small:hover .service-arrow{transform:translate(4px,-4px)}
.project-slide img,.portfolio-card img{transition:transform .55s var(--ease,cubic-bezier(.22,1,.36,1))}
.project-slide:hover img,.portfolio-card:hover img{transform:scale(1.03)}
.button{transition:transform .25s ease,background .25s ease}
.button:hover{transform:translateY(-1px)}
.mobile-nav-backdrop{position:fixed;inset:0;background:rgba(16,17,16,.35);opacity:0;visibility:hidden;transition:opacity .28s ease,visibility .28s ease;z-index:90}
.mobile-nav-backdrop.is-visible{opacity:1;visibility:visible}
.menu-panel{position:fixed;inset:0 0 0 auto;width:min(100%,520px);background:#fff;transform:translateX(100%);transition:transform .55s var(--ease,cubic-bezier(.22,1,.36,1));z-index:100}
.menu-panel.is-open{transform:none}
@media (prefers-reduced-motion:reduce){
  html.js .reveal,.media-scroll-reveal{opacity:1;clip-path:none;transform:none;transition:none}
  .hero-anim{animation:none}
  *{scroll-behavior:auto!important}
}
