:root{
  --ground:#FAF8F3; --paper:#FFFFFF; --sand:#F1ECE1; --khaki:#D6C9A8; --khaki-2:#E6DDC8;
  --olive:#3E4526; --olive-2:#566036; --olive-deep:#23281A; --sage:#7D8663;
  --ink:#1D2017; --ink-soft:#5A5E4D; --line:#E2DBCB; --brass:#9A7E45;
  --on-olive:#F7F4EC; --on-olive-soft:#C9C6B3; --ok:#3F6E3A; --warn:#8A6A26; --err:#A3321F;
  --display:"DM Serif Display", "Iowan Old Style", Georgia, serif;
  --body:"Jost", "Avenir Next", "Segoe UI", system-ui, sans-serif;
  --r:6px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    color-scheme:dark;
    --ground:#15170F; --paper:#1C1F15; --sand:#22261A; --khaki:#5A5238; --khaki-2:#2C3021;
    --olive:#B7C08E; --olive-2:#C9D1A3; --olive-deep:#0F110A; --sage:#98A07C;
    --ink:#EFECE2; --ink-soft:#B2B09E; --line:#34382A; --brass:#CDB27A;
    --on-olive:#F7F4EC; --on-olive-soft:#C9C6B3; --ok:#9CCB8A; --warn:#D9B46A; --err:#F08A76;
  }
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --ground:#15170F; --paper:#1C1F15; --sand:#22261A; --khaki:#5A5238; --khaki-2:#2C3021;
  --olive:#B7C08E; --olive-2:#C9D1A3; --olive-deep:#0F110A; --sage:#98A07C;
  --ink:#EFECE2; --ink-soft:#B2B09E; --line:#34382A; --brass:#CDB27A;
  --on-olive:#F7F4EC; --on-olive-soft:#C9C6B3; --ok:#9CCB8A; --warn:#D9B46A; --err:#F08A76;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
html,body{margin:0}
body{background:var(--ground);color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.65;font-weight:400;-webkit-font-smoothing:antialiased}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}
img{max-width:100%}
a{color:inherit}
p{margin:0}
h1,h2,h3{font-family:var(--display);font-weight:400;line-height:1.08;margin:0;text-wrap:balance;letter-spacing:-.005em}
h1{font-size:clamp(2.6rem,5.6vw,4.6rem)}
h2{font-size:clamp(2rem,3.8vw,3rem)}
h3{font-size:1.5rem}
.wrap{max-width:1180px;margin-inline:auto;padding-inline:24px}
@media (max-width:520px){.wrap{padding-inline:18px}}
section{padding-block:96px}
@media (max-width:700px){section{padding-block:64px}}
.eyebrow{font-family:var(--body);font-size:.74rem;font-weight:500;letter-spacing:.24em;text-transform:uppercase;color:var(--brass)}
.lede{color:var(--ink-soft);max-width:58ch;font-size:1.08rem}
.sec-head{display:grid;gap:14px;margin-bottom:48px;max-width:720px}
.sec-head.center{margin-inline:auto;text-align:center;justify-items:center}
.rule{width:56px;height:1px;background:var(--brass)}
:focus-visible{outline:2px solid var(--brass);outline-offset:3px}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;font:500 .82rem/1 var(--body);letter-spacing:.16em;text-transform:uppercase;padding:17px 26px;border-radius:2px;border:1px solid transparent;cursor:pointer;text-decoration:none;transition:background .2s,color .2s,border-color .2s}
.btn-primary{background:var(--olive);color:var(--on-olive);border-color:var(--olive)}
.btn-primary:hover{background:var(--olive-2);border-color:var(--olive-2)}
.btn-line{background:transparent;color:var(--ink);border-color:var(--ink)}
.btn-line:hover{background:var(--ink);color:var(--ground)}
.btn-light{background:var(--khaki);color:#1D2017;border-color:var(--khaki)}
.btn-light:hover{background:#E6DDC8}
.btn-ghost-light{background:transparent;color:var(--on-olive);border-color:rgba(247,244,236,.55)}
.btn-ghost-light:hover{background:var(--on-olive);color:#1D2017}
.textlink{font-size:.8rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;text-decoration:none;color:var(--olive);display:inline-flex;gap:8px;align-items:center;border-bottom:1px solid currentColor;padding-bottom:4px}

/* utility bar + header */
.utility{background:var(--olive-deep);color:var(--on-olive-soft);font-size:.8rem;letter-spacing:.06em}
.utility .wrap{display:flex;justify-content:space-between;gap:16px;padding-block:9px}
.utility a{color:var(--on-olive);text-decoration:none;font-weight:500}
@media (max-width:620px){.utility .hide-sm{display:none}.utility .wrap{justify-content:center}}
header.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:color-mix(in srgb,var(--ground) 92%,transparent);backdrop-filter:saturate(1.2) blur(12px);border-bottom:1px solid var(--line)}
header.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-block:14px}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink)}
.brand .mark{width:46px;height:46px;flex:none;object-fit:contain}
.brand b{display:block;font-family:var(--display);font-weight:400;font-size:1.45rem;line-height:1}
.brand small{display:block;font-size:.62rem;letter-spacing:.3em;text-transform:uppercase;color:var(--ink-soft);margin-top:4px}
nav.links{display:flex;align-items:center;gap:28px}
nav.links > a{font-size:.78rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;text-decoration:none;color:var(--ink-soft)}
nav.links > a:hover,nav.links > a[aria-current]{color:var(--ink)}
nav.links > a[aria-current]{box-shadow:inset 0 -1px 0 var(--brass)}
nav.links .btn{padding:13px 18px;color:var(--on-olive)}
.mnav{display:none;position:relative}
.mnav summary{list-style:none;cursor:pointer;font-size:.78rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;padding:11px 16px;border:1px solid var(--ink);border-radius:2px}
.mnav summary::-webkit-details-marker{display:none}
.mnav .menu{position:absolute;right:0;top:calc(100% + 10px);background:var(--paper);border:1px solid var(--line);padding:8px;display:grid;min-width:260px;box-shadow:0 24px 48px -24px rgba(29,32,23,.35)}
.mnav .menu a{padding:12px 14px;text-decoration:none;font-weight:500}
.mnav .menu a:hover{background:var(--sand)}
@media (max-width:1020px){nav.links > a{display:none}.mnav{display:block}}
@media (max-width:560px){nav.links .btn{display:none}}

