/* Katch — motion layer (added Oct 2026). Loaded after styles.css; safe to remove as a whole. */

/* scroll progress bar */
.k-progress { position: fixed; z-index: 9999; top: 0; left: 0; height: 3px; width: 100%; transform-origin: 0 50%; transform: scaleX(0);
  background: linear-gradient(90deg, var(--green-600), var(--green-400)); box-shadow: 0 0 10px rgba(76,175,80,.6); pointer-events: none; }

/* hero: crossfading photos with a slow zoom */
.k-hero-bg { position: absolute; inset: 0; z-index: -2; overflow: hidden; }
.k-hero-bg span { position: absolute; inset: 0; background-size: cover; background-position: center; opacity: 0;
  transition: opacity 1.6s ease; transform: scale(1.04); }
.k-hero-bg span.on { opacity: 1; animation: kKen 9s ease-out forwards; }
.k-hero-bg::after { content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(11,15,12,.35) 0%, rgba(11,15,12,.65) 60%, rgba(11,15,12,.85) 100%); }
@keyframes kKen { from { transform: scale(1.04) translate(0, 0); } to { transform: scale(1.14) translate(-1.5%, -1%); } }
.k-leaves { position: absolute; inset: 0; z-index: -1; pointer-events: none; }

/* hero entrance: children rise in one after another */
.k-ready .hero .reveal > * { opacity: 0; transform: translateY(18px); animation: kRise .8s cubic-bezier(.2,.7,.2,1) forwards; }
.k-ready .hero .reveal > *:nth-child(1) { animation-delay: .1s; }
.k-ready .hero .reveal > *:nth-child(2) { animation-delay: .25s; }
.k-ready .hero .reveal > *:nth-child(3) { animation-delay: .4s; }
.k-ready .hero .reveal > *:nth-child(4) { animation-delay: .55s; }
.k-ready .hero .reveal > *:nth-child(5) { animation-delay: .7s; }
.k-ready .hero .hero-card { animation: kCard 1s cubic-bezier(.2,.7,.2,1) .5s both; }
.k-ready .hero .hero-card li { opacity: 0; animation: kSlide .6s cubic-bezier(.2,.7,.2,1) forwards; }
.k-ready .hero .hero-card li:nth-child(1) { animation-delay: .9s; } .k-ready .hero .hero-card li:nth-child(2) { animation-delay: 1s; }
.k-ready .hero .hero-card li:nth-child(3) { animation-delay: 1.1s; } .k-ready .hero .hero-card li:nth-child(4) { animation-delay: 1.2s; }
.k-ready .hero .hero-card li:nth-child(5) { animation-delay: 1.3s; }
.hero h1 .accent { background: linear-gradient(90deg, var(--green-400), #b5e8b8, var(--green-400)); background-size: 200% 100%;
  -webkit-background-clip: text; background-clip: text; color: transparent; animation: kShine 5s ease-in-out infinite; }
@keyframes kRise { to { opacity: 1; transform: none; } }
@keyframes kCard { from { opacity: 0; transform: translateY(30px) scale(.97); } to { opacity: 1; transform: none; } }
@keyframes kSlide { from { opacity: 0; transform: translateX(-12px); } to { opacity: 1; transform: none; } }
@keyframes kShine { 0%, 100% { background-position: 100% 0; } 50% { background-position: 0 0; } }
.hero-card { transition: transform .5s cubic-bezier(.2,.7,.2,1), box-shadow .5s; }
.hero-card:hover { transform: translateY(-6px); box-shadow: 0 30px 60px -25px rgba(0,0,0,.6); }

/* buttons: shine sweep + lift + click ripple */
.btn { position: relative; overflow: hidden; transition: transform .2s ease, box-shadow .25s ease, background-color .25s; }
.btn:hover { transform: translateY(-2px); }
.btn-primary { box-shadow: 0 10px 24px -12px rgba(61,138,71,.8); }
.btn-primary:hover { box-shadow: 0 16px 34px -12px rgba(61,138,71,.95); }
.btn-primary::after { content: ""; position: absolute; top: 0; bottom: 0; left: -60%; width: 40%; pointer-events: none;
  background: linear-gradient(100deg, transparent, rgba(255,255,255,.45), transparent); transform: skewX(-20deg); }
.btn-primary:hover::after { animation: kSweep .8s ease; }
@keyframes kSweep { to { left: 130%; } }
.k-ripple { position: absolute; border-radius: 50%; pointer-events: none; background: rgba(255,255,255,.45); transform: scale(0); animation: kRipple .6s ease-out forwards; }
@keyframes kRipple { to { transform: scale(2.6); opacity: 0; } }

/* cards */
.service-card, .t-card { transition: transform .45s cubic-bezier(.2,.7,.2,1), box-shadow .45s, border-color .45s, opacity .6s; will-change: transform; }
.service-card:hover, .t-card:hover { transform: translateY(-8px); box-shadow: 0 26px 50px -24px rgba(27,58,31,.45); }
.service-card { position: relative; }
.service-card::before { content: ""; position: absolute; left: 0; top: 0; height: 3px; width: 100%; border-radius: inherit; transform: scaleX(0); transform-origin: left;
  background: linear-gradient(90deg, var(--green-600), var(--green-400)); transition: transform .5s cubic-bezier(.2,.7,.2,1); }
.service-card:hover::before { transform: scaleX(1); }
.service-icon { transition: transform .5s cubic-bezier(.3,1.6,.5,1); }
.service-card:hover .service-icon { transform: translateY(-4px) rotate(-8deg) scale(1.1); }
.service-card .more { transition: gap .3s, letter-spacing .3s; }
.service-card:hover .more { letter-spacing: .02em; }
.t-stars { display: inline-block; }
.t-card.is-visible .t-stars { animation: kStars 1.2s ease .3s both; }
@keyframes kStars { 0% { opacity: 0; transform: scale(.6); } 60% { opacity: 1; transform: scale(1.12); } 100% { transform: none; } }

/* stats */
.stat { transition: transform .4s cubic-bezier(.2,.7,.2,1); }
.stat:hover { transform: translateY(-4px); }
.stat strong { display: inline-block; font-variant-numeric: tabular-nums; }

/* gallery + images */
.ba-card { overflow: hidden; }
.ba-card img, .gallery img { transition: transform .8s cubic-bezier(.2,.7,.2,1), filter .6s; }
.ba-card:hover img, .gallery a:hover img, .gallery figure:hover img { transform: scale(1.06); }

/* section titles: underline grows in */
.section-title { position: relative; }
.section-title.is-visible h2::after, .section-title.is-visible .k-line { transform: scaleX(1); }
.section-title h2::after { content: ""; display: block; width: 64px; height: 3px; margin: .6rem 0 0; border-radius: 3px; transform: scaleX(0); transform-origin: left;
  background: linear-gradient(90deg, var(--green-600), var(--green-400)); transition: transform .9s cubic-bezier(.2,.7,.2,1) .2s; }

/* sticky call button breathes */
.sticky-cta { animation: kBreathe 2.8s ease-in-out infinite; }
@keyframes kBreathe { 0%, 100% { box-shadow: 0 0 0 0 rgba(76,175,80,.45); } 50% { box-shadow: 0 0 0 12px rgba(76,175,80,0); } }

/* nav links */
.nav a { position: relative; }
.nav a:not(.btn)::after { content: ""; position: absolute; left: 0; right: 0; bottom: -4px; height: 2px; border-radius: 2px; background: var(--green-500);
  transform: scaleX(0); transition: transform .3s; }
.nav a:not(.btn):hover::after { transform: scaleX(1); }

@media (prefers-reduced-motion: reduce) {
  .k-hero-bg span.on, .hero h1 .accent, .sticky-cta, .t-card.is-visible .t-stars { animation: none !important; }
  .k-ready .hero .reveal > *, .k-ready .hero .hero-card, .k-ready .hero .hero-card li { animation: none !important; opacity: 1 !important; transform: none !important; }
  .k-leaves, .k-progress { display: none; }
}
