/* V20 Reservation: short, recoverable LibroReserve flow. */
.v20-reservation { overflow: clip; background: var(--lt-crema); color: var(--lt-tinta); }
.v20-reservation > .v20-reservation-hero { background: var(--lt-tinta) !important; color: var(--lt-crema) !important; }
.v20-reservation > .v20-reservation-chooser { background: var(--lt-crema) !important; color: var(--lt-tinta) !important; }
.v20-reservation > .v20-reservation-widgets { background: var(--lt-crema-deep) !important; color: var(--lt-tinta) !important; }
.v20-reservation > .v20-reservation-notes { background: var(--lt-rouge) !important; color: var(--lt-crema) !important; }
.v20-reservation > .v20-reservation-faq { background: var(--lt-crema) !important; color: var(--lt-tinta) !important; }
.v20-reservation > .v20-reservation-cross-links { background: var(--lt-crema-deep) !important; color: var(--lt-tinta) !important; }
.v20-reservation > section { scroll-margin-top: calc(var(--v20-header-h) + var(--sp-3)); }
.v20-reservation-hero { position: relative; min-height: min(34rem, 72svh); isolation: isolate; color: var(--lt-crema); }
.v20-reservation-hero__media, .v20-reservation-hero__media::after { position: absolute; inset: 0; }
.v20-reservation-hero__media { z-index: -1; overflow: hidden; background: var(--lt-tinta); }
.v20-reservation-hero__media picture, .v20-reservation-hero__media img { display: block; width: 100%; height: 100%; }
.v20-reservation-hero__media img { object-fit: cover; object-position: center; }
.v20-reservation-hero__media::after { z-index: 1; background: linear-gradient(180deg, rgba(33,21,17,.78) 0%, rgba(33,21,17,.88) 62%, rgba(33,21,17,.97) 100%); content: ""; }
.v20-reservation-hero__inner { display: flex; flex-direction: column; justify-content: flex-end; min-height: inherit; padding-block: var(--sp-5) var(--sp-7); }
.v20-reservation-breadcrumb { display: flex; align-items: center; gap: var(--sp-2); min-width: 0; margin-bottom: auto; overflow-x: auto; color: var(--lt-crema); font-size: var(--fs-caption); white-space: nowrap; }
.v20-reservation-breadcrumb a { display: inline-flex; align-items: center; min-height: 44px; color: var(--lt-crema); }
.v20-reservation-hero__copy { max-width: 44rem; }
.v20-reservation-hero h1 { max-width: 12ch; color: var(--lt-crema); }
.v20-reservation-hero__copy p { max-width: 60ch; margin: var(--sp-4) 0 var(--sp-5); color: var(--lt-crema); font-size: var(--fs-body-lg); }
.v20-reservation-hero .v20-button { width: 100%; background: var(--lt-rosa); color: var(--lt-tinta); }
.v20-reservation-section-head { max-width: var(--wrap-text); }
.v20-reservation-section-head h2, .v20-reservation-notes h2, .v20-reservation-faq h2, .v20-reservation-cross-links h2 { color: var(--lt-rouge); }
.v20-reservation-section-head p { margin: var(--sp-3) 0 0; font-size: var(--fs-body-lg); }

.v20-reservation-chooser { padding-block: var(--sp-8); background: var(--lt-crema); }
.v20-reservation-chooser__cards { display: grid; gap: var(--sp-4); margin-top: var(--sp-6); }
.v20-reservation-choice { display: grid; min-width: 0; overflow: hidden; border: var(--bw-frame); border-radius: var(--r-card); background: var(--lt-blanco); color: var(--lt-tinta); text-decoration: none; box-shadow: inset 0 0 0 5px var(--lt-blanco), inset 0 0 0 6px var(--lt-tinta), var(--shadow-card); }
.v20-reservation-choice__media { display: block; aspect-ratio: 3 / 2; overflow: hidden; border-radius: var(--r-media); background: var(--lt-crema-deep); }
.v20-reservation-choice__media picture, .v20-reservation-choice__media img { display: block; width: 100%; height: 100%; }
.v20-reservation-choice__media img { object-fit: cover; transition: transform var(--duration-settle) var(--ease-out); }
.v20-reservation-choice__body { display: grid; gap: var(--sp-3); padding: var(--sp-4); }
.v20-reservation-choice__body strong { color: var(--lt-tinta); font-size: var(--fs-card); }
.v20-reservation-choice__body > span { display: inline-flex; align-items: center; min-height: 44px; color: var(--lt-rosa-deep); font-weight: 700; }
.v20-reservation-choice__body b { margin-left: var(--sp-2); font-size: 1.2em; }
.v20-reservation-choice:focus-visible, .v20-reservation-choice:hover { outline: 3px solid var(--lt-rosa-deep); outline-offset: 3px; }
.v20-reservation-choice:hover img { transform: scale(1.025); }

