/* Listing page (Signature spec 2026-10-12 §4.5). Listing view only, after components.css; every listing rule lives
   here (moved from public.css and marketplace.css). Logical properties only (French LTR, Arabic RTL). */

.listing-hero.listing-hero--empty { display: grid; place-items: center; block-size: clamp(12rem, 32vh, 20rem); max-inline-size: none; margin: .75rem var(--rym-gutter) 0; border-radius: 1.5rem; background-color: var(--rym-color-surface-strong); color: var(--rym-color-text-muted); }
.listing-hero--empty .icon { inline-size: 3rem; block-size: 3rem; }
.gallery { position: relative; }
.gallery__list { display: flex; margin: 0; padding: 0; list-style: none; aspect-ratio: 4 / 3; max-block-size: 68svh; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; scrollbar-width: none; background-color: var(--rym-color-surface-strong); }
.gallery__item { flex: 0 0 100%; overflow: hidden; scroll-snap-align: start; }
.gallery__link { position: relative; display: block; block-size: 100%; }
.gallery__link img { display: block; inline-size: 100%; block-size: 100%; object-fit: cover; }
.gallery__link:focus-visible { outline-offset: -4px; }
.circle-button { display: grid; place-items: center; inline-size: 44px; block-size: 44px; padding: 0; border: 0; border-radius: 50%; background-color: var(--rym-glass-solid); color: var(--rym-color-text); box-shadow: 0 1px 2px rgb(15 36 56 / 12%), 0 4px 12px rgb(15 36 56 / 10%); cursor: pointer; transition: transform var(--rym-duration-press) var(--rym-ease-out), opacity var(--rym-dur-1) var(--rym-ease-out); }
.circle-button:active { transform: scale(.94); }
:is(.gallery__controls, .lightbox) button:disabled { opacity: .4; cursor: default; }
/* W9a: a cream pill with the arrow and the word « Logements » (a bare arrow read as nothing on a busy photo). */
.gallery__back { position: absolute; z-index: 2; inset-block-start: .75rem; inset-inline-start: .75rem; display: inline-flex; align-items: center; gap: .375rem; inline-size: auto; padding-inline: .75rem 1rem; border-radius: 999px; font-size: .8125rem; font-weight: 600; text-decoration: none; }
.gallery__controls { position: absolute; z-index: 2; inset-block-end: .75rem; inset-inline-end: .75rem; display: flex; align-items: center; gap: .5rem; }
.gallery__controls[hidden], .gallery__controls button { display: none; }
.gallery__counter, .lightbox__counter { margin: 0; padding: .25rem .75rem; border-radius: 99rem; background-color: rgb(15 36 56 / 72%); color: #fff; font-size: .8125rem; font-weight: 700; font-variant-numeric: tabular-nums; }
.gallery__counter:empty { display: none; }
.gallery__all { display: none; position: absolute; z-index: 2; inset-block-end: 1rem; inset-inline-end: 1rem; padding-inline: 1rem; background-color: var(--rym-glass-solid); color: var(--rym-color-text); box-shadow: var(--rym-shadow-2); font-size: .875rem; }
@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
	:is(.gallery .circle-button, .gallery__all, .booking-bar) { background-color: var(--rym-glass); -webkit-backdrop-filter: var(--rym-glass-blur); backdrop-filter: var(--rym-glass-blur); }
}
@media (hover: hover) and (pointer: fine) {
	.gallery__controls button { display: grid; }
	/* Wow §2.4: each mosaic photo zooms inside its own frame under a faint ink veil. */
	.gallery__link img { transition: transform var(--rym-dur-zoom) var(--rym-ease-out); }
	.gallery__link::after { content: ""; position: absolute; inset: 0; background-color: rgb(15 36 56 / 10%); opacity: 0; transition: opacity var(--rym-dur-2) var(--rym-ease-out); pointer-events: none; }
	.gallery__link:hover img { transform: scale(1.04); }
	.gallery__link:hover::after { opacity: 1; }
}
@media (prefers-reduced-motion: reduce) { .gallery__link:hover img { transform: none; } }
@media (min-width: 48rem) {
	.listing-hero { max-inline-size: var(--rym-container-max); margin: 1rem auto 0; padding-inline: var(--rym-gutter); }
	.gallery__list { display: grid; background: none; grid-template: 1fr 1fr / 2fr 1fr 1fr; gap: .5rem; aspect-ratio: auto; max-block-size: none; block-size: clamp(18rem, min(54vh, 100svh - 37rem), 34rem); overflow: hidden; border-radius: 1.5rem; }
	.gallery__item:first-child { grid-row: 1 / -1; }
	.gallery__item:nth-child(n + 6), .gallery__back, .gallery__controls { display: none; }
	.gallery__all:not([hidden]) { display: inline-flex; }
	.gallery--m1 .gallery__list { grid-template-columns: 1fr; }
	:is(.gallery--m2, .gallery--m3) .gallery__list { grid-template-columns: 2fr 1fr; }
	.gallery--m2 .gallery__item:nth-child(2) { grid-row: 1 / -1; }
	.gallery--m4 .gallery__item:nth-child(4) { grid-column: span 2; }
}

