/* Hallmark · pre-emit critique: P4 H4 E4 S5 R4 V5 · slop: 58/58 · contrast: pass (40–41) · mobile: pass (34, 49, 50–57)
 * Hallmark · genre: editorial · macrostructure: Map / Diagram · theme: custom (vedi tokens.css) · enrichment: none (fotografia reale delle case)
 * nav: N6 masthead · footer: Ft1 mast-headed · motion: hero choreography · photo unveil · map ink-on (+ marquee partner richiesto dal brief)
 */

/* ------------------------------------------------------------ base */
*, *::before, *::after { box-sizing: border-box; }
html { overflow-x: clip; -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 6rem; }
body {
  overflow-x: clip;
  margin: 0;
  background: var(--color-paper);
  color: var(--color-ink);
  font-family: var(--font-body);
  font-size: var(--text-base);
  line-height: 1.6;
  font-feature-settings: "kern" 1;
  text-rendering: optimizeLegibility;
}
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
button, input, select, textarea { font: inherit; color: inherit; }
h1, h2, h3, p, ul, ol, dl, dd, figure, blockquote { margin: 0; }
ul, ol { padding: 0; list-style: none; }
:focus-visible { outline: 2px solid var(--color-focus); outline-offset: 3px; border-radius: var(--radius-sm); }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip {
  position: absolute; left: var(--space-md); top: -4rem; z-index: var(--z-toast);
  background: var(--color-ink); color: var(--color-paper); padding: var(--space-xs) var(--space-md); border-radius: var(--radius-sm);
}
.skip:focus { top: var(--space-md); }
[hidden] { display: none !important; }

.icon { flex: none; width: 1.25rem; height: 1.25rem; }
.icon--sm { width: 1rem; height: 1rem; }

/* ------------------------------------------------------------ type */
.section-title {
  font-family: var(--font-display);
  font-variation-settings: "SOFT" 100;
  font-weight: 400;
  font-size: var(--text-xl);
  line-height: 1.08;
  letter-spacing: -0.02em;
  overflow-wrap: anywhere;
  min-width: 0;
  text-wrap: balance;
}
.section-title--sm { font-size: var(--text-lg); }
.lede { font-size: var(--text-md); line-height: 1.5; color: var(--color-ink); }
.text-link {
  display: inline-flex; align-items: center; gap: var(--space-2xs);
  color: var(--color-accent); font-weight: 500; text-decoration: none; white-space: nowrap;
  background: none; border: 0; padding: 0; cursor: pointer;
  text-decoration-line: underline; text-decoration-thickness: 1px; text-underline-offset: 0.16em;
  text-decoration-color: var(--color-accent-tint);
  transition: text-decoration-color var(--dur-short) var(--ease-out);
}
.text-link:hover { text-decoration-color: currentColor; }
.link-btn { background: none; border: 0; padding: 0; color: var(--color-accent); font-weight: 500; text-decoration: underline; text-underline-offset: 0.16em; cursor: pointer; white-space: nowrap; }

/* ------------------------------------------------------------ buttons */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-xs);
  min-height: 2.9rem; padding: 0 var(--space-lg);
  border-radius: var(--radius-pill); border: 1px solid transparent;
  font-weight: 500; font-size: var(--text-sm); text-decoration: none; white-space: nowrap; cursor: pointer;
  transition: background-color var(--dur-short) var(--ease-out), color var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out), border-color var(--dur-short) var(--ease-out);
}
.btn:active { transform: translateY(1px); }
.btn--primary { background: var(--color-accent); color: var(--color-accent-ink); }
.btn--primary:hover { background: var(--color-accent-deep); }
.btn--ghost { background: var(--color-paper); border-color: var(--color-rule); color: var(--color-ink); }
.btn--ghost:hover { border-color: var(--color-ink-2); }
.btn[disabled], .btn[aria-disabled="true"] { opacity: 0.55; cursor: not-allowed; transform: none; }

/* ------------------------------------------------------------ masthead (N6) */
.mast { position: sticky; top: 0; z-index: var(--z-sticky); background: var(--color-paper); border-bottom: var(--rule); }
.mast__issue {
  border-bottom: var(--rule-2);
  text-align: center; font-size: var(--text-xs); color: var(--color-muted); letter-spacing: 0.04em;
  padding: var(--space-2xs) var(--gutter);
  transition: opacity var(--dur-short) var(--ease-out);
}
.mast__bar {
  max-width: var(--page-max); margin: 0 auto;
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: var(--space-lg);
  padding: var(--space-sm) var(--gutter);
}
.mast__brand { grid-column: 2; justify-self: center; display: block; }
.mast__brand img { height: clamp(2.6rem, 2rem + 1.6vw, 3.6rem); width: auto; transition: transform var(--dur-long) var(--ease-out); transform-origin: center; }
.mast__nav { grid-column: 1; grid-row: 1; justify-self: start; }
.mast__nav ul { display: flex; gap: var(--space-lg); }
.mast__nav a, .mast__sheet a:not(.btn) {
  text-decoration: none; font-size: var(--text-sm); font-weight: 500; color: var(--color-ink-2); white-space: nowrap;
  padding-block: var(--space-2xs); border-bottom: 1px solid transparent;
  transition: color var(--dur-short) var(--ease-out), border-color var(--dur-short) var(--ease-out);
}
.mast__nav a:hover { color: var(--color-ink); border-bottom-color: var(--color-rule); }
.mast__nav a[aria-current="page"] { color: var(--color-accent); border-bottom-color: currentColor; }
.mast__cta { grid-column: 3; justify-self: end; }
.mast__menu { display: none; }
.mast.is-compact .mast__issue { opacity: 0; height: 0; padding-block: 0; border: 0; overflow: hidden; }
.mast.is-compact .mast__brand img { transform: scale(0.82); }