.v20-reservation-widgets { padding-block: var(--sp-8); background: var(--lt-crema-deep); }
.v20-reservation-widgets__inner { display: grid; gap: var(--sp-7); }
.v20-reservation-widget { display: grid; grid-template-columns: minmax(0, 1fr); min-width: 0; scroll-margin-top: calc(var(--v20-header-h) + var(--sp-3)); border: var(--bw-frame); border-radius: var(--r-card); background: var(--lt-blanco); box-shadow: inset 0 0 0 5px var(--lt-blanco), inset 0 0 0 6px var(--lt-tinta), var(--shadow-card); }
.v20-reservation-widget__summary { display: contents; }
.v20-reservation-widget__head { display: grid; grid-row: 1; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: var(--sp-3); padding: var(--sp-4); border-bottom: var(--bw-hair); }
.v20-reservation-widget__head h2 { color: var(--lt-tinta); font-size: var(--fs-card); }
.v20-reservation-widget__head p { margin: var(--sp-1) 0 0; color: var(--lt-ink-soft); font-size: var(--fs-caption); font-weight: 700; }
.v20-reservation-widget__index { display: inline-grid; place-items: center; width: 44px; min-height: 44px; border: 2px solid var(--lt-tinta); border-radius: var(--r-stamp); background: var(--lt-marigold); color: var(--lt-tinta); font-family: var(--font-display); letter-spacing: .06em; }
.v20-reservation-widget__frame { position: relative; grid-row: 2; min-width: 0; min-height: 1300px; overflow: visible; background: var(--lt-crema); }
.v20-reservation-widget__frame iframe { display: block; width: 100%; min-width: 0; height: 1300px; border: 0; background: var(--lt-crema); }
.v20-reservation[lang="en"] .v20-reservation-widget__frame { min-height: 1000px; }
.v20-reservation[lang="en"] .v20-reservation-widget__frame iframe { height: 1000px; }
.v20-reservation-widget__details { display: grid; grid-row: 3; gap: var(--sp-3); padding: var(--sp-5) var(--sp-4); border-top: var(--bw-hair); }
.v20-reservation-widget__details address { color: var(--lt-tinta); font-style: normal; line-height: 1.55; }
.v20-reservation-widget__details address a, .v20-reservation-text-link { color: var(--lt-rosa-deep); font-weight: 700; }
.v20-reservation-widget .v20-location-status { justify-self: start; }
.v20-reservation-widget .v20-location-hours { width: 100%; border-top: var(--bw-hair); }
.v20-reservation-widget .v20-location-hours summary { display: flex; align-items: center; min-height: 44px; color: var(--lt-tinta); font-weight: 700; cursor: pointer; }

.v20-reservation-notes { padding-block: var(--sp-8); background: var(--lt-rouge); color: var(--lt-crema); }
.v20-reservation-notes h2 { color: var(--lt-crema); }
.v20-reservation-notes ul { display: grid; gap: var(--sp-3); padding: 0; margin: var(--sp-5) 0 0; list-style: none; border-top: 1px solid rgba(255,247,236,.35); }
.v20-reservation-notes li { min-height: 44px; padding: var(--sp-3) 0; border-bottom: 1px solid rgba(255,247,236,.35); }
.v20-reservation-fallback { margin-top: var(--sp-7); padding: var(--sp-5); border: 2px solid var(--lt-crema); border-radius: var(--r-card); background: var(--lt-tinta); text-align: left; }
.v20-reservation-fallback h3 { margin: 0; color: var(--lt-crema); font-size: var(--fs-body-lg); }
.v20-reservation-fallback p { margin: var(--sp-3) 0 var(--sp-4); color: var(--lt-crema-soft); }
.v20-reservation-fallback > div { display: grid; gap: var(--sp-2); }
body.v20-chrome .v20-reservation-fallback .v20-button { display: flex; flex-wrap: wrap; justify-content: flex-start; gap: var(--sp-1) var(--sp-2); width: 100%; border-color: var(--lt-crema); color: var(--lt-crema); text-align: left; white-space: normal; }
.v20-reservation-fallback .v20-button span { white-space: nowrap; }
.v20-reservation-fallback .wc-phone { color: var(--lt-crema) !important; }
body.v20-chrome .v20-reservation-fallback .v20-button:hover { background: var(--lt-crema); color: var(--lt-tinta) !important; }
.v20-reservation-fallback .v20-reservation-text-link { display: block; width: 100%; min-height: 44px; margin-top: var(--sp-3); padding-block: var(--sp-2); color: var(--lt-rosa-bright); line-height: 1.5; text-align: left; }
.v20-reservation-fallback .v20-reservation-text-link span { white-space: nowrap; }

