@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,500;0,600;0,700;1,500;1,600&display=swap');

:root {
  color-scheme: light dark;
  --paper: #f5f4ef;
  --surface: #fbfaf7;
  --ink: #222821;
  --muted: #6f756d;
  --line: #dcded5;
  --green: #49604b;
  --sage: #dce4d8;
  --deep: #28372b;
  --serif: 'Playfair Display', Georgia, serif;
  --sans: 'DM Sans', Arial, sans-serif;
  --wrap: 1160px;
}
@media (prefers-color-scheme: dark) {
  :root { --paper:#171b17; --surface:#20261f; --ink:#edf0e9; --muted:#a4ada1; --line:#3b443a; --green:#b5c9b4; --sage:#29372b; --deep:#dce8d9; }
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:90px; }
body { margin:0; background:var(--paper); color:var(--ink); font-family:var(--sans); font-size:15px; line-height:1.65; -webkit-font-smoothing:antialiased; }
a { color:inherit; }
.wrap { width:min(var(--wrap), calc(100% - 64px)); margin-inline:auto; }
.skip-link { position:absolute; left:14px; top:-60px; z-index:20; padding:9px 14px; background:var(--ink); color:var(--paper); }
.skip-link:focus { top:12px; }
.site-header { height:82px; display:flex; align-items:center; justify-content:space-between; padding:0 max(32px, calc((100vw - var(--wrap))/2)); position:relative; z-index:5; background:var(--paper); border-bottom:1px solid color-mix(in srgb,var(--line) 60%,transparent); }
.brand { display:inline-flex; align-items:center; gap:10px; text-decoration:none; font-weight:700; letter-spacing:-.045em; font-size:20px; }
.brand-mark { display:grid; place-items:center; width:32px; height:32px; border-radius:50%; background:var(--green); color:var(--paper); font:600 18px var(--serif); letter-spacing:-.04em; }
.brand-llc { color:var(--muted); font-weight:400; }
.site-nav { display:flex; align-items:center; gap:38px; font-size:13px; font-weight:500; }
.site-nav a,.footer-links a { text-decoration:none; transition:color .2s ease; }
.site-nav a:hover,.footer-links a:hover,.site-nav a.active { color:var(--green); }
.site-nav .nav-cta { border:1px solid var(--line); border-radius:3px; padding:10px 15px; color:var(--ink); }
.nav-cta span,.button span { margin-left:13px; font-size:16px; }
.menu-toggle { display:none; }
.hero { position:relative; min-height:660px; display:flex; align-items:center; overflow:hidden; background:var(--sage); }
.hero-photo { position:absolute; inset:0 0 0 34%; background-image:linear-gradient(90deg,var(--sage) 0%, color-mix(in srgb,var(--sage) 90%,transparent) 25%, transparent 67%),linear-gradient(0deg,color-mix(in srgb,var(--paper) 14%,transparent),transparent 40%),url('/images/home-interior.png'); background-size:cover; background-position:center 48%; opacity:.92; }
.hero-inner { position:relative; z-index:1; padding-block:76px 104px; }
.eyebrow { margin:0 0 22px; color:var(--green); font-size:10px; line-height:1.4; letter-spacing:.17em; text-transform:uppercase; font-weight:700; }
.eyebrow-dot { display:inline-block; width:7px; height:7px; margin-right:8px; border-radius:50%; background:#8caa7f; vertical-align:1px; }
h1,h2,h3,p { margin-top:0; }
h1,h2 { font-family:var(--serif); font-weight:500; letter-spacing:-.045em; line-height:1.13; }
.hero h1 { max-width:620px; margin-bottom:22px; font-size:clamp(56px,7.2vw,91px); }
h1 em,h2 em { font-weight:500; color:var(--green); }
.hero-copy { max-width:430px; color:#4d574f; font-size:15px; line-height:1.85; }
.hero-actions { display:flex; align-items:center; gap:26px; margin-top:31px; }
.button { display:inline-flex; justify-content:center; align-items:center; min-height:49px; padding:0 19px; border-radius:3px; text-decoration:none; font:600 12px var(--sans); transition:transform .2s,background .2s; }
.button:hover { transform:translateY(-2px); }
.button-dark { color:#f7f7f1; background:#28372b; border:0; }
.button-dark:hover { background:#3a4d3d; }
.text-link { color:var(--ink); font-size:12px; font-weight:600; text-decoration:none; }
.text-link span { margin-left:9px; color:var(--green); font-size:16px; }
.hero-note { position:absolute; bottom:45px; display:flex; gap:15px; align-items:center; color:#616c61; font-size:10px; line-height:1.7; }
.note-line { width:37px; height:1px; background:var(--green); }
.hero-index { position:absolute; right:32px; bottom:40px; display:flex; align-items:center; gap:10px; color:var(--muted); font-size:9px; letter-spacing:.12em; }
.hero-index span { width:30px; height:1px; background:var(--muted); }
.section-pad { padding-block:112px; }
.section-heading { display:flex; justify-content:space-between; align-items:end; gap:48px; margin-bottom:47px; }
.section-heading .eyebrow { margin-bottom:16px; }
h2 { margin-bottom:0; font-size:clamp(38px,5vw,58px); }
.section-intro { max-width:390px; margin:0 0 4px; color:var(--muted); font-size:13px; line-height:1.9; }
.service-grid { display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid var(--line); }
.service-card { position:relative; min-height:240px; padding:34px 34px 31px 0; border-bottom:1px solid var(--line); }
.service-card + .service-card { padding-left:34px; border-left:1px solid var(--line); }
.service-num { color:var(--muted); font-size:10px; letter-spacing:.12em; }
.service-icon { margin:22px 0 12px; color:var(--green); font:32px var(--serif); }
.service-card h3,.values-grid h3 { margin:0 0 8px; font:600 16px var(--sans); letter-spacing:-.02em; }
.service-card p,.values-grid p { max-width:290px; margin:0; color:var(--muted); font-size:12px; line-height:1.8; }
.arrow-link { position:absolute; right:22px; bottom:27px; color:var(--green); text-decoration:none; font-size:20px; }
.work-strip { min-height:485px; display:grid; grid-template-columns:1.05fr .95fr; background:var(--sage); }
.work-image { min-height:485px; background:url('/images/home-interior.png') center 56%/cover; }
.work-content { position:relative; display:flex; flex-direction:column; justify-content:center; align-items:flex-start; padding:70px clamp(40px,8vw,120px); }
.work-content .eyebrow { margin-bottom:20px; }
.work-content h2 { font-size:clamp(38px,4.3vw,58px); }
.work-content > p:not(.eyebrow) { max-width:310px; margin:22px 0 24px; color:var(--muted); font-size:13px; }
.work-caption { position:absolute; bottom:28px; right:32px; color:var(--muted); font-size:8px; letter-spacing:.14em; }
.contact-section { background:var(--surface); }
.contact-layout { display:grid; grid-template-columns:1fr .78fr; gap:clamp(50px,11vw,145px); }
.contact-copy .eyebrow { margin-bottom:19px; }
.contact-copy h2 { font-size:clamp(42px,5.4vw,68px); }
.contact-copy > p:not(.eyebrow) { max-width:380px; margin:20px 0 33px; color:var(--muted); font-size:13px; line-height:1.85; }
.contact-direct { display:flex; flex-direction:column; gap:3px; margin-bottom:5px; }
.contact-label { color:var(--muted); font-size:10px; letter-spacing:.1em; text-transform:uppercase; }
.phone-link { width:max-content; color:var(--ink); font:500 24px var(--serif); text-decoration:none; }
.email-link { color:var(--green); font-size:12px; text-decoration:none; }
.contact-form { display:flex; flex-direction:column; align-items:flex-start; }
.contact-form label { margin:0 0 6px; font-size:11px; font-weight:600; }
.field-optional { color:var(--muted); font-weight:400; }
.contact-method-hint { margin:-14px 0 20px; color:var(--muted); font-size:10px; }
.contact-form input,.contact-form textarea { width:100%; margin:0 0 20px; padding:12px 13px; color:var(--ink); border:1px solid var(--line); border-radius:2px; outline:none; background:var(--paper); font:12px var(--sans); resize:vertical; }
.contact-form input:focus,.contact-form textarea:focus { border-color:var(--green); box-shadow:0 0 0 2px color-mix(in srgb,var(--green) 18%,transparent); }
.contact-form input::placeholder,.contact-form textarea::placeholder { color:#9a9f96; }
.form-submit { cursor:pointer; }
.form-submit:disabled { opacity:.65; cursor:wait; }
.form-status { margin:11px 0 0; color:var(--muted); font-size:10px; }
.form-status.is-error { color:#b34c3b; }
.hp-field { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.site-footer { padding:30px 0; border-top:1px solid var(--line); }
.footer-inner { display:grid; grid-template-columns:1.3fr 1.4fr 1fr auto; gap:18px; align-items:center; }
.footer-brand { font-size:16px; }
.footer-brand .brand-mark { width:27px; height:27px; font-size:15px; }
.footer-inner > span,.footer-inner small { color:var(--muted); font-size:10px; }
.footer-links { display:flex; gap:18px; font-size:10px; }
.subpage { min-height:65vh; }
.page-hero { padding-block:104px 69px; }
.page-hero .eyebrow { margin-bottom:18px; }
.page-hero h1 { max-width:820px; margin-bottom:20px; font-size:clamp(48px,7vw,82px); }
.page-hero > p:last-child { max-width:570px; margin-bottom:0; color:var(--muted); font-size:14px; }
.gallery-section { padding-bottom:110px; }
.gallery-heading { display:flex; justify-content:space-between; align-items:center; padding:19px 0; border-top:1px solid var(--line); }
.gallery-heading h2 { font:600 14px var(--sans); letter-spacing:0; }
.gallery-count { color:var(--muted); font-size:10px; }
.gallery-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:19px; }
.gallery-empty { grid-column:1/-1; min-height:330px; display:flex; flex-direction:column; justify-content:center; align-items:center; text-align:center; padding:40px; background:var(--surface); border:1px solid var(--line); }
.empty-mark { display:grid; place-items:center; width:44px; height:44px; margin-bottom:16px; border-radius:50%; background:var(--sage); color:var(--green); font:22px var(--serif); }
.gallery-empty h3 { margin:0 0 7px; font:500 24px var(--serif); }
.gallery-empty p { max-width:350px; margin:0; color:var(--muted); font-size:12px; }
.gallery-item { margin:0; background:var(--surface); }
.gallery-item { cursor:zoom-in; overflow:hidden; }
.gallery-item img { display:block; width:100%; aspect-ratio:4/3; object-fit:cover; background:var(--sage); transition:transform .45s cubic-bezier(.2,.7,.2,1); }
.gallery-item:hover img,.gallery-item:focus-visible img { transform:scale(1.035); }
.gallery-item:focus-visible { outline:2px solid var(--green); outline-offset:3px; }
.gallery-item figcaption { display:flex; justify-content:space-between; padding:12px 13px; color:var(--muted); font-size:9px; letter-spacing:.1em; }
.lightbox { position:fixed; width:min(1100px,calc(100vw - 40px)); max-width:none; max-height:calc(100vh - 40px); padding:55px 58px 22px; overflow:visible; color:#f5f4ef; background:#171b17; border:1px solid #444b43; }
.lightbox::backdrop { background:rgba(12,15,12,.88); backdrop-filter:blur(5px); }
.lightbox figure { display:flex; flex-direction:column; align-items:center; justify-content:center; height:min(75vh,760px); margin:0; }
.lightbox img { max-width:100%; max-height:calc(100% - 30px); object-fit:contain; }
.lightbox figcaption { padding-top:12px; color:#c4cbbf; font-size:10px; letter-spacing:.08em; text-align:center; }
.lightbox-close,.lightbox-arrow { position:absolute; display:grid; place-items:center; border:1px solid #697166; border-radius:50%; color:#f5f4ef; background:#252c25; cursor:pointer; }
.lightbox-close { top:13px; right:13px; width:36px; height:36px; font-size:25px; line-height:1; }
.lightbox-arrow { top:50%; width:42px; height:42px; font-size:21px; transform:translateY(-50%); }
.lightbox-prev { left:9px; }
.lightbox-next { right:9px; }
.gallery-tip { margin:28px 0 0; text-align:center; color:var(--muted); font-size:12px; }
.gallery-tip a { color:var(--green); text-decoration:none; font-weight:600; }
.about-section { display:grid; grid-template-columns:.85fr 1fr; gap:clamp(50px,10vw,130px); padding-block:12px 105px; }
.about-card { align-self:start; display:flex; align-items:center; gap:22px; padding:32px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.about-monogram { display:grid; place-items:center; width:74px; height:74px; flex:0 0 74px; border-radius:50%; background:var(--sage); color:var(--green); font:500 24px var(--serif); }
.about-card .eyebrow { margin-bottom:8px; }
.about-card h2 { font-size:29px; }
.about-role { margin:5px 0 0; color:var(--muted); font-size:11px; }
.about-story { max-width:510px; }
.story-lead { font:500 25px/1.4 var(--serif); }
.about-story > p:not(.story-lead) { color:var(--muted); font-size:13px; line-height:1.9; }
.about-story .button { margin-top:8px; }
.about-values { padding-block:68px; background:var(--sage); }
.values-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:44px; }
.values-grid > div > span { display:block; margin-bottom:20px; color:var(--green); font-size:10px; letter-spacing:.13em; }
.values-grid h3 { font-size:14px; }
.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-color-scheme: dark) {
  .hero-photo { opacity:.53; }
  .hero-copy,.hero-note { color:#ccd4c8; }
  .button-dark { color:#1e271f; background:#c6d6c2; }
  .button-dark:hover { background:#d5e2d1; }
  .contact-form input::placeholder,.contact-form textarea::placeholder { color:#858d83; }
}
@media (max-width:800px) {
  .wrap { width:min(var(--wrap),calc(100% - 42px)); }
  .site-header { height:72px; padding-inline:21px; }
  .menu-toggle { display:flex; flex-direction:column; gap:5px; padding:10px; border:0; background:none; cursor:pointer; }
  .menu-toggle span { width:21px; height:1px; background:var(--ink); transition:transform .2s; }
  .menu-toggle[aria-expanded=true] span:first-child { transform:translateY(3px) rotate(45deg); }
  .menu-toggle[aria-expanded=true] span:last-child { transform:translateY(-3px) rotate(-45deg); }
  .site-nav { position:absolute; top:71px; left:0; right:0; display:none; flex-direction:column; align-items:stretch; gap:0; padding:8px 21px 20px; background:var(--paper); border-bottom:1px solid var(--line); }
  .site-nav.is-open { display:flex; }
  .site-nav a { padding:12px 0; }
  .site-nav .nav-cta { margin-top:5px; padding:10px 12px; }
  .hero { min-height:650px; align-items:flex-start; }
  .hero-photo { inset:0; background-image:linear-gradient(90deg,var(--sage) 0%,color-mix(in srgb,var(--sage) 88%,transparent) 60%,color-mix(in srgb,var(--sage) 35%,transparent)),linear-gradient(0deg,var(--sage),transparent 55%),url('/images/home-interior.png'); background-position:center; }
  .hero-inner { padding-block:88px 140px; }
  .hero h1 { font-size:clamp(55px,12vw,82px); }
  .hero-index { display:none; }
  .hero-note { bottom:35px; }
  .section-pad { padding-block:78px; }
  .section-heading { display:block; margin-bottom:30px; }
  .section-intro { max-width:550px; margin-top:20px; }
  .service-grid { grid-template-columns:1fr; }
  .service-card,.service-card + .service-card { min-height:0; padding:23px 45px 24px 0; border-left:0; }
  .service-icon { margin:14px 0 7px; }
  .arrow-link { right:8px; bottom:30px; }
  .work-strip { grid-template-columns:1fr; }
  .work-image { min-height:340px; }
  .work-content { min-height:370px; padding:55px 30px 70px; }
  .work-caption { bottom:21px; }
  .contact-layout { grid-template-columns:1fr; gap:40px; }
  .contact-form { max-width:560px; }
  .footer-inner { grid-template-columns:1fr 1fr; }
  .footer-inner > span { order:3; }
  .footer-links { justify-content:flex-end; }
  .footer-inner small { order:4; text-align:right; }
  .page-hero { padding-block:76px 48px; }
  .gallery-grid { grid-template-columns:repeat(2,1fr); gap:12px; }
  .about-section { grid-template-columns:1fr; gap:35px; padding-bottom:75px; }
  .about-card { max-width:500px; }
  .values-grid { gap:24px; }
}
@media (max-width:520px) {
  .wrap { width:calc(100% - 38px); }
  .brand { font-size:18px; }
  .hero { min-height:620px; }
  .hero-inner { padding-block:72px 135px; }
  .hero h1 { font-size:57px; }
  .hero-copy { max-width:340px; font-size:14px; }
  .hero-actions { align-items:flex-start; flex-direction:column; gap:17px; }
  .hero-note { bottom:27px; }
  .section-heading h2 { font-size:42px; }
  .work-image { min-height:270px; }
  .contact-copy h2 { font-size:48px; }
  .footer-inner { grid-template-columns:1fr; gap:12px; }
  .footer-links { justify-content:flex-start; }
  .footer-inner > span,.footer-inner small { text-align:left; }
  .footer-inner small { order:5; }
  .gallery-grid { grid-template-columns:1fr; }
  .lightbox { width:calc(100vw - 16px); padding:55px 39px 18px; }
  .lightbox-arrow { width:34px; height:34px; }
  .gallery-empty { min-height:290px; padding:28px; }
  .values-grid { grid-template-columns:1fr; gap:30px; }
  .values-grid > div > span { margin-bottom:9px; }
}
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto !important; transition:none !important; } }