@media (max-width: 60rem) {
  .mast__bar { grid-template-columns: 1fr auto; }
  .mast__brand { grid-column: 1; justify-self: start; }
  .mast__nav, .mast__cta { display: none; }
  .mast__menu {
    display: inline-flex; align-items: center; gap: var(--space-xs); grid-column: 2;
    min-height: 2.75rem; padding: 0 var(--space-md); border-radius: var(--radius-pill);
    border: 1px solid var(--color-rule); background: var(--color-paper); cursor: pointer; font-weight: 500; font-size: var(--text-sm);
  }
  .mast__sheet { border-top: var(--rule-2); padding: var(--space-md) var(--gutter) var(--space-lg); }
  .mast__sheet ul { display: grid; gap: var(--space-sm); }
  .mast__sheet a:not(.btn) { font-size: var(--text-md); display: inline-block; }
  .mast__sheet .btn { width: 100%; margin-top: var(--space-xs); }
  .mast__issue p { font-size: 0.75rem; }
}

/* ------------------------------------------------------------ hero (H2 split + slider) */
.hero {
  max-width: var(--page-max); margin: 0 auto;
  padding: var(--space-xl) var(--gutter) var(--space-2xl);
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  grid-template-rows: auto auto;
  column-gap: var(--space-lg);
}
.hero__text { grid-column: 1 / span 5; grid-row: 1; align-self: center; padding-block: var(--space-xl) var(--space-3xl); padding-right: var(--space-lg); }
.hero__title {
  font-family: var(--font-display); font-variation-settings: "SOFT" 100;
  font-weight: 350; font-size: var(--text-display); line-height: 1.02; letter-spacing: -0.03em;
  text-wrap: balance; overflow-wrap: anywhere; min-width: 0;
}
.hero__lede { margin-top: var(--space-lg); font-size: var(--text-md); line-height: 1.5; color: var(--color-ink-2); max-width: 46ch; }

.hero__slider {
  grid-column: 6 / -1; grid-row: 1 / span 2;
  position: relative; border-radius: var(--radius-lg); overflow: hidden;
  min-height: clamp(34rem, 72vh, 46rem);
  background: var(--color-night);
  isolation: isolate;
}
.slider__track { position: absolute; inset: 0; }
.slide { position: absolute; inset: 0; opacity: 0; visibility: hidden; }
.slide.is-active { opacity: 1; visibility: visible; }
.slide__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.slide::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(to top, var(--color-scrim-strong) 0%, var(--color-scrim) 38%, var(--color-scrim-0) 78%);
}
.slide__cap {
  position: absolute; z-index: var(--z-raised); left: var(--space-xl); right: var(--space-xl); bottom: 6.5rem;
  display: grid; gap: var(--space-xs); color: var(--color-on-night);
}
.slide__where { display: inline-flex; align-items: center; gap: var(--space-2xs); font-size: var(--text-sm); color: var(--color-on-night-2); }
.slide__title { overflow-wrap: anywhere; min-width: 0;
  font-family: var(--font-display); font-variation-settings: "SOFT" 100;
  font-size: var(--text-xl); font-weight: 400; line-height: 1.05; letter-spacing: -0.02em; max-width: 18ch; text-wrap: balance;
}
.slide__sub { font-size: var(--text-sm); color: var(--color-on-night-2); }
.slide__link {
  justify-self: start; margin-top: var(--space-xs);
  display: inline-flex; align-items: center; gap: var(--space-xs);
  padding: var(--space-xs) var(--space-md); min-height: 2.75rem; border-radius: var(--radius-pill);
  background: var(--color-paper); color: var(--color-ink); font-size: var(--text-sm); font-weight: 500; text-decoration: none; white-space: nowrap;
  transition: background-color var(--dur-short) var(--ease-out);
}
.slide__link:hover { background: var(--color-accent-tint); }
.slider__controls {
  position: absolute; z-index: var(--z-raised); right: var(--space-lg); bottom: var(--space-lg);
  display: flex; align-items: center; gap: var(--space-xs); color: var(--color-on-night);
}
.slider__btn {
  display: grid; place-items: center; width: 2.75rem; height: 2.75rem; border-radius: 50%;
  border: 1px solid var(--color-on-night-2); background: var(--color-scrim-0); color: inherit; cursor: pointer;
  transition: background-color var(--dur-short) var(--ease-out), color var(--dur-short) var(--ease-out);
}
.slider__btn:hover { background: var(--color-on-night); color: var(--color-ink); }
.slider__btn .icon-play { display: none; }
.slider__btn[aria-pressed="true"] .icon-play { display: block; }
.slider__btn[aria-pressed="true"] .icon-pause { display: none; }
.slider__count { font-variant-numeric: tabular-nums; font-size: var(--text-sm); min-width: 4.5ch; text-align: center; }
.slider__progress { position: absolute; left: 0; right: 0; top: calc(100% + var(--space-xs)); height: 2px; background: var(--color-scrim); border-radius: 2px; overflow: hidden; }
.slider__progress span { display: block; height: 100%; width: 100%; background: var(--color-on-night); transform-origin: left; transform: scaleX(0); }

/* modulo di ricerca: sconfina sullo slider */
.search {
  grid-column: 1 / span 9; grid-row: 2; align-self: end;
  position: relative; z-index: var(--z-raised);
  margin-bottom: calc(-1 * var(--space-lg));
  display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 0.9fr) auto; align-items: end;
  gap: var(--space-sm);
  background: var(--color-paper); border: var(--rule); border-radius: var(--radius-lg);
  padding: var(--space-md) var(--space-md) var(--space-md) var(--space-lg);
  box-shadow: var(--shadow-whisper);
}
.search__go { min-height: 3.1rem; padding-inline: var(--space-xl); }
.search__error { grid-column: 1 / -1; color: var(--color-error); font-size: var(--text-sm); }