html:has(dialog[open]:not(.picker)) { overflow: hidden; }
html:has(.amenities-dialog[open]) { scrollbar-gutter: stable; }
.lightbox { inline-size: 100%; max-inline-size: none; block-size: 100%; max-block-size: none; margin: 0; padding: 0; border: 0; background-color: var(--rym-color-ink); color: var(--rym-color-on-ink); }
.lightbox[open] { display: grid; grid-template-rows: auto minmax(0, 1fr); animation: rym-fade-in var(--rym-dur-2) var(--rym-ease-out); }
.lightbox::backdrop { background-color: var(--rym-color-ink); }
.lightbox__bar { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: .75rem var(--rym-gutter); }
.lightbox__bar form { margin: 0; }
.lightbox__list { display: flex; margin: 0; padding: 0; list-style: none; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior: contain; scrollbar-width: none; }
.lightbox__item { flex: 0 0 100%; display: grid; place-items: center; padding: 0 var(--rym-gutter) 1.5rem; scroll-snap-align: start; }
.lightbox__item img { inline-size: 100%; block-size: 100%; max-block-size: calc(100svh - 6rem); object-fit: contain; }
.lightbox :is(.lightbox__prev, .lightbox__next) { position: absolute; inset-block-start: 50%; translate: 0 -50%; }
.lightbox__prev { inset-inline-start: var(--rym-gutter); }
.lightbox__next { inset-inline-end: var(--rym-gutter); }
@media (hover: none) { .lightbox :is(.lightbox__prev, .lightbox__next) { display: none; } }

