/* X-LIMP: photographic service presentation and purposeful motion */
.scroll-progress{position:fixed;z-index:90;top:0;left:0;width:100%;height:4px;background:var(--red);transform:scaleX(0);transform-origin:left center;pointer-events:none}
.hero{isolation:isolate}
.hero-photo{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:72% center;background:#dde8db;transition:transform 1.45s cubic-bezier(.15,.8,.15,1),filter 1.45s ease}
.hero-wash{z-index:1;background:linear-gradient(90deg,#f6f5ed 0%,rgba(246,245,237,.98) 29%,rgba(246,245,237,.82) 47%,rgba(246,245,237,.17) 68%,transparent 100%)}
.hero-curtain{position:absolute;z-index:2;inset:0;background:var(--green);clip-path:inset(0 0 0 0);transition:clip-path 1.05s cubic-bezier(.76,0,.24,1) .1s;pointer-events:none}
body.is-ready .hero-curtain{clip-path:inset(0 0 0 100%)}
.hero-inner,.hero-index{z-index:3}
body:not(.is-ready) .hero-photo{transform:scale(1.12);filter:brightness(.8)}
body:not(.is-ready) .hero-copy>*{opacity:0;transform:translateY(25px)}
.hero-copy>*{transition:opacity .68s ease,transform .8s cubic-bezier(.16,1,.3,1)}
body.is-ready .hero-copy>*{opacity:1;transform:translateY(0)}
.hero-copy>.eyebrow{transition-delay:.35s}
.hero-copy>h1{transition-delay:.48s}
.hero-copy>.hero-lead{transition-delay:.61s}
.hero-copy>.hero-actions{transition-delay:.74s}
.hero-copy>.hero-note{transition-delay:.87s}
.hero .button-red,.contact-section .button-red{position:relative;overflow:hidden}
.hero .button-red:after,.contact-section .button-red:after{content:'';position:absolute;top:-60%;left:-55%;width:35%;height:220%;background:rgba(255,255,255,.28);transform:rotate(28deg) translateX(-220%);transition:transform .75s ease;pointer-events:none}
.hero .button-red:hover:after,.contact-section .button-red:hover:after{transform:rotate(28deg) translateX(950%)}
.services-section{background:#f4f7f2}
.services-heading{margin-bottom:46px}
.service-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:stretch}
.service-card,.service-card.featured{border:0;background:#fff;padding:0;min-height:450px;display:grid;grid-template-rows:250px 62px 1fr;overflow:hidden;box-shadow:0 8px 22px rgba(7,48,30,.06);transition:transform .35s cubic-bezier(.16,1,.3,1),box-shadow .35s ease}
.service-card:hover{transform:translateY(-8px);box-shadow:0 22px 42px rgba(7,48,30,.15)}
.service-visual{position:relative;min-width:0;min-height:0;background:#d9e6dc;overflow:hidden;clip-path:inset(0 0 0 0)}
.service-visual:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(4,47,29,.24));opacity:.85;transition:opacity .5s ease;pointer-events:none}
.service-visual img{display:block;width:100%;height:100%;object-fit:cover;object-position:center;transform:scale(1.015);filter:saturate(.92);transition:transform .9s cubic-bezier(.16,1,.3,1),filter .8s ease}
.service-card:hover .service-visual img,.service-card:focus-within .service-visual img{transform:scale(1.105);filter:saturate(1.13)}
.service-card:hover .service-visual:after{opacity:.3}
.service-card .card-top{padding:17px 25px 0;align-items:center}
.service-card .card-top i{font-size:25px}
.service-card .service-copy{padding:0 25px 27px;display:flex;flex-direction:column;align-items:start}
.service-card h3{font-size:22px;line-height:1.23;margin-bottom:11px}
.service-card p{font-size:13px;line-height:1.55;margin:0 0 22px;min-height:0}
.service-card a{margin-top:auto;font-size:13px;padding-bottom:5px}
.service-card.featured{grid-column:span 2;grid-template-columns:56% 44%;grid-template-rows:92px 1fr;min-height:450px;background:#e5f0e6}
.featured .service-visual{grid-column:1;grid-row:1 / 3}
.featured .card-top{grid-column:2;grid-row:1;padding:27px 34px 0}
.featured .service-copy{grid-column:2;grid-row:2;padding:0 34px 35px;justify-content:end}
.featured h3{font-size:clamp(26px,2.6vw,38px);line-height:1.17}
.featured p{font-size:15px;line-height:1.6;max-width:25ch}
.featured .service-visual img{object-position:60% center}
.photo-note{font-size:12px;color:var(--muted);margin:20px 0 0;text-align:right}
.js .reveal{opacity:.15;transform:translateY(54px);transition:opacity .7s ease,transform .85s cubic-bezier(.16,1,.3,1);transition-delay:var(--reveal-delay,0ms)}
.js .reveal.is-visible{opacity:1;transform:translateY(0)}
.js .service-card.reveal .service-visual{clip-path:inset(0 100% 0 0);transition:clip-path .95s cubic-bezier(.76,0,.24,1);transition-delay:calc(var(--reveal-delay,0ms) + 130ms)}
.js .service-card.reveal.is-visible .service-visual{clip-path:inset(0 0 0 0)}
.js .service-card.reveal.is-visible:hover{transform:translateY(-8px)}
.preloader-inner img{animation:loader-breathe 1.1s ease-in-out infinite alternate}
@keyframes loader-breathe{from{transform:scale(.97);opacity:.8}to{transform:scale(1.02);opacity:1}}
@media(max-width:1050px){.hero-wash{background:linear-gradient(90deg,#f6f5ed 0%,rgba(246,245,237,.96) 38%,rgba(246,245,237,.35) 72%,transparent)}.service-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.service-card.featured{grid-column:span 2}}
@media(max-width:720px){.hero-photo{height:310px;object-position:center 38%}.hero-wash{background:linear-gradient(0deg,#f6f5ed 0%,#f6f5ed 52%,rgba(246,245,237,.4) 73%,transparent)}.service-grid{grid-template-columns:1fr;gap:16px}.service-card,.service-card.featured{grid-column:auto;min-height:0;display:grid;grid-template-columns:1fr;grid-template-rows:260px 58px auto}.featured .service-visual,.featured .card-top,.featured .service-copy{grid-column:1;grid-row:auto}.service-card .card-top,.featured .card-top{padding:16px 22px 0}.service-card .service-copy,.featured .service-copy{padding:0 22px 28px}.service-card h3,.featured h3{font-size:22px}.service-card p,.featured p{font-size:13px;max-width:none}.service-card .service-visual img{object-position:center 38%}.photo-note{text-align:left}}
@media(prefers-reduced-motion:reduce){.hero-photo,.hero-copy>*,.hero-curtain,.service-card,.service-visual,.service-visual img,.js .reveal,.js .service-card.reveal .service-visual{transition:none!important;animation:none!important}.hero-curtain{display:none}.js .reveal{opacity:1;transform:none}.js .service-card.reveal .service-visual{clip-path:none}.scroll-progress{display:none}}
