@font-face{font-family:Figtree Fallback;src:local("Arial");size-adjust:100.06%;ascent-override:94.943%;descent-override:24.985%;line-gap-override:0%}@font-face{font-family:Fraunces Fallback;src:local("Georgia");size-adjust:109.27%;ascent-override:89.5031%;descent-override:23.3367%;line-gap-override:0%}:root{--green-900: #1e3a24;--green-700: #2f5233;--green-600: #3d6b43;--stone-50: #faf9f6;--stone-100: #f2f0ea;--stone-200: #e3dfd5;--stone-400: #a8a293;--ink: #1c1c1a;--ink-soft: #4a4a45;--white: #ffffff;--brand-navy: #14121b;--brand-gold: #c9a54e;--radius: 8px;--shadow: 0 1px 3px rgba(0, 0, 0, .08), 0 8px 24px rgba(0, 0, 0, .06);--max: 1120px;--gutter: 1.25rem;--font-heading: "Fraunces", "Fraunces Fallback", Georgia, "Times New Roman", serif;--font-body: "Figtree", "Figtree Fallback", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--callbar-h: 0px;--header-h: 94px}*{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font-body);color:var(--ink);background:var(--white);line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:clip;padding-bottom:var(--callbar-h)}h1,h2,h3,h4{font-family:var(--font-heading);line-height:1.2;margin:0 0 .5em;font-weight:700;letter-spacing:-.02em;overflow-wrap:break-word}h1{font-size:clamp(1.75rem,6vw,3.25rem)}h2{font-size:clamp(1.4rem,4.5vw,2.125rem)}h3{font-size:clamp(1.1rem,3.5vw,1.375rem)}p{margin:0 0 1.125em;overflow-wrap:break-word}a{color:var(--green-700);overflow-wrap:break-word}img,svg,video{max-width:100%;height:auto;display:block}.wrap{width:100%;max-width:var(--max);margin:0 auto;padding-inline:var(--gutter)}.section{padding-block:clamp(2.5rem,7vw,5.5rem)}.section--tint{background:var(--stone-50)}.section--dark{background:var(--green-900);color:var(--stone-100)}.section--dark h2,.section--dark h3{color:var(--white)}.eyebrow{text-transform:uppercase;letter-spacing:.1em;font-size:.75rem;font-weight:700;color:var(--green-600);margin-bottom:.75rem}.lede{font-size:clamp(1rem,2.5vw,1.125rem);color:var(--ink-soft);max-width:65ch}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:.75rem 1.5rem;border-radius:var(--radius);font-weight:600;text-decoration:none;border:2px solid transparent;cursor:pointer;font-size:1rem;text-align:center;transition:background .15s ease}.btn--primary{background:var(--green-700);color:var(--white)}.btn--primary:hover{background:var(--green-900)}.btn--ghost{background:transparent;border-color:currentColor;color:inherit}.btn--lg{min-height:54px;padding:.9rem 1.85rem;font-size:1.0625rem}@media (max-width: 480px){.btn{width:100%}.hero__actions{flex-direction:column;align-items:stretch}}.site-header{position:sticky;top:0;z-index:50;background:var(--white);border-bottom:1px solid var(--stone-200)}.site-header__inner{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;max-width:var(--max);margin:0 auto;padding:.6rem var(--gutter)}.brand{display:flex;align-items:center;text-decoration:none;line-height:1.15;flex-shrink:0}.brand__logo{height:clamp(44px,11vw,72px);width:auto;aspect-ratio:2150 / 1404;flex-shrink:0;display:block;color:var(--brand-navy)}.site-footer .brand__logo{color:var(--brand-gold)}.nav{display:flex;align-items:center;gap:1rem}.nav__links{display:flex;gap:1rem;align-items:center;flex-shrink:0}.nav a{color:var(--ink);text-decoration:none;font-weight:600;font-size:.9375rem}.nav a:hover{color:var(--green-700)}.nav__phone{font-weight:700;color:var(--green-700)!important;white-space:nowrap;flex-shrink:0}.site-header .btn--primary{background:var(--brand-navy);color:var(--white)}.site-header .btn--primary:hover{filter:brightness(1.3)}.nav>.btn--primary,.nav__toggle{flex-shrink:0}.nav__toggle{display:none}.nav__toggle>summary{list-style:none;cursor:pointer;min-width:48px;min-height:48px;display:flex;align-items:center;justify-content:center;border:1px solid var(--stone-200);border-radius:var(--radius);font-weight:600;font-size:.875rem;padding:0 .85rem;color:var(--ink)}.nav__toggle>summary::-webkit-details-marker{display:none}.nav__toggle[open]>summary{background:var(--stone-100)}.nav__panel{position:absolute;left:0;right:0;top:100%;background:var(--white);border-bottom:1px solid var(--stone-200);box-shadow:var(--shadow);padding:.5rem var(--gutter) 1rem;display:grid;gap:.25rem}.nav__panel a{display:block;padding:.85rem .25rem;border-bottom:1px solid var(--stone-100);font-size:1rem}.nav__panel .btn{margin-top:.75rem}@media (max-width: 1280px){.nav__links{display:none}.nav__toggle{display:block}.site-header{position:sticky}}@media (max-width: 560px){.nav__phone{display:none}.nav>.btn{display:none}}.callbar{display:none;position:fixed;left:0;right:0;bottom:0;z-index:60;gap:.5rem;padding:.5rem var(--gutter) calc(.5rem + env(safe-area-inset-bottom,0px));background:var(--white);border-top:1px solid var(--stone-200);transition:transform .2s ease}.callbar--hidden{transform:translateY(100%)}.callbar .btn{flex:1;min-height:50px;font-size:1rem;width:auto}@media (max-width: 860px){:root{--callbar-h: 74px}.callbar{display:flex}}.grid{display:grid;gap:1.25rem}.grid--3{grid-template-columns:repeat(auto-fit,minmax(min(290px,100%),1fr))}.grid--2{grid-template-columns:repeat(auto-fit,minmax(min(330px,100%),1fr))}.grid--3.grid--fill{grid-template-columns:repeat(auto-fill,minmax(min(290px,100%),1fr))}.grid--split{gap:clamp(1.5rem,4vw,3rem)}@media (max-width: 760px){.services-carousel{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:1rem;margin-inline:calc(-1 * var(--gutter));padding-inline:var(--gutter);padding-bottom:.25rem;scrollbar-width:none}.services-carousel::-webkit-scrollbar{display:none}.services-carousel>.card{flex:0 0 85%;scroll-snap-align:start}}.card{background:var(--white);color:var(--ink);border:1px solid var(--stone-200);border-radius:var(--radius);padding:1.375rem;box-shadow:var(--shadow);min-width:0}.card h3{margin-bottom:.4rem}.card h3 a{text-decoration:none;color:var(--green-900)}.card p{color:var(--ink-soft);margin-bottom:.75rem;font-size:.9375rem}.card__link{font-weight:600;font-size:.9375rem;text-decoration:none;display:inline-block;padding:.35rem 0}.card__link:after{content:" →"}.card__picture{display:contents}.card__media{display:block;width:calc(100% + 2.75rem);max-width:calc(100% + 2.75rem);margin:-1.375rem -1.375rem 1rem;aspect-ratio:4 / 3;object-fit:cover;border-radius:var(--radius) var(--radius) 0 0}.card--no-photo{border-top:4px solid var(--green-600)}.hero{background:linear-gradient(180deg,var(--green-900) 0%,var(--green-700) 100%);color:var(--white);padding-block:clamp(2.5rem,9vw,7rem)}.hero--photo{background:linear-gradient(#0a0c0a8c,#0a0c0a8c),url(/images/hardscaping-cornwall.webp) center / cover no-repeat}.hero--pavers{background:linear-gradient(#0a0c0a8c,#0a0c0a8c),url(/images/projects/pool-deck-paver-patio-hero-1440.webp) center / cover no-repeat}.hero--hardscaping-ppc{background:linear-gradient(#0a0c0a8c,#0a0c0a8c),url(/images/projects/ppc-hardscaping-hero-1080.webp) center / cover no-repeat}@supports (background-image: image-set(url(x.avif) type("image/avif"))){.hero--hardscaping-ppc{background:linear-gradient(#0a0c0a8c,#0a0c0a8c),image-set(url(/images/projects/ppc-hardscaping-hero-1920.avif) type("image/avif"),url(/images/projects/ppc-hardscaping-hero-1080.webp) type("image/webp")) center / cover no-repeat}}@media (max-width: 859px){.hero--pavers{background:linear-gradient(#0a0c0a8c,#0a0c0a8c),url(/images/projects/pool-deck-paver-patio-hero-480.webp) center / cover no-repeat}.hero--hardscaping-ppc{background:linear-gradient(#0a0c0a8c,#0a0c0a8c),url(/images/projects/ppc-hardscaping-hero-1080.webp) center / cover no-repeat}@supports (background-image: image-set(url(x.avif) type("image/avif"))){.hero--hardscaping-ppc{background:linear-gradient(#0a0c0a8c,#0a0c0a8c),image-set(url(/images/projects/ppc-hardscaping-hero-1080.avif) type("image/avif"),url(/images/projects/ppc-hardscaping-hero-1080.webp) type("image/webp")) center / cover no-repeat}}}.hero--ppc{padding-block:clamp(1.25rem,4vw,3rem)}@media (max-height: 700px){.hero--ppc p{display:none}}.hero h1{color:var(--white);max-width:18ch}.hero p{font-size:clamp(1rem,3vw,1.1875rem);max-width:58ch;color:#ffffffeb}.hero__actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.5rem}.hero .card p{color:var(--ink-soft)}.trust-bar{background:var(--stone-50);border-bottom:1px solid var(--stone-200);padding-block:1rem}.trust-bar__list{display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem 2rem;font-weight:600;font-size:.9375rem;color:var(--green-900);text-align:center;margin:0}.cta-strip{background:var(--green-700);color:var(--white);padding-block:1.25rem;text-align:center}.cta-strip .btn--ghost{color:var(--white)}.hero__trust{margin-top:2rem;padding-top:1.25rem;border-top:1px solid rgba(255,255,255,.2);display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;font-size:.875rem;color:#ffffffd9}.review{background:var(--white);border:1px solid var(--stone-200);border-left:3px solid var(--green-600);border-radius:var(--radius);padding:1.25rem;margin:0;min-width:0}.review p{font-size:.9375rem}.review__author{font-weight:700;font-size:.875rem;margin:0}.review__source{color:var(--ink-soft);font-size:.8125rem;font-weight:500}.stars{display:inline-flex;align-items:baseline;gap:.3em;margin-left:.35em}.stars__icons{color:var(--brand-gold);letter-spacing:.05em}.stars__value{color:var(--ink-soft);font-weight:600}.lead-form{display:grid;gap:.875rem;max-width:540px;width:100%}.lead-form label{display:grid;gap:.3rem;font-weight:600;font-size:.875rem}.lead-form input:not(.sr-only),.lead-form select,.lead-form textarea{font:inherit;font-size:16px;min-height:48px;padding:.7rem .85rem;border:1px solid var(--stone-200);border-radius:var(--radius);background:var(--white);width:100%;max-width:100%}.lead-form textarea{min-height:96px;resize:vertical}.lead-form input:focus,.lead-form select:focus,.lead-form textarea:focus{outline:2px solid var(--green-600);outline-offset:1px;border-color:var(--green-600)}.form-note{font-size:.8125rem;color:var(--ink-soft)}.form-note a{white-space:nowrap}.label-required{color:var(--green-700);font-weight:700}.label-optional{font-weight:500;color:var(--ink-soft);text-transform:none;letter-spacing:0}.lead-form__more summary{cursor:pointer;font-weight:600;font-size:.875rem;color:var(--green-700);list-style:none;padding:.35rem 0}.lead-form__more summary::-webkit-details-marker{display:none}.lead-form__more summary:before{content:"+ "}.lead-form__more[open] summary:before{content:"− "}.lead-form__more-fields{display:grid;gap:.875rem;margin-top:.625rem}.lead-form-wrap{display:contents}.lead-form__success{max-width:540px;background:var(--white);border:1px solid var(--stone-200);border-radius:var(--radius);padding:1.375rem;box-shadow:var(--shadow);scroll-margin-top:calc(var(--header-h) + 24px);scroll-margin-bottom:calc(var(--callbar-h) + 16px)}.quote-anchor{scroll-margin-top:calc(var(--header-h) + 24px);scroll-margin-bottom:calc(var(--callbar-h) + 16px)}.lead-form__success h3{color:var(--green-900);margin-bottom:.5rem}.lead-form__success p{margin-bottom:.5rem}.lead-form__success p:last-child{margin-bottom:0}.lead-form__error{max-width:540px;margin-top:.75rem;padding:.85rem 1rem;background:#fdf2f0;border:1px solid #e8b4a8;border-radius:var(--radius);scroll-margin-top:calc(var(--header-h) + 24px);scroll-margin-bottom:calc(var(--callbar-h) + 16px)}.lead-form__error .form-note{color:var(--ink);margin:0}.prose{max-width:70ch;min-width:0}.prose h2{margin-top:2rem}.prose h3{margin-top:1.5rem}.prose ul{padding-left:1.15rem}.prose li{margin-bottom:.5rem}.prose table{display:block;overflow-x:auto;max-width:100%}.faq{border-top:1px solid var(--stone-200)}.faq details{border-bottom:1px solid var(--stone-200);padding:.5rem 0}.faq summary{cursor:pointer;font-weight:650;font-size:1rem;list-style:none;display:flex;justify-content:space-between;gap:1rem;padding:.7rem 0}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";color:var(--green-600);font-weight:700;flex:none}.faq details[open] summary:after{content:"−"}.faq details p{margin:.5rem 0 .75rem;color:var(--ink-soft);font-size:.9375rem}.crumbs{font-size:.8125rem;color:var(--ink-soft);padding-block:.875rem 0;display:flex;flex-wrap:wrap;align-items:center;gap:.15rem}.crumbs a{color:var(--ink-soft);padding:.2rem 0}.crumbs span{color:var(--stone-400);margin-inline:.35rem}.site-footer{background:var(--green-900);color:#ffffffd1;padding-block:2.5rem 1.5rem;font-size:.9375rem}.site-footer a{color:#ffffffd1;text-decoration:none;display:inline-block;padding:.15rem 0}.site-footer a:hover{color:var(--white);text-decoration:underline}.site-footer h3{color:var(--white);font-size:.8125rem;text-transform:uppercase;letter-spacing:.08em;margin-bottom:.75rem}.site-footer ul{list-style:none;padding:0;margin:0;display:grid;gap:.35rem}.site-footer__bottom{margin-top:2rem;padding-top:1.25rem;border-top:1px solid rgba(255,255,255,.15);font-size:.8125rem;color:#fff9}.media-block{background:linear-gradient(160deg,var(--green-600) 0%,var(--green-900) 100%);border-radius:var(--radius);aspect-ratio:4 / 3;object-fit:cover;max-width:100%;box-shadow:var(--shadow)}.gallery__item{margin:0}.gallery__img{width:100%;aspect-ratio:4 / 3;object-fit:cover;border-radius:var(--radius);box-shadow:var(--shadow)}.gallery__item figcaption{margin-top:.5rem;font-size:.875rem;font-weight:600;color:var(--ink-soft);text-align:center}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*{transition-duration:.01ms!important;animation-duration:.01ms!important}}.project-photo img{border-radius:var(--radius);box-shadow:var(--shadow)}.hero--homepage{background:linear-gradient(#0a0c0a99,#0a0c0a99),url(/images/projects/pool-deck-paver-patio-hero-16x9-1920.webp) center 30% / cover no-repeat;padding-block:clamp(1.5rem,4vw,3rem)}@media (max-width: 859px){.hero--homepage{background:linear-gradient(#0a0c0a9e,#0a0c0a9e),url(/images/projects/pool-deck-paver-patio-hero-480.webp) center top / cover no-repeat}}.hero--homepage .eyebrow{font-size:.9375rem}.hero--homepage h1{font-size:clamp(2rem,5vw,3rem);max-width:14ch}.hero--homepage p{font-size:clamp(1.0625rem,3.2vw,1.25rem);margin-bottom:.75em}.hero-split__grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(1.5rem,4vw,3rem);align-items:center}@media (max-width: 859px){.hero-split__grid{grid-template-columns:1fr}}.hero--homepage .card{color:var(--ink)}.two-up{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:1rem}.two-up__frame{position:relative;margin:0}.two-up__frame .project-photo img{aspect-ratio:4 / 3;object-fit:cover;width:100%}.two-up__label{position:absolute;top:.75rem;left:.75rem;background:#0a0c0ab8;color:var(--white);font-size:.75rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:.3rem .65rem;border-radius:999px}.two-up__caption{margin-top:.5rem;font-size:.875rem;font-weight:600;color:var(--ink-soft);text-align:center}.project-tile{margin:0}.project-tile .project-photo img{aspect-ratio:4 / 3;object-fit:cover;width:100%}.project-tile figcaption{margin-top:.5rem;font-size:.875rem;font-weight:600;color:var(--ink-soft)}.project-block{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1.5rem,4vw,3rem);align-items:start;padding-block:clamp(2rem,5vw,3.5rem);border-bottom:1px solid var(--stone-200)}.project-block:first-child{padding-top:0}.project-block:last-child{border-bottom:none}@media (max-width: 760px){.project-block{grid-template-columns:1fr;gap:1.25rem}}.project-block__title{color:var(--green-900);margin-bottom:.25rem}.project-block__location{color:var(--ink-soft);font-size:.875rem;font-weight:600;margin-bottom:.75rem}.project-block__gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:.6rem;margin-top:1rem}.project-block__gallery .project-photo img{aspect-ratio:4 / 3;object-fit:cover;width:100%}.crossfade,.project-block__photo .project-photo{display:block;position:relative;aspect-ratio:1 / 1;overflow:hidden;border-radius:var(--radius);box-shadow:var(--shadow)}.project-block__photo .project-photo img{width:100%;height:100%;object-fit:cover}.crossfade__img{position:absolute;inset:0}.crossfade__img img{width:100%;height:100%;object-fit:cover}.crossfade__img--before{animation:crossfadeBefore 10s ease-in-out infinite}.crossfade__img--after{animation:crossfadeAfter 10s ease-in-out infinite}@keyframes crossfadeBefore{0%,40%{opacity:1}50%,90%{opacity:0}to{opacity:1}}@keyframes crossfadeAfter{0%,40%{opacity:0}50%,90%{opacity:1}to{opacity:0}}.crossfade:hover .crossfade__img,.crossfade:focus-within .crossfade__img,.crossfade:hover .crossfade__label,.crossfade:focus-within .crossfade__label{animation-play-state:paused}@media (prefers-reduced-motion: reduce){.crossfade__img--before{display:none}.crossfade__img--after{opacity:1;animation:none}.crossfade__label--before{display:none}.crossfade__label--after{opacity:1;animation:none}}.crossfade__label{position:absolute;top:.6rem;left:.6rem;z-index:1;font-size:.7rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);background:#ffffffd9;padding:.2rem .6rem;border-radius:999px;pointer-events:none}.crossfade__label--before{animation:crossfadeBefore 10s ease-in-out infinite}.crossfade__label--after{animation:crossfadeAfter 10s ease-in-out infinite}.commercial-band{background:var(--green-900);color:var(--stone-100)}.commercial-band h2,.commercial-band h3{color:var(--white)}.commercial-band .lede{color:#ffffffd9}.commercial-band .two-up__caption{color:#ffffffbf}