.listing__header { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .5rem 1rem; align-items: center; }
.listing__header > * { grid-column: 1; margin: 0; }
.listing__title { max-inline-size: 22ch; font-size: var(--rym-font-size-h1); overflow-wrap: anywhere; }
.listing__place { display: flex; align-items: center; gap: .5rem; color: var(--rym-color-text-muted); font-size: var(--rym-font-size-lead); }
/* Wow §0: one badge, then the facts as icon + word. */
.listing__status { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1.25rem; margin-block-start: .5rem; }
.listing__status .badge { padding: .3125rem .75rem; font-size: .875rem; }
.listing__traits { margin: 0; font-size: .9375rem; }
.favorite-toggle--page { grid-area: 1 / 2; }
.favorite-toggle--page .favorite-toggle__button { padding-inline: 1rem; box-shadow: var(--rym-shadow-1); font-weight: 600; }
.breadcrumb { font-size: .8125rem; letter-spacing: .01em; }
.breadcrumb__list { display: flex; flex-wrap: wrap; align-items: center; gap: 0 .5rem; margin: 0; padding: 0; list-style: none; color: var(--rym-color-text-muted); }
.breadcrumb__list li { display: inline-flex; align-items: center; gap: .5rem; }
.breadcrumb__list li:not(:last-child)::after { content: "/"; }
.breadcrumb__list a { display: inline-flex; align-items: center; justify-content: center; min-inline-size: 44px; min-block-size: 44px; color: inherit; text-decoration: none; }
.breadcrumb__list a:hover { color: var(--rym-color-text); text-decoration: underline; text-underline-offset: .25em; }
@media (max-width: 47.99rem) {
	.listing { position: relative; }
	.listing:has(.gallery) .favorite-toggle--page { position: absolute; z-index: 2; inset-block-start: .75rem; inset-inline-end: .75rem; }
	.listing:has(.gallery) .favorite-toggle--page .favorite-toggle__button { inline-size: 44px; padding: 0; border: 0; background-color: var(--rym-glass-solid); }
	.listing:has(.gallery) .favorite-toggle__text { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
}

.listing-nav { position: sticky; z-index: 3; inset-block-start: 4rem; border-block-end: 1px solid var(--rym-color-border); background-color: var(--rym-color-bg); }
.listing-nav__list { display: flex; gap: 1.5rem; margin: 0; padding: 0; list-style: none; overflow-x: auto; scrollbar-width: none; }
.listing-nav__link { position: relative; display: inline-flex; align-items: center; justify-content: center; min-inline-size: 44px; min-block-size: 3.25rem; color: var(--rym-color-text-muted); font-weight: 700; text-decoration: none; white-space: nowrap; }
.listing-nav__link::after { content: ""; position: absolute; inset: auto 0 0; block-size: 2px; background-color: var(--rym-color-text); transform: scaleX(0); transition: transform var(--rym-dur-2) var(--rym-ease-out); }
.listing-nav__link:hover, .listing-nav__link[aria-current] { color: var(--rym-color-text); }
.listing-nav__link[aria-current]::after { transform: scaleX(1); }
.listing-nav__link:focus-visible { outline-offset: -3px; }
.listing-nav:not(:has(li)) { display: none; }
.listing__main .listing-section__title[id], #listing-facts-title { scroll-margin-block-start: 3.75rem; }

.listing__layout { display: grid; grid-template-columns: minmax(0, 1fr); gap: 3rem; align-items: start; margin-block-start: 1.5rem; }
/* Wow §0 space: about 56 px of air on each side of the hairline between sections on desktop (36 px on phones). */
.listing__main { display: grid; grid-template-columns: minmax(0, 1fr); gap: 2rem; }
.listing-section { display: grid; gap: 1.25rem; margin-block-start: clamp(.25rem, -.5rem + 2.5vw, 1.5rem); padding-block-start: clamp(2.25rem, 1.5rem + 2.5vw, 3.5rem); border-block-start: 1px solid var(--rym-hairline); }
.listing-section > *, .listing-section__text > :last-child { margin: 0; }
.listing-section__title { font-size: var(--rym-font-size-h2-compact); }
.listing-section__subtitle, .service-group__title { margin: 0; font-size: var(--rym-font-size-h3); }
.listing-section__text > * { margin-block: 0 .75rem; }
.listing-section__note, .listing-services__status, .listing-services__formula, .listing-calendar__hint, .listing-calendar__status { color: var(--rym-color-text-muted); }
.listing-section__note { font-size: .875rem; }

.listing-facts { margin: 0; padding: 0; border: 0; }
/* Wow §0: the key facts as one calm row of icon + word (no tiles), two columns on phones. */
.key-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem 1.5rem; margin: 0; padding: 0; list-style: none; }
.key-facts__item { display: flex; align-items: center; gap: .625rem; font-size: .9375rem; }
.key-facts__item .icon { flex: none; inline-size: 1.25rem; block-size: 1.25rem; color: var(--rym-color-text-muted); }
@media (min-width: 48rem) { .key-facts { grid-template-columns: repeat(3, max-content); gap: 1.25rem 3rem; } }

