:root{
  --green:#1E3B2F;--green-dk:#14271F;--green-2:#2D5242;--sage:#C5D1BF;
  --oat:#ECE4D4;--oat-2:#E3D9C6;--paper:#F5F1E8;--ink:#1D221F;--muted:#535A55;
  --line:rgba(29,34,31,.14);--line-lt:rgba(236,228,212,.2);
  --serif:"Young Serif",Georgia,"Times New Roman",serif;
  --sans:"Hanken Grotesk",system-ui,-apple-system,"Segoe UI",sans-serif;
  --max:1480px;--side:320px;--pad:clamp(20px,4vw,64px);--hdr:80px;
}
[hidden]{display:none!important}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font:400 clamp(18px,1.35vw,20px)/1.65 var(--sans);overflow-x:clip;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%;height:auto}
a{color:inherit;transition:color .3s ease}
a:hover{color:var(--green-2)}
h1,h2,h3{margin:0;font-family:var(--serif);font-weight:400;letter-spacing:-.01em;text-wrap:balance}
h1{font-size:clamp(34px,4.1vw,60px);line-height:1.12}
h2{font-size:clamp(30px,2.9vw,42px);line-height:1.15}
h3{font-size:clamp(22px,1.8vw,26px);line-height:1.2}
p{margin:0 0 1em;text-wrap:pretty}
p:last-child{margin-bottom:0}
.wrap{max-width:calc(var(--max) - var(--side));margin:0 auto;padding:0 var(--pad)}
.block{padding:clamp(80px,9vw,144px) 0;scroll-margin-top:var(--hdr)}
.block.tint{background:var(--oat)}
.lede{color:var(--muted)}
.muted{color:var(--muted)}
.label{display:block;font:600 12.5px/1.3 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--ink);margin:0 0 10px}
.skip{position:absolute;left:-9999px;top:0}
.skip:focus{left:16px;top:16px;z-index:100;background:var(--paper);padding:10px 14px}