/* hero */
.hero{padding-block:72px 88px;background:var(--ground)}
.hero .wrap{display:grid;grid-template-columns:1.08fr .92fr;gap:64px;align-items:center}
.hero h1 em{font-style:italic;color:var(--olive)}
.hero .lede{margin-top:24px}
.ctas{display:flex;flex-wrap:wrap;gap:12px;margin-top:34px}
.facts{display:grid;grid-template-columns:repeat(3,auto);justify-content:start;margin-top:44px;border-top:1px solid var(--line);padding-top:22px}
.facts div{padding-inline:0 22px;margin-right:22px;border-right:1px solid var(--line)}
.facts div:last-child{border-right:0;margin-right:0;padding-right:0}
@media (max-width:560px){.facts{grid-template-columns:1fr;gap:14px}.facts div{border-right:0;margin:0;padding:0}}
.facts b{display:block;font-family:var(--display);font-weight:400;font-size:1.25rem}
.facts span{display:block;font-size:.85rem;line-height:1.4;color:var(--ink-soft);margin-top:4px}
.arch{position:relative;background:#FCFAF4;border:1px solid #E2D8C1;border-radius:999px 999px var(--r) var(--r);aspect-ratio:4/5;max-width:470px;width:100%;justify-self:center;display:grid;place-items:center;padding:12% 10% 8%;overflow:hidden}
.hero .arch{padding:10% 12% 26%}
.arch::before{content:"";position:absolute;inset:14px;border:1px solid var(--brass);border-radius:999px 999px 2px 2px;opacity:.55}
.arch img{position:relative;width:100%;height:auto;filter:drop-shadow(0 16px 22px rgba(35,40,26,.18))}
.arch .badge{position:absolute;left:50%;transform:translateX(-50%);white-space:nowrap;bottom:30px;text-align:center;background:var(--olive-deep);color:var(--on-olive);padding:14px 20px;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase}
.arch .badge b{display:block;font-family:var(--display);font-size:1.35rem;letter-spacing:0;text-transform:none;font-weight:400}
@media (max-width:900px){.hero .wrap{grid-template-columns:1fr;gap:48px}.arch{max-width:380px}}

/* services */
.svc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--line)}
.svc{padding:40px 36px 40px 0;display:grid;gap:14px;align-content:start;border-right:1px solid var(--line)}
.svc + .svc{padding-left:36px}
.svc:last-child{border-right:0;padding-right:0}
.svc .ico{width:56px;height:56px;color:var(--olive)}
.svc h3 a{text-decoration:none}
.svc p{color:var(--ink-soft)}
.svc ul{margin:0;padding:0;list-style:none;display:grid;gap:6px;font-size:.95rem;color:var(--ink-soft)}
.svc li::before{content:"—";color:var(--brass);margin-right:10px}
.svc .textlink{justify-self:start;margin-top:8px}
@media (max-width:900px){.svc-grid{grid-template-columns:1fr}.svc,.svc + .svc{padding:32px 0;border-right:0;border-bottom:1px solid var(--line)}}