.listing__main [data-role="host"] { gap: 1.5rem; padding: clamp(1.5rem, 1rem + 1.5vw, 2.5rem); border: 1px solid var(--rym-hairline); border-radius: 1.5rem; background-color: #fff; }
.host-facts, .rule-list { display: grid; gap: 1rem; }
.host-facts__item, .rule-list__item { display: grid; align-content: start; gap: .25rem; }
.host-facts__item[data-initials]:not([data-initials=""]) { grid-column: 1 / -1; grid-template-columns: 3.5rem minmax(0, 1fr); column-gap: 1rem; }
.host-facts__item[data-initials]:not([data-initials=""])::before { content: attr(data-initials) / ""; grid-row: span 2; display: grid; place-items: center; inline-size: 3.5rem; block-size: 3.5rem; border-radius: 50%; background-color: var(--rym-color-ink); color: var(--rym-color-on-ink); font-family: var(--rym-font-display); font-size: 1.375rem; }
:is(.host-facts, .rule-list) dt { display: flex; align-items: center; gap: .5rem; color: var(--rym-color-text-muted); font-size: .875rem; font-weight: 700; }
:is(.host-facts, .rule-list) dd { display: grid; gap: .25rem; margin: 0; }
.host-facts__name { font-size: var(--rym-font-size-lead); font-weight: 700; }
.host-facts__type, .host-facts__explain { color: var(--rym-color-text-muted); }
.label-note { display: flex; align-items: flex-start; gap: .75rem; max-inline-size: none; padding: 1rem 1.25rem; border-radius: 1rem; background-color: var(--rym-color-surface-warm); color: var(--rym-color-text); }
.label-note__icon { flex: none; inline-size: 1.5rem; block-size: 1.5rem; color: var(--rym-color-text); }
.label-note strong { display: block; }

.listing-services[aria-busy="true"] .listing-services__status::before { content: ""; display: inline-block; inline-size: .875em; block-size: .875em; margin-inline-end: .5rem; border: 2px solid currentColor; border-inline-end-color: transparent; border-radius: 50%; vertical-align: -.1em; animation: rym-spin .8s linear infinite; }
.service-group + .service-group { margin-block-start: 1rem; }
.service-group__title { margin-block-end: .5rem; }
:is(.service-list, .amenity-list, .check-list) { display: grid; gap: .5rem; margin: 0; padding: 0; list-style: none; }
:is(.service-list li, .amenity-list__item, .check-list li) { display: flex; align-items: flex-start; gap: .5rem; }
:is(.service-list, .check-list) .icon { margin-block-start: .2em; color: var(--rym-color-text); }
.service-list__meta { display: block; color: var(--rym-color-text-muted); font-size: .875rem; }
.amenity-list { grid-template-columns: repeat(auto-fill, minmax(13rem, 1fr)); gap: .75rem 1.5rem; }
.amenity-list .amenity-list__item { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 0 .75rem; }
.amenity-list .icon { box-sizing: content-box; inline-size: 1.125rem; block-size: 1.125rem; padding: .6875rem; border-radius: 50%; box-shadow: inset 0 0 0 1px var(--rym-hairline-strong); color: var(--rym-color-text); }
.amenity-list__outage { grid-column: 2; color: var(--rym-color-warning-text); font-size: .875rem; }
.listing-amenities.is-clamped > .is-more, .listing-amenities.is-clamped > ul > .is-more { display: none; }
.listing-amenities__all { justify-self: start; }
.amenities-dialog { inline-size: min(44rem, 100% - 2rem); max-block-size: min(46rem, 100% - 2rem); margin: auto; padding: 0; border: 0; border-radius: 1.5rem; background-color: var(--rym-color-bg); color: var(--rym-color-text); box-shadow: var(--rym-shadow-4); }
.amenities-dialog[open] { display: flex; flex-direction: column; animation: rym-dialog-in var(--rym-dur-2) var(--rym-ease-out); }
.amenities-dialog::backdrop { background-color: rgb(15 36 56 / 55%); }
.amenities-dialog__head { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: .75rem 1.5rem; border-block-end: 1px solid var(--rym-color-border); }
.amenities-dialog__head form, .amenities-dialog__title { margin: 0; }
.amenities-dialog__title { font-size: var(--rym-font-size-h2-compact); }
.amenities-dialog__body { display: grid; gap: 1rem; padding: 1.5rem; overflow-y: auto; }
@keyframes rym-dialog-in { from { opacity: 0; transform: translateY(16px) scale(.98); } }

.listing-location__map { block-size: 16rem; border-radius: 1.5rem; box-shadow: 0 0 0 1px var(--rym-hairline); overflow: hidden; isolation: isolate; }
.poi-list { display: grid; margin: 0; padding: 0; list-style: none; }
.poi-list__item { display: grid; grid-template-columns: 1fr auto; gap: 0 .75rem; padding-block: .875rem; border-block-end: 1px solid var(--rym-hairline); }
.poi-list__name { font-weight: 600; }
.poi-list__category { grid-row: 2; color: var(--rym-color-text-muted); font-size: .875rem; }
.poi-list__distance { grid-row: 1 / span 2; align-self: center; color: var(--rym-color-text-muted); font-variant-numeric: tabular-nums; white-space: nowrap; }

.listing-calendar__status:empty { display: none; }
.calendar__nav { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin-block-end: .75rem; }
.calendar__month { margin: 0; font: var(--rym-font-weight-serif) 1.5rem/1.1 var(--rym-font-display); text-transform: capitalize; }
.calendar__step { display: inline-grid; place-items: center; inline-size: 44px; block-size: 44px; border: 1px solid var(--rym-hairline-strong); border-radius: 50%; background-color: var(--rym-color-bg); color: var(--rym-color-text); cursor: pointer; }
.calendar__step:disabled { color: var(--rym-color-border); cursor: not-allowed; }
.calendar__grid { inline-size: 100%; border-collapse: separate; border-spacing: 3px; table-layout: fixed; }
.calendar__grid th { padding-block: .25rem; color: var(--rym-color-text-muted); font-size: .75rem; font-weight: 700; text-align: center; }
.calendar__grid td { padding: 0; }
.calendar__day { display: grid; place-items: center; align-content: center; inline-size: 100%; min-block-size: 44px; padding: .25rem 0; border: 1px solid transparent; border-radius: .625rem; background-color: var(--rym-color-bg); color: var(--rym-color-text); font: inherit; font-weight: 700; line-height: 1.2; cursor: pointer; }
.calendar__day:hover { border-color: var(--rym-color-text); }
.calendar__day[aria-disabled="true"] { background-color: var(--rym-color-calendar-unavailable); color: var(--rym-color-text-muted); text-decoration: line-through; cursor: not-allowed; }
.calendar__day.is-in-range { background-color: var(--rym-color-calendar-range); text-decoration: none; }
.calendar__day[aria-pressed="true"], .calendar__day.is-edge { border-color: var(--rym-color-ink); background-color: var(--rym-color-ink); color: var(--rym-color-on-ink); text-decoration: none; }
.calendar__day.is-today { box-shadow: inset 0 -3px 0 var(--rym-color-focus); }
.calendar__price { display: none; font-size: .6875rem; font-weight: normal; }
.calendar__legend { display: flex; flex-wrap: wrap; gap: .5rem 1rem; margin: .75rem 0 0; padding: 0; list-style: none; font-size: .875rem; }
.calendar__legend li { display: inline-flex; align-items: center; gap: .5rem; }
.calendar__swatch { inline-size: 1rem; block-size: 1rem; border: 1px solid var(--rym-color-border); border-radius: var(--rym-radius-small); }
.calendar__swatch--unavailable { background-color: var(--rym-color-calendar-unavailable); }
.calendar__swatch--selected { border-color: var(--rym-color-ink); background-color: var(--rym-color-ink); }
@media (min-width: 40rem) { .calendar__price { display: block; } }

.quote-box { display: grid; gap: .75rem; padding: 1.75rem; border: 1px solid var(--rym-hairline); border-radius: 1.5rem; background-color: #fff; box-shadow: var(--rym-shadow-4); scroll-margin-block-start: 1rem; }
.quote-box > *, .quote-box__body > * { margin: 0; }
.quote-box__title { color: var(--rym-color-text-muted); font-family: var(--rym-font-body); font-size: var(--rym-font-size-eyebrow); font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
:lang(ar) .quote-box__title { letter-spacing: 0; }
.quote-box__from, .quote-box__min { color: var(--rym-color-text-muted); }
:is(.quote-box__from, .booking-bar__price) :is(strong, bdi) { color: var(--rym-color-text); font-family: var(--rym-font-display); font-size: 2.25rem; font-weight: var(--rym-font-weight-serif); line-height: 1.1; }
.booking-bar__price :is(strong, bdi) { font-size: 1.375rem; }
.quote-box__form, .quote-box__body { display: grid; gap: .75rem; }
/* Wow final fixes: the dates and travelers as one hairline group of pill fields (components.css .search-pill__field). */
.quote-box__fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border: 1px solid var(--rym-hairline-strong); border-radius: 1rem; }
.quote-box__fields .field-row { display: contents; }
.quote-box__fields .field { display: grid; gap: .125rem; min-inline-size: 0; margin: 0; padding: .5rem .875rem; }
.quote-box__fields .field-row .field + .field { border-inline-start: 1px solid var(--rym-hairline-strong); }
.quote-box__fields > .field { grid-column: 1 / -1; border-block-start: 1px solid var(--rym-hairline-strong); }
/* Below 22.5 rem (320 px, 400 % zoom) one field per row. */
@media (max-width: 22.4375rem) {
	.quote-box__fields { grid-template-columns: minmax(0, 1fr); }
	.quote-box__fields .field-row .field + .field { border-inline-start: 0; border-block-start: 1px solid var(--rym-hairline-strong); }
}
.quote-box__cta { inline-size: 100%; min-block-size: 3.5rem; background-color: var(--rym-color-action); color: var(--rym-color-on-action); font-size: 1.0625rem; font-weight: var(--rym-font-weight-display); }
.quote-box__cta:hover, .quote-box__cta:focus-visible { background-color: var(--rym-color-action-hover); color: var(--rym-color-on-action); }
/* Wow §2.4 micro-interaction: each new total rises into place (the nodes are rewritten by listing.js). */
@media (prefers-reduced-motion: no-preference) {
	:is(.quote-box__footer-total, .quote__total) bdi { display: inline-block; animation: rym-total-in var(--rym-dur-2) var(--rym-ease-out) both; }
	.quote__stay, .quote__caption { animation: rym-fade-in var(--rym-dur-2) var(--rym-ease-out) both; }
}
@keyframes rym-total-in { from { opacity: 0; transform: translateY(.375rem); } }
.quote-box__footer { display: grid; }
.quote-box__footer-total { display: none; }
.quote-box__note { color: var(--rym-color-text-muted); font-size: .875rem; text-align: center; }
/* One grey note at a time (Wow §0): the price check note waits until the dates hint has made way for the quote. */
.quote-box__body:has(.quote__hint) .quote-box__note { display: none; }
.quote-box__request { display: flex; align-items: flex-start; gap: .5rem; padding: .75rem; border-radius: 1rem; background-color: var(--rym-color-info-bg); color: var(--rym-color-info-text); font-size: .875rem; }
.quote-box__request .icon { inline-size: 1.25em; block-size: 1.25em; margin-block-start: .125em; }
.quote { display: grid; gap: .75rem; }
.quote[aria-busy="true"] { opacity: .6; }
.quote > * { margin: 0; max-inline-size: none; }
.quote__hint, .quote__line dt { color: var(--rym-color-text-muted); }
.quote__stay { font-weight: 600; }
.quote__lines { display: grid; gap: .25rem; margin: 0; }
.quote__line, .quote__total { display: flex; justify-content: space-between; gap: .75rem; }
.quote__line dd { margin: 0; white-space: nowrap; }
.quote__caption { font-weight: 700; }
.quote__nights--scroll { max-block-size: 12rem; padding-inline-end: .5rem; overflow-y: auto; scrollbar-gutter: stable; }
.quote__total { align-items: baseline; padding-block-start: .75rem; border-block-start: 1px solid var(--rym-color-text); font-size: var(--rym-font-size-lead); font-weight: 700; }
/* Serif numerals for the total (Wow §0), as for the « from » price. */
:is(.quote__total, .quote-box__footer-total) bdi { font-family: var(--rym-font-display); font-size: 1.75rem; font-weight: var(--rym-font-weight-serif); letter-spacing: var(--rym-letter-spacing-serif); line-height: 1.1; }
.quote__deadlines { display: grid; gap: .25rem; margin: 0; padding: 0; list-style: none; color: var(--rym-color-text-muted); font-size: .875rem; }
.quote__error { padding: .75rem; border-inline-start: 4px solid currentColor; border-radius: var(--rym-radius); background-color: var(--rym-color-danger-bg); color: var(--rym-color-danger-text); }
.quote__error ul { margin: .25rem 0 0; padding-inline-start: 1.5rem; }

.booking-bar { display: none; background-color: var(--rym-glass-solid); color: var(--rym-color-text); font-weight: 500; }
.booking-bar.is-hidden { visibility: hidden; }
.booking-bar__details { display: flex; flex: 1; align-items: center; gap: .5rem; min-inline-size: 0; min-block-size: 44px; color: inherit; text-decoration: none; }
/* W8: calm text weight beside the serif price, lines balanced (never « par / nuit »). */
.booking-bar__price { min-inline-size: 0; font-size: .875rem; line-height: 1.25; overflow-wrap: anywhere; text-wrap: balance; }
.booking-bar__book { flex: none; }

@media (min-width: 64rem) {
	.listing__layout { grid-template-columns: minmax(0, 1fr) 25rem; column-gap: 4.5rem; }
	.listing__aside { position: sticky; z-index: 2; inset-block-start: var(--rym-sticky-offset); }
	.host-facts { grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); }
	.listing-location__map { block-size: 22rem; }
	.quote-box { display: flex; flex-direction: column; max-block-size: max(9rem, calc(100vh - var(--rym-quote-top, var(--rym-sticky-offset)) - 1rem)); }
	.quote-box__form { display: flex; flex: 1 1 auto; flex-direction: column; min-block-size: 0; }
	/* No scrollbar; a fade at the lower edge says there is more. */
	.quote-box__body { position: relative; flex: 1 1 auto; min-block-size: 0; gap: .625rem; margin: -1.5rem -1.5rem 0; padding: 1.5rem 1.5rem 1.25rem; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: none; mask-image: linear-gradient(to bottom, #000 calc(100% - 1.25rem), transparent); }
	.quote-box__body::-webkit-scrollbar { display: none; }
	.quote-box__footer { gap: .75rem; padding-block-start: .75rem; border-block-start: 1px solid var(--rym-color-text); }
	.quote-box__footer:not(:has(.quote-box__footer-total:not([hidden]))) { padding-block-start: 0; border-block-start: 0; }
	.quote-box__footer-total { display: flex; align-items: baseline; justify-content: space-between; gap: .5rem; margin: 0; font-size: var(--rym-font-size-lead); font-weight: 700; }
	.quote-box__footer-total[hidden] { display: none; }
	/* The foot is the total row; the breakdown's total stays for screen readers (the foot is aria-hidden). */
	.quote-box:has(.quote-box__footer-total:not([hidden])) .quote__total { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip-path: inset(50%); }
	.booking-bar.is-past-card { position: fixed; z-index: var(--rym-z-booking-bar); inset-inline-end: var(--rym-gutter); inset-block-end: 1rem; display: flex; align-items: center; gap: .75rem; max-inline-size: 26rem; padding-block: .5rem; padding-inline: 1.5rem .5rem; border-radius: 99rem; box-shadow: var(--rym-shadow-4); }
}

@media (max-width: 63.99rem) {
	.booking-bar { position: fixed; z-index: var(--rym-z-booking-bar); inset-inline: 0; inset-block-end: 0; display: flex; align-items: center; gap: .75rem; min-block-size: 4.5rem; padding: .75rem var(--rym-gutter) calc(.75rem + env(safe-area-inset-bottom)); border-block-start: 1px solid rgb(15 36 56 / 8%); box-shadow: 0 -8px 24px rgb(15 36 56 / 10%); }
	.site-main--listing { padding-block-end: 5rem; }
	/* A field the browser scrolls to (a missing date when « Réserver » is pressed) stops above the bar's place, not at
	   the screen's very edge (W8). */
	html:has(.booking-bar) { scroll-padding-block-end: calc(5.5rem + env(safe-area-inset-bottom, 0px)); }
}
/* The fixed bar never covers the footer's last line (fix round: the copyright sat under it on phones; W8: and under
   the compact pill on large screens). */
body:has(.booking-bar) .site-footer { padding-block-end: calc(5rem + env(safe-area-inset-bottom, 0px)); }
.badge--verified { justify-self: start; background-color: var(--rym-color-success-bg); color: var(--rym-color-success-text); }
.listing-similar { display: grid; gap: 1rem; margin-block: 3rem 1.5rem; padding-block-start: 2rem; border-block-start: 1px solid var(--rym-color-border); }
.listing-similar :is(.listing-section__title, .section-note) { margin: 0; }

/* Report (Wow final fixes): a quiet disclosure at the end of the sections; the form opens under it. */
.listing-report { display: grid; gap: 1rem; margin-block-start: clamp(2rem, 1.5rem + 2vw, 3rem); padding-block-start: 1.5rem; border-block-start: 1px solid var(--rym-hairline); }
.listing-report__summary { display: inline-flex; align-items: center; gap: .5rem; min-block-size: 44px; color: var(--rym-color-text-muted); font-size: .875rem; text-decoration: underline 1px; text-underline-offset: .3em; cursor: pointer; list-style: none; }
.listing-report__summary::-webkit-details-marker { display: none; }
.listing-report__summary .icon { inline-size: 1rem; block-size: 1rem; }
.listing-report__disclosure[open] .listing-report__summary { color: var(--rym-color-text); }
.listing-report__body { display: grid; gap: 1rem; margin-block-start: .75rem; }
.listing-report__body > * { margin: 0; }
@media (hover: hover) and (pointer: fine) { .listing-report__summary:hover { color: var(--rym-color-text); } }
