/* Targeted guest journeys: photo choice, contact booking and persistent help. */
.stay-assistant {
  position: fixed; inset: auto max(1rem, env(safe-area-inset-right)) max(.8rem, env(safe-area-inset-bottom)) auto;
  z-index: 230; display: flex; align-items: center; gap: .5rem; width: max-content; max-width: calc(100% - 2rem);
}
.stay-assistant .assistant-launcher, .guest-book-now {
  position: static; margin: 0; min-height: 3.1rem; max-width: none; padding: .7rem 1rem;
  display: inline-flex; align-items: center; justify-content: center; border: 1px solid #bda779;
  border-radius: .4rem; font: inherit; font-size: .95rem; line-height: 1.4; white-space: normal;
  background: rgba(255,255,255,.96); color: #292820; box-shadow: 0 3px 18px #25231c18;
  -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px);
}
.guest-book-now { background: rgba(116,91,42,.96); color: #fff; min-width: 7rem; }
.guest-book-now:hover, .guest-book-now:focus-visible { background: #574522; color: #fff; }
.stay-assistant .assistant-panel {
  position: absolute; inset: auto 0 calc(100% + .6rem) auto; width: min(28rem, calc(100vw - 2rem));
  max-height: min(42rem, calc(100dvh - 6rem));
}
.stay-assistant .assistant-panel[hidden] { display: none; }
body.photos-open { overflow: hidden; }
body.photos-open .stay-assistant, body.film-open .stay-assistant, body.menu-open .stay-assistant { visibility: hidden; pointer-events: none; }
#booking, #enquire, #collection, #reserve { scroll-margin-top: calc(var(--nav-height, 5rem) + 1rem); }

.category-intro { padding-block: 1.75rem 1.25rem; }
.category-intro > div:not(.unit-numbers) { display: grid; grid-template-columns: 1.3fr 1fr; gap: 1.5rem; align-items: end; margin-top: .75rem; }
.category-intro h1, .contact-heading h1 { margin: .5rem 0; font-size: clamp(2rem, 3.8vw, 3.5rem); line-height: 1.15; font-weight: 300; }
.category-intro p { margin: 0; max-width: 48rem; font-size: 1rem; }
.category-intro .category-total { margin: 1rem 0; }
.category-total strong { font-weight: 500; color: var(--adm-gold); }
.category-intro .unit-numbers { margin: .75rem 0 1rem; padding: .75rem 0; }
.category-intro .unit-numbers p { font-size: .875rem; }
.unit-numbers ul { display: flex; flex-wrap: wrap; gap: .5rem; }
.unit-numbers li { padding: .4rem .75rem; border: 1px solid #d6c9aa; color: #292820; }
.category-collection { padding-top: .75rem; padding-bottom: 2rem; }
.category-collection > h2 { margin-bottom: 1.2rem; font-size: 1.2rem; font-weight: 400; }
.category-page .unit-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 1.75rem; }
.category-page .unit-card { display: block; min-width: 0; padding: 0; margin: 0; border: 1px solid #e3ddcf; }
.category-page .unit-card-media { display: block; width: 100%; height: auto; aspect-ratio: auto; }
.category-page .unit-card-media img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; transform: none; }
.category-page .unit-card-media .media-label { position: static; padding: .6rem 1rem; }
.category-page .unit-card-copy { padding: 1rem; }
.category-page .unit-card-copy h3 { font-size: clamp(1.5rem,2.1vw,2rem); margin: .4rem 0 .65rem; }
.category-page .unit-card-copy > div { display: block; }
.category-page .card-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.25rem; margin-top: 1rem; }
.category-page .card-link { display: inline-flex; padding: .65rem .9rem; border: 1px solid #8b7139; background: #796331; color: white; font-size: 1rem; }
.category-page .card-link:hover { background: #594721; }

/* One collage; the same photos move into the full gallery, with no duplicate images. */
.apartment-photos { margin: 0 0 1.5rem; min-width: 0; }
.photo-mosaic { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1rem; }
.photo-mosaic figure { margin: 0; min-width: 0; scroll-margin-top: 6rem; }
.photo-mosaic a { display: block; }
.photo-mosaic img { display: block; width: 100%; height: auto; opacity: 1; transform: none; }
.photo-mosaic figcaption { padding: .7rem 0 1rem; color: #59574f; font-size: .95rem; line-height: 1.5; }
.has-photo-viewer [data-photo-home] .photo-mosaic { grid-template-columns: repeat(4,minmax(0,1fr)); grid-template-rows: repeat(2,minmax(0,1fr)); gap: .5rem; height: clamp(20rem,36vw,33rem); }
.has-photo-viewer [data-photo-home] figure:first-child { grid-column: 1 / 3; grid-row: 1 / 3; }
.has-photo-viewer [data-photo-home] .photo-mosaic[data-count="4"] figure:last-child { grid-column: 3 / 5; }
.has-photo-viewer [data-photo-home] figure:nth-child(n+6), .has-photo-viewer [data-photo-home] figcaption { display: none; }
.has-photo-viewer [data-photo-home] a { width: 100%; height: 100%; overflow: hidden; border-radius: .2rem; }
.has-photo-viewer [data-photo-home] img { width: 100%; height: 100%; object-fit: cover; transition: filter .2s; }
.has-photo-viewer [data-photo-home] a:hover img { filter: brightness(.9); }
.photo-gallery-actions { display: none; }
.has-photo-viewer .photo-gallery-actions { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .5rem 1rem; margin-top: .8rem; }
.photo-gallery-actions .button { min-height: 2.9rem; padding: .6rem 1rem; font: inherit; cursor: pointer; }
.photo-gallery-actions > span { font-size: .875rem; color: #5b594f; }
.photo-dialog { width: min(74rem,calc(100% - 2rem)); max-width: none; max-height: calc(100dvh - 2rem); margin: auto; padding: 0; border: 1px solid #d9ceb6; border-radius: .4rem; background: #fff; color: #292820; overflow: auto; }
.photo-dialog:not([open]) { display: none; }
.photo-dialog::backdrop { background: rgba(22,22,18,.78); }
.photo-dialog-header { position: sticky; top: 0; z-index: 2; display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: 1rem 1.25rem; background: #fff; border-bottom: 1px solid #ded8ca; }
.photo-dialog-header h2 { margin: 0; font-size: clamp(1.15rem,2vw,1.5rem); }
.photo-dialog-header button { flex-shrink: 0; min-height: 2.75rem; padding: .5rem .75rem; border: 1px solid #9b824b; border-radius: .25rem; background: white; color: #292820; font: inherit; font-size: .9rem; cursor: pointer; }
.photo-dialog-content { padding: 1rem 1.25rem; }
.photo-dialog .photo-mosaic { gap: 1rem; align-items: start; }
.photo-dialog .photo-mosaic figure:first-child { grid-column: 1 / -1; }
.photo-dialog .photo-mosaic img { max-height: 72dvh; object-fit: contain; }
.stay-layout { grid-template-columns: minmax(0,1.7fr) minmax(17rem,1fr); gap: 1.5rem; }
.stay-essentials { background: #fff; padding: 1.25rem; }
.stay-inclusions li { font-size: 1rem; }
.stay-reserve { min-width: 0; padding: 1.5rem; border: 1px solid #d6c7a8; border-top: 2px solid #a78b4a; background: #f8f6f1; }
.stay-reserve h2 { margin: .5rem 0 .75rem; font-size: 1.6rem; }
.stay-reserve p { font-size: 1rem; }
.stay-reserve .stay-film { margin-top: 1rem; font-size: 1rem; }

/* Booking and contact share one useful first screen. */
.contact-booking { padding-block: 1.75rem 1.5rem; }
.contact-heading { margin-bottom: 1.5rem; }
.contact-heading > p { max-width: 52rem; font-size: 1rem; }
.contact-booking-layout { display: grid; grid-template-columns: minmax(0,2fr) minmax(17rem,1fr); gap: 1.5rem; align-items: start; }
.contact-booking .booking-calendar-card { padding: 1.25rem; }
.booking-provider-note { margin: 1rem 0 .5rem; color: #5a574b; font-size: .9rem; line-height: 1.6; }
.contact-reservations { min-width: 0; padding: 1.5rem; border: 1px solid #d6c7a8; background: #f8f6f1; }
.contact-reservations h2 { margin: .4rem 0 1rem; font-size: 1.65rem; }
.contact-detail-link { display: grid; gap: .3rem; padding-block: .8rem; border-bottom: 1px solid #d9cfba; }
.contact-detail-link span { font-size: .875rem; color: #625d50; }
.contact-detail-link strong { font-size: 1rem; font-weight: 400; overflow-wrap: anywhere; }
.contact-next-steps { display: grid; gap: .7rem; margin: 1.25rem 0; }
.contact-next-steps .button { min-height: 3rem; padding: .7rem; font: inherit; line-height: 1.4; text-align: center; white-space: normal; cursor: pointer; }
.contact-reservations address { font-style: normal; margin: 1.2rem 0 .5rem; }
.contact-lower { display: grid; grid-template-columns: minmax(0,1.4fr) minmax(0,1fr); gap: 1.5rem; padding-block: 1rem 2.5rem; align-items: start; }
.contact-lower .enquiry-form { margin: 0; padding: 1.5rem; min-width: 0; box-shadow: none; border: 1px solid #d6c7a8; }
.contact-lower .contact-map { min-width: 0; }
.contact-map h2 { margin: 0 0 1rem; font-size: 1.65rem; }
.local-map { display: block; width: 100%; height: 24rem; border: 1px solid #d6c7a8; border-radius: .25rem; }

/* The guide's introduction and photograph sit together, instead of two long screens. */
.activities-page .page-hero { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; align-items: center; padding: 1.75rem var(--adm-pad); }
.activities-page .page-hero-content { display: block; padding: 0; }
.activities-page .page-title { font-size: clamp(2rem,3.6vw,3.6rem); margin: .65rem 0 1rem; }
.activities-page .page-hero-bottom { display: block; }
.activities-page .page-hero-facts { margin-top: 1.25rem; }
.activities-page .page-hero-media { min-width: 0; }
.activities-page .page-hero-media img { max-height: 23rem; width: 100%; height: auto; object-fit: contain; }
.activities-page .page-hero-media .media-label.adm-glass { padding: .5rem 0; font-size: .8rem; }
.activities-page .split-intro { padding-block: 1.5rem; gap: 1.5rem; }
.activities-page .split-intro h2 { font-size: clamp(1.7rem,2.5vw,2.5rem); }
.activities-page .activity-grid { gap: 1.5rem; }
.activities-map { display: grid; grid-template-columns: 1fr 1.6fr; gap: 2rem; align-items: center; padding-block: 2rem; }
.activities-map h2 { font-size: 2rem; margin: .5rem 0 1rem; }
.local-map-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; margin-top: 1rem; }

/* Home: three equal photo choices and compact supporting information. */
.quadro-home .introduction { display: block; padding-block: 2rem; }
.quadro-home .introduction > .section-index { display: none; }
.quadro-home .intro-copy { display: grid; grid-template-columns: 1fr 1.2fr; align-items: center; gap: 1.5rem; }
.quadro-home .intro-notes { display: grid; grid-template-columns: 1fr 1fr; margin: 0; gap: 1.5rem; font-size: 1rem; }
.quadro-home .apartment-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1.5rem; }
.quadro-home .apartment-card:nth-child(n) { display: block; grid-column: auto; margin: 0; padding: 0; }
.quadro-home .apartment-card .card-media { display: block; width: 100%; }
.quadro-home .apartment-card .card-media img { width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; }
.quadro-home .card-body { display: block; padding: .85rem 0; }
.quadro-home .card-body h3 { margin: .4rem 0; }
.quadro-home .card-body > a { display: inline-flex; min-height: 2.75rem; align-items: center; text-decoration: none; }
.quadro-home .location { padding-block: 2rem; }
.quadro-home .location-top { grid-template-columns: 1fr; }
.quadro-home .location-top .section-index { display: none; }
.quadro-home .location h2 { font-size: clamp(2rem,3vw,3rem); }
.quadro-home .location-facts { margin-top: 1.25rem; }
.quadro-home .location-actions { margin-top: 1.25rem; }
.quadro-home .booking-copy { max-width: none; }
.quadro-home .booking h2 { font-size: clamp(2rem,3vw,3rem); max-width: none; }
.home-booking-form { max-width: 60rem; margin-top: 1.25rem; padding: 1.25rem; border: 1px solid #d6c7a8; background: #f8f6f1; }
.home-booking-form .stay-planning-actions, .home-booking-form .stay-planning-status { display: none; }

@media (max-width: 1000px) {
  .contact-booking-layout { grid-template-columns: minmax(0,1fr); }
  .contact-reservations { display: block; }
  .quadro-home .intro-copy { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
  .category-intro > div:not(.unit-numbers), .stay-layout, .contact-lower, .activities-map { grid-template-columns: minmax(0,1fr); }
  .category-page .unit-grid { gap: 1rem; }
  .activities-page .page-hero { grid-template-columns: minmax(0,1fr); gap: 1rem; padding-block: 1.25rem; }
  .activities-page .page-hero-media img { max-height: 15rem; }
  .activities-page .page-hero-facts { margin-top: .8rem; }
  .activities-page .page-hero-facts > span { padding-top: .6rem; gap: .25rem; line-height: 1.4; }
  .activities-page .split-intro { display: block; }
  .activities-page .split-intro-copy { margin-top: .75rem; }
  .quadro-home .apartment-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .quadro-home .apartment-card:last-child { grid-column: 1 / -1; max-width: 40rem; }
  .photo-dialog .photo-mosaic { grid-template-columns: minmax(0,1fr); }
  .photo-dialog { width: calc(100% - 1rem); max-height: calc(100dvh - 1rem); }
  .photo-dialog-header, .photo-dialog-content { padding: .8rem; }
  .photo-dialog-header button { font-size: .85rem; }
}
@media (max-width: 560px) {
  .category-page .unit-grid, .quadro-home .apartment-grid, .quadro-home .intro-notes { grid-template-columns: minmax(0,1fr); }
  .quadro-home .apartment-card:last-child { grid-column: auto; }
  .has-photo-viewer [data-photo-home] .photo-mosaic { grid-template-columns: repeat(2,minmax(0,1fr)); grid-template-rows: 2fr 1fr; height: 22rem; }
  .has-photo-viewer [data-photo-home] figure:first-child { grid-column: 1 / -1; grid-row: 1; }
  .has-photo-viewer [data-photo-home] figure:nth-child(n+4) { display: none; }
  .photo-gallery-actions > span { display: none; }
  .stay-assistant { right: .65rem; max-width: calc(100% - 1.3rem); }
  .stay-assistant .assistant-launcher, .guest-book-now { padding: .65rem .85rem; font-size: .9rem; min-height: 3rem; }
  .stay-assistant .assistant-panel { width: calc(100vw - 1.3rem); }
  .contact-booking .booking-calendar-card, .contact-lower .enquiry-form, .contact-reservations { padding: 1rem; }
  .local-map { height: 20rem; }
}
@media (prefers-reduced-motion: reduce) { .photo-mosaic img { transition: none; } }

/* Photo-led apartment selection and a single, uninterrupted booking journey. */
.collection-intro { padding-block: 1.75rem 1.25rem; }
.collection-intro h1 { margin: .55rem 0; font-size: clamp(2rem,3.7vw,3.5rem); line-height: 1.2; }
.collection-intro > p:last-child { max-width: 52rem; font-size: 1.05rem; }
.apartments-page .collection-block { padding-block: 1.75rem; }
.apartments-page .section-head { margin-bottom: 1.2rem; }
.apartments-page .section-head h2 { font-size: clamp(1.75rem,2.5vw,2.5rem); }
.apartments-page .room-finder { padding-block: 1rem; }
.apartments-page .finder-title { margin-bottom: .75rem; }
.apartments-page .unit-grid { gap: 1.25rem; }
.apartments-page .unit-card-copy { padding: 1rem; }
.category-intro .category-total { margin-block: .7rem; }
.category-intro .unit-numbers { margin-bottom: .5rem; }
.category-page .category-intro > .text-link:last-child { display: none; }
.stay-page { padding-top: 1.5rem; }
.stay-heading { margin-bottom: 1rem; }
.stay-heading > a { margin-bottom: .4rem; }
.stay-heading-meta { margin: .6rem 0 0; font-size: .95rem; color: #5b584f; }
.has-photo-viewer [data-photo-home] .photo-mosaic { height: clamp(19rem,31vw,29rem); }
.has-photo-viewer [data-photo-home] .photo-mosaic a { border-radius: .35rem; }
.photo-gallery-actions { margin-top: .65rem; }
.stay-layout { grid-template-columns: minmax(0,1.65fr) minmax(20rem,1fr); column-gap: clamp(1.5rem,4vw,4rem); row-gap: 1.5rem; align-items: start; }
.stay-essentials { padding: 0 0 1.5rem; border: 0; border-bottom: 1px solid #dcd6ca; }
.stay-essentials h2 { font-size: 1.6rem; font-weight: 400; }
.stay-description { margin: 0 0 1.2rem; max-width: 66ch; font-size: 1rem; line-height: 1.65; }
.stay-facts { grid-template-columns: repeat(4,minmax(0,1fr)); }
.stay-inclusions ul { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .6rem 1rem; }
.stay-reserve { grid-column: 2; grid-row: 1 / span 3; position: sticky; top: calc(var(--nav-height,5.25rem) + 1rem); padding: 1.35rem; border-radius: .5rem; border: 1px solid #d3c4a5; background: linear-gradient(130deg,rgba(255,255,255,.97),rgba(247,243,232,.96)); box-shadow: 0 8px 24px #5643220d; -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); }
.stay-reserve h2 { margin-block: .35rem .5rem; font-size: 1.75rem; }
.reservation-category { margin: 0 0 1.2rem; font-size: .95rem !important; color: #5b584f; }
.stay-reserve .stay-date-fields, .reservation-dialog .stay-date-fields { grid-template-columns: repeat(2,minmax(0,1fr)); }
.stay-reserve .stay-date-fields .button, .reservation-dialog .stay-date-fields .button { grid-column: 1 / -1; width: 100%; }
.stay-reserve .stay-planning-actions, .reservation-dialog .stay-planning-actions { margin-top: .65rem; gap: .3rem 1rem; }
.stay-reserve .stay-secondary-actions, .reservation-dialog .stay-secondary-actions { justify-content: flex-start; gap: .25rem 1rem; padding-top: .65rem; border-top: 1px solid #ded7c8; }
.stay-reserve .booking-provider-note, .reservation-dialog .booking-provider-note { margin-block: .8rem; font-size: .875rem; }
.stay-reserve .stay-film { margin-top: .65rem; }
.stay-arrival, .stay-location { grid-column: 1; min-width: 0; }
.stay-arrival { padding-bottom: 1.5rem; border-bottom: 1px solid #dcd6ca; }
.stay-arrival h2, .stay-location h2 { font-size: 1.5rem; margin: 0 0 .75rem; }
.stay-arrival ul { display: flex; flex-wrap: wrap; gap: .5rem .8rem; list-style: none; margin: 0 0 .8rem; padding: 0; }
.stay-arrival li { padding: .4rem .7rem; border: 1px solid #ded7c8; border-radius: .2rem; font-size: .9rem; }
.stay-arrival p { margin-bottom: .5rem; font-size: 1rem; }
.stay-location address { font: inherit; font-size: 1rem; margin-bottom: .4rem; }
.stay-location .local-map { height: 16rem; margin-top: 1rem; border-radius: .4rem; }
.stay-related { display: block; margin-top: 2rem; padding-top: 1.5rem; }
.stay-related h2 { font-size: 1.6rem; margin-bottom: 1rem; }
.stay-related > div { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.25rem; }
.stay-related .related-apartment { display: block; padding-bottom: .8rem; border-bottom: 1px solid #dcd6ca; }
.related-apartment img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: contain; background: #f1eee7; border-radius: .35rem; }
.stay-related .related-apartment-name { margin-top: .85rem; font-size: 1.35rem; color: #292820; }
.stay-related .related-apartment-link { color: #79602c; margin-top: .6rem; text-decoration: underline; text-underline-offset: .25em; }
.related-apartment:hover .related-apartment-name { color: #79602c; }
.related-apartment:focus-visible { outline: 2px solid #79602c; outline-offset: 5px; }

/* Fullscreen viewer reuses the original photos; native scrolling enables touch swipe. */
.photo-dialog { width: 100%; max-width: none; height: 100dvh; max-height: none; margin: 0; border: 0; border-radius: 0; background: #f8f6f1; overflow: hidden; }
.photo-dialog[open] { display: grid; grid-template-rows: auto minmax(0,1fr) auto; }
.photo-dialog-header { position: static; padding: max(1rem,env(safe-area-inset-top)) clamp(1rem,3vw,2.5rem) 1rem; background: #fff; }
.photo-dialog-content { position: relative; padding: 0; min-height: 0; overflow: hidden; }
.photo-cursor {
  position: absolute; z-index: 3; width: 56px; height: 56px;
  display: flex; align-items: center; justify-content: center;
  transform: translate(-50%, -50%); pointer-events: none;
  background: transparent; color: #fff;
  filter: drop-shadow(0 1px 2px rgb(0 0 0 / .75));
}
.photo-cursor[hidden] { display: none; }
.photo-cursor.is-previous svg { transform: rotate(180deg); }
@media (hover: hover) and (pointer: fine) {
  .photo-dialog-content.has-photo-cursor [data-photo-open] { cursor: none; }
}
.photo-dialog .photo-mosaic { display: flex; width: 100%; height: 100%; gap: 0; overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; overscroll-behavior: contain; scrollbar-width: none; }
.photo-dialog .photo-mosaic::-webkit-scrollbar { display: none; }
.photo-dialog .photo-mosaic figure { flex: 0 0 100%; min-width: 0; height: 100%; padding: 1rem clamp(1rem,4vw,4rem); display: grid; grid-template-rows: minmax(0,1fr) auto; scroll-snap-align: start; scroll-snap-stop: always; }
.photo-dialog .photo-mosaic a { display: block; min-height: 0; width: 100%; height: 100%; }
.photo-dialog .photo-mosaic img { display: block; width: 100%; height: 100%; max-height: none; object-fit: contain; transform: none; }
.photo-dialog .photo-mosaic figcaption { padding: .8rem 0 0; margin: 0; text-align: center; font-size: .95rem; }
.photo-viewer-controls { display: flex; align-items: center; justify-content: center; gap: clamp(.75rem,3vw,2rem); padding: .8rem 1rem max(.8rem,env(safe-area-inset-bottom)); border-top: 1px solid #ded7c8; background: #fff; }
.photo-viewer-controls button, .reservation-dialog header button { min-height: 2.75rem; padding: .55rem .85rem; border: 1px solid #a88c52; border-radius: .25rem; background: #fff; color: #403821; font: inherit; font-size: .95rem; cursor: pointer; }
.photo-viewer-controls button[aria-disabled="true"] { opacity: .4; cursor: default; }
.photo-viewer-controls p { min-width: 3rem; margin: 0; text-align: center; font-size: 1rem; font-variant-numeric: tabular-nums; }
.photo-dialog :focus-visible, .reservation-dialog :focus-visible { outline: 2px solid #79602c; outline-offset: 3px; }
.reservation-dialog:not([open]) { display: none; }
.reservation-dialog { position: fixed; inset: auto 0 0; margin: 0 auto; width: min(100%,40rem); max-width: 100%; max-height: calc(100dvh - 1rem); border: 1px solid #d3c4a5; border-radius: 1rem 1rem 0 0; padding: 0 0 env(safe-area-inset-bottom); background: #fffdf8; color: #292820; overflow-y: auto; }
.reservation-dialog::backdrop { background: #17170eb3; }
.reservation-dialog > header { position: sticky; top: 0; z-index: 1; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem; border-bottom: 1px solid #ded7c8; background: #fffdf8; }
.reservation-dialog > header h2 { font-size: 1.3rem; margin: 0; }
.reservation-dialog [data-reservation-target] { padding: 1.25rem; }
.reservation-dialog [data-reservation-content] > h2 { margin: .3rem 0 .5rem; font-size: 1.7rem; }
body.reservation-open { overflow: hidden; }
body.reservation-open .stay-assistant { visibility: hidden; pointer-events: none; }

/* Restrained shared rhythm, readable type and a clear ending. */
.quadro-home .campaign .campaign-stage { min-height: 29rem; height: min(72svh,42rem); }
.quadro-home .campaign .campaign-slide { min-height: 100%; padding-top: 1rem; }
.quadro-home .campaign-caption { max-width: 35rem; }
.quadro-home .introduction { padding-block: 2rem; }
.quadro-home .details { padding-block: 2rem; }
.location-page .page-hero, .offers-page .page-hero { min-height: 0; }
.location-page .page-hero-media, .offers-page .page-hero-media { min-height: 0; }
.location-page .page-hero-media img, .offers-page .page-hero-media img { max-height: 29rem; object-fit: cover; }
.location-page .facts-grid { padding-block: 1.75rem; }
.location-page .split-intro { padding-block: 1.5rem; }
.location-page .location-map .local-map { height: 22rem; }
.activities-page .split-intro { padding-block: 1.4rem; }
.activities-page .activity-grid { gap: 1.5rem; }
.contact-booking .contact-next-steps { gap: .65rem; }
.discover-heading h1 { font-size: clamp(2rem,3.8vw,3.5rem); }
.discover-heading { margin-bottom: 1.5rem; }
.discover-connections { margin-top: 2rem; padding-top: 1.5rem; }
.offers-page .offer-card h2 { font-size: clamp(1.5rem,2.4vw,2.25rem); }
.compare-heading h1 { font-size: clamp(2rem,3.8vw,3.5rem); }
.compare-heading { margin-bottom: 1.1rem; }
.comparison .compare-controls { padding: 1rem; gap: 1rem; }
.compare-table thead th { padding: 1rem; }
.compare-table thead th:first-child { vertical-align: bottom; }
.compare-apartment { line-height: 1.35; }
.compare-photo { overflow: hidden; border-radius: .3rem; }
.site-footer { border-top: 3px solid #b49a61; }
@media (min-width: 1001px) { .apartments-page .unit-grid { grid-template-columns: repeat(3,minmax(0,1fr)); } }
@media (max-width: 900px) {
  .stay-layout { grid-template-columns: minmax(0,1fr); gap: 1.5rem; }
  .stay-reserve { position: static; grid-column: auto; grid-row: auto; }
  .stay-arrival, .stay-location { grid-column: auto; }
  .stay-heading h1 { font-size: clamp(1.8rem,5vw,2.5rem); }
  .stay-related > div { gap: 1rem; }
  .has-photo-viewer [data-photo-home] .photo-mosaic { height: 23rem; }
}
@media (max-width: 600px) {
  .quadro-home .campaign .campaign-stage { min-height: 29rem; height: 70svh; max-height: 38rem; }
  .quadro-home .campaign-caption { padding: 1.1rem; margin-bottom: 7rem; }
  .quadro-home .campaign-actions .campaign-link:last-child { display: none; }
  .stay-page { padding-top: 1rem; }
  .stay-heading-meta { line-height: 1.65; }
  .stay-facts { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .stay-inclusions ul { gap: .5rem .8rem; }
  .stay-related > div { grid-template-columns: minmax(0,1fr); }
  .has-photo-viewer [data-photo-home] .photo-mosaic { height: 20rem; }
  .photo-dialog-header h2 { font-size: 1.1rem; }
  .photo-dialog .photo-mosaic figure { padding: .5rem .6rem; }
  .photo-dialog .photo-mosaic figcaption { font-size: .875rem; line-height: 1.5; }
  .photo-viewer-controls button { padding-inline: .6rem; font-size: .875rem; }
  .location-page .page-hero-media img, .offers-page .page-hero-media img { max-height: 18rem; }
  .location-page .location-map .local-map { height: 18rem; }
}
@media (prefers-reduced-motion: no-preference) {
  .reservation-dialog[open] { animation: adm-reservation-enter .24s ease-out; }
  .related-apartment img { transition: filter .25s ease; }
  .related-apartment:hover img { filter: brightness(.95); }
}
@keyframes adm-reservation-enter { from { opacity: .4; translate: 0 1rem; } to { opacity: 1; translate: 0 0; } }
html[data-site-motion="paused"] .reservation-dialog[open] { animation: none; }

/* Shared dimensional rules. Keep intrinsic media proportions and allow copy to grow. */
:root {
  --adm-pad: max(clamp(1rem, 3vw, 3rem), calc((100vw - 90rem) / 2));
  --adm-gap: clamp(1rem, 2.2vw, 2rem);
  --adm-section: clamp(2rem, 3.5vw, 3.5rem);
  --adm-card-pad: clamp(1rem, 1.6vw, 1.5rem);
}
.content-shell, .stay-page, .discover-shell, .comparison, .booking-page,
.section-pad, .nav-shell, .site-footer { box-sizing: border-box; min-width: 0; }
main h1, main h2, main h3 { line-height: 1.25 !important; overflow-wrap: break-word; }
.title-line { overflow: visible; padding-bottom: .12em; }
.section-head, .collection-heading, .discover-heading, .compare-heading { gap: 1rem var(--adm-gap); }
.section-head > *, .collection-heading > *, .stay-layout > *, .contact-lower > *,
.contact-booking-layout > *, .card-actions > *, .event-actions > * { min-width: 0; }
.button, .card-link, .text-link { max-width: 100%; white-space: normal; overflow-wrap: break-word; }
.button { height: auto; text-align: center; }
.media-label.adm-glass { min-width: 0; max-width: 100%; height: auto; white-space: normal; overflow: visible; letter-spacing: 0; }

/* Collages follow the lead photograph's ratio rather than a fixed viewport height. */
.has-photo-viewer [data-photo-home] .photo-mosaic {
  height: auto; min-height: 0; aspect-ratio: calc(2 * var(--gallery-ratio, 1.5));
  grid-template-columns: repeat(4,minmax(0,1fr)); grid-template-rows: repeat(2,minmax(0,1fr));
  gap: clamp(.4rem, .65vw, .65rem);
}
.has-photo-viewer [data-photo-home] .photo-mosaic figure { min-height: 0; }
.has-photo-viewer [data-photo-home] .photo-mosaic a { background: #eeece6; }
.has-photo-viewer [data-photo-home] .photo-mosaic img { object-fit: contain; object-position: center; }
.photo-gallery-actions { padding-block: .25rem; }
.apartment-photos { margin-bottom: clamp(1.5rem, 2.5vw, 2.5rem); }
.photo-dialog .photo-mosaic { aspect-ratio: auto; }
.photo-dialog-header h2 { min-width: 0; overflow-wrap: anywhere; }
.photo-dialog .photo-mosaic figcaption { max-height: 25dvh; overflow-y: auto; }
.photo-viewer-controls { flex-wrap: wrap; gap: .5rem 1rem; }

/* Identical card padding; the shared media frames below normalise photograph ratios. */
.category-page .unit-card, .apartments-page .unit-card { display: flex; flex-direction: column; align-items: stretch; }
.unit-card-media img, .category-page .unit-card-media img,
.quadro-home .apartment-card .card-media img, .related-apartment img {
  display: block; width: 100%; height: auto; min-height: 0; max-height: none;
  aspect-ratio: auto; object-fit: contain; transform: none;
}
.category-page .unit-card-copy, .apartments-page .unit-card-copy,
.quadro-home .card-body { display: flex; flex-direction: column; align-items: stretch; min-height: 0; padding: var(--adm-card-pad); gap: .75rem; }
.category-page .unit-card-copy > div, .apartments-page .unit-card-copy > div {
  display: flex; flex-direction: column; flex: 1; align-items: stretch; gap: .9rem; padding: 0;
}
.unit-card-copy h3, .quadro-home .card-body h3 { margin: 0; }
.unit-card-copy .card-actions { margin-top: auto; padding-top: .4rem; }
.category-page .unit-card-media .media-label.adm-glass,
.unit-card-media .media-label.adm-glass, .quadro-home .card-count.adm-glass {
  padding: .65rem var(--adm-card-pad); font-size: .875rem; line-height: 1.5;
}
.quadro-home .card-body > a { align-self: start; }
.category-page .unit-grid > .unit-card, .apartments-page .unit-grid > .unit-card { grid-column: auto; }
.apartments-page .unit-grid > .unit-card:only-child { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); align-items: stretch; gap: 0; }
.apartments-page .unit-grid > .unit-card:only-child .unit-card-copy { padding: var(--adm-card-pad); }

/* Inputs respond to their card width, including narrow desktop sidebars. */
.stay-calendar-form { container-type: inline-size; }
.stay-reserve { padding: var(--adm-card-pad); }
.stay-reserve .stay-date-fields, .reservation-dialog .stay-date-fields { gap: .75rem; }
.stay-date-fields input { max-width: 100%; padding-inline: .65rem; }
.stay-planning-actions { align-items: center; }
.stay-planning-actions button { height: auto; text-align: left; white-space: normal; }
.stay-details > div { align-items: start; gap: .5rem 1rem; padding-block: .25rem; }
.stay-details dd { overflow-wrap: anywhere; }
.stay-facts { gap: 1rem; }
.stay-facts[data-fact-count="2"] { grid-template-columns: repeat(2,minmax(0,1fr)); }
.stay-inclusions li:last-child { grid-column: auto; }
.stay-inclusions ul { gap: .75rem 1rem; }
.stay-reserve:has([data-reservation-home]:empty) { min-height: 0; }
.stay-related .related-apartment { min-width: 0; }
.stay-related .related-apartment-name { line-height: 1.35; }
.contact-booking-layout, .contact-lower { gap: var(--adm-gap); }
.contact-booking .booking-calendar-card, .contact-reservations,
.contact-lower .enquiry-form { padding: var(--adm-card-pad); }
.calendar-caption, .finder-title { flex-wrap: wrap; }
.calendar-months { gap: 1rem; }
.form-field input, .form-field select, .form-field textarea,
[data-room-filters] select, [data-event-filters] select { min-width: 0; max-width: 100%; }

/* Keep destination and offer photographs complete and their captions aligned. */
.location-page .page-hero, .offers-page .page-hero {
  display: grid; grid-template-columns: repeat(2,minmax(0,1fr));
  align-items: center; gap: var(--adm-gap); margin: 0; padding: 2rem var(--adm-pad);
}
.location-page .page-hero-content, .offers-page .page-hero-content {
  display: block; padding: 0; min-width: 0;
}
.location-page .page-hero-bottom, .offers-page .page-hero-bottom { margin-top: 1rem; }
.location-page .page-title, .offers-page .page-title { font-size: clamp(2rem, 3.4vw, 3.5rem); }
.location-page .page-hero-media img, .offers-page .page-hero-media img,
.activities-page .page-hero-media img { width: 100%; height: auto; max-height: none; object-fit: contain; }
.location-page .page-hero-media .media-label.adm-glass,
.offers-page .page-hero-media .media-label.adm-glass,
.activities-page .page-hero-media .media-label.adm-glass { padding: .65rem 0; gap: .4rem 1rem; font-size: .875rem; }

/* Text sets the minimum hero height; overlay controls have their own reserved space. */
.quadro-home .campaign .campaign-stage { height: auto; min-height: min(42rem, 72svh); max-height: none; }
.quadro-home .campaign .campaign-slide { min-height: inherit; padding-block: clamp(3rem, 8vw, 7rem) 6rem; }
.quadro-home .campaign-caption { margin-block: 0; padding: var(--adm-card-pad); }
.quadro-home .campaign-pagination { bottom: 1rem; }
.quadro-home .campaign .header-film-control { bottom: 1rem; right: var(--adm-pad); left: auto; max-width: calc(100% - 2 * var(--adm-pad)); }

.site-footer { gap: 2rem; padding-bottom: calc(6rem + env(safe-area-inset-bottom)); }
.site-footer .footer-column a, .site-footer .footer-wordmark { overflow-wrap: anywhere; }
.site-footer .footer-meta { display: flex; flex-wrap: wrap; gap: .75rem 1.5rem; }
.stay-assistant { gap: .5rem; }
.stay-assistant .assistant-panel { overflow-y: auto; overscroll-behavior: contain; }

@container (max-width: 25rem) {
  .stay-date-fields, .stay-reserve .stay-date-fields, .reservation-dialog .stay-date-fields { grid-template-columns: minmax(0,1fr); }
  .stay-date-fields .button { grid-column: 1; width: 100%; }
}
@container (max-width: 40rem) { .calendar-months { grid-template-columns: minmax(0,1fr); } }
@media (min-width: 901px) and (max-width: 1200px) { .stay-facts { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media (min-width: 901px) and (max-height: 800px) { .stay-reserve { position: static; } }
@media (max-width: 900px) {
  .location-page .page-hero, .offers-page .page-hero { grid-template-columns: minmax(0,1fr); padding-block: 1.5rem; }
  .stay-reserve { max-width: none; }
}
@media (max-width: 760px) {
  .quadro-home .campaign .campaign-slide { padding-bottom: 8.5rem; }
  .quadro-home .campaign .header-film-control { bottom: 4.3rem; }
  .quadro-home .apartment-grid { grid-template-columns: minmax(0,1fr); }
  .quadro-home .apartment-card:last-child { grid-column: auto; max-width: none; }
  .site-footer { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .site-footer > .footer-brand, .site-footer > .footer-column:nth-last-child(2), .site-footer > .footer-meta { grid-column: 1 / -1; }
  .activities-page .page-hero { margin: 0; }
}
@media (max-width: 600px) {
  .has-photo-viewer [data-photo-home] .photo-mosaic { aspect-ratio: calc(var(--gallery-ratio,1.5) / 1.5); grid-template-columns: repeat(2,minmax(0,1fr)); grid-template-rows: 2fr 1fr; }
  .has-photo-viewer [data-photo-home] figure:first-child { grid-column: 1 / -1; grid-row: 1; }
  .has-photo-viewer [data-photo-home] figure:nth-child(n+4) { display: none; }
  .apartments-page .unit-grid > .unit-card:only-child { display: flex; }
  .stay-page { padding-block: 1.25rem 2rem; }
  .stay-heading-meta { margin-top: .75rem; }
  .stay-details > div { grid-template-columns: minmax(0,1fr); }
  .stay-details dt { color: #625d52; }
  .stay-inclusions ul { grid-template-columns: minmax(0,1fr); gap: .65rem; }
  .quadro-home .campaign .campaign-stage { min-height: 30rem; }
  .quadro-home .campaign .campaign-slide { padding-block: 3rem 8.5rem; }
  .quadro-home .campaign-caption { padding: 1rem; }
  .quadro-home .campaign-pagination { gap: .5rem; max-width: calc(100% - 2 * var(--adm-pad)); flex-wrap: wrap; }
  .quadro-home .campaign .header-film-control { bottom: 4.3rem; }
  .site-footer { grid-template-columns: minmax(0,1fr); }
  .site-footer > * { grid-column: 1; }
  .reservation-dialog [data-reservation-target] { padding: 1rem; }
}
@media (max-width: 420px) {
  .stay-reserve .stay-date-fields, .reservation-dialog .stay-date-fields, .stay-date-fields { grid-template-columns: minmax(0,1fr); }
  .stay-assistant { left: max(.65rem,env(safe-area-inset-left)); right: max(.65rem,env(safe-area-inset-right)); width: auto; max-width: none; }
  .stay-assistant .guest-book-now, .stay-assistant .assistant-launcher { flex: 1 1 0; min-width: 0; padding-inline: .6rem; }
  .stay-assistant .assistant-panel { left: 0; right: 0; width: 100%; }
  .photo-dialog-header { gap: .5rem; padding: .75rem; }
  .photo-dialog-header button { padding-inline: .6rem; }
  .calendar-toolbar { flex-wrap: wrap; }
  .calendar-toolbar p { flex: 1 1 100%; order: -1; text-align: left; }
}

/* Fine-line hospitality icons, paired with text and sized independently of photos. */
.adm-icon {
  display: inline-block; width: 1.25rem; height: 1.25rem; min-width: 1.25rem;
  flex: 0 0 1.25rem; align-self: start; color: #80663b; vertical-align: middle;
  overflow: visible; pointer-events: none;
}
.adm-icon-label {
  display: inline-flex; align-items: flex-start; gap: .55rem;
  min-width: 0; max-width: 100%; line-height: 1.5;
}
.adm-icon-label > .adm-icon { margin-top: .1em; }
.adm-icon-label > span { min-width: 0; overflow-wrap: anywhere; }
.stay-facts .adm-icon-label { flex-wrap: wrap; gap: .35rem .5rem; }
.stay-inclusions .adm-icon-label { align-items: center; }
.stay-inclusions .adm-icon { align-self: center; margin-top: 0; }
.stay-arrival .adm-icon { width: 1.1rem; height: 1.1rem; min-width: 1.1rem; flex-basis: 1.1rem; }
.compare-table tbody th .adm-icon-label { display: flex; flex-direction: column; gap: .5rem; }
.stay-date-fields label > .adm-icon-label { align-items: center; }
.stay-date-fields .adm-icon { margin-top: 0; }
.stay-assistant .assistant-launcher, .guest-book-now { gap: .45rem; }
.stay-assistant .adm-icon, .photo-gallery-actions .button > .adm-icon { align-self: center; }
.guest-book-now .adm-icon { color: currentColor; }
.photo-gallery-actions .button { gap: .55rem; }
.photo-gallery-actions .button:hover .adm-icon, .photo-gallery-actions .button:focus-visible .adm-icon { color: currentColor; }
.site-footer .adm-icon { color: #c5aa70; }
.site-footer .adm-icon-label { width: 100%; }
.contact-detail-link > .adm-icon-label { align-items: center; }
.quadro-home .accordion summary > .adm-icon-label { flex: 1; margin-right: .75rem; }
.quadro-home .accordion summary > i { flex-shrink: 0; }
@media (max-width: 420px) {
  .stay-assistant .adm-icon { width: 1.05rem; height: 1.05rem; min-width: 1.05rem; flex-basis: 1.05rem; }
}

/* A shared reservation palette: ivory, charcoal and satin gold. */
:is(.booking, .editorial-cta, .stay-reserve, .booking-calendar-card, .reservation-dialog) {
  --reservation-bg: #232c27;
  --reservation-ink: #faf7ee;
  --reservation-muted: #d1d2c7;
  --reservation-gold: #dfc58f;
  --reservation-line: #657060;
  background: var(--reservation-bg); color: var(--reservation-ink);
  border-color: var(--reservation-line);
}
.booking, .editorial-cta {
  display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr);
  align-items: center; gap: clamp(1.5rem,4vw,4rem);
  padding: clamp(2rem,4vw,3.5rem) var(--adm-pad);
  border-top: 1px solid var(--reservation-gold);
}
.booking > *, .editorial-cta > * { min-width: 0; }
.booking h2, .editorial-cta h2,
.stay-reserve h2, .reservation-dialog [data-reservation-content] > h2 {
  --display: Georgia, "Times New Roman", serif;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(2rem,3.6vw,3.5rem); font-weight: 300;
  line-height: 1.25; letter-spacing: 0; color: var(--reservation-ink);
  margin: .65rem 0 1rem; max-width: 24ch; text-wrap: balance;
}
.booking h2 em, .editorial-cta h2 em { color: var(--reservation-gold); font-weight: inherit; }
.booking .eyebrow, :is(.editorial-cta, .stay-reserve, .reservation-dialog) .page-kicker {
  color: var(--reservation-gold); font-size: .85rem; margin: 0;
}
.booking .booking-copy > p:not(.eyebrow), .editorial-cta p:not(.page-kicker) {
  color: var(--reservation-muted); max-width: 43ch;
  font-size: 1rem; line-height: 1.65; margin: 0;
}
.booking-dates {
  padding: clamp(1rem,2.5vw,2rem); border: 1px solid var(--reservation-line);
  border-top-color: var(--reservation-gold); border-radius: .35rem;
  background: #2c352f; box-shadow: inset 0 1px 0 #fff1;
}
.booking-dates > h3 { --display: Georgia, "Times New Roman", serif; margin: 0 0 1.25rem; color: var(--reservation-ink); font: 1.35rem/1.4 Georgia, "Times New Roman", serif; }
.booking .home-booking-form { max-width: none; padding: 0; margin: 0; border: 0; background: transparent; }
.booking .stay-date-fields { grid-template-columns: repeat(2,minmax(0,1fr)); }
.booking .stay-date-fields .button { grid-column: 1 / -1; width: 100%; }
.editorial-cta { grid-template-columns: minmax(0,1.6fr) minmax(14rem,1fr); }
.editorial-cta .booking-invitation-action { justify-self: end; }
.editorial-cta .button { margin: 0; min-height: 3.4rem; }
.stay-reserve, .contact-booking .booking-calendar-card, .booking-calendar-card {
  padding: var(--adm-card-pad); border: 1px solid var(--reservation-line);
  border-top: 2px solid var(--reservation-gold); border-radius: .35rem;
  box-shadow: 0 8px 24px #232c2712; -webkit-backdrop-filter: none; backdrop-filter: none;
}
.stay-reserve h2, .reservation-dialog [data-reservation-content] > h2 { font-size: clamp(1.75rem,2.3vw,2.25rem); }
:is(.booking, .stay-reserve, .booking-calendar-card, .reservation-dialog) .stay-date-fields label { color: var(--reservation-ink); }
:is(.booking, .stay-reserve, .booking-calendar-card, .reservation-dialog) .adm-icon { color: var(--reservation-gold); }
:is(.booking, .stay-reserve, .booking-calendar-card, .reservation-dialog) .stay-date-fields input {
  min-height: 3.4rem; border: 1px solid #e4d6b8; border-radius: .2rem;
  background: #faf7ee; color: #232c27; color-scheme: light;
}
:is(.booking, .editorial-cta, .stay-reserve, .booking-calendar-card, .reservation-dialog) .button.button-solid.direct-book-control {
  background: var(--reservation-gold); color: #232c27; border-color: var(--reservation-gold);
  border-radius: .2rem; box-shadow: inset 0 1px 0 #fff5; font-weight: 500;
  -webkit-backdrop-filter: none; backdrop-filter: none;
}
:is(.booking, .editorial-cta, .stay-reserve, .booking-calendar-card, .reservation-dialog) .button.button-solid.direct-book-control:is(:hover,:focus-visible) {
  background: #efdab0; color: #232c27; border-color: #efdab0; box-shadow: none;
}
:is(.booking, .stay-reserve, .booking-calendar-card, .reservation-dialog) :is(.stay-selection, .stay-planning-status, .booking-provider-note, .reservation-category) {
  color: var(--reservation-muted); line-height: 1.6;
}
:is(.booking, .stay-reserve, .booking-calendar-card, .reservation-dialog) .stay-selection { margin: .85rem 0 0; font-size: .875rem; }
:is(.stay-reserve, .booking-calendar-card, .reservation-dialog) :is(.text-link, .stay-film) {
  color: var(--reservation-gold); border-color: var(--reservation-line); background: transparent;
}
:is(.stay-reserve, .booking-calendar-card, .reservation-dialog) :is(.text-link, .stay-film):is(:hover,:focus-visible) {
  color: var(--reservation-ink); border-color: var(--reservation-gold);
}
:is(.stay-reserve, .reservation-dialog) .stay-secondary-actions { border-color: var(--reservation-line); }
:is(.booking, .editorial-cta, .stay-reserve, .booking-calendar-card, .reservation-dialog) :focus-visible {
  outline: 2px solid var(--reservation-gold); outline-offset: 4px;
}
.booking-calendar-card :is(.calendar-toolbar, .calendar-caption) { border-color: var(--reservation-line); }
.booking-calendar-card :is(.calendar-toolbar p, .calendar-weekday, .calendar-caption) { color: var(--reservation-muted); }
.booking-calendar-card .calendar-month h3 { color: var(--reservation-ink); }
.booking-calendar-card :is(.calendar-toolbar button, .calendar-caption button) {
  background: transparent; border-color: var(--reservation-line); color: var(--reservation-gold);
}
.booking-calendar-card :is(.calendar-toolbar button, .calendar-caption button):not(:disabled):hover { background: #374137; }
.booking-calendar-card .calendar-days button { color: var(--reservation-ink); }
.booking-calendar-card .calendar-days button.is-in-range { background: #465344; }
.booking-calendar-card .calendar-days button:not(:disabled):hover { background: #465344; border-color: var(--reservation-gold); }
.booking-calendar-card .calendar-days button.is-selected,
.booking-calendar-card .calendar-days button.is-selected:is(:hover,:focus-visible) {
  background: var(--reservation-gold); color: #232c27; border-color: var(--reservation-gold);
}
.booking-calendar-card .calendar-days button:disabled { color: #9caa9e; opacity: .65; }
.reservation-dialog { border-top: 2px solid var(--reservation-gold); }
.reservation-dialog > header { background: var(--reservation-bg); border-color: var(--reservation-line); }
.reservation-dialog > header h2 { color: var(--reservation-ink); }
.reservation-dialog > header button { background: transparent; color: var(--reservation-gold); border-color: var(--reservation-line); }
.reservation-dialog > header button:hover { background: #374137; }
@container (max-width: 25rem) {
  .booking .stay-date-fields { grid-template-columns: minmax(0,1fr); }
}
@media (max-width: 900px) {
  .booking, .editorial-cta { grid-template-columns: minmax(0,1fr); gap: 1.5rem; }
  .editorial-cta .booking-invitation-action { justify-self: start; }
  .booking h2, .editorial-cta h2 { font-size: clamp(2rem,6vw,3rem); }
}
@media (max-width: 420px) {
  .booking .stay-date-fields { grid-template-columns: minmax(0,1fr); }
  .editorial-cta .booking-invitation-action, .editorial-cta .button { width: 100%; }
}

/* One image frame across the home collection, apartment lists and related stays.
   Contain preserves the complete photograph; warm framing replaces uneven image heights. */
.apartment-photo-frame, .compare-photo {
  display: block; position: relative; width: 100%; min-width: 0; min-height: 0;
  aspect-ratio: 3 / 2; overflow: hidden; background: #e8e3d9;
}
.unit-card-media .apartment-photo-frame img,
.category-page .unit-card-media .apartment-photo-frame img,
.quadro-home .apartment-card .card-media .apartment-photo-frame img,
.related-apartment .apartment-photo-frame img, .compare-photo img {
  display: block; width: 100%; height: 100%; max-height: none; min-height: 0;
  aspect-ratio: auto; object-fit: contain; object-position: center; transform: none;
  border-radius: 0; background: transparent;
}
.unit-card-media .apartment-photo-frame, .card-media .apartment-photo-frame { flex: none; }
.unit-grid { align-items: stretch; }
.unit-grid .unit-card-copy { flex: 1; }
.unit-card-copy .card-essentials {
  display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .85rem;
  margin: 0; min-height: 1.5rem; color: #595348; font-size: .875rem;
  letter-spacing: 0; line-height: 1.5; text-transform: none;
}
.unit-card-copy .card-essentials .adm-icon { width: 1rem; height: 1rem; }
.unit-card-copy h3 { min-height: 2.5em; }
.unit-card-copy > div > span { font-size: 1rem; line-height: 1.65; }
.unit-card .card-actions { display: flex; flex-wrap: wrap; justify-content: flex-start; gap: .6rem 1.1rem; }
.card-actions :is(.card-link, .compare-link), .related-apartment-link, .stay-film { display: inline-flex; align-items: center; gap: .4rem; }
.card-actions .adm-icon, .related-apartment-link .adm-icon { width: 1.05rem; height: 1.05rem; }
.photo-context { display: flex; align-items: center; min-width: 0; min-height: 3.5rem; padding: .55rem var(--adm-card-pad, 1rem); background: #f6f3ec; border-bottom: 1px solid #ded5c3; color: #5b4e37; font-size: .8rem; font-weight: 400; line-height: 1.45; letter-spacing: 0; text-align: left; }
.photo-context .adm-icon-label, .photo-context-short .adm-icon-label { align-items: center; gap: .4rem; min-width: 0; }
.photo-context .adm-icon, .photo-context-short .adm-icon { width: 1rem; height: 1rem; flex: none; }
.photo-context .adm-icon-label > span { min-width: 0; overflow-wrap: break-word; }
.compare-photo { margin-bottom: 0; }
.compare-photo-context { margin-bottom: .75rem; padding-inline: .65rem; }
.related-apartment > .photo-context { margin-top: 0; border-radius: 0; }
.quadro-home .card-media .photo-context { min-height: 3.5rem; }
.quadro-home .card-body { flex: 1; }
.quadro-home .card-body > a { margin-top: auto; }
.film-video-context { display: none; }
.campaign-slide:has(.header-film.has-played) .film-photo-context { display: none; }
.campaign-slide:has(.header-film.has-played) .film-video-context { display: inline; }

/* A concise caption stays visible on the mosaic; the expanded viewer adds full detail. */
.has-photo-viewer [data-photo-home] .photo-mosaic figure { position: relative; }
.has-photo-viewer [data-photo-home] .photo-mosaic figcaption {
  display: block; position: absolute; inset: auto .4rem .4rem; z-index: 1;
  width: fit-content; max-width: calc(100% - .8rem); margin: 0; padding: .35rem .5rem;
  background: rgba(250,248,242,.96); border: 1px solid #cdbc9b; border-radius: .2rem;
  color: #443d30; font-size: .75rem; line-height: 1.4; pointer-events: none;
}
[data-photo-home] .photo-context-detail { display: none; }
.photo-context-short { display: block; }
.photo-dialog .photo-context-short { color: #705933; font-weight: 400; margin-bottom: .25rem; }
.photo-dialog .photo-context-detail { display: block; }
.photo-mosaic figcaption .adm-icon { color: #806437; }
@media (max-width: 650px) {
  .unit-card-copy h3 { min-height: 0; }
  .photo-context { min-height: 0; padding-block: .7rem; }
  .has-photo-viewer [data-photo-home] .photo-mosaic figcaption { font-size: .72rem; }
}
@media (prefers-reduced-motion: no-preference) and (hover: hover) {
  .apartment-photo-frame img, .compare-photo img { transition: filter .3s ease; }
  a:hover > .apartment-photo-frame img, a:focus-visible > .apartment-photo-frame img,
  .compare-apartment:hover .compare-photo img { filter: brightness(1.035); }
  .card-actions .adm-icon, .related-apartment-link .adm-icon { transition: color .25s ease; }
  .card-actions a:hover .adm-icon { color: #41341f; }
}
html[data-site-motion="paused"] .apartment-photo-frame img,
html[data-site-motion="paused"] .compare-photo img,
html[data-site-motion="paused"] .card-actions .adm-icon { transition: none; }
.button .adm-icon, .card-actions .card-link .adm-icon,
:is(.booking, .editorial-cta, .stay-reserve, .booking-calendar-card, .reservation-dialog) .button .adm-icon { color: currentColor; }

/* Shared finishing pass: consistent insets, complete media and compact sections. */
main :is(h1, h2, h3, h4, p, label, summary),
.site-header :is(a, summary, button), .site-footer :is(a, h2, button),
.film-modal-heading > span, .form-field label {
  text-transform: none;
  letter-spacing: 0;
}
main :is(section, article, header, figure), .site-footer > *,
.event-card > *, .connection-grid article { min-width: 0; }
main :is(h1, h2, h3, h4), .film-modal-heading > span {
  max-width: 100%; height: auto; overflow-wrap: break-word;
}
.quadro-home .apartment-card:nth-child(n) { display: flex; flex-direction: column; }
.quadro-home .card-body { flex: 1; }
.quadro-home .card-body > a { margin-top: auto; }
.unit-card-copy h3 { min-height: 0; }
.event-card, .connection-grid article, .event-tools { padding: var(--adm-card-pad); }
.event-grid, .connection-grid, .journal-grid { gap: var(--adm-gap); }
.event-card .event-actions, .connection-grid article a { overflow-wrap: anywhere; }

/* Photograph boundaries stay fixed while every image remains visible. */
.quadro-home .campaign-slide > img,
.quadro-home .campaign-slide > .header-film > img,
.quadro-home .campaign-slide > .header-film > video {
  object-fit: contain; object-position: center; transform: none;
}
.journal-grid .journal-card > figure { aspect-ratio: 3 / 2; background: #f6f3ec; }
.journal-grid .journal-card > figure > a { display: block; width: 100%; height: 100%; }
.journal-grid .journal-card > figure img {
  display: block; width: 100%; height: 100%; max-height: none;
  object-fit: contain; object-position: center;
}
.location-page .location-map-media { min-height: 0; border: 0; border-radius: 0; }
.location-page .location-map { align-items: start; gap: var(--adm-gap); }
.location-page .location-map-copy { padding: var(--adm-card-pad); }
.location-illustration { padding-block: var(--adm-section); }
.location-illustration header {
  display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center;
  gap: 1rem; margin-bottom: 1rem;
}
.location-illustration h2 { margin: 0; font-size: clamp(1.6rem, 2.8vw, 2.5rem); }
.location-illustration figure { margin: 0; }
.location-illustration img { display: block; width: 100%; height: auto; object-fit: contain; }
.booking, .editorial-cta { min-height: 0; height: auto; overflow: visible; }

/* The offer is the opening message; Home and Offers share the final date form. */
.offer-intro {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr);
  align-items: center; gap: var(--adm-gap); padding-block: 2rem;
}
.offer-intro-copy { display: flex; flex-direction: column; align-items: flex-start; gap: 1rem; }
.offer-intro-copy > * { margin: 0; }
.offer-intro-copy h1 { font-size: clamp(2.4rem, 4.5vw, 4.5rem); font-weight: 300; }
.offer-intro-copy h1 em { color: #80642e; font-style: normal; }
.offer-intro-copy .page-kicker { color: #80642e; }
.offer-intro-copy .offer-dates { font-size: clamp(1rem, 1.5vw, 1.25rem); color: #292820; }
.offer-intro-copy .offer-terms { max-width: 45ch; font-size: .875rem; line-height: 1.5; color: #686357; }
.offer-intro-photo { margin: 0; align-self: center; }
.offer-intro-photo img { display: block; width: 100%; height: auto; object-fit: contain; }
.offer-intro-photo figcaption { margin: 0; padding: .6rem 0 0; font-size: .875rem; line-height: 1.5; color: #686357; }
.offer-options {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--adm-gap); padding-block: 0 2rem;
}
.offer-option {
  display: flex; flex-direction: column; align-items: flex-start; gap: .75rem;
  padding: var(--adm-card-pad); border: 1px solid #ded5c3; background: #f8f6f0;
}
.offer-option > * { margin: 0; }
.offer-option h2 { font-size: clamp(1.4rem, 2vw, 2rem); }
.offer-option .page-kicker { color: #80642e; }
.offer-option .text-link { margin-top: auto; padding-block: .5rem; }
.offers-page .booking { margin-block: 0; }
#booking { scroll-margin-top: 6rem; }

@media (max-width: 760px) {
  .offer-intro { grid-template-columns: minmax(0, 1fr); padding-block: 1.5rem; }
  .offer-intro-copy { gap: .75rem; }
  .offer-options { grid-template-columns: minmax(0, 1fr); padding-bottom: 1.5rem; }
  .location-illustration { padding-block: 1.5rem; }
}

/* Keep the single menu booking action available on small screens too. */
@media (max-width: 480px) {
  .nav-shell, .nav-shell.is-compact { grid-template-columns: minmax(0,1fr) auto auto; column-gap: .5rem; }
  .nav-shell > .brand { width: 8.25rem; max-width: 100%; }
  .nav-shell > .brand img { width: 100%; max-width: 100%; height: auto; object-fit: contain; }
  .nav-shell > .nav-right, .nav-shell.is-compact > .nav-right { display: flex; grid-column: 2; }
  .nav-shell > .menu-toggle, .nav-shell.is-compact > .menu-toggle { grid-column: 3; }
  .nav-book.direct-book-control { padding-inline: .55rem; font-size: .875rem; white-space: nowrap; }
}
/* Case comes from the copy, including proper names and acronyms. */
body :is(h1, h2, h3, h4, h5, h6, p, a, button, label, summary, span, strong, small, dt, dd, figcaption, option, legend) {
  text-transform: none !important;
}


/* The lead image sets the header height at the full available website width. */
.quadro-home .campaign .campaign-stage {
  display: block; width: 100%; height: auto; min-height: 0; max-height: none; aspect-ratio: auto;
  overflow: clip;
}
.quadro-home .campaign .campaign-slide {
  display: block; position: absolute; inset: 0; width: 100%; height: auto;
  min-height: 0; padding: 0; margin: 0;
}
.quadro-home .campaign .campaign-slide.is-active { position: relative; inset: auto; }
.quadro-home .campaign-slide > img,
.quadro-home .campaign-slide > .header-film > img {
  display: block; position: relative; inset: auto; width: 100%; height: auto;
  max-height: none; aspect-ratio: auto; object-fit: contain; transform: none;
}
.quadro-home .campaign-slide > .header-film {
  position: relative; inset: auto; width: 100%; height: auto; aspect-ratio: auto;
}
.quadro-home .campaign-slide > .header-film.has-played > img { display: none; }
.quadro-home .campaign-slide > .header-film.has-played > video {
  display: block; position: relative; inset: auto; width: 100%; height: auto;
  max-height: none; aspect-ratio: auto; object-fit: contain;
}
.quadro-home .campaign .campaign-caption {
  position: absolute; left: var(--adm-pad); right: auto; bottom: 5.5rem;
  width: min(35rem, calc(100% - 2 * var(--adm-pad))); max-width: none;
  padding: var(--adm-card-pad); margin: 0;
}
.quadro-home .campaign .header-film .header-film-control { right: var(--adm-pad); bottom: 1rem; }
@media (max-width: 760px) {
  .quadro-home .campaign .campaign-caption {
    position: relative; inset: auto; width: 100%; max-width: none;
    padding: 1.25rem var(--adm-pad) 5.5rem; background: #232c27;
  }
  .quadro-home .campaign .campaign-actions { margin-top: 1rem; }
}

/* One underline treatment for link controls; filled buttons have none. */
.button, .button:is(:hover, :focus-visible),
.quadro-home .card-body > a, .event-notes a.text-link,
.card-link, .text-link { text-decoration: none; }
.card-link::after, .text-link::after, .quadro-home .card-body > a::after { content: none; }

/* Every reservation invitation uses the Home bar, including apartment pages. */
.booking, .booking.stay-reserve {
  position: relative; inset: auto; grid-column: auto; grid-row: auto;
  width: 100%; max-width: none; height: auto; min-height: 0; margin: 0;
  padding: clamp(2rem,4vw,3.5rem) var(--adm-pad);
  display: grid; grid-template-columns: repeat(2,minmax(0,1fr));
  align-items: center; gap: clamp(1.5rem,4vw,4rem);
  border: 0; border-top: 1px solid var(--reservation-gold); border-radius: 0;
  background: var(--reservation-bg); color: var(--reservation-ink);
  box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none;
}
.booking .booking-copy, .quadro-home .booking .booking-copy { max-width: none; }
.booking .booking-copy h2, .quadro-home .booking .booking-copy h2 {
  --display: Georgia, "Times New Roman", serif;
  font-family: var(--display); font-size: clamp(2rem,3vw,3rem);
  margin: .65rem 0 1rem; max-width: none; color: var(--reservation-ink);
}
.booking .booking-dates, .reservation-dialog .booking-dates {
  min-width: 0; padding: clamp(1rem,2.5vw,2rem); margin: 0;
  border: 1px solid var(--reservation-line); border-top-color: var(--reservation-gold);
  border-radius: .35rem; background: #2c352f;
  box-shadow: inset 0 1px 0 #fff1;
}
.booking-dates .reservation-category { margin: -.5rem 0 1rem; }
.booking-dates :is(.text-link, .stay-film) { color: var(--reservation-gold); border-color: var(--reservation-line); }
.booking-dates :is(.text-link, .stay-film):is(:hover,:focus-visible) { color: var(--reservation-ink); border-color: var(--reservation-gold); }
.reservation-dialog .booking-dates > h3 {
  --display: Georgia, "Times New Roman", serif; margin: 0 0 1.25rem;
  color: var(--reservation-ink); font: 1.35rem/1.4 Georgia, "Times New Roman", serif;
}
.reservation-dialog .home-booking-form { max-width: none; padding: 0; margin: 0; border: 0; background: transparent; }
.reservation-dialog [data-reservation-target] { padding: 1rem; }
.unit-page .stay-layout { grid-template-columns: minmax(0,1fr); }
.unit-page .stay-essentials { border-bottom: 0; padding-bottom: 0; }
.unit-page .stay-support .stay-layout { grid-template-columns: minmax(0,.75fr) minmax(0,1.25fr); gap: var(--adm-gap); }
.stay-support :is(.stay-arrival, .stay-location) { grid-column: auto; grid-row: auto; }
.stay-support .stay-arrival { border-bottom: 0; }
.contact-team .contact-reservations { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: var(--adm-gap); }
.contact-team .contact-reservations > div { min-width: 0; }
.contact-team .contact-next-steps { margin-top: 0; }
.contact-booking:not(.contact-team) .contact-heading { margin-bottom: 0; }
@media (max-width: 900px) {
  .booking, .booking.stay-reserve { grid-template-columns: minmax(0,1fr); gap: 1.5rem; }
  .booking .booking-copy h2, .quadro-home .booking .booking-copy h2 { font-size: clamp(2rem,6vw,3rem); }
  .unit-page .stay-support .stay-layout { grid-template-columns: minmax(0,1fr); }
}
@media (max-width: 760px) {
  .contact-team .contact-reservations { grid-template-columns: minmax(0,1fr); }
}
/* Retain apartment/calendar planning tools within the shared visual treatment. */
.js .booking.stay-reserve .home-booking-form .stay-planning-actions,
.js .booking-calendar-card .home-booking-form .stay-planning-actions,
.js .reservation-dialog .home-booking-form .stay-planning-actions { display: flex; }
.js .booking.stay-reserve .home-booking-form .stay-planning-status:not(:empty),
.js .booking-calendar-card .home-booking-form .stay-planning-status:not(:empty),
.js .reservation-dialog .home-booking-form .stay-planning-status:not(:empty) { display: block; }

/* The reservations invitation is the full-width opening of the shared footer. */
.site-footer {
  display: block; width: 100%; margin: 0; padding: 0; border: 0;
  background: #242420; color: #f7f6f2;
}
.site-footer > .booking { width: 100%; margin: 0; }
.footer-content {
  display: grid; grid-template-columns: minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1.2fr);
  gap: 2rem; padding: clamp(2rem,3vw,3rem) var(--adm-pad) calc(6rem + env(safe-area-inset-bottom));
  border-top: 2px solid #c5aa70;
}
.footer-content > * { min-width: 0; }
.footer-content > .footer-brand, .footer-content > .footer-column { grid-column: auto; }
.footer-content > .footer-meta { grid-column: 1 / -1; }
.site-footer .booking .booking-copy h2 {
  font-family: Georgia, "Times New Roman", serif; font-weight: 300;
  line-height: 1.25; letter-spacing: 0; overflow: visible; overflow-wrap: break-word;
}
.site-footer .booking h2 em { font-style: normal; }
.site-footer .booking .booking-dates > h3 { font-weight: 400; }
.site-footer .booking :is(.text-link, .stay-film) { text-decoration: none; }
@media (max-width: 1000px) { .footer-content { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media (max-width: 600px) { .footer-content { grid-template-columns: minmax(0,1fr); } }

/* Block images fill their own width. Their intrinsic proportions set the height. */
.apartment-photo-frame, .compare-photo,
.journal-grid .journal-card > figure, .journal-grid .journal-card > figure > a {
  display: block; width: 100%; height: auto; min-height: 0; max-height: none;
  aspect-ratio: auto; margin: 0; padding: 0; border: 0; border-radius: 0;
  background: transparent; overflow: visible;
}
.unit-card-media .apartment-photo-frame img,
.category-page .unit-card-media .apartment-photo-frame img,
.quadro-home .apartment-card .card-media .apartment-photo-frame img,
.related-apartment .apartment-photo-frame img, .compare-photo img,
.journal-grid .journal-card > figure img {
  display: block; position: relative; inset: auto; width: 100%; height: auto;
  min-height: 0; max-height: none; aspect-ratio: auto; object-fit: contain;
  margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent;
  transform: none;
}
.apartments-page .unit-grid > .unit-card:only-child .unit-card-media { align-self: start; }

/* A lead photograph and four matching tiles form one compact, edge-aligned gallery.
   These preview rules never follow the photos into the full-screen viewer. */
.apartment-photos.has-photo-viewer { position: relative; }
.has-photo-viewer [data-photo-home] { aspect-ratio: 3 / 1; border-radius: .85rem; overflow: hidden; }
.has-photo-viewer [data-photo-home] .photo-mosaic {
  display: grid; grid-template-columns: minmax(0,2fr) repeat(2,minmax(0,1fr));
  grid-template-rows: repeat(2,minmax(0,1fr)); align-items: stretch;
  width: 100%; height: 100%; min-height: 0; max-height: none; aspect-ratio: auto;
  gap: clamp(.35rem,.6vw,.65rem); background: transparent; overflow: hidden;
}
.has-photo-viewer [data-photo-home] .photo-mosaic figure {
  grid-column: auto; grid-row: auto; width: 100%; height: 100%; min-height: 0;
  padding: 0; margin: 0; background: transparent; align-self: stretch; overflow: hidden;
}
.has-photo-viewer [data-photo-home] .photo-mosaic figure:nth-child(-n+5) { display: block; }
.has-photo-viewer [data-photo-home] .photo-mosaic figure:first-child {
  grid-column: 1; grid-row: 1 / 3;
}
.has-photo-viewer [data-photo-home] .photo-mosaic[data-count="4"] figure:last-child {
  grid-column: 2 / 4;
}
.has-photo-viewer [data-photo-home] .photo-mosaic a,
.has-photo-viewer [data-photo-home] .photo-mosaic img {
  display: block; position: relative; inset: auto; width: 100%; height: 100% !important;
  min-height: 0; max-height: none; aspect-ratio: auto !important; padding: 0; margin: 0;
  object-fit: cover; object-position: center; transform: none; border: 0; border-radius: 0; background: transparent;
}
.has-photo-viewer [data-photo-home] .photo-mosaic a:focus-visible { outline: 3px solid #fff; outline-offset: -5px; }
.has-photo-viewer [data-photo-home] .photo-mosaic figcaption { display: none; }
.apartment-photos.has-photo-viewer .photo-gallery-actions {
  position: absolute; inset: auto clamp(.75rem,1.5vw,1.5rem) clamp(.75rem,1.5vw,1.5rem) auto;
  z-index: 2; margin: 0; padding: 0; max-width: calc(100% - 1.5rem);
}
.apartment-photos .photo-gallery-actions .button {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  margin: 0; min-height: 2.75rem; padding: .65rem 1rem; border: 1px solid #292820;
  border-radius: .45rem; background: #fff; color: #292820; box-shadow: 0 2px 10px #00000014;
  font-size: .95rem; line-height: 1.25;
}
.apartment-photos .photo-gallery-actions .button:hover { background: #f4f2ed; }
@media (max-width: 650px) {
  .has-photo-viewer [data-photo-home] { aspect-ratio: 3 / 2; border-radius: .6rem; }
  .has-photo-viewer [data-photo-home] .photo-mosaic { grid-template-columns: minmax(0,1fr); grid-template-rows: minmax(0,1fr); }
  .has-photo-viewer [data-photo-home] .photo-mosaic figure:first-child { grid-column: 1; grid-row: 1; }
  .has-photo-viewer [data-photo-home] .photo-mosaic figure:nth-child(n+2) { display: none; }
}

/* Destination and offer lead images span the page instead of a half-width column. */
.location-page .page-hero, .activities-page .page-hero, .offers-page .offer-intro {
  display: block; width: 100%; margin: 0; padding: 0;
}
.location-page .page-hero-content, .activities-page .page-hero-content,
.offers-page .offer-intro-copy { padding: 1.5rem var(--adm-pad); }
.location-page .page-hero-media, .activities-page .page-hero-media,
.offers-page .offer-intro-photo { width: 100%; height: auto; min-height: 0; margin: 0; padding: 0; }
.location-page .page-hero-media img, .activities-page .page-hero-media img,
.offers-page .offer-intro-photo img { width: 100%; height: auto; max-height: none; aspect-ratio: auto; }
.location-page .page-hero-media .media-label.adm-glass,
.activities-page .page-hero-media .media-label.adm-glass,
.offers-page .offer-intro-photo figcaption { padding: .75rem var(--adm-pad); }
.offers-page .offer-options { padding-top: 1.5rem; }

/* A single icon box, centred on the first text line rather than arbitrary offsets. */
.adm-icon {
  width: var(--adm-icon-size,1.15em) !important;
  height: var(--adm-icon-size,1.15em) !important;
  min-width: var(--adm-icon-size,1.15em) !important;
  flex: 0 0 var(--adm-icon-size,1.15em) !important;
  display: block; align-self: center; margin: 0; padding: 0; vertical-align: middle;
}
.adm-icon-label, .compare-table tbody th .adm-icon-label,
.stay-facts .adm-icon-label, .photo-context .adm-icon-label,
.photo-context-short .adm-icon-label, .stay-inclusions .adm-icon-label,
.stay-date-fields label > .adm-icon-label, .contact-detail-link > .adm-icon-label {
  display: inline-flex; flex-direction: row; flex-wrap: nowrap; align-items: flex-start;
  gap: .5em; min-width: 0; line-height: 1.5;
}
.adm-icon-label > .adm-icon {
  align-self: flex-start !important;
  margin: calc((1.5em - var(--adm-icon-size,1.15em)) / 2) 0 0 !important;
}
.adm-icon-label > span { min-width: 0; line-height: inherit; overflow-wrap: break-word; }
:is(.button, .card-link, .compare-link, .related-apartment-link, .guest-book-now, .assistant-launcher) > .adm-icon {
  align-self: center; margin: 0;
}
.site-footer .booking .adm-icon { color: var(--reservation-gold); }

/* A shorter Location introduction and a direct shortcut to the map. */
.quadro-home .details-image > p.adm-glass {
  margin: 0; padding: .85rem var(--adm-card-pad); width: 100%; max-width: none;
}
.quadro-home .details-image > img {
  display: block; position: relative; inset: auto; width: 100%; height: auto;
  max-height: none; aspect-ratio: auto; object-fit: contain; transform: none;
}
.location-page .page-hero-content {
  display: grid; grid-template-columns: minmax(0,1.15fr) minmax(0,1fr);
  gap: 1rem var(--adm-gap); align-items: center; padding-block: 1.25rem;
}
.location-page .page-title { max-width: 22ch; margin-top: .4rem; font-size: clamp(2rem,3.4vw,3.25rem); }
.location-page .page-hero-bottom { display: grid; gap: .65rem; margin-top: 0; }
.location-page .page-hero-bottom .page-lead { max-width: none; margin: 0; }
.location-page .page-hero-facts > span { padding: .5rem .5rem 0 0; gap: .15rem; }
.location-page .page-hero-facts strong { font-size: 1.25rem; }
.location-page .page-hero-bottom > .text-link { display: inline-flex; align-items: center; gap: .5em; width: fit-content; }
#location-map { scroll-margin-top: calc(var(--nav-height,5.25rem) + 1rem); }
.location-page .location-map { padding-block: 1.5rem; align-items: center; }
.location-page .location-map .local-map { height: 20rem; }
.location-page .location-map-copy { display: flex; flex-direction: column; align-items: flex-start; gap: .85rem; }
.location-page .location-map-copy > :is(h2, p, address, .button) { margin: 0; }
.location-page .location-map-copy h2 { font-size: clamp(1.6rem,2.5vw,2.3rem); }
.location-page .location-illustration { padding-block: 1rem 1.5rem; }
@media (max-width: 760px) {
  .location-page .page-hero-content { grid-template-columns: minmax(0,1fr); gap: .75rem; }
  .location-page .location-map .local-map { height: 18rem; }
}

/* Translucent, softly refracted surfaces keep the page visible behind sticky controls. */
.site-header.glass-nav {
  background: linear-gradient(115deg, rgb(255 253 247 / .78), rgb(247 240 222 / .64) 55%, rgb(255 253 247 / .76));
  border-bottom: 1px solid rgb(157 128 73 / .42);
  -webkit-backdrop-filter: blur(16px) saturate(125%);
  backdrop-filter: blur(16px) saturate(125%);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / .7), 0 3px 20px rgb(39 42 32 / .06);
}
.site-header .nav-primary > a:is(:hover,:focus-visible,[aria-current="page"]),
.site-header .nav-dropdown[open] > summary,
.site-header .nav-dropdown > summary:is(:hover,:focus-visible) {
  color: #242d27; text-decoration: underline; text-underline-offset: .5rem;
}
.site-header .nav-book.direct-book-control,
.stay-assistant .guest-book-now, .stay-assistant .assistant-launcher {
  background: linear-gradient(115deg, rgb(255 253 247 / .78), rgb(247 240 222 / .64));
  color: #242d27; border: 1px solid rgb(168 137 74 / .7); border-radius: .55rem;
  -webkit-backdrop-filter: blur(16px) saturate(125%);
  backdrop-filter: blur(16px) saturate(125%);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / .8), inset 0 -1px 0 rgb(170 139 76 / .15), 0 5px 20px rgb(28 35 29 / .12);
  text-decoration: none; transition: background .2s, border-color .2s, box-shadow .2s;
}
.site-header .nav-book.direct-book-control, .stay-assistant .guest-book-now {
  background: linear-gradient(115deg, rgb(245 225 182 / .86), rgb(223 196 137 / .72));
}
.site-header .nav-book.direct-book-control:is(:hover,:focus-visible),
.stay-assistant :is(.guest-book-now,.assistant-launcher):is(:hover,:focus-visible,[aria-expanded="true"]) {
  background: linear-gradient(115deg, rgb(255 248 229 / .9), rgb(231 211 167 / .82));
  color: #242d27; border-color: #927441;
  box-shadow: inset 0 1px 0 rgb(255 255 255 / .9), 0 6px 22px rgb(28 35 29 / .16);
}
.site-header .nav-book.direct-book-control:focus-visible,
.stay-assistant :is(.guest-book-now,.assistant-launcher):focus-visible {
  outline: 2px solid #755c30; outline-offset: 3px;
}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .site-header.glass-nav, .stay-assistant .assistant-launcher { background: #f8f4e9; }
  .site-header .nav-book.direct-book-control, .stay-assistant .guest-book-now { background: #e7d2a5; }
}

/* Shared divider and card insets, after the legacy theme's padding resets. */
:root {
  --adm-divider-space: clamp(1.25rem, 2vw, 2rem);
  --adm-card-pad: clamp(1.25rem, 2vw, 2rem);
}
main .section-head, main .collection-heading {
  padding-block-start: var(--adm-divider-space);
  margin-block-end: clamp(1.5rem, 2.5vw, 2.5rem);
  gap: 1.25rem var(--adm-gap);
  align-items: start;
}
main .section-head > *, main .collection-heading > * { min-width: 0; margin-block: 0; }
main .section-head .page-kicker, main .collection-heading .eyebrow { margin-block-start: 0; }
main .section-head .section-title, main .collection-heading [data-originkit-mount="weight-hover"] {
  margin-block-start: .85rem;
}
.category-page .unit-card-copy, .apartments-page .unit-card-copy,
.quadro-home .card-body, .stay-essentials,
.booking-calendar-card, .booking-help, .contact-card.adm-glass {
  padding: var(--adm-card-pad);
}
.location-page .page-hero-content { padding-block: var(--adm-divider-space); }
.location-hero-actions { display: flex; align-items: center; flex-wrap: wrap; gap: .75rem 1.5rem; }
.location-hero-actions .text-link { display: inline-flex; align-items: center; gap: .5em; min-height: 2.75rem; }
.location-page .page-hero-facts > span { padding-block: .85rem; gap: .4rem; }
.location-page .location-map { padding-block: var(--adm-divider-space); }
@media (max-width: 760px) {
  main .section-head, main .collection-heading { grid-template-columns: minmax(0,1fr); }
}
@media (max-width: 480px) {
  .location-page .page-hero-facts > span {
    flex-direction: row; justify-content: space-between; align-items: baseline;
    gap: 1rem; padding: .85rem 0;
  }
}

/* Requested 35% height reduction: width stays fluid and photos never stretch.
   The gallery moves images into its dialog, where these preview rules do not apply. */
main img[data-compact-image]:not(dialog img) {
  display: block;
  width: 100% !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  aspect-ratio: var(--adm-compact-ratio) !important;
  object-fit: cover !important;
  object-position: center;
}

/* Apartment blocks share one frame, independent of each photograph's source ratio.
   A 3:2 frame at 65% height is 30:13. Full-screen photos retain their original ratio. */
main :is(.unit-card-media, .card-media, .related-apartment, .compare-photo,
  [data-photo-home], .stay-more-photos, .stay-gallery) img[data-compact-image]:not(dialog img),
.quadro-home .campaign-slide img[data-compact-image] {
  aspect-ratio: 30 / 13 !important;
}
.quadro-home .campaign-slide > .header-film,
.quadro-home .campaign-slide > .header-film.has-played > video {
  width: 100%; height: auto; min-height: 0; max-height: none;
  aspect-ratio: 30 / 13; object-fit: cover;
}

/* Clean action labels, including hover/focus states and animated controls. */
body :is(button, [role="button"], .button, .card-link, .text-link, .card-body > a,
  .campaign-link, .compare-link, .compare-detail, .related-apartment-link,
  .compare-apartment .compare-name, .contact-detail-link, .assistant-whatsapp,
  .assistant-message-actions a, .stay-film, .origin-weight-link, .video-launch-label > span),
body :is(button, [role="button"], .button, .nav-book, .guest-book-now, .assistant-launcher) *,
.site-header :is(a, summary),
.site-footer .footer-content a {
  text-decoration: none !important;
}
body:not(.category-page) .card-link,
body :is(.text-link, .card-body > a, .campaign-link,
  .contact-detail-link, .contact-card a:not(.button),
  .stay-film, .origin-weight-link, .origin-motion-control, .site-motion-control,
  .campaign-pagination button, .gallery-thumbs button) {
  border-bottom: 0 !important;
}
body :is(.button, .card-link, .text-link, .card-body > a, .campaign-link)::after {
  content: none;
}
.site-header #mobile-menu :is(a, .mobile-dropdown) { border-bottom: 0; }
.calendar-days button[aria-current="date"] { font-weight: 600; }

/* Restore apartment information and the booking calendar side by side. */
.unit-page .stay-layout {
  display: grid; grid-template-columns: minmax(0,1.65fr) minmax(21rem,1fr);
  gap: 1.5rem clamp(1.5rem,4vw,4rem); align-items: start;
}
.unit-page .stay-essentials, .unit-page .stay-arrival, .unit-page .stay-location { grid-column: 1; }
.unit-page .stay-essentials { padding: 0 0 1.5rem; border-bottom: 1px solid #dcd6ca; }
.unit-page .stay-reserve {
  grid-column: 2; grid-row: 1 / span 3; position: sticky;
  top: calc(var(--nav-height,5.25rem) + 1rem); align-self: start;
  max-height: none;
  padding: var(--adm-card-pad); overflow: visible;
}
.stay-reserve .apartment-booking-content {
  padding: 0; border: 0; box-shadow: none; background: transparent;
}
.apartment-booking-content h2 { margin: .5rem 0 .75rem; font-size: 1.75rem; }
.apartment-booking-content .calendar-months { grid-template-columns: minmax(0,1fr); }
.apartment-booking-content .calendar-toolbar { margin-top: 1rem; padding-top: 1rem; }
.apartment-booking-content .calendar-caption { flex-wrap: wrap; gap: .5rem; }
.apartment-booking-content .stay-planning-actions { flex-wrap: wrap; }
.apartment-booking-content .stay-date-fields { grid-template-columns: repeat(2,minmax(0,1fr)); }
.apartment-booking-content .stay-date-fields .button { grid-column: 1 / -1; width: 100%; }
.unit-page .stay-arrival, .unit-page .stay-location { grid-row: auto; }
@media (max-width: 900px) {
  .unit-page .stay-layout { grid-template-columns: minmax(0,1fr); gap: 1.5rem; }
  .unit-page .stay-reserve {
    grid-column: 1; grid-row: auto; position: static; max-height: none; overflow: visible;
  }
}
@media (max-width: 520px) {
  .apartment-booking-content .stay-date-fields { grid-template-columns: minmax(0,1fr); }
}
@media (min-width: 901px) and (max-height: 800px) {
  .unit-page .stay-reserve { position: static; }
}

/* Familiar photographic proportions replace the shallow apartment preview frames. */
main :is(.unit-card-media, .card-media, .related-apartment, .compare-photo,
  [data-photo-home], .stay-more-photos, .stay-gallery) img[data-compact-image]:not(dialog img) {
  aspect-ratio: 3 / 2 !important;
  object-fit: cover !important;
  object-position: center; transform: none;
}

/* A compact offer page with the saving and booking form as the focal point. */
.offers-page .offers-campaign { padding-block: clamp(1.25rem,2.5vw,2.5rem); }
.offer-feature {
  display: grid; grid-template-columns: minmax(0,1.15fr) minmax(22rem,1fr);
  align-items: stretch; border: 1px solid #c8b37a; border-radius: .45rem;
  overflow: hidden; background: #232c27;
}
.offer-feature-copy { padding: clamp(1.5rem,3vw,3rem); color: #faf7ee; }
.offer-feature-copy .page-kicker { color: #dfc58f; margin: 0 0 1rem; }
.offer-feature-copy h1 { margin: 0; max-width: 20ch; font-size: clamp(1.5rem,2.5vw,2.5rem); }
.offer-feature-copy .offer-saving { display: flex; flex-wrap: wrap; align-items: baseline; gap: .75rem 1.25rem; margin: .75rem 0 1.5rem; }
.offer-saving strong { display: inline-flex; align-items: baseline; color: #dfc58f; font-size: clamp(5rem,9vw,9rem); font-weight: 400; line-height: 1; letter-spacing: -.045em; }
.offer-saving strong > span { font-size: .48em; letter-spacing: 0; }
.offer-saving > span { max-width: 8ch; font-size: 1.25rem; line-height: 1.3; }
.offer-feature-facts { display: grid; gap: 1rem; margin: 0; padding-top: 1.25rem; border-top: 1px solid #657060; }
.offer-feature-facts > div { display: grid; gap: .35rem; }
.offer-feature-facts dt { color: #d1d2c7; font-size: .875rem; }
.offer-feature-facts dd { margin: 0; font-size: clamp(1rem,1.5vw,1.3rem); }
.offer-feature-facts .adm-icon { color: #dfc58f; }
.offer-booking.booking-calendar-card {
  min-width: 0; margin: 0; padding: clamp(1.25rem,2.5vw,2.5rem);
  border: 0; border-left: 1px solid #657060; border-radius: 0;
  background: #2c352f; box-shadow: none;
}
.offer-booking h2 { margin: 0 0 .75rem; font-size: clamp(1.6rem,2.5vw,2.3rem); }
.offer-booking > p { margin: 0 0 1.25rem; color: #d1d2c7; }
.offer-booking .stay-date-fields { grid-template-columns: repeat(2,minmax(0,1fr)); }
.offer-booking .stay-date-fields .button { grid-column: 1 / -1; width: 100%; margin: 0; }
.offer-booking .stay-planning-actions { flex-wrap: wrap; margin-top: .75rem; }
.offer-booking .offer-conditions { margin: 1rem 0 .5rem; font-size: .875rem; line-height: 1.5; }
.offers-other { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1rem; margin-top: 1rem; }
.offer-secondary { display: flex; flex-direction: column; align-items: flex-start; justify-content: space-between; gap: 1rem; padding: var(--adm-card-pad); border: 1px solid #ded5c3; border-radius: .35rem; background: #f8f6f0; }
.offer-secondary h2 { margin: 0 0 .5rem; font-size: 1.35rem; }
.offer-secondary p { margin: 0; color: #625d52; }
.offer-secondary .button { min-height: 2.75rem; padding: .65rem 1rem; margin: 0; font-size: .95rem; }
.offer-secondary p strong { font-weight: 500; }
@media (max-width: 900px) {
  .offer-feature { grid-template-columns: minmax(0,1fr); }
  .offer-booking.booking-calendar-card { border-left: 0; border-top: 1px solid #657060; }
  .offer-feature-facts { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width: 600px) {
  .offers-other { grid-template-columns: minmax(0,1fr); }
  .offer-feature-facts { grid-template-columns: minmax(0,1fr); }
}
@media (max-width: 380px) { .offer-booking .stay-date-fields { grid-template-columns: minmax(0,1fr); } }

/* An inviting property photograph and the shared Home-style Direct Booking footer. */
.contact-welcome {
  display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.15fr);
  gap: var(--adm-gap); align-items: center; padding-block: clamp(1.5rem,3vw,3rem);
}
.contact-welcome .contact-heading { margin: 0; }
.contact-welcome .contact-heading h1 { margin: .65rem 0 1rem; font-size: clamp(2rem,4vw,3.75rem); }
.contact-welcome .contact-heading > p:last-of-type { max-width: 38ch; }
.contact-welcome-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.25rem; margin-top: 1.25rem; }
.contact-welcome-photo { margin: 0; min-width: 0; }
.contact-welcome-photo figcaption { padding-top: .65rem; color: #625d52; }
.contact-welcome .contact-welcome-photo img[data-compact-image] {
  aspect-ratio: auto !important; object-fit: contain !important;
  width: 100%; height: auto; transform: none; border-radius: .35rem;
}
@media (max-width: 760px) {
  .contact-welcome { grid-template-columns: minmax(0,1fr); padding-block: 1.5rem; }
}

.enquiry-trap { display: none; }
[data-enquiry-status] { margin: .75rem 0 1rem; }
[data-enquiry-status][data-state="error"] { color: #8a3028; }
[data-enquiry-status][data-state="success"] { color: #275b38; }
.enquiry-form button:disabled { opacity: .6; cursor: not-allowed; }

/* A compact local guide: integrated header, grouped experiences, no photo labels. */
.activities-guide {
  padding: 1.25rem var(--adm-pad) 1.5rem;
  background: #f5f2eb;
  color: #28332b;
}
.activities-guide p, .activities-guide address { line-height: 1.55; }
.activities-guide section[id] { scroll-margin-top: calc(var(--nav-height,5.25rem) + 1.25rem); }
.activities-hero {
  display: grid; grid-template-columns: minmax(0,.95fr) minmax(0,1.25fr);
  overflow: hidden; background: #28372e;
}
.activities-hero-copy {
  display: flex; flex-direction: column; justify-content: center;
  align-items: flex-start; padding: clamp(1.5rem,3.1vw,3rem);
  color: #faf7ef;
}
.activities-hero-copy .page-kicker { margin: 0 0 1rem; color: #dcc594; }
.activities-hero-copy h1 {
  margin: 0; font-size: clamp(2.25rem,4.1vw,4.2rem); line-height: 1.1 !important;
}
.activities-hero-copy h1 em { color: #dcc594; }
.activities-hero-copy > p:not(.page-kicker) { max-width: 39ch; margin: 1rem 0 1.25rem; color: #e0e4db; }
.activities-jump { display: flex; flex-wrap: wrap; gap: .5rem; }
.activities-jump a {
  display: inline-flex; align-items: center; min-height: 2.75rem;
  padding: .55rem .85rem; border: 1px solid #7b8a7c; border-radius: .2rem;
  color: #faf7ef; font-size: .875rem; text-decoration: none;
}
.activities-jump a:hover { background: #3d4f41; }
.activities-jump a:focus-visible { outline: 2px solid #dfc58f; outline-offset: 3px; }
.activities-hero-photo { position: relative; min-width: 0; min-height: clamp(19rem,32vw,28rem); }
.activities-page main .activities-hero-photo img[data-compact-image] {
  position: absolute; inset: 0;
  height: 100% !important; aspect-ratio: auto !important; object-fit: cover !important;
  transform: none; object-position: center;
}
.activities-group { padding-top: clamp(1.5rem,2.7vw,2.5rem); }
.activities-group-heading {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: .5rem 1.5rem; margin-bottom: 1rem;
}
.activities-group-heading h2 { margin: 0; font-size: clamp(1.65rem,2.4vw,2.25rem); }
.activities-group-heading p { margin: 0; color: #66675b; }
.experience-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1.25rem; }
.experience-card { min-width: 0; background: #eae7dd; }
.experience-photo { overflow: hidden; }
.activities-page main .experience-photo img[data-compact-image] {
  aspect-ratio: 2 / 1 !important; height: auto !important;
  object-fit: cover !important; transform: none;
}
.experience-copy { padding: 1rem 1.15rem 1.15rem; }
.experience-copy h3 { margin: 0 0 .55rem; font-size: 1.3rem; }
.experience-copy p { margin: 0; color: #565d51; font-size: .975rem; }
.activities-town {
  display: grid; grid-template-columns: minmax(0,.8fr) minmax(0,1.65fr);
  margin-top: clamp(1.5rem,2.7vw,2.5rem); background: #e5e9df;
}
.activities-town-photo { position: relative; min-width: 0; min-height: 15rem; }
.activities-page main .activities-town-photo img[data-compact-image] {
  position: absolute; inset: 0;
  height: 100% !important; aspect-ratio: auto !important;
  object-fit: cover !important; transform: none;
}
.activities-town-copy { padding: clamp(1.25rem,2.5vw,2rem); }
.activities-town-copy .page-kicker { margin: 0 0 .6rem; color: #5a654e; }
.activities-town-copy h2 { margin: 0 0 1rem; font-size: clamp(1.65rem,2.4vw,2.25rem); }
.activities-town-details { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.5rem; }
.activities-town-details h3 { margin: 0 0 .4rem; font-size: 1.1rem; }
.activities-town-details p { margin: 0; color: #535e4f; font-size: .975rem; }
.activities-town-copy > .text-link { display: inline-flex; align-items: center; gap: .6rem; min-height: 2.75rem; margin-top: .65rem; }
.activities-wayfinding {
  display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr);
  gap: 1.5rem; align-items: center; padding-top: 1.5rem;
}
.activities-wayfinding-copy .page-kicker { margin: 0 0 .65rem; color: #68705e; }
.activities-wayfinding-copy h2 { margin: 0 0 .8rem; font-size: clamp(1.6rem,2.4vw,2.1rem); }
.activities-wayfinding-copy address { font-style: normal; }
.activities-wayfinding-copy > p:not(.page-kicker) { margin: .3rem 0 0; color: #62685b; }
.activities-wayfinding-actions { display: flex; align-items: center; flex-wrap: wrap; gap: .75rem 1.25rem; margin-top: 1rem; }
.activities-wayfinding-actions .button { margin: 0; min-height: 2.75rem; padding: .65rem 1rem; }
.activities-wayfinding .local-map { height: 15rem; border: 0; border-radius: 0; }
@media (max-width: 1000px) {
  .activities-hero { grid-template-columns: minmax(0,1fr) minmax(0,1fr); }
  .activities-hero-copy { padding: 1.5rem; }
  .activities-hero-copy h1 { font-size: clamp(2rem,4.3vw,3rem); }
  .activities-group-heading { display: block; }
  .activities-group-heading p { margin-top: .4rem; }
  .experience-grid { gap: .85rem; }
  .experience-copy { padding: 1rem; }
  .activities-town-details { gap: 1rem; }
}
@media (max-width: 700px) {
  .activities-guide { padding-top: .75rem; }
  .activities-hero { display: flex; flex-direction: column-reverse; }
  .activities-hero-photo { min-height: 0; }
  .activities-page main .activities-hero-photo img[data-compact-image] {
    position: static; height: auto !important; aspect-ratio: 2 / 1 !important;
  }
  .activities-hero-copy { padding: 1.5rem; }
  .activities-hero-copy h1 { font-size: clamp(2.2rem,7.6vw,3rem); }
  .experience-grid { grid-template-columns: minmax(0,1fr); gap: 1rem; }
  .experience-card { display: grid; grid-template-columns: minmax(0,.85fr) minmax(0,1.15fr); }
  .activities-page main .experience-photo img[data-compact-image] { height: 100% !important; aspect-ratio: auto !important; }
  .experience-copy h3 { font-size: 1.2rem; }
  .activities-town { grid-template-columns: minmax(0,1fr); }
  .activities-town-photo { min-height: 0; }
  .activities-page main .activities-town-photo img[data-compact-image] { position: static; height: auto !important; aspect-ratio: 2.5 / 1 !important; }
  .activities-wayfinding { grid-template-columns: minmax(0,1fr); gap: 1rem; }
  .activities-wayfinding .local-map { height: 13rem; }
}
@media (max-width: 430px) {
  .experience-card { display: block; }
  .activities-page main .experience-photo img[data-compact-image] { height: auto !important; aspect-ratio: 2 / 1 !important; }
  .activities-town-details { grid-template-columns: minmax(0,1fr); }
}

/* OriginKit Live Chat styling, connected to actual Stay Assistant messages. */
.stay-assistant .assistant-panel {
  overflow: hidden; border: 1px solid #d5d9d0; border-radius: 1.25rem;
  background: #fff; color: #252d27; box-shadow: 0 14px 50px #18251c33;
}
.stay-assistant .assistant-panel > header { padding: .9rem 1rem; background: #fff; border-bottom: 1px solid #e2e5de; }
.stay-assistant .assistant-panel > header span { color: #68755f; font-size: .75rem; text-transform: none; letter-spacing: 0; }
.stay-assistant .assistant-panel > header strong { font: 500 1rem/1.4 var(--sans); letter-spacing: 0; }
.stay-assistant .assistant-panel > header button { background: #e8ece4; color: #34422e; border: 0; border-radius: 50%; }
.stay-assistant .assistant-messages { gap: .75rem; padding: 1rem; min-height: 7rem; scroll-behavior: auto; }
.assistant-message-row { display: flex; flex-direction: column; align-items: flex-start; width: 100%; transform-origin: bottom left; }
.assistant-message-row.is-user { align-items: flex-end; transform-origin: bottom right; }
.stay-assistant .assistant-message {
  max-width: 82%; margin: 0; padding: .625rem .875rem; border: 0;
  border-radius: 20px 20px 20px 4px; background: #e9e9eb; color: #232823;
  font: 400 1rem/1.4 var(--sans); box-shadow: 0 1px 2px #0000000d; animation: none;
}
.stay-assistant .assistant-message.is-user { border-radius: 20px 20px 4px 20px; background: #3c5b43; color: #fff; }
.assistant-timestamp { padding: 0 .75rem; margin-bottom: .25rem; color: #737970; font-size: .6875rem; line-height: 1.3; }
.stay-assistant .assistant-message.is-loading { display: inline-flex; align-items: center; gap: 4px; padding: .75rem 1rem; min-height: 2.4rem; }
.assistant-typing-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: #8e8e93; opacity: .5; }
.stay-assistant .assistant-prompts { padding: .65rem 1rem; border-top: 1px solid #e2e5de; gap: .45rem; }
.stay-assistant .assistant-prompts button,
.stay-assistant .assistant-message-actions :is(a,button) {
  min-height: 2.5rem; padding: .5rem .7rem; border: 1px solid #cbd6c5;
  border-radius: 1rem; background: #f2f5ef; color: #3c5535; font-size: .8125rem;
}
.stay-assistant :is(.assistant-prompts button,.assistant-message-actions a,.assistant-message-actions button):is(:hover,:focus-visible) {
  background: #e5eddf; color: #2b4328; border-color: #869e78;
}
.stay-assistant .assistant-form { padding: .7rem 1rem; border-top: 1px solid #e2e5de; }
.stay-assistant .assistant-form > label { color: #596451; font-size: .75rem; text-transform: none; letter-spacing: 0; }
.stay-assistant .assistant-form > div { gap: .5rem; }
.stay-assistant .assistant-form input { border: 1px solid #d5dcd0; border-radius: 1.5rem; background: #fff; color: #28342b; }
.stay-assistant .assistant-form input::placeholder { color: #7d8378; }
.stay-assistant .assistant-form button { border: 0; border-radius: 1.5rem; background: #3c5b43; color: #fff; }
.stay-assistant .assistant-disclaimer { padding: 0 1rem .85rem; color: #697263; font-size: .7rem; }
.stay-assistant .assistant-panel :focus-visible { outline: 2px solid #688756; outline-offset: 2px; }
@media (prefers-reduced-motion: no-preference) {
  .assistant-panel:not([hidden]) .assistant-typing-dot { animation: adm-typing .8s ease-in-out infinite; }
  .assistant-panel:not([hidden]) .assistant-typing-dot:nth-of-type(3) { animation-delay: .18s; }
  .assistant-panel:not([hidden]) .assistant-typing-dot:nth-of-type(4) { animation-delay: .36s; }
}
@keyframes adm-typing { 0%,100% { transform: translateY(0); opacity: .35; } 50% { transform: translateY(-5px); opacity: 1; } }
html[data-site-motion="paused"] .assistant-typing-dot,
html[data-site-motion="paused"] .assistant-panel { animation: none !important; }
@media (prefers-reduced-motion: reduce) { .stay-assistant .assistant-panel { animation: none; } }
@media (max-height: 650px) {
  .stay-assistant .assistant-panel { overflow-y: auto; }
  .stay-assistant .assistant-messages { flex-shrink: 0; max-height: 11rem; }
}

/* Click decoration occupies no layout space and never catches a guest's input. */
.origin-click-overlay { position: fixed; inset: 0; z-index: 1000; pointer-events: none; overflow: clip; }
.origin-click-burst { position: absolute; width: 0; height: 0; pointer-events: none; color: #fff; filter: drop-shadow(0 1px 1px rgb(101 113 122 / .65)); }
.origin-click-burst > i { position: absolute; left: -1px; top: -1px; display: block; margin: 0; background: currentColor; transform-origin: left center; pointer-events: none; }
.origin-click-ray { width: 18px; height: 2px; border-radius: 1px; }
.origin-click-spark { width: 2px; height: 2px; border-radius: 50%; }

/* Shorter Direct Booking surfaces: 75% of the previous vertical spacing. */
.site-footer > .booking { padding-block: clamp(1.5rem,3vw,2.625rem); gap: clamp(1.125rem,3vw,3rem); }
.site-footer .booking .booking-dates { padding-block: clamp(.75rem,1.875vw,1.5rem); }
.site-footer .booking .booking-dates > h3 { margin-bottom: .75rem; }
.site-footer .booking .booking-copy h2 { margin-block: .5rem .75rem; font-size: clamp(1.75rem,2.5vw,2.5rem); }
.site-footer .booking .booking-copy > p:last-child { margin-block: .5rem 0; }
.site-footer .booking .stay-date-fields { gap: .55rem; }
.site-footer .booking .stay-date-fields :is(input,.button),
.apartment-booking-content .stay-date-fields :is(input,.button) { min-height: 2.55rem; padding-block: .35rem; }
.site-footer .booking .stay-selection { margin-top: .6rem; }
.unit-page .stay-reserve { padding-block: calc(var(--adm-card-pad) * .75); }
.apartment-booking-content h2 { margin-block: .375rem .55rem; }
.apartment-booking-content .calendar-toolbar { margin-top: .75rem; padding-top: .75rem; }
.apartment-booking-content .calendar-month { padding-top: .9rem; }
.apartment-booking-content .calendar-month h3 { margin-bottom: .75rem; }
.apartment-booking-content .calendar-days button { min-height: 2.0625rem; padding-block: .2rem; }
.apartment-booking-content .calendar-caption { margin-top: .9rem; }
.stay-assistant .guest-book-now { min-height: 2.325rem; height: 2.325rem; padding-block: .35rem; }
@media (pointer: coarse) {
  .stay-assistant .guest-book-now { min-height: 2.75rem; height: auto; }
  .site-footer .booking .stay-date-fields :is(input,.button),
  .apartment-booking-content .stay-date-fields :is(input,.button),
  .apartment-booking-content .calendar-days button { min-height: 2.75rem; }
}

/* Reduce map embeds by 25%, independently of video and booking controls. */
body main iframe.local-map { width: 100%; height: 18rem; }
.unit-page main .stay-location iframe.local-map { height: 12rem; }
.location-page main .location-map iframe.local-map { height: 15rem; }
.activities-page main .activities-wayfinding iframe.local-map { height: 11.25rem; }
@media (max-width: 760px) {
  body main iframe.local-map { height: 15rem; }
  .location-page main .location-map iframe.local-map { height: 13.5rem; }
  .unit-page main .stay-location iframe.local-map { height: 12rem; }
}
@media (max-width: 700px) { .activities-page main .activities-wayfinding iframe.local-map { height: 10rem; } }

/* Contact: concise introduction, enquiry beside reservations, then an edge-to-edge map. */
.contact-refined .contact-intro { padding-block: clamp(1.5rem,3vw,2.5rem) 1.5rem; }
.contact-refined .contact-heading {
  display: grid; grid-template-columns: minmax(0,1fr) auto; gap: .65rem 2rem;
  align-items: center; margin: 0;
}
.contact-refined .contact-heading > :is(p,h1) { grid-column: 1; margin: 0; }
.contact-refined .contact-heading h1 { font-size: clamp(2.25rem,4.2vw,3.5rem); }
.contact-refined .contact-heading > p:last-of-type { max-width: 52ch; }
.contact-refined .contact-welcome-actions { grid-column: 2; grid-row: 1 / span 3; margin: 0; }
.contact-refined .contact-workspace {
  display: grid; grid-template-columns: minmax(0,1.4fr) minmax(17rem,.8fr);
  align-items: start; gap: clamp(1rem,2.5vw,2rem); padding-bottom: 1.5rem;
}
.contact-refined .enquiry-form, .contact-refined .contact-reservations {
  min-width: 0; margin: 0; padding: clamp(1.25rem,2.3vw,2rem);
  border: 1px solid #ddd7ca; border-radius: .4rem; box-shadow: none;
}
.contact-refined .enquiry-form { background: #fff; }
.contact-refined .enquiry-form h2, .contact-refined .contact-reservations h2 { margin: 0 0 .8rem; font-size: 1.6rem; }
.contact-refined .enquiry-form .field-grid { gap: 1rem; }
.contact-refined .enquiry-form textarea { min-height: 7rem; }
.contact-refined .enquiry-form > .button { margin-top: 1rem; }
.contact-refined .contact-reservations { background: #f4f3ef; }
.contact-refined .contact-reservations .page-kicker { margin: 0 0 .6rem; }
.contact-refined .contact-reservations address { display: grid; gap: .6rem; margin: 1rem 0; }
.contact-refined .contact-next-steps { margin: 1rem 0 0; gap: .8rem; }
.contact-refined .contact-next-steps > .text-link { min-height: 2rem; }
.contact-refined .contact-map-wide { width: 100%; max-width: none; margin: 0; padding: 0; }
.contact-refined .contact-map-wide > header {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding-block: 1.25rem; border-top: 1px solid #ddd7ca; background: #f4f3ef;
}
.contact-refined .contact-map-wide .page-kicker { margin: 0 0 .4rem; }
.contact-refined .contact-map-wide h2 { margin: 0; font-size: clamp(1.6rem,2.3vw,2rem); }
.contact-refined .contact-map-wide .button { margin: 0; flex-shrink: 0; }
.contact-refined main .contact-map-wide iframe.local-map {
  display: block; width: 100%; max-width: none; height: 18rem; margin: 0; border: 0; border-radius: 0;
}

/* Silver and white strokes on transparent backgrounds; icon geometry stays unchanged. */
:root {
  --adm-icon-silver: #65717a;
  --adm-icon-ink: var(--adm-icon-silver);
  --adm-icon-glass: rgb(255 255 255 / .55);
  --adm-icon-shade: rgb(171 183 193 / .15);
}
body :is(.adm-icon, .accordion summary > i, .details-list summary > i) {
  color: var(--adm-icon-ink) !important;
  background: transparent;
  border-radius: .22em;
  box-shadow: none;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
:is(.site-footer, .booking, .stay-reserve, .booking-calendar-card, .reservation-dialog,
  .editorial-cta, .offer-feature-copy, .activities-hero-copy) {
  --adm-icon-ink: rgb(249 252 255 / .94);
  --adm-icon-glass: rgb(255 255 255 / .18);
  --adm-icon-shade: rgb(185 198 211 / .08);
}
.button-solid, .button-gold, .button-outline:is(:hover,:focus-visible) {
  --adm-icon-ink: rgb(249 252 255 / .94);
  --adm-icon-glass: rgb(255 255 255 / .16);
  --adm-icon-shade: rgb(185 198 211 / .08);
}
.site-header .nav-book, .stay-assistant .guest-book-now, .stay-assistant .assistant-launcher,
:is(.booking, .stay-reserve, .booking-calendar-card, .reservation-dialog, .editorial-cta) .button.button-solid.direct-book-control {
  --adm-icon-ink: var(--adm-icon-silver);
  --adm-icon-glass: rgb(255 255 255 / .55);
}
.stay-assistant .assistant-panel [data-assistant-close] {
  color: var(--adm-icon-silver);
  background: transparent;
  box-shadow: none;
  -webkit-backdrop-filter: none; backdrop-filter: none;
}
input[type="date"]::-webkit-calendar-picker-indicator { filter: grayscale(1); opacity: .72; }

/* Direct handoff to the published reservations number; no automatic message send. */
.assistant-handoff { flex: 0 0 auto; padding: .15rem 1rem .8rem; }
.assistant-whatsapp {
  display: flex; justify-content: center; align-items: center; gap: .6rem;
  min-height: 2.75rem; padding: .65rem .85rem; border: 1px solid #a8b5ad;
  border-radius: 1.5rem; background: rgb(232 238 234 / .8); color: #232c27;
  font-size: .875rem; text-decoration: none;
}
.assistant-whatsapp:hover { background: #dce6df; }
.assistant-whatsapp:focus-visible { outline: 2px solid #657a6d; outline-offset: 2px; }

/* Shared palette: footer green, white, silver glass, gold, black and neutral gray. */
:root {
  --adm-green: #232c27;
  --adm-ink: #232c27;
  --adm-black: #202420;
  --adm-grey: #e9ece9;
  --adm-ivory: #fff;
  --adm-paper: #fff;
  --adm-line: rgb(115 131 120 / .28);
  --adm-outline-ink: #232c27;
  --reservation-bg: #232c27;
}
body { background-color: #fff; }
body .button.button-solid:not(.direct-book-control) { background: var(--adm-green); color: #fff; border-color: var(--adm-green); }
body .button.button-solid:not(.direct-book-control):is(:hover,:focus-visible) { background: #3b4c40; border-color: #3b4c40; }
body .button.button-outline { color: var(--adm-outline-ink); border-color: rgb(125 144 131 / .5); }
body .button.button-outline:is(:hover,:focus-visible) { color: #fff; background: var(--adm-green); border-color: var(--adm-green); }
:is(.site-footer, .booking, .stay-reserve, .booking-calendar-card, .reservation-dialog,
  .editorial-cta, .offer-feature-copy, .activities-hero-copy, .campaign-caption) { --adm-outline-ink: #f5f8f6; }
.site-header.glass-nav {
  background: linear-gradient(115deg, rgb(255 255 255 / .82), rgb(229 237 232 / .65), rgb(255 255 255 / .78));
  border-bottom-color: rgb(140 155 146 / .45);
}
.stay-assistant .assistant-launcher {
  background: linear-gradient(115deg, rgb(255 255 255 / .82), rgb(225 233 227 / .68));
  border-color: rgb(142 157 147 / .65); color: var(--adm-green);
}
.activities-guide { background: #f5f6f3; }
.activities-hero, .offer-feature { background: var(--adm-green); }
.activities-town { background: #e5ebe6; }
.experience-card, .offer-secondary, .contact-refined .contact-reservations,
.contact-refined .contact-map-wide > header { background: #f0f2ef; }
.contact-detail-link, .contact-refined .enquiry-form, .contact-refined .contact-reservations { border-color: #d2d9d3; }
@media (max-width: 760px) {
  .contact-refined .contact-heading { display: block; }
  .contact-refined .contact-heading h1 { margin-block: .7rem; }
  .contact-refined .contact-welcome-actions { margin-top: 1rem; }
  .contact-refined .contact-workspace { grid-template-columns: minmax(0,1fr); }
  .contact-refined .contact-map-wide > header { align-items: flex-start; flex-direction: column; }
  .contact-refined main .contact-map-wide iframe.local-map { height: 15rem; }
}