/* ------------------------------------------------------------ fields */
.field { display: grid; gap: var(--space-2xs); min-width: 0; }
.field label, fieldset legend { font-size: var(--text-xs); font-weight: 500; color: var(--color-ink-2); letter-spacing: 0.02em; }
.opt { font-weight: 400; color: var(--color-muted); }
.field input, .field select, .field textarea {
  width: 100%; min-height: 3.1rem; padding: 0 var(--space-sm);
  background: var(--color-paper-2); border: 1px solid transparent; border-radius: var(--radius-md);
  font-size: var(--text-sm);
  transition: border-color var(--dur-short) var(--ease-out), background-color var(--dur-short) var(--ease-out);
}
.field textarea { padding: var(--space-sm); min-height: 6rem; resize: vertical; line-height: 1.5; }
.field input:hover, .field select:hover, .field textarea:hover { border-color: var(--color-rule); }
.field input:focus-visible, .field select:focus-visible, .field textarea:focus-visible { outline: 2px solid var(--color-focus); outline-offset: 0; background: var(--color-paper); }
.field [aria-invalid="true"] { border-color: var(--color-error); background: var(--color-error-tint); }
.field__err { font-size: var(--text-xs); color: var(--color-error); min-height: 1.1rem; line-height: 1.1rem; margin: 0; }
.field input::placeholder, .field textarea::placeholder { color: var(--color-muted); }
.field select { appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--color-ink-2) 50%), linear-gradient(135deg, var(--color-ink-2) 50%, transparent 50%); background-position: calc(100% - 18px) 55%, calc(100% - 13px) 55%; background-size: 5px 5px; background-repeat: no-repeat; padding-right: 2rem; }
.stepper { display: grid; grid-template-columns: 2.75rem minmax(0, 1fr) 2.75rem; align-items: center; background: var(--color-paper-2); border-radius: var(--radius-md); min-height: 3.1rem; }
.stepper input { background: transparent; text-align: center; padding: 0; min-height: 3.1rem; font-variant-numeric: tabular-nums; -moz-appearance: textfield; }
.stepper input::-webkit-inner-spin-button, .stepper input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.stepper button { display: grid; place-items: center; width: 2.75rem; height: 2.75rem; border: 0; background: none; border-radius: var(--radius-md); cursor: pointer; color: var(--color-ink-2); }
.stepper button:hover { color: var(--color-accent); }
.stepper button:disabled { opacity: 0.35; cursor: not-allowed; }
fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }

/* ------------------------------------------------------------ partner marquee */
.partners { padding: var(--space-2xl) 0 var(--space-xl); border-top: var(--rule-2); }
.partners__title { text-align: center; font-size: var(--text-sm); font-weight: 500; color: var(--color-muted); letter-spacing: 0.04em; margin-bottom: var(--space-lg); }
.marquee {
  display: flex; overflow: hidden; gap: 0;
  mask-image: linear-gradient(90deg, transparent, var(--color-ink) 12%, var(--color-ink) 88%, transparent);
}
.marquee__track { display: flex; flex: none; align-items: center; gap: clamp(3rem, 6vw, 6rem); padding-right: clamp(3rem, 6vw, 6rem); }
.marquee__track li > a, .marquee__track li > span { display: grid; place-items: center; height: 5.5rem; }
.partner__logo { max-height: 4.25rem; width: auto; max-width: 11rem; object-fit: contain; filter: grayscale(1); opacity: 0.72; transition: filter var(--dur-short) var(--ease-out), opacity var(--dur-short) var(--ease-out); }
.marquee__track a:hover .partner__logo, .marquee__track a:focus-visible .partner__logo { filter: none; opacity: 1; }
.motion .marquee__track { animation: marquee 38s linear infinite; }
.marquee:hover .marquee__track, .marquee:focus-within .marquee__track { animation-play-state: paused; }
@keyframes marquee { to { transform: translateX(-100%); } }

/* ------------------------------------------------------------ chi siamo */
.about {
  max-width: var(--page-max); margin: 0 auto;
  padding: var(--space-3xl) var(--gutter) var(--space-4xl);
  display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--space-lg); align-items: start;
}
.about__photo { grid-column: 1 / span 5; position: sticky; top: 7rem; }
.about__photo img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: var(--radius-lg); }
.about__photo figcaption { margin-top: var(--space-xs); font-size: var(--text-xs); color: var(--color-muted); }
.about__text { grid-column: 7 / span 6; display: grid; gap: var(--space-lg); padding-top: var(--space-xl); }
.about__text > p:not(.lede) { color: var(--color-ink-2); max-width: var(--measure); }
.about__quote {
  margin-block: var(--space-lg); padding: var(--space-xl) var(--space-xl) var(--space-lg);
  background: var(--color-night); color: var(--color-on-night); border-radius: var(--radius-lg);
  margin-left: calc(-1 * var(--space-2xl));
}
.about__quote p { font-family: var(--font-display); font-variation-settings: "SOFT" 100; font-weight: 300; font-size: var(--text-lg); line-height: 1.3; letter-spacing: -0.01em; text-wrap: pretty; }
.about__quote footer { margin-top: var(--space-md); font-size: var(--text-sm); color: var(--color-on-night-2); }
.stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-lg); border-top: var(--rule); padding-top: var(--space-lg); }
.stats div { display: flex; flex-direction: column-reverse; gap: var(--space-2xs); }
.stats dt { font-size: var(--text-xs); color: var(--color-muted); line-height: 1.4; }
.stats dd { font-family: var(--font-display); font-variation-settings: "SOFT" 100; font-weight: 300; font-size: var(--text-xl); line-height: 1; color: var(--color-accent); font-variant-numeric: tabular-nums lining-nums; }