.v20-reservation-faq { padding-block: var(--sp-8); background: var(--lt-crema); }
.v20-reservation-faq__inner { max-width: calc(var(--wrap-text) + (2 * var(--gutter))); }
.v20-reservation-faq__items { margin-top: var(--sp-5); border-top: var(--bw-hair); }
.v20-reservation-faq details { border-bottom: var(--bw-hair); }
.v20-reservation-faq summary { position: relative; display: flex; align-items: center; min-height: 56px; padding: var(--sp-3) 3rem var(--sp-3) 0; color: var(--lt-tinta); font-weight: 600; cursor: pointer; list-style: none; }
.v20-reservation-faq summary::-webkit-details-marker { display: none; }
.v20-reservation-faq summary span::before, .v20-reservation-faq summary span::after { position: absolute; top: 50%; right: .25rem; width: 18px; height: 2px; background: var(--lt-rosa-deep); content: ""; transform: translateY(-50%); }
.v20-reservation-faq summary span::after { transform: translateY(-50%) rotate(90deg); transition: transform var(--duration-state) var(--ease-out); }
.v20-reservation-faq details[open] summary span::after { transform: translateY(-50%) rotate(0); }
.v20-reservation-faq details p { max-width: 70ch; margin: 0; padding: 0 var(--sp-7) var(--sp-5) 0; }

.v20-reservation-cross-links { padding-block: var(--sp-8); background: var(--lt-crema-deep); }
.v20-reservation-cross-links__inner { display: grid; gap: var(--sp-5); }
.v20-reservation-cross-links__inner p { max-width: 60ch; margin: var(--sp-3) 0 0; }
.v20-reservation-cross-links__actions { display: grid; gap: var(--sp-2); }
.v20-reservation-cross-links__actions .v20-button { width: 100%; }

@media (min-width: 768px) {
  .v20-reservation-hero { min-height: min(37rem, 72svh); }
  .v20-reservation-hero__inner { padding-block: var(--sp-6) var(--sp-8); }
  .v20-reservation-hero .v20-button { width: auto; }
  .v20-reservation-chooser__cards { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-6); }
  .v20-reservation-choice__body strong { min-height: 2lh; }
  .v20-reservation-widgets__inner { gap: var(--sp-8); }
  .v20-reservation-widget__details { grid-template-columns: auto minmax(18rem, 1fr); align-items: start; }
  .v20-reservation-widget__details .v20-location-hours { grid-column: 1 / -1; }
  .v20-reservation-notes__inner { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(18rem, .8fr); gap: var(--sp-7); align-items: start; }
  .v20-reservation-fallback { margin-top: 0; }
  .v20-reservation-fallback > div { grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); }
  .v20-reservation-cross-links__inner { grid-template-columns: 1fr auto; align-items: center; }
  .v20-reservation-cross-links__actions { grid-template-columns: repeat(2, max-content); }
  .v20-reservation-cross-links__actions .v20-button { width: auto; }
}

@media (min-width: 1024px) {
  .v20-reservation-hero { min-height: min(39rem, 74svh); }
  .v20-reservation-widget { display: grid; grid-template-columns: minmax(19rem, .42fr) minmax(0, .58fr); gap: var(--sp-4); align-items: start; overflow: visible; border: 0; background: transparent; box-shadow: none; }
  .v20-reservation-widget__summary { display: grid; grid-column: 1; grid-row: 1; gap: var(--sp-4); align-self: center; }
  .v20-reservation-widget__head { grid-row: auto; align-self: start; border: var(--bw-frame); border-radius: var(--r-card); background: var(--lt-blanco); }
  .v20-reservation-widget__details { grid-row: auto; grid-template-columns: 1fr; align-self: start; border: var(--bw-frame); border-radius: var(--r-card); background: var(--lt-blanco); }
  .v20-reservation-widget__frame { grid-column: 2; grid-row: 1; align-self: start; overflow: hidden; border: var(--bw-frame); border-radius: var(--r-card); }
  .v20-reservation-widget__details .v20-location-hours { grid-column: auto; }
}

@media (prefers-reduced-motion: reduce) {
  .v20-reservation-choice__media img, .v20-reservation-faq summary span::after { transition: none; }
}