/* standard band (dark) */
.band-dark{background:var(--olive-deep);color:var(--on-olive)}
.band-dark .eyebrow{color:var(--khaki)}
.band-dark .lede{color:var(--on-olive-soft)}
.rooms{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border-top:1px solid rgba(247,244,236,.18)}
.rooms > div{padding:30px 26px 10px 0}
.rooms > div + div{padding-left:26px;border-left:1px solid rgba(247,244,236,.18)}
.rooms h3{font-size:1.35rem;margin-bottom:14px}
.rooms ul{list-style:none;margin:0;padding:0;display:grid;gap:9px;color:var(--on-olive-soft);font-size:.95rem}
.rooms li{display:grid;grid-template-columns:18px 1fr;gap:8px}
.rooms li::before{content:"✓";color:var(--khaki)}
@media (max-width:900px){.rooms{grid-template-columns:1fr 1fr}.rooms > div:nth-child(3){padding-left:0;border-left:0}}
@media (max-width:560px){.rooms{grid-template-columns:1fr}.rooms > div,.rooms > div + div{padding:24px 0 6px;border-left:0}}

/* calculator */
#estimate{background:var(--sand)}
.calc{display:grid;grid-template-columns:1.3fr .7fr;gap:28px;align-items:start}
.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:32px;display:grid;gap:26px}
.field{display:grid;gap:10px}
.field > label,.legend{font-size:.74rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft)}
.seg{display:flex;flex-wrap:wrap;gap:8px}
.seg input{position:absolute;opacity:0;pointer-events:none}
.seg label{padding:11px 18px;border:1px solid var(--line);border-radius:2px;cursor:pointer;font-size:.95rem;background:var(--paper);transition:border-color .15s}
.seg label:hover{border-color:var(--ink-soft)}
.seg input:checked + label{background:var(--olive);border-color:var(--olive);color:var(--on-olive)}
.seg input:focus-visible + label{outline:2px solid var(--brass);outline-offset:2px}
#moveOpt{display:contents}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media (max-width:560px){.row2{grid-template-columns:1fr}}
input[type=number],input[type=text],input[type=email],input[type=tel],input[type=date],select,textarea{width:100%;font:400 1rem var(--body);padding:13px 14px;border-radius:2px;border:1px solid var(--line);background:var(--paper);color:var(--ink)}
input:focus,select:focus,textarea:focus{border-color:var(--olive);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--olive) 18%,transparent)}
textarea{min-height:100px;resize:vertical}
.stepper{display:flex;align-items:center;border:1px solid var(--line);border-radius:2px;background:var(--paper)}
.stepper button{width:48px;height:48px;border:0;background:transparent;color:var(--ink);font-size:1.25rem;cursor:pointer}
.stepper button:hover{background:var(--sand)}
.stepper output{flex:1;text-align:center;font-family:var(--display);font-size:1.3rem;font-variant-numeric:tabular-nums}
.range-row{display:flex;justify-content:space-between;font-size:.85rem;color:var(--ink-soft)}
input[type=range]{width:100%;accent-color:var(--olive)}
.addons{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.addons label{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:2px;cursor:pointer;font-size:.95rem}
.addons label:has(input:checked){border-color:var(--olive);background:color-mix(in srgb,var(--olive) 6%,var(--paper))}
.addons label span:last-child{color:var(--ink-soft);font-variant-numeric:tabular-nums;font-size:.88rem}
.addons input{accent-color:var(--olive);margin-right:10px}
@media (max-width:560px){.addons{grid-template-columns:1fr}}
.quote{position:sticky;top:calc(env(safe-area-inset-top,0px) + 96px);background:var(--olive-deep);color:var(--on-olive);border-radius:var(--r);padding:34px;display:grid;gap:14px}
.quote .eyebrow{color:var(--khaki)}
.quote .price{font-family:var(--display);font-size:clamp(2.6rem,4.6vw,3.4rem);line-height:1;font-variant-numeric:tabular-nums}
.quote .per{color:var(--on-olive-soft);font-size:.95rem}
.quote dl{display:grid;grid-template-columns:1fr auto;gap:8px 14px;margin:6px 0 0;font-size:.9rem;border-top:1px solid rgba(247,244,236,.18);padding-top:16px}
.quote dt{color:var(--on-olive-soft)}.quote dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}
.quote .btn{margin-top:8px}
.quote .note{font-size:.8rem;color:var(--on-olive-soft);opacity:.85}
@media (max-width:900px){.calc{grid-template-columns:1fr}.quote{position:static}}