/* ------------------------------------------------------------ strutture: mappa + elenco */
.places { max-width: var(--page-max); margin: 0 auto; padding: var(--space-3xl) var(--gutter); border-top: var(--rule); }
.places__head { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--space-lg); row-gap: var(--space-md); align-items: end; }
.places__head .section-title { grid-column: 1 / span 7; }
.places__lede { grid-column: 8 / span 5; color: var(--color-ink-2); max-width: 50ch; }
.places__tools { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-md); margin-top: var(--space-xl); }
.chips { display: flex; flex-wrap: wrap; gap: var(--space-xs); }
.chip {
  display: inline-flex; align-items: center; gap: var(--space-xs); min-height: 2.75rem; padding: 0 var(--space-md);
  border-radius: var(--radius-pill); border: 1px solid var(--color-rule); background: var(--color-paper);
  font-size: var(--text-sm); font-weight: 500; color: var(--color-ink-2); cursor: pointer; white-space: nowrap;
  transition: background-color var(--dur-short) var(--ease-out), border-color var(--dur-short) var(--ease-out), color var(--dur-short) var(--ease-out);
}
.chip span { font-variant-numeric: tabular-nums; color: var(--color-muted); font-weight: 400; }
.chip:hover { border-color: var(--color-ink-2); color: var(--color-ink); }
.chip.is-active { background: var(--color-ink); border-color: var(--color-ink); color: var(--color-paper); }
.chip.is-active span { color: var(--color-rule); }
.places__status { font-size: var(--text-sm); color: var(--color-muted); font-variant-numeric: tabular-nums; }
.search-echo {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-sm);
  margin-top: var(--space-md); padding: var(--space-sm) var(--space-md); border-radius: var(--radius-md); background: var(--color-accent-tint); font-size: var(--text-sm);
}
.places__grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--space-xl); margin-top: var(--space-lg); align-items: start; }
.places__list { display: grid; }
.place { border-bottom: var(--rule-2); }
.place:first-child { border-top: var(--rule-2); }
.place__link {
  display: grid; grid-template-columns: auto 6.5rem minmax(0, 1fr) auto; align-items: center; gap: var(--space-md);
  padding: var(--space-md) var(--space-xs); text-decoration: none; border-radius: var(--radius-md);
  transition: background-color var(--dur-short) var(--ease-out);
}
.place__num {
  display: grid; place-items: center; width: 1.9rem; height: 1.9rem; border-radius: 50%;
  border: 1px solid var(--color-rule); font-size: var(--text-xs); font-variant-numeric: tabular-nums; color: var(--color-ink-2);
  transition: background-color var(--dur-short) var(--ease-out), color var(--dur-short) var(--ease-out), border-color var(--dur-short) var(--ease-out);
}
.place__media { display: block; overflow: hidden; border-radius: var(--radius-sm); }
.place__img { width: 6.5rem; aspect-ratio: 4 / 3; object-fit: cover; }
.place__body { display: grid; gap: 0.15rem; min-width: 0; }
.place__name { font-family: var(--font-display); font-variation-settings: "SOFT" 100; font-size: var(--text-md); line-height: 1.2; font-weight: 450; }
.place__where { font-size: var(--text-sm); color: var(--color-ink-2); }
.place__meta { font-size: var(--text-xs); color: var(--color-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.place__go { color: var(--color-muted); transition: color var(--dur-short) var(--ease-out); }
.place__link:hover, .place.is-hot .place__link { background: var(--color-paper-2); }
.place__link:hover .place__go, .place.is-hot .place__go { color: var(--color-accent); }
.place.is-hot .place__num, .place__link:hover .place__num { background: var(--color-accent); border-color: var(--color-accent); color: var(--color-accent-ink); }
.places__map { position: sticky; top: 6.5rem; }
.map { height: min(78vh, 44rem); border-radius: var(--radius-lg); overflow: hidden; background: var(--color-paper-3); position: relative; z-index: var(--z-base); }
.map__fallback { position: absolute; inset: auto var(--space-md) var(--space-md); font-size: var(--text-xs); color: var(--color-muted); pointer-events: none; }
.map.is-ready + .map__fallback { display: none; }
.places__empty { margin-top: var(--space-lg); color: var(--color-ink-2); }

/* pin della mappa */
.pin { background: none; border: 0; }
.pin__dot {
  display: grid; place-items: center; width: 2.1rem; height: 2.1rem; border-radius: 50% 50% 50% 4px; transform: rotate(-45deg);
  background: var(--color-accent); color: var(--color-accent-ink); border: 2px solid var(--color-paper);
  box-shadow: var(--shadow-whisper);
  transition: transform var(--dur-short) var(--ease-out), background-color var(--dur-short) var(--ease-out);
}
.pin__dot span { transform: rotate(45deg); font: 600 0.8rem/1 var(--font-body); font-variant-numeric: tabular-nums; }
.pin.is-hot .pin__dot { background: var(--color-ink); transform: rotate(-45deg) scale(1.22); }
.leaflet-container { font-family: var(--font-body); }
.leaflet-tile-pane { filter: saturate(0.45) sepia(0.18) brightness(1.04) contrast(0.94); }
.leaflet-popup-content-wrapper { border-radius: var(--radius-md); box-shadow: var(--shadow-whisper); }
.leaflet-popup-content { margin: var(--space-sm); width: 14rem !important; }
.popup { display: grid; gap: var(--space-2xs); text-decoration: none; color: var(--color-ink); }
.popup img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; border-radius: var(--radius-sm); margin-bottom: var(--space-2xs); }
.popup strong { font-family: var(--font-display); font-variation-settings: "SOFT" 100; font-weight: 500; font-size: 1.05rem; line-height: 1.2; }
.popup span { font-size: var(--text-xs); color: var(--color-muted); }
.popup em { font-style: normal; color: var(--color-accent); font-size: var(--text-xs); font-weight: 500; }

/* ------------------------------------------------------------ blog (home) */
.journal { max-width: var(--page-max); margin: 0 auto; padding: var(--space-3xl) var(--gutter) var(--space-4xl); border-top: var(--rule); }
.journal__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--space-md); margin-bottom: var(--space-xl); }
.journal__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--space-2xl); align-items: start; }
.post a { text-decoration: none; display: grid; gap: var(--space-xs); }
.post__media { display: block; overflow: hidden; border-radius: var(--radius-lg); margin-bottom: var(--space-sm); }
.post__media img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.post__meta { font-size: var(--text-xs); color: var(--color-muted); font-variant-numeric: tabular-nums; }
.post__cat { color: var(--color-accent); font-weight: 500; }
.post__title { overflow-wrap: anywhere; min-width: 0; font-family: var(--font-display); font-variation-settings: "SOFT" 100; font-weight: 450; font-size: var(--text-lg); line-height: 1.15; letter-spacing: -0.01em; text-wrap: balance; }
.post a:hover .post__title { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 0.16em; text-decoration-color: var(--color-rule); }
.post__excerpt { color: var(--color-ink-2); max-width: 60ch; }
.journal__list { display: grid; gap: 0; border-top: var(--rule-2); }
.post--row { border-bottom: var(--rule-2); }
.post--row a { grid-template-columns: 7.5rem minmax(0, 1fr); align-items: center; gap: var(--space-md); padding-block: var(--space-md); }
.post__thumb { display: block; overflow: hidden; border-radius: var(--radius-md); }
.post__thumb img { width: 7.5rem; aspect-ratio: 1; object-fit: cover; }
.post__body { display: grid; gap: var(--space-2xs); }
.post--row .post__title { font-size: var(--text-md); }

