
* { box-sizing: border-box; }
:root {
  --cream:#f4eee7; --ivory:#fbf8f4; --sand:#e4d6c9; --clay:#b79a83;
  --taupe:#8b7768; --espresso:#1f1814; --muted:#62554c;
  --line:rgba(31,24,20,.12); --max:1440px;
}
html { scroll-behavior: smooth; }
body { margin:0; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; background:var(--cream); color:var(--espresso); overflow-x:hidden; }
img { max-width:100%; height:auto; }
a { color:inherit; text-decoration:none; }
p { line-height:1.75; color:var(--muted); }
.site-header {
  position:sticky; top:0; z-index:50; display:grid; grid-template-columns:1fr auto 1fr;
  align-items:center; gap:28px; padding:18px clamp(24px,5vw,72px);
  border-bottom:1px solid var(--line); background:rgba(244,238,231,.86); backdrop-filter:blur(18px);
}
.brand { display:flex; flex-direction:column; line-height:1.05; }
.brand-kicker,.eyebrow,.section-kicker { color:var(--taupe); font-size:12px; font-weight:700; letter-spacing:.36em; text-transform:uppercase; }
.brand-name { margin-top:6px; font-size:17px; font-weight:750; letter-spacing:.02em; }
.nav { display:flex; align-items:center; justify-content:center; gap:34px; font-size:14px; }
.nav a:hover,.text-link:hover { opacity:.62; }
.header-cta { justify-self:end; }
.btn { display:inline-flex; align-items:center; justify-content:center; border-radius:999px; padding:13px 24px; font-size:14px; font-weight:750; text-align:center; transition:.2s ease; }
.btn-dark { border:1px solid var(--espresso); background:var(--espresso); color:#fff; }
.btn-dark:hover { opacity:.86; }
.btn-outline { border:1px solid var(--espresso); background:transparent; color:var(--espresso); }
.btn-outline:hover { background:rgba(255,255,255,.55); }
.btn-cream { background:var(--ivory); color:var(--espresso); }
h1,h2 { font-family: Georgia, "Times New Roman", serif; font-weight:500; letter-spacing:-.055em; line-height:.94; margin:0; }
h1 { font-size:clamp(58px,7.2vw,120px); }
h2 { font-size:clamp(38px,4.5vw,72px); }
h3 { margin:0 0 10px; font-size:20px; }
.lead { max-width:560px; font-size:18px; }
.luxury-hero {
  max-width:var(--max); margin:0 auto; min-height:calc(100vh - 83px);
  display:grid; grid-template-columns:minmax(330px,.75fr) minmax(420px,1fr) minmax(250px,.42fr);
  align-items:center; gap:clamp(24px,3vw,54px); padding:clamp(42px,5vw,78px) clamp(24px,5vw,72px);
}
.hero-copy { align-self:center; }
.hero-copy .eyebrow { margin-bottom:26px; }
.hero-actions { display:flex; flex-wrap:wrap; gap:14px; margin-top:30px; }
.hero-visual { height:min(72vh,760px); min-height:540px; overflow:hidden; border-radius:46px; background:var(--sand); box-shadow:0 28px 90px rgba(31,24,20,.12); }
.hero-visual img { width:100%; height:100%; display:block; object-fit:cover; object-position:52% 45%; }
.hero-note { align-self:end; margin-bottom:7vh; padding:26px; border-top:1px solid var(--espresso); border-bottom:1px solid var(--line); }
.hero-note span,.service-tile span,.why-grid span,.booking-guidance span,.policy-link-card span { display:block; margin-bottom:16px; color:var(--taupe); font-size:12px; letter-spacing:.22em; text-transform:uppercase; font-weight:800; }
.hero-note strong { display:block; font-size:22px; font-family:Georgia,serif; font-weight:500; }
.quiet-strip { max-width:var(--max); margin:0 auto; display:grid; grid-template-columns:repeat(4,1fr); gap:1px; padding:0 clamp(24px,5vw,72px) 54px; }
.quiet-strip span { padding:22px 18px; border:1px solid var(--line); background:rgba(255,255,255,.35); text-align:center; color:var(--muted); font-size:13px; }
.editorial-section,.services-showcase,.why-section,.image-band,.cta-panel,.page-hero,.notice-luxe,.service-list,.price-detail,.faq-luxe,.hours-section,.book-hero,.booking-guidance,.booking-frame-section,.policy-page,.policy-links-section {
  max-width:var(--max); margin:0 auto; padding-left:clamp(24px,5vw,72px); padding-right:clamp(24px,5vw,72px);
}
.editorial-section { padding-top:96px; padding-bottom:96px; border-top:1px solid var(--line); }
.editorial-grid { margin-top:22px; display:grid; grid-template-columns:minmax(300px,.9fr) minmax(300px,.65fr); gap:clamp(40px,8vw,130px); align-items:end; }
.editorial-grid p { font-size:18px; margin-bottom:0; }
.section-heading { margin-bottom:38px; }
.split-heading { display:flex; justify-content:space-between; align-items:end; gap:24px; }
.text-link { color:var(--espresso); font-weight:750; border-bottom:1px solid currentColor; padding-bottom:4px; white-space:nowrap; }
.services-showcase { padding-top:88px; padding-bottom:96px; background:linear-gradient(180deg,rgba(255,255,255,.25),rgba(255,255,255,0)); }
.service-mosaic { display:grid; grid-template-columns:1.2fr .8fr; grid-template-rows:repeat(2,minmax(300px,1fr)); gap:24px; }
.service-tile { position:relative; overflow:hidden; min-height:300px; border-radius:34px; background:var(--sand); }
.service-tile.large { grid-row:span 2; }
.service-tile img { width:100%; height:100%; display:block; object-fit:cover; }
.service-tile::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(0,0,0,0) 42%,rgba(0,0,0,.56)); }
.service-tile > div { position:absolute; z-index:2; left:26px; right:26px; bottom:24px; color:#fff; }
.service-tile p,.service-tile span { color:rgba(255,255,255,.78); }
.why-section { display:grid; grid-template-columns:.78fr 1.22fr; gap:clamp(36px,6vw,90px); padding-top:100px; padding-bottom:100px; border-top:1px solid var(--line); }
.why-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:18px; }
.why-grid article { min-height:220px; padding:26px; border:1px solid var(--line); background:rgba(255,255,255,.38); }
.image-band { display:grid; grid-template-columns:minmax(360px,.95fr) minmax(360px,.85fr); gap:clamp(40px,6vw,90px); align-items:center; padding-top:98px; padding-bottom:98px; }
.image-band.reverse { grid-template-columns:minmax(360px,.85fr) minmax(360px,.95fr); }
.image-band.reverse img { order:2; }
.image-band img { width:100%; aspect-ratio:5/6; object-fit:cover; border-radius:42px; box-shadow:0 28px 90px rgba(31,24,20,.11); }
.image-band p { font-size:17px; }
.image-band .btn { margin-top:18px; }
.cta-panel { width:calc(100% - clamp(48px,8vw,144px)); max-width:1120px; margin-top:20px; margin-bottom:78px; padding-top:48px; padding-bottom:48px; text-align:center; background:var(--espresso); color:#fff; border-radius:34px; }
.cta-panel h2 { max-width:780px; margin-left:auto; margin-right:auto; font-size:clamp(32px,3.6vw,54px); letter-spacing:-.045em; }
.cta-panel p { max-width:580px; margin:16px auto 0; line-height:1.6; color:rgba(255,255,255,.72); }
.cta-panel .eyebrow { margin:0 0 14px; color:rgba(255,255,255,.6); }
.cta-panel .btn { margin-top:22px; }
.site-footer { display:flex; justify-content:space-between; gap:24px; padding:38px clamp(24px,5vw,72px) 92px; border-top:1px solid var(--line); color:var(--muted); font-size:14px; }
.site-footer p { margin:6px 0; }
.footer-policies { max-width:520px; }
.footer-policies a { text-decoration:underline; text-underline-offset:3px; }
.mobile-booking-bar { display:none; }
.page-hero { text-align:center; padding-top:90px; padding-bottom:70px; }
.page-hero h1 { max-width:920px; margin:0 auto; font-size:clamp(50px,6vw,90px); }
.page-hero p { max-width:700px; margin:22px auto 0; }
.page-hero .btn { margin-top:24px; }
.notice-luxe { max-width:1040px; padding-top:34px; padding-bottom:34px; margin-bottom:42px; border:1px solid var(--line); background:rgba(255,255,255,.38); }
.notice-luxe h2 { font-size:clamp(32px,3vw,48px); }
.service-list { display:grid; gap:18px; padding-bottom:72px; }
.service-row { display:grid; grid-template-columns:260px 1fr auto; gap:32px; align-items:center; padding:18px; border:1px solid var(--line); background:rgba(255,255,255,.45); }
.service-row img { width:100%; aspect-ratio:4/3; border-radius:24px; object-fit:cover; }
.service-row h2 { font-size:clamp(30px,3vw,46px); }
.service-row strong { font-size:24px; white-space:nowrap; }
.price-detail { padding-top:72px; padding-bottom:92px; border-top:1px solid var(--line); }
.price-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin-top:28px; }
.price-card { display:flex; justify-content:space-between; gap:20px; padding:22px; border:1px solid var(--line); background:rgba(255,255,255,.42); border-radius:24px; }
.faq-luxe { max-width:980px; display:grid; gap:14px; padding-bottom:94px; }
.faq-luxe details { padding:26px 28px; border:1px solid var(--line); background:rgba(255,255,255,.45); }
.faq-luxe summary { cursor:pointer; font-size:20px; font-weight:750; }
.hours-section { display:grid; grid-template-columns:.7fr 1.3fr; gap:44px; padding-top:82px; padding-bottom:92px; border-top:1px solid var(--line); }
.hours-grid { display:grid; gap:16px; }
.hours-grid div { display:flex; justify-content:space-between; padding:22px 0; border-bottom:1px solid var(--line); }
.book-hero { display:grid; grid-template-columns:.9fr .8fr; gap:clamp(40px,6vw,92px); align-items:center; padding-top:80px; padding-bottom:70px; }
.book-hero h1 { font-size:clamp(54px,6vw,96px); }
.book-hero img { width:100%; aspect-ratio:4/5; object-fit:cover; border-radius:42px; }
.booking-guidance { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; padding-top:46px; padding-bottom:46px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.booking-guidance article { padding:26px; background:rgba(255,255,255,.4); border-left:1px solid var(--taupe); }
.booking-frame-section { padding-top:86px; padding-bottom:100px; }
.booking-frame-wrap { overflow:hidden; border:1px solid var(--line); border-radius:34px; background:#fff; box-shadow:0 24px 70px rgba(31,24,20,.10); }
.booking-frame-wrap iframe { display:block; width:100%; min-height:980px; border:0; }
.booking-fallback { text-align:center; font-size:14px; }
.booking-fallback a { text-decoration:underline; text-underline-offset:3px; }
.policy-hero { padding-bottom:42px; }
.policy-page { max-width:980px; padding-bottom:96px; }
.policy-card { padding:38px; border:1px solid var(--line); background:rgba(255,255,255,.45); }
.policy-card h2 { margin-top:34px; font-size:clamp(30px,3vw,44px); letter-spacing:-.035em; }
.policy-card h2:first-of-type { margin-top:26px; }
.policy-card ul { margin:14px 0 0; padding-left:22px; color:var(--muted); line-height:1.75; }
.policy-card a { color:var(--espresso); text-decoration:underline; text-underline-offset:3px; }
.policy-links-section { padding-top:30px; padding-bottom:90px; }
.policy-links-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.policy-link-card { min-height:210px; padding:26px; border:1px solid var(--line); background:rgba(255,255,255,.42); }
.policy-link-card p { margin-bottom:24px; }
@media (max-width:1180px) {
  .luxury-hero { grid-template-columns:.82fr 1fr; }
  .hero-note { display:none; }
  h1 { font-size:clamp(54px,7vw,86px); }
}
@media (max-width:860px) {
  body { padding-bottom:78px; }
  .site-header { display:flex; padding:15px 20px; }
  .brand-kicker,.eyebrow,.section-kicker { letter-spacing:.2em; }
  .nav,.header-cta { display:none; }
  .luxury-hero,.editorial-grid,.why-section,.image-band,.image-band.reverse,.book-hero,.hours-section { grid-template-columns:1fr; }
  .luxury-hero { min-height:auto; padding-top:48px; padding-bottom:48px; }
  .hero-visual { min-height:0; height:auto; border-radius:30px; }
  .hero-visual img { aspect-ratio:4/5; }
  h1 { font-size:clamp(44px,14vw,72px); }
  h2 { font-size:clamp(34px,10vw,52px); }
  .lead { font-size:17px; }
  .hero-actions { flex-direction:column; align-items:stretch; }
  .hero-actions .btn { width:100%; }
  .quiet-strip,.why-grid,.price-grid,.booking-guidance,.policy-links-grid { grid-template-columns:1fr; }
  .quiet-strip { padding-bottom:28px; }
  .editorial-section,.services-showcase,.why-section,.image-band,.price-detail,.booking-frame-section,.policy-page,.policy-links-section { padding-top:58px; padding-bottom:58px; }
  .split-heading { display:block; }
  .text-link { display:inline-block; margin-top:20px; }
  .service-mosaic { grid-template-columns:1fr; grid-template-rows:auto; }
  .service-tile,.service-tile.large { min-height:380px; grid-row:auto; }
  .image-band.reverse img { order:0; }
  .service-row { grid-template-columns:1fr; gap:18px; }
  .service-row img { border-radius:18px; }
  .service-row strong { font-size:22px; }
  .site-footer { flex-direction:column; padding-bottom:92px; }
  .mobile-booking-bar { position:fixed; left:16px; right:16px; bottom:16px; z-index:80; display:flex; justify-content:center; padding:14px 18px; border-radius:999px; background:var(--espresso); color:#fff; font-weight:800; box-shadow:0 14px 40px rgba(31,24,20,.2); }
  .booking-frame-wrap iframe { min-height:900px; }
}
@media (max-width:480px) {
  .brand-name { font-size:16px; }
  .luxury-hero,.editorial-section,.services-showcase,.why-section,.image-band,.page-hero,.notice-luxe,.service-list,.price-detail,.faq-luxe,.hours-section,.book-hero,.booking-guidance,.booking-frame-section,.policy-page,.policy-links-section {
    padding-left:18px;
    padding-right:18px;
  }
  .luxury-hero { padding-top:36px; }
  .hero-visual,.image-band img,.book-hero img { border-radius:24px; }
  .service-tile,.service-tile.large { min-height:320px; border-radius:24px; }
  .service-tile > div { left:20px; right:20px; bottom:20px; }
  .why-grid article,.booking-guidance article,.price-card,.faq-luxe details,.policy-card,.policy-link-card { padding:22px; }
  .notice-luxe { margin-left:18px; margin-right:18px; }
  .cta-panel { margin-left:18px; margin-right:18px; border-radius:24px; padding-top:38px; padding-bottom:38px; }
  .cta-panel h2 { font-size:30px; }
  .cta-panel p { font-size:14px; line-height:1.55; }
  .hours-grid div,.price-card { align-items:flex-start; flex-direction:column; gap:8px; }
  .booking-frame-wrap { border-radius:22px; }
}
