/* A consistent editorial grid across the apartment, destination and booking pages. */
:root { --ref-ink:#173b32; --ref-cream:#f5f3ec; --ref-line:#d9e0d8; }
html { scroll-behavior:smooth; }
body { overflow-x:hidden; }
main { min-width:0; }
.section { padding-top:clamp(72px,7vw,108px); padding-bottom:clamp(72px,7vw,108px); }
.section h2 { line-height:1.11; letter-spacing:-.035em; }
.section p { line-height:1.75; }
.eyebrow { line-height:1.45; }
.button,.outline-button,.header-book { transition:background .2s ease,color .2s ease,transform .2s ease; }
.button:hover,.outline-button:hover,.header-book:hover { transform:translateY(-2px); }
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible { outline:3px solid #b68b58; outline-offset:3px; }

/* Home: proof, photography and destination form one deliberate sequence. */
.new-hero { grid-template-columns:46% 54%; min-height:630px; }
.new-hero-copy { padding:clamp(55px,6vw,92px) clamp(34px,5.5vw,90px); }
.new-hero h1 { font-size:clamp(54px,5.2vw,78px); line-height:1.03; max-width:700px; }
.new-hero-copy>p { max-width:580px; font-size:clamp(16px,1.35vw,19px); line-height:1.72; }
.new-hero-photo { min-height:630px; }
.new-hero-photo img { height:100%; object-fit:cover; object-position:center; }
.hero-proof { margin-top:34px; }
.facts { padding-top:24px; padding-bottom:24px; }
.facts>div { min-width:0; }
.photo-story { padding-bottom:92px; }
.photo-story-heading { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(290px,.75fr); column-gap:clamp(42px,8vw,140px); row-gap:24px; align-items:end; margin-bottom:35px; }
.photo-story-heading>.eyebrow { grid-column:1/-1; }
.photo-story-heading h2 { grid-column:1; margin:0; font-size:clamp(42px,4.1vw,62px); }
.photo-story-heading p { grid-column:2; margin:0 0 6px; max-width:470px; font-size:17px; }
.apartment-mosaic { height:min(48vw,600px); min-height:470px; }
.apartment-mosaic figure { overflow:hidden; }
.apartment-mosaic img,.home-photo-strip img { transition:transform .5s ease; }
.apartment-mosaic a:hover img,.home-photo-strip a:hover img { transform:scale(1.035); }
.home-photo-strip { gap:13px; }
.home-photo-strip a { min-width:0; }
.home-photo-strip img { height:100%; }
.destination-statement { grid-template-columns:52% 48%; min-height:500px; }
.destination-image { min-height:500px; }
.destination-image img { object-fit:cover; object-position:center 48%; }
.destination-copy { padding:clamp(58px,6vw,98px) clamp(48px,7vw,115px); }
.destination-copy h2 { max-width:640px; }
.seasons-showcase { padding:clamp(76px,7vw,110px) clamp(24px,7.1vw,115px) clamp(85px,8vw,120px); }
.season-intro { margin-bottom:42px; }
.season-intro h2 { font-size:clamp(46px,5.1vw,75px); line-height:1.08; }
.season-photo-card { height:clamp(410px,36vw,540px); }
.season-photo-card img { height:100%; object-fit:cover; }
.testimonials { padding-top:90px; padding-bottom:95px; }
.testimonials-intro { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:27px; max-width:900px; margin:0 auto 44px; text-align:center; }
.testimonials-heading { max-width:none; }
.testimonials-heading h2 { margin:12px 0 0; font-size:clamp(48px,5vw,72px); line-height:1.08; }
.rating-summary { align-self:center; justify-self:center; border:0; border-top:1px solid #c9d6ca; border-bottom:1px solid #c9d6ca; padding:20px 28px; gap:24px; text-align:left; }
.rating-number { font-size:clamp(66px,6vw,86px); line-height:1; }
.rating-summary b { font-size:20px; letter-spacing:.08em; }
.rating-summary strong { font-size:16px; margin-top:4px; }
.rating-summary small { font-size:12px; }
.testimonial-card { min-height:350px; }
.address-ribbon { display:grid; grid-template-columns:180px minmax(0,1fr) auto; gap:28px; align-items:center; padding-top:28px; padding-bottom:28px; }
.address-ribbon strong { font-size:clamp(16px,1.6vw,21px); line-height:1.4; }
.address-ribbon a { white-space:nowrap; }
.village-news-teaser { grid-template-columns:1fr 1fr; }
.village-news-teaser>div:first-child { padding:clamp(65px,7vw,100px) clamp(42px,7.1vw,115px); }
.village-news-teaser>img { min-height:460px; }
.local-teaser { grid-template-columns:.85fr 1.15fr; gap:7vw; }
.local-teaser img { width:100%; height:470px; }
.closing { padding-top:90px; padding-bottom:95px; }

/* The apartment: room photography leads into a compact, complete photo tour. */
.page-hero.interior { min-height:540px; }
.room-intro { grid-template-columns:.82fr 1.18fr; gap:6vw; }
.room-intro h2 { font-size:clamp(42px,4vw,61px); }
.room-intro-photos { min-height:490px; }
.room-intro-photos img { object-fit:cover; }
.bedrooms .section-heading { align-items:end; }
.bedroom-cards { gap:18px; }
.bedroom-cards article { display:flex; flex-direction:column; }
.bedroom-cards img { width:100%; height:270px; object-fit:cover; }
.bedroom-cards article>div { flex:1; }
.gallery-heading { align-items:end; }
.gallery-heading p { max-width:610px; }
.gallery-tiles { gap:12px; }
.gallery-tile { height:240px; }
.gallery-tile img { height:100%; object-fit:cover; }
.gallery-tile:first-child,.gallery-tile:nth-child(17) { height:auto; }
.amenities { align-items:start; }

/* Seasons: the landscape comes first, followed by useful plans. */
.season-hero { height:600px; }
.season-hero>div { max-width:770px; }
.season-hero h1 { line-height:1.06; }
.season-lead { grid-template-columns:1fr 1fr; gap:clamp(40px,7vw,100px); align-items:end; }
.season-lead p { max-width:590px; }
.image-feature { height:500px; }
.image-feature img { height:100%; object-fit:cover; }
.experience-grid { align-items:stretch; }
.summer-experiences { gap:18px; }
.summer-experiences article img { object-fit:cover; }
.summer-village { grid-template-columns:1.05fr .95fr; }
.summer-village img { width:100%; object-fit:cover; }

/* Addresses: genuine images are large; entries without photos are typographic. */
.directory-hero,.agenda-hero { min-height:440px; }
.directory-nav { scroll-margin-top:80px; }
.directory-section { scroll-margin-top:78px; }
.directory-section h2 { margin-bottom:36px; }
.business-grid { gap:18px; margin-top:0; }
.business-card { min-width:0; }
.business-photo { height:220px; }
.business-photo img:not(.business-logo) { width:100%; height:100%; object-fit:cover; }
.business-body { padding:26px 27px 28px; }
.business-body h3 { min-height:2.2em; line-height:1.15; }
.business-card.text-only { background:#eef2eb; border-color:#d3dfd4; }
.business-card.text-only .business-photo-plain { display:none; }
.business-card.text-only .business-body { padding:38px 30px 30px; }
.business-card.text-only h3 { min-height:0; }
.business-card.text-only p { margin-bottom:25px; }
#tables .business-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
#tables .business-card.text-only { min-height:285px; }
#tables .business-card.text-only .business-body { justify-content:center; }
#tables .residence-card { display:grid; grid-template-columns:43% 57%; min-height:285px; }
#tables .residence-card>img { width:100%; height:100%; min-height:285px; object-fit:cover; }
#tables .residence-card .business-body { padding:clamp(30px,4vw,55px); justify-content:center; }
#tables .residence-card h3 { min-height:0; }
#tables .residence-card p { max-width:580px; }

/* Village news: the live feed remains visible with a clear official fallback. */
.live-news { align-items:start; }
.live-news-intro { position:static; }
.village-events { grid-template-columns:1fr 1fr; }
.village-events img { width:100%; height:430px; object-fit:cover; }

/* Reservation: make the request path apparent above the fold. */
.booking-cover { grid-template-columns:1fr 1fr; min-height:485px; }
.booking-cover>div { padding:clamp(60px,6vw,90px) clamp(40px,7vw,110px); }
.booking-cover h1 { font-size:clamp(50px,5vw,72px); line-height:1.08; }
.booking-cover p { max-width:570px; }
.booking-cover img { height:100%; object-fit:cover; }
.booking-cover-actions { display:flex; flex-wrap:wrap; align-items:center; gap:18px 25px; margin-top:26px; }
.booking-cover-actions .button { background:#f1f0e8; color:var(--ref-ink); border-color:#f1f0e8; }
.booking-cover-actions>a:not(.button) { color:#fff; text-underline-offset:5px; font-size:13px; font-weight:700; }
.booking-trust { padding:20px 5vw; }
.booking-new { scroll-margin-top:78px; grid-template-columns:minmax(0,1.1fr) minmax(340px,.9fr); gap:clamp(40px,7vw,100px); }
.booking-main h2 { margin-bottom:20px; }
.booking-choice { position:sticky; top:24px; }
.booking-choice>img { width:100%; height:260px; object-fit:cover; }
.booking-address { justify-content:flex-start; padding:24px clamp(24px,7.1vw,115px); }
.guest-essentials { grid-template-columns:.6fr 1.4fr; }

@media (max-width:960px) {
  .new-hero { grid-template-columns:46% 54%; min-height:570px; }
  .new-hero-copy { padding:55px 34px; }
  .new-hero h1 { font-size:clamp(44px,5.5vw,58px); }
  .new-hero-photo { min-height:570px; }
  .photo-story-heading { gap:25px; }
  .apartment-mosaic { min-height:420px; }
  .destination-copy { padding:55px 35px; }
  .address-ribbon { grid-template-columns:1fr auto; gap:12px 25px; }
  .address-ribbon span { grid-column:1/-1; }
  .village-news-teaser>div:first-child { padding:60px 35px; }
  .booking-new { grid-template-columns:1fr 1fr; gap:35px; }
}

@media (max-width:700px) {
  .section { padding:66px 24px; }
  .section h2 { font-size:clamp(38px,10vw,50px); }
  .new-hero { display:flex; flex-direction:column; min-height:0; }
  .new-hero-copy { padding:58px 24px 50px; }
  .new-hero h1 { font-size:clamp(48px,12vw,62px); }
  .new-hero-photo { height:390px; min-height:0; }
  .new-hero-photo img { height:100%; }
  .new-hero-actions { align-items:flex-start; }
  .facts { display:grid; grid-template-columns:1fr 1fr; gap:0; padding:12px 18px; }
  .facts>div { padding:17px 8px; text-align:center; }
  .photo-story { padding-bottom:70px; }
  .photo-story-heading { display:block; margin-bottom:26px; }
  .photo-story-heading h2 { margin:16px 0 18px; font-size:clamp(40px,10vw,52px); }
  .photo-story-heading p { font-size:16px; max-width:600px; }
  .apartment-mosaic { min-height:0; height:auto; grid-template-columns:1fr 1fr; grid-template-rows:270px 190px; gap:8px; }
  .apartment-mosaic .mosaic-main { grid-column:1/-1; }
  .home-photo-strip { grid-template-columns:1fr; gap:8px; }
  .home-photo-strip a,.home-photo-strip a:last-child { grid-column:auto; height:230px; }
  .destination-statement { display:flex; flex-direction:column; }
  .destination-image { min-height:0; height:310px; }
  .destination-copy { padding:55px 24px 62px; }
  .seasons-showcase { padding:70px 24px; }
  .season-intro h2 { font-size:clamp(42px,10vw,55px); }
  .season-photo-grid { grid-template-columns:1fr; }
  .season-photo-card { height:360px; }
  .testimonials { padding:70px 24px; }
  .testimonials-intro { display:flex; gap:22px; margin-bottom:34px; }
  .testimonials-heading h2 { font-size:clamp(42px,10vw,55px); }
  .rating-summary { margin-top:0; padding:17px 8px; gap:14px; }
  .rating-number { font-size:58px; }
  .rating-number small { font-size:20px; }
  .rating-summary b { font-size:16px; }
  .rating-summary strong { font-size:13px; }
  .rating-summary small { font-size:11px; }
  .testimonial-card { min-height:330px; }
  .address-ribbon { display:block; padding:28px 24px; }
  .address-ribbon strong { display:block; margin:9px 0 17px; }
  .village-news-teaser { display:flex; flex-direction:column; }
  .village-news-teaser>div:first-child { padding:60px 24px; }
  .village-news-teaser>img { width:100%; height:280px; min-height:0; }
  .local-teaser { grid-template-columns:1fr; gap:28px; }
  .local-teaser img { height:310px; }
  .closing { padding:72px 24px; }
  .room-intro { grid-template-columns:1fr; gap:32px; }
  .room-intro-photos { min-height:0; }
  .room-intro-photos img { height:220px; }
  .bedroom-cards { grid-template-columns:1fr; }
  .bedroom-cards img { height:265px; }
  .gallery-tiles { grid-template-columns:1fr 1fr; gap:8px; }
  .gallery-tile { height:180px; }
  .gallery-tile:first-child,.gallery-tile:nth-child(17) { height:180px; }
  .season-hero { height:590px; }
  .season-hero>div { left:24px; right:24px; }
  .season-lead { grid-template-columns:1fr; gap:20px; }
  .image-feature { height:360px; }
  .summer-experiences { grid-template-columns:1fr; padding:0 24px 66px; }
  .summer-village { grid-template-columns:1fr; }
  .business-grid { grid-template-columns:1fr; }
  .business-body h3 { min-height:0; }
  #tables .business-grid { grid-template-columns:1fr; }
  #tables .residence-card { display:flex; }
  #tables .residence-card>img { min-height:0; height:220px; }
  .directory-hero,.agenda-hero { grid-template-columns:1fr; }
  .live-news,.village-events { grid-template-columns:1fr; }
  .village-events img { height:310px; }
  .booking-cover { grid-template-columns:1fr; min-height:0; }
  .booking-cover>div { padding:58px 24px; }
  .booking-cover h1 { font-size:clamp(48px,11vw,62px); }
  .booking-cover img { height:300px; }
  .booking-trust { grid-template-columns:1fr 1fr; }
  .booking-new { grid-template-columns:1fr; gap:35px; }
  .booking-choice { position:static; }
  .guest-essentials { grid-template-columns:1fr; }
  .booking-address { padding:25px 24px; }
}

@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  .button,.outline-button,.header-book,.apartment-mosaic img,.home-photo-strip img { transition:none; }
}

/* Language selector stays visible on narrow screens, including when the menu is closed. */
.language-switch{display:flex;align-items:center;gap:3px;flex:none;white-space:nowrap;border:1px solid #cad7cc;padding:3px;background:#fff}
.language-switch a{display:grid;place-items:center;min-width:32px;min-height:32px;padding:0 4px;font:800 10px Manrope,sans-serif;letter-spacing:.06em;color:#536b5d}
.language-switch a[aria-current="page"]{background:#183b30;color:#fff}
.language-switch a:focus-visible{outline:2px solid #af895b;outline-offset:2px}
.review-source{justify-content:flex-end}
.review-source a{margin-top:0}
@media(max-width:1100px){.site-header{gap:12px}.desktop-nav{gap:11px}.language-switch a{min-width:28px}}
@media(max-width:900px){.language-switch{margin-left:auto}.menu-toggle{margin-left:0}}
@media(max-width:640px){.site-header{gap:10px;padding:0 14px}.brand{gap:6px}.brand-name{font-size:10px;letter-spacing:.11em}.brand-name small{font-size:7px}.language-switch{padding:2px}.language-switch a{min-width:28px;min-height:30px;font-size:9px}.menu-toggle{font-size:11px;gap:5px}.menu-toggle span{font-size:16px}.review-source a{margin-top:0}}
@media(max-width:360px){.site-header{padding:0 10px}.brand-logo{width:42px;height:42px}.brand-logo img{width:57px;height:57px;transform:translate(-7px,-7px)}.brand-name{font-size:9px}.language-switch a{min-width:25px}}
@media(max-width:1160px) and (min-width:901px){.desktop-nav,.header-book{display:none}.menu-toggle{display:flex;margin-left:0;border:0;background:none;align-items:center;gap:12px;color:var(--ink);font-size:14px;font-weight:800}.language-switch{margin-left:auto}.mobile-nav:not([hidden]){display:flex;position:absolute;z-index:8;top:84px;left:0;right:0;background:#fff;padding:16px 24px 26px;box-shadow:0 12px 25px #102a2522;flex-direction:column}.mobile-nav a{padding:13px 2px;border-bottom:1px solid var(--line);font-size:15px}}
@media(max-width:640px){.site-header .brand,.site-header .language-switch,.site-header .menu-toggle{min-width:0}.booking-cover h1,.new-hero h1,.season-hero h1,.agenda-hero h1,.directory-hero h1{font-size:clamp(43px,11.8vw,53px)}.booking-cover-actions{align-items:flex-start}.booking-cover-actions>a:not(.button){line-height:1.5}.booking-trust span{overflow-wrap:anywhere}.mobile-booking{min-width:0}.mobile-booking>span{overflow:hidden;text-overflow:ellipsis}.mobile-booking>a{flex:none}}