/* ------------------------------------------------------------ footer (Ft1) */
.foot { background: var(--color-paper-2); border-top: var(--rule); }
.foot__inner { max-width: var(--page-max); margin: 0 auto; padding: var(--space-2xl) var(--gutter) var(--space-xl); display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-lg) var(--space-2xl); align-items: end; }
.foot__mast img { height: 3.4rem; width: auto; }
.foot__tagline { margin-top: var(--space-sm); font-family: var(--font-display); font-variation-settings: "SOFT" 100; font-size: var(--text-md); color: var(--color-ink-2); }
.foot__links { display: flex; flex-wrap: wrap; gap: var(--space-xs) var(--space-lg); }
.foot__links a { font-size: var(--text-sm); font-weight: 500; text-decoration: none; color: var(--color-ink-2); white-space: nowrap; }
.foot__links a:hover { color: var(--color-accent); text-decoration: underline; text-underline-offset: 0.16em; }
.foot__meta { grid-column: 1 / -1; font-size: var(--text-xs); color: var(--color-muted); }
.foot__meta:first-of-type { border-top: var(--rule); padding-top: var(--space-md); }
.foot__demo { margin-top: calc(-1 * var(--space-md)); }

/* ------------------------------------------------------------ struttura */
.crumbs { max-width: var(--page-max); margin: 0 auto; padding: var(--space-lg) var(--gutter) 0; font-size: var(--text-xs); color: var(--color-muted); }
.crumbs ol { display: flex; flex-wrap: wrap; gap: var(--space-2xs); }
.crumbs li:not(:last-child)::after { content: "/"; margin-left: var(--space-2xs); color: var(--color-rule); }
.crumbs a { color: var(--color-ink-2); text-decoration: none; white-space: nowrap; }
.crumbs a:hover { color: var(--color-accent); text-decoration: underline; }
.crumbs [aria-current] { color: var(--color-ink); }
.stay__head { max-width: var(--page-max); margin: 0 auto; padding: var(--space-lg) var(--gutter) var(--space-xl); display: grid; gap: var(--space-sm); }
.stay__title { font-family: var(--font-display); font-variation-settings: "SOFT" 100; font-weight: 350; font-size: var(--text-display); line-height: 1.02; letter-spacing: -0.03em; max-width: 18ch; text-wrap: balance; overflow-wrap: anywhere; min-width: 0; }
.stay__claim { font-family: var(--font-display); font-variation-settings: "SOFT" 100; font-size: var(--text-lg); color: var(--color-ink-2); line-height: 1.25; max-width: 30ch; }
.stay__facts { display: flex; flex-wrap: wrap; gap: var(--space-xs) var(--space-lg); color: var(--color-ink-2); font-size: var(--text-sm); margin-top: var(--space-xs); }
.stay__facts span { display: inline-flex; align-items: center; gap: var(--space-2xs); }
.stay__facts span + span::before { content: ""; width: 4px; height: 4px; border-radius: 50%; background: var(--color-rule); margin-right: var(--space-xs); }

.gallery { max-width: var(--page-max); margin: 0 auto; padding: 0 var(--gutter); position: relative; }
.gallery__grid { display: grid; gap: var(--space-xs); border-radius: var(--radius-lg); overflow: hidden; height: clamp(22rem, 58vh, 36rem); grid-template-columns: repeat(4, minmax(0, 1fr)); grid-template-rows: repeat(2, minmax(0, 1fr)); }
.gallery__tile { padding: 0; border: 0; background: var(--color-paper-3); overflow: hidden; cursor: zoom-in; position: relative; }
.gallery__tile img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--dur-long) var(--ease-out); }
.gallery__tile:hover img { transform: scale(1.04); }
.gallery__tile--lead { grid-column: span 2; grid-row: span 2; }
.gallery__grid--1 .gallery__tile--lead { grid-column: 1 / -1; }
.gallery__grid--3 .gallery__tile:nth-child(n+2) { grid-column: span 2; }
.gallery__all { position: absolute; right: calc(var(--gutter) + var(--space-md)); bottom: var(--space-md); }

