/* Shared column-width hotel components. No global theme selectors. */
.pv-hotel-review :is(.article-title,.entry-title,.article-content h2,.article-content h3,.entry-content h2,.entry-content h3){overflow-wrap:anywhere}
.pv-hotel-facts,.pv-hotel-map{box-sizing:border-box;width:100%;max-width:100%;margin:2.25rem 0;color:inherit;font-family:inherit;overflow-wrap:anywhere}
.pv-hotel-facts{padding:clamp(1rem,3vw,1.75rem);border:1px solid var(--cn-line,#d9d5cc);background:var(--cn-card,#f5f3ee);border-radius:4px}
.pv-hotel-facts .pv-hotel-heading,.pv-hotel-map .pv-hotel-heading{margin:0 0 1.1rem;font-size:1.5rem;line-height:1.2;letter-spacing:-.02em}
.pv-hotel-facts dl{margin:0;padding:0;font-size:.95rem;line-height:1.55}
.pv-hotel-facts__row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2.25fr);gap:.5rem 1.25rem;padding:.75rem 0;border-top:1px solid var(--cn-line,#d9d5cc)}
.pv-hotel-facts__row:first-child{border-top:0;padding-top:0}
.pv-hotel-facts dt{font-weight:600;margin:0;min-width:0}
.pv-hotel-facts dd{margin:0;min-width:0;white-space:normal}
.pv-hotel-facts a,.pv-hotel-map a{text-decoration:underline;text-underline-offset:.18em;color:var(--cn-accent,#555e3b)}
.pv-hotel-map__frame{display:block;width:100%;max-width:100%;height:clamp(250px,50vw,360px);border:1px solid var(--cn-line,#d9d5cc);border-radius:4px;box-sizing:border-box;background:#f3f1ec}
.pv-hotel-map .pv-hotel-map__links{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.6rem 1rem;margin:.65rem 0 0;font-size:.8rem;line-height:1.5}
.pv-hotel-map__links span{font-size:.7rem}
.pv-hotel-facts a:focus-visible,.pv-hotel-map a:focus-visible{outline:2px solid currentColor;outline-offset:3px}
@media(max-width:480px){.pv-hotel-facts__row{grid-template-columns:1fr;gap:.2rem;padding:.8rem 0}.pv-hotel-facts dt{font-size:.76rem;letter-spacing:.035em;text-transform:uppercase}}

/* Hotel booking: one integrated table footer / one un-nested in-content callout. */
.pv-hotel-facts__cta,
.pv-hotel-review .article-content > .cn-inline-booking-cta {
  display:grid;
  --cn-booking-title-size:clamp(1.1rem,2.5vw,1.35rem);
  grid-template-columns:repeat(2,minmax(0,1fr));
  align-items:end;
  gap:clamp(1rem,3vw,1.75rem);
  box-sizing:border-box;
}
.pv-hotel-facts__cta {
  border-top:1px solid var(--cn-border,#e8e0d7);
  margin-top:1.4rem;
  padding-top:1.4rem;
}
.pv-hotel-review .article-content > .cn-inline-booking-cta {
  background:var(--cn-card,#faf6ee);
  border:1px solid var(--cn-border,#e8e0d7);
  border-radius:4px;
  padding:clamp(1.1rem,3vw,1.5rem);
  margin:clamp(2rem,5vw,3rem) 0;
}
.cn-booking-cta__copy {min-width:0;}
.cn-booking-cta__headline {
  display:block;
  font-family:var(--cn-font-display,Georgia,serif);
  color:var(--cn-ink,#14110f);
  font-size:var(--cn-booking-title-size);
  line-height:1.24;
  font-weight:600;
  letter-spacing:-.015em;
}
.cn-booking-cta__description {
  display:block;
  margin-top:.35rem;
  font-size:13px;
  line-height:1.5;
  white-space:nowrap;
  font-family:var(--cn-font-body,Inter,system-ui,sans-serif);
  color:var(--cn-muted,#6f6760);
}
.cn-booking-cta__action {
  display:flex;
  align-self:end;
  align-items:stretch;
  justify-content:stretch;
  width:100%;
  min-width:0;
}
/* Keep the resolver's original element structure and tracking attributes,
   but make any immediate shortcode wrapper fill the action column. */
.cn-booking-cta__action > * {
  box-sizing:border-box;
  flex:1 1 auto;
  width:100%;
  max-width:none;
}
/* PV Offer Links may return a layout wrapper around the actual link.
   Flatten only its appearance, not its DOM, URL or click-tracking data. */
.cn-booking-cta__action .pv-offer-cta-row,
.cn-booking-cta__action .pv-cta-wrap,
.cn-booking-cta__action .pv-cta-wrapper {
  display:flex;
  align-items:stretch;
  border:0;
  background:transparent;
  box-shadow:none;
  box-sizing:border-box;
  width:100%;
  max-width:none;
  padding:0;
  margin:0;
}
.cn-booking-cta__action p {margin:0;width:100%;}
/* These stronger local rules defeat legacy black / neutral button styles. */
.pv-hotel-review .cn-booking-cta__action a.cn-booking-cta__button,
.pv-hotel-review .cn-booking-cta__action a.pv-cta,
.pv-hotel-review .cn-booking-cta__action a.cn-button {
  display:flex;
  align-items:center;
  justify-content:center;
  box-sizing:border-box;
  flex:1 1 100%;
  width:100% !important;
  max-width:none;
  min-height:46px;
  padding:.8rem 1rem;
  border:1px solid var(--cn-accent,#7c3f1a) !important;
  border-radius:4px;
  background:var(--cn-accent,#7c3f1a) !important;
  color:#fff !important;
  font-family:var(--cn-font-body,Inter,system-ui,sans-serif);
  font-size:var(--cn-booking-title-size);
  font-weight:700;
  letter-spacing:.045em;
  line-height:1.25;
  text-align:center;
  text-decoration:none !important;
  text-transform:uppercase;
  white-space:normal;
  transition:background-color .16s ease,border-color .16s ease;
}
.pv-hotel-review .cn-booking-cta__action a.cn-booking-cta__button:hover,
.pv-hotel-review .cn-booking-cta__action a.cn-booking-cta__button:focus-visible,
.pv-hotel-review .cn-booking-cta__action a.pv-cta:hover,
.pv-hotel-review .cn-booking-cta__action a.pv-cta:focus-visible {
  background:var(--cn-accent-hover,#623114) !important;
  border-color:var(--cn-accent-hover,#623114) !important;
  color:#fff !important;
}
.pv-hotel-review .cn-booking-cta__action a:focus-visible {
  outline:2px solid var(--cn-accent,#7c3f1a);
  outline-offset:3px;
}
/* Keep desktop booking-button labels at the article paragraph size. */
@media(min-width:768px) {
  .pv-hotel-review .cn-booking-cta__action a.cn-booking-cta__button,
  .pv-hotel-review .cn-booking-cta__action a.pv-cta,
  .pv-hotel-review .cn-booking-cta__action a.cn-button {
    font-size:var(--cn-body,20px);
    letter-spacing:-0.5px;
  }
}
@media(max-width:767px) {
  .pv-hotel-facts__cta,
  .pv-hotel-review .article-content > .cn-inline-booking-cta {
    --cn-booking-title-size:calc(var(--cn-body-mobile,18px) * 1.2);
    grid-template-columns:minmax(0,1fr);
    gap:1rem;
  }
  /* Preserve the previous smaller subtitle treatment on mobile. */
  .cn-booking-cta__description {
    font-size:.77em;
    white-space:normal;
  }
  /* Button label matches normal mobile article paragraph size. */
  .pv-hotel-review .cn-booking-cta__action a.cn-booking-cta__button,
  .pv-hotel-review .cn-booking-cta__action a.pv-cta,
  .pv-hotel-review .cn-booking-cta__action a.cn-button {
    font-size:var(--cn-body-mobile,18px);
  }
}


/* Photo-led closing booking CTA: only [pv_cta placement="final"].
   The article featured image fills a 1:1 crop; the resolver's link stays intact. */
.pv-hotel-review .article-content > .cn-final-booking-cta {
  display:grid;
  grid-template-columns:minmax(0,42fr) minmax(0,58fr);
  width:100%;
  max-width:100%;
  margin:clamp(2.5rem,6vw,4rem) 0;
  padding:0;
  overflow:hidden;
  box-sizing:border-box;
  border:1px solid var(--cn-border,#e8e0d7);
  border-radius:4px;
  background:var(--cn-card,#faf6ee);
}

/* The theme's general article figure margins must not affect this image. */
.pv-hotel-review .article-content .cn-final-booking-cta__media {
  position:relative;
  display:block;
  aspect-ratio:1/1;
  width:100%;
  min-width:0;
  height:auto;
  overflow:hidden;
  margin:0;
  padding:0;
  background:#e2d5c4;
}

.pv-hotel-review .article-content .cn-final-booking-cta__media img {
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  max-width:none;
  object-fit:cover;
  object-position:center;
  border-radius:0;
}

.cn-final-booking-cta__content {
  display:flex;
  flex-direction:column;
  justify-content:center;
  min-width:0;
  gap:1.15rem;
  padding:clamp(1.25rem,2.5vw,1.75rem);
}

.pv-hotel-review .cn-final-booking-cta .cn-booking-cta__headline {
  font-size:30px;
  line-height:1.19;
  letter-spacing:-.015em;
}

.pv-hotel-review .cn-final-booking-cta .cn-booking-cta__description {
  font-size:15px;
  line-height:1.55;
  white-space:normal;
}

.cn-final-booking-cta__action {
  width:100%;
  margin-top:0;
}

@media(max-width:767px) {
  .pv-hotel-review .article-content > .cn-final-booking-cta {
    grid-template-columns:minmax(0,1fr);
  }

  .pv-hotel-review .article-content .cn-final-booking-cta__media {
    aspect-ratio:1/1;
  }

  .cn-final-booking-cta__content {
    gap:1.5rem;
    padding:24px 22px 26px;
  }

  .pv-hotel-review .cn-final-booking-cta .cn-booking-cta__headline {
    font-size:26px;
  }

  .pv-hotel-review .cn-final-booking-cta .cn-booking-cta__description {
    font-size:15px;
  }
}