/* steps */
.steps3{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;counter-reset:s}
.steps3 > div{counter-increment:s;border-top:1px solid var(--ink);padding-top:22px;display:grid;gap:10px}
.steps3 > div::before{content:"0" counter(s);font-family:var(--display);font-size:1.1rem;color:var(--brass)}
.steps3 p{color:var(--ink-soft)}
@media (max-width:800px){.steps3{grid-template-columns:1fr;gap:28px}}

/* about teaser / split */
.split{display:grid;grid-template-columns:.9fr 1.1fr;gap:72px;align-items:center}
.split .arch{aspect-ratio:1/1.1;max-width:420px}
@media (max-width:900px){.split{grid-template-columns:1fr;gap:40px}}
.quote-line{font-family:var(--display);font-size:clamp(1.5rem,2.6vw,2rem);line-height:1.3;color:var(--ink);border-left:1px solid var(--brass);padding-left:22px;margin-top:26px;font-style:italic}

/* area */
#area{background:var(--sand)}
.area{display:grid;grid-template-columns:.95fr 1.05fr;gap:56px;align-items:center}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px}
.chips span{padding:8px 14px;border:1px solid var(--line);background:var(--paper);font-size:.88rem;border-radius:2px}
.chips span.hq{background:var(--olive);border-color:var(--olive);color:var(--on-olive)}
.zip{display:flex;gap:8px;margin-top:24px;max-width:400px}
.zip input{flex:1}
.zip .btn{padding-inline:20px}
.zip-msg{margin-top:12px;font-weight:500;min-height:1.6em}
.map{width:100%;max-width:540px;justify-self:center;border:1px solid var(--line);border-radius:var(--r);background:var(--paper)}
@media (max-width:900px){.area{grid-template-columns:1fr}}

/* schedule */
.sched{display:grid;grid-template-columns:.85fr 1.15fr;gap:64px}
.sched form.panel,.sched .done{background:var(--paper)}
.prefill{background:var(--sand);border-left:2px solid var(--brass);padding:14px 16px;font-size:.93rem}
.done{display:grid;gap:16px}
.done pre{white-space:pre-wrap;background:var(--ground);border:1px solid var(--line);padding:16px;font:400 .9rem/1.55 var(--body);margin:0}
.done .acts{display:flex;flex-wrap:wrap;gap:10px}
@media (max-width:900px){.sched{grid-template-columns:1fr;gap:40px}}