.stay { max-width: var(--page-max); margin: 0 auto; padding: var(--space-2xl) var(--gutter) var(--space-3xl); display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4.4fr); gap: var(--space-3xl); align-items: start; }
.stay__main { display: grid; gap: var(--space-2xl); min-width: 0; }
.stay__intro { font-size: var(--text-md); line-height: 1.55; max-width: var(--measure); }
.block { display: grid; gap: var(--space-md); padding-top: var(--space-xl); border-top: var(--rule); }
.block__title { overflow-wrap: anywhere; min-width: 0; font-family: var(--font-display); font-variation-settings: "SOFT" 100; font-weight: 450; font-size: var(--text-lg); line-height: 1.15; letter-spacing: -0.01em; }
.amenities { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 10rem), 1fr)); gap: var(--space-xs) var(--space-lg); }
.amenities li { display: flex; align-items: center; gap: var(--space-xs); color: var(--color-ink-2); padding-block: var(--space-2xs); }
.amenities .icon { color: var(--color-accent); }
.rooms { display: grid; gap: var(--space-md); }
.room { display: grid; border: var(--rule); border-radius: var(--radius-lg); overflow: hidden; background: var(--color-paper); }
.room--media { grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); }
.room__media img { width: 100%; height: 100%; min-height: 12rem; object-fit: cover; }
.room__body { display: grid; gap: var(--space-xs); padding: var(--space-lg); align-content: start; }
.room__name { font-family: var(--font-display); font-variation-settings: "SOFT" 100; font-weight: 450; font-size: var(--text-md); }
.room__desc { color: var(--color-ink-2); font-size: var(--text-sm); }
.room__facts { display: flex; flex-wrap: wrap; gap: var(--space-xs) var(--space-lg); font-size: var(--text-sm); margin-top: var(--space-2xs); }
.room__facts span { display: block; font-size: var(--text-xs); color: var(--color-muted); }
.room__pick { justify-self: start; margin-top: var(--space-xs); font-size: var(--text-sm); }
.empty { padding: var(--space-lg); border-radius: var(--radius-lg); background: var(--color-paper-2); display: grid; gap: var(--space-xs); color: var(--color-ink-2); max-width: var(--measure); }
.empty__title { color: var(--color-ink); font-weight: 500; }
.prose { max-width: var(--measure); }
.prose p, .prose ul, .prose ol { color: var(--color-ink-2); }
.prose p + p, .prose p + ul, .prose ul + p { margin-top: var(--space-md); }
.prose ul { display: grid; gap: var(--space-xs); padding-left: var(--space-lg); list-style: none; }
.prose li { position: relative; }
.prose li::before { content: ""; position: absolute; left: calc(-1 * var(--space-md)); top: 0.72em; width: 5px; height: 5px; border-radius: 50%; border: 1px solid var(--color-accent); }
.prose strong { color: var(--color-ink); font-weight: 600; }
.prose a { color: var(--color-accent); text-underline-offset: 0.16em; }
.spec { display: grid; border-top: var(--rule-2); }
.spec div { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-md); padding: var(--space-sm) 0; border-bottom: var(--rule-2); }
.spec dt { font-weight: 500; }
.spec dd { color: var(--color-ink-2); text-align: right; }
.rules { display: grid; gap: var(--space-xs); }
.rules li { padding-left: var(--space-lg); position: relative; color: var(--color-ink-2); }
.rules li::before { content: ""; position: absolute; left: 0; top: 0.75em; width: 0.6rem; height: 1px; background: var(--color-accent); }
.where { display: flex; align-items: center; gap: var(--space-xs); color: var(--color-ink-2); }
.map--small { height: 20rem; }
.where__links { display: flex; flex-wrap: wrap; gap: var(--space-xs) var(--space-xl); }

/* colonna laterale */
.stay__aside { display: grid; gap: var(--space-lg); }
.stay__aside.is-sticky { position: sticky; top: 6rem; }
.contact { border: var(--rule); border-radius: var(--radius-lg); padding: var(--space-lg); display: grid; gap: var(--space-md); background: var(--color-paper); }
.contact__head { display: flex; align-items: center; gap: var(--space-md); }
.contact__logo { width: 4rem; height: 4rem; object-fit: contain; border-radius: var(--radius-md); background: var(--color-paper-2); padding: var(--space-xs); }
.contact__kicker { font-size: var(--text-xs); color: var(--color-muted); }
.contact__name { font-family: var(--font-display); font-variation-settings: "SOFT" 100; font-size: var(--text-md); font-weight: 450; line-height: 1.2; }
.contact__price { font-size: var(--text-sm); color: var(--color-ink-2); }
.contact__price strong { color: var(--color-ink); }
.contact__rows { display: grid; }
.contact__row {
  display: flex; align-items: center; gap: var(--space-sm); padding: var(--space-sm) var(--space-xs);
  border-top: var(--rule-2); text-decoration: none; min-width: 0; border-radius: var(--radius-sm);
  transition: background-color var(--dur-short) var(--ease-out);
}
.contact__row .icon { color: var(--color-accent); }
.contact__row > span { display: grid; min-width: 0; overflow-wrap: anywhere; font-size: var(--text-sm); font-weight: 500; }
.contact__label { font-size: var(--text-xs); font-weight: 400; color: var(--color-muted); }
.contact__row:hover { background: var(--color-paper-2); }

.request { display: grid; gap: var(--space-md); padding: var(--space-lg); border-radius: var(--radius-lg); background: var(--color-paper-2); }
.request .field input, .request .field select, .request .field textarea, .request .stepper { background: var(--color-paper); }
.request__title { overflow-wrap: anywhere; min-width: 0; font-family: var(--font-display); font-variation-settings: "SOFT" 100; font-weight: 450; font-size: var(--text-lg); line-height: 1.1; }
.request__hint { font-size: var(--text-sm); color: var(--color-ink-2); margin-top: calc(-1 * var(--space-xs)); }
.request__dates, .request__people { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-sm); }
.request__people legend { margin-bottom: var(--space-xs); }
.request__people legend, .request__kind legend { grid-column: 1 / -1; }
.request__nights { font-size: var(--text-xs); color: var(--color-accent); margin-top: calc(-1 * var(--space-xs)); min-height: 1em; }
.kinds { display: flex; flex-wrap: wrap; gap: var(--space-xs); margin-top: var(--space-xs); }
.kinds label { position: relative; cursor: pointer; }
.kinds input { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.kinds span {
  display: inline-flex; align-items: center; min-height: 2.5rem; padding: 0 var(--space-md); border-radius: var(--radius-pill);
  border: 1px solid var(--color-rule); background: var(--color-paper); font-size: var(--text-sm); white-space: nowrap;
  transition: background-color var(--dur-short) var(--ease-out), border-color var(--dur-short) var(--ease-out), color var(--dur-short) var(--ease-out);
}
.kinds label:hover span { border-color: var(--color-ink-2); }
.kinds input:checked + span { background: var(--color-ink); border-color: var(--color-ink); color: var(--color-paper); }
.kinds input:focus-visible + span { outline: 2px solid var(--color-focus); outline-offset: 2px; }
.consent { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--space-sm); font-size: var(--text-xs); color: var(--color-ink-2); line-height: 1.5; cursor: pointer; }
.consent input { width: 1.2rem; height: 1.2rem; margin-top: 0.1rem; accent-color: var(--color-accent); }
.consent a { color: var(--color-accent); }
.consent.is-invalid { color: var(--color-error); }
.request__error { font-size: var(--text-sm); color: var(--color-error); background: var(--color-error-tint); border-radius: var(--radius-md); padding: var(--space-sm) var(--space-md); }
.request__send { width: 100%; min-height: 3.25rem; font-size: var(--text-base); position: relative; }
.btn__spinner { display: none; width: 1.1rem; height: 1.1rem; border-radius: 50%; border: 2px solid var(--color-accent-ink); border-right-color: transparent; animation: spin 0.8s linear infinite; }
.request__send.is-loading .btn__spinner { display: block; }
.request__send.is-loading .btn__label { opacity: 0.7; }
@keyframes spin { to { transform: rotate(360deg); } }
.request__to { font-size: var(--text-xs); color: var(--color-muted); overflow-wrap: anywhere; }
.request-done { display: grid; gap: var(--space-sm); padding: var(--space-lg); border-radius: var(--radius-lg); background: var(--color-success-tint); }
.request-done:focus { outline: none; }
.request-done__icon { display: grid; place-items: center; width: 2.75rem; height: 2.75rem; border-radius: 50%; background: var(--color-success); color: var(--color-paper); }
.request-done p { color: var(--color-ink-2); }
.request-done__demo { font-size: var(--text-xs); }
.request-done .text-link { justify-self: start; }

