/* Maison DuBois — shared visual language and interior compositions.
   Loaded after the legacy base; motion.css owns all animation preferences. */
:root {
  --ink: #243027;
  --dark: #19291f;
  --paper: #faf7f0;
  --white: #fffdf7;
  --muted: #65695e;
  --line: #ddd7ca;
  --accent: #7b653d;
  --gold: #b99b60;
  --serif: 'Cormorant Garamond', Georgia, serif;
  --sans: 'Manrope', Arial, sans-serif;
  --surface: #f0ebe0;
  --space-small: clamp(16px, 2vw, 28px);
  --space-medium: clamp(28px, 4vw, 56px);
  --space-section: clamp(48px, 7vw, 96px);
  --invitation-gap: clamp(32px, 4vw, 56px);
  --reading-width: 68ch;
}

.faq details > p a {
  color: var(--ink);
  text-decoration: underline;
  text-decoration-color: var(--accent);
  text-underline-offset: 3px;
}

/* Shared controls: natural wrapping, generous touch areas, visible focus. */
.button {
  font-family: var(--sans);
  font-size: .75rem;
  line-height: 1.65;
  letter-spacing: .09em;
  text-transform: uppercase;
  min-height: 49px;
  padding: 14px 23px;
  white-space: normal;
  text-align: center;
  max-width: 100%;
}
.button-gold, .button-cream { background: var(--gold); border-color: var(--gold); color: #182219; }
.button-outline { background: transparent; border-color: var(--gold); color: var(--ink); }
.text-link { line-height: 1.7; }
.menu-toggle { min-width: 44px; min-height: 44px; }
.language-label select { min-height: 44px; }
.room-filter button, .breadcrumbs a { min-height: 44px; display: inline-flex; align-items: center; }
:is(.room-page-copy,.editorial-row,.story-copy,.meeting-enquiry,.tea-contact,.nearby-grid) a { overflow-wrap: anywhere; }
.subpage:not(.rooms-page) h1, .subpage:not(.rooms-page) h2, .subpage:not(.rooms-page) h3 { text-wrap: balance; overflow-wrap: break-word; hyphens: auto; }
.subpage:not(.rooms-page) :is(.editorial-row,.room-page-lead,.story-opening,.meeting-enquiry,.tea-contact)>* { min-width: 0; }
.subpage:not(.rooms-page) :is(section,article,nav)[id] { scroll-margin-top: 108px; }
.breadcrumbs { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 12px; line-height: 1.6; }
.subpage:not(.rooms-page) .page-intro { padding-block: var(--space-medium) var(--space-section); }
.subpage:not(.rooms-page) .page-intro h1 { font-size: clamp(3.3rem,6.2vw,6.2rem); line-height: 1.05; max-width: 17ch; }
.subpage:not(.rooms-page) .page-intro>p { max-width: var(--reading-width); font: 1.15rem/1.8 Georgia,serif; }
.subpage:not(.rooms-page) .page-intro .gold-rule { margin-block: 25px; }
.subpage:not(.rooms-page) .page-intro .eyebrow { margin-block: 16px; }
.subpage:not(.rooms-page) .editorial-row { gap: 7%; padding-block: 0 var(--space-section); }
.subpage:not(.rooms-page) .editorial-row h2, .subpage:not(.rooms-page) .story-copy h2 { line-height: 1.12; }
.subpage:not(.rooms-page) .editorial-row p { max-width: var(--reading-width); }
.subpage:not(.rooms-page) .editorial-photo { height: auto; aspect-ratio: 5/4; }
.subpage:not(.rooms-page) .editorial-photo img { width: 100%; height: 100%; object-fit: cover; }
.subpage:not(.rooms-page) .page-cta { margin-block: var(--space-medium) var(--space-section); padding: var(--space-medium); }
.subpage:not(.rooms-page) .page-more { padding-top: var(--space-medium); }

/* Shortcuts remain regular in-page links, never a second sticky navigation. */
.page-shortcuts { display: flex; flex-wrap: wrap; gap: 12px 28px; margin-top: 28px; }
.page-shortcuts a { padding-block: 10px; }
.page-practical { padding: var(--space-medium); background: var(--surface); border-top: 1px solid var(--gold); }
.page-practical h2 { font: clamp(2rem,3vw,2.8rem)/1.15 var(--serif); margin-bottom: 20px; }
.page-practical p { font: 1rem/1.85 Georgia,serif; color: var(--muted); }

/* La Maison: a portrait, numbered chapters, archives and a panoramic salon. */
.house-page .page-intro { padding-bottom: var(--space-medium); }
.house-page.subpage .page-intro h1 { max-width: none; font-size: clamp(3rem, 5.5vw, 5.4rem); }
.house-page #story-origins { font-size: clamp(2rem, 2.8vw, 2.9rem); }
.house-page .story-opening { grid-template-columns: .9fr 1.05fr; gap: 8%; padding-bottom: var(--space-section); align-items: start; }
.house-page .story-facade { margin: 0; }
.house-page .story-facade img { aspect-ratio: 4/5; width: 100%; object-position: center 45%; }
.house-page .story-copy p { max-width: var(--reading-width); }
.chapter-index { display: block; font: .8rem/1.6 var(--sans); letter-spacing: .2em; color: var(--accent); margin-bottom: 24px; }
.house-page .story-chapter { padding-block: var(--space-medium); margin-top: var(--space-medium); }
.house-page .story-reading { max-width: 800px; }
.house-page .story-photos { grid-template-columns: 1.5fr 1fr; gap: var(--space-medium); align-items: center; margin-top: var(--space-medium); }
.house-page .story-archives { padding-top: 0; }
.house-page .story-salon { max-width: none; margin-top: var(--space-medium); }
.house-page .story-salon img { max-height: 660px; width: 100%; object-fit: cover; }
.house-page .story-conclusion { background: transparent; padding: var(--space-medium); border-top: 1px solid var(--line); }
.story-room-mosaic { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-top: var(--space-medium); }
.story-room-tile { position: relative; display: block; min-width: 0; overflow: hidden; aspect-ratio: 3 / 2; }
.story-room-tile:first-child { grid-column: span 2; grid-row: span 2; aspect-ratio: auto; }
.story-room-tile img { display: block; width: 100%; height: 100%; object-fit: cover; }
.story-room-tile::after { content: ''; position: absolute; inset: 40% 0 0; background: linear-gradient(transparent, rgb(25 41 31 / 88%)); pointer-events: none; }
.story-room-tile span { position: absolute; z-index: 1; bottom: 14px; left: 18px; right: 12px; color: #fffdf7; font: 500 clamp(1.15rem, 2vw, 1.7rem)/1.2 'Cormorant Garamond', Georgia, serif; }
.story-room-tile:is(:hover, :focus-visible) span { text-decoration: underline; text-underline-offset: 5px; }
.story-room-tile:focus-visible { outline: 3px solid var(--gold); outline-offset: 4px; }
@media (max-width: 700px) {
  .story-room-mosaic { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .story-room-tile:first-child { grid-row: auto; aspect-ratio: 3 / 2; }
  .story-room-tile span { left: 10px; bottom: 10px; font-size: 1.15rem; }
}

/* The room directory retains its established composition in style.css. */

/* Individual rooms: factual strip, large photograph, equipment, mosaic. */
.room-calendar[hidden] { display:none; }
.room-calendar { padding:clamp(22px,4vw,48px); margin-block:40px; background:var(--surface); border-top:2px solid var(--gold); }
.room-calendar h2 { font-size:clamp(2rem,3vw,3rem); margin-bottom:14px; }
.room-calendar>p { max-width:70ch; line-height:1.8; color:var(--muted); }
.room-calendar [role="status"] { margin-block:18px; }
.room-calendar [role="status"]:empty { margin:0; }
.room-calendar [data-calendar-engine] { min-width:0; margin-top:24px; }
.room-calendar iframe { width:100%; border:0; }
.room-calendar-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:24px; }
.room-calendar-actions [hidden] { display:none; }
@media(max-width:640px){.room-calendar{padding:20px 14px}.room-calendar-actions .button{width:100%}}
.room-extra-beds-wrap { padding-block: 0 36px; }
.room-extra-beds { padding:20px 0 0; border-top:1px solid var(--line); color:var(--muted); }
.room-extra-beds h2 { font-family:var(--sans); font-size:.95rem; font-weight:600; line-height:1.5; margin-bottom:6px; color:var(--ink); }
.room-extra-beds p { font-size:.9rem; line-height:1.8; max-width:85ch; }
.room-extra-bed-hint { display:block; font-size:.85rem; color:var(--muted); margin-top:4px; }
.room-detail { --room-tint: #eee8dd; }
.room-zen { --room-tint: #e9ece3; }
.room-antan { --room-tint: #f0e5da; }
.room-locloise { --room-tint: #ece7dc; }
.room-safari { --room-tint: #eee5d5; }
.room-detail .room-page-intro { padding-bottom: 28px; }
.room-summary-strip { display: flex; flex-wrap: wrap; gap: 14px 32px; padding-block: 20px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); margin-bottom: 32px; font-size: .9rem; line-height: 1.75; }
.room-summary-strip strong { font-weight: 600; }
.room-detail .room-page-lead { grid-template-columns: 1.45fr 1fr; gap: 4%; align-items: start; }
.room-detail .room-main-photo { height: auto; aspect-ratio: 6/5; }
.room-detail .room-main-photo img { width: 100%; height: 100%; object-fit: cover; }
.room-detail .room-main-photo>span { display: inline-flex; align-items: center; min-height: 44px; max-width: calc(100% - 32px); bottom: 16px; right: 16px; }
.room-detail .room-page-copy { padding: 30px; background: var(--room-tint); }
.room-detail .room-page-copy>p:first-child { font: 1.08rem/1.85 Georgia,serif; }
.room-detail .room-family-stay { margin: 20px 0; padding-left: 18px; border-left: 2px solid var(--gold); font-size: .94rem; line-height: 1.8; }
.booking-return-note { padding: 14px 18px; margin: 0 0 20px; border-left: 2px solid var(--gold); background: var(--surface); color: var(--ink); font-size: .88rem; }
.room-detail .room-features { line-height: 1.8; }
.room-detail .room-features li { padding-block: 12px; }
.room-detail .room-features li:nth-child(3) { font-weight: 600; }
.room-detail .room-page-copy .button { width: 100%; }
.room-detail .rate-note { line-height: 1.7; font-size: .82rem; }
.subpage:not(.rooms-page) .room-page-gallery { padding-block: var(--space-section) 20px; }
.subpage.tea-page .tea-page-gallery { padding-bottom: var(--invitation-gap); }
.subpage:not(.rooms-page) .room-page-gallery h2 { font-size: clamp(2.5rem,4vw,4rem); }
.room-detail .photo-grid { grid-template-columns: repeat(3,minmax(0,1fr)); gap: 18px; }
.room-detail .photo-grid button { aspect-ratio: 4/3; }
.room-detail .photo-grid button:first-child { grid-column: span 2; grid-row: span 2; aspect-ratio: auto; }
.photo-grid button:focus-visible { outline-offset: 4px; }
.gallery-controls button { min-width: 48px; min-height: 48px; }
.gallery-counter { font-variant-numeric: tabular-nums; }
.page-photo-dialog .gallery-controls { position: relative; inset: auto; }

/* Room photographs use the whole window; details stay on the room page. */
#room-dialog.room-photo-dialog, dialog.photo-viewer-dialog { position:fixed; inset:0; margin:0; width:100%; max-width:none; height:100vh; height:100dvh; max-height:none; padding:0; overflow:hidden; background:#111b15; color:var(--white); }
.room-photo-dialog #room-dialog-content { height:100%; }
.room-photo-dialog .dialog-close { color:var(--ink); background:var(--paper); }
.room-photo-viewer { display:grid; grid-template-rows:auto minmax(0,1fr) auto; height:100%; }
.room-photo-heading { display:flex; align-items:center; flex-wrap:wrap; gap:8px 24px; padding:16px 84px 16px 24px; min-height:76px; }
.room-photo-heading h2 { font:1.65rem/1.3 var(--serif); letter-spacing:0; }
.room-photo-counter { color:#d9ccae; font-size:.9rem; font-variant-numeric:tabular-nums; }
.room-photo-stage { position:relative; min-height:0; padding:0 24px; }
.room-photo-stage img { width:100%; height:100%; object-fit:contain; }
.room-photo-controls { display:grid; grid-template-columns:48px minmax(0,1fr) 48px; align-items:center; gap:16px; padding:14px 24px max(16px,env(safe-area-inset-bottom)); }
.room-photo-controls button { width:48px; height:48px; padding:0; border:1px solid #b99b6080; background:transparent; color:var(--white); font-size:1.7rem; line-height:1; }
.room-photo-controls button:hover { background:#b99b6025; }
.room-photo-controls p { justify-self:center; text-align:center; font-size:.95rem; line-height:1.5; color:#e2e0d6; }
.room-photo-dialog button:focus-visible, .photo-viewer-dialog button:focus-visible { outline-color:#edce8b; outline-offset:3px; }
.photo-viewer-dialog .page-photo-stage { height:auto; padding:0 24px; }
.photo-viewer-dialog #page-photo-caption { margin:0; padding:0; font-size:.95rem; }
@media(max-width:700px) {
  .room-extra-beds { padding-top:18px; }
  .room-photo-heading { padding-left:16px; min-height:72px; }
  .room-photo-stage { padding-inline:8px; }
  .photo-viewer-dialog .page-photo-stage { padding-inline:8px; }
  .photo-viewer-dialog #page-photo-caption { font-size:.85rem; }
  .room-photo-controls { gap:10px; padding-inline:12px; }
  .room-photo-controls p { font-size:.85rem; }
}

/* Café: the workshop, seasonal table photographs, and a practical address. */
.tea-page .tea-page-intro { padding-bottom: var(--space-medium); }
.tea-page .tea-welcome-title { font: clamp(2rem,3.4vw,3rem)/1.15 var(--serif); margin-bottom: 22px; }
.tea-page .page-intro>.tea-welcome-text { font-size: 1.05rem; margin-top: 18px; }
.tea-page .tea-editorial { align-items: center; }
.tea-page .tea-editorial .editorial-photo { aspect-ratio: 4/5; }
.tea-page .tea-editorial.reverse { padding: var(--space-medium); background: var(--surface); margin-bottom: var(--space-section); }
.tea-page .tea-editorial.reverse .editorial-photo { aspect-ratio: 1; }
.tea-page .tea-contact { margin-block: var(--space-medium); padding: var(--space-medium); }
.tea-page .photo-grid { grid-template-columns: repeat(4,minmax(0,1fr)); gap: 16px; }
.tea-page .photo-grid button { aspect-ratio: 1; }
.tea-page .photo-grid button:nth-child(7n+1) { grid-column: span 2; aspect-ratio: 2/1; }

/* Meetings: a panoramic first view and a direct enquiry, without a fake form. */
.meeting-page .page-intro { padding-bottom: var(--space-medium); }
.meeting-page .meeting-opening { grid-template-columns: 1fr; gap: var(--space-medium); }
.meeting-page .meeting-opening .editorial-photo { aspect-ratio: 2.2; max-height: 620px; }
.meeting-opening>div { display: grid; grid-template-columns: 1fr 1fr; column-gap: 7%; }
.meeting-opening>div>.eyebrow { grid-column: 1/-1; }
.meeting-opening>div>h2 { grid-column: 1; grid-row: 2/4; }
.meeting-opening>div>.gold-rule { display: none; }
.meeting-opening>div>p { grid-column: 2; margin-top: 0; margin-bottom: 20px; }
.meeting-page .meeting-advantages { padding: 28px 0; margin-bottom: var(--space-section); }
.meeting-page .meeting-enquiry { padding: var(--space-medium); }
.meeting-page .meeting-meal { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); margin-bottom: var(--space-medium); scroll-margin-top: 120px; }
.meeting-meal p:first-child { margin-top: 0; }
.meeting-meal p+p { margin-top: 1em; }
.meeting-meal .editorial-links { flex-wrap: wrap; row-gap: 16px; }

/* Curated discoveries. Empty image slots remain explicit, never faux photos. */
.region-page .page-intro { padding-bottom: var(--space-medium); }
.region-page-nav { border-bottom: 1px solid var(--line); margin-bottom: var(--space-medium); }
.region-page-nav a { padding-block: 12px; }
.discovery-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: var(--space-section) 36px; }
.discovery-card { min-width: 0; }
.discovery-card h2 { font: clamp(2.2rem,3vw,3.2rem)/1.15 var(--serif); margin-block: 18px; }
.discovery-card p { font: 1rem/1.85 Georgia,serif; color: var(--muted); margin-bottom: 18px; }
.discovery-card .eyebrow { margin-top: 24px; }
.photo-pending { min-height: 160px; aspect-ratio: 4/3; background: var(--surface); color: var(--accent); display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 18px; padding: 25px; text-align: center; position: relative; }
.photo-pending::before { content: ''; width: 42px; height: 30px; border: 1px solid currentColor; background: linear-gradient(145deg,transparent 48%,#7b653d28 49% 51%,transparent 52%); }
.photo-pending>span { font: .75rem/1.7 var(--sans); letter-spacing: .07em; }
.photo-pending .pending-place { font: clamp(1.5rem,3vw,2.5rem)/1.2 var(--serif); letter-spacing: 0; }
.region-feature-photo>.photo-pending { height: 100%; aspect-ratio: auto; }
.region-highlights .photo-pending { width: 120px; height: 90px; min-height: 0; flex-shrink: 0; padding: 8px; gap: 6px; }
.region-highlights .photo-pending::before { width: 24px; height: 18px; }
.region-highlights .photo-pending>span { font-size: .65rem; letter-spacing: 0; }
.region-page .nearby-grid article { padding-top: 0; border: none; }
.region-page .nearby-grid .eyebrow { margin-top: 20px; }
.region-page .ntc-section { margin-block: var(--space-section) 20px; }
.region-page .nearby-discoveries { padding-top: 0; }

@media (max-width:1100px) {
  .room-detail .room-page-lead { grid-template-columns: 1.2fr 1fr; gap: 24px; }
  .room-detail .room-page-copy { padding: 24px; }
  .room-detail .room-main-photo { aspect-ratio: 4/5; }
}
@media (max-width:900px) {
  .house-page .story-opening, .subpage:not(.rooms-page) .editorial-row, .room-detail .room-page-lead { grid-template-columns: 1fr; }
  /* A percentage row gap overflows an auto-height grid when the portrait and copy stack. */
  .house-page .story-opening { row-gap: 35px; }
  .house-page .story-facade { max-width: 560px; width: 100%; margin-inline: auto; }
  .subpage:not(.rooms-page) .editorial-row { gap: 30px; }
  .subpage:not(.rooms-page) .editorial-row.reverse .editorial-photo { order: 0; }
  .room-detail .room-main-photo { aspect-ratio: 3/2; max-height: 600px; }
  .tea-page .tea-editorial .editorial-photo { aspect-ratio: 3/2; max-height: 540px; }
  .meeting-opening>div { display: block; }
  .meeting-opening>div>h2 { margin-bottom: 24px; }
  .meeting-page .meeting-advantages { gap: 22px; }
  .meeting-page .meeting-advantages h3 { font-size: 1.8rem; }
}
@media (max-width:700px) {
  .discovery-grid { grid-template-columns: 1fr; gap: 38px; }
  .subpage:not(.rooms-page) .page-intro h1 { font-size: clamp(2.9rem,10vw,4rem); }
  .subpage:not(.rooms-page) .page-intro>p { font-size: 1.05rem; }
  .subpage:not(.rooms-page) .page-intro { padding-block: 25px 40px; }
  .room-detail .room-summary-strip { flex-direction: column; gap: 7px; margin-bottom: 24px; }
  .room-detail .room-main-photo { aspect-ratio: 1; }
  .room-detail .room-page-copy { padding: 24px 20px; }
  .room-detail .photo-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
  .room-detail .photo-grid button:first-child { grid-column: 1/-1; grid-row: auto; aspect-ratio: 3/2; }
  .house-page .story-photos { grid-template-columns: 1fr; gap: 30px; }
  .house-page .story-bench { max-width: 420px; }
  .tea-page .photo-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
  .meeting-page .meeting-opening .editorial-photo { aspect-ratio: 4/3; }
  .meeting-page .meeting-advantages { grid-template-columns: 1fr; }
  .page-practical, .house-page .story-conclusion, .tea-page .tea-editorial.reverse { padding: 26px 22px; }
  .subpage:not(.rooms-page) .page-cta { padding: 30px 24px; }
  .photo-pending { aspect-ratio: 3/2; }
}

/* Original regional photographs retained for local review by owner request. */
.discovery-photo { margin: 0; position: relative; aspect-ratio: 4/3; overflow: hidden; }
.discovery-photo img { width: 100%; height: 100%; object-fit: cover; }
/* Regional guide: a clear progression from the town to museums and outings. */
.region-page .region-page-nav { gap: 4px 28px; margin-bottom: var(--space-medium); }
.region-page .region-page-nav a { display: inline-flex; align-items: center; min-height: 48px; }
.region-page .region-town-opening { padding-bottom: var(--space-section); }
.region-page .region-town-feature { display: grid; grid-template-columns: 1.15fr 1fr; align-items: center; gap: clamp(28px,5vw,72px); }
.region-page .region-town-feature .eyebrow { margin-top: 0; }
.region-page .region-town-feature h2 { font-size: clamp(2.6rem,4.4vw,4rem); }
.region-page .region-section { padding-block: var(--space-section); border-top: 1px solid var(--line); }
.region-page .region-section-heading { display: flex; align-items: flex-start; gap: 24px; margin-bottom: var(--space-medium); }
.region-page .region-section-heading>div { min-width: 0; }
.region-page .region-section-number { color: var(--accent); font: italic 1.5rem/1.4 var(--serif); padding-top: 9px; flex-shrink: 0; }
.region-page .region-section-heading h2 { font: clamp(2.5rem,4vw,3.7rem)/1.1 var(--serif); margin: 0 0 18px; }
.region-page .region-section-heading p { max-width: 64ch; font: 1.05rem/1.8 Georgia,serif; color: var(--muted); margin: 0; }
.region-page #la-chaux-de-fonds .region-section-heading p { max-width: none; }
.region-page .discovery-grid { gap: 52px 36px; }
.region-page .discovery-card h3 { font: clamp(2rem,2.7vw,2.65rem)/1.15 var(--serif); margin: 14px 0 18px; }
.region-page .discovery-copy { min-width: 0; }
.region-page .discovery-copy .text-link { display: inline-block; min-height: 44px; padding-block: 9px; overflow-wrap: anywhere; }
.region-page .discovery-photo { background: var(--surface); }
.region-page .photo-credit { position: static; display: block; color: var(--muted); background: transparent; font: .7rem/1.6 var(--sans); padding: 10px 0 0; }
.region-page .photo-credit a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }
.region-page .discovery-photo { aspect-ratio: auto; overflow: visible; }
.region-page .discovery-photo img { display: block; aspect-ratio: 4/3; height: auto; object-fit: cover; }
.region-page #muzoo .discovery-photo img { object-position: left center; }
.region-page .region-section-tinted { background: var(--surface); border-block: 1px solid var(--line); }
.region-page .region-chaux-intro { margin-bottom: 52px; }
.region-page .region-panorama img { aspect-ratio: 3.2/1; }
.region-page .region-chaux-intro .discovery-copy { max-width: 800px; margin-top: 28px; }
.region-page .region-grid-three { grid-template-columns: repeat(3,minmax(0,1fr)); gap: 32px; }
.region-page .region-grid-three h3 { font-size: clamp(1.9rem,2.3vw,2.4rem); }
/* Each row shares photo, category, title, description and link tracks.
   Long translated titles stay complete without shifting adjacent cards. */
@supports (grid-template-rows: subgrid) {
  .region-page .discovery-grid > .discovery-card {
    display: grid;
    grid-template-rows: subgrid;
    grid-row: span 5;
    row-gap: 0;
  }
  .region-page .discovery-grid > .discovery-card > .discovery-copy {
    display: grid;
    grid-template-rows: subgrid;
    grid-row: span 4;
    row-gap: 0;
  }
  .region-page .discovery-grid .discovery-copy > * { align-self: start; }
  .region-page .discovery-grid .discovery-copy .text-link { justify-self: start; }
}
.region-page .region-planning-note { max-width: 72ch; margin: 0 auto var(--invitation-gap); text-align: center; font: 1rem/1.9 Georgia,serif; color: var(--muted); }
/* Tourist Card: an editorial invitation, with an ornamental guest-card panel. */
.region-page .ntc-section {
  background: linear-gradient(125deg, var(--white), var(--surface));
  color: var(--ink);
  border-block: 1px solid var(--line);
  padding-block: var(--space-section);
}
.region-page .ntc-heading { grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr); gap: clamp(36px, 7vw, 100px); }
.region-page .ntc-heading .eyebrow { color: var(--accent); }
.region-page .ntc-heading h2 { max-width: 10ch; line-height: 1.02; }
.region-page .ntc-heading p, .region-page .ntc-benefits p, .region-page .ntc-practical p { color: var(--muted); }
.region-page .ntc-emphasis {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  align-items: flex-start;
  text-align: left;
  min-width: 0;
  padding: clamp(28px, 3vw, 44px);
  border: 1px solid #cf101b;
  border-radius: 16px;
  /* Red observed on Neuchâtel Tourisme's official Tourist Card page. */
  background: #e30613;
  color: var(--white);
  box-shadow: 0 22px 45px -28px rgb(36 48 39 / 55%);
}
.region-page .ntc-emphasis::after {
  content: '';
  position: absolute;
  z-index: -1;
  width: 260px;
  height: 260px;
  right: -135px;
  bottom: -120px;
  border: 1px solid rgb(230 218 177 / 35%);
  border-radius: 50%;
  box-shadow: 0 0 0 20px rgb(230 218 177 / 6%), 0 0 0 42px rgb(230 218 177 / 4%);
}
.region-page .ntc-emphasis .ntc-card-brand { font: .68rem/1.6 var(--sans); letter-spacing: .22em; color: var(--white); }
.region-page .ntc-emphasis .ntc-card-destination { font: 1.7rem/1.15 var(--serif); margin-bottom: 24px; }
.region-page .ntc-emphasis strong { font-size: clamp(2.6rem, 4vw, 3.8rem); color: var(--white); }
.region-page .ntc-emphasis > span:last-child { border-top: 1px solid rgb(230 218 177 / 40%); padding-top: 15px; width: 100%; }
.region-page .ntc-benefits { gap: clamp(22px, 4vw, 56px); margin-block: 60px 44px; }
.region-page .ntc-benefits article { border-top: 1px solid var(--gold); padding-top: 24px; }
.region-page .ntc-benefits article > span { font: italic 1.6rem/1 var(--serif); color: var(--accent); letter-spacing: 0; }
.region-page .ntc-benefits h3 { font-size: clamp(1.8rem, 2.4vw, 2.3rem); }
.region-page .ntc-practical { border-color: var(--line); }
.region-page .ntc-practical p { max-width: none; min-width: 0; }
@media (max-width: 800px) {
  .region-page .ntc-heading { grid-template-columns: 1fr; gap: 32px; }
  .region-page .ntc-heading h2 { max-width: none; }
  .region-page .ntc-emphasis { width: 100%; max-width: 440px; }
  .region-page .ntc-benefits { grid-template-columns: 1fr; gap: 28px; margin-block: 38px 32px; }
  .region-page .ntc-benefits article { display: grid; grid-template-columns: 38px minmax(0, 1fr); column-gap: 15px; }
  .region-page .ntc-benefits h3 { margin: 0 0 10px; }
  .region-page .ntc-benefits p { grid-column: 2; margin: 0; }
  .region-page .ntc-practical { align-items: flex-start; flex-direction: column; gap: 22px; }
}
@media (max-width:1000px) {
  .region-page .region-grid-three { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .region-page .region-town-feature { grid-template-columns: 1fr 1fr; gap: 30px; }
}
@media (max-width:700px) {
  .region-page .region-town-feature, .region-page .region-grid-three { grid-template-columns: 1fr; }
  .region-page .region-section-heading { gap: 15px; }
  .region-page .region-section-number { font-size: 1.2rem; padding-top: 7px; }
  .region-page .discovery-grid { gap: 38px; }
  .region-page .region-page-nav { gap: 2px 20px; }
  .region-page .region-panorama img { aspect-ratio: 2/1; }
  .region-page .region-chaux-intro { margin-bottom: 38px; }
}
.tea-breakfast-note { font-size: .9rem; }

/* Booking stays in the native dialog; third-party failures remain recoverable. */
#booking-widget { min-height: 140px; padding-bottom: 28px; }
#booking-widget[aria-busy=true] { cursor: progress; }
.booking-loading { max-width: 650px; margin: 24px auto; text-align: center; line-height: 1.7; }
.booking-retry { display: block; margin: 20px auto 0; }
#booking-widget [hidden], .booking-fallback [hidden] { display: none !important; }
@media(max-width:700px) {
  #booking-dialog { width: calc(100% - 20px); max-height: calc(100svh - 24px); }
  #booking-widget { padding: 0 10px 20px; }
  #booking-dialog .booking-heading { padding: 55px 22px 12px; }
  #booking-dialog .booking-heading h2 { font-size: 2.5rem; }
}

/* Booking entry: local date/guest controls; Sirvoy remains the sole booking authority. */
#booking-dialog { background: #f7f4eb; color: #263126; }
#booking-dialog [hidden] { display: none !important; }
#booking-dialog .booking-heading { padding: 48px 44px 20px; }
#booking-dialog .booking-heading h2 { font-size: clamp(2.2rem, 4vw, 3.4rem); line-height: 1.08; margin: 12px 0; }
#booking-dialog .booking-heading p { max-width: 62ch; line-height: 1.65; color: #57604f; }
#booking-dialog #booking-widget { padding: 0 44px 28px; min-height: 0; }
.booking-room-card { display: grid; grid-template-columns: 170px 1fr; gap: 26px; align-items: center; margin-bottom: 28px; padding-bottom: 26px; border-bottom: 1px solid #dad8cb; }
.booking-room-card img { width: 100%; height: 124px; object-fit: cover; }
.booking-room-card .eyebrow { font-size: .64rem; letter-spacing: .13em; color: #616448; }
.booking-room-card h3 { font-family: var(--serif); font-size: 2.5rem; line-height: 1.1; margin: 8px 0; font-weight: 400; }
.booking-room-card p { margin: 0; color: #57604f; font-size: .85rem; line-height: 1.6; }
.booking-criteria { display: grid; grid-template-columns: 1fr 1fr .7fr; gap: 20px; padding-bottom: 18px; }
.booking-criteria label { display: flex; flex-direction: column; gap: 9px; min-width: 0; font-size: .82rem; font-weight: 600; }
.booking-criteria input, .booking-criteria select { box-sizing: border-box; width: 100%; min-width: 0; height: 54px; padding: 12px; border: 1px solid #989b88; border-radius: 0; background: #fffdf7; color: #263126; font: inherit; font-size: 1rem; }
.booking-criteria .button { grid-column: 1 / -1; justify-self: start; min-height: 52px; padding: 16px 24px; white-space: normal; }
.booking-criteria-note, .booking-form-error { grid-column: 1 / -1; font-size: .8rem; line-height: 1.6; margin: 0; color: #57604f; }
.booking-form-error:empty { display: none; }
.booking-form-error { color: #953d28; }
.booking-search-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 24px; margin-bottom: 18px; }
.booking-stay-summary { flex-basis: 100%; margin: 0 0 4px; font-size: .9rem; font-weight: 600; }
.booking-search-actions .booking-all-rooms { display: inline-flex; align-items: center; justify-content: center; gap: 14px; padding: 14px 20px; min-height: 50px; background: var(--surface); color: var(--ink); border: 1px solid var(--gold); border-radius: 7px; font-size: .82rem; font-weight: 600; letter-spacing: .015em; text-transform: none; line-height: 1.55; text-align: left; white-space: normal; cursor: pointer; }
.booking-search-actions .booking-all-rooms::after { content: '→'; font-size: 1.25rem; color: var(--accent); flex-shrink: 0; }
.booking-search-actions .booking-all-rooms:hover { background: #e5dfd0; border-color: var(--accent); }
.booking-room-notice { margin: 0 0 22px; padding: 15px 20px; border-left: 2px solid #a4874d; background: #edece1; font-size: .82rem; line-height: 1.65; }
.booking-room-notice strong { font-weight: 600; }
.booking-room-notice p { margin: 4px 0 0; color: #4e5747; }
.booking-engine { background: #fff; }
#booking-dialog :is(input, select, button, a):focus-visible { outline: 3px solid #586640; outline-offset: 4px; }
@media (max-width: 700px) {
  #booking-dialog .booking-heading { padding: 55px 20px 18px; }
  #booking-dialog #booking-widget { padding: 0 16px 24px; }
  .booking-room-card { grid-template-columns: 100px 1fr; gap: 16px; margin-bottom: 22px; padding-bottom: 22px; }
  .booking-room-card img { height: 110px; }
  .booking-room-card h3 { font-size: 2.1rem; }
  .booking-room-card .eyebrow { font-size: .58rem; }
  .booking-criteria { grid-template-columns: 1fr 1fr; gap: 16px 12px; }
  .booking-criteria label:nth-child(3) { grid-column: 1 / -1; }
  .booking-criteria .button { width: 100%; }
  .booking-room-notice { padding: 12px 14px; }
  .booking-search-actions { gap: 2px 18px; }
  .booking-search-actions .booking-all-rooms { width: 100%; justify-content: space-between; }
}
#booking-dialog > .dialog-close { position: sticky; top: 12px; display: block; margin: 12px 12px -58px auto; }
#booking-dialog > .dialog-close { width: 46px; height: 46px; }

/* Final owner choice, 13 October: centered desktop dialog, full mobile width. */
#booking-dialog { width: min(1060px, calc(100% - 48px)); max-width: 1060px; height: auto; max-height: 92dvh; margin: auto; border: 0; border-radius: 6px; background: #faf7f0; }
#booking-dialog .booking-heading { padding: 26px 82px 16px 32px; }
#booking-dialog .booking-heading .eyebrow { margin-bottom: 8px; font-size: .65rem; }
#booking-dialog .booking-heading h2 { font-size: clamp(2rem, 3.6vw, 3rem); margin: 0 0 8px; }
#booking-dialog .booking-heading p { font-size: .88rem; line-height: 1.6; max-width: 75ch; margin: 0; }
#booking-dialog #booking-widget { padding: 0 32px 16px; }
#booking-dialog > .dialog-close { top: 10px; margin: 10px 10px -56px auto; z-index: 5; background: #fffdf7; border: 1px solid #ddd7ca; color: #29362c; }
.booking-progress { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); list-style: none; padding: 0; margin: 0 0 20px; border-block: 1px solid #ddd7ca; }
.booking-progress li { display: flex; align-items: center; gap: 12px; min-width: 0; padding: 12px 16px; color: #62665b; font-size: .78rem; line-height: 1.5; }
.booking-progress li + li { border-left: 1px solid #ddd7ca; }
.booking-progress li[aria-current=step] { background: #f0ebe0; color: #29362c; box-shadow: inset 0 -2px #b99b60; }
.booking-progress-index { font: italic 1.4rem var(--serif); color: #806b44; }
.booking-language { display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: center; gap: 8px 12px; margin: 0 0 16px; color: #62665b; font-size: .8rem; }
.booking-language[hidden] { display: none; }
.booking-language select { width: 210px; max-width: 100%; min-height: 44px; padding: 8px 12px; border: 1px solid #a5aa9c; border-radius: 5px; background: #fffdf7; color: #243027; font: inherit; font-size: 16px; }
.booking-language select:focus-visible { outline: 2px solid #b99b60; outline-offset: 2px; }
.booking-selection-return { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 18px; margin-bottom: 20px; }
.booking-selection-return[hidden] { display: none; }
.booking-selection-return .booking-selection-back { min-height: 44px; padding: 10px 16px; border: 1px solid #b99b60; border-radius: 4px; background: #fffdf7; color: #29362c; font-size: .8rem; }
.booking-selection-return p { margin: 0; font-size: .75rem; color: #62665b; }
.booking-cancellation { margin: 0 0 24px; padding: 18px 22px; border: 1px solid #d9ceb9; border-radius: 6px; background: #f2ecdf; color: #29362c; }
.booking-cancellation[hidden] { display: none; }
.booking-cancellation h3 { margin: 0 0 7px; font-size: 1.5rem; line-height: 1.2; }
.booking-cancellation p { max-width: none; font-size: .8125rem; line-height: 1.7; }
#booking-dialog .booking-room-card { grid-template-columns: 72px 1fr; gap: 16px; padding: 0 0 14px; margin-bottom: 14px; }
#booking-dialog .booking-room-card img { width: 72px; height: 66px; border-radius: 4px; }
#booking-dialog .booking-room-card .eyebrow { display: none; }
#booking-dialog .booking-room-card h3 { font-size: 1.65rem; margin: 0 0 4px; }
#booking-dialog .booking-room-card p { font-size: .75rem; }
#booking-dialog .booking-search-actions { margin: 0 0 14px; }
#booking-dialog .booking-search-actions .booking-all-rooms { padding: 10px 16px; min-height: 44px; border-radius: 4px; background: #fffdf7; font-size: .8rem; }
#booking-dialog .booking-engine { background: #faf7f0; }
#booking-dialog .booking-fallback { padding: 16px 24px; font-size: .8rem; }
@media(max-width: 760px) {
  #booking-dialog { width: 100%; max-width: none; height: 100dvh; max-height: 100dvh; margin: 0; border: 0; border-radius: 0; }
  #booking-dialog .booking-heading { padding: 20px 64px 14px 18px; }
  #booking-dialog .booking-heading h2 { font-size: 2rem; }
  #booking-dialog .booking-heading p { font-size: .8rem; }
  #booking-dialog #booking-widget { padding: 0 12px 14px; }
  .booking-progress { margin-bottom: 14px; }
  .booking-progress li { gap: 7px; padding: 10px 7px; font-size: .68rem; }
  .booking-progress-index { font-size: 1.2rem; }
  #booking-dialog .booking-room-card { margin-inline: 5px; }
  #booking-dialog .booking-search-actions .booking-all-rooms { font-size: .75rem; }
  #booking-dialog .booking-fallback { padding-bottom: calc(18px + env(safe-area-inset-bottom)); }
}

/* One shared olive for solid green surfaces, including contact and region blocks.
   Text ink, photograph overlays and the approved hero keep their own roles. */
:root { --green-surface: #3b5041; --green-text: #edf0e5; --green-accent: #e4d1a6; }
.page-cta, .ntc-section, .reservation-banner, .region-feature, .tea-contact, .meeting-enquiry { background: var(--green-surface); color: var(--white); }
.reservation-banner h2 em, .reservation-banner > .eyebrow { color: var(--green-accent); }
.reservation-banner > p, .ntc-heading p, .ntc-benefits p, .ntc-practical p { color: var(--green-text); }
.ntc-emphasis strong, .ntc-benefits article > span { color: var(--green-accent); }
footer { background: var(--green-surface); color: var(--green-text); }
.footer-brand > p, .footer-top h3, .footer-bottom { color: #d7dece; }
.region-feature-copy p, .tea-contact > div > p, .tea-contact-details address, .meeting-enquiry p { color: var(--green-text); }
.region-feature .eyebrow, .tea-contact .eyebrow, .tea-contact-details .tea-contact-role { color: var(--green-accent); }
.room-main-photo, .photo-grid button, .region-card, .page-photo-dialog,
.room-dialog-gallery img, #room-dialog.room-photo-dialog, dialog.photo-viewer-dialog { background: var(--green-surface); }

/* Booking management sits between navigation and languages as a separate link. */
.header-manage { display: none; }
.header-actions .header-book { min-height: 52px; padding: 15px 26px; font-size: .85rem; }
@media (min-width: 1280px) {
  .header-manage { display: block; flex-shrink: 0; border-left: 1px solid #b99b6070; padding-left: 20px; font-size: .8rem; white-space: nowrap; }
  .header-manage:hover, .header-manage[aria-current="page"] { text-decoration: underline; text-underline-offset: 5px; }
}
@media (min-width: 1280px) and (max-width: 1499px) {
  .site-header { padding-inline: 28px; gap: 18px; }
  .desktop-nav { gap: 12px; }
  .desktop-nav a { font-size: .8rem; }
  .site-header .wordmark > span { font-size: 1.5rem; }
}
@media (max-width: 700px) {
  .header-actions .header-book { min-height: 46px; padding: 13px 17px; font-size: .8rem; }
}
.mobile-menu nav .mobile-manage { margin-top: 10px; padding-top: 18px; border-top: 1px solid var(--line); font-family: var(--sans); font-size: 1.05rem; line-height: 1.5; }

/* Review bookings through the official Sirvoy guest form. */
.booking-review-page .page-intro { max-width: 1440px; }
.booking-review-layout { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(260px, .8fr); gap: clamp(24px, 4vw, 64px); align-items: start; padding-bottom: var(--space-section); }
.booking-review-card { padding: clamp(24px, 3vw, 44px); background: var(--white); border: 1px solid var(--line); border-radius: 4px; }
.booking-review-card h2, .booking-review-policy h2 { font-size: clamp(1.8rem, 2.6vw, 2.5rem); line-height: 1.15; margin-bottom: 14px; }
.booking-review-card > p, .booking-review-policy p { color: var(--muted); font-size: .95rem; line-height: 1.85; }
#review-widget { margin-top: 25px; min-height: 210px; }
#review-widget[aria-busy="true"] { cursor: progress; }
#review-status { font-size: .9rem; color: var(--muted); margin-bottom: 18px; }
#review-engine { min-width: 0; }
#review-engine iframe { width: 100%; border: 0; }
#review-retry[hidden] { display: none; }
.booking-review-help { display: flex; align-items: flex-start; flex-direction: column; gap: 10px; margin-top: 24px; padding-top: 22px; border-top: 1px solid var(--line); font-size: .85rem; }
.booking-review-help a { overflow-wrap: anywhere; }
.booking-review-help .text-link { font-size: .8rem; white-space: normal; }
.booking-review-policy { padding-block: 24px; border-top: 2px solid var(--gold); }
.booking-review-policy .text-link { margin-top: 24px; }
@media (max-width: 800px) {
  .booking-review-layout { grid-template-columns: minmax(0, 1fr); }
  .booking-review-policy { padding-top: 24px; }
}

.room-access { display: flex; align-items: flex-start; gap: 17px; padding: 19px 0; margin: 0 0 25px; border-block: 1px solid var(--line); }
.room-access > svg { width: 30px; height: 30px; flex: 0 0 30px; fill: none; stroke: var(--accent); stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; }
.room-access h2 { font: 500 1.3rem/1.3 var(--serif); color: var(--ink); margin: 0 0 7px; }
.room-access p { font: .87rem/1.75 var(--sans); color: var(--muted); margin: 0; max-width: 42ch; }

/* Shared panoramic invitation. Decorative generated study; replace the photo
   with an authorised final photograph without changing the booking controls. */
.stay-invitation {
  position: relative;
  isolation: isolate;
  /* Keep the decorative glow clipped without creating a focus-scroll container. */
  overflow: clip;
  width: 100%;
  max-width: none;
  margin: 0 0 var(--invitation-gap);
  padding: 64px 28px;
  min-height: 330px;
  display: grid;
  place-items: center;
  text-align: center;
  color: #fff9ef;
  background: #34271d;
  border-block: 1px solid #ad8d5933;
}
.stay-invitation-photo {
  position: absolute;
  z-index: -2;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 48%;
}
.stay-invitation::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(90deg, #1b130c70, #1b130c8c 47%, #1b130c5c),
    linear-gradient(0deg, #1b130c29, transparent 60%);
}
.stay-invitation-content { position: relative; z-index: 1; max-width: 1150px; }
.stay-invitation h2 {
  font: 400 clamp(2.3rem, 3.55vw, 3.5rem)/1.14 var(--serif);
  letter-spacing: -.015em;
  color: inherit;
  margin: 0;
  text-wrap: balance;
}
.stay-invitation-content > p {
  margin: 14px 0 27px;
  color: #f3e7d4;
  font: 400 clamp(1.1rem, 1.5vw, 1.4rem)/1.5 var(--serif);
  text-wrap: balance;
}
.stay-invitation .button {
  margin: 0;
  min-height: 50px;
  padding: 15px 28px;
  background: var(--gold);
  border-color: var(--gold);
  color: #182219;
  font-size: .75rem;
  letter-spacing: .11em;
  text-transform: uppercase;
  box-shadow: 0 5px 18px #17100a26, inset 0 1px 0 #f9edc63b;
}
.stay-invitation .button:hover { background: #d0b57f; border-color: #d0b57f; color: #182219; }
.stay-invitation .button:focus-visible { outline: 2px solid #fff9ef; outline-offset: 5px; }
.stay-invitation-glow {
  position: absolute;
  z-index: 0;
  inset: -70% -40%;
  pointer-events: none;
  opacity: 0;
  background: linear-gradient(115deg, transparent 38%, #f5e5ba03 43%, #f5e5ba12 49%, #f5e5ba04 53%, transparent 60%);
}
@media (max-width: 800px) {
  .stay-invitation { min-height: 320px; padding: 55px 26px; }
  .stay-invitation h2 { font-size: clamp(2.2rem, 5.5vw, 2.8rem); }
}
@media (max-width: 500px) {
  .stay-invitation { min-height: 350px; padding: 54px 23px; }
  .stay-invitation-photo { object-position: 95% center; }
  .stay-invitation::before { background: linear-gradient(90deg, #1b130cc2, #1b130c91 60%, #1b130c80); }
  .stay-invitation h2 { font-size: clamp(2.05rem, 8.5vw, 2.6rem); }
  .stay-invitation-content > p { font-size: 1.15rem; margin: 17px 0 28px; }
  .stay-invitation .button { max-width: 100%; padding-inline: 22px; }
}

/* The same neutral paper and controls around every full-screen photo gallery. */
:is(#room-dialog, #page-photo-dialog) :is(.room-photo-stage, .room-dialog-gallery, .page-photo-stage) { touch-action: pan-y pinch-zoom; }
:is(#room-dialog, #page-photo-dialog) :is(.room-photo-stage, .room-dialog-gallery, .page-photo-stage) img { user-select: none; -webkit-user-drag: none; }
#room-dialog, #room-dialog.room-photo-dialog, #page-photo-dialog.photo-viewer-dialog,
#room-dialog .room-dialog-gallery, #room-dialog .room-dialog-gallery img { background: var(--paper); color: var(--ink); }
:is(#room-dialog, #page-photo-dialog.photo-viewer-dialog) .room-photo-counter { color: var(--accent); }
:is(#room-dialog, #page-photo-dialog.photo-viewer-dialog) .room-photo-controls p { color: var(--muted); }
:is(#room-dialog, #page-photo-dialog.photo-viewer-dialog) .room-photo-controls button { color: var(--ink); background: var(--white); border-color: var(--line); }
#room-dialog .gallery-controls button, :is(#room-dialog, #page-photo-dialog.photo-viewer-dialog) .dialog-close { color: var(--ink); background: var(--white); border: 1px solid var(--line); }
#room-dialog .gallery-counter { color: var(--ink); background: var(--paper); border: 1px solid var(--line); }
:is(#room-dialog, #page-photo-dialog.photo-viewer-dialog) button:focus-visible { outline-color: var(--accent); outline-offset: 3px; }

/* Keep the mobile invitation readable alongside the booking button. */
@media (max-width: 700px) {
  .mobile-book-bar > span { flex: 1; min-width: 0; }
  .mobile-book-bar small { text-wrap: balance; }
  .mobile-book-bar .button { flex-shrink: 0; }
}

/* Guest information: keep the approved room cards and their grid unchanged. */
.room-bath-summary { display:grid; grid-template-columns:1fr 1fr; gap:24px 48px; margin:0; }
.room-bath-summary > div { padding:6px 0 6px 20px; border-left:2px solid var(--gold); }
.room-bath-summary dt { font-family:var(--serif); font-size:1.65rem; color:var(--ink); margin-bottom:8px; }
.room-bath-summary dd { margin:0; font-size:.9rem; line-height:1.9; color:var(--muted); }
.room-overview-info .room-rates-summary { font-size:.86rem; margin:24px 0 0; padding-top:20px; border-top:1px solid var(--line); }
.gather-copy > .gather-subtitle { margin:14px 0 24px; font:italic clamp(1.6rem,2.6vw,2.2rem)/1.25 var(--serif); color:var(--accent); }
.gather-copy .text-link { white-space:normal; line-height:1.7; }
/* Descriptions remain in image alt text, never painted over the photographs. */
.room-main-photo > span, .room-card .room-view,
.room-photo-controls > p[hidden] { display:none !important; }
.room-photo-controls { display:flex; justify-content:center; gap:24px; }
.room-photo-controls > p[hidden] ~ button { margin-left:0; }

/* A single Contact page, with direct contact links and the complete FAQ. */
.contact-intro { padding-bottom:40px; }
.contact-intro > p { max-width:760px; }
.contact-details { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
.contact-method { display:flex; flex-direction:column; align-items:flex-start; gap:14px; padding:clamp(24px,3vw,40px); background:var(--white); border:1px solid var(--line); border-radius:5px; transition:box-shadow .25s, border-color .25s; }
.contact-method:hover { border-color:var(--gold); box-shadow:0 10px 32px #4037210b; }
.contact-method-number { font:italic 2rem/1 var(--serif); color:var(--accent); opacity:.7; }
.contact-method .eyebrow { font-size:.67rem; letter-spacing:.12em; line-height:1.8; }
.contact-method strong { font:400 clamp(1.1rem,1.65vw,1.55rem)/1.5 var(--sans); overflow-wrap:anywhere; }
.contact-method .text-link { font-size:.72rem; }
.contact-faq { padding-block:var(--space-section); scroll-margin-top:115px; }
.contact-faq > header { margin-bottom:44px; }
.contact-faq h2 { font:400 clamp(2.7rem,4.6vw,4.1rem)/1.1 var(--serif); }
.contact-faq header > p { color:var(--muted); margin-top:20px; }
.contact-faq-layout { display:grid; grid-template-columns:230px minmax(0,1fr); gap:clamp(28px,5vw,80px); align-items:start; }
.faq-navigation { display:flex; flex-direction:column; gap:10px; position:sticky; top:120px; padding-left:18px; border-left:1px solid var(--gold); }
.faq-navigation a { padding-block:9px; font-size:.86rem; color:var(--muted); }
.faq-navigation a:hover { color:var(--accent); text-decoration:underline; text-underline-offset:6px; }
.faq-group { scroll-margin-top:115px; margin-bottom:44px; }
.faq-group > h3 { font:400 1.9rem/1.3 var(--serif); display:flex; align-items:center; gap:14px; padding-bottom:14px; }
.faq-group > h3 > span:first-child { font: .67rem var(--sans); color:var(--accent); letter-spacing:.1em; }
.faq details { border-color:var(--line); }
.faq .faq-answer { font:.95rem/1.85 var(--sans); color:var(--muted); padding:0 36px 25px 0; }
.faq .faq-answer p { font:inherit; color:inherit; margin:0 0 14px; padding:0; }
.faq .faq-answer p:last-child { margin-bottom:0; }
.faq .faq-answer h3 { font:600 .9rem/1.5 var(--sans); color:var(--ink); margin:20px 0 8px; }
.faq .faq-answer a { text-decoration:underline; text-decoration-color:var(--accent); text-underline-offset:4px; color:var(--ink); }
.faq .faq-answer .faq-source-note { font-size:.75rem; color:var(--muted); }
.faq-all { margin-top:26px; font-size:.76rem; white-space:normal; }
.contact-personal { display:flex; align-items:center; justify-content:space-between; gap:40px; background:var(--surface); border-radius:5px; padding:36px 40px; margin-bottom:var(--space-section); }
.contact-personal h2 { font:400 2.4rem/1.2 var(--serif); }
.contact-personal p { color:var(--muted); margin-top:12px; max-width:620px; line-height:1.8; }
.contact-personal .button { flex-shrink:0; }
@media (prefers-reduced-motion:no-preference) {
  .faq details[open] .faq-answer { animation:faq-answer-in .25s ease-out; }
  @keyframes faq-answer-in { from { opacity:0; transform:translateY(-5px); } to { opacity:1; transform:none; } }
}
@media(max-width:900px) {
  .contact-details { gap:12px; }
  .contact-method { padding:24px 18px; }
  .contact-method strong { font-size:1.05rem; }
  .contact-faq-layout { grid-template-columns:180px minmax(0,1fr); gap:28px; }
}
@media(max-width:700px) {
  .room-bath-summary { grid-template-columns:1fr; gap:22px; }
  .contact-details { grid-template-columns:1fr; }
  .contact-method { padding:26px; gap:10px; }
  .contact-method-number { font-size:1.7rem; }
  .contact-method strong { font-size:1.25rem; }
  .contact-faq-layout { grid-template-columns:1fr; }
  .faq-navigation { position:static; flex-direction:row; flex-wrap:wrap; gap:6px 18px; }
  .contact-personal { flex-direction:column; align-items:flex-start; padding:28px; gap:25px; }
  .faq .faq-answer { padding-right:4px; }
}

/* The secure Sirvoy iframe remains intact. Its internal theme is a separate,
   account-side stylesheet delivered in docs/sirvoy-design/review-theme.css. */
.booking-review-page .page-intro { padding-bottom:38px; }
.booking-review-page .page-intro h1 { max-width:1000px; font-size:clamp(2.7rem,4.9vw,4.6rem); }
.booking-review-layout { grid-template-columns:minmax(0,1.55fr) minmax(240px,.85fr); gap:44px; }
.booking-review-card { border-radius:8px; background:linear-gradient(145deg,#fffdf7,#f3eee4); border-color:#e3dac9; box-shadow:0 20px 60px #4b3b1e08; padding:clamp(22px,3vw,42px); }
.booking-review-card > h2 { font-size:2.3rem; }
.booking-review-card > p { max-width:52ch; }
.booking-review-policy { border:1px solid var(--line); border-top:2px solid var(--gold); border-radius:5px; padding:30px; background:var(--white); }
.booking-review-policy h2 { font-size:1.9rem; }
.booking-review-help { gap:12px; }
.booking-review-help > p { margin:0; }
.booking-review-help > a[href^="mailto:"] { color:var(--accent); text-decoration:underline; text-underline-offset:5px; }
#review-widget { border-radius:5px; overflow:hidden; }
@media(max-width:900px) { .booking-review-layout { grid-template-columns:1fr; gap:28px; } }

/* The gallery is a second native dialog, above the still-live booking engine. */
.booking-photo-dialog { width:calc(100vw - 48px); max-width:1600px; height:calc(100dvh - 48px); max-height:100dvh; padding:0; border:1px solid #cec3b1; border-radius:6px; background:var(--paper); color:var(--ink); overflow:hidden; }
.booking-photo-dialog[open] { display:grid; grid-template-rows:minmax(0,1fr) 64px; }
.booking-photo-dialog::backdrop { background:rgba(25,27,20,.78); }
.booking-photo-close { position:absolute; right:14px; top:14px; width:44px; height:44px; border:1px solid var(--line); border-radius:50%; background:var(--white); color:var(--ink); font:2rem/1 var(--sans); z-index:2; }
.booking-photo-stage { min-height:0; padding:24px 64px 0; display:grid; place-items:center; touch-action:pan-y pinch-zoom; }
.booking-photo-image { width:100%; height:100%; min-height:0; object-fit:contain; user-select:none; }
.booking-photo-controls { display:flex; align-items:center; justify-content:center; gap:30px; }
.booking-photo-controls button { width:44px; height:44px; border:1px solid var(--line); border-radius:50%; color:var(--ink); background:var(--white); font-size:1.8rem; }
.booking-photo-controls button[hidden] { display:none; }
.booking-photo-counter { font-size:.8rem; letter-spacing:.12em; font-variant-numeric:tabular-nums; color:var(--accent); }
.booking-photo-dialog button:focus-visible { outline:2px solid var(--accent); outline-offset:3px; }
.booking-photo-error { position:absolute; background:var(--paper); padding:24px; margin:0 20px; text-align:center; }
@media(max-width:700px) {
  .booking-photo-dialog { width:100vw; height:100dvh; max-width:100vw; border:0; border-radius:0; }
  .booking-photo-dialog[open] { grid-template-rows:minmax(0,1fr) calc(74px + env(safe-area-inset-bottom)); }
  .booking-photo-stage { padding:70px 8px 0; }
  .booking-photo-controls { padding-bottom:env(safe-area-inset-bottom); }
}


/* Accessible shared-bathroom information, consistent with the ivory booking theme. */
.bath-info-button{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;width:23px;height:23px;margin-left:8px;padding:0;border:1px solid #ac945d;border-radius:50%;background:#f4eedf;color:#435543;font-family:Georgia,serif;font-size:14px;font-style:italic;line-height:1;cursor:pointer}
.bath-info-button:hover,.bath-info-button[aria-expanded="true"]{background:#e9dec5;border-color:#7b714a}
.bath-info-button:focus-visible{outline:2px solid #667650;outline-offset:4px}
.room-bath-info-tail{white-space:nowrap}
.bath-info-panel{position:fixed;inset:auto;margin:0;width:min(350px,calc(100vw - 32px));max-width:none;box-sizing:border-box;z-index:10000;padding:22px 24px;background:#fffdf8;border:1px solid #c8b58c;border-radius:8px;color:#303e32;box-shadow:0 16px 45px #15221826;text-align:left}
.bath-info-panel[hidden]{display:none}
.bath-info-panel strong{display:block;font-family:Georgia,serif;font-size:21px;font-weight:400;line-height:1.25;margin:0 0 10px}
.bath-info-panel p{margin:0;font-size:14px;line-height:1.7;color:#566054}
.region-card-intro{font-size:15px!important;line-height:1.75!important;max-width:760px!important;margin-top:24px!important}
.region-card-intro a,.story-copy p a{text-decoration:underline;text-decoration-color:#ad935d;text-underline-offset:4px}
.contact-method-primary{background:linear-gradient(135deg,#f2ebdc,#f9f5eb);border-color:#c3ad7d;box-shadow:0 8px 24px #55422108}
.contact-method-primary:hover{background:#eee5d3}

/* Shared spaces: compact, photo-free editorial section after practical needs. */
.shared-spaces{margin-top:clamp(44px,6vw,80px);margin-bottom:clamp(56px,7vw,96px);padding-top:clamp(36px,5vw,64px);border-top:1px solid rgba(157,128,74,.26)}
.shared-spaces-copy>.eyebrow,.shared-spaces-copy>h2,.shared-spaces-intro{display:block;text-align:center}
.shared-spaces-copy h2{font-family:var(--serif,Georgia,serif);font-weight:400;font-size:clamp(30px,3vw,44px);line-height:1.15;margin:18px 0;text-wrap:balance}
.shared-spaces-intro{line-height:1.75;max-width:720px;margin:0 auto 32px}
.shared-spaces-details{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,5vw,72px);max-width:1050px;margin:auto}
.shared-spaces-detail{display:flex;gap:18px;padding:18px 0}
.shared-spaces-detail>span{font-size:12px;letter-spacing:.12em;color:#927442;padding-top:5px}
.shared-spaces-detail h3{font-family:var(--serif,Georgia,serif);font-size:25px;font-weight:400;line-height:1.2;margin:0 0 12px}
.shared-spaces-detail p{margin:0;line-height:1.75;color:var(--muted,#62665d)}
@media(max-width:700px){.shared-spaces-details{grid-template-columns:1fr;gap:4px}.shared-spaces-detail{gap:14px}.shared-spaces-detail h3{font-size:24px}}

/* Legal notice: calm reading layout, with the shared house typography. */
.legal-page .legal-intro { max-width: 900px; padding-bottom: clamp(30px, 4vw, 52px); }
.legal-intro h1 { font-size: clamp(3rem, 5vw, 4.8rem); }
.legal-updated { display: block; margin-top: 20px; color: var(--muted); font-size: .78rem; }
.legal-page .legal-content { max-width: 900px; padding-bottom: var(--space-section); }
.legal-content { font-size: .96rem; line-height: 1.85; }
.legal-content p { margin: 0 0 16px; }
.legal-content h2 { font-family: var(--serif); font-size: clamp(2rem, 3vw, 2.7rem); line-height: 1.15; font-weight: 500; margin: 0 0 22px; color: var(--ink); }
.legal-content h3 { font-family: var(--serif); font-size: clamp(1.6rem, 2.3vw, 2rem); line-height: 1.2; font-weight: 500; margin: 0 0 16px; color: var(--ink); }
.legal-identity { padding: clamp(24px, 4vw, 42px); background: var(--surface); border: 1px solid var(--line); border-radius: 3px; margin-bottom: clamp(36px, 5vw, 60px); }
.legal-identity > p:last-child { margin-bottom: 0; }
.legal-identity .legal-business { font-size: .84rem; line-height: 1.6; }
.legal-contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 36px; margin: 22px 0; }
.legal-contact-grid address { font-style: normal; }
.legal-contact-grid > div > a { display: block; width: fit-content; }
.legal-content a { color: var(--ink); text-decoration: underline; text-decoration-color: var(--accent); text-underline-offset: .2em; overflow-wrap: anywhere; }
.legal-content a:hover { color: var(--accent); }
.legal-content a:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.legal-section { padding: 28px 0 20px; border-top: 1px solid var(--line); scroll-margin-top: 120px; }
.legal-provider-links { display: flex; flex-wrap: wrap; gap: 8px 24px; font-weight: 600; font-size: .88rem; }
.legal-content .legal-contact-note { border-left: 2px solid var(--gold); padding: 12px 0 12px 22px; margin: 14px 0 0; }
@media(max-width: 600px) {
  .legal-contact-grid { grid-template-columns: 1fr; gap: 12px; }
  .legal-page .legal-content { font-size: .92rem; }
  .legal-content h3 { overflow-wrap: anywhere; }
  .legal-section { padding: 24px 0 16px; }
}
.reservation-page .page-intro > .button { margin-top: 1.5rem; }
