

:root { --ink:#17241f; --cream:#f3eee3; --paper:#fbf8f0; --brass:#a47c45; --muted:#626a65; --line:rgba(23,36,31,.18); }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; background:var(--cream); color:var(--ink); font-family:Arial,sans-serif; }
a { color:inherit; text-decoration:none; }
button { color:inherit; font:inherit; }
.sr-only { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); }
.site-header { position:relative; z-index:20; height:94px; display:flex; align-items:center; padding:0 4.5vw; border-bottom:1px solid var(--line); gap:40px; background:var(--cream); }
.brand { display:flex; align-items:center; gap:13px; margin-right:auto; }
.brand-mark { width:46px; height:46px; flex:0 0 auto; display:grid; place-items:center; border:1px solid currentColor; border-radius:50%; font-family:Georgia,serif; }
.brand strong { display:block; font-family:Georgia,serif; text-transform:uppercase; letter-spacing:.08em; }
.brand small { display:block; margin-top:3px; color:#59625d; font-size:10px; letter-spacing:.08em; }
nav { display:flex; gap:28px; font-size:13px; }
nav a,.text-link { transition:color .2s; }
nav a:hover,.text-link:hover { color:var(--brass); }
.menu-toggle { display:none; border:0; background:none; padding:10px; }
.menu-toggle span:not(.sr-only) { width:23px; height:1px; margin:5px 0; display:block; background:currentColor; }
.button { display:inline-flex; justify-content:center; align-items:center; min-height:54px; padding:0 24px; background:var(--ink); color:white; text-transform:uppercase; letter-spacing:.14em; font-size:11px; font-weight:700; transition:.2s; }
.button:hover { background:#294238; transform:translateY(-2px); }
.button-small { min-height:43px; padding:0 19px; }
.hero { min-height:calc(100vh - 94px); display:grid; grid-template-columns:1.04fr .96fr; }
.hero-copy { padding:clamp(64px,9vw,130px) 6vw 64px; display:flex; flex-direction:column; justify-content:center; }
.eyebrow { margin:0 0 30px; color:var(--brass); font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.23em; }
h1,h2 { margin:0; font-family:Georgia,serif; font-weight:400; letter-spacing:-.055em; }
h1 { max-width:780px; font-size:clamp(54px,6.7vw,104px); line-height:.91; }
h2 { font-size:clamp(49px,6vw,90px); line-height:.97; }
h1 em,h2 em { color:var(--brass); font-weight:400; }
.hero-lede { max-width:500px; margin:34px 0 30px; font-family:Georgia,serif; font-size:20px; line-height:1.55; color:#45504a; }
.hero-actions { display:flex; align-items:center; gap:29px; }
.text-link { padding-bottom:6px; border-bottom:1px solid currentColor; font-size:13px; }
.text-link span { margin-left:8px; }
.rating { margin-top:45px; padding-top:23px; border-top:1px solid var(--line); display:flex; align-items:center; gap:10px; font-size:13px; color:#66706b; }
.rating strong { color:var(--ink); font-size:18px; }
.stars { color:var(--brass); letter-spacing:3px; font-size:12px; }
.photo-placeholder { position:relative; overflow:hidden; background:radial-gradient(circle at 70% 20%,rgba(202,168,110,.18),transparent 29%),linear-gradient(145deg,#284238,#0f1a16); }
.photo-placeholder:before { content:""; position:absolute; inset:30px; border:1px solid rgba(255,255,255,.24); }
.photo-placeholder:after { content:""; position:absolute; width:180%; height:1px; background:rgba(255,255,255,.12); transform:rotate(-35deg); }
.hero-visual { position:relative; min-height:600px; margin:26px 26px 26px 0; overflow:hidden; background:#14201b; }
.hero-visual:after { content:""; position:absolute; inset:0; background:linear-gradient(180deg,transparent 48%,rgba(8,15,12,.45)); pointer-events:none; }
.hero-visual>img { width:100%; height:100%; display:block; object-fit:cover; object-position:center; }
.placeholder-label { color:#d7c4a5; text-align:center; text-transform:uppercase; z-index:1; }
.placeholder-label span { display:block; margin-bottom:18px; color:rgba(255,255,255,.44); font-size:10px; letter-spacing:.2em; }
.placeholder-label strong { display:block; font-family:Georgia,serif; letter-spacing:.2em; font-size:17px; font-weight:400; }
.placeholder-label small { display:block; margin-top:10px; color:rgba(255,255,255,.48); letter-spacing:.12em; font-size:8px; }
.open-note { position:absolute; left:0; bottom:0; width:min(340px,80%); padding:24px 28px; background:var(--paper); z-index:2; }
.open-note span,.open-note small { display:block; color:#727972; font-size:9px; text-transform:uppercase; letter-spacing:.13em; }
.open-note strong { display:block; margin:5px 0 7px; font-family:Georgia,serif; font-size:20px; }
.proof-strip { min-height:144px; padding:26px 5vw; background:var(--ink); color:white; display:grid; grid-template-columns:repeat(4,1fr); align-items:center; }
.proof-strip p { margin:0; padding:0 3vw; border-right:1px solid rgba(255,255,255,.18); }
.proof-strip p:last-child { border:0; }
.proof-strip strong,.proof-strip span { display:block; }
.proof-strip strong { font-family:Georgia,serif; color:#dcc49d; font-size:25px; font-weight:400; }
.proof-strip span { margin-top:5px; color:#aab3ae; font-size:10px; letter-spacing:.15em; text-transform:uppercase; }
.section { padding:120px 6vw; }
.section-label { display:flex; gap:16px; color:var(--muted); font-size:10px; text-transform:uppercase; letter-spacing:.17em; }
.section-label span { color:var(--brass); }
.section-label p { margin:0; }
.about { display:grid; grid-template-columns:.35fr 1fr .68fr; gap:5vw; }
.about-heading .eyebrow { margin-top:50px; }
.about-copy { padding-top:95px; font-size:14px; line-height:1.75; color:var(--muted); }
.about-copy .lead { font-family:Georgia,serif; color:var(--ink); font-size:21px; line-height:1.55; }
.about-copy .text-link { display:inline-block; margin-top:20px; color:var(--ink); }
.dark { background:var(--ink); color:white; }
.services { display:grid; grid-template-columns:.26fr .68fr 1fr; gap:6vw; }
.section-label.light { color:#a2aaa5; }
.services-intro h2 em { color:#d0ad76; }
.services-intro>p:last-child { max-width:380px; color:#abb4af; font-size:14px; line-height:1.7; }
.service-list { border-top:1px solid rgba(255,255,255,.22); }
.service-list article { display:grid; grid-template-columns:55px 1fr; gap:20px; padding:25px 0; border-bottom:1px solid rgba(255,255,255,.22); }
.service-list article>span { color:#b4915b; font-size:10px; }
.service-list h3 { margin:0 0 7px; font-family:Georgia,serif; color:#f2e6d0; font-size:25px; font-weight:400; }
.service-list p { margin:0; color:#9fa9a4; font-size:12px; line-height:1.6; }
.reviews { display:grid; grid-template-columns:.43fr 1fr; gap:7vw; background:var(--paper); }
.review-score { display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; border-right:1px solid var(--line); }
.score-ring { width:210px; height:210px; display:grid; place-content:center; border:1px solid var(--brass); border-radius:50%; }
.score-ring strong { display:block; font-family:Georgia,serif; font-size:75px; font-weight:400; line-height:.9; }
.score-ring span { color:var(--muted); text-transform:uppercase; letter-spacing:.15em; font-size:9px; }
.review-score>p { color:var(--muted); font-size:11px; line-height:2.1; }
.section-label.inline { margin-bottom:60px; }
.review-content>blockquote { max-width:880px; margin:0; font-family:Georgia,serif; font-size:clamp(36px,4vw,62px); line-height:1.13; letter-spacing:-.035em; }
.quote-grid { margin-top:70px; display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid var(--line); }
.quote-grid figure { margin:0; padding:28px 30px 0 0; }
.quote-grid figure+figure { padding-left:30px; border-left:1px solid var(--line); }
.quote-grid blockquote { margin:0; font-family:Georgia,serif; font-size:18px; line-height:1.5; }
.quote-grid figcaption { margin-top:25px; color:#7b827d; font-size:9px; line-height:1.6; text-transform:uppercase; letter-spacing:.1em; }
.gallery { padding-bottom:140px; }
.gallery-heading { display:flex; justify-content:space-between; align-items:end; margin-bottom:55px; }
.gallery-heading>p { max-width:320px; color:var(--muted); font-size:13px; line-height:1.7; }
.gallery-grid { height:720px; display:grid; grid-template-columns:1.15fr .85fr 1fr; grid-template-rows:1.1fr .9fr; gap:15px; }
.gallery-photo { position:relative; overflow:hidden; display:grid; place-items:center; min-height:200px; margin:0; background:#17241f; }
.gallery-photo img { width:100%; height:100%; display:block; object-fit:cover; transition:transform .55s ease; }
.gallery-photo:hover img { transform:scale(1.025); }
.gallery-photo figcaption { position:absolute; left:15px; right:15px; bottom:15px; padding:12px 14px; background:rgba(15,27,22,.84); color:#f3e6d0; font-size:9px; text-transform:uppercase; letter-spacing:.16em; backdrop-filter:blur(4px); }
.g1 { grid-row:1/3; }
.g2 img { object-position:center 38%; }
.g3 { grid-row:1/3; grid-column:3; }
.g3 img { object-position:center; }
.g4 img { object-position:center; }
.visit { min-height:750px; display:grid; grid-template-columns:1fr 1fr; background:#b79057; }
.map-card { position:relative; overflow:hidden; display:grid; place-items:center; min-height:600px; background:#e6dfcf; }
.map-grid { position:absolute; inset:-100px; opacity:.44; background:linear-gradient(32deg,transparent 48%,#aab0a7 49%,#aab0a7 51%,transparent 52%),linear-gradient(104deg,transparent 48%,#b3aa98 49%,#b3aa98 51%,transparent 52%); background-size:140px 170px,220px 150px; }
.map-grid:after { content:""; position:absolute; top:49%; left:-10%; width:120%; height:20px; background:#f6f1e5; transform:rotate(-18deg); border:1px solid #c4b9a4; }
.map-pin { position:relative; z-index:2; width:90px; height:90px; display:grid; place-items:center; background:var(--ink); color:#ead7b8; border-radius:50% 50% 50% 0; transform:rotate(-45deg); box-shadow:0 15px 30px rgba(0,0,0,.2); }
.map-pin span { transform:rotate(45deg); font-family:Georgia,serif; font-size:25px; }
.map-card>p { position:absolute; bottom:40px; z-index:2; font-family:Georgia,serif; font-size:20px; }
.visit-copy { padding:100px 7vw; color:var(--ink); }
.visit-copy .eyebrow { color:#f0dfc2; }
.visit-copy h2 em { color:#f3e5cd; }
.visit-details { margin:55px 0 45px; display:grid; grid-template-columns:1fr 1fr; gap:32px; }
.visit-details div:first-child { grid-row:span 2; }
.visit-details span { color:#f1dec0; font-size:9px; text-transform:uppercase; letter-spacing:.16em; }
.visit-details p { margin:8px 0 0; font-family:Georgia,serif; font-size:18px; line-height:1.5; }
.visit-details small { font-family:Arial,sans-serif; font-size:10px; }
.hours-detail p { font-size:16px; }
.light-button { background:#f3e7d3; color:var(--ink); }
.light-button:hover { background:white; }
.light-link { color:var(--ink); }
footer { min-height:150px; padding:35px 5vw; display:flex; align-items:center; gap:50px; background:#101b17; color:#f2e8d7; }
.footer-brand { margin-right:auto; }
.footer-brand small { color:#9ca6a1; }
footer>p,footer>a:last-child { font-size:11px; color:#aab2ae; }
.mobile-call { display:none; }

@media (max-width:1000px) {
  .site-header { padding:0 25px; gap:22px; }
  nav { gap:17px; }
  .about { grid-template-columns:.25fr 1fr; }
  .about-copy { grid-column:2; padding-top:10px; max-width:620px; }
  .services { grid-template-columns:.2fr 1fr; }
  .service-list { grid-column:2; }
  .review-score { display:none; }
  .reviews { grid-template-columns:1fr; }
}
@media (max-width:760px) {
  body { padding-bottom:57px; }
  .site-header { position:sticky; top:0; height:76px; padding:0 18px; }
  .brand small { display:none; }
  .brand-mark { width:42px; height:42px; }
  .header-call { display:none; }
  .menu-toggle { display:block; }
  nav { position:absolute; top:76px; left:0; right:0; padding:25px; display:none; flex-direction:column; gap:0; background:var(--cream); border-bottom:1px solid var(--line); box-shadow:0 14px 25px rgba(20,30,25,.12); }
  nav.open { display:flex; }
  nav a { padding:15px 4px; border-bottom:1px solid var(--line); font-family:Georgia,serif; font-size:20px; }
  .hero { display:block; min-height:0; }
  .hero-copy { padding:68px 22px 50px; }
  h1 { font-size:clamp(51px,14.5vw,76px); }
  h2 { font-size:clamp(47px,13vw,66px); }
  .hero-actions { flex-wrap:wrap; }
  .rating { flex-wrap:wrap; margin-top:38px; }
  .hero-visual { margin:0; min-height:520px; }
  .proof-strip { grid-template-columns:1fr 1fr; padding:18px; }
  .proof-strip p { padding:22px 15px; border-bottom:1px solid rgba(255,255,255,.18); }
  .proof-strip p:nth-child(2) { border-right:0; }
  .section { padding:85px 22px; }
  .about,.services { display:block; }
  .about-heading .eyebrow { margin-top:45px; }
  .about-copy { padding-top:45px; }
  .services-intro { margin-top:45px; }
  .service-list { margin-top:50px; }
  .reviews { display:block; }
  .section-label.inline { margin-bottom:45px; }
  .review-content>blockquote { font-size:37px; }
  .quote-grid { grid-template-columns:1fr; margin-top:48px; }
  .quote-grid figure,.quote-grid figure+figure { padding:25px 0; border-left:0; border-bottom:1px solid var(--line); }
  .gallery-heading { display:block; }
  .gallery-heading>p { margin-top:30px; }
  .gallery-grid { height:auto; display:grid; grid-template-columns:1fr 1fr; grid-template-rows:none; }
  .gallery-photo { min-height:300px; grid-row:auto; grid-column:auto; }
  .g1,.g3 { grid-column:span 2; min-height:450px; }
  .g3 { min-height:520px; }
  .visit { display:block; }
  .map-card { min-height:430px; }
  .visit-copy { padding:80px 22px; }
  .visit-details { grid-template-columns:1fr; }
  .visit-details div:first-child { grid-row:auto; }
  footer { padding:45px 22px; display:block; text-align:center; }
  .footer-brand { justify-content:center; margin-bottom:30px; }
  footer>p { margin:22px 0; }
  .mobile-call { position:fixed; z-index:30; left:0; right:0; bottom:0; height:57px; display:flex; align-items:center; justify-content:center; gap:8px; background:var(--brass); color:#101b17; text-transform:uppercase; letter-spacing:.13em; font-size:10px; font-weight:700; box-shadow:0 -8px 25px rgba(0,0,0,.13); }
  .mobile-call span { font-weight:400; }
}