.bottom-bar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: var(--z-sticky);
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-md);
  padding: var(--space-sm) var(--gutter) calc(var(--space-sm) + env(safe-area-inset-bottom));
  background: var(--color-paper); border-top: var(--rule); box-shadow: var(--shadow-whisper);
  transform: translateY(110%); transition: transform var(--dur-long) var(--ease-out);
}
.bottom-bar.is-on { transform: none; }
.bottom-bar p { display: grid; min-width: 0; font-size: var(--text-sm); line-height: 1.3; }
.bottom-bar p strong, .bottom-bar p span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bottom-bar p span { color: var(--color-muted); font-size: var(--text-xs); }

.others { max-width: var(--page-max); margin: 0 auto; padding: var(--space-2xl) var(--gutter) var(--space-3xl); border-top: var(--rule); }
.others__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-lg); margin-top: var(--space-lg); }
.mini a { display: grid; gap: var(--space-2xs); text-decoration: none; }
.mini__media { display: block; overflow: hidden; border-radius: var(--radius-md); margin-bottom: var(--space-xs); }
.mini__media img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.mini a:hover .mini__name { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 0.16em; text-decoration-color: var(--color-rule); }
.mini__name { font-family: var(--font-display); font-variation-settings: "SOFT" 100; font-weight: 450; font-size: var(--text-md); line-height: 1.2; }
.mini__where { font-size: var(--text-sm); color: var(--color-muted); }

/* lightbox */
.lightbox { border: 0; padding: 0; margin: 0; width: 100%; height: 100%; max-width: none; max-height: none; background: var(--color-night); color: var(--color-on-night); }
.lightbox::backdrop { background: var(--color-night); }
.lightbox__stage { position: absolute; inset: 4.5rem var(--gutter) 5rem; display: grid; place-items: center; }
.lightbox__stage img { max-width: 100%; max-height: 100%; object-fit: contain; border-radius: var(--radius-md); }
.lightbox__bar { position: absolute; left: var(--gutter); right: var(--gutter); top: var(--space-md); display: flex; justify-content: space-between; align-items: center; }
.lightbox__nav { position: absolute; left: 0; right: 0; bottom: var(--space-lg); display: flex; justify-content: center; gap: var(--space-md); }
.lightbox .slider__btn { width: 3rem; height: 3rem; }
.lightbox__count { font-variant-numeric: tabular-nums; font-size: var(--text-sm); color: var(--color-on-night-2); }

/* ------------------------------------------------------------ blog */
.page-head { max-width: var(--page-max); margin: 0 auto; padding: var(--space-2xl) var(--gutter) var(--space-xl); display: grid; gap: var(--space-md); }
.page-head__title { overflow-wrap: anywhere; min-width: 0; font-family: var(--font-display); font-variation-settings: "SOFT" 100; font-weight: 350; font-size: var(--text-display); line-height: 1; letter-spacing: -0.03em; }
.page-head__lede { font-size: var(--text-md); color: var(--color-ink-2); max-width: 46ch; }
.entries { max-width: var(--page-max); margin: 0 auto; padding: 0 var(--gutter) var(--space-4xl); display: grid; }
.entry { border-top: var(--rule); }
.entry a { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: var(--space-xl); padding-block: var(--space-xl); text-decoration: none; align-items: center; }
.entry__media { display: block; overflow: hidden; border-radius: var(--radius-lg); }
.entry__media img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.entry__body { display: grid; gap: var(--space-xs); max-width: 60ch; }
.entry__title { overflow-wrap: anywhere; min-width: 0; font-family: var(--font-display); font-variation-settings: "SOFT" 100; font-weight: 450; font-size: var(--text-lg); line-height: 1.15; letter-spacing: -0.01em; text-wrap: balance; }
.entry a:hover .entry__title { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 0.16em; text-decoration-color: var(--color-rule); }
.entry__excerpt { color: var(--color-ink-2); }
.entry__near { display: inline-flex; align-items: center; gap: var(--space-2xs); font-size: var(--text-sm); color: var(--color-accent); margin-top: var(--space-2xs); }
.entry--lead a { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); padding-top: var(--space-lg); }
.entry--lead .entry__title { font-size: var(--text-xl); line-height: 1.05; }

.article { max-width: var(--page-max); margin: 0 auto; padding: var(--space-lg) var(--gutter) var(--space-3xl); display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, var(--measure)) minmax(0, 1fr); row-gap: var(--space-xl); }
.article > * { grid-column: 2; }
.article__head { display: grid; gap: var(--space-md); padding-top: var(--space-lg); }
.article__title { font-family: var(--font-display); font-variation-settings: "SOFT" 100; font-weight: 350; font-size: var(--text-display); line-height: 1.03; letter-spacing: -0.03em; text-wrap: balance; overflow-wrap: anywhere; min-width: 0; }
.article__media { grid-column: 1 / -1; }
.article__media img { width: 100%; max-height: 38rem; object-fit: cover; border-radius: var(--radius-lg); }
.article__body { font-size: 1.125rem; line-height: 1.7; }
.article__body p, .article__body ul { color: var(--color-ink); }
.near { border-top: var(--rule); padding-top: var(--space-lg); }
.near a { display: grid; grid-template-columns: 9rem minmax(0, 1fr); gap: var(--space-lg); align-items: center; text-decoration: none; }
.near__media img { width: 9rem; aspect-ratio: 1; object-fit: cover; border-radius: var(--radius-md); }
.near__body { display: grid; gap: var(--space-2xs); }
.near__kicker { font-size: var(--text-xs); color: var(--color-muted); }
.near__name { font-family: var(--font-display); font-variation-settings: "SOFT" 100; font-size: var(--text-lg); line-height: 1.15; font-weight: 450; }
.near__where { color: var(--color-ink-2); font-size: var(--text-sm); }
.journal__list--wide { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--space-xl); border-top: 0; margin-top: var(--space-md); }
.journal__list--wide .post--row { border-top: var(--rule-2); }