/* contact */
.contact-cards{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.contact-cards a{display:inline-flex;align-items:center;gap:12px;padding:12px 18px 12px 14px;border:1px solid var(--line);background:var(--paper);text-decoration:none;border-radius:2px;transition:border-color .2s}
.contact-cards a:hover{border-color:var(--olive)}
.contact-cards svg{color:var(--olive);flex:none}
.contact-cards span{font-weight:500;line-height:1.25}
.contact-cards small{display:block;font-weight:400;color:var(--ink-soft);font-size:.78rem}

/* service pages */
.page-hero{padding-block:64px 80px;border-bottom:1px solid var(--line)}
.page-hero .wrap{display:grid;grid-template-columns:1.15fr .85fr;gap:64px;align-items:center}
.page-hero .lede{margin-top:22px}
.crumbs{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:22px}
.crumbs a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line)}
.page-hero .arch{aspect-ratio:4/4.6;max-width:400px}
.page-hero .arch svg{position:relative;width:62%;height:auto;color:var(--olive)}
@media (max-width:900px){.page-hero .wrap{grid-template-columns:1fr}.page-hero .arch{max-width:320px}}
.checklist{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--ink)}
.checklist > div{padding:30px 30px 10px 0}
.checklist > div + div{padding-left:30px;border-left:1px solid var(--line)}
.checklist h3{margin-bottom:16px}
.checklist ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.checklist li{display:grid;grid-template-columns:20px 1fr;gap:8px;color:var(--ink-soft)}
.checklist li::before{content:"✓";color:var(--olive)}
@media (max-width:860px){.checklist{grid-template-columns:1fr}.checklist > div,.checklist > div + div{padding:24px 0 8px;border-left:0}}
.two{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:start}
@media (max-width:860px){.two{grid-template-columns:1fr;gap:32px}}
.table-wrap{overflow-x:auto}
.price-table{width:100%;border-collapse:collapse;background:var(--paper);border:1px solid var(--line)}
.price-table th,.price-table td{padding:15px 20px;text-align:left;border-bottom:1px solid var(--line)}
.price-table th{font-size:.72rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft)}
.price-table td:last-child,.price-table th:last-child{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.price-table tr:last-child td{border-bottom:0}
.faq{display:grid;max-width:860px;border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{cursor:pointer;font-family:var(--display);font-size:1.3rem;padding:22px 40px 22px 0;list-style:none;position:relative}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:4px;top:18px;font-family:var(--body);font-size:1.5rem;color:var(--brass)}
.faq details[open] summary::after{content:"–"}
.faq details p{color:var(--ink-soft);padding-bottom:24px;max-width:68ch}
.cta-band{background:var(--olive-deep);color:var(--on-olive);padding:56px;display:grid;grid-template-columns:1.2fr .8fr;gap:28px;align-items:center;border-radius:var(--r)}
.cta-band p{color:var(--on-olive-soft);margin-top:10px}
.cta-band .acts{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}
@media (max-width:860px){.cta-band{grid-template-columns:1fr;padding:36px 26px}.cta-band .acts{justify-content:flex-start}}
.values{display:grid;grid-template-columns:repeat(3,1fr);gap:40px}
.values > div{border-top:1px solid var(--ink);padding-top:22px}
.values p{color:var(--ink-soft);margin-top:10px}
@media (max-width:860px){.values{grid-template-columns:1fr;gap:28px}}
.prose{max-width:64ch;display:grid;gap:18px;color:var(--ink-soft);font-size:1.08rem}

/* footer */
footer{background:var(--olive-deep);color:var(--on-olive-soft);padding-block:64px 40px;font-size:.95rem}
footer .cols{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:40px}
footer .brand{color:var(--on-olive)}
footer .brand small{color:var(--on-olive-soft)}
footer h4{margin:0 0 14px;font:500 .72rem var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--khaki)}
footer .col{display:grid;gap:8px;align-content:start}
footer a{text-decoration:none;color:var(--on-olive)}
footer a:hover{text-decoration:underline}
footer .legal{margin-top:48px;padding-top:22px;border-top:1px solid rgba(247,244,236,.14);font-size:.82rem;display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px}
@media (max-width:760px){footer .cols{grid-template-columns:1fr}}

/* mobile call bar */
.callbar{display:none}
@media (max-width:700px){
  .callbar{display:grid;grid-template-columns:1fr 1fr;gap:8px;position:fixed;left:0;right:0;bottom:0;z-index:30;padding:10px 12px calc(10px + env(safe-area-inset-bottom,0px));background:var(--paper);border-top:1px solid var(--line)}
  .callbar a{display:flex;align-items:center;justify-content:center;padding:13px 8px;font-size:.74rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;border:1px solid var(--line);color:var(--ink);border-radius:2px}
  .callbar .c3{background:var(--olive);border-color:var(--olive);color:var(--on-olive)}
  footer{padding-bottom:120px}
}