/* Links + buttons */
.link{display:inline-flex;align-items:center;gap:10px;font:600 13px/1.3 var(--sans);letter-spacing:.15em;text-transform:uppercase;text-decoration:none;color:var(--green)}
.link .arr{display:inline-block;flex:none;transition:transform .35s ease}
.link:hover{color:var(--green-2)}
.link:hover .arr{transform:translateX(5px)}
.on-dark .link{color:var(--oat)}
.on-dark .link:hover{color:#fff}
.on-dark a:not(.btn):hover{color:#fff}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;background:var(--green);color:var(--oat);font:600 13px/1.25 var(--sans);letter-spacing:.15em;text-transform:uppercase;text-decoration:none;padding:18px 30px;border:1px solid var(--green);border-radius:2px;cursor:pointer;white-space:nowrap;transition:background-color .35s ease,border-color .35s ease,color .35s ease}
.btn:hover{background:var(--green-dk);border-color:var(--green-dk);color:var(--oat)}
.on-dark .btn{background:var(--oat);border-color:var(--oat);color:var(--green-dk)}
.on-dark .btn:hover{background:#fff;border-color:#fff;color:var(--green-dk)}
@media (max-width:480px){.btn{white-space:normal;text-align:center}}
.phone-line{display:inline-flex;align-items:center;gap:12px;text-decoration:none}
.phone-line svg{flex:none}

/* Logo */
.logo{display:inline-flex;flex-direction:column;align-items:stretch;text-align:center;text-decoration:none;color:var(--oat);line-height:1;flex:none}
.logo:hover{color:var(--oat)}
.logo-name{font:400 27px/1 var(--serif);letter-spacing:.2em;text-transform:uppercase;padding-left:.2em}
.logo-rule{display:block;height:1px;background:currentColor;margin:9px 0 8px;opacity:.5}
.logo-sub{font:600 8.5px/1 var(--sans);letter-spacing:.32em;text-transform:uppercase;padding-left:.32em;white-space:nowrap}
@media (max-width:400px){.logo-name{font-size:22px}.logo-sub{font-size:7px;letter-spacing:.28em;padding-left:.28em}}

/* Header: top bar (default) */
.site-header{position:sticky;top:0;z-index:50;background:var(--green-dk);color:var(--oat)}
.hdr{display:flex;align-items:center;justify-content:space-between;gap:32px;height:var(--hdr);max-width:var(--max);margin:0 auto;padding:0 var(--pad)}
.nav{display:flex;align-items:center;gap:40px;flex:none}
.site-header:not(.ready) .nav{visibility:hidden}
.nav-links{display:flex;gap:32px;list-style:none;margin:0;padding:0}
.nav-links a{position:relative;display:flex;align-items:center;gap:10px;padding:8px 0;font:500 13.5px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;text-decoration:none;color:var(--oat);white-space:nowrap}
.nav-links a:hover{color:#fff}
.nav-links a::after{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;opacity:0;transition:opacity .35s ease}
.nav-links a.is-active::after{opacity:1}
.site-header.no-cta .nav-cta{display:none}
.site-header.collapsed .nav{display:none}
.side-foot{display:none}
.topbar{display:none}
.menu-toggle{display:none;position:relative;width:48px;height:48px;margin-right:-12px;background:none;border:0;cursor:pointer;color:var(--oat)}
.site-header.collapsed .menu-toggle{display:block}
.menu-toggle span{position:absolute;left:12px;right:12px;height:1.5px;background:currentColor;transition:transform .35s ease}
.menu-toggle span:first-child{transform:translateY(-4px)}
.menu-toggle span:last-child{transform:translateY(4px)}
.menu-open .menu-toggle span:first-child{transform:rotate(45deg)}
.menu-open .menu-toggle span:last-child{transform:rotate(-45deg)}
.mobile-menu{position:fixed;top:var(--hdr);left:0;right:0;bottom:0;background:var(--green-dk);color:var(--oat);overflow-y:auto;opacity:0;visibility:hidden;transition:opacity .35s ease,visibility .35s ease;border-top:1px solid var(--line-lt)}
.menu-open .mobile-menu{opacity:1;visibility:visible}
.mobile-menu .wrap{padding-top:32px;padding-bottom:48px}
.mobile-menu ul{list-style:none;margin:0 0 40px;padding:0}
.mobile-menu li{border-bottom:1px solid var(--line-lt)}
.mobile-menu ul a{display:flex;align-items:center;gap:14px;padding:18px 0;font:400 30px/1.15 var(--serif);text-decoration:none;color:var(--oat)}
.mobile-menu ul a.is-active::after{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
body.locked{position:fixed;left:0;right:0;width:100%;overflow:hidden}
body.locked .site-header{position:fixed;top:0;left:0;right:0}
@media (max-width:640px){:root{--hdr:72px}}

/* Header: sidebar on desktop */
@media (min-width:1100px){
  :root{--hdr:104px}
  .site-header{position:fixed;top:var(--hdr);left:0;bottom:0;width:var(--side)}
  .topbar{position:fixed;top:0;left:0;right:0;height:var(--hdr);z-index:2;display:flex;align-items:center;justify-content:space-between;gap:32px;padding:0 48px;background:var(--green-dk);border-bottom:1px solid var(--line-lt)}
  .topbar-info{display:flex;align-items:center;gap:14px 40px;flex-wrap:wrap;justify-content:flex-end;font-size:15px}
  .hdr>.logo{display:none}
  .hdr{flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:0;height:100%;padding:48px 48px 44px;overflow-y:auto}
  .site-header:not(.ready) .nav{visibility:visible}
  .nav{flex-direction:column;align-items:flex-start;margin-top:0}
  .nav-links{flex-direction:column;gap:4px}
  .nav-links a{font:400 23px/1.3 var(--serif);letter-spacing:0;text-transform:none;padding:7px 0}
  .nav-cta{display:none}
  .side-foot{display:grid;gap:22px;margin-top:auto;padding-top:48px;font-size:15px;line-height:1.55}
  .menu-toggle,.mobile-menu{display:none!important}
  .page{margin-left:var(--side);padding-top:var(--hdr)}
  .wrap{max-width:calc(var(--max) - var(--side))}
}
.status{display:flex;align-items:center;gap:10px;margin:0;font-weight:500}
.status .dot{width:8px;height:8px;border-radius:50%;background:#8FB98F;flex:none}
.status.closed .dot{background:transparent;box-shadow:inset 0 0 0 1.5px currentColor}

/* Media */
.media{position:relative;overflow:hidden;background:var(--oat-2)}
.tint .media{background:#D8CDB8}
.media img{width:100%;height:100%;object-fit:cover}
.r-45{aspect-ratio:4/5}.r-32{aspect-ratio:3/2}.r-219{aspect-ratio:21/9}
@media (max-width:700px){.r-219{aspect-ratio:3/2}}
.ph-label{position:absolute;inset:0;display:grid;place-items:center;padding:16px;font:600 12px/1.3 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);text-align:center;word-break:break-all}
img.lazy{opacity:0;transition:opacity .9s ease}
img.lazy.is-loaded{opacity:1}

/* Intro */
.intro{padding:clamp(56px,7vw,112px) 0 clamp(80px,9vw,144px);scroll-margin-top:var(--hdr)}
.intro h1{max-width:26ch}
.intro-img{margin-top:clamp(48px,5vw,80px)}
.r-169{aspect-ratio:16/9}
@media (max-width:640px){.intro-img .r-169{aspect-ratio:4/3}}
@media (min-width:641px) and (max-width:1099px){.intro h1{font-size:clamp(42px,5.4vw,52px)}}
.intro-grid{display:grid;grid-template-columns:minmax(0,8fr) minmax(0,4fr);gap:clamp(38px,4vw,64px);align-items:end;margin-top:clamp(48px,5vw,80px)}
.intro-aside{display:grid;gap:28px;padding-bottom:4px}
.intro-aside .status{color:var(--green)}
.intro-aside .status .dot{background:#3F7A50}
.intro-aside p{margin:0;color:var(--muted)}
.intro-actions{display:flex;flex-wrap:wrap;align-items:center;gap:20px 36px}
@media (max-width:900px){.intro-grid{grid-template-columns:minmax(0,1fr)}}
@media (max-width:640px){.intro-actions .link{display:none}}

/* Splits */
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(38px,6vw,104px);align-items:start}
.split.r57{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}
.split.r75{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}
.split h2+p,.split h2+.lede{margin-top:24px}
@media (max-width:1000px){.split,.split.r57,.split.r75{grid-template-columns:minmax(0,1fr);align-items:start}#about .split>.media{order:2}}

/* Services menu */
.menu{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(56px,5vw,80px) clamp(48px,6vw,104px);margin-top:clamp(64px,7vw,104px)}
.menu-group h3{margin-bottom:4px}
.menu-group>ul{list-style:none;margin:0;padding:0}
.menu-group>ul>li{padding:18px 0}
.menu-group>ul>li+li{border-top:1px solid var(--line)}
.menu-group>ul>li:last-child{padding-bottom:0}
.mrow{display:flex;align-items:baseline;justify-content:space-between;gap:16px;font-size:18px;font-weight:500}
.mrow .mp{font-variant-numeric:tabular-nums;white-space:nowrap}
.md{margin:6px 0 0;font-size:15.5px;color:var(--muted);max-width:44ch}
.md .t{white-space:nowrap}
@media (max-width:860px){.menu{grid-template-columns:minmax(0,1fr)}}
.small-print{margin-top:clamp(56px,6vw,88px);padding-top:28px;border-top:1px solid var(--line);font-size:14px;color:var(--muted)}
.small-print ul{margin:0;padding-left:1.1em;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 48px}
@media (max-width:860px){.small-print ul{grid-template-columns:minmax(0,1fr)}}

/* Details list */
.numbered{list-style:none;margin:40px 0 0;padding:0;counter-reset:n}
.numbered>li{display:grid;grid-template-columns:52px minmax(0,1fr);gap:0 8px;padding:26px 0;counter-increment:n}
.numbered>li+li{border-top:1px solid var(--line)}
.numbered>li:first-child{padding-top:0}
.numbered>li:last-child{padding-bottom:0}
.numbered>li::before{content:counter(n,decimal-leading-zero);font:400 18px/1.4 var(--serif);color:var(--green-2)}
.numbered>li p{margin:0;color:var(--muted);font-size:15.5px}

/* Find us */
.visit-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(38px,6vw,104px);align-items:start}
.details{display:grid;gap:32px}
.details>div:not(:first-child){font-size:15.5px}
.details .phone-line{font-size:15.5px}
.details a{text-decoration:none;overflow-wrap:anywhere}
.hours{display:grid;grid-template-columns:max-content max-content;column-gap:40px;row-gap:8px;margin:0}
.hours dt,.hours dd{margin:0}
@media (max-width:400px){.hours{grid-template-columns:minmax(0,1fr);row-gap:0}.hours dd{margin-bottom:10px}}
.map{width:100%;aspect-ratio:4/5;height:auto;border:0;display:block;filter:grayscale(.6) sepia(.12) contrast(.95) brightness(1.02);background:var(--oat-2)}
@media (max-width:1000px){.visit-grid{grid-template-columns:minmax(0,1fr);align-items:start}}
@media (max-width:1000px){.map{aspect-ratio:auto;height:420px}}
@media (max-width:640px){.map{height:340px}}
.getting{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 48px;margin:clamp(56px,6vw,88px) 0 0;padding:0}
.getting>li{padding-top:24px;border-top:1px solid var(--line)}
.getting>li p{margin:0;color:var(--muted);font-size:15.5px}
@media (max-width:900px){.getting{grid-template-columns:minmax(0,1fr);gap:28px}}

/* Footer */
.site-footer{background:var(--green-dk);color:var(--oat);padding:clamp(80px,9vw,128px) 0 36px;scroll-margin-top:var(--hdr)}
.site-footer a{text-decoration:none}
.site-footer a:hover{color:#fff}
.ft-contact{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:40px clamp(48px,6vw,112px);align-items:start}
.ft-contact h2{color:var(--oat)}
.ft-intro p{color:var(--oat);opacity:.88;margin-top:20px;max-width:420px}
.ft{display:grid;grid-template-columns:max-content max-content;justify-content:space-between;gap:40px clamp(64px,9vw,160px);align-items:start;margin-top:clamp(80px,9vw,128px);padding-top:clamp(56px,6vw,80px);border-top:1px solid var(--line-lt)}
.ft .label{color:var(--oat);margin-bottom:18px}
.ft>.logo{align-self:start;justify-self:start}
.ft .hours{font-size:15.5px}
.visit{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.visit li{display:flex;gap:14px;align-items:flex-start}
.visit svg{flex:none;margin-top:4px}
.visit a,.visit span{overflow-wrap:anywhere;min-width:0}
.ft-fine{margin-top:clamp(64px,7vw,96px);padding-top:28px;border-top:1px solid var(--line-lt);font-size:13.5px;opacity:.85}
.ft-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px 32px;margin-top:clamp(64px,7vw,96px);padding-top:28px;border-top:1px solid var(--line-lt);font-size:13.5px}
@media (max-width:1100px){.ft-contact{grid-template-columns:minmax(0,1fr)}}
@media (max-width:600px){.ft{grid-template-columns:minmax(0,1fr);justify-content:start}}

/* Form (on dark) */
.form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 24px}
.field{display:flex;flex-direction:column;gap:10px;min-width:0}
.field.full{grid-column:1/-1}
.field>label{font:600 12.5px/1.3 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--oat)}
.opt{font-weight:400;letter-spacing:.04em;text-transform:none;opacity:.8}
.input{width:100%;min-width:0;font:400 17px/1.4 var(--sans);color:var(--oat);background:rgba(236,228,212,.06);border:1px solid rgba(236,228,212,.32);border-radius:2px;padding:15px 16px;transition:border-color .3s ease;appearance:none;-webkit-appearance:none}
.input:focus{outline:none;border-color:var(--oat)}
textarea.input{min-height:160px;resize:vertical}
.input[aria-invalid="true"]{border-color:#E9A393}
.err{font-size:14px;color:#F0B4A5}
.err:empty{display:none}
.form-actions{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:16px 28px;margin-top:6px}
.form-note{font-size:14px;margin:0;opacity:.85}
.btn[disabled]{opacity:.7;cursor:progress}
@media (max-width:640px){.form{grid-template-columns:minmax(0,1fr)}}
.thanks{border-top:1px solid var(--oat);padding-top:36px}
.thanks h3{font-size:clamp(28px,2.6vw,36px);margin-bottom:22px;color:var(--oat)}
.thanks p{max-width:600px;color:var(--oat)}
.thanks-links{display:flex;flex-wrap:wrap;gap:20px 40px;margin-top:32px}
.thanks-links .link{text-transform:none;letter-spacing:.01em;font-size:16px}
.thanks:focus{outline:none}

/* Back to top */
.to-top{position:fixed;right:24px;bottom:24px;z-index:45;width:50px;height:50px;border-radius:50%;border:0;background:var(--green);color:var(--oat);display:grid;place-items:center;cursor:pointer;opacity:0;visibility:hidden;transform:translateY(6px);transition:opacity .4s ease,visibility .4s ease,transform .4s ease,background-color .3s ease}
.to-top.show{opacity:1;visibility:visible;transform:none}
.to-top:hover{background:var(--green-2)}
@media (max-width:640px){.to-top{right:16px;bottom:16px;width:46px;height:46px}}
