/*
Theme Name: Hyacinth Estate
Theme URI: https://hyacinthestate.com
Author: Hyacinth Estate
Description: Custom luxury estate theme for Hyacinth Estate, Lake Atitlán, Guatemala. Designed for full Elementor editing.
Version: 1.0.0
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 8.0
License: Private
Text Domain: hyacinth-estate
*/

/* =====================================================
   HYACINTH ESTATE – GLOBAL CSS VARIABLES & BASE STYLES
   =====================================================
   All design tokens are defined here so Elementor's
   Global Colors can override them in the future.
   ===================================================== */

*,*::before,*::after{margin:0;padding:0;box-sizing:border-box;}

:root{
  /* Brand Colours */
  --cream:     #F7F3ED;
  --cream-2:   #EEE8DF;
  --cream-3:   #E5DDD2;
  --stone:     #2C2924;
  --stone-2:   #4A4540;
  --stone-muted: rgba(44,41,36,0.45);
  --sage:      #7A8C7E;
  --sage-light:#B8C4BA;
  --terracotta:#9E6B52;

  /* Typography */
  --serif: 'Playfair Display', Georgia, serif;
  --sans:  'Jost', sans-serif;
}

html { scroll-behavior: smooth; }

body {
  background: var(--cream);
  color: var(--stone);
  font-family: var(--sans);
  overflow-x: hidden;
}

/* ── UTILITY CLASSES (used throughout pages) ── */
.reveal          { opacity:0; transform:translateY(40px);  transition:opacity .8s ease,transform .8s ease; }
.reveal.visible  { opacity:1; transform:none; }
.reveal-left     { opacity:0; transform:translateX(-40px); transition:opacity .8s ease,transform .8s ease; }
.reveal-left.visible { opacity:1; transform:none; }
.reveal-right    { opacity:0; transform:translateX(40px);  transition:opacity .8s ease,transform .8s ease; }
.reveal-right.visible{ opacity:1; transform:none; }
.reveal-delay-1  { transition-delay:.1s; }
.reveal-delay-2  { transition-delay:.2s; }
.reveal-delay-3  { transition-delay:.3s; }
.reveal-delay-4  { transition-delay:.4s; }
.reveal-delay-5  { transition-delay:.5s; }

