:root{--cream:#f5f1e5;--green:#233b2a;--olive:#6a764c;--yellow:#f3cc46;--line:#233b2a30;--white:#fffdf5;--radius:28px;--font:'DM Sans',sans-serif;--display:'Fredoka',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;background:var(--cream);color:var(--green);font-family:var(--font);font-size:16px;line-height:1.65}body.menu-open,body.modal-open{overflow:hidden}img{display:block;max-width:100%;object-fit:cover}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}button,a,input,textarea,select{touch-action:manipulation}button{color:inherit;cursor:pointer}a,button{-webkit-tap-highlight-color:transparent}button:disabled{opacity:.35;cursor:default}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #a37116;outline-offset:5px}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:var(--display);font-weight:600;line-height:1.02;letter-spacing:-.025em}h1{font-size:clamp(3.5rem,8vw,7.5rem)}h2{font-size:clamp(2.65rem,4.8vw,4.65rem)}h3{font-size:1.85rem;letter-spacing:-.015em}p+p{margin-top:18px}button{border:0}.wrap{width:calc(100% - 40px);max-width:1440px;margin-inline:auto}.section{padding-block:76px}.eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.12em;line-height:1.5;margin-bottom:24px}.eyebrow>span{font-size:1.4rem;vertical-align:middle;margin-right:8px}.text-olive{color:var(--olive)}.button{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:14px 25px;border:1px solid var(--green);border-radius:50px;background:var(--green);color:var(--cream);font-size:.9rem;font-weight:600;line-height:1.35;transition:background .2s,transform .2s}.button:hover{background:#3c573f;transform:translateY(-2px)}.button-yellow{background:var(--yellow);border-color:var(--yellow);color:var(--green)}.button-yellow:hover{background:#ffdc66}.button-outline{background:transparent;color:var(--green)}.button-outline:hover{background:var(--green);color:var(--cream)}.text-link{display:inline-block;width:fit-content;background:none;border:0;border-bottom:1px solid currentColor;font-weight:600;font-size:.9rem;line-height:1.6;padding:0 0 4px}.text-link:hover{color:var(--olive)}.site-header{height:100px;display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{display:flex;align-items:center;gap:10px;flex-shrink:0}.brand-mark{font-size:3.4rem;line-height:1;color:var(--olive)}.brand strong{display:block;font-family:var(--display);font-size:1.8rem;line-height:1;font-weight:600;letter-spacing:-.035em}.brand small{display:block;letter-spacing:.2em;font-size:.58rem;font-weight:600;margin-top:8px}.brand-dot{color:var(--olive)}.header-right{display:flex;align-items:center;gap:38px}.site-header nav{display:flex;align-items:center;gap:30px}.site-header nav a{font-size:.88rem;position:relative}.site-header nav a[aria-current]{text-decoration:underline;text-underline-offset:8px}.site-header nav a:hover{color:var(--olive)}.header-contact{min-height:46px;padding:12px 24px}.menu-toggle{display:none;background:transparent;width:44px;height:44px;padding:10px}.menu-toggle span{height:2px;width:24px;display:block;background:var(--green);margin:6px 0;transition:transform .2s}.hero{position:relative;isolation:isolate;min-height:660px;overflow:hidden;border-radius:var(--radius);color:var(--cream);display:flex;align-items:center}.hero-image,.hero-shade{position:absolute;inset:0;width:100%;height:100%;z-index:-2}.hero-image{object-position:center}.hero-shade{z-index:-1;background:linear-gradient(90deg,rgba(14,35,22,.76),rgba(14,35,22,.36) 65%,rgba(14,35,22,.1))}.hero-copy{padding:62px 6% 105px;width:100%}.hero-copy .eyebrow{font-size:.7rem}.hero h1{font-size:clamp(4rem,7.7vw,7.4rem);max-width:940px;line-height:.98;letter-spacing:-.03em}.hero h1 span{color:var(--yellow)}.hero-copy>p:not(.eyebrow){margin-top:24px;font-size:1rem;line-height:1.6}.hero-copy>.button{margin-top:26px}.hero-bottom{position:absolute;bottom:26px;left:6%;right:4%;display:flex;justify-content:space-between;align-items:center;font-size:.72rem;font-weight:500;gap:20px}.hero-bottom a{display:flex;gap:14px;align-items:center}.hero-bottom a span{font-size:1.4rem}.hero-stamp{width:136px;height:136px;border-radius:50%;border:1px solid #ffffff80;position:absolute;right:6%;top:45%;transform:rotate(11deg);display:flex;flex-direction:column;align-items:center;justify-content:center;background:#f5f1e51a;backdrop-filter:blur(8px)}.hero-stamp strong{font-family:var(--display);font-size:3.6rem;line-height:1.05;font-weight:500}.hero-stamp span{font-size:.52rem;letter-spacing:.12em}.trust-strip{display:flex;justify-content:space-around;align-items:center;gap:16px;padding-block:28px;border-bottom:1px solid var(--line);font-size:.8rem}.trust-strip span{display:flex;align-items:center;gap:12px}.trust-strip i{font-style:normal;font-size:1.3rem;color:var(--olive)}.intro{display:grid;grid-template-columns:1.12fr 1fr;gap:9%;align-items:start;padding-block:100px}.intro-copy{padding-top:8px;font-size:1rem;max-width:540px}.intro-copy .button{margin-top:26px}.services-section{background:var(--green);color:#fff;border-radius:40px;overflow:hidden}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:30px;margin-bottom:44px}.heading-aside{max-width:360px;font-size:.95rem}.slider-controls{display:flex;gap:10px;margin-top:22px}.round-button{border-radius:50%;width:46px;height:46px;border:1px solid var(--green);font-size:1.4rem;background:transparent;line-height:1}.round-button:hover{background:var(--green);color:var(--cream)}.services-slider{overflow:hidden;padding-bottom:48px}.service-card{height:auto}.service-image{position:relative;display:block;overflow:hidden;border-radius:18px}.service-image img{aspect-ratio:1.18;width:100%;height:auto;transition:transform .5s}.service-image:hover img{transform:scale(1.04)}.number{position:absolute;top:14px;left:14px;border:1px solid #fff9;color:white;font-size:.7rem;line-height:1;border-radius:100%;width:34px;height:34px;display:grid;place-items:center;background:#0002}.image-link{position:absolute;right:14px;bottom:14px;background:var(--cream);width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font-size:1.4rem}.service-card h3{margin-top:22px;font-size:1.7rem;max-width:270px}.service-card p{margin-top:12px;font-size:.9rem;max-width:280px}.swiper-pagination{bottom:3px!important;text-align:left}.swiper-pagination-bullet{background:var(--green)}.reviews-section{padding-block:100px}.reviews-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.review-card{padding:28px;position:relative;border-top:1px solid var(--line);display:flex;flex-direction:column;align-items:flex-start;min-width:0}.quote-mark{font-family:var(--display);font-size:5.5rem;line-height:1;height:63px;color:var(--olive)}blockquote{font-size:1rem;line-height:1.65;margin:12px 0 28px}.review-card figcaption{display:flex;gap:12px;align-items:center;margin-top:auto}.review-card figcaption strong{display:block;font-size:.85rem}.review-card small{display:block;font-size:.7rem;line-height:1.5;margin-top:4px}.avatar{background:#e3e6d5;border-radius:50%;width:40px;height:40px;display:grid;place-items:center;flex-shrink:0}.stars{color:#836516;letter-spacing:4px}.review-google{background:#e8ebdf;border-radius:18px;border:0}.google-letter{font-size:1.4rem;font-weight:700;margin-bottom:20px}.review-google h3{font-size:1.8rem;line-height:1.1}.review-google p{font-size:.85rem;margin-block:16px}.review-google a{margin-top:auto;font-size:.8rem}.faq-section{border-top:1px solid var(--line);display:grid;grid-template-columns:.9fr 1.3fr;gap:8%;padding-block:90px}.faq-section h2{margin-bottom:26px}.faq-section>div>p:not(.eyebrow){font-size:.9rem;margin-bottom:18px}.faq-list{padding-top:4px}.faq-list details{border-bottom:1px solid var(--line)}.faq-list details:first-child{border-top:1px solid var(--line)}.faq-list summary{list-style:none;display:flex;align-items:center;gap:20px;padding:24px 0;cursor:pointer;font-size:.95rem;font-weight:500;line-height:1.45}.faq-list summary::-webkit-details-marker{display:none}.faq-number{color:var(--olive);font-size:.72rem;align-self:center}.plus{font-size:1.5rem;margin-left:auto;flex-shrink:0;font-weight:400}.faq-list details[open] .plus{transform:rotate(45deg)}.faq-list details p{padding:0 32px 24px;font-size:.9rem}.projects-section{background:#e6eadc;overflow:hidden;padding-top:80px}.projects-slider .swiper-wrapper{transition-timing-function:linear!important}.project-slide{width:350px}.project-photo{position:relative;display:block;padding:0;width:100%;background:var(--olive);overflow:hidden;border-radius:20px}.project-photo img{width:100%;aspect-ratio:1.15;height:auto;transition:transform .4s}.project-photo:hover img{transform:scale(1.035)}.project-slide>span{display:block;margin-top:14px;font-size:.8rem}.social-line{display:flex;align-items:center;justify-content:space-between;gap:25px;padding-top:40px;font-size:.9rem}.contact-band{background:var(--green);color:var(--cream);margin-block:70px;border-radius:28px;padding:55px 5%;display:flex;align-items:center;gap:30px}.contact-band .spark{font-size:6rem;color:var(--yellow);line-height:1}.contact-band h2{font-size:clamp(2rem,3.5vw,3.4rem)}.contact-band .eyebrow{font-size:.65rem;margin-bottom:16px}.contact-band>.button{margin-left:auto;flex-shrink:0}.site-footer{padding-block:0 24px}.footer-top{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:25px;padding-bottom:45px;font-size:.8rem}.footer-top .brand strong{font-size:1.45rem}.footer-top .brand-mark{font-size:2.8rem}.footer-top .brand small{font-size:.5rem}.footer-top>div>a{display:block}.footer-bottom{padding-top:20px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;font-size:.66rem}.footer-bottom small{font-size:inherit}.footer-bottom>div{display:flex;gap:20px;flex-wrap:wrap}.page-intro{padding-block:64px 72px}.page-intro h1{font-size:clamp(3.8rem,7vw,6.5rem)}.page-intro>p:not(.eyebrow){margin-top:30px;font-size:1.1rem}.service-jump,.filters{display:flex;gap:12px;flex-wrap:wrap;margin-top:40px}.service-jump a,.filters button{border:1px solid var(--line);border-radius:100px;padding:11px 22px;font-size:.85rem;background:transparent}.service-jump a:hover,.filters button:hover,.filters button[aria-pressed=true]{background:var(--green);color:var(--cream)}.service-details{padding-bottom:70px}.service-detail{display:grid;grid-template-columns:1fr 1fr;gap:8%;align-items:center;padding-block:48px;border-top:1px solid var(--line);scroll-margin-top:35px}.service-detail:nth-child(even) .detail-photo{order:2}.detail-photo{position:relative}.detail-photo img{width:100%;height:auto;aspect-ratio:1;object-fit:cover;border-radius:28px}.detail-number{position:absolute;bottom:24px;left:28px;font-family:var(--display);font-size:4rem;color:var(--cream);line-height:1;text-shadow:0 2px 12px #0005}.service-detail h2{font-size:clamp(2.5rem,4vw,4rem);margin-bottom:20px}.service-detail .lead{font-weight:600;margin-bottom:18px}.service-detail>div>p:not(.eyebrow){font-size:.95rem}.check-list{list-style:none;margin:24px 0;padding:0}.check-list li{padding:9px 0;border-bottom:1px solid var(--line);font-size:.9rem}.check-list li:before{content:'✓';margin-right:12px;color:var(--olive)}.approach{background:#e6eadc;padding:0}.approach-image{border-radius:22px;margin-top:32px;width:100%;aspect-ratio:1.5}.approach-facts{display:flex;gap:50px;margin:36px 0}.approach-facts strong{display:block;font-family:var(--display);font-size:3.3rem;line-height:1.1}.approach-facts span{font-size:.8rem}.gallery-section{padding-bottom:35px}.filters{margin:0 0 36px}.gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:44px 24px}.gallery-item .project-photo img{aspect-ratio:1.1}.gallery-item .project-photo>span{position:absolute;bottom:15px;right:15px;background:var(--cream);width:38px;height:38px;border-radius:50%;font-size:1.6rem}.gallery-item .eyebrow{font-size:.62rem;margin:20px 0 10px}.gallery-item h2{font-size:1.6rem}.lightbox{padding:18px;border:0;border-radius:20px;background:var(--cream);color:var(--green);width:min(850px,92vw);max-height:90dvh}.lightbox::backdrop{background:#102317dd;backdrop-filter:blur(5px)}.lightbox img{max-height:72dvh;width:100%;object-fit:contain;background:#162b20;border-radius:10px}.lightbox p{padding:14px 6px 2px;font-size:.85rem}.lightbox-close{position:absolute;top:24px;right:24px;z-index:2;border-radius:50%;background:var(--cream);width:44px;height:44px;font-size:2rem;line-height:1}.contact-layout{display:grid;grid-template-columns:1fr 1.1fr;gap:8%;padding:55px 0 90px}.contact-layout h1{font-size:clamp(3.3rem,6vw,5.8rem)}.contact-layout .lead{margin-block:26px 34px;max-width:440px}.contact-infos{display:flex;flex-direction:column;align-items:start;gap:24px;margin-block:34px}.contact-infos>div>small{display:block;font-size:.7rem;letter-spacing:.09em;margin-bottom:4px}.contact-infos a{font-weight:500}.contact-infos .phone{font-family:var(--display);font-size:2rem;line-height:1.3}.contact-note{background:#e6eadc;padding:22px;border-radius:18px;max-width:420px;font-size:.85rem}.contact-form{background:#e6eadc;padding:36px;border-radius:28px;align-self:start}.contact-form h2{font-size:2.2rem;margin-bottom:10px}.contact-form>p{font-size:.85rem;margin-bottom:25px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:19px}.field{display:flex;flex-direction:column;gap:7px;font-size:.8rem}.field.full{grid-column:1/-1}.field input,.field select,.field textarea{border:1px solid #233b2a40;border-radius:9px;background:var(--cream);padding:12px;width:100%;font-size:1rem;color:var(--green);min-width:0}.field textarea{resize:vertical;min-height:135px}.field input:focus,.field textarea:focus,.field select:focus{outline:2px solid var(--olive);outline-offset:1px}.check-consent{display:flex;align-items:flex-start;gap:10px;font-size:.75rem;line-height:1.6;margin-block:22px}.check-consent input{margin:5px 0 0;width:17px;height:17px;flex-shrink:0;accent-color:var(--green)}.check-consent a{text-decoration:underline}.contact-form .button{width:100%}.form-status{padding:14px 16px;border-radius:10px;background:#fff2d0;border:1px solid #a37924;font-size:.88rem;margin-bottom:22px}.form-status.success{background:#d9e6d1;border-color:#668052}.form-disclaimer{margin-top:14px!important;font-size:.7rem!important;text-align:center}.legal{max-width:850px;padding-block:50px 80px}.legal h1{font-size:3.4rem;margin-bottom:35px}.legal h2{font-size:1.8rem;margin:32px 0 16px}.legal a{text-decoration:underline}.legal p{font-size:.95rem}.sr-only,.honeypot{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip-link{position:fixed;top:10px;left:20px;z-index:100;background:var(--yellow);padding:12px;transform:translateY(-200%)}.skip-link:focus{transform:none}[hidden]{display:none!important}
@media(min-width:1500px){.hero{min-height:730px}.wrap{width:calc(100% - 100px)}}
@media(min-width:1000px) and (max-width:1499px){.wrap{width:calc(100% - 76px)}}
@media(max-width:1000px){.header-right{gap:24px}.site-header nav{gap:22px}.hero{min-height:650px}.hero-stamp{right:5%;width:112px;height:112px}.hero-stamp strong{font-size:3rem}.intro{gap:6%}.reviews-grid{gap:14px}.review-card{padding:22px 16px}.footer-top{grid-template-columns:1.4fr 1fr}.contact-band .spark{display:none}.contact-layout{gap:5%}.contact-form{padding:26px}}
@media(max-width:760px){.site-header{height:84px}.brand{gap:6px}.brand-mark{font-size:2.7rem}.brand strong{font-size:1.45rem}.brand small{font-size:.48rem;margin-top:6px}.header-right{gap:10px}.header-contact{font-size:.72rem;min-height:40px;padding:10px 14px}.menu-toggle{display:block}.site-header nav{display:none;position:absolute;z-index:30;left:0;right:0;top:84px;background:var(--cream);padding:32px 26px 44px;border-bottom:1px solid var(--line);box-shadow:0 15px 20px #233b2a14}.site-header nav.is-open{display:flex;align-items:start;flex-direction:column;gap:24px}.site-header nav a{font-family:var(--display);font-size:2rem}.menu-toggle[aria-expanded=true] span:first-child{transform:translateY(4px) rotate(45deg)}.menu-toggle[aria-expanded=true] span:last-child{transform:translateY(-4px) rotate(-45deg)}.hero{min-height:650px;border-radius:22px}.hero-copy{padding:58px 26px 105px;align-self:start}.hero h1{font-size:clamp(3.6rem,11vw,5.5rem);line-height:1.02}.hero-copy .eyebrow{font-size:.57rem;letter-spacing:.095em;max-width:240px;margin-bottom:27px}.hero-copy>p:not(.eyebrow){font-size:.95rem;margin-top:24px}.hero-shade{background:linear-gradient(90deg,#102919b8,#10291950),linear-gradient(0deg,#10291980,transparent 40%)}.hero-image{object-position:40% center}.hero-stamp{width:90px;height:90px;top:auto;bottom:86px;right:24px}.hero-stamp strong{font-size:2.4rem}.hero-stamp span{font-size:.4rem}.hero-bottom{left:26px;right:26px;bottom:23px;font-size:.6rem}.hero-bottom>span{max-width:175px}.hero-bottom>a{font-size:0;gap:0}.hero-bottom>a span{font-size:1.4rem}.trust-strip{padding-block:22px;gap:12px;align-items:start;font-size:.65rem;line-height:1.45}.trust-strip span{flex:1;flex-direction:column;gap:5px;text-align:center;max-width:130px}.trust-strip i{font-size:1.2rem}.section{padding-block:60px}.intro{grid-template-columns:1fr;gap:26px;padding-block:60px}.eyebrow{font-size:.64rem;margin-bottom:19px}.intro-copy{padding:0;font-size:.95rem;max-width:none}.section-heading{gap:25px;align-items:start;margin-bottom:30px}.services-section{border-radius:28px}.heading-aside{font-size:.8rem;max-width:180px}.services-section .heading-aside>p{display:none}.slider-controls{margin-top:52px;gap:7px}.round-button{width:39px;height:39px}.service-card h3{font-size:1.8rem}.service-card p{font-size:.9rem}.reviews-section .section-heading{display:block}.reviews-section .heading-aside{margin-top:20px;max-width:none}.reviews-grid{grid-template-columns:1fr;gap:16px}.review-card{padding:24px;min-height:230px}.review-card blockquote{font-size:1rem}.review-google{min-height:260px}.faq-section{grid-template-columns:1fr;gap:36px}.faq-section h2 br{display:none}.faq-section h2{max-width:400px}.faq-list summary{font-size:.88rem;gap:12px;padding:21px 0}.faq-list details p{padding-inline:28px 16px}.projects-section .section-heading{display:block}.projects-section .heading-aside{max-width:none;display:flex;flex-wrap:wrap;gap:16px;align-items:center;margin-top:28px}.project-slide{width:280px}.social-line{align-items:start;flex-direction:column;gap:16px;padding-top:30px;font-size:.8rem}.contact-band{margin-block:40px;padding:35px 26px;flex-direction:column;align-items:start;gap:26px;border-radius:22px}.contact-band>.button{margin-left:0}.contact-band h2{font-size:2.25rem}.footer-top{grid-template-columns:1fr 1fr;font-size:.73rem;gap:30px 18px;padding-bottom:30px}.footer-top>.brand{grid-column:1/-1}.footer-top>p:first-of-type{display:none}.footer-bottom{flex-direction:column;font-size:.65rem;gap:15px}.footer-bottom>div{gap:13px}.page-intro{padding-block:38px 48px}.page-intro h1{font-size:clamp(3.3rem,10vw,5rem)}.page-intro>p:not(.eyebrow){font-size:.95rem;margin-top:25px}.service-jump,.filters{gap:8px}.service-jump a,.filters button{font-size:.75rem;padding:9px 15px}.service-detail{grid-template-columns:1fr;gap:30px;padding-block:35px}.service-detail:nth-child(even) .detail-photo{order:0}.detail-photo img{aspect-ratio:1.25}.service-detail h2{font-size:2.7rem}.service-details{padding-bottom:30px}.approach .intro{padding-block:60px}.approach-image{max-height:350px}.gallery-grid{grid-template-columns:1fr 1fr;gap:28px 14px}.gallery-item h2{font-size:1.2rem}.gallery-item .eyebrow{font-size:.55rem;letter-spacing:.08em;margin-top:15px}.gallery-item .project-photo{border-radius:14px}.contact-layout{grid-template-columns:1fr;gap:40px;padding-block:38px 60px}.contact-layout h1{font-size:clamp(3.3rem,11vw,4.6rem)}.contact-form{padding:26px 20px}.contact-form h2{font-size:2rem}.form-grid{gap:18px 12px}.field{font-size:.75rem}.legal h1{font-size:2.6rem}.lightbox{padding:12px}.lightbox-close{top:18px;right:18px}}
@media(max-width:380px){.wrap{width:calc(100% - 28px)}.brand strong{font-size:1.22rem}.brand-mark{font-size:2.2rem}.brand small{font-size:.42rem}.header-contact{padding:10px 11px;font-size:.65rem}.header-right{gap:4px}.hero-copy{padding-inline:20px}.hero h1{font-size:3.4rem}.hero-stamp{bottom:86px;width:76px;height:76px;right:18px}.hero-stamp strong{font-size:2rem}.hero-stamp span{font-size:.35rem}.gallery-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.projects-slider .swiper-wrapper{transition-duration:0ms!important}}
.google-rating{display:flex;align-items:center;gap:18px}.google-rating strong{font-family:var(--display);font-size:3rem;line-height:1}.google-rating strong>span{font-size:1.25rem}.google-rating+.heading-aside,.google-rating+p{font-size:.8rem;margin-top:8px}.reviews-section>.text-link{margin-top:30px}.review-updated{font-size:.67rem;margin-top:10px}
@media(max-width:760px){.header-contact{white-space:nowrap;padding-inline:13px;font-size:.68rem}.header-right{gap:4px;flex-shrink:0}.site-header>.brand .brand-mark{font-size:2.2rem}.site-header>.brand strong{font-size:1.25rem}.site-header>.brand small{font-size:.43rem;letter-spacing:.14em}.site-header{gap:8px}}
@media(max-width:380px){.site-header>.brand .brand-mark{display:none}.site-header>.brand strong{font-size:1.2rem}.header-contact{padding-inline:11px;font-size:.64rem}}
@media(max-width:380px){.hero-stamp{display:none}}

/* Services: a green surface, rounded on all four corners. */
.services-section .round-button { border-color: #ffffff80; color: #fff; }
.services-section .round-button:hover { background: #fff; color: var(--green); }
.services-section .image-link { color: var(--green); }
.services-section .swiper-pagination-bullet { background: #fff; opacity: .4; }
.services-section .swiper-pagination-bullet-active { opacity: 1; }
.services-section .text-link:hover { color: var(--yellow); }
.services-section > .wrap > .text-link,
.reviews-section > .text-link { display: block; margin-inline: auto; text-align: center; }
.review-updated { text-align: center; }
.services-section a:focus-visible,
.services-section button:focus-visible { outline-color: var(--yellow); }

/* The whole footer is one surface. Its inner layer moves inside the clipping area. */
.site-footer {
  background: #142b20;
  color: var(--cream);
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
  overflow: clip;
  position: relative;
}
.footer-reveal { padding-block: 12px 26px; }
.site-footer .contact-band {
  background: transparent;
  border-radius: 0;
  margin-block: 0;
  padding: 50px 0 44px;
  border-bottom: 1px solid #f5f1e530;
}
.site-footer .footer-links { padding-top: 0; }
.site-footer .footer-bottom { border-top: 0; padding-top: 24px; }
.footer-call { gap: 12px; }
.site-footer .brand-mark { color: var(--yellow); }
.site-footer a:not(.button):hover { color: var(--yellow); }
.site-footer a:focus-visible { outline-color: var(--yellow); }
@media (min-width: 761px) {
  .footer-reveal { padding-block: 18px 30px; }
  .site-footer .contact-band { padding-block: 76px 64px; }
}
@media (prefers-reduced-motion: reduce) {
  .footer-reveal { transform: none !important; }
}
@media print {
  .footer-reveal { transform: none !important; }
  main h2, .review-card, .detail-photo { opacity: 1 !important; transform: none !important; }
}

/* Scroll CTA and the two-step quote dialog. */
.quote-float { position: fixed; z-index: 40; right: 28px; bottom: max(24px, env(safe-area-inset-bottom)); gap: 15px; padding: 13px 20px 13px 13px; background: var(--yellow); color: var(--green); box-shadow: 0 8px 32px #142b2030; visibility: hidden; opacity: 0; transform: translateY(24px); transition: opacity .25s, transform .25s, visibility .25s; }
.quote-float.is-visible { visibility: visible; opacity: 1; transform: translateY(0); }
.quote-float:hover { background: #ffda5b; color: var(--green); }
.quote-float-icon { display: grid; place-items: center; width: 40px; height: 40px; background: var(--green); color: var(--yellow); border-radius: 50%; font-size: 1.7rem; }
.quote-float small { display: block; font-size: .65rem; font-weight: 400; line-height: 1.4; }
body.menu-open .quote-float, body.modal-open .quote-float { visibility: hidden; opacity: 0; }
.quote-dialog { width: min(590px, calc(100% - 32px)); max-height: calc(100dvh - 48px); margin: auto; padding: 34px; border: 0; border-radius: 28px; background: var(--cream); color: var(--green); overflow-y: auto; overscroll-behavior: contain; box-shadow: 0 24px 100px #10231750; }
.quote-dialog::backdrop { background: #102317bb; backdrop-filter: blur(6px); }
.quote-dialog[open] { animation: quote-enter .22s ease-out; }
@keyframes quote-enter { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
.quote-close { position: sticky; top: 0; float: right; margin: -16px -16px 0 0; z-index: 2; border: 1px solid var(--line); border-radius: 50%; width: 40px; height: 40px; background: var(--cream); font-size: 1.8rem; line-height: 1; }
.quote-close:hover { background: #e6eadc; }
.quote-spark { display: block; color: var(--olive); font-size: 2.5rem; line-height: 1; margin-bottom: 18px; }
.quote-heading .eyebrow { font-size: .6rem; margin-bottom: 12px; }
.quote-heading h2 { clear: both; font-size: clamp(2.2rem, 6vw, 3rem); line-height: 1.1; }
.quote-heading > p:last-child { font-size: .88rem; margin-top: 12px; }
.quote-progress { display: flex; gap: 22px; list-style: none; margin: 24px 0; padding: 17px 0; border-block: 1px solid var(--line); }
.quote-progress li { display: flex; align-items: center; gap: 8px; font-size: .75rem; color: #56614e; }
.quote-progress li > span { display: grid; place-items: center; width: 27px; height: 27px; border: 1px solid var(--line); border-radius: 50%; }
.quote-progress li[aria-current] { color: var(--green); font-weight: 700; }
.quote-progress li[aria-current] > span { background: var(--green); color: var(--cream); }
.quote-progress li.is-complete > span { background: #e0e6d3; border-color: var(--olive); }
.quote-dialog h3 { font-size: 1.5rem; line-height: 1.3; }
.quote-dialog h2:focus, .quote-dialog h3:focus { outline: none; }
.quote-hint { font-size: .8rem; margin: 6px 0 18px; }
.quote-services, .quote-details { border: 0; padding: 0; margin: 0; min-width: 0; }
.quote-services { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.quote-choice { display: flex; align-items: center; position: relative; gap: 10px; padding: 16px 13px; border: 1px solid var(--line); border-radius: 14px; background: var(--white); cursor: pointer; min-height: 78px; font-size: .84rem; line-height: 1.35; transition: background .15s, border-color .15s; }
.quote-choice input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.quote-choice:hover { border-color: var(--olive); background: #edf0e3; }
.quote-choice:has(input:checked) { background: #e1e8d5; border-color: var(--green); box-shadow: inset 0 0 0 1px var(--green); }
.quote-choice:has(input:focus-visible) { outline: 3px solid #a37116; outline-offset: 3px; }
.quote-choice-icon { font-family: var(--display); color: var(--green); font-size: 1.9rem; flex-shrink: 0; }
.quote-service-icon { display: inline-block; width: 32px; height: 32px; background-color: currentColor; -webkit-mask: var(--quote-icon) center / contain no-repeat; mask: var(--quote-icon) center / contain no-repeat; }
.quote-icon-abattage { --quote-icon: url('/assets/images/abatage.svg'); }
.quote-icon-elagage { --quote-icon: url('/assets/images/elagage.svg'); }
.quote-icon-entretien { --quote-icon: url('/assets/images/entretien.svg'); }
.quote-icon-creation { --quote-icon: url('/assets/images/creation.svg'); }
.quote-choice-check { margin-left: auto; display: grid; place-items: center; flex-shrink: 0; width: 20px; height: 20px; border: 1px solid var(--line); border-radius: 50%; color: transparent; }
.quote-choice:has(input:checked) .quote-choice-check { background: var(--green); color: var(--cream); }
.quote-choice-other { grid-column: 1 / -1; min-height: 56px; }
.quote-other { margin-top: 18px; }
.quote-other textarea { min-height: 100px; }
.quote-other small { font-size: .7rem; }
.quote-next { margin-top: 24px; width: 100%; justify-content: space-between; }
.quote-summary { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 20px; }
.quote-summary span { background: #e1e8d5; border-radius: 50px; padding: 5px 12px; font-size: .7rem; }
.quote-dialog .form-grid { gap: 16px 12px; }
.quote-dialog .field input, .quote-dialog .field select { background: var(--white); }
.quote-dialog .field select:disabled { opacity: .65; }
.quote-city-help { margin-top: 9px; font-size: .72rem; line-height: 1.5; }
.quote-city-help p { margin: 0; }
.quote-city-help .is-error { color: #8c361c; }
.quote-city-retry { font-size: .75rem; margin-top: 8px; }
.quote-actions { display: flex; align-items: center; gap: 18px; }
.quote-back { border: 0; background: transparent; padding: 12px 0; font-size: .8rem; }
.quote-submit { flex: 1; justify-content: center; gap: 14px; }
.quote-reassurance { text-align: center; font-size: .7rem; margin-top: 16px; color: #56614e; }
.quote-success { text-align: center; padding-block: 24px 10px; }
.quote-success > span { display: grid; place-items: center; width: 62px; height: 62px; border-radius: 50%; background: #e1e8d5; margin: 0 auto 20px; font-size: 2rem; }
.quote-success p { font-size: .9rem; margin-block: 18px 26px; }
@media (max-width: 760px) {
  .quote-float { right: 16px; left: 16px; bottom: max(14px, env(safe-area-inset-bottom)); padding: 10px 16px 10px 10px; font-size: .82rem; }
  .quote-dialog { max-height: calc(100dvh - 24px); width: calc(100% - 24px); padding: 26px 22px; border-radius: 22px; }
  .quote-close { margin: -8px -4px 0 0; }
  .quote-dialog[data-step="2"] .quote-spark, .quote-dialog[data-step="2"] .quote-heading > p:last-child { display: none; }
  .quote-heading .eyebrow { font-size: .53rem; letter-spacing: .09em; }
  .quote-choice { padding: 14px 10px; gap: 8px; font-size: .77rem; }
  .quote-choice-icon { font-size: 1.5rem; }
  .quote-service-icon { width: 26px; height: 26px; }
  .quote-progress { gap: 16px; }
  .quote-dialog .check-consent { font-size: .7rem; }
  .quote-actions { gap: 14px; }
  .quote-submit { font-size: .8rem; padding-inline: 14px; }
}
@media (max-width: 540px) { .quote-dialog .form-grid { grid-template-columns: 1fr; } }
@media (max-width: 380px) {
  .quote-dialog { padding-inline: 18px; }
  .quote-services { grid-template-columns: 1fr; gap: 8px; }
  .quote-choice { min-height: 54px; }
  .quote-dialog .form-grid { grid-template-columns: 1fr; }
  .quote-dialog h3 { font-size: 1.3rem; }
}
@media print { .quote-float, .quote-dialog { display: none !important; } }

/* WhatsApp is a secondary contact option beside the existing coordinates. */
.social-icon { display: inline-block; width: 24px; height: 24px; flex-shrink: 0; vertical-align: middle; background-color: currentColor; color: var(--green); -webkit-mask: var(--social-icon) center / contain no-repeat; mask: var(--social-icon) center / contain no-repeat; }
.facebook-icon { --social-icon: url('/assets/images/facebook-icon.svg'); }
.whatsapp-icon { --social-icon: url('/assets/images/whatsapp-icon.svg'); }
.social-line { flex-direction: column; align-items: center; justify-content: center; gap: 16px; text-align: center; }
.social-line .text-link { display: inline-flex; align-items: center; justify-content: center; gap: 8px; }
.whatsapp-button .whatsapp-icon { color: #fff; }
.contact-infos .contact-whatsapp { width: 100%; max-width: 420px; padding: 22px; border: 1px solid #136a3940; border-radius: 18px; background: #e6eadc; }
.contact-whatsapp > p { font-size: .85rem; margin-top: 8px; }
.contact-whatsapp .whatsapp-button { margin-top: 18px; display: inline-flex; gap: 12px; padding-inline: 18px; background: #136a39; border-color: #136a39; color: #fff; }
.contact-whatsapp .whatsapp-button:hover { background: #0b522a; border-color: #0b522a; }
@media (max-width: 760px) { .contact-whatsapp .whatsapp-button { width: 100%; } }

/* Keep the longer pruning and felling copy readable at every viewport. */
.hero h1 { font-size: clamp(3rem, 6.4vw, 6.2rem); max-width: min(950px, calc(100% - 140px)); line-height: 1.04; }
.hero-copy > p:not(.eyebrow) { max-width: min(760px, calc(100% - 160px)); }
.site-header > .brand small { letter-spacing: .09em; }
.services-section .section-heading > div:first-child { min-width: 0; }
.services-section .heading-aside { flex-shrink: 0; width: 26%; }
.service-card h3, .service-card p { max-width: none; }
.site-footer .contact-band > div { min-width: 0; }
.site-footer .contact-band .footer-call { max-width: 100%; }
@media (max-width: 1000px) and (min-width: 761px) {
  .site-footer .contact-band { flex-wrap: wrap; }
  .site-footer .contact-band > .button { margin-left: 0; }
}
@media (max-width: 760px) {
  .site-header > .brand small { font-size: .56rem; letter-spacing: .06em; max-width: 130px; line-height: 1.35; }
  .hero h1 { font-size: clamp(2.5rem, 9.5vw, 4rem); max-width: none; line-height: 1.06; }
  .hero-copy { padding-bottom: 210px; }
  .hero-copy > p:not(.eyebrow) { max-width: none; }
  .hero-bottom { flex-direction: column; align-items: start; gap: 12px; }
  .hero-bottom > span { max-width: none; }
  .hero-bottom > a { font-size: .7rem; gap: 10px; }
  .services-section .section-heading { flex-direction: column; }
  .services-section .heading-aside { width: 100%; max-width: none; }
  .services-section .heading-aside > p { display: block; }
  .services-section .slider-controls { margin-top: 20px; }
  .site-footer .contact-band .footer-call { font-size: .8rem; padding-inline: 18px; }
}

/* Navigation reappears when scrolling up, without changing the page layout. */
html { --header-height: 100px; scroll-padding-top: calc(var(--header-height) + 28px); }
.site-header.wrap {
  position: sticky;
  top: 0;
  z-index: 60;
  width: 100%;
  max-width: none;
  padding-inline: max(20px, calc((100% - 1440px) / 2));
  background: var(--cream);
  transition: transform .22s ease, box-shadow .22s ease;
}
.site-header.is-scrolled { box-shadow: 0 4px 18px #233b2a16; }
.site-header.is-hidden { transform: translateY(-100%); pointer-events: none; }
.site-header:has(:focus-visible), body.menu-open .site-header { transform: none; pointer-events: auto; }
@media (min-width: 1000px) and (max-width: 1499px) {
  .site-header.wrap { padding-inline: 38px; }
}
@media (min-width: 1500px) {
  .site-header.wrap { padding-inline: max(50px, calc((100% - 1440px) / 2)); }
}
@media (max-width: 760px) {
  html { --header-height: 84px; }
  .site-header nav { top: 100%; max-height: calc(100dvh - var(--header-height)); overflow-y: auto; overscroll-behavior: contain; }
}
@media (max-width: 380px) {
  .site-header.wrap { padding-inline: 14px; }
}
@media (prefers-reduced-motion: reduce) {
  .site-header.wrap { transition: none; }
}
@media print {
  .site-header.wrap { position: static; transform: none; box-shadow: none; }
}