/* ------------------------------------------------------------ motion: stati iniziali (solo con JS + motion consentito) */
.motion:not(.motion-ready) [data-hero-in] { opacity: 0; }
.motion:not(.motion-ready) .hero__slider { opacity: 0; }

/* ------------------------------------------------------------ responsive */
@media (max-width: 75rem) {
  .search { grid-column: 1 / -1; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-bottom: 0; margin-top: var(--space-lg); }
  .search .field--where { grid-column: 1 / -1; }
  .search__go { grid-column: 1 / -1; }
  .hero__slider { grid-row: 1; }
  .hero__text { padding-block: var(--space-lg); }
}
@media (max-width: 60rem) {
  .hero { grid-template-columns: minmax(0, 1fr); padding-top: 0; padding-inline: 0; }
  .hero__slider { grid-column: 1; grid-row: 1; border-radius: 0; min-height: min(78vh, 36rem); }
  .hero__text { grid-column: 1; grid-row: 2; padding: var(--space-xl) var(--gutter) 0; }
  .hero__lede { max-width: none; }
  .search { grid-column: 1; grid-row: 3; margin: var(--space-lg) var(--gutter) 0; }
  .slide__cap { left: var(--gutter); right: var(--gutter); bottom: 5.5rem; }
  .slider__controls { left: var(--gutter); right: var(--gutter); bottom: var(--space-md); justify-content: flex-end; }
  .slider__progress { top: auto; bottom: calc(-1 * var(--space-xs)); }

  .about { grid-template-columns: minmax(0, 1fr); padding-block: var(--space-2xl) var(--space-3xl); }
  .about__photo { grid-column: 1; position: static; }
  .about__photo img { aspect-ratio: 4 / 3; }
  .about__text { grid-column: 1; padding-top: var(--space-lg); }
  .about__quote { margin-left: 0; }

  .places__head .section-title, .places__lede { grid-column: 1 / -1; }
  .places__grid { grid-template-columns: minmax(0, 1fr); }
  .places__map { position: static; order: -1; }
  .map { height: 58vh; min-height: 20rem; }

  .journal__grid { grid-template-columns: minmax(0, 1fr); gap: var(--space-xl); }

  .stay { grid-template-columns: minmax(0, 1fr); gap: var(--space-2xl); }
  .stay__aside { grid-row: 1; }
  .stay__main { grid-row: 2; }
  .gallery__grid { height: auto; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: none; grid-auto-rows: 9rem; }
  .gallery__tile--lead { grid-column: 1 / -1; grid-row: span 2; }
  .gallery__tile:nth-child(n+4) { display: none; }
  .gallery__grid--3 .gallery__tile:nth-child(n+2) { grid-column: span 1; }
  .others__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .others__list li:nth-child(3) { display: none; }
  .entry a, .entry--lead a { grid-template-columns: minmax(0, 1fr); gap: var(--space-md); }
  .foot__inner { grid-template-columns: minmax(0, 1fr); align-items: start; }
  .journal__list--wide { grid-template-columns: minmax(0, 1fr); }
}
@media (min-width: 60.01rem) { .bottom-bar { display: none !important; } }
@media (max-width: 40rem) {
  .mast__issue { display: none; }
  .stay__facts { flex-direction: column; gap: var(--space-2xs); }
  .stay__facts span + span::before { display: none; }
  .search { grid-template-columns: minmax(0, 1fr); }
  .stats { grid-template-columns: minmax(0, 1fr); gap: var(--space-md); }
  .stats div { flex-direction: row-reverse; justify-content: flex-end; align-items: baseline; gap: var(--space-md); }
  .stats dd { min-width: 4ch; }
  .place__link { grid-template-columns: auto 4.5rem minmax(0, 1fr); gap: var(--space-sm); }
  .place__img { width: 4.5rem; }
  .place__go { display: none; }
  .room--media { grid-template-columns: minmax(0, 1fr); }
  .room__media img { min-height: 0; aspect-ratio: 16 / 10; }
  .request__people { grid-template-columns: minmax(0, 1fr); }
  .post--row a { grid-template-columns: 5.5rem minmax(0, 1fr); }
  .post__thumb img { width: 5.5rem; }
  .near a { grid-template-columns: 5.5rem minmax(0, 1fr); gap: var(--space-md); }
  .near__media img { width: 5.5rem; }
  .gallery__all { right: calc(var(--gutter) + var(--space-xs)); bottom: var(--space-xs); }
  .spec div { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .spec dd { text-align: left; }
  .others__list { grid-template-columns: minmax(0, 1fr); }
  .others__list li:nth-child(3) { display: block; }
}

@media (max-width: 25rem) {
  .request { padding: var(--space-md); }
  .request__dates { grid-template-columns: minmax(0, 1fr); }
  .field input, .field select { min-width: 0; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: 150ms !important; animation-duration: 150ms !important; animation-iteration-count: 1 !important; }
  .marquee { overflow: visible; mask-image: none; justify-content: center; }
  .marquee__track { flex-wrap: wrap; justify-content: center; animation: none !important; padding-right: 0; row-gap: var(--space-md); }
  .marquee__track[aria-hidden="true"] { display: none; }
  .btn__spinner { animation: spin 1.2s linear infinite !important; animation-iteration-count: infinite !important; }
}