/* ── NAV ── */
/* nav { position:fixed; top:0; left:0; right:0; z-index:200; display:flex; align-items:center; justify-content:space-between; padding:24px 56px; transition:all .4s ease; } */
nav.solid { background:rgba(247,243,237,.97); border-bottom:.5px solid var(--cream-3); padding:16px 56px; }
nav.glass .nav-logo { color:#fff; }
nav.glass .nav-logo em { color:rgba(255,255,255,.7); }
nav.glass .nav-links a { color:rgba(255,255,255,.8); }
nav.glass .nav-cta  { background:rgba(255,255,255,.15); border:.5px solid rgba(255,255,255,.4); color:#fff; }
nav.glass.solid .nav-logo { color:var(--stone); }
nav.glass.solid .nav-logo em { color:var(--terracotta); }
nav.glass.solid .nav-links a { color:var(--stone-2); }
nav.glass.solid .nav-cta    { background:var(--stone); color:var(--cream); border:none; }

.nav-logo { font-family:var(--serif); font-size:20px; letter-spacing:.08em; color:var(--stone); text-decoration:none; cursor:pointer; }
.nav-logo em { font-style:italic; color:var(--terracotta); }
.nav-links { display:flex; align-items:center; gap:40px; list-style:none; }
.nav-links a { font-size:10px; font-weight:500; letter-spacing:.2em; text-transform:uppercase; color:var(--stone-2); text-decoration:none; opacity:.7; transition:opacity .3s; cursor:pointer; }
.nav-links a:hover { opacity:1; }
.nav-cta { font-size:10px; font-weight:500; letter-spacing:.18em; text-transform:uppercase; color:var(--cream); background:var(--stone); padding:11px 26px; text-decoration:none; transition:background .3s; cursor:pointer; }
.nav-cta:hover { background:var(--stone-2); }

/* Mobile nav */
/* .nav-hamburger { display:none; flex-direction:column; gap:5px; cursor:pointer; background:none; border:none; padding:4px; } */
.nav-hamburger span { display:block; width:22px; height:1px; background:var(--stone); transition:all .3s; }
.nav-mobile { display:none; position:fixed; inset:0; background:var(--cream); z-index:300; flex-direction:column; align-items:center; justify-content:center; gap:32px; }
.nav-mobile.open { display:flex; }
.nav-mobile a { font-family:var(--serif); font-size:28px; color:var(--stone); text-decoration:none; }
.nav-mobile .close-btn { position:absolute; top:24px; right:32px; background:none; border:none; font-size:28px; cursor:pointer; }

/* ── VIDEO HERO ── */
.video-hero { position:relative; width:100%; height:100vh; overflow:hidden; background:#0a0806; }
.video-hero video { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; filter:contrast(1.08) saturate(1.1); }
.video-hero-overlay { position:absolute; inset:0; background:linear-gradient(to bottom,rgba(15,11,8,.4) 0%,rgba(15,11,8,.05) 45%,rgba(15,11,8,.55) 100%); }
.video-hero-content { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:0 40px; }
.video-hero-eyebrow { font-size:9px; font-weight:500; letter-spacing:.45em; text-transform:uppercase; color:rgba(255,255,255,.65); margin-bottom:28px; display:flex; align-items:center; gap:14px; }
.video-hero-eyebrow::before,.video-hero-eyebrow::after { content:''; width:40px; height:.5px; background:rgba(255,255,255,.35); }
.video-hero-title { font-family:var(--serif); font-size:clamp(52px,8vw,100px); font-weight:400; line-height:1; color:#fff; letter-spacing:-.01em; margin-bottom:28px; text-shadow:0 2px 60px rgba(0,0,0,.25); }
.video-hero-title em { font-style:italic; color:rgba(245,210,185,.95); }
.video-hero-sub { font-size:14px; font-weight:300; line-height:1.9; color:rgba(255,255,255,.7); max-width:480px; margin-bottom:48px; }
.video-hero-actions { display:flex; align-items:center; gap:28px; }
.btn-hero-primary { font-size:10px; font-weight:500; letter-spacing:.22em; text-transform:uppercase; color:var(--stone); background:#fff; padding:15px 38px; text-decoration:none; cursor:pointer; transition:background .3s; }
.btn-hero-primary:hover { background:var(--cream-2); }
.btn-hero-ghost { font-size:10px; font-weight:500; letter-spacing:.22em; text-transform:uppercase; color:rgba(255,255,255,.85); cursor:pointer; border-bottom:.5px solid rgba(255,255,255,.4); padding-bottom:2px; transition:color .3s; background:none; border-top:none; border-left:none; border-right:none; }
.btn-hero-ghost:hover { color:#fff; }
.hero-scroll-cue { position:absolute; bottom:36px; left:50%; transform:translateX(-50%); display:flex; flex-direction:column; align-items:center; gap:8px; }
.hero-scroll-cue span { font-size:8px; letter-spacing:.3em; text-transform:uppercase; color:rgba(255,255,255,.45); }
.scroll-line { width:.5px; height:40px; background:rgba(255,255,255,.3); animation:linePulse 2s ease infinite; }
@keyframes linePulse { 0%,100%{transform:scaleY(1);opacity:.3;} 50%{transform:scaleY(1.15);opacity:.7;} }

/* ── ESTATE STATS ── */
.estate-stats { background:var(--stone); display:grid; grid-template-columns:repeat(5,1fr); }
.stat-cell { padding:30px 32px; border-right:.5px solid rgba(255,255,255,.07); display:flex; flex-direction:column; gap:5px; }
.stat-cell:last-child { border-right:none; }
.stat-num { font-family:var(--serif); font-size:30px; font-weight:400; font-style:italic; color:var(--cream); line-height:1; }
.stat-label { font-size:9px; font-weight:500; letter-spacing:.25em; text-transform:uppercase; color:var(--sage); }

/* ── EDITORIAL ── */
.editorial { display:grid; grid-template-columns:280px 1fr; padding:120px 56px; border-bottom:.5px solid var(--cream-3); }
.editorial-num { font-family:var(--serif); font-size:72px; font-style:italic; color:var(--cream-3); line-height:1; display:block; margin-bottom:8px; }
.editorial-label-text { font-size:9px; font-weight:500; letter-spacing:.3em; text-transform:uppercase; color:var(--sage); }
.editorial-heading { font-family:var(--serif); font-size:clamp(32px,4vw,52px); font-weight:400; line-height:1.12; color:var(--stone); margin-bottom:28px; }
.editorial-heading em { font-style:italic; color:var(--terracotta); }
.editorial-body { font-size:13px; font-weight:300; line-height:2; color:var(--stone-muted); max-width:560px; margin-bottom:40px; }
.editorial-link { font-size:10px; font-weight:500; letter-spacing:.2em; text-transform:uppercase; color:var(--stone); text-decoration:none; display:inline-flex; align-items:center; gap:12px; cursor:pointer; background:none; border:none; }
.editorial-link::after { content:''; width:32px; height:.5px; background:var(--stone); transition:width .3s; }
.editorial-link:hover::after { width:52px; }

/* ── IMAGE STAGGER GRID ── */
.img-stagger { padding:0 56px 120px; display:grid; grid-template-columns:1fr 1fr 1fr; grid-template-rows:auto auto; gap:3px; }
.img-stagger-item { overflow:hidden; position:relative; }
.img-stagger-item img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .8s ease; }
.img-stagger-item:hover img { transform:scale(1.04); }
.img-tall { grid-row:span 2; }
.img-h1 { height:320px; }
.img-h2 { height:260px; }
.img-label { position:absolute; bottom:0; left:0; padding:12px 16px; background:rgba(247,243,237,.9); font-size:9px; letter-spacing:.22em; text-transform:uppercase; color:var(--stone-muted); }

/* ── AMENITIES ── */
.amenities-section { background:var(--cream-2); padding:100px 56px; border-top:.5px solid var(--cream-3); }
.amenities-top { display:flex; align-items:flex-end; justify-content:space-between; margin-bottom:64px; }
.amenities-heading { font-family:var(--serif); font-size:clamp(32px,4vw,48px); font-weight:400; line-height:1.1; color:var(--stone); }
.amenities-heading em { font-style:italic; color:var(--terracotta); }
.amenities-sub { font-size:12px; font-weight:300; line-height:1.9; color:var(--stone-muted); max-width:320px; text-align:right; }
.amenity-row { display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--cream-3); }
.amenity-card { background:var(--cream-2); padding:36px 28px; border-top:2px solid transparent; transition:border-color .3s,background .3s; }
.amenity-card:hover { border-top-color:var(--terracotta); background:var(--cream); }
.amenity-card-name { font-family:var(--serif); font-size:17px; color:var(--stone); margin-bottom:10px; margin-top:16px; }
.amenity-card-desc { font-size:11px; font-weight:300; line-height:1.85; color:var(--stone-muted); }

/* ── IMAGE BREAK ── */
.img-break { position:relative; height:580px; overflow:hidden; }
.img-break img { width:100%; height:100%; object-fit:cover; object-position:center 30%; display:block; }
.img-break-overlay { position:absolute; inset:0; background:rgba(15,11,8,.22); }
.img-break-text { position:absolute; bottom:48px; left:56px; right:56px; display:flex; align-items:flex-end; justify-content:space-between; }
.img-break-quote { font-family:var(--serif); font-size:clamp(22px,3vw,38px); font-style:italic; color:#fff; max-width:540px; line-height:1.3; text-shadow:0 1px 24px rgba(0,0,0,.25); }
.img-break-attr { font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:rgba(255,255,255,.6); }

/* ── TESTIMONIALS ── */
.testi-section { padding:100px 56px; background:var(--cream); }
.testi-header { display:grid; grid-template-columns:1fr 2fr; gap:60px; align-items:start; margin-bottom:64px; }
.testi-heading { font-family:var(--serif); font-size:clamp(28px,3.5vw,42px); font-weight:400; line-height:1.2; color:var(--stone); }
.testi-heading em { font-style:italic; color:var(--terracotta); }
.testi-intro { font-size:13px; font-weight:300; line-height:2; color:var(--stone-muted); padding-top:8px; }
.testi-cards { display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.testi-card { background:var(--cream-2); padding:36px 30px; border-bottom:2px solid var(--cream-3); transition:border-color .3s; }
.testi-card:hover { border-bottom-color:var(--terracotta); }
.testi-stars { display:flex; gap:4px; margin-bottom:20px; }
.testi-quote { font-family:var(--serif); font-size:15px; font-style:italic; line-height:1.75; color:var(--stone); margin-bottom:24px; }
.testi-by { display:flex; align-items:center; gap:12px; border-top:.5px solid var(--cream-3); padding-top:18px; }
.testi-av { width:34px; height:34px; border-radius:50%; object-fit:cover; }
.testi-name { font-size:11px; font-weight:500; letter-spacing:.1em; text-transform:uppercase; color:var(--stone); }
.testi-loc { font-size:10px; color:var(--stone-muted); margin-top:2px; }

/* ── ARRIVAL ── */
.arrival { display:grid; grid-template-columns:1fr 1fr; }
.arrival-img { overflow:hidden; height:620px; }
.arrival-img img { width:100%; height:100%; object-fit:cover; display:block; }
.arrival-content { background:var(--stone); padding:80px 64px; display:flex; flex-direction:column; justify-content:center; }
.arrival-tag { font-size:9px; font-weight:500; letter-spacing:.3em; text-transform:uppercase; color:var(--sage-light); margin-bottom:20px; display:flex; align-items:center; gap:12px; }
.arrival-tag::before { content:''; width:24px; height:.5px; background:var(--sage); }
.arrival-heading { font-family:var(--serif); font-size:clamp(30px,3.5vw,46px); font-weight:400; line-height:1.15; color:var(--cream); margin-bottom:24px; }
.arrival-heading em { font-style:italic; color:var(--sage-light); }
.arrival-body { font-size:13px; font-weight:300; line-height:2; color:rgba(247,243,237,.55); margin-bottom:44px; }
.arrival-list { list-style:none; display:flex; flex-direction:column; gap:14px; margin-bottom:44px; }
.arrival-list li { font-size:11px; letter-spacing:.08em; color:rgba(247,243,237,.75); display:flex; align-items:center; gap:14px; }
.arrival-list li::before { content:''; width:14px; height:.5px; background:var(--sage); flex-shrink:0; }

/* ── FAQ ── */
.faq { padding:100px 56px; background:var(--cream-2); border-top:.5px solid var(--cream-3); }
.faq-inner { display:grid; grid-template-columns:1fr 1fr; gap:100px; }
.faq-left-heading { font-family:var(--serif); font-size:clamp(28px,3.5vw,44px); line-height:1.2; color:var(--stone); margin-bottom:20px; }
.faq-left-heading em { font-style:italic; color:var(--terracotta); }
.faq-left-sub { font-size:13px; font-weight:300; line-height:2; color:var(--stone-muted); margin-bottom:36px; }
.faq-items { border-top:.5px solid var(--cream-3); }
.faq-item { border-bottom:.5px solid var(--cream-3); }
.faq-q { padding:20px 0; font-size:13px; color:var(--stone); cursor:pointer; display:flex; justify-content:space-between; align-items:center; gap:16px; user-select:none; transition:color .3s; }
.faq-q:hover { color:var(--terracotta); }
.faq-plus { font-family:var(--serif); font-size:20px; color:var(--terracotta); transition:transform .3s; flex-shrink:0; }
.faq-item.open .faq-plus { transform:rotate(45deg); }
.faq-a { font-size:12px; font-weight:300; line-height:1.9; color:var(--stone-muted); max-height:0; overflow:hidden; transition:max-height .4s ease,padding .3s; }
.faq-item.open .faq-a { max-height:180px; padding-bottom:18px; }

/* ── CTA STRIP ── */
.cta { padding:100px 56px; background:var(--cream); display:grid; grid-template-columns:1fr 1fr; gap:80px; align-items:center; border-top:.5px solid var(--cream-3); }
.cta-eyebrow { font-size:9px; font-weight:500; letter-spacing:.3em; text-transform:uppercase; color:var(--terracotta); margin-bottom:16px; display:flex; align-items:center; gap:12px; }
.cta-eyebrow::before { content:''; width:24px; height:.5px; background:var(--terracotta); }
.cta-heading { font-family:var(--serif); font-size:clamp(32px,4vw,52px); line-height:1.1; color:var(--stone); margin-bottom:24px; }
.cta-heading em { font-style:italic; color:var(--terracotta); }
.cta-sub { font-size:13px; font-weight:300; line-height:2; color:var(--stone-muted); margin-bottom:40px; }
.cta-img { height:420px; overflow:hidden; }
.cta-img img { width:100%; height:100%; object-fit:cover; display:block; }

/* ── CONTACT FORM SECTION ── */
.contact { background:var(--stone); padding:100px 56px; }
.contact-inner { display:grid; grid-template-columns:1fr 1fr; gap:100px; }
.contact-info-heading { font-family:var(--serif); font-size:clamp(28px,3.5vw,44px); line-height:1.2; color:var(--cream); margin-bottom:20px; }
.contact-info-heading em { font-style:italic; color:var(--sage-light); }
.contact-info-sub { font-size:13px; font-weight:300; line-height:2; color:rgba(247,243,237,.5); margin-bottom:44px; }
.contact-details { display:flex; flex-direction:column; gap:18px; }
.contact-row { font-size:12px; font-weight:300; letter-spacing:.08em; color:rgba(247,243,237,.65); display:flex; gap:14px; align-items:center; }
.contact-row-dot { width:4px; height:4px; background:var(--sage); border-radius:50%; flex-shrink:0; }
.f-label { display:block; font-size:9px; font-weight:500; letter-spacing:.28em; text-transform:uppercase; color:var(--sage-light); margin-bottom:10px; opacity:.8; }
.f-input { width:100%; background:transparent; border:none; border-bottom:.5px solid rgba(247,243,237,.2); padding:12px 0; font-size:13px; font-family:var(--sans); font-weight:300; color:var(--cream); outline:none; transition:border-color .3s; margin-bottom:24px; display:block; }
.f-input::placeholder { color:rgba(247,243,237,.2); }
.f-input:focus { border-color:var(--sage-light); }
textarea.f-input { resize:none; height:90px; }

/* ── BUTTONS ── */
.f-submit,.btn-dark,.btn-light,.btn-outline {
  font-size:10px; font-weight:500; letter-spacing:.2em; text-transform:uppercase;
  padding:14px 36px; border:none; cursor:pointer; font-family:var(--sans);
  display:inline-block; text-decoration:none; transition:background .3s,color .3s;
}
.f-submit,.btn-dark { color:var(--cream); background:var(--stone); }
.f-submit:hover,.btn-dark:hover { background:var(--stone-2); }
.btn-light { color:var(--stone); background:var(--cream); }
.btn-light:hover { background:var(--cream-2); }
.btn-outline { color:var(--stone); background:transparent; border:.5px solid var(--stone); }
.btn-outline:hover { background:var(--stone); color:var(--cream); }
.btn-outline-cream { color:var(--cream); background:transparent; border:.5px solid rgba(255,255,255,.4); font-size:10px; font-weight:500; letter-spacing:.2em; text-transform:uppercase; padding:14px 36px; cursor:pointer; font-family:var(--sans); display:inline-block; text-decoration:none; transition:background .3s; }
.btn-outline-cream:hover { background:rgba(255,255,255,.1); }

/* ── FOOTER ── */
footer { background:var(--cream-2); border-top:.5px solid var(--cream-3); padding:52px 56px 28px; }
.footer-top { display:grid; grid-template-columns:2fr 1fr 1fr 1fr; gap:48px; margin-bottom:40px; }
.footer-brand { font-family:var(--serif); font-size:20px; color:var(--stone); margin-bottom:12px; }
.footer-brand em { font-style:italic; color:var(--terracotta); }
.footer-desc { font-size:11px; font-weight:300; line-height:1.9; color:var(--stone-muted); max-width:240px; }
.footer-col-head { font-size:9px; font-weight:500; letter-spacing:.28em; text-transform:uppercase; color:var(--stone-muted); margin-bottom:18px; }
.footer-col-links { list-style:none; display:flex; flex-direction:column; gap:11px; }
.footer-col-links a { font-size:12px; font-weight:300; color:var(--stone-muted); text-decoration:none; transition:color .3s; cursor:pointer; }
.footer-col-links a:hover { color:var(--terracotta); }
.footer-bottom { border-top:.5px solid var(--cream-3); padding-top:24px; display:flex; justify-content:space-between; }
.footer-copy { font-size:10px; font-weight:300; color:var(--stone-muted); letter-spacing:.08em; }
.footer-tagline { font-family:var(--serif); font-size:12px; font-style:italic; color:var(--terracotta); opacity:.6; }

/* ── GALLERY PAGE ── */
.page-hero { padding:140px 56px 72px; background:var(--cream); border-bottom:.5px solid var(--cream-3); }
.page-eyebrow { font-size:9px; font-weight:500; letter-spacing:.38em; text-transform:uppercase; color:var(--terracotta); margin-bottom:20px; display:flex; align-items:center; gap:12px; }
.page-eyebrow::before { content:''; width:28px; height:.5px; background:var(--terracotta); }
.page-title { font-family:var(--serif); font-size:clamp(42px,6vw,78px); font-weight:400; line-height:1.05; color:var(--stone); letter-spacing:-.01em; margin-bottom:20px; }
.page-title em { font-style:italic; color:var(--terracotta); }
.page-sub { font-size:13px; font-weight:300; line-height:2; color:var(--stone-muted); max-width:520px; }

.gallery-section { padding:80px 56px; border-bottom:.5px solid var(--cream-3); }
.gallery-section:nth-child(even) { background:var(--cream-2); }
.gallery-section-header { display:grid; grid-template-columns:120px 1fr; gap:32px; align-items:baseline; margin-bottom:48px; }
.gallery-section-num { font-family:var(--serif); font-size:56px; font-style:italic; color:var(--cream-3); line-height:1; }
.gallery-section-title { font-family:var(--serif); font-size:clamp(22px,2.5vw,32px); color:var(--stone); line-height:1.1; margin-bottom:8px; }
.gallery-section-title em { font-style:italic; color:var(--terracotta); }
.gallery-section-sub { font-size:11px; font-weight:300; color:var(--stone-muted); line-height:1.7; }
.gallery-masonry { columns:3; column-gap:4px; }
.gallery-masonry.two-col { columns:2; }
.gal-item { break-inside:avoid; margin-bottom:4px; overflow:hidden; position:relative; cursor:pointer; }
.gal-item img { width:100%; display:block; transition:transform .7s ease; }
.gal-item:hover img { transform:scale(1.04); }
.gal-item-label { position:absolute; bottom:0; left:0; padding:10px 14px; background:rgba(247,243,237,.88); font-size:8px; letter-spacing:.22em; text-transform:uppercase; color:var(--stone-muted); opacity:0; transform:translateY(4px); transition:opacity .3s,transform .3s; }
.gal-item:hover .gal-item-label { opacity:1; transform:none; }

/* ── LIGHTBOX ── */
.lightbox { position:fixed; inset:0; z-index:999; background:rgba(12,9,7,.97); display:none; align-items:center; justify-content:center; }
.lightbox.open { display:flex; }
.lb-img { max-width:88vw; max-height:88vh; object-fit:contain; display:block; }
.lb-close { position:absolute; top:24px; right:32px; font-size:28px; color:rgba(255,255,255,.5); cursor:pointer; background:none; border:none; line-height:1; transition:color .3s; }
.lb-close:hover { color:#fff; }
.lb-caption { position:absolute; bottom:28px; left:50%; transform:translateX(-50%); font-size:9px; letter-spacing:.28em; text-transform:uppercase; color:rgba(255,255,255,.4); }
.lb-nav { position:absolute; top:50%; transform:translateY(-50%); background:none; border:none; color:rgba(255,255,255,.4); font-size:32px; cursor:pointer; padding:16px 20px; transition:color .3s; }
.lb-nav:hover { color:#fff; }
.lb-prev { left:16px; }
.lb-next { right:16px; }

/* ── BOOKING PAGE ── */
.booking-layout { display:grid; grid-template-columns:1fr 420px; min-height:calc(100vh - 80px); align-items:start; }
.booking-main { padding:80px 56px; border-right:.5px solid var(--cream-3); }
.booking-sidebar { padding:80px 40px; background:var(--cream-2); position:sticky; top:80px; }
.booking-section-head { font-size:9px; font-weight:500; letter-spacing:.32em; text-transform:uppercase; color:var(--terracotta); margin-bottom:28px; display:flex; align-items:center; gap:12px; }
.booking-section-head::before { content:''; width:20px; height:.5px; background:var(--terracotta); }
.booking-h2 { font-family:var(--serif); font-size:clamp(26px,3vw,36px); font-weight:400; line-height:1.15; color:var(--stone); margin-bottom:12px; }
.booking-h2 em { font-style:italic; color:var(--terracotta); }
.booking-sub { font-size:12px; font-weight:300; line-height:1.9; color:var(--stone-muted); margin-bottom:48px; max-width:480px; }

/* calendar */
.cal-wrapper { margin-bottom:48px; }
.cal-nav { display:flex; align-items:center; justify-content:space-between; margin-bottom:24px; }
.cal-month { font-family:var(--serif); font-size:20px; font-style:italic; color:var(--stone); }
.cal-arrow { background:none; border:none; cursor:pointer; color:var(--stone-muted); font-size:18px; padding:4px 10px; transition:color .3s; }
.cal-arrow:hover { color:var(--terracotta); }
.cal-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:2px; }
.cal-day-header { text-align:center; font-size:9px; font-weight:500; letter-spacing:.2em; text-transform:uppercase; color:var(--stone-muted); padding:8px 0; }
.cal-day { text-align:center; padding:10px 4px; font-size:12px; color:var(--stone-muted); cursor:pointer; border-radius:2px; transition:background .2s,color .2s; }
.cal-day:hover:not(.cal-empty):not(.cal-booked) { background:var(--cream-3); color:var(--stone); }
.cal-day.cal-empty { cursor:default; }
.cal-day.cal-booked { color:var(--cream-3); cursor:not-allowed; text-decoration:line-through; }
.cal-day.cal-selected { background:var(--stone); color:var(--cream); }
.cal-day.cal-in-range { background:var(--cream-3); color:var(--stone); }
.cal-day.cal-start,.cal-day.cal-end { background:var(--terracotta); color:#fff; }
.cal-legend { display:flex; gap:20px; margin-top:12px; }
.cal-leg-item { display:flex; align-items:center; gap:7px; font-size:9px; letter-spacing:.15em; text-transform:uppercase; color:var(--stone-muted); }
.cal-leg-dot { width:10px; height:10px; border-radius:1px; }

/* add-ons */
.addon-grid { display:grid; grid-template-columns:1fr 1fr; gap:3px; margin-bottom:48px; }
.addon-card { background:var(--cream); border:.5px solid var(--cream-3); padding:24px 20px; cursor:pointer; transition:border-color .3s,background .3s; position:relative; }
.addon-card:hover { border-color:var(--stone-muted); background:var(--cream-2); }
.addon-card.selected { border-color:var(--terracotta); background:#fff; }
.addon-check { position:absolute; top:12px; right:14px; width:18px; height:18px; border-radius:50%; background:var(--terracotta); display:none; align-items:center; justify-content:center; }
.addon-card.selected .addon-check { display:flex; }
.addon-img { width:100%; height:120px; object-fit:cover; display:block; margin-bottom:16px; }
.addon-name { font-family:var(--serif); font-size:14px; color:var(--stone); margin-bottom:5px; }
.addon-price { font-size:9px; font-weight:500; letter-spacing:.2em; text-transform:uppercase; color:var(--sage); }

/* sidebar summary */
.sidebar-title { font-family:var(--serif); font-size:22px; font-style:italic; color:var(--stone); margin-bottom:24px; }
.sidebar-dates { background:var(--cream); border:.5px solid var(--cream-3); padding:20px; margin-bottom:24px; }
.sidebar-dates-label { font-size:9px; font-weight:500; letter-spacing:.22em; text-transform:uppercase; color:var(--stone-muted); margin-bottom:10px; }
.sidebar-dates-value { font-family:var(--serif); font-size:16px; color:var(--stone); }
.sidebar-addon-item { display:flex; justify-content:space-between; align-items:center; padding:12px 0; border-bottom:.5px solid var(--cream-3); font-size:11px; color:var(--stone-muted); }
.sidebar-addon-remove { background:none; border:none; cursor:pointer; color:var(--stone-muted); font-size:14px; opacity:.5; transition:opacity .3s; }
.sidebar-addon-remove:hover { opacity:1; }
.sidebar-divider { height:.5px; background:var(--cream-3); margin:24px 0; }
.concierge-form label { display:block; font-size:9px; font-weight:500; letter-spacing:.25em; text-transform:uppercase; color:var(--stone-muted); margin-bottom:8px; margin-top:18px; }
.concierge-form input,.concierge-form textarea { width:100%; border:none; border-bottom:.5px solid var(--cream-3); background:transparent; padding:10px 0; font-size:12px; font-family:var(--sans); color:var(--stone); outline:none; transition:border-color .3s; }
.concierge-form input:focus,.concierge-form textarea:focus { border-color:var(--stone-muted); }

/* ── SERVICES PAGE ── */
.services-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--cream-3); }
.service-card { background:var(--cream); padding:48px 36px; border-top:3px solid transparent; transition:border-color .3s,background .3s; }
.service-card:hover { border-top-color:var(--terracotta); background:#fff; }
.service-icon { width:36px; height:36px; margin-bottom:24px; }
.service-name { font-family:var(--serif); font-size:20px; color:var(--stone); margin-bottom:12px; }
.service-desc { font-size:12px; font-weight:300; line-height:1.9; color:var(--stone-muted); }
.service-tag { display:inline-block; margin-top:16px; font-size:8px; font-weight:500; letter-spacing:.25em; text-transform:uppercase; color:var(--terracotta); }

/* ── RESPONSIVE ── */
@media (max-width: 1024px) {
  nav { padding:20px 32px; }
  .editorial { grid-template-columns:1fr; padding:80px 32px; }
  .img-stagger { padding:0 32px 80px; grid-template-columns:1fr 1fr; }
  .img-tall { grid-row:span 1; }
  .testi-header { grid-template-columns:1fr; }
  .testi-cards { grid-template-columns:1fr; }
  .arrival { grid-template-columns:1fr; }
  .arrival-img { height:400px; }
  .faq-inner { grid-template-columns:1fr; gap:48px; }
  .cta { grid-template-columns:1fr; }
  .contact-inner { grid-template-columns:1fr; gap:60px; }
  .footer-top { grid-template-columns:1fr 1fr; }
  .booking-layout { grid-template-columns:1fr; }
  .booking-sidebar { position:static; }
  .services-grid { grid-template-columns:1fr 1fr; }
}

@media (max-width: 768px) {
  nav { padding:16px 24px; }
  nav.solid { padding:14px 24px; }
  .nav-links,.nav-cta { display:none; }
  .nav-hamburger { display:flex; }
  nav.glass .nav-hamburger span { background:#fff; }
  .estate-stats { grid-template-columns:1fr 1fr; }
  .stat-cell:last-child { grid-column:span 2; border-right:none; }
  .amenities-top { flex-direction:column; align-items:flex-start; gap:24px; }
  .amenities-sub { text-align:left; }
  .amenity-row { grid-template-columns:1fr 1fr; }
  .img-stagger { grid-template-columns:1fr; padding:0 24px 60px; }
  .img-h1,.img-h2 { height:260px; }
  .testi-section,.faq,.cta,.contact,.amenities-section { padding:60px 24px; }
  .gallery-section { padding:60px 24px; }
  .gallery-masonry,.gallery-masonry.two-col { columns:1; }
  .booking-main { padding:60px 24px; }
  .booking-sidebar { padding:40px 24px; }
  .addon-grid { grid-template-columns:1fr; }
  footer { padding:40px 24px 20px; }
  .footer-top { grid-template-columns:1fr; }
  .services-grid { grid-template-columns:1fr; }
  .img-break-text { flex-direction:column; gap:12px; bottom:28px; left:24px; right:24px; }
}
