@font-face { font-family: Fraunces; src: url('/fonts/fraunces-latin.woff2?v=e75e106b9d') format('woff2'); font-weight: 100 900; font-display: swap; }
@font-face { font-family: Inter; src: url('/fonts/inter-latin.woff2?v=68f645c6b6') format('woff2'); font-weight: 400; font-display: swap; }
:root { --green:#23392F; --walnut:#3A2E26; --oak:#B9783F; --paper:#F6F2EA; --sand:#EFE8DC; --ink:#1F1C19; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:110px; }
body { margin:0; min-height:100vh; min-height:100svh; display:flex; flex-direction:column; background:var(--paper); color:var(--ink); font-family:Inter,sans-serif; font-size:16px; line-height:1.75; }
body > main { flex:1 0 auto; } body > footer { flex-shrink:0; }
a { color:inherit; text-decoration:none; } button,input,textarea { font:inherit; } button,a,input,textarea { -webkit-tap-highlight-color:transparent; }
button,a { touch-action:manipulation; }
p { margin:0 0 1.5rem; max-width:68ch; text-wrap:pretty; }
h1,h2,h3 { font-family:Fraunces,Georgia,serif; font-weight:500; line-height:1.12; letter-spacing:-.035em; text-wrap:balance; color:var(--walnut); margin:0 0 24px; }
h1 { font-size:clamp(2.6rem,5.3vw,5.1rem); max-width:16ch; }
h2 { font-size:clamp(2rem,3.3vw,3.25rem); max-width:22ch; }
h3 { font-size:clamp(1.45rem,2vw,1.8rem); max-width:24ch; }
picture { display:contents; } picture > source { display:none; } img { display:block; width:100%; height:auto; }
.container { width:calc(100% - 96px); max-width:1280px; margin:0 auto; }
.section { padding:108px 0; }
.site-header { position:fixed; top:0; left:0; width:100%; z-index:100; color:var(--paper); transition:background .25s,box-shadow .25s; }
.site-header.scrolled,.site-header.menu-open { background:var(--green); box-shadow:0 3px 18px #00000012; }
.header-inner { width:calc(100% - 96px); max-width:1360px; margin:auto; height:100px; display:flex; align-items:center; gap:40px; position:relative; z-index:102; }
.wordmark { font-family:Fraunces,Georgia,serif; font-weight:600; font-size:clamp(1.3rem,2.2vw,1.9rem); letter-spacing:-.01em; white-space:nowrap; display:inline-flex; align-items:center; min-height:48px; flex-shrink:0; position:relative; }
.wordmark::after { content:''; position:absolute; width:26px; height:2px; background:var(--oak); right:0; bottom:7px; }
.desktop-nav { display:flex; gap:30px; margin-left:auto; }
.desktop-nav a { display:inline-flex; align-items:center; min-height:44px; position:relative; font-size:14px; }
.desktop-nav a::after { content:''; position:absolute; left:0; right:0; bottom:6px; height:1px; background:var(--oak); transform:scaleX(0); transform-origin:left; transition:transform .25s; }
.desktop-nav a.active::after,.desktop-nav a:hover::after { transform:scaleX(1); }
.button { display:inline-flex; align-items:center; justify-content:center; padding:14px 26px; min-height:52px; background:var(--green); color:#fff; font-size:14px; font-weight:500; border:1px solid var(--green); cursor:pointer; transition:background .2s,border-color .2s; white-space:nowrap; }
.button:hover { background:#17291f; border-color:#17291f; }
.header-cta { background:var(--paper); color:var(--green); border-color:var(--paper); }
.header-cta:hover,.button-light:hover { background:#e2d6c4; border-color:#e2d6c4; }
.button-light { background:var(--paper); color:var(--walnut); border-color:var(--paper); }
.button-outline { border-color:#ffffff80; background:transparent; }
.button-outline:hover { border-color:#fff; background:#ffffff12; }
.menu-toggle { display:none; width:48px; height:48px; background:none; border:1px solid #ffffff60; position:relative; color:inherit; flex-shrink:0; cursor:pointer; }
.menu-toggle span { position:absolute; width:21px; height:1px; background:currentColor; left:12px; top:19px; transition:transform .25s; }
.menu-toggle span+span { top:26px; }.menu-open .menu-toggle span { transform:translateY(3.5px) rotate(45deg); }.menu-open .menu-toggle span+span { transform:translateY(-3.5px) rotate(-45deg); }
.mobile-menu { display:none; }
@media(min-width:1024px) { .menu-toggle,.mobile-menu { display:none!important; } .desktop-nav a { min-width:0; } }
.hero { position:relative; overflow:hidden; color:#fff; background:var(--walnut); display:flex; align-items:flex-end; }
.hero-home { height:88vh; min-height:650px; max-height:1050px; }
.hero-image { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; animation:hero-settle 1.4s ease-out both; }
.hero-shade { position:absolute; inset:0; background:#171b15; opacity:.44; }
.hero-content { position:relative; padding-top:150px; padding-bottom:68px; }
.hero h1 { color:#fff; margin-bottom:24px; }
.eyebrow { font-size:12px; letter-spacing:.15em; text-transform:uppercase; margin-bottom:22px; color:#ead2b4; }
.hero-subhead { font-size:16px; line-height:1.8; max-width:50ch; margin-bottom:28px; }
.button-row { display:flex; gap:12px; }
.hero-inner { height:55vh; min-height:440px; }
.hero-contact { width:100%; }
.hero-inner .hero-content { padding-bottom:46px; }.hero-inner h1 { max-width:23ch; }.hero-inner .hero-subhead { margin:0; }
.intro-grid { display:grid; grid-template-columns:1fr 1fr; gap:96px; align-items:center; }
.intro-copy { max-width:520px; }.intro-copy h2 { max-width:15ch; }.intro-copy p { color:#514b43; }
.intro-frame { width:100%; max-width:512px; justify-self:end; }.intro-image { width:100%; aspect-ratio:4/3; object-fit:cover; }
.text-link { color:#855028; display:inline-flex; align-items:center; min-height:44px; border-bottom:1px solid var(--oak); font-size:14px; }
.gallery-section { background:var(--sand); }.section-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:40px; margin-bottom:38px; }.section-heading h2 { margin:0; }.section-heading p { max-width:36ch; margin:0; color:#63594d; font-size:14px; }
.gallery { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }.gallery-frame { aspect-ratio:1; overflow:hidden; }.gallery-frame img { width:100%; height:100%; object-fit:cover; transition:transform .5s; }.gallery-frame:hover img { transform:scale(1.03); }
.process h2 { margin-bottom:56px; }.steps { display:grid; grid-template-columns:repeat(3,1fr); gap:52px; }.step-top { position:relative; display:flex; align-items:center; gap:16px; margin-bottom:24px; border-bottom:1px solid #b9783f77; padding-bottom:24px; }.step-number { color:#855028; font-family:Fraunces,serif; font-size:24px; }.step svg { width:28px; height:28px; stroke:var(--walnut); stroke-width:1.2; fill:none; margin-left:auto; }.step h3 { margin-bottom:16px; }.step p { color:#63594d; font-size:15px; margin:0; }
.cta-band { position:relative; padding:84px 0; background:var(--walnut); color:white; overflow:hidden; }.cta-content { position:relative; display:flex; align-items:center; justify-content:space-between; gap:64px; }.cta-content h2 { color:white; }.cta-content p { max-width:55ch; margin:0; color:#e1d8ca; }.cta-image { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }.cta-shade { position:absolute; inset:0; background:#3a2e26d9; }
.site-footer { background:var(--green); color:var(--paper); padding:64px 0 26px; }.footer-top { display:grid; grid-template-columns:1.7fr .7fr 1fr; gap:80px; padding-bottom:52px; }.site-footer .wordmark { font-size:28px; }.site-footer p { margin:20px 0 0; color:#c8cfc5; font-size:13px; max-width:38ch; }.site-footer nav { display:flex; flex-direction:column; align-items:flex-start; }.site-footer nav a,.footer-enquiry { min-height:44px; display:inline-flex; align-items:center; font-size:14px; }.footer-enquiry { justify-self:end; align-self:start; border-bottom:1px solid var(--oak); }.footer-bottom { border-top:1px solid #ffffff24; padding-top:24px; color:#bac6bb; font-size:12px; }
.about-grid { display:grid; grid-template-columns:1fr 1fr; gap:100px; }.about-grid h2 { max-width:16ch; align-self:start; }.about-grid p { color:#514b43; }
.contact-grid { display:grid; grid-template-columns:7fr 5fr; gap:72px; align-items:start; }.contact-form h2 { margin-bottom:36px; max-width:18ch; }.fields { display:grid; grid-template-columns:1fr 1fr; gap:24px; }.field { display:flex; flex-direction:column; gap:8px; }.field.full { grid-column:1/-1; }label { font-size:14px; }input,textarea { width:100%; border:1px solid #c5bcaf; background:transparent; padding:12px 14px; border-radius:0; color:var(--ink); }input { min-height:50px; }textarea { min-height:150px; resize:vertical; }.helper,.under-button { font-size:12px; color:#6d6459; margin:0; }.form-submit { margin-top:30px; }.under-button { margin-top:10px; }.contact-details { background:var(--sand); padding:36px; }.demo-note { border-bottom:1px solid #cbbca6; padding-bottom:28px; margin-bottom:32px; font-size:13px; color:#63543f; }.contact-details h2 { font-size:clamp(1.7rem,2.4vw,2.25rem); max-width:17ch; }.contact-details p:last-child { margin-bottom:0; font-size:15px; }.mobile-demo { display:none; }.form-status { margin-top:20px; padding:20px; background:var(--sand); border-left:2px solid var(--oak); }.not-found { padding:180px 0 100px; }.not-found-header .site-header { background:var(--green); }
:focus-visible { outline:2px solid var(--oak); outline-offset:5px; }:focus:not(:focus-visible) { outline:none; }html[data-kendry-input="pointer"] :focus-visible { outline:none; }
.skip-link { position:fixed; top:-80px; left:16px; z-index:200; background:var(--paper); color:var(--ink); padding:12px 20px; }.skip-link:focus { top:8px; }
.reveal { opacity:1; transform:none; }.js-reveal .reveal { opacity:0; transform:translateY(16px); transition:opacity .5s ease-out,transform .5s ease-out; transition-delay:var(--delay,0ms); }.js-reveal .reveal.visible { opacity:1; transform:translateY(0); }
@keyframes hero-settle { from { transform:scale(1.06); } to { transform:scale(1); } }
@view-transition { navigation:auto; }::view-transition-old(root),::view-transition-new(root) { animation-duration:200ms; }.site-header { view-transition-name:header; }.header-inner .wordmark { view-transition-name:wordmark; }
@media(max-width:1100px) { .header-inner { gap:26px; }.desktop-nav { gap:22px; }.intro-grid { gap:48px; }.footer-top { gap:40px; }.contact-grid { gap:40px; } }
@media(max-width:1023px) { .header-inner { height:84px; }.desktop-nav,.header-cta { display:none; }.menu-toggle { display:block; margin-left:auto; }.mobile-menu { display:flex; flex-direction:column; position:fixed; inset:83px 0 0; background:var(--green); padding:28px 48px 36px; overflow-y:auto; transform:translateY(-120%); visibility:hidden; transition:transform .35s,visibility .35s; z-index:101; }.menu-open .mobile-menu { transform:translateY(0); visibility:visible; }.mobile-menu nav { display:flex; flex-direction:column; }.mobile-menu nav a { font:500 2rem/1.2 Fraunces,serif; min-height:76px; display:flex; align-items:center; border-bottom:1px solid #b9783f66; }.mobile-bottom { padding-top:36px; margin-top:auto; }.mobile-bottom .button { width:100%; }.mobile-bottom p { font-size:13px; color:#c8cfc5; margin:24px 0 0; }.hero-home { min-height:650px; }.gallery { grid-template-columns:repeat(2,1fr); }.section { padding:80px 0; }.section-heading { display:block; }.section-heading p { margin-top:20px; max-width:none; }.steps { gap:28px; }.cta-content { gap:36px; }.footer-top { grid-template-columns:1.5fr .6fr 1fr; gap:28px; }.contact-grid { gap:32px; }.contact-details { padding:26px; }.fields { grid-template-columns:1fr; }.about-grid { gap:48px; } }
@media(max-width:600px) { .container,.header-inner { width:calc(100% - 40px); }.header-inner { height:80px; }.wordmark { font-size:22px; }.mobile-menu { top:79px; padding:24px 20px 32px; }.hero-home { height:70svh; min-height:570px; max-height:none; }.hero-content { padding-top:120px; padding-bottom:38px; }.hero h1 { font-size:clamp(2.6rem,10.7vw,3.5rem); max-width:13ch; }.hero-subhead { font-size:14px; line-height:1.7; margin-bottom:24px; }.eyebrow { font-size:10px; margin-bottom:18px; }.button { padding:13px 19px; font-size:12px; min-height:49px; }.button-row { gap:10px; }.section { padding:64px 0; }.intro-grid { grid-template-columns:1fr; gap:36px; }.intro-copy h2 { max-width:17ch; }.intro-frame { justify-self:start; }.intro-copy p { font-size:15px; }.gallery { gap:8px; }.section-heading { margin-bottom:28px; }.section-heading h2 { max-width:15ch; }.section-heading p { font-size:13px; max-width:30ch; }.steps { grid-template-columns:1fr; gap:34px; }.process h2 { margin-bottom:36px; }.step-top { padding-bottom:14px; margin-bottom:18px; }.step { max-width:none; }.step p { max-width:38ch; }.cta-band { padding:64px 0; }.cta-content { display:block; }.cta-content h2 { max-width:15ch; }.cta-content p { font-size:15px; }.cta-content .button { margin-top:28px; }.site-footer { padding-top:44px; }.footer-top { grid-template-columns:1fr 1fr; gap:28px; padding-bottom:32px; }.footer-top > div { grid-column:1/-1; }.site-footer .wordmark { font-size:26px; }.footer-enquiry { justify-self:end; }.hero-inner { height:45svh; min-height:380px; }.hero-inner h1 { font-size:clamp(2.4rem,10.2vw,3rem); max-width:15ch; }.hero-inner .hero-content { padding-bottom:32px; }.about-grid { grid-template-columns:1fr; gap:16px; }.about-grid h2 { position:static; max-width:18ch; }.about-grid p { font-size:15px; }.contact-grid { display:flex; flex-direction:column; gap:36px; }.contact-form { width:100%; }.contact-details { width:100%; padding:28px; }.contact-details .demo-note { display:none; }.mobile-demo { display:block; font-size:13px; padding:20px; background:var(--sand); margin-bottom:28px; }.contact-form h2 { max-width:17ch; }.fields { gap:20px; }.not-found { padding:145px 0 70px; } }
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; }*,*::before,*::after { animation:none!important; transition:none!important; }.js-reveal .reveal { opacity:1; transform:none; } }
