/* The Villa collection — photographic, restrained, unmistakably Ezulwini. */
@font-face { font-family:'Villa Serif'; src:url('fonts/CormorantGaramond-Regular-Latin.woff2') format('woff2'); font-style:normal; font-weight:400; font-display:swap; }
@font-face { font-family:'Villa Serif'; src:url('fonts/CormorantGaramond-Italic-Latin.woff2') format('woff2'); font-style:italic; font-weight:400; font-display:swap; }
@font-face { font-family:'Villa Sans'; src:url('fonts/Manrope-Variable-Latin.woff2') format('woff2'); font-style:normal; font-weight:400 600; font-display:swap; }
:root {
  --ink:#142e35; --navy:#092e3b; --blue:#086f88; --cyan:#24a4ca;
  --light:#f1f4f2; --line:#d5deda; --muted:#506168;
  --serif:'Villa Serif',Baskerville,'Iowan Old Style',Georgia,serif;
  --sans:'Villa Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;
  --paper:#fcfcf8; --accent:#927342; --gutter:clamp(1.25rem,4.5vw,5rem);
}
html { scroll-padding-top:7rem; }
body { background:var(--paper); line-height:1.8; -webkit-font-smoothing:antialiased; }
h1,h2,h3 { letter-spacing:-.035em; line-height:1; font-weight:400; }
h1,h2,h3 { overflow-wrap:normal; }
h1 { font-size:clamp(3.75rem,7.2vw,7.8rem); }
h2 { font-size:clamp(3rem,5vw,5.5rem); }
h3 { font-size:2.3rem; }
h1 em,h2 em { color:inherit; font-weight:400; }
picture { display:contents; }
img { color:var(--muted); }
.wrap { width:min(1360px,calc(100% - var(--gutter) * 2)); }
.section { padding-block:clamp(4rem,8vw,8.5rem); }
.eyebrow { font-size:.875rem; font-weight:600; letter-spacing:.17em; line-height:1.5; color:var(--blue); margin-bottom:1.5rem; }
.lead { font-size:1.0625rem; line-height:1.95; max-width:44ch; }
.small { font-size:.875rem; }
.button { min-height:54px; border-radius:0; padding:1rem 1.6rem; font-size:.875rem; letter-spacing:.035em; font-weight:600; gap:1.5rem; }
.button:hover { background:#135168; border-color:#135168; }
.button.light { background:var(--paper); border-color:var(--paper); }
.button.light:hover { background:#d9edf0; border-color:#d9edf0; }
.text-link,.button.text-link { font-size:.9375rem; gap:1rem; padding:.65rem 0; }
.actions { gap:1.5rem; }
.preview-bar { color:#d3e7eb; background:var(--navy); padding:.4rem 1rem; font-size:.8125rem; border:0; letter-spacing:.035em; }
.preview-bar strong { color:#fff; font-weight:500; }
.masthead { position:sticky; top:0; z-index:30; background:var(--paper); border-bottom:1px solid var(--line); }
.header-inner { min-height:88px; gap:2rem; }
.brand { gap:.9rem; }
.masthead .brand { min-width:0; flex-shrink:1; }
.masthead .brand-name { min-width:0; overflow-wrap:anywhere; }
.masthead .brand img { flex-shrink:0; }
.brand img { width:49px; height:49px; }
.brand-name { font:500 .95rem/1.4 var(--sans); letter-spacing:.17em; }
.brand-name small { font:400 .75rem/1.7 var(--sans); letter-spacing:.18em; text-transform:uppercase; }
.desktop-nav { gap:clamp(1.2rem,2vw,2.3rem); font-size:.875rem; }
.desktop-nav a { position:relative; border:0; padding-block:1rem; }
.desktop-nav a:after { content:''; position:absolute; left:0; right:100%; bottom:.6rem; height:1px; background:currentColor; transition:right .25s; }
.desktop-nav a:hover:after,.desktop-nav a[aria-current=page]:after { right:0; }
.header-cta .button { min-height:46px; padding:.65rem 1.2rem; }
.mobile-nav[open] summary { color:var(--blue); }
.skip-link { z-index:80; }

/* A complete photographic opening; copy rests against a deliberate dark fade. */
.arrival-hero { min-height:680px; min-height:min(850px,calc(100svh - 115px)); }
.arrival-photo { z-index:-2; object-position:50% 60%; height:100%; width:100%; position:absolute; inset:0; }
.arrival-shade { display:block; background:linear-gradient(180deg,rgba(5,29,34,.04),rgba(5,29,34,.08) 24%,rgba(5,29,34,.5) 51%,rgba(5,29,34,.86)); }
.arrival-content { display:flex; flex-direction:column; align-items:center; justify-content:flex-end; text-align:center; min-height:680px; min-height:min(850px,calc(100svh - 115px)); padding-block:8rem 3.5rem; }
.arrival-content .eyebrow { color:#f7fcfd; margin-bottom:1rem; }
.arrival-content h1 { font-size:clamp(5rem,9.6vw,10.2rem); line-height:.86; max-width:12ch; font-weight:400; letter-spacing:-.045em; }
.arrival-content h1 em { color:#fff; }
.arrival-description { margin-top:1.5rem; font-size:1rem; line-height:1.7; color:#f5f8f5; }
.arrival-actions { gap:1.6rem; justify-content:center; margin-top:1.8rem; }
.video-link { display:flex; flex-direction:row; align-items:center; gap:.9rem; border:0; text-align:left; padding:.6rem .3rem; }
.video-link:before { content:'\25B7'; display:grid; place-items:center; width:42px; height:42px; border:1px solid #b4cbd0; border-radius:50%; font-size:1rem; flex-shrink:0; }
.video-link small { display:block; font-size:.8125rem; color:#d2e5ea; }
.arrival-location { margin-top:2rem; color:#d8e8e9; font-size:.875rem; }
.arrival-note { display:none; }
.seasonal-line { display:grid; grid-template-columns:.8fr 1.5fr auto; gap:2.5rem; padding:2rem 0; }
.seasonal-line .eyebrow { margin:0; font-size:.8125rem; }
.seasonal-line p { padding-left:2.5rem; border-left:1px solid var(--line); }
.seasonal-line strong { font:400 1.65rem/1 var(--serif); }
.seasonal-line .text-link { margin:0; justify-self:end; }
.welcome-story { grid-template-columns:1fr 1.05fr; gap:clamp(3rem,9vw,10rem); }
.welcome-copy .eyebrow:before { content:''; display:block; width:36px; height:1px; background:var(--accent); margin-bottom:2rem; }
.welcome-copy h2 { max-width:12ch; }
.welcome-copy .lead { max-width:40ch; }
.villa-portrait { position:relative; padding:0 0 2.5rem 2rem; }
.villa-portrait:before { content:''; position:absolute; inset:2rem 2rem 0 0; border:1px solid #c8cec6; z-index:-1; }
.villa-portrait img { aspect-ratio:1/1.06; object-fit:cover; object-position:52% center; }
.villa-portrait figcaption { position:absolute; left:3rem; bottom:0; font-size:.8125rem; letter-spacing:.1em; text-transform:uppercase; }
.villa-portrait.team-portrait img { width:100%; height:auto; aspect-ratio:auto; }
.villa-portrait.team-portrait figcaption { position:static; margin-top:1rem; font-size:.875rem; letter-spacing:.04em; }
.guest-service-list { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr)); gap:2rem; margin:2.5rem 0; }
.guest-service-list>div { min-width:0; border-top:1px solid var(--line); padding-top:1.5rem; }
.guest-service-list dt { font:400 2rem/1.15 var(--serif); margin-bottom:.75rem; }
.guest-service-list dd { margin:0; font-size:1rem; }
.gym-note { border-top:1px solid var(--line); padding-top:1.5rem; margin-top:2rem; }
.gym-note h3 { font-size:2rem; margin-bottom:.75rem; }
.private-events { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr)); gap:clamp(2rem,6vw,6rem); align-items:center; }
.celebration-details { min-width:0; border-top:2px solid var(--accent); padding-top:2rem; }
.celebration-details h3 { margin-bottom:1.5rem; }
.celebration-details .button { margin-top:1rem; white-space:normal; }
.conference-intro .occasion-link { display:block; color:#fff; font-size:.9375rem; text-underline-offset:.25em; margin-bottom:1.25rem; }
.chapter-section { background:var(--navy); color:var(--paper); padding-block:clamp(4rem,7vw,7.5rem); }
.chapter-section .eyebrow { color:#a9d4df; }
.section-heading { margin-bottom:3.5rem; }
.chapter-section .lead { color:#c8dde1; }
.chapter-grid { gap:2rem; }
.chapter:nth-child(2) { margin-top:4rem; }
.chapter:nth-child(3) { margin-top:0; }
.chapter .chapter-photo,.chapter:nth-child(3) .chapter-photo { aspect-ratio:4/5; }
.chapter-photo:after { content:''; position:absolute; inset:65% 0 0; background:linear-gradient(transparent,rgba(4,23,28,.42)); pointer-events:none; }
.chapter-photo img { transition:transform .75s cubic-bezier(.2,.65,.3,1); }
.chapter:hover img { transform:scale(1.035); }
.chapter-index { z-index:1; background:none; color:#fff; left:1.25rem; bottom:1rem; padding:0; font:400 2.1rem/1 var(--serif); }
.chapter h3 { font-size:2.75rem; margin-top:1.5rem; }
.chapter p { color:#c4d9df; font-size:1rem; max-width:35ch; }
.chapter-link { border-color:#47616a; color:#e3f3f5; margin-top:1.5rem; padding-top:1rem; }
.seraphic-invitation { grid-template-columns:.9fr 1fr; gap:clamp(3rem,10vw,10rem); }
.seraphic-invitation figure { max-width:none; position:relative; }
.seraphic-invitation img { height:auto; aspect-ratio:4/5; object-position:center; }
.seraphic-invitation h2 { font-size:clamp(3.3rem,5.7vw,6rem); }
.invitation { background:#e7efed; color:var(--ink); border-block:1px solid var(--line); }
.invitation-inner { padding-block:4.5rem; }
.invitation .eyebrow { color:var(--blue); }
.invitation h2 { font-size:clamp(3rem,5vw,5.5rem); }
.invitation h2 em { color:var(--ink); }
.invitation p:not(.eyebrow) { color:var(--muted); }
.invitation .button.light { background:var(--navy); color:#fff; border-color:var(--navy); }

/* Rooms: a photographic spread, then room categories as clear rate cards. */
.room-opening { grid-template-columns:1fr 1.4fr; gap:0; width:100%; padding:0; background:#e9eeeb; align-items:stretch; }
.room-opening>div { padding:5rem 3.5rem 5rem max(var(--gutter),calc((100vw - 1360px)/2)); align-self:center; z-index:1; }
.room-opening h1 { font-size:clamp(4rem,6.3vw,7.2rem); }
.room-opening .lead { margin-top:1.7rem; font-size:1rem; }
.room-opening figure { position:relative; }
.room-opening img { width:100%; height:100%; min-height:660px; object-fit:cover; object-position:57% center; }
.room-opening figcaption { position:absolute; bottom:1rem; right:1rem; color:#fff; background:rgba(6,36,43,.82); padding:.5rem .85rem; font-size:.8125rem; }
.gallery-section { background:var(--paper); }
.gallery-section .section-heading { margin-bottom:2rem; }
.photo-gallery { gap:1.5rem; align-items:start; scroll-snap-type:x proximity; }
.gallery-slide { flex-basis:calc((100% - 3rem)/3); }
.gallery-slide:nth-child(2) { padding-top:3rem; }
.gallery-slide img { aspect-ratio:4/5; object-position:55% center; }
.gallery-slide figcaption { flex-direction:column; gap:.35rem; padding-block:1rem; font-size:1.1rem; }
.gallery-slide figcaption span:first-child { font-family:var(--serif); font-size:1.8rem; }
.photo-disclosure { font-size:.875rem; margin-top:1.5rem; }
#room-rates { border-top:1px solid var(--line); }
.room-categories { display:grid; grid-template-columns:1fr 1fr; border:0; gap:1.5rem; }
.room-category { position:relative; display:grid; grid-template-columns:1fr 1fr; gap:1.5rem; border:1px solid #bdcdc9; padding:2.5rem; background:#f0f4f1; transition:background .2s; }
.room-category:hover { background:#e7efec; }
.category-number { display:block; position:absolute; top:2rem; right:2rem; font:400 1.9rem/1 var(--serif); color:var(--blue); }
.category-title { grid-column:1/-1; padding-right:2rem; }
.category-title .eyebrow { font-size:.8125rem; margin-bottom:.7rem; }
.category-title h3 { font-size:2.7rem; }
.category-rate { padding-top:1.5rem; border-top:1px solid #c7d4cf; }
.category-rate strong { font-size:3.3rem; font-variant-numeric:lining-nums tabular-nums; }
.room-category .text-link { grid-column:1/-1; justify-self:start; margin-top:.25rem; }
.rate-comparison { border-bottom:1px solid var(--line); padding-bottom:.6rem; }
.rate-comparison summary { color:var(--blue); }
.booking-options { gap:0; border:1px solid var(--line); }
.booking-option { border:0; padding:2.5rem; }
.booking-option+.booking-option { border-left:1px solid var(--line); }
.booking-option h3 { font-size:2rem; }
.booking-option p { font-size:1rem; }
.booking-option .button { margin-top:auto; }
.booking-option p:last-of-type { margin-bottom:1.5rem; }
.guest-information h2 { font-size:clamp(3rem,4.5vw,4.8rem); }
.guest-policy-grid { gap:2.5rem; }
.guest-policy-grid article { border-top:2px solid #c0cec6; }
.guest-policy-grid h3,.cancellation-policy h3 { font-size:2rem; }
.guest-policy-grid p,.cancellation-policy p,.cancellation-policy li { font-size:1rem; }
.cancellation-policy { max-width:none; display:grid; grid-template-columns:1fr 1.8fr; gap:1rem 4rem; padding:2rem; background:var(--light); border:0; }
.cancellation-policy h3 { grid-row:span 3; margin:0; max-width:20ch; }
.cancellation-policy p { margin:0; }
.cancellation-policy ul { margin:0; }

/* A separate dining mood, carried through the complete printed-menu content. */
.seraphic-opening { grid-template-columns:.9fr 1.1fr; background:#132e30; }
.seraphic-title { padding:4rem 3rem 4rem max(var(--gutter),calc((100vw - 1360px)/2)); }
.seraphic-title h1 { font-size:clamp(4.8rem,7.4vw,8.5rem); }
.seraphic-title h1 em { color:#fff; }
.seraphic-title .eyebrow { color:#bed4ce; }
.seraphic-title .lead { color:#d6e3df; font-size:1rem; }
.seraphic-photo { min-height:690px; }
.seraphic-photo img { object-position:48% 50%; }
.bistro-subnav { gap:2rem; }
.bistro-subnav a { text-decoration:none; border-bottom:1px solid #68827c; font-size:.875rem; }
.bistro-story { grid-template-columns:.75fr 1.25fr; gap:clamp(3rem,9vw,9rem); }
.bistro-story h2 { font-size:clamp(3rem,4.6vw,5rem); }
.seraphic-brand-window { mix-blend-mode:multiply; }
.tasting-grid { gap:3rem; }
.tasting-column h3 { font-family:var(--sans); font-size:.875rem; letter-spacing:.12em; }
.menu-list li { padding-block:1.4rem; }
.menu-list li>span:first-child { font-size:1.8rem; line-height:1.1; }
.cocktail-story { grid-template-columns:.9fr 1fr; gap:clamp(3rem,9vw,9rem); }
.cocktail-story img { height:auto; aspect-ratio:4/5; }
.cocktail-story .menu-list { margin-top:2rem; }
.menu-opening { padding-block:3rem 2.5rem; background:#e9efeb; }
.breadcrumb { margin-bottom:3rem; }
.menu-heading { align-items:center; }
.menu-heading h1 { font-size:clamp(4.2rem,6.3vw,7rem); }
.menu-type { font-size:1.8rem; }
.menu-opening-actions { max-width:23rem; border-left:1px solid #becfc5; padding-left:3rem; }
.menu-notice { margin-top:2.2rem; font-size:.875rem; }
.catalog-layout { grid-template-columns:220px minmax(0,1fr); gap:5rem; padding-block:4.5rem 1rem; }
.catalog-nav { top:7rem; max-height:calc(100svh - 8rem); }
.catalog-nav .eyebrow { font-size:.8125rem; }
.category-links a { font-size:.875rem; border-bottom:1px solid #e0e5df; padding-block:.75rem; }
.catalog-section { margin-bottom:4.5rem; scroll-margin-top:7rem; }
.catalog-section-heading { border-color:#9bb0a5; padding-bottom:1.1rem; }
.catalog-section-heading h2 { font-size:3.2rem; }
.catalog-section-heading>span { font-family:var(--serif); font-size:1.5rem; }
.catalog-items { gap:0 3rem; }
.catalog-item { padding-block:1.6rem; }
.dish-heading { align-items:start; }
.dish-heading h3 { font:400 1.5rem/1.2 var(--serif); letter-spacing:-.01em; }
.dish-price { font-size:.9375rem; font-variant-numeric:tabular-nums; }
.catalog-item p { font-size:1rem; line-height:1.8; }
.section-note { font-size:.875rem; }

/* Conferences and contact: inviting photography, useful details. */
.conference-opening { width:100%; position:relative; padding:0; background:var(--navy); color:#fff; isolation:isolate; }
.conference-heading { position:relative; z-index:1; width:min(1360px,calc(100% - var(--gutter) * 2)); margin:auto; min-height:630px; align-items:end; padding-block:6rem 4rem; grid-template-columns:1.5fr 1fr; }
.conference-heading h1 { font-size:clamp(4.3rem,7.5vw,8rem); }
.conference-heading h1 em,.conference-heading .eyebrow { color:#fff; }
.conference-intro { border-color:#8ba3a7; }
.conference-intro p { color:#f1f7f5; }
.conference-intro .button { background:var(--paper); border-color:var(--paper); color:var(--navy); }
.conference-opening figure { position:absolute; inset:0; z-index:0; }
.conference-opening figure:after { content:''; position:absolute; inset:0; background:linear-gradient(180deg,rgba(2,24,31,.12),rgba(2,24,31,.38) 30%,rgba(2,24,31,.88)); }
.conference-opening figure img { width:100%; height:100%; object-position:center 65%; }
.conference-opening figcaption { display:none; }
.conference-offer { grid-template-columns:.8fr 1.2fr; gap:4.5rem; }
.conference-offer h2 { font-size:clamp(3.1rem,4.6vw,5.2rem); }
.conference-pricing { background:#e9efeb; color:var(--ink); padding:3rem; border-top:3px solid var(--navy); }
.price-pair { gap:1.5rem; }
.price-pair .eyebrow { color:var(--blue); font-size:.8125rem; }
.price-amount { font-size:clamp(3rem,4.3vw,4.8rem); }
.price-plus { color:var(--accent); }
.package-relationship,.quote-bottom .small { color:var(--muted); }
.package-inclusions { border-color:#b5c9bf; }
.package-inclusions h3 { font-size:2rem; }
.package-inclusions ul { color:var(--ink); font-size:.9375rem; }
.package-inclusions li:before { color:var(--blue); }
.quote-bottom .button.light { background:var(--navy); border-color:var(--navy); color:#fff; }
.meeting-grid { gap:6rem; }
.numbered span { font-size:2.5rem; }
.contact-opening { padding-block:4rem 0; gap:6rem; grid-template-columns:1fr 1fr; }
.contact-opening h1 { font-size:clamp(4rem,6.6vw,7.2rem); }
.contact-opening img { height:390px; aspect-ratio:5/4; object-position:center; }
.contact-grid { gap:5rem; }
.contact-main { padding:3rem; position:relative; border-top:3px solid #2ea3b9; }
.contact-main h2 { font-family:var(--serif); font-size:clamp(2.5rem,3.5vw,4rem); }
.contact-main .eyebrow { color:#b1dce5; }
.contact-main p:not(.eyebrow) { font-size:1rem; }
.contact-main .small { font-size:.875rem!important; }
.contact-alternatives { margin-top:3rem; }
.contact-alternatives h3 { font-size:2rem; }
.contact-channels { gap:1.2rem; }
.contact-channels a { font-size:1rem; }
.contact-label { font-size:.8125rem; letter-spacing:.05em; }
.visit-details h3 { font-size:2.3rem; }
.visit-details section { padding-bottom:2.5rem; }

/* A legible close, with a consistent route back to a person. */
.footer { background:var(--navy); padding-block:5rem 1.7rem; }
.footer-top { grid-template-columns:1.1fr .8fr 1.25fr; gap:4rem; }
.footer .brand-name { font-size:1.1rem; }
.footer .brand { margin-bottom:2rem; }
.footer .brand img { width:54px; height:54px; }
.footer h2 { margin-bottom:1.5rem; font-size:.8125rem; letter-spacing:.15em; }
.footer .contact-channels { grid-template-columns:1fr 1fr; gap:1rem 1.5rem; }
.footer .contact-channels p:first-child { grid-column:1/-1; }
.footer .contact-channels a { font-size:.9375rem; }
.footer .contact-label { font-size:.8125rem; }
.footer p { font-size:.9375rem; line-height:1.9; }
.footer-bottom { font-size:.8125rem; margin-top:4rem; }
.mobile-booking { display:none; }

@media (min-width:1101px) {
  .header-cta { display:block; }
  .room-opening .actions { flex-direction:column; align-items:flex-start; }
}
@media (max-width:1100px) {
  .header-inner { gap:1rem; }
  .header-cta { display:block; }
  .desktop-nav { gap:1rem; }
  .brand-name { font-size:.875rem; letter-spacing:.1em; }
  .brand img { width:42px; height:42px; }
  .header-cta .button { padding:.6rem .8rem; }
  .chapter-grid { gap:1.4rem; }
  .chapter h3 { font-size:2.25rem; }
  .room-opening>div { padding:3.5rem 2.5rem; }
  .room-opening img { min-height:610px; }
  .room-category { padding:2rem; }
  .category-title h3 { font-size:2.5rem; }
  .category-number { right:1.3rem; top:1.8rem; }
  .category-rate strong { font-size:3rem; }
  .booking-options { grid-template-columns:1fr 1fr; }
  .booking-option.primary { grid-column:1/-1; }
  .booking-option+.booking-option { border-top:1px solid var(--line); }
  .seraphic-photo { min-height:630px; }
  .seraphic-title { padding:3.5rem 2rem; }
  .seraphic-title h1 { font-size:clamp(4.5rem,8vw,6rem); }
  .conference-offer { grid-template-columns:1fr; gap:3rem; }
  .conference-offer>div:first-child { max-width:none; }
  .conference-offer>div:first-child h2 br { display:none; }
  .conference-heading { gap:2.5rem; }
  .price-amount { font-size:4.7rem; }
  .catalog-layout { gap:2.5rem; grid-template-columns:175px minmax(0,1fr); }
  .catalog-items { grid-template-columns:1fr; }
  .contact-grid,.contact-opening { gap:3rem; }
  .footer-top { gap:3rem; grid-template-columns:1fr 1.2fr; }
  .footer-top>div:first-child { grid-column:1/-1; }
}
@media (max-width:900px) {
  .desktop-nav { display:none; }
  .header-cta { margin-left:auto; }
  .mobile-nav { display:block; }
  .mobile-nav summary { cursor:pointer; padding:.7rem; min-height:44px; }
  .mobile-nav[open] { position:static; }
  .mobile-nav[open] nav { position:absolute; top:100%; left:0; right:0; background:var(--paper); display:grid; padding:1rem var(--gutter) 1.8rem; box-shadow:0 18px 20px #082d4212; border-bottom:1px solid var(--line); max-height:calc(100svh - 100px); overflow:auto; }
  .mobile-nav a { padding:.7rem 0; text-decoration:none; border-bottom:1px solid var(--line); min-height:44px; }
  .welcome-story { gap:3rem; }
  .seraphic-invitation,.cocktail-story,.bistro-story { gap:3rem; }
  .cancellation-policy { gap:1rem 2.5rem; }
}
@media (max-width:760px) {
  html { scroll-padding-top:6rem; }
  body { padding-bottom:calc(65px + env(safe-area-inset-bottom,0px)); }
  .wrap { width:calc(100% - 2.5rem); }
  .section { padding-block:4rem; }
  h1 { font-size:clamp(3.5rem,13vw,5rem); }
  h2 { font-size:clamp(2.9rem,10.5vw,4rem); }
  h1,h2,h3 { overflow-wrap:break-word; }
  .eyebrow { letter-spacing:.12em; margin-bottom:1.15rem; }
  .header-inner { flex-wrap:nowrap; min-height:76px; padding-block:.65rem; }
  .brand { gap:.65rem; }
  .brand-name { font-size:.8125rem; letter-spacing:.12em; }
  .brand-name small { font-size:.75rem; letter-spacing:.1em; }
  .brand img { width:42px; height:42px; }
  .header-cta { display:none; }
  .mobile-nav { margin-left:auto; }
  .mobile-nav[open] { width:auto; margin-left:auto; }
  .preview-bar { font-size:.75rem; padding:.4rem .7rem; }
  .arrival-hero { min-height:650px; }
  .arrival-photo { position:absolute; inset:0; width:100%; height:100%; z-index:-2; object-position:50% center; }
  .arrival-content { min-height:650px; padding-block:7rem 2.5rem; }
  .arrival-shade { display:block; background:linear-gradient(180deg,rgba(4,28,34,.02),rgba(4,28,34,.16) 20%,rgba(4,28,34,.76) 50%,rgba(4,28,34,.93)); }
  .arrival-content h1 { font-size:clamp(4.5rem,20vw,7rem); max-width:9ch; }
  .arrival-content .eyebrow { font-size:.8125rem; margin-bottom:1.2rem; }
  .arrival-description { font-size:.9375rem; margin-top:1.5rem; }
  .arrival-actions { flex-direction:column; gap:.65rem; margin-top:1.5rem; }
  .arrival-actions .button { width:auto; min-width:200px; }
  .arrival-location { margin-top:1.1rem; font-size:.8125rem; }
  .video-link { min-height:48px; gap:.7rem; }
  .video-link:before { width:36px; height:36px; }
  .video-link small { font-size:.75rem; }
  .seasonal-line { display:grid; grid-template-columns:1fr; gap:.6rem; padding-block:1.5rem; }
  .seasonal-line p { border:0; padding:0; }
  .seasonal-line .text-link { justify-self:start; }
  .welcome-story,.seraphic-invitation,.bistro-story,.cocktail-story { grid-template-columns:1fr; gap:2.5rem; }
  .welcome-copy h2 { max-width:14ch; }
  .welcome-copy .lead { max-width:none; }
  .villa-portrait { padding:0 0 2.5rem 1.25rem; }
  .villa-portrait:before { inset:1.25rem 1.25rem 0 0; }
  .villa-portrait img { aspect-ratio:1.15; }
  .villa-portrait figcaption { left:2rem; }
  .chapter-section { padding-block:4rem; }
  .chapter-grid { grid-template-columns:1fr; gap:3rem; }
  .chapter:nth-child(2),.chapter:nth-child(3) { margin-top:0; }
  .chapter .chapter-photo,.chapter:nth-child(3) .chapter-photo { aspect-ratio:5/4; }
  .chapter h3 { font-size:2.8rem; }
  .chapter p { max-width:none; }
  .chapter-link { margin-top:1.1rem; }
  .seraphic-invitation h2 { font-size:3.6rem; }
  .seraphic-invitation img { height:auto; aspect-ratio:5/4; object-position:center 50%; }
  .invitation-inner { padding-block:3.5rem; }
  .invitation h2 { font-size:3.5rem; }
  .room-opening { width:100%; grid-template-columns:1fr; }
  .room-opening>div { padding:3rem 1.25rem; }
  .room-opening h1 { font-size:clamp(3.7rem,14vw,5.2rem); }
  .room-opening .lead { max-width:none; }
  .room-opening img { min-height:0; height:auto; aspect-ratio:1.15; object-position:center; }
  .room-opening figcaption { font-size:.75rem; }
  .photo-gallery { gap:1rem; }
  .gallery-slide { flex-basis:86%; }
  .gallery-slide:nth-child(2) { padding-top:0; }
  .gallery-slide img { aspect-ratio:4/4.5; }
  .gallery-slide figcaption { align-items:flex-start; }
  .gallery-slide figcaption span:first-child { max-width:none; }
  .room-categories { grid-template-columns:1fr; gap:1.1rem; }
  .room-category { padding:1.8rem; gap:1.25rem; }
  .category-title h3 { font-size:2.6rem; }
  .category-title { padding-right:1rem; }
  .category-number { top:1.8rem; font-size:1.5rem; }
  .category-rate strong { font-size:3.2rem; }
  .booking-options { grid-template-columns:1fr; }
  .booking-option.primary { grid-column:auto; }
  .booking-option { padding:2rem; }
  .booking-option+.booking-option { border-left:0; }
  .guest-policy-grid { grid-template-columns:1fr; gap:2rem; }
  .cancellation-policy { display:block; padding:1.5rem; }
  .cancellation-policy h3 { margin-bottom:1.2rem; max-width:none; }
  .cancellation-policy ul { margin-block:1.2rem; }
  .seraphic-opening { grid-template-columns:1fr; }
  .seraphic-title { padding:3.3rem 1.25rem; }
  .seraphic-title h1 { font-size:clamp(4.5rem,18vw,6.5rem); }
  .seraphic-photo { min-height:360px; }
  .bistro-story h2 { font-size:3.5rem; }
  .tasting-grid { grid-template-columns:1fr; gap:2.3rem; }
  .cocktail-story img { height:auto; aspect-ratio:4/5; }
  .conference-heading { grid-template-columns:1fr; gap:1.8rem; min-height:670px; padding-block:7rem 3rem; align-content:end; }
  .conference-heading h1 { font-size:clamp(3.7rem,14vw,5.5rem); }
  .conference-intro { padding:0; border:0; }
  .conference-opening figure img { height:100%; object-position:55% center; }
  .conference-opening figure:after { background:linear-gradient(180deg,rgba(2,24,31,.1),rgba(2,24,31,.68) 30%,rgba(2,24,31,.9)); }
  .conference-offer { gap:2.5rem; }
  .conference-offer>div:first-child h2 br { display:initial; }
  .conference-pricing { padding:2rem 1.3rem; }
  .price-pair { gap:.7rem; }
  .price-pair .eyebrow { min-height:42px; font-size:.75rem; letter-spacing:.025em; }
  .price-amount { font-size:clamp(2.6rem,10.5vw,4rem); }
  .price-plus { font-size:1.8rem; }
  .package-inclusions ul { grid-template-columns:1fr; }
  .package-relationship { text-align:left; }
  .meeting-grid,.contact-grid { grid-template-columns:1fr; gap:2.5rem; }
  .contact-opening { grid-template-columns:1fr; gap:2rem; padding-top:3rem; }
  .contact-opening h1 { font-size:clamp(3.8rem,14vw,5rem); }
  .contact-opening img { height:auto; aspect-ratio:1.3; }
  .contact-main { padding:2rem 1.5rem; }
  .contact-main h2 { font-size:clamp(2.25rem,9vw,3.3rem); overflow-wrap:anywhere; }
  .contact-alternatives .contact-channels { grid-template-columns:1fr; }
  .menu-opening { padding-block:2rem; }
  .menu-heading { display:block; }
  .menu-heading h1 { font-size:clamp(3.9rem,14vw,5.2rem); }
  .menu-opening-actions { max-width:none; padding:0; border:0; margin-top:2rem; flex-direction:row; }
  .menu-type { font-size:1.6rem; }
  .catalog-layout { display:block; padding-block:2rem 0; }
  .catalog-nav { position:static; max-height:none; }
  .category-links { display:flex; flex-direction:row; overflow:auto; }
  .category-links a { flex:0 0 auto; padding:.65rem 1rem; border:1px solid #bacbc4; }
  .catalog-section { scroll-margin-top:6rem; margin-bottom:3rem; }
  .catalog-section-heading h2 { font-size:2.6rem; }
  .catalog-items { grid-template-columns:1fr; }
  .dish-heading h3 { font-size:1.6rem; }
  .original-menu-pages { grid-template-columns:1fr; }
  .footer { padding-block:3.5rem 2rem; }
  .footer-top { grid-template-columns:1fr; gap:2.5rem; }
  .footer-top>div:first-child { grid-column:auto; }
  .footer .contact-channels { grid-template-columns:1fr 1fr; }
  .footer-bottom { margin-top:2.5rem; gap:.7rem; }
  .mobile-booking { display:grid; grid-template-columns:1fr 1fr; position:fixed; z-index:40; left:0; right:0; bottom:0; padding-bottom:env(safe-area-inset-bottom,0); background:var(--paper); border-top:1px solid var(--line); box-shadow:0 -4px 20px #092e3b0d; }
  .mobile-booking a { display:grid; place-items:center; min-height:60px; padding:.8rem .5rem; color:var(--navy); text-decoration:none; font-size:.875rem; }
  .mobile-booking a:last-child { background:var(--navy); color:#fff; }
}
@media (max-width:370px) {
  .brand-name { font-size:.75rem; letter-spacing:.08em; }
  .brand-name small { font-size:.75rem; }
  .brand img { width:35px; height:35px; }
  .price-pair { grid-template-columns:1fr; gap:1rem; }
  .price-pair .eyebrow { min-height:0; }
  .dish-heading { flex-wrap:wrap; }
  .footer .contact-channels { grid-template-columns:1fr; }
}
@media (prefers-reduced-motion:no-preference) {
  .arrival-content>*,.room-opening>div>* { animation:arrive .8s ease both; }
  .arrival-content h1 { animation-delay:.08s; }
  .arrival-description { animation-delay:.15s; }
  .arrival-actions { animation-delay:.2s; }
  @keyframes arrive { from { opacity:.2; transform:translateY(14px); } to { opacity:1; transform:translateY(0); } }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*:before,*:after { animation:none!important; transition:none!important; }
}
@media print {
  .masthead { position:static; }
  .mobile-booking,.preview-bar { display:none; }
  body { padding:0; }
}
