/* Lightweight motion layer: opacity + transform only; no animation libraries required. */
.reveal-on-scroll{opacity:0;transform:translate3d(0,22px,0);transition:opacity .65s ease,transform .65s cubic-bezier(.22,.61,.36,1);}
.reveal-on-scroll.is-visible{opacity:1;transform:none;}
.reveal-on-scroll[data-delay="1"]{transition-delay:70ms}
.reveal-on-scroll[data-delay="2"]{transition-delay:140ms}
.reveal-on-scroll[data-delay="3"]{transition-delay:210ms}
.reveal-on-scroll[data-delay="4"]{transition-delay:280ms}
.reveal-on-scroll[data-delay="5"]{transition-delay:350ms}

/* Gentle image lift on pointer devices only. */
@media (hover:hover) and (pointer:fine){
  .feature .visual img,.project-img img,.image-card img,.contact-image img,.gallery img{transition:transform .6s cubic-bezier(.22,.61,.36,1),filter .4s ease;}
  .feature:hover .visual img,.project-card:hover .project-img img,.image-card:hover img,.contact-image:hover img,.gallery > div:hover img{transform:scale(1.018);}
  .listing-card{transition:transform .28s ease,box-shadow .28s ease,border-color .28s ease;}
  .listing-card:hover{transform:translateY(-5px);box-shadow:0 14px 34px rgba(20,32,27,.10);}
  .service-card,.process-item,.trust-item,.value,.advantage-card{transition:transform .28s ease,box-shadow .28s ease,border-color .28s ease;}
  .service-card:hover{transform:translateY(-4px);box-shadow:0 12px 28px rgba(20,32,27,.08);border-color:rgba(205,161,93,.45);}
  .process-item:hover{transform:translateY(-3px);}
}

/* Small, fast header motion. */
.site-header{transition:box-shadow .25s ease,background-color .25s ease;}
.site-header.header-scrolled{box-shadow:0 8px 28px rgba(14,38,31,.08);}

/* Buttons/icons: keep motion short and composited. */
.mini-btn,.btn,.filter-btn,.mode button{transition:transform .22s ease,box-shadow .22s ease,background-color .22s ease,border-color .22s ease,color .22s ease;}
.btn:hover,.mini-btn:hover{transform:translate3d(0,-2px,0);}
.btn:active,.mini-btn:active{transform:translate3d(0,0,0) scale(.985);}

/* Hero entrance: one-shot, no continuous expensive animation. */
.hero-copy .eyebrow,.hero-copy h1,.hero-copy > p,.hero-actions,.hero-note{animation:heroIn .75s cubic-bezier(.22,.61,.36,1) both;}
.hero-copy h1{animation-delay:.08s}
.hero-copy > p{animation-delay:.16s}
.hero-actions{animation-delay:.24s}
.hero-note{animation-delay:.32s}
@keyframes heroIn{from{opacity:0;transform:translate3d(0,18px,0)}to{opacity:1;transform:none}}

/* Respect accessibility and low-power preferences. */
@media (prefers-reduced-motion: reduce), (update: slow){
  .reveal-on-scroll{opacity:1;transform:none;transition:none!important;}
  .hero-copy .eyebrow,.hero-copy h1,.hero-copy > p,.hero-actions,.hero-note{animation:none!important;}
  .listing-card,.service-card,.process-item,.feature .visual img,.project-img img,.image-card img,.contact-image img,.gallery img{transition:none!important;}
}

/* V5: additional micro-interactions — intentionally lightweight and mostly one-shot. */
.scroll-progress{position:fixed;left:0;top:0;height:2px;width:100%;transform-origin:left center;transform:scaleX(0);background:linear-gradient(90deg,var(--gold),#f1d39a,var(--gold));z-index:9999;pointer-events:none;will-change:transform;}

/* Section headings get a tiny rule draw-in when revealed. */
.section-head .eyebrow:after{content:'';display:block;width:0;height:1px;background:rgba(205,161,93,.9);margin-top:10px;transition:width .65s cubic-bezier(.22,.61,.36,1);}
.section-head.is-visible .eyebrow:after{width:42px;}

/* Staggered reveal for grids without adding separate animations per child. */
.reveal-stagger > *{opacity:0;transform:translate3d(0,14px,0);transition:opacity .55s ease,transform .55s cubic-bezier(.22,.61,.36,1);}
.reveal-stagger.is-visible > *{opacity:1;transform:none;}
.reveal-stagger.is-visible > *:nth-child(1){transition-delay:40ms}
.reveal-stagger.is-visible > *:nth-child(2){transition-delay:80ms}
.reveal-stagger.is-visible > *:nth-child(3){transition-delay:120ms}
.reveal-stagger.is-visible > *:nth-child(4){transition-delay:160ms}
.reveal-stagger.is-visible > *:nth-child(5){transition-delay:200ms}
.reveal-stagger.is-visible > *:nth-child(6){transition-delay:240ms}

/* Pointer-device-only image sheen/zoom; no permanent movement on touch screens. */
@media (hover:hover) and (pointer:fine){
  .portfolio-tile,.project-img,.image-card,.contact-image,.gallery > div{isolation:isolate;}
  .portfolio-tile:after,.project-img:after,.image-card:after,.contact-image:after,.gallery > div:after{content:'';position:absolute;inset:0;background:linear-gradient(110deg,transparent 40%,rgba(255,255,255,.11) 50%,transparent 60%);transform:translateX(-120%);transition:transform .8s cubic-bezier(.22,.61,.36,1);pointer-events:none;z-index:2;}
  .portfolio-tile:hover:after,.project-card:hover .project-img:after,.image-card:hover:after,.contact-image:hover:after,.gallery > div:hover:after{transform:translateX(120%);}
  .portfolio-tile img,.project-img img,.image-card img,.contact-image img,.gallery img{will-change:transform;}
  .nav-links a:before{content:'';position:absolute;left:50%;bottom:-3px;width:4px;height:4px;border-radius:50%;background:var(--gold);transform:translate(-50%,4px) scale(0);transition:transform .25s ease;}
  .nav-links a:hover:before,.nav-links .active:before{transform:translate(-50%,0) scale(1);}
  .project-footer .btn:hover{box-shadow:0 8px 22px rgba(205,161,93,.18);}
}

/* Gentle focus treatment for keyboard users. */
.btn:focus-visible,.mini-btn:focus-visible,.filter-btn:focus-visible,.mode button:focus-visible,.menu-toggle:focus-visible,.mobile-nav a:focus-visible{outline:2px solid var(--gold);outline-offset:3px;}

@media (prefers-reduced-motion: reduce), (update: slow){
  .scroll-progress,.reveal-stagger > *, .section-head .eyebrow:after{transition:none!important;transform:none!important;}
  .section-head .eyebrow:after{width:0!important;}
}
