/* Pre-launch quality and accessibility layer. Scoped to the widget so the
   Elementor editor and the active WordPress theme remain unaffected. */
.ts-experience :focus-visible {
  outline: 3px solid var(--ts-rust);
  outline-offset: 3px;
}

/* v7.9.0 Revenue Release — iPad search-form containment.
 * The desktop six-column search becomes a balanced two-column form before
 * iPad widths run out of usable space. Every grid child can shrink, and the
 * visual date overlay remains inside its own input instead of crossing into
 * the neighbouring date field. */






@media (min-width: 681px) and (max-width: 1180px) {
    

    
    
    
    
    
    
}

.ts-skip-link {
  position: fixed;
  z-index: 100001;
  top: 10px;
  left: 10px;
  padding: 12px 16px;
  color: #fff !important;
  background: var(--ts-ink);
  transform: translateY(-160%);
  transition: transform 0.18s ease;
}

.ts-skip-link:focus { transform: none; }
.ts-header-actions { display: flex; align-items: center; justify-self: end; gap: 16px; }
.ts-menu-toggle { display: none; width: 44px; height: 44px; place-items: center; background: transparent; cursor: pointer; }
.ts-menu-toggle span { display: block; width: 22px; height: 1px; background: currentColor; transition: transform 0.25s ease; }
.ts-menu-toggle span + span { margin-top: 6px; }
.ts-menu-open .ts-menu-toggle span:first-child { transform: translateY(3.5px) rotate(45deg); }
.ts-menu-open .ts-menu-toggle span:last-child { transform: translateY(-3.5px) rotate(-45deg); }
.ts-languages button { min-width: 32px; min-height: 44px; }
.ts-book-button:disabled { cursor: not-allowed; opacity: 0.58; }
.ts-pet-toggle[hidden] { display: none !important; }

.ts-property.is-unavailable .ts-property-visual::after {
  position: absolute;
  z-index: 3;
  right: 24px;
  bottom: 24px;
  padding: 9px 12px;
  border-radius: 99px;
  color: #fff;
  background: rgba(21, 26, 23, 0.84);
  content: "Booking paused";
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.ts-policies { padding: 0 0 clamp(110px, 11vw, 175px); }
.ts-policy-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; margin-top: 70px; background: var(--ts-line); }
.ts-policy-grid article { min-height: 310px; padding: clamp(28px, 4vw, 48px); background: var(--ts-white); }
.ts-policy-grid h3 { margin: 70px 0 14px; font: 400 27px var(--ts-font-heading, Georgia, serif); letter-spacing: -0.035em; }
.ts-policy-grid p { margin: 0; color: var(--ts-soft); font-size: 13px; line-height: 1.75; }
.ts-arrival-times { margin: 10px 0 0; color: var(--ts-soft); font-size: 12px; line-height: 1.55; }
.ts-price-box > small { display: block; margin-top: 10px; color: var(--ts-soft); font-size: 12px; line-height: 1.5; }
.ts-policy a { border-bottom: 1px solid currentColor; color: var(--ts-ink); }

.ts-honeypot {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
}

body.ts-booking-open,
body.ts-menu-open-global { overflow: hidden !important; }

.ts-lightbox .ts-lightbox-close,
.ts-lightbox .ts-lightbox-prev,
.ts-lightbox .ts-lightbox-next {
  position: absolute;
  z-index: 3;
  display: grid;
  width: 48px;
  height: 48px;
  place-items: center;
  border: 1px solid rgba(255, 255, 255, 0.35);
  border-radius: 50%;
  color: #fff;
  background: rgba(8, 12, 9, 0.55);
  cursor: pointer;
  font-size: 30px;
}

.ts-lightbox .ts-lightbox-close { top: 24px; right: 24px; left: auto; font-size: 24px; }
.ts-lightbox .ts-lightbox-prev { top: 50%; right: auto; left: 24px; transform: translateY(-50%); }
.ts-lightbox .ts-lightbox-next { top: 50%; right: 24px; left: auto; transform: translateY(-50%); }
.ts-lightbox-counter { position: absolute; right: 26px; bottom: 20px; padding: 7px 10px; border-radius: 99px; color: #fff; background: rgba(8, 12, 9, 0.6); font-size: 11px; letter-spacing: 0.1em; }
.ts-lightbox button[hidden] { display: none; }
.ts-booking-message:not(:empty),
.ts-availability-status:not(:empty) { padding: 10px 12px; background: rgba(159, 80, 52, 0.08); }
.ts-availability-status.available { background: rgba(31, 49, 40, 0.08); }

/* Premium motion system: quick hover feedback, standard interface changes and
   slower viewport reveals. Every rule remains scoped to the Elementor widget. */
.ts-experience {
  --ts-motion-fast: 0.2s;
  --ts-motion-standard: 0.34s;
  --ts-motion-reveal: 0.65s;
  --ts-motion-ease: cubic-bezier(0.16, 1, 0.3, 1);
}

/* Hero entrance is progressively enhanced in ticino-stays.js; static without JS. */

.ts-experience [data-ts-reveal] {
  transition-timing-function: var(--ts-motion-ease);
}

.ts-experience .ts-property-main,
.ts-experience .ts-property-second {
  transition: box-shadow var(--ts-motion-standard) var(--ts-motion-ease), transform var(--ts-motion-standard) var(--ts-motion-ease);
}

.ts-experience .ts-property-main img,
.ts-experience .ts-property-second img { transition-duration: 0.62s; }

.ts-experience .ts-book-button,
.ts-experience .ts-hero-actions a,
.ts-experience .ts-hero-actions button,
.ts-experience .ts-payment-button,
.ts-experience .ts-final button {
  transition: color var(--ts-motion-fast) ease, background var(--ts-motion-fast) ease, box-shadow var(--ts-motion-fast) ease, transform var(--ts-motion-fast) var(--ts-motion-ease);
}

.ts-experience .ts-book-button:hover,
.ts-experience .ts-hero-actions a:hover,
.ts-experience .ts-payment-button:hover { box-shadow: 0 14px 30px rgba(17, 23, 19, 0.2); transform: translateY(-3px); }
.ts-experience .ts-book-button:active,
.ts-experience .ts-hero-actions a:active,
.ts-experience .ts-payment-button:active { transform: scale(0.98); }

@media (hover: hover) and (pointer: fine) {
  .ts-experience .ts-property-main:hover,
  .ts-experience .ts-property-second:hover { box-shadow: 0 34px 78px rgba(17, 23, 19, 0.26); transform: translateY(-6px); }
  .ts-experience .ts-property-main:hover img,
  .ts-experience .ts-property-second:hover img { transform: scale(1.048); }
}

.ts-experience .ts-property-main:active,
.ts-experience .ts-property-second:active { transform: scale(0.985); }

.ts-experience .ts-price-box.ts-price-updated { animation: ts-price-refresh var(--ts-motion-standard) var(--ts-motion-ease) both; }
@keyframes ts-price-refresh {
  from { opacity: 0.45; transform: translateY(6px); }
  to { opacity: 1; transform: none; }
}

.ts-experience .ts-price-total strong { font-variant-numeric: tabular-nums; }
.ts-experience .ts-payment-button.is-loading::before,
.ts-experience .ts-availability-status.checking::before {
  display: inline-block;
  width: 13px;
  height: 13px;
  margin-right: 8px;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  content: "";
  vertical-align: -2px;
  animation: ts-spinner 0.72s linear infinite;
}
@keyframes ts-spinner { to { transform: rotate(360deg); } }

.ts-experience .ts-booking-message:not(:empty) { animation: ts-form-message 0.32s var(--ts-motion-ease) both; }
@keyframes ts-form-message {
  from { opacity: 0; transform: translateX(-5px); }
  to { opacity: 1; transform: none; }
}

.ts-experience .ts-booking-form input:user-invalid,
.ts-experience .ts-booking-form select:user-invalid { box-shadow: 0 2px 0 var(--ts-rust); }

.ts-experience .ts-lightbox img.ts-photo-changing { animation: ts-photo-change 0.4s var(--ts-motion-ease) both; }
@keyframes ts-photo-change {
  from { opacity: 0.35; transform: scale(1.015); }
  to { opacity: 1; transform: none; }
}

.ts-experience .ts-lightbox-prev,
.ts-experience .ts-lightbox-next { transition: color var(--ts-motion-fast) ease, background var(--ts-motion-fast) ease, transform var(--ts-motion-fast) var(--ts-motion-ease); }
.ts-experience .ts-lightbox-prev:hover { background: var(--ts-rust); transform: translateY(-50%) scale(1.06); }
.ts-experience .ts-lightbox-next:hover { background: var(--ts-rust); transform: translateY(-50%) scale(1.06); }

.ts-experience .ts-faq details { overflow: hidden; }
.ts-experience .ts-faq details > p {
  display: block !important;
  max-height: 0;
  margin-top: 0;
  margin-bottom: 0;
  overflow: hidden;
  opacity: 0;
  transition: max-height 0.4s var(--ts-motion-ease), margin 0.4s var(--ts-motion-ease), opacity 0.28s ease;
}
.ts-experience .ts-faq details[open] > p { max-height: 500px; margin-top: -5px; margin-bottom: 28px; opacity: 1; }

.ts-experience .ts-hero-facts {
  max-width: 760px;
  margin: 16px 0 0;
  color: rgba(255,255,255,.9);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .075em;
  line-height: 1.6;
  text-transform: uppercase;
}






.ts-experience .ts-filter-row { display: flex; align-items: center; gap: 8px; padding: 10px; overflow-x: auto; border: 1px solid var(--ts-line); border-radius: 999px; background: rgba(255,253,248,.72); }
.ts-experience .ts-filter-row > button { min-height: 42px; flex: 0 0 auto; padding: 0 17px; border: 0; border-radius: 999px; color: var(--ts-soft); background: transparent; cursor: pointer; font-size: 9px; font-weight: 700; letter-spacing: .075em; text-transform: uppercase; transition: color var(--ts-motion-fast) ease, background var(--ts-motion-fast) ease, transform var(--ts-motion-fast) var(--ts-motion-ease); }
.ts-experience .ts-filter-row > button:hover { color: var(--ts-ink); background: #e7e1d6; }
.ts-experience .ts-filter-row > button:active { transform: scale(.97); }
.ts-experience .ts-filter-row > button.active { color: #fff; background: var(--ts-forest); }
.ts-experience .ts-filter-row > label { display: flex; min-height: 42px; align-items: center; gap: 9px; flex: 0 0 auto; margin-left: auto; padding: 0 13px 0 17px; border-left: 1px solid var(--ts-line); }
.ts-experience .ts-filter-row > label span { color: var(--ts-soft); font-size: 8px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.ts-experience .ts-filter-row select { min-width: 105px; border: 0; background: transparent; font-size: 11px; }
.ts-experience .ts-property[hidden] { display: none !important; }

/* Editable amenities and unlimited-gallery affordance. */
.ts-experience .ts-gallery-count { position: absolute; right: 16px; bottom: 16px; padding: 8px 11px; border-radius: 999px; color: #fff; background: rgba(13,18,15,.62); backdrop-filter: blur(10px); font-size: 8px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.ts-experience .ts-amenities-label { margin: 22px 0 0; color: var(--ts-rust); font-size: 8px; font-weight: 750; letter-spacing: .13em; text-transform: uppercase; }
.ts-experience .ts-feature-list { margin-top: 8px; padding-top: 13px; }
.ts-experience .ts-feature-list li { display: flex; align-items: center; gap: 8px; min-height: 25px; }
.ts-experience .ts-feature-list li i { display: grid; width: 18px; height: 18px; flex: 0 0 18px; place-items: center; border-radius: 50%; color: var(--ts-forest); background: #e1e8e3; font-size: 8px; font-style: normal; }
.ts-experience .ts-weekly-offer { width: max-content; margin: 8px 0 0; padding: 6px 9px; border-radius: 999px; color: var(--ts-forest); background: #dfe9e2; font-size: 8px; font-weight: 750; letter-spacing: .07em; text-transform: uppercase; }

/* Custom guest calendar. Native browser date pickers are replaced with one
   consistent, keyboard-accessible calendar that can show price and status. */
.ts-experience .ts-date-choice { display: grid; gap: 7px; padding: 14px 0; border-bottom: 1px solid var(--ts-line); }
.ts-experience .ts-date-choice > span { color: var(--ts-soft); font-size: 8px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.ts-experience .ts-date-choice > button { display: flex; min-height: 36px; align-items: center; justify-content: space-between; padding: 4px 0; background: transparent; cursor: pointer; text-align: left; }
.ts-experience .ts-date-choice > button strong { font: 400 16px var(--ts-font-heading, Georgia, serif); }
.ts-experience .ts-date-choice > button i { font-size: 11px; font-style: normal; transition: transform .25s ease; }
.ts-experience .ts-date-choice > button[aria-expanded="true"] i { transform: rotate(180deg); }
.ts-experience .ts-guest-calendar { margin: 8px 0 15px; padding: 16px; border: 1px solid var(--ts-line); background: var(--ts-white); box-shadow: 0 20px 50px rgba(21,26,23,.12); }
.ts-experience .ts-guest-calendar[hidden] { display: none; }
.ts-experience .ts-guest-calendar-head { display: grid; grid-template-columns: 38px 1fr 38px; align-items: center; gap: 8px; }
.ts-experience .ts-guest-calendar-head > strong { text-align: center; font: 400 18px var(--ts-font-heading, Georgia, serif); }
.ts-experience .ts-guest-calendar-head button { display: grid; width: 38px; height: 38px; place-items: center; border: 1px solid var(--ts-line); border-radius: 50%; background: transparent; cursor: pointer; }
.ts-experience .ts-guest-calendar-week,
.ts-experience .ts-guest-calendar-days { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); gap: 3px; }
.ts-experience .ts-guest-calendar-week { margin-top: 13px; }
.ts-experience .ts-guest-calendar-week span { padding: 4px 0; color: var(--ts-soft); font-size: 8px; font-weight: 700; text-align: center; }
.ts-experience .ts-guest-calendar-days button { position: relative; display: grid; min-width: 0; min-height: 54px; align-content: center; padding: 4px 1px; border: 1px solid transparent; border-radius: 8px; background: transparent; cursor: pointer; text-align: center; transition: transform .18s ease, background .22s ease, border-color .22s ease; }
.ts-experience .ts-guest-calendar-days button:hover:not(:disabled) { border-color: var(--ts-line); background: #eeeae1; transform: translateY(-1px); }
.ts-experience .ts-guest-calendar-days button b { font-size: 10px; }
.ts-experience .ts-guest-calendar-days button small { display: block; margin-top: 3px; color: var(--ts-soft); font-size: 7px; }
.ts-experience .ts-guest-calendar-days button.is-outside { opacity: .28; }
.ts-experience .ts-guest-calendar-days button.is-unavailable,
.ts-experience .ts-guest-calendar-days button:disabled { color: #9d9b96; cursor: not-allowed; opacity: .45; text-decoration: line-through; }
.ts-experience .ts-guest-calendar-days button.is-range { background: #e1e9e3; border-radius: 0; }
.ts-experience .ts-guest-calendar-days button.is-selected { color: #fff; background: var(--ts-forest); border-color: var(--ts-forest); }
.ts-experience .ts-guest-calendar-days button.is-selected small { color: rgba(255,255,255,.75); }
.ts-experience .ts-guest-calendar > p { min-height: 16px; margin: 10px 0 0; color: var(--ts-soft); font-size: 9px; line-height: 1.5; }
.ts-experience .ts-price-lines .ts-discount-line { color: var(--ts-forest); }
.ts-experience.ts-hide-benefits .ts-benefits,
.ts-experience.ts-hide-host .ts-host,
.ts-experience.ts-hide-voices .ts-voices,
.ts-experience.ts-hide-faq .ts-faq,
.ts-experience.ts-hide-policies .ts-policies{ display: none !important; }

@media (max-width: 950px) {
  .ts-menu-toggle { display: grid; }
  .ts-header { z-index: 9995; }
  .ts-header nav {
    position: fixed;
    z-index: -1;
    inset: 0;
    display: flex !important;
    align-items: flex-start;
    flex-direction: column;
    justify-content: center;
    gap: 20px;
    padding: 110px 28px 45px;
    color: #fff;
    background: var(--ts-forest);
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
    transform: translateY(-16px);
    transition: opacity 0.3s ease, transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
  }
  .ts-header nav a,
  .ts-header nav button { min-height: 48px; padding: 4px 0; color: inherit; background: transparent; font: 400 clamp(42px, 10vw, 68px)/1 var(--ts-font-heading, Georgia, serif); letter-spacing: -0.05em; text-transform: none; opacity: 0; transform: translateY(12px); transition: opacity 0.3s ease, transform 0.45s var(--ts-motion-ease); }
  .ts-menu-open .ts-header nav { z-index: 20; visibility: visible; opacity: 1; pointer-events: auto; transform: none; }
  .ts-menu-open .ts-header nav a,
  .ts-menu-open .ts-header nav button { opacity: 1; transform: none; }
  .ts-menu-open .ts-header nav a:nth-child(1) { transition-delay: 0.08s; }
  .ts-menu-open .ts-header nav a:nth-child(2) { transition-delay: 0.13s; }
  .ts-menu-open .ts-header nav button { transition-delay: 0.18s; }
  .ts-menu-open .ts-header > .ts-brand,
  .ts-menu-open .ts-header-actions { position: relative; z-index: 21; }
  .ts-policy-grid { grid-template-columns: 1fr; }
  .ts-policy-grid article { min-height: 250px; }
  .ts-policy-grid h3 { margin-top: 35px; }
}

@media (max-width: 680px) {
  .ts-experience .ts-hero-facts { margin-top: 12px; font-size: 8px; line-height: 1.55; }
  
  
  .ts-experience .ts-filter-row { border-radius: 18px; }
  .ts-experience .ts-filter-row > label { margin-left: 2px; }
  .ts-property.is-unavailable .ts-property-visual::after { right: 16px; bottom: 16px; }
  .ts-date-grid { grid-template-columns: 1fr; }
  .ts-booking-form input,
  .ts-booking-form select { min-height: 44px; font-size: 16px; }
  .ts-booking-drawer { height: 100dvh; padding-bottom: max(36px, env(safe-area-inset-bottom)); overscroll-behavior: contain; }
  .ts-mobile-book { bottom: max(12px, env(safe-area-inset-bottom)); }
  .ts-lightbox { padding: 10px; }
  .ts-lightbox img { width: 94vw; height: 82vh; }
  .ts-lightbox .ts-lightbox-prev { left: 10px; }
  .ts-lightbox .ts-lightbox-next { right: 10px; }
  .ts-lightbox .ts-lightbox-close { top: 14px; right: 14px; }
  .ts-lightbox-counter { right: 16px; bottom: 14px; }
  .ts-experience .ts-guest-calendar { padding: 12px 8px; }
  .ts-experience .ts-guest-calendar-days button { min-height: 48px; }
  .ts-experience .ts-gallery-count { right: 9px; bottom: 9px; }
}

/* 4.1 readability pass. Editorial microtype remains refined, but essential
   copy, facts and controls now meet a comfortable phone and laptop size. */
.ts-experience { font-size: 18px; line-height: 1.65; }
.ts-experience .ts-kicker,
.ts-experience .ts-place,
.ts-experience .ts-amenities-label,
.ts-experience .ts-hero-content > p,
.ts-experience .ts-hero-facts,
.ts-experience .ts-hero-foot { font-size: 12px; line-height: 1.5; }
.ts-experience .ts-header nav a,
.ts-experience .ts-header nav button,
.ts-experience .ts-languages button { font-size: 11px; }
.ts-experience .ts-manifesto > div > p,
.ts-experience .ts-collection-intro > p,
.ts-experience .ts-host-copy > p:not(.ts-kicker) { font-size: 17px; line-height: 1.8; }
.ts-experience .ts-benefit-grid p,
.ts-experience .ts-voice-grid p,
.ts-experience .ts-faq details > p,
.ts-experience .ts-policy-grid p { font-size: 15px; line-height: 1.75; }
.ts-experience .ts-meta { font-size: 13px; }
.ts-experience .ts-summary { font-size: 17px; line-height: 1.75; }
.ts-experience .ts-story { font-size: 15px; line-height: 1.75; }
.ts-experience .ts-feature-list li,
.ts-experience .ts-pet-line,
.ts-experience .ts-live-price-note,
.ts-experience .ts-rating,
.ts-experience .ts-note { font-size: 14px; line-height: 1.6; }
.ts-experience .ts-live-price-note { margin: 20px 0 0; color: var(--ts-soft); font-style: italic; }
.ts-experience .ts-book-button,
.ts-experience .ts-payment-button {
  min-height: 54px;
  padding: 16px 24px;
  color: #fff !important;
  background: var(--ts-ink) !important;
  -webkit-text-fill-color: #fff;
  font-size: 13px;
  line-height: 1.25;
}
.ts-experience .ts-book-button *,
.ts-experience .ts-payment-button * { color: inherit !important; -webkit-text-fill-color: inherit; }
.ts-experience .ts-booking-drawer > p:not(.ts-kicker),
.ts-experience .ts-arrival-times,
.ts-experience .ts-price-box > small { font-size: 14px; }
.ts-experience .ts-booking-form label > span,
.ts-experience .ts-booking-form legend,
.ts-experience .ts-price-box > span { font-size: 11px; }
.ts-experience .ts-price-lines div,
.ts-experience .ts-price-total { font-size: 14px; }
.ts-experience .ts-property-copy h3 a { text-decoration: none; }
.ts-experience .ts-property-copy h3 a:hover { color: var(--ts-rust); }
.ts-experience .ts-home-intro { padding-top: clamp(88px,9vw,140px); }
.ts-experience .ts-home-intro > div { min-width: 0; }
.ts-experience .ts-home-intro h2 { max-width: 930px; }

@media (max-width: 680px) {
  .ts-experience { font-size: 17px; }
  .ts-experience .ts-hero-copy p { font-size: 17px; line-height: 1.65; }
  .ts-experience .ts-property-copy { padding-right: 24px; padding-left: 24px; }
  .ts-experience .ts-summary { font-size: 17px; }
  .ts-experience .ts-story,
  .ts-experience .ts-benefit-grid p,
  .ts-experience .ts-voice-grid p,
  .ts-experience .ts-faq details > p,
  .ts-experience .ts-policy-grid p { font-size: 16px; }
  .ts-experience .ts-feature-list li,
  .ts-experience .ts-pet-line,
  .ts-experience .ts-live-price-note,
  .ts-experience .ts-rating,
  .ts-experience .ts-note { font-size: 15px; }
  .ts-experience .ts-mobile-book span { font-size: 12px; }
  .ts-experience .ts-mobile-book strong { font-size: 15px; }
}

@media (prefers-reduced-motion: reduce) {
  .ts-price-box.is-calculating::after { animation: none !important; }
}

@media (prefers-reduced-motion: reduce) {
  .ts-experience *,
  .ts-experience *::before,
  .ts-experience *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; }
}

/* Professional Suite 4.0 */
.ts-experience .ts-de,
.ts-experience .ts-fr { display: none; }
.ts-experience.ts-lang-de .ts-en,
.ts-experience.ts-lang-de .ts-it,
.ts-experience.ts-lang-de .ts-fr,
.ts-experience.ts-lang-fr .ts-en,
.ts-experience.ts-lang-fr .ts-it,
.ts-experience.ts-lang-fr .ts-de { display: none !important; }
.ts-experience.ts-lang-de .ts-de,
.ts-experience.ts-lang-fr .ts-fr { display: initial; }
.ts-experience.ts-lang-de p.ts-de,
.ts-experience.ts-lang-de div.ts-de,
.ts-experience.ts-lang-de ul.ts-de,
.ts-experience.ts-lang-fr p.ts-fr,
.ts-experience.ts-lang-fr div.ts-fr,
.ts-experience.ts-lang-fr ul.ts-fr { display: block; }












.ts-property.is-search-unavailable { opacity: .88; }

.ts-video-tour-link { display: inline-flex; width: max-content; align-items: center; margin-top: 20px; padding-bottom: 4px; border-bottom: 1px solid currentColor; font-size: 10px; font-weight: 750; letter-spacing: .08em; text-transform: uppercase; }
.ts-video-tour-link:hover { color: var(--ts-rust); }
.ts-properties > .ts-manifesto,
.ts-properties > .ts-benefits { box-sizing: border-box; border-bottom: 1px solid var(--ts-line); background: var(--ts-paper); }

.ts-booking-extras { margin: 14px 0; padding: 15px; border: 1px solid var(--ts-line); border-radius: 12px; }
.ts-booking-extras > span { display: block; margin-bottom: 9px; font-size: 10px; font-weight: 750; letter-spacing: .1em; text-transform: uppercase; }
.ts-booking-extras [data-ts-extra-options] { display: grid; gap: 8px; }
.ts-booking-extras label { display: flex; align-items: flex-start; gap: 9px; cursor: pointer; }
.ts-booking-extras input { flex: none; min-height: auto; margin-top: 2px; }
.ts-promo-field { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 8px; margin: 12px 0; }
.ts-promo-field button { min-height: 45px; padding: 0 16px; border-radius: 9px; color: #fff; background: var(--ts-forest); cursor: pointer; }
.ts-weather-card { margin: 12px 0; padding: 12px 14px; border-left: 3px solid var(--ts-rust); color: var(--ts-soft); background: #efe9dd; font-size: 10px; line-height: 1.6; }
.ts-price-box.is-calculating { position: relative; cursor: wait; opacity: .76; }
.ts-price-box.is-calculating::after { position: absolute; inset: 0; content: ""; border-radius: inherit; background: linear-gradient(100deg,transparent 20%,rgba(255,255,255,.38) 45%,transparent 70%); background-size: 200% 100%; animation: ts-suite-loading 1.1s linear infinite; pointer-events: none; }
.ts-deposit-note { display: block; margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--ts-line); line-height: 1.55; }
@keyframes ts-suite-loading { to { background-position: -200% 0; } }

.ts-system-page.ts-portal { width: min(1100px,calc(100% - 32px)); }
.ts-portal-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; margin: 24px 0; }
.ts-portal-grid section,
.ts-portal-form { padding: 22px; border: 1px solid #d8d4cb; border-radius: 14px; background: #fff; }
.ts-portal-grid h2,
.ts-portal-form h2 { font: 400 25px var(--ts-font-heading, Georgia, serif); }
.ts-portal-actions { display: flex; flex-wrap: wrap; gap: 9px; margin: 20px 0; }
.ts-portal-form form,
.ts-gift-form { display: grid; gap: 12px; }
.ts-portal-form label,
.ts-gift-form label { display: grid; gap: 6px; font-size: 10px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.ts-portal-form input,.ts-portal-form textarea,.ts-portal-form select,
.ts-gift-form input,.ts-gift-form textarea { box-sizing: border-box; width: 100%; min-height: 46px; padding: 10px; border: 1px solid #cfcac0; border-radius: 7px; font: 400 16px/1.4 Arial,sans-serif; text-transform: none; }
.ts-portal-form textarea,.ts-gift-form textarea { min-height: 100px; }

@media (max-width: 950px) {
  
  
  .ts-languages { gap: 3px !important; }
  .ts-languages button { padding: 4px !important; }
}
@media (max-width: 680px) {
  
  
  
  .ts-portal-grid { grid-template-columns: 1fr; }
  .ts-promo-field { grid-template-columns: 1fr; }
}

/* This final block intentionally comes after every Professional Suite rule so
   later transition shorthands cannot override the visitor's motion setting. */
@media (prefers-reduced-motion: reduce) {
  .ts-experience,
  .ts-experience *,
  .ts-experience *::before,
  .ts-experience *::after,
  .ts-system-page,
  .ts-system-page *,
  .ts-system-page *::before,
  .ts-system-page *::after {
    scroll-behavior: auto !important;
    transition: none !important;
    animation: none !important;
  }
}

/* Final cascade guard for suite controls and the primary booking action. */
.ts-experience .ts-filter-row,
.ts-experience .ts-booking-extras > span,
.ts-experience .ts-weather-card{ font-size: 12px; line-height: 1.5; }
.ts-experience .ts-promo-field input,
.ts-experience .ts-promo-field button{ font-size: 15px; }
.ts-experience .ts-book-button,
.ts-experience .ts-payment-button {
  color: #fff !important;
  background-color: #151a17 !important;
  -webkit-text-fill-color: #fff !important;
}
.ts-experience .ts-book-button > *,
.ts-experience .ts-payment-button > * { color: #fff !important; -webkit-text-fill-color: #fff !important; }

/* v7.2.0 · premium, readable post-payment confirmation */
.ts-system-page.ts-confirmation-page {
  width: min(1080px,calc(100% - 32px));
  margin: clamp(18px,4vh,52px) auto;
  padding: 0;
  overflow: hidden;
  border: 1px solid #d8d2c7;
  border-radius: 24px;
  background: #fffdf8;
  box-shadow: 0 24px 70px rgba(21,26,23,.11);
}
.ts-confirmation-hero {
  display: grid;
  grid-template-columns: 1.08fr .92fr;
  min-height: 420px;
  background: #1f3128;
  color: #fff;
}
.ts-confirmation-hero-copy {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(38px,6vw,72px);
}
.ts-confirmation-hero .ts-system-mark {
  width: 52px;
  height: 52px;
  margin-bottom: 34px;
  border-color: rgba(255,255,255,.55);
  color: #fff;
  font: 400 22px/1 Arial,sans-serif;
}
.ts-confirmation-kicker {
  margin: 0 0 12px !important;
  color: #a85436 !important;
  font: 750 11px/1.4 Arial,sans-serif !important;
  letter-spacing: .15em;
  text-transform: uppercase;
}
.ts-confirmation-hero .ts-confirmation-kicker { color: #e3c39a !important; }
.ts-confirmation-hero h1 {
  max-width: 600px;
  margin: 0 0 22px;
  color: #fff;
  font-size: clamp(48px,6vw,76px);
}
.ts-confirmation-hero p:last-child {
  max-width: 520px;
  margin: 0;
  color: rgba(255,255,255,.72);
  font-size: 17px;
}
.ts-confirmation-image { min-height: 420px; overflow: hidden; }
.ts-confirmation-image img {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 420px;
  object-fit: cover;
}
.ts-confirmation-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
  padding: clamp(24px,4vw,48px);
  background: #f4f1ea;
}
.ts-confirmation-card {
  padding: clamp(24px,3.4vw,38px);
  border: 1px solid #d8d2c7;
  border-radius: 18px;
  background: #fffdf8;
}
.ts-confirmation-card h2,
.ts-confirmation-next h2 {
  margin: 0 0 20px;
  color: #151a17;
  font: 400 clamp(28px,3vw,38px)/1.08 var(--ts-font-heading, Georgia, serif);
  letter-spacing: -.035em;
}
.ts-confirmation-card dl { margin: 0; }
.ts-confirmation-card dl > div {
  display: grid;
  grid-template-columns: minmax(100px,.62fr) minmax(0,1fr);
  gap: 16px;
  padding: 12px 0;
  border-bottom: 1px solid #e1ddd4;
}
.ts-confirmation-card dl > div:last-child { border-bottom: 0; }
.ts-confirmation-card dt {
  color: #666c66;
  font: 700 12px/1.5 Arial,sans-serif;
}
.ts-confirmation-card dd {
  margin: 0;
  color: #151a17;
  font: 500 14px/1.5 Arial,sans-serif;
  text-align: right;
}
.ts-confirmation-price dl > div:last-child {
  margin-top: 6px;
  padding-top: 18px;
  border-top: 2px solid #1f3128;
  font-weight: 800;
}
.ts-confirmation-price dl > div:last-child dd {
  font: 400 24px/1.2 var(--ts-font-heading, Georgia, serif);
}
.ts-confirmation-paid-note {
  margin: 18px 0 0 !important;
  color: #666c66 !important;
  font-size: 13px;
}
.ts-confirmation-next {
  display: grid;
  grid-template-columns: minmax(0,1fr) minmax(280px,.72fr);
  gap: 34px;
  align-items: center;
  padding: clamp(36px,5vw,60px);
  border-top: 1px solid #d8d2c7;
}
.ts-confirmation-next > div > p:not(.ts-confirmation-kicker) {
  margin: 0;
  max-width: 600px;
  font-size: 15px;
}
.ts-confirmation-actions {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 9px;
}
.ts-confirmation-actions .ts-system-button {
  justify-content: center;
  margin: 0;
  border-radius: 999px;
  text-align: center;
}
.ts-confirmation-help {
  margin: 0 !important;
  padding: 20px clamp(36px,5vw,60px) 28px;
  border-top: 1px solid #d8d2c7;
  color: #666c66 !important;
  background: #f4f1ea;
  font-size: 13px;
  text-align: center;
}
@media (max-width: 760px) {
  .ts-system-page.ts-confirmation-page { width: calc(100% - 20px); border-radius: 18px; }
  .ts-confirmation-hero { grid-template-columns: 1fr; min-height: 0; }
  .ts-confirmation-hero-copy { padding: 38px 24px; }
  .ts-confirmation-hero .ts-system-mark { margin-bottom: 26px; }
  .ts-confirmation-hero h1 { font-size: clamp(44px,14vw,62px); }
  .ts-confirmation-image,
  .ts-confirmation-image img { min-height: 240px; height: 240px; }
  .ts-confirmation-grid { grid-template-columns: 1fr; padding: 14px; }
  .ts-confirmation-card { padding: 24px 20px; border-radius: 15px; }
  .ts-confirmation-card dl > div { grid-template-columns: minmax(88px,.52fr) minmax(0,1fr); }
  .ts-confirmation-next { grid-template-columns: 1fr; padding: 34px 22px; }
  .ts-confirmation-help { padding: 18px 22px 24px; }
}

/* Conversion-focused card actions and contact controls. */
.ts-experience .ts-property-main { display: block; }
.ts-experience .ts-property-main:focus-visible,
.ts-experience .ts-property-second:focus-visible { outline: 3px solid #fff; outline-offset: 4px; }
.ts-experience .ts-property-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 18px; margin-top: 26px; }
.ts-experience .ts-property-actions .ts-book-button { margin: 0; min-height: 48px; }
.ts-experience .ts-property-details,
.ts-experience .ts-property-contact,
.ts-experience .ts-booking-contact{ display: inline-flex; min-height: 44px; align-items: center; border-bottom: 1px solid currentColor; font-size: 12px; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; transition: color .2s ease, transform .2s ease; }
.ts-experience .ts-property-contact,
.ts-experience .ts-booking-contact { color: var(--ts-rust); }
.ts-experience .ts-property-details:hover,
.ts-experience .ts-property-contact:hover,
.ts-experience .ts-booking-contact:hover{ transform: translateY(-2px); }



.ts-experience .ts-booking-contact { width: max-content; max-width: 100%; margin: 8px 0 4px; }
.ts-experience .ts-promo-disclosure { margin: 18px 0 0; padding: 0; border-bottom: 1px solid var(--ts-line); }
.ts-experience .ts-promo-disclosure > summary { min-height: 44px; cursor: pointer; color: var(--ts-soft); font-size: 13px; font-weight: 700; }
.ts-experience .ts-final > div { display: flex; align-items: center; flex-direction: column; gap: 24px; }
.ts-experience .ts-final > div > a { display: inline-flex; min-height: 48px; align-items: center; padding: 0 24px; border: 1px solid rgba(255,255,255,.7); border-radius: 999px; color: #fff; font-size: 13px; font-weight: 750; letter-spacing: .08em; text-transform: uppercase; }
.ts-experience .ts-mobile-actions { display: none; }

@media (hover:hover) {
  .ts-experience .ts-property { transition: box-shadow .3s ease, transform .3s ease; }
  .ts-experience .ts-property:hover { box-shadow: 0 28px 70px rgba(21,26,23,.08); }
}

@media (max-width: 680px) {
  .ts-experience .ts-property-actions { display: grid; grid-template-columns: 1fr 1fr; }
  .ts-experience .ts-property-actions .ts-book-button { width: 100%; grid-column: 1/-1; }
  .ts-experience .ts-property-details,
  .ts-experience .ts-property-contact { justify-content: center; }
  .ts-experience .ts-property-main:active,
  .ts-experience .ts-property-second:active { transform: scale(.985); }
  .ts-experience .ts-final button { font-size: clamp(48px,15vw,72px); }
}

/* Branded standalone pages and complete property listings. */
body.ts-branded-page { margin: 0; color: #151a17; background: #f4f1ea; font: 17px/1.7 var(--ts-font-body, "Helvetica Neue", Arial, sans-serif); }
.ts-marketing-page { width: min(1320px,calc(100% - 48px)); margin: 0 auto; padding: clamp(80px,10vw,150px) 0; }
.ts-marketing-page > header { max-width: 980px; margin-bottom: 75px; }
.ts-marketing-page > header > p,.ts-marketing-property-grid > article > p { color: #9f5034; font-size: 12px; font-weight: 750; letter-spacing: .13em; text-transform: uppercase; }
.ts-marketing-page > header h1 { margin: 18px 0 25px; font: 400 clamp(62px,9vw,125px)/.88 var(--ts-font-heading, Georgia, serif); letter-spacing: -.07em; }
.ts-marketing-page > header > span { display: block; max-width: 720px; color: #596159; font-size: 19px; line-height: 1.75; }
.ts-marketing-page a.primary { display: inline-flex; min-height: 50px; align-items: center; margin-top: 24px; padding: 0 22px; border-radius: 999px; color: #fff; background: #151a17; font-size: 12px; font-weight: 750; text-decoration: none; text-transform: uppercase; }
.ts-marketing-property-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 70px 30px; }
.ts-marketing-property-grid article img { width: 100%; aspect-ratio: 4/3; object-fit: cover; transition: transform .5s ease; }
.ts-marketing-property-grid article > a { display: block; overflow: hidden; }
.ts-marketing-property-grid article > a:hover img { transform: scale(1.025); }
.ts-marketing-property-grid h2 { margin: 7px 0 14px; font: 400 clamp(38px,4vw,60px)/.95 var(--ts-font-heading, Georgia, serif); letter-spacing: -.05em; }
.ts-marketing-property-grid article > span { color: #596159; }
.ts-marketing-property-grid article > div { display: flex; align-items: center; gap: 20px; margin-top: 18px; }
.ts-marketing-property-grid article > div a:not(.primary) { font-size: 13px; font-weight: 700; text-decoration: underline; text-underline-offset: 5px; }
.ts-marketing-faq { border-top: 1px solid rgba(21,26,23,.18); }
.ts-marketing-faq details { border-bottom: 1px solid rgba(21,26,23,.18); }
.ts-marketing-faq summary { padding: 28px 0; cursor: pointer; font: 400 clamp(25px,3vw,38px) var(--ts-font-heading, Georgia, serif); }
.ts-marketing-faq p { max-width: 850px; color: #596159; }
.ts-marketing-book-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1px; background: rgba(21,26,23,.16); }
.ts-marketing-book-grid a { display: grid; gap: 10px; min-height: 220px; align-content: center; padding: 35px; background: #fffdf8; text-decoration: none; transition: color .3s ease,background .3s ease; }
.ts-marketing-book-grid a:hover { color: #fff; background: #1f3128; }
.ts-marketing-book-grid span,.ts-marketing-book-grid i { font-size: 12px; font-style: normal; text-transform: uppercase; }
.ts-marketing-book-grid strong { font: 400 38px var(--ts-font-heading, Georgia, serif); }
@media(max-width:680px){.ts-marketing-page{width:calc(100% - 32px);padding:70px 0}.ts-marketing-page>header{margin-bottom:50px}.ts-marketing-page>header>span{font-size:17px}.ts-marketing-property-grid,.ts-marketing-book-grid{grid-template-columns:1fr}.ts-marketing-property-grid{gap:55px}.ts-marketing-property-grid article>div{align-items:flex-start;flex-direction:column;gap:8px}.ts-marketing-book-grid a{min-height:180px;padding:25px}}
body.ts-branded-page #wpadminbar { position: fixed; }
.ts-standalone-skip { position: fixed; z-index: 100000; top: 8px; left: 8px; padding: 10px 14px; color: #fff; background: #151a17; transform: translateY(-150%); }
.ts-standalone-skip:focus { transform: none; }
.ts-standalone-header { position: relative; z-index: 100; display: flex; min-height: 84px; align-items: center; justify-content: space-between; gap: 24px; padding: 0 clamp(20px,4vw,64px); border-bottom: 1px solid rgba(21,26,23,.14); background: rgba(244,241,234,.96); }
.ts-standalone-brand { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 12px; color: inherit; text-decoration: none; font: 22px var(--ts-font-heading, Georgia, serif); white-space: nowrap; }
.ts-standalone-brand i { display: grid; width: 42px; height: 42px; place-items: center; border: 1px solid; border-radius: 50%; font-size: 12px; }
.ts-standalone-header nav { display: flex; align-items: center; gap: clamp(16px,3vw,38px); }
.ts-standalone-header nav a { color: inherit; text-decoration: none; font-size: 13px; font-weight: 700; white-space: nowrap; }
.ts-standalone-header .ts-standalone-book { padding: 12px 18px; border-radius: 999px; color: #fff; background: #151a17; }
.ts-standalone-footer { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; padding: 80px clamp(20px,4vw,64px) 28px; color: #fff; background: #151a17; }
.ts-standalone-footer > a { color: inherit; text-decoration: none; font: 30px var(--ts-font-heading, Georgia, serif); }
.ts-standalone-footer p { justify-self: end; margin: 0; }
.ts-standalone-footer small { grid-column: 1/-1; padding-top: 24px; border-top: 1px solid rgba(255,255,255,.16); color: rgba(255,255,255,.68); }
.ts-listing { overflow: visible; color: #151a17; background: #f4f1ea; font-size: 17px; line-height: 1.72; }
.ts-listing a { color: inherit; }
.ts-listing-breadcrumb { display: flex; gap: 10px; width: min(1480px,calc(100% - 48px)); margin: 0 auto; padding: 24px 0; color: #626961; font-size: 13px; }
.ts-listing-hero { display: grid; min-height: 680px; grid-template-columns: .82fr 1.18fr; background: #e9e2d6; }
.ts-listing-hero-copy { display: flex; flex-direction: column; justify-content: center; padding: clamp(50px,7vw,110px); }
.ts-listing-hero-copy > p,.ts-listing-kicker { margin: 0; color: #9f5034; font-size: 12px; font-weight: 800; letter-spacing: .15em; text-transform: uppercase; }
.ts-listing-hero h1 { margin: 18px 0; font: 400 clamp(62px,7vw,112px)/.88 var(--ts-font-heading, Georgia, serif); letter-spacing: -.065em; }
.ts-listing-hero em { color: #5d655f; font: italic clamp(23px,2.5vw,36px)/1.25 var(--ts-font-heading, Georgia, serif); }
.ts-listing-facts { display: flex; flex-wrap: wrap; gap: 9px 18px; margin-top: 30px; color: #59615b; font-size: 15px; }
.ts-listing-facts span + span::before { margin-right: 18px; color: #9f5034; content: "·"; }
.ts-listing-actions,.ts-listing-final > div { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 32px; }
.ts-listing-actions a,.ts-listing-actions button,.ts-listing-final a,.ts-listing-final button,.ts-listing-booking > a,.ts-listing-host > a { display: inline-flex; min-height: 50px; align-items: center; justify-content: center; padding: 12px 20px; border: 1px solid #151a17; border-radius: 999px; color: inherit; background: transparent; cursor: pointer; text-decoration: none; font-size: 14px; font-weight: 750; transition: transform .2s ease,background .2s ease,color .2s ease; }
.ts-listing-actions a.primary,.ts-listing-actions button.primary,.ts-listing-final a.primary,.ts-listing-final button.primary,.ts-listing-booking > a.primary { color: #fff; background: #151a17; }
.ts-listing-actions a:hover,.ts-listing-actions button:hover,.ts-listing-final a:hover,.ts-listing-final button:hover { transform: translateY(-2px); }
.ts-listing-rating { margin: 18px 0 0; color: #9f5034; font-size: 14px; font-weight: 700; }
.ts-listing-rating a { color: inherit; text-decoration: none; }
.ts-listing-rating small { display: block; margin-top: 4px; color: #687069; font-size: 11px; font-weight: 400; letter-spacing: .04em; }
.ts-listing-main-image { position: relative; min-height: 680px; padding: 0; overflow: hidden; border: 0; background: #ddd; cursor: zoom-in; }
.ts-listing-main-image img { width: 100%; height: 100%; object-fit: cover; transition: transform .55s cubic-bezier(.16,1,.3,1); }
.ts-listing-main-image:hover img { transform: scale(1.025); }
.ts-listing-main-image span { position: absolute; right: 22px; bottom: 22px; padding: 10px 14px; border-radius: 999px; color: #fff; background: rgba(15,20,17,.78); font-size: 13px; }
.ts-listing-gallery { display: grid; grid-template-columns: repeat(4,1fr); gap: 8px; padding: 8px; }
.ts-listing-gallery button { aspect-ratio: 4/3; padding: 0; overflow: hidden; border: 0; background: #ddd; cursor: zoom-in; }
.ts-listing-gallery img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.ts-listing-gallery button:hover img { transform: scale(1.035); }

.ts-listing-content > section { padding: 0 0 78px; border-bottom: 1px solid rgba(21,26,23,.14); }
.ts-listing-content > section + section { padding-top: 78px; }
.ts-listing-content h2,.ts-listing-related h2,.ts-listing-final h2 { max-width: 820px; margin: 18px 0 28px; font: 400 clamp(42px,5vw,74px)/.98 var(--ts-font-heading, Georgia, serif); letter-spacing: -.055em; }
.ts-listing-content h3 { font: 400 28px var(--ts-font-heading, Georgia, serif); }
.ts-listing-lead { font-size: 22px; line-height: 1.65; }
.ts-listing-content p,.ts-listing-content li { font-size: 17px; line-height: 1.72; }
.ts-listing-content section > div:not(.ts-listing-info-cards):not(.ts-listing-reviews) { color: #505851; }
.ts-listing-info-cards { display: grid; grid-template-columns: repeat(3,1fr); gap: 1px; margin-top: 34px; background: rgba(21,26,23,.16); }
.ts-listing-info-cards article { min-height: 150px; padding: 25px; background: #fffdf8; }
.ts-listing-info-cards strong { display: block; font: 400 27px var(--ts-font-heading, Georgia, serif); }
.ts-listing-info-cards span { display: block; margin-top: 28px; color: #687069; font-size: 13px; }
.ts-listing-amenities,.ts-listing-rules { display: grid; grid-template-columns: repeat(2,1fr); gap: 14px 28px; margin: 0; padding: 26px 0; border-top: 1px solid rgba(21,26,23,.14); list-style: none; }
.ts-listing-amenities i { margin-right: 10px; color: #9f5034; font-style: normal; }
.ts-listing-all-amenities { border-top: 1px solid rgba(21,26,23,.14); border-bottom: 1px solid rgba(21,26,23,.14); }
.ts-listing-all-amenities summary { display: flex; min-height: 68px; align-items: center; justify-content: space-between; gap: 20px; cursor: pointer; list-style: none; font-weight: 750; }
.ts-listing-all-amenities summary::-webkit-details-marker { display: none; }
.ts-listing-all-amenities summary span { font-size: 26px; font-weight: 400; transition: transform .25s ease; }
.ts-listing-all-amenities[open] summary span { transform: rotate(45deg); }
.ts-listing-amenity-groups { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1px; padding-bottom: 24px; background: rgba(21,26,23,.13); }
.ts-listing-amenity-groups article { padding: 24px; color: #151a17; background: #fffdf8; }
.ts-listing-amenity-groups h3 { margin: 0 0 15px; font-size: 23px; }
.ts-listing-amenity-groups ul { display: grid; gap: 9px; margin: 0; padding: 0; list-style: none; }
.ts-listing-amenity-groups li::before { margin-right: 9px; color: #9f5034; content: "✓"; }
.ts-listing-detail { padding: 24px 0; border-top: 1px solid rgba(21,26,23,.14); }
.ts-listing-detail p{ font-size: 17px; }
.ts-listing-address-note { margin-top: 24px; padding: 16px 18px; border-left: 3px solid #9f5034; color: #505851; background: #fffdf8; }


.ts-listing-reviews { display: grid; gap: 14px; }
.ts-listing-reviews blockquote { margin: 0; padding: 28px; background: #fffdf8; }
.ts-listing-reviews blockquote > span { color: #9f5034; }
.ts-listing-reviews cite { color: #687069; font-size: 13px; }
.ts-listing-host { padding-right: clamp(24px,4vw,60px) !important; padding-left: clamp(24px,4vw,60px) !important; color: #fff; background: #1f3128; }
.ts-listing-host .ts-listing-kicker { color: #d9bd8f; }
.ts-listing-host h2,.ts-listing-host p { color: #fff; }
.ts-listing-host > a { border-color: #fff; color: #fff; }
.ts-contact-response { color: rgba(255,255,255,.74) !important; font-size: 14px; }
.ts-listing-term-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1px; background: rgba(21,26,23,.15); }
.ts-listing-term-grid article { padding: 24px; color: #151a17; background: #fffdf8; }
.ts-listing-term-grid h3 { margin: 0 0 14px; font-size: 23px; }
.ts-listing-term-grid p { margin: 0; }
.ts-listing-booking { position: sticky; top: 110px; height: max-content; padding: 30px; border: 1px solid rgba(21,26,23,.16); background: #fffdf8; box-shadow: 0 22px 60px rgba(21,26,23,.1); }
.ts-listing-booking > p { margin: 0; color: #9f5034; font-size: 12px; font-weight: 800; letter-spacing: .13em; text-transform: uppercase; }
.ts-listing-booking h2 { font: 400 37px/1.05 var(--ts-font-heading, Georgia, serif); }
.ts-listing-booking ul { padding-left: 20px; color: #505851; font-size: 14px; }
.ts-listing-booking > a { width: 100%; box-sizing: border-box; margin-top: 9px; }
.ts-listing-booking small { display: block; margin-top: 20px; color: #687069; line-height: 1.55; }
.ts-listing .ts-booking-inline { position: sticky; z-index: 2; top: 102px; width: 100%; height: max-content; padding: 0; background: transparent; opacity: 1; pointer-events: auto; }
.ts-listing .ts-booking-inline .ts-booking-drawer { position: relative; width: 100%; height: auto; max-height: calc(100vh - 122px); padding: 30px; overflow: auto; background: #fffdf8; transform: none; transition: none; overscroll-behavior: contain; }
.ts-listing .ts-listing-booking-panel { border: 1px solid rgba(21,26,23,.16); box-shadow: 0 22px 60px rgba(21,26,23,.1); }
.ts-listing .ts-listing-booking-panel h2 { margin: 14px 0 15px; font-size: 37px; }
.ts-listing .ts-listing-booking-panel .ts-booking-contact { display: block; margin: 16px 0; font-size: 14px; font-weight: 750; text-decoration: underline; text-underline-offset: 5px; }
.ts-listing .ts-listing-booking-panel .ts-payment-button { min-height: 58px; }
.ts-listing-related { padding: 100px max(24px,calc((100% - 1320px)/2)); background: #ebe3d5; }
.ts-listing-related > div { display: grid; grid-template-columns: repeat(3,1fr); gap: 18px; }
.ts-listing-related article img { width: 100%; aspect-ratio: 4/3; object-fit: cover; }
.ts-listing-related article p { margin: 15px 0 5px; color: #9f5034; font-size: 12px; font-weight: 750; text-transform: uppercase; }
.ts-listing-related h3 { margin: 0; font: 400 29px var(--ts-font-heading, Georgia, serif); }
.ts-listing-final { display: flex; min-height: 520px; flex-direction: column; align-items: center; justify-content: center; padding: 80px 24px; color: #fff; background: #9f5034; text-align: center; }
.ts-listing-final > p { font-size: 13px; letter-spacing: .14em; text-transform: uppercase; }
.ts-listing-final h2 { color: #fff; }
.ts-listing-final a { border-color: #fff; color: #fff; }
.ts-listing-final a.primary { color: #151a17; background: #fff; }
.ts-listing-lightbox { position: fixed; z-index: 100000; inset: 0; display: grid; place-items: center; padding: 50px; color: #fff; background: rgba(8,12,9,.96); }
.ts-listing-lightbox[hidden] { display: none; }
.ts-listing-lightbox img { max-width: min(1200px,88vw); max-height: 82vh; object-fit: contain; }
.ts-listing-lightbox button { position: absolute; display: grid; width: 48px; height: 48px; place-items: center; border: 1px solid rgba(255,255,255,.45); border-radius: 50%; color: #fff; background: rgba(0,0,0,.28); cursor: pointer; font-size: 28px; }
.ts-listing-lightbox [data-ts-listing-close] { top: 20px; right: 20px; }
.ts-listing-lightbox [data-ts-listing-prev] { left: 20px; }
.ts-listing-lightbox [data-ts-listing-next] { right: 20px; }
.ts-listing-lightbox span { position: absolute; bottom: 18px; }
body.ts-gallery-open { overflow: hidden; }
.ts-branded-page :focus-visible,.ts-listing :focus-visible { outline: 3px solid #d48159 !important; outline-offset: 4px; }
@media (max-width: 900px) {
  .ts-listing-hero { grid-template-columns: 1fr; }
  .ts-listing-main-image { min-height: 620px; grid-row: 1; }
  .ts-listing-hero-copy { grid-row: 2; }
  
  .ts-listing-booking,.ts-listing .ts-booking-inline { position: static; }
  .ts-listing .ts-booking-inline .ts-booking-drawer { max-height: none; overflow: visible; }
  .ts-listing-term-grid { grid-template-columns: 1fr; }
}
@media (max-width: 680px) {
  .ts-standalone-header { min-height: 70px; padding: 0 16px; }
  /* :not(.ts-standalone-languages) — the language switcher is also a <nav>;
     without this its EN/IT/DE/FR links were hidden while the "/" separators
     stayed, leaving "/ / /" on mobile. */
  .ts-standalone-header nav:not(.ts-standalone-languages) a:not(.ts-standalone-book) { display: none; }
  .ts-standalone-header .ts-standalone-book { padding: 10px 13px; font-size: 12px; }
  .ts-standalone-brand span { display: none; }
  .ts-standalone-footer { grid-template-columns: 1fr; padding-bottom: calc(28px + env(safe-area-inset-bottom)); }
  .ts-standalone-footer p { justify-self: start; }
  .ts-standalone-footer small { grid-column: auto; }
  .ts-listing-breadcrumb { width: calc(100% - 32px); }
  .ts-listing-main-image { min-height: 480px; }
  .ts-listing-hero-copy { padding: 55px 20px 65px; }
  .ts-listing-hero h1 { font-size: clamp(54px,16vw,78px); }
  .ts-listing-gallery { grid-template-columns: repeat(2,1fr); }
  
  .ts-listing-content > section { padding-bottom: 60px; }
  .ts-listing-content > section + section { padding-top: 60px; }
  .ts-listing-info-cards,.ts-listing-amenities,.ts-listing-rules { grid-template-columns: 1fr; }
  .ts-listing-amenity-groups { grid-template-columns: 1fr; }
  .ts-listing .ts-booking-inline .ts-booking-drawer { padding: 24px 18px calc(28px + env(safe-area-inset-bottom)); }
  .ts-listing .ts-listing-booking-panel h2 { font-size: 34px; }
  .ts-listing-related { padding: 70px 16px; }
  .ts-listing-related > div { grid-template-columns: 1fr; }
  .ts-listing-lightbox { padding: 18px; }
  .ts-listing-lightbox [data-ts-listing-prev] { left: 8px; }
  .ts-listing-lightbox [data-ts-listing-next] { right: 8px; }
}
@media (prefers-reduced-motion: reduce) {
  .ts-listing *, .ts-standalone-header * { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}

/* 5.7: all four languages use the same display contract. This override also
   fixes older Elementor-generated CSS that only knew about English/Italian. */
.ts-experience .ts-it,
.ts-experience .ts-de,
.ts-experience .ts-fr { display: none !important; }
.ts-experience.ts-lang-it .ts-en,
.ts-experience.ts-lang-de .ts-en,
.ts-experience.ts-lang-fr .ts-en { display: none !important; }
.ts-experience.ts-lang-it .ts-it,
.ts-experience.ts-lang-de .ts-de,
.ts-experience.ts-lang-fr .ts-fr { display: initial !important; }
.ts-experience.ts-lang-it p.ts-it,
.ts-experience.ts-lang-it div.ts-it,
.ts-experience.ts-lang-de p.ts-de,
.ts-experience.ts-lang-de div.ts-de,
.ts-experience.ts-lang-fr p.ts-fr,
.ts-experience.ts-lang-fr div.ts-fr { display: block !important; }
.ts-languages { white-space: nowrap; }
.ts-languages button { padding: 5px; }

.ts-language-switcher { display: flex; align-items: center; gap: 8px; }
.ts-language-switcher a { min-width: 36px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; color: #687069; font-size: 12px; font-weight: 750; text-decoration: none; }
.ts-language-switcher a.active { color: #151a17; text-decoration: underline; text-underline-offset: 5px; }

/* 5.7 listing navigation, sleeping details and amenity hierarchy. */
.ts-listing-topbar {
  display: flex;
  width: min(1480px,calc(100% - 48px));
  min-height: 70px;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  margin: 0 auto;
}
.ts-listing-topbar .ts-listing-breadcrumb { width: auto; min-width: 0; margin: 0; padding: 18px 0; }
.ts-listing-languages { flex: 0 0 auto; }
.ts-listing-languages a { border-radius: 999px; }
.ts-listing-languages a.active { color: #fff; background: #1f3128; text-decoration: none; }

.ts-listing-sleeping-list {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 12px;
  margin: 22px 0 0;
  padding: 0;
  list-style: none;
}
.ts-listing-sleeping-list li {
  display: flex;
  min-height: 58px;
  align-items: center;
  gap: 12px;
  padding: 13px 16px;
  border: 1px solid rgba(21,26,23,.13);
  border-radius: 12px;
  background: rgba(255,253,248,.72);
}
.ts-listing-sleeping-list li > span {
  display: grid;
  width: 29px;
  height: 29px;
  flex: 0 0 29px;
  place-items: center;
  border-radius: 50%;
  color: #fff;
  background: #9f5034;
  font-size: 14px;
}
.ts-listing-highlight-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin-top: 30px;
  padding-bottom: 12px;
  color: #151a17 !important;
  border-bottom: 1px solid rgba(21,26,23,.14);
}
.ts-listing-highlight-heading strong { font-size: 15px; letter-spacing: .04em; }
.ts-listing-highlight-heading > span {
  display: grid;
  width: 30px;
  height: 30px;
  place-items: center;
  border-radius: 50%;
  color: #fff;
  background: #1f3128;
  font-size: 12px;
  font-weight: 750;
}
.ts-listing-amenities.ts-listing-highlights {
  gap: 10px;
  padding: 14px 0 26px;
  border-top: 0;
}
.ts-listing-highlights li {
  display: flex;
  min-height: 54px;
  align-items: center;
  gap: 11px;
  padding: 11px 14px;
  border: 1px solid rgba(21,26,23,.11);
  border-radius: 12px;
  background: #fffdf8;
}
.ts-listing-highlights i {
  display: grid;
  width: 28px;
  height: 28px;
  flex: 0 0 28px;
  place-items: center;
  margin: 0;
  border-radius: 50%;
  color: #1f3128;
  background: #e5eee9;
  font-size: 13px;
}
.ts-listing-all-amenities { overflow: hidden; border: 1px solid rgba(21,26,23,.14); border-radius: 14px; background: #fffdf8; }
.ts-listing-all-amenities summary { min-height: 64px; padding: 0 18px; }
.ts-listing-all-amenities summary:hover { background: #f0ebe1; }
.ts-listing-amenity-groups { gap: 1px; padding: 1px 0 0; }
.ts-listing-amenity-groups article { min-height: 150px; }
.ts-listing-amenity-groups li { display: flex; gap: 8px; }
.ts-listing-amenity-groups li::before { flex: 0 0 auto; margin: 0; }

@media (max-width: 680px) {
  .ts-listing-topbar { width: calc(100% - 32px); gap: 10px; }
  .ts-listing-topbar .ts-listing-breadcrumb { overflow: hidden; }
  .ts-listing-topbar .ts-listing-breadcrumb span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ts-listing-languages { gap: 2px; }
  .ts-listing-languages a { min-width: 32px; min-height: 40px; font-size: 11px; }
  .ts-listing-sleeping-list,.ts-listing-amenities.ts-listing-highlights { grid-template-columns: 1fr; }
  .ts-listing-sleeping-list li,.ts-listing-highlights li { min-height: 52px; }
  .ts-listing-all-amenities summary { min-height: 58px; padding: 0 14px; font-size: 14px; }
}

/* 5.2 homepage density and alignment pass. The collection now reads like a
   compact editorial catalogue: one property fits within a normal laptop
   viewport, while complete long-form copy remains on the dedicated page. */
.ts-experience .ts-home-intro {
  grid-template-columns: minmax(0,1.2fr) minmax(300px,.7fr);
  align-items: center;
  padding: clamp(62px,6vw,92px) 0;
}
.ts-experience .ts-home-intro h2 {
  max-width: 860px;
  margin-top: 16px;
  font-size: clamp(48px,5.2vw,82px);
  line-height: .96;
}
.ts-experience .ts-home-intro > p { max-width: 500px; justify-self: end; }
.ts-experience .ts-property-copy .ts-story { display: none; }
.ts-experience .ts-property,
.ts-experience .ts-property-visual { min-height: clamp(650px,78svh,760px); }
.ts-experience .ts-property { grid-template-columns: minmax(0,1.08fr) minmax(430px,.92fr); scroll-margin-top: 24px; }
.ts-experience .ts-property.is-reverse { grid-template-columns: minmax(430px,.92fr) minmax(0,1.08fr); }
.ts-experience .ts-property-main { inset: 28px 76px 28px 28px; }
.ts-experience .ts-property.is-reverse .ts-property-main { right: 28px; left: 76px; }
.ts-experience .ts-property-second { right: 22px; bottom: 54px; width: clamp(145px,10vw,180px); border-width: 5px; }
.ts-experience .ts-property.is-reverse .ts-property-second { right: auto; left: 22px; }
.ts-experience .ts-property-copy { padding: 44px clamp(32px,4vw,64px); }
.ts-experience .ts-property-index { margin-bottom: 18px; }
.ts-experience .ts-property-copy h3 { font-size: clamp(43px,4vw,68px); }
.ts-experience .ts-summary { margin-top: 18px; }
.ts-experience .ts-amenities-label { margin-top: 16px; }
.ts-experience .ts-feature-list { margin-top: 7px; padding-top: 10px; }
.ts-experience .ts-pet-line { margin-top: 13px; }
.ts-experience .ts-live-price-note { margin-top: 13px; }
.ts-experience .ts-note { margin-top: 12px; }
.ts-experience .ts-property-actions { margin-top: 18px; }
.ts-properties > .ts-benefits { padding: clamp(68px,7vw,96px) 0; }
.ts-properties > .ts-benefits .ts-section-heading { grid-template-columns: minmax(150px,.35fr) minmax(0,1.65fr); align-items: start; }
.ts-properties > .ts-benefits .ts-section-heading h2 { max-width: 940px; font-size: clamp(48px,4.8vw,76px); line-height: .97; }
.ts-properties > .ts-benefits .ts-benefit-grid { margin-top: 46px; }
.ts-properties > .ts-benefits .ts-benefit-grid article { min-height: 205px; padding: 25px clamp(20px,2vw,32px); }
.ts-properties > .ts-benefits .ts-benefit-grid h3 { margin-top: 45px; }
.ts-properties > .ts-manifesto { padding: clamp(72px,7vw,105px) 0; }
.ts-properties > .ts-manifesto h2 { font-size: clamp(48px,4.8vw,76px); }





.ts-experience .ts-filter-row > label { gap: 12px; }
.ts-experience .ts-filter-row select { min-width: 150px; }

@media (max-width: 950px) {
  .ts-experience .ts-home-intro { grid-template-columns: 1fr; gap: 24px; }
  .ts-experience .ts-home-intro > p { justify-self: start; }
  .ts-experience .ts-property,
  .ts-experience .ts-property.is-reverse { min-height: auto; grid-template-columns: 1fr; }
  .ts-experience .ts-property-visual { min-height: 520px; }
  .ts-experience .ts-property-copy { padding: 48px 28px 60px; }
  
}

@media (max-width: 680px) {
  .ts-experience .ts-home-intro { padding: 54px 0 58px; }
  .ts-experience .ts-home-intro h2 { font-size: clamp(44px,13vw,58px); }
  .ts-experience .ts-property-visual { min-height: 410px; }
  .ts-experience .ts-property-main,
  .ts-experience .ts-property.is-reverse .ts-property-main { inset: 12px 38px 12px 12px; }
  .ts-experience .ts-property-second,
  .ts-experience .ts-property.is-reverse .ts-property-second { right: 10px; bottom: 38px; left: auto; width: 108px; }
  .ts-experience .ts-property-copy { padding: 42px 20px 54px; }
  .ts-experience .ts-property-index { margin-bottom: 15px; }
  .ts-properties > .ts-benefits,
  .ts-properties > .ts-manifesto { padding: 62px 0; }
  .ts-properties > .ts-benefits .ts-section-heading { grid-template-columns: 1fr; }
  .ts-properties > .ts-benefits .ts-section-heading h2,
  .ts-properties > .ts-manifesto h2 { font-size: clamp(44px,12vw,58px); }
  .ts-properties > .ts-benefits .ts-benefit-grid { margin-top: 34px; }
  .ts-properties > .ts-benefits .ts-benefit-grid article { min-height: 180px; }
  
  
  
  .ts-experience .ts-filter-row > label { margin-left: 0; }
}

/* 5.3 rhythm and balance pass. These rules replace near-hero sizing below
   the collection with a compact editorial scale and keep every overlap
   contained inside its own property panel. */
.ts-experience .ts-shell {
  width: min(1360px, calc(100% - 64px));
  max-width: 1360px;
}
.ts-experience .ts-property {
  min-height: clamp(610px, 72svh, 690px);
  overflow: hidden;
}
.ts-experience .ts-property-visual { min-height: clamp(610px, 72svh, 690px); }
.ts-experience .ts-property > * { min-width: 0; }
.ts-experience .ts-property-main { inset: 24px 54px 24px 24px; }
.ts-experience .ts-property.is-reverse .ts-property-main { right: 24px; left: 54px; }
.ts-experience .ts-property-second {
  right: 14px;
  bottom: 22px;
  width: clamp(112px, 8vw, 136px);
  border-width: 4px;
}
.ts-experience .ts-property.is-reverse .ts-property-second { right: auto; left: 14px; }
.ts-experience .ts-gallery-count { right: auto; bottom: 14px; left: 14px; }
.ts-experience .ts-property-copy { padding: 34px clamp(30px, 3.5vw, 54px); }
.ts-experience .ts-property-index { margin-bottom: 13px; }
.ts-experience .ts-property-copy h3 { font-size: clamp(40px, 3.55vw, 60px); }
.ts-experience .ts-mood { margin-top: 8px; }
.ts-experience .ts-meta { margin-top: 14px; }
.ts-experience .ts-summary { margin-top: 14px; font-size: 16px; line-height: 1.58; }
.ts-experience .ts-amenities-label { margin-top: 12px; }
.ts-experience .ts-feature-list { gap: 5px 14px; margin-top: 5px; padding-top: 8px; }
.ts-experience .ts-pet-line,
.ts-experience .ts-live-price-note,
.ts-experience .ts-note { margin-top: 10px; }
.ts-experience .ts-property-actions { gap: 14px; margin-top: 14px; padding-bottom: 2px; }
.ts-experience .ts-book-button { min-height: 48px; padding: 13px 20px; }

.ts-experience .ts-property-interlude {
  display: grid;
  min-height: 150px;
  grid-template-columns: 160px minmax(0, 1fr);
  align-items: center;
  gap: clamp(28px, 4vw, 64px);
  padding: 34px 0;
  border-bottom: 1px solid var(--ts-line);
}
.ts-experience .ts-property-interlude > span {
  color: var(--ts-rust);
  font-size: 11px;
  font-weight: 750;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.ts-experience .ts-property-interlude > p {
  max-width: 940px;
  margin: 0;
  font: italic 400 clamp(28px, 2.65vw, 40px)/1.14 var(--ts-font-heading, Georgia, serif);
  letter-spacing: -.025em;
}


.ts-experience .ts-host {
  min-height: 620px;
  grid-template-columns: minmax(360px, .78fr) minmax(0, 1.22fr);
}
.ts-experience .ts-host-image { min-height: 540px; margin: 40px 0 40px 40px; }
.ts-experience .ts-host-copy { padding: 56px clamp(42px, 5.5vw, 86px); }
.ts-experience .ts-host h2 { margin-top: 16px; font-size: clamp(46px, 4.5vw, 68px); line-height: .98; }
.ts-experience .ts-host-copy > p:not(.ts-kicker) { margin-top: 20px; font-size: 16px; line-height: 1.68; }
.ts-experience .ts-host-stats { margin-top: 30px; padding-top: 20px; }
.ts-experience .ts-host-stats strong { font-size: 22px; }


.ts-experience .ts-voices,
.ts-experience .ts-faq,
.ts-experience .ts-policies { padding: 74px 0; }
.ts-experience .ts-section-heading {
  grid-template-columns: 170px minmax(0, 1fr);
  align-items: start;
  gap: clamp(28px, 4vw, 58px);
}
.ts-experience .ts-section-heading h2 {
  max-width: 920px;
  margin: 0;
  font-size: clamp(44px, 4.45vw, 70px);
  line-height: .98;
  letter-spacing: -.055em;
}
.ts-experience .ts-voice-grid,
.ts-experience .ts-faq-list,
.ts-experience .ts-policy-grid { margin-top: 40px; }
.ts-experience .ts-voice-grid article { min-height: 205px; padding: 30px; }
.ts-experience .ts-voice-grid h3 { margin: 36px 0 10px; font-size: 25px; }
.ts-experience .ts-faq summary { min-height: 68px; font-size: clamp(21px, 1.85vw, 28px); }
.ts-experience .ts-faq details > p { margin-bottom: 22px; }
.ts-experience .ts-faq details[open] > p { margin-bottom: 22px; }
.ts-experience .ts-policy-grid article { min-height: 250px; padding: 32px; }
.ts-experience .ts-policy-grid h3 { margin: 36px 0 12px; font-size: 25px; }

.ts-experience .ts-final { min-height: 320px; padding: 54px 24px; }
.ts-experience .ts-final > div { gap: 16px; }
.ts-experience .ts-final button {
  max-width: 900px;
  font-size: clamp(48px, 6vw, 82px);
  line-height: .92;
}
.ts-experience .ts-footer {
  min-height: 230px;
  gap: 26px;
  padding: 44px clamp(24px, 5vw, 80px) 22px;
}
.ts-experience .ts-footer > p { font-size: clamp(26px, 2.7vw, 38px); }

@media (max-width: 950px) {
  .ts-experience .ts-shell { width: min(100% - 44px, 1360px); }
  .ts-experience .ts-property,
  .ts-experience .ts-property.is-reverse { overflow: hidden; }
  .ts-experience .ts-property-visual { min-height: 480px; }
  .ts-experience .ts-host { grid-template-columns: 1fr; }
  .ts-experience .ts-host-image { min-height: 470px; margin: 24px 24px 0; }
  .ts-experience .ts-host-copy { padding: 48px 28px 58px; }
  .ts-experience .ts-section-heading { grid-template-columns: 1fr; gap: 16px; }
  .ts-experience .ts-section-heading h2 { max-width: 760px; }
}

@media (max-width: 680px) {
  .ts-experience .ts-shell { width: calc(100% - 32px); }
  .ts-experience .ts-property-visual { min-height: 370px; }
  .ts-experience .ts-property-main,
  .ts-experience .ts-property.is-reverse .ts-property-main { inset: 10px 34px 10px 10px; }
  .ts-experience .ts-property-second,
  .ts-experience .ts-property.is-reverse .ts-property-second {
    right: 8px;
    bottom: 18px;
    left: auto;
    width: 88px;
    border-width: 3px;
  }
  .ts-experience .ts-gallery-count { bottom: 10px; left: 10px; max-width: calc(100% - 112px); }
  .ts-experience .ts-property-copy { padding: 36px 20px 44px; }
  .ts-experience .ts-property-copy h3 { font-size: clamp(40px, 12vw, 52px); }
  .ts-experience .ts-property-interlude {
    min-height: 118px;
    grid-template-columns: 1fr;
    gap: 8px;
    padding: 25px 0;
  }
  .ts-experience .ts-property-interlude > p { font-size: clamp(25px, 7.4vw, 32px); }
  
  .ts-experience .ts-host-image { min-height: 380px; margin: 16px 16px 0; }
  .ts-experience .ts-host-copy { padding: 40px 22px 50px; }
  .ts-experience .ts-host h2 { font-size: clamp(42px, 12vw, 54px); }
  .ts-experience .ts-host-stats { grid-template-columns: 1fr 1fr; }
  .ts-experience .ts-voices,
  .ts-experience .ts-faq,
  .ts-experience .ts-policies { padding: 54px 0; }
  .ts-experience .ts-section-heading h2 { font-size: clamp(39px, 11vw, 50px); }
  .ts-experience .ts-voice-grid,
  .ts-experience .ts-faq-list,
  .ts-experience .ts-policy-grid { margin-top: 28px; }
  .ts-experience .ts-voice-grid article { min-height: 175px; padding: 26px 22px; }
  .ts-experience .ts-voice-grid h3 { margin-top: 24px; }
  .ts-experience .ts-faq summary { min-height: 62px; font-size: 22px; line-height: 1.2; }
  .ts-experience .ts-policy-grid article { min-height: auto; padding: 28px 22px; }
  .ts-experience .ts-policy-grid h3 { margin-top: 12px; }
  .ts-experience .ts-final { min-height: 270px; padding: 46px 18px; }
  .ts-experience .ts-final button { max-width: 100%; font-size: clamp(43px, 13vw, 60px); }
  .ts-experience .ts-footer { min-height: 210px; padding-bottom: 92px; }
}

/* 5.5 live UI/UX audit fixes. Keep the editorial secondary photograph inside
   a dedicated safe corner, away from the gallery label, and give every
   between-property message enough room to work as an intentional pause. */
.ts-experience .ts-property-second,
.ts-experience .ts-property.is-reverse .ts-property-second {
  right: 16px;
  bottom: 24px;
  left: auto;
  width: clamp(110px, 7.6vw, 132px);
  max-height: calc(100% - 48px);
}
.ts-experience .ts-gallery-count {
  right: auto;
  bottom: 16px;
  left: 16px;
  max-width: calc(100% - 190px);
  white-space: normal;
}
.ts-experience .ts-property-interlude {
  position: relative;
  z-index: 0;
  min-height: clamp(210px, 15vw, 248px);
  padding: clamp(50px, 5.5vw, 72px) 0;
  isolation: isolate;
}
.ts-experience .ts-property-interlude::before {
  position: absolute;
  z-index: -1;
  top: 0;
  bottom: 0;
  left: 50%;
  width: 100vw;
  content: "";
  background: #ebe6dc;
  transform: translateX(-50%);
}
.ts-experience .ts-property-interlude > p {
  max-width: 880px;
  font-size: clamp(30px, 2.55vw, 42px);
  line-height: 1.16;
}

@media (max-width: 950px) {
  .ts-experience .ts-property-second,
  .ts-experience .ts-property.is-reverse .ts-property-second {
    right: 18px;
    bottom: 22px;
    left: auto;
  }
  .ts-experience .ts-property-interlude {
    min-height: 190px;
    grid-template-columns: 130px minmax(0, 1fr);
    padding: 46px 0;
  }
}

@media (max-width: 680px) {
  .ts-experience .ts-property-second,
  .ts-experience .ts-property.is-reverse .ts-property-second {
    right: 9px;
    bottom: 16px;
    left: auto;
    width: 84px;
    max-height: calc(100% - 32px);
  }
  .ts-experience .ts-gallery-count {
    bottom: 10px;
    left: 10px;
    max-width: calc(100% - 122px);
  }
  .ts-experience .ts-property-interlude {
    min-height: 168px;
    grid-template-columns: 1fr;
    gap: 12px;
    padding: 38px 0;
  }
  .ts-experience .ts-property-interlude > p {
    max-width: 19ch;
    font-size: clamp(27px, 7.2vw, 32px);
    line-height: 1.18;
  }
}

/* 5.6 iPhone layout refinement. On the homepage the inline hero and property
   actions already provide the complete booking journey, so a second fixed
   action bar only obscures content. The editorial inset image is retained on
   larger screens and removed on phones, where it competes with the property
   copy and the next section. Interludes become deliberate visual pauses. */
.ts-experience .ts-property-interlude {
  min-height: clamp(240px, 18vw, 290px);
  padding: clamp(64px, 6.3vw, 84px) 0;
}

@media (max-width: 950px) {
  .ts-experience .ts-property-interlude {
    min-height: 220px;
    padding: 56px 0 62px;
  }
}

@media (max-width: 680px) {
  .ts-experience .ts-mobile-actions,
  .ts-experience .ts-mobile-book {
    display: none !important;
  }
  .ts-experience .ts-property-second,
  .ts-experience .ts-property.is-reverse .ts-property-second {
    display: none;
  }
  .ts-experience .ts-property-main,
  .ts-experience .ts-property.is-reverse .ts-property-main {
    inset: 10px;
  }
  .ts-experience .ts-gallery-count {
    right: 10px;
    max-width: calc(100% - 20px);
  }
  .ts-experience .ts-property-interlude {
    min-height: 240px;
    gap: 14px;
    padding: 44px 0 72px;
  }
  .ts-experience .ts-property-interlude > p {
    max-width: 20ch;
    font-size: clamp(28px, 7.25vw, 33px);
    line-height: 1.2;
  }
  .ts-experience .ts-footer {
    padding-bottom: calc(38px + env(safe-area-inset-bottom));
  }
}

/* Diagnostic Stage 2: keep the confirmed desktop gallery and spacing system
   when the language and listing-detail features are enabled. */
@media (min-width: 951px) {
  .ts-experience .ts-property,
  .ts-experience .ts-property.is-reverse {
    --ts-property-pad-x: clamp(38px, 3.35vw, 58px);
    --ts-property-pad-y: clamp(42px, 3.8vw, 58px);
    min-height: clamp(630px, 70svh, 680px);
    grid-template-columns: minmax(0, 1.06fr) minmax(440px, .94fr);
  }
  .ts-experience .ts-property.is-reverse {
    grid-template-columns: minmax(440px, .94fr) minmax(0, 1.06fr);
  }
  .ts-experience .ts-property-visual {
    min-height: clamp(630px, 70svh, 680px);
  }
  .ts-experience .ts-property-main {
    inset: 30px 68px 30px 30px;
  }
  .ts-experience .ts-property.is-reverse .ts-property-main {
    right: 30px;
    left: 68px;
  }
  .ts-experience .ts-property-second,
  .ts-experience .ts-property.is-reverse .ts-property-second {
    right: 24px;
    bottom: 42px;
    left: auto;
    width: clamp(164px, 10vw, 190px);
    max-height: none;
    aspect-ratio: 4 / 3;
    border-width: 5px;
    box-shadow: 0 22px 52px rgba(17, 23, 19, .22);
  }
  .ts-experience .ts-property.is-reverse .ts-property-second {
    right: auto;
    left: 24px;
  }
  .ts-experience .ts-property-second img {
    object-position: center;
  }
  .ts-experience .ts-gallery-count {
    right: auto;
    bottom: 18px;
    left: 18px;
    max-width: calc(100% - 36px);
  }
  .ts-experience .ts-property.is-reverse .ts-gallery-count {
    right: 18px;
    left: auto;
  }
  .ts-experience .ts-property-copy {
    justify-content: center;
    padding: var(--ts-property-pad-y) var(--ts-property-pad-x);
  }
  .ts-experience .ts-property-index {
    margin-bottom: 15px;
  }
  .ts-experience .ts-property-copy h3 {
    max-width: 13ch;
    font-size: clamp(40px, 3.4vw, 58px);
    line-height: .96;
  }
  .ts-experience .ts-mood { margin-top: 9px; }
  .ts-experience .ts-meta { margin-top: 16px; }
  .ts-experience .ts-summary {
    max-width: 62ch;
    margin-top: 16px;
    line-height: 1.62;
  }
  .ts-experience .ts-amenities-label { margin-top: 15px; }
  .ts-experience .ts-feature-list {
    gap: 7px 18px;
    margin-top: 7px;
    padding-top: 10px;
  }
  .ts-experience .ts-feature-list li { line-height: 1.4; }
  .ts-experience .ts-pet-line,
  .ts-experience .ts-live-price-note { margin-top: 12px; }
  .ts-experience .ts-note {
    margin-top: 13px;
    line-height: 1.55;
  }
  .ts-experience .ts-property-actions {
    gap: 14px 18px;
    margin-top: 20px;
  }
}

/* Corrected Diagnostic Stage 3: repeat the desktop editorial composition on
   phones — one dominant photograph with a smaller landscape inset. */
@media (max-width: 680px) {
  .ts-experience .ts-property-visual {
    --ts-mobile-inset-width: clamp(96px, 28vw, 116px);
  }
  .ts-experience .ts-property-main,
  .ts-experience .ts-property.is-reverse .ts-property-main {
    inset: 10px 34px 10px 10px;
  }
  .ts-experience .ts-property-second,
  .ts-experience .ts-property.is-reverse .ts-property-second {
    display: block;
    top: auto;
    right: 8px;
    bottom: 26px;
    left: auto;
    width: var(--ts-mobile-inset-width);
    max-height: none;
    aspect-ratio: 4 / 3;
    border: 4px solid var(--ts-paper);
    box-shadow: 0 16px 34px rgba(17, 23, 19, .24);
  }
  .ts-experience .ts-property-second img {
    height: 100%;
    object-fit: cover;
    object-position: center;
  }
  .ts-experience .ts-gallery-count,
  .ts-experience .ts-property.is-reverse .ts-gallery-count {
    right: auto;
    bottom: 12px;
    left: 12px;
    max-width: calc(100% - var(--ts-mobile-inset-width) - 34px);
  }
}

/* 5.5.8 — focused listing-page refinement. The page now follows a clear
   scan path: concise overview, key facts, optional detail and a compact
   booking card. Long information remains available without dominating the
   initial experience, and no layout relies on empty decorative grid cells. */

.ts-listing .ts-listing-content > section { padding-bottom: 48px; }
.ts-listing .ts-listing-content > section + section { padding-top: 48px; }
.ts-listing .ts-listing-content h2 {
  max-width: 720px;
  margin: 12px 0 20px;
  font-size: clamp(34px,3.5vw,52px);
  line-height: 1.02;
  letter-spacing: -.045em;
}
.ts-listing .ts-listing-lead { max-width: 720px; margin-bottom: 0; font-size: 20px; line-height: 1.55; }
.ts-listing .ts-listing-content p,
.ts-listing .ts-listing-content li { font-size: 16px; line-height: 1.62; }

.ts-listing-about-more { max-width: 720px; margin-top: 20px; border-top: 1px solid rgba(21,26,23,.14); border-bottom: 1px solid rgba(21,26,23,.14); }
.ts-listing-about-more summary,
.ts-listing-disclosures summary {
  display: flex;
  min-height: 58px;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  color: #151a17;
  cursor: pointer;
  list-style: none;
  font-size: 16px;
  font-weight: 750;
}
.ts-listing-about-more summary::-webkit-details-marker,
.ts-listing-disclosures summary::-webkit-details-marker,
.ts-booking-completion > summary::-webkit-details-marker { display: none; }
.ts-listing-about-more summary span,
.ts-listing-disclosures summary i { flex: none; font-size: 22px; font-style: normal; font-weight: 400; transition: transform .25s ease; }
.ts-listing-about-more[open] summary span,
.ts-listing-disclosures details[open] summary i { transform: rotate(45deg); }
.ts-listing-about-more > div { padding: 0 0 20px; color: #505851; }
.ts-listing-about-more > div > :first-child { margin-top: 0; }
.ts-listing-about-more > div > :last-child { margin-bottom: 0; }

.ts-listing .ts-listing-info-cards {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 24px;
  background: transparent;
}
.ts-listing .ts-listing-info-cards article {
  min-width: 130px;
  min-height: 0;
  flex: 1 1 145px;
  padding: 17px 18px;
  border: 1px solid rgba(21,26,23,.13);
  border-radius: 12px;
  background: rgba(255,253,248,.72);
}
.ts-listing .ts-listing-info-cards strong { font-size: 23px; line-height: 1.15; }
.ts-listing .ts-listing-info-cards span { margin-top: 8px; font-size: 12px; line-height: 1.4; }
.ts-listing .ts-listing-sleeping-list { gap: 8px; margin-top: 14px; }
.ts-listing .ts-listing-sleeping-list li { min-height: 52px; padding: 11px 13px; }

.ts-listing .ts-listing-highlight-heading { margin-top: 22px; }
.ts-listing .ts-listing-highlights li { min-height: 52px; padding: 10px 13px; }
.ts-listing .ts-listing-all-amenities { margin-top: 4px; }
.ts-listing .ts-listing-amenity-groups {
  display: block;
  padding: 8px 20px 22px;
  columns: 2 250px;
  column-gap: 32px;
  background: transparent;
}
.ts-listing .ts-listing-amenity-groups article {
  min-height: 0;
  break-inside: avoid;
  padding: 20px 0;
  border-top: 1px solid rgba(21,26,23,.12);
  color: #151a17;
  background: transparent;
}
.ts-listing .ts-listing-amenity-groups h3 { margin-bottom: 12px; font-size: 20px; }
.ts-listing .ts-listing-amenity-groups li { font-size: 15px; }

.ts-listing-disclosures { border-top: 1px solid rgba(21,26,23,.14); color: #151a17 !important; }
.ts-listing-disclosures details { border-bottom: 1px solid rgba(21,26,23,.14); }
.ts-listing-disclosures summary { min-height: 64px; font-size: 18px; }
.ts-listing-disclosures p { max-width: 700px; margin: 0; padding: 0 36px 22px 0; color: #505851; }
.ts-listing .ts-listing-address-note { margin-top: 18px; padding: 14px 16px; font-size: 14px; }


.ts-listing-things-grid {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 26px;
  color: #151a17 !important;
}
.ts-listing-things-grid article { min-width: 0; padding-top: 20px; border-top: 2px solid rgba(21,26,23,.18); }
.ts-listing-things-grid h3 { margin: 0 0 12px; font-size: 21px; line-height: 1.2; }
.ts-listing-things-grid h3:not(:first-child) { margin-top: 24px; }
.ts-listing-things-grid p { margin: 0; color: #505851; font-size: 15px; }
.ts-listing-things-grid .ts-listing-rules { display: block; margin: 0; padding: 0; border: 0; }
.ts-listing-things-grid .ts-listing-rules li + li { margin-top: 7px; }

/* A compact Airbnb-like reservation card: the price decision stays visible;
   guest identity, policy acceptance and payment are disclosed only when the
   guest chooses to continue. The page itself scrolls—never a panel inside it. */
.ts-listing .ts-booking-inline {
  position: sticky;
  top: 92px;
  height: max-content;
}
.ts-listing .ts-booking-inline:has(.ts-guest-calendar:not([hidden])),
.ts-listing .ts-booking-inline:has(.ts-booking-completion[open]) { position: static; }
.ts-listing .ts-booking-inline .ts-booking-drawer {
  height: auto;
  max-height: none;
  padding: 24px;
  overflow: visible;
  border-radius: 16px;
  background: #fffdf8;
  box-shadow: 0 18px 50px rgba(21,26,23,.10);
  overscroll-behavior: auto;
}
.ts-listing .ts-listing-booking-panel h2 { margin: 9px 0 9px; font-size: 29px; line-height: 1.02; }
.ts-listing .ts-listing-booking-panel .ts-kicker { font-size: 10px; }
.ts-listing .ts-booking-intro { margin: 0 0 12px; font-size: 13px !important; line-height: 1.55; }
.ts-listing .ts-booking-property { padding-top: 6px; }
.ts-listing .ts-booking-property select { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ts-listing .ts-date-choice { padding: 10px 0; }
.ts-listing .ts-date-choice > button { min-height: 32px; }
.ts-listing .ts-arrival-times { margin-top: 7px; font-size: 12px !important; }
.ts-listing .ts-pet-toggle { padding: 11px 0; }
.ts-listing .ts-booking-message:empty,
.ts-listing .ts-availability-status:empty { display: none; }
.ts-listing .ts-price-box { margin-top: 14px; padding: 16px; }
.ts-listing .ts-price-total { margin-top: 10px; padding-top: 10px; }
.ts-listing .ts-price-total strong { font-size: 30px; }
.ts-listing .ts-listing-booking-panel .ts-booking-contact { min-height: 38px; margin: 10px 0 2px; font-size: 11px; }
.ts-booking-completion { margin-top: 12px; }
.ts-booking-completion > summary {
  display: flex;
  min-height: 52px;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 0 17px;
  border: 1px solid #151a17;
  border-radius: 999px;
  color: #fff;
  background: #151a17;
  cursor: pointer;
  list-style: none;
  font-size: 12px;
  font-weight: 750;
  letter-spacing: .07em;
  text-transform: uppercase;
}
.ts-booking-completion > summary span { transition: transform .25s ease; }
.ts-booking-completion[open] > summary { color: #151a17; background: transparent; }
.ts-booking-completion[open] > summary span { transform: rotate(90deg); }
.ts-booking-completion-body { padding-top: 6px; }
.ts-listing .ts-booking-completion-body fieldset { margin-top: 20px; }

@media (max-width: 950px) {
  
  .ts-listing .ts-booking-inline { position: static; order: -1; }
  .ts-listing .ts-booking-inline .ts-booking-drawer { height: auto; max-height: none; overflow: visible; }
  .ts-listing-things-grid { grid-template-columns: 1fr; gap: 22px; }
}

@media (max-width: 680px) {
  
  .ts-listing .ts-listing-content > section { padding-bottom: 40px; }
  .ts-listing .ts-listing-content > section + section { padding-top: 40px; }
  .ts-listing .ts-listing-content h2 { margin-bottom: 16px; font-size: clamp(32px,10vw,42px); }
  .ts-listing .ts-listing-lead { font-size: 18px; }
  .ts-listing .ts-listing-info-cards { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); }
  .ts-listing .ts-listing-info-cards article { min-width: 0; padding: 14px; }
  .ts-listing .ts-listing-info-cards strong { font-size: 21px; }
  .ts-listing .ts-listing-amenity-groups { padding: 6px 14px 18px; columns: 1; }
  .ts-listing-disclosures summary { min-height: 58px; font-size: 16px; }
  
  .ts-listing .ts-booking-inline .ts-booking-drawer { padding: 21px 18px calc(24px + env(safe-area-inset-bottom)); border-radius: 14px; }
  .ts-listing .ts-listing-booking-panel h2 { font-size: 30px; }
  .ts-listing .ts-guest-calendar-days button { min-height: 46px; }
}

/* 5.5.9 — proportion, short-viewport booking and direct-price reassurance. */




.ts-listing-about-more > div p { margin: 0 0 13px; }
.ts-listing-about-more > div p:last-child { margin-bottom: 0; }

.ts-listing .ts-booking-close[hidden] { display: none !important; }
.ts-listing .ts-booking-property {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
}
.ts-listing .ts-booking-inline { top: 20px; }
.ts-best-price-note {
  border-top: 1px solid rgba(21,26,23,.14);
  border-bottom: 1px solid rgba(21,26,23,.14);
}
.ts-best-price-note summary {
  display: flex;
  min-height: 42px;
  align-items: center;
  justify-content: space-between;
  gap: 15px;
  color: #9f5034;
  cursor: pointer;
  list-style: none;
  font-size: 11px;
  font-weight: 750;
}
.ts-best-price-note summary::-webkit-details-marker { display: none; }
.ts-best-price-note summary span { font-size: 18px; font-weight: 400; transition: transform .25s ease; }
.ts-best-price-note[open] summary span { transform: rotate(45deg); }
.ts-best-price-note > div { padding: 0 0 12px; }
.ts-best-price-note p { margin: 0; color: #505851; font-size: 11px; line-height: 1.5; }
.ts-best-price-note a {
  display: inline-block;
  margin-top: 8px;
  border-bottom: 1px solid currentColor;
  color: #9f5034;
  font-size: 10px;
  font-weight: 750;
}

.ts-price-promise-home {
  display: grid;
  grid-template-columns: minmax(0,.8fr) minmax(0,1.2fr);
  gap: clamp(36px,7vw,110px);
  align-items: center;
  margin-top: clamp(70px,8vw,120px);
  margin-bottom: clamp(70px,8vw,120px);
  padding: clamp(34px,5vw,68px);
  color: #fffdf8;
  background: #1f3128;
}
.ts-price-promise-home .ts-kicker { color: #d9bd8f; }
.ts-price-promise-home h2 {
  margin: 12px 0 0;
  font: 400 clamp(42px,5vw,72px)/.95 var(--ts-font-heading, Georgia, serif);
  letter-spacing: -.055em;
}
.ts-price-promise-home > div:last-child > p { margin: 0; color: rgba(255,255,255,.75); line-height: 1.75; }
.ts-price-promise-home a {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  margin-top: 18px;
  border-bottom: 1px solid #d9bd8f;
  font-size: 11px;
  font-weight: 750;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.ts-price-promise-home small { display: block; margin-top: 14px; color: rgba(255,255,255,.52); font-size: 10px; line-height: 1.55; }

@media (min-width: 951px) and (max-height: 880px) {
  .ts-listing .ts-booking-inline { top: 12px; }
  .ts-listing .ts-booking-inline .ts-booking-drawer { padding: 16px 20px; }
  .ts-listing .ts-booking-intro { display: none; }
  .ts-listing .ts-listing-booking-panel h2 { margin: 6px 0 8px; font-size: 25px; }
  .ts-listing .ts-date-choice { padding: 7px 0; }
  .ts-listing .ts-date-choice > button { min-height: 29px; }
  .ts-listing .ts-arrival-times { margin: 4px 0 0; }
  .ts-listing .ts-booking-form > label:not(.ts-booking-property):not(.ts-pet-toggle) { padding: 8px 0; }
  .ts-listing .ts-pet-toggle { padding: 7px 0; }
  .ts-listing .ts-price-box { margin-top: 9px; padding: 11px 13px; }
  .ts-listing .ts-price-lines { margin: 8px 0; padding-bottom: 8px; }
  .ts-listing .ts-price-total { margin-top: 6px; padding-top: 6px; }
  .ts-listing .ts-price-total strong { font-size: 27px; }
  .ts-listing .ts-listing-booking-panel .ts-booking-contact { min-height: 32px; margin: 4px 0 0; }
  .ts-best-price-note summary { min-height: 35px; }
  .ts-booking-completion { margin-top: 7px; }
  .ts-booking-completion > summary { min-height: 45px; }
}
@media (min-width: 951px) and (max-height: 700px) {
  .ts-listing .ts-booking-inline { position: static; }
}
@media (max-width: 950px) {
  .ts-price-promise-home { grid-template-columns: 1fr; }
}
@media (max-width: 680px) {
  
  .ts-price-promise-home { width: calc(100% - 32px); gap: 24px; padding: 30px 22px; }
  .ts-price-promise-home h2 { font-size: clamp(38px,12vw,52px); }
}

/* 5.5.10 — an explicit, compact rate choice. The whole label remains
   tappable and the legal consequence is visible before the price changes. */
.ts-rate-plan {
  min-width: 0;
  margin: 13px 0 5px;
  padding: 0;
  border: 0;
}
.ts-rate-plan > legend {
  margin-bottom: 8px;
  color: #626b64;
  font-size: 10px;
  font-weight: 780;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.ts-rate-plan-options {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 8px;
}
.ts-rate-plan-options > label {
  position: relative;
  display: flex !important;
  min-width: 0;
  min-height: 70px;
  align-items: flex-start !important;
  gap: 8px;
  padding: 10px !important;
  border: 1px solid rgba(21,26,23,.16);
  border-radius: 10px;
  cursor: pointer;
  transition: border-color .2s ease,background .2s ease,transform .2s ease;
}
.ts-rate-plan-options > label:has(input:checked) {
  border-color: #9f5034;
  background: rgba(159,80,52,.06);
}
.ts-rate-plan-options input {
  flex: 0 0 auto;
  width: 16px;
  min-height: auto !important;
  height: 16px;
  margin: 2px 0 0;
  accent-color: #9f5034;
}
.ts-rate-plan-options span { display: block; min-width: 0; }
.ts-rate-plan-options strong { display: block; color: #151a17; font-size: 12px; line-height: 1.35; }
.ts-rate-plan-options small { display: block; margin-top: 4px; color: #626b64; font-size: 10.5px; line-height: 1.4; }
.ts-rate-plan-options > label:focus-within { outline: 2px solid #9f5034; outline-offset: 2px; }

@media (hover:hover) {
  .ts-rate-plan-options > label:hover { border-color: rgba(159,80,52,.7); transform: translateY(-1px); }
}
@media (max-width: 460px) {
  .ts-rate-plan-options { grid-template-columns: 1fr; }
  .ts-rate-plan-options > label { min-height: 0; }
  .ts-rate-plan-options strong { font-size: 13px; }
  .ts-rate-plan-options small { font-size: 12px; }
}
@media (prefers-reduced-motion: reduce) {
  .ts-rate-plan-options > label { transition: none; }
}

/* 5.5.12 — balanced typography, consistent geometry and a booking card that
   never traps content below the viewport. This is intentionally the final
   cascade layer so older release-specific overrides cannot reintroduce the
   narrow rate cards or very small guest-facing copy. */
.ts-experience {
  --ts-radius-small: 10px;
  --ts-radius-medium: 16px;
  --ts-radius-large: 22px;
  --ts-radius-pill: 999px;
  font-size: 17px;
}
.ts-experience .ts-kicker,
.ts-experience .ts-place,
.ts-experience .ts-amenities-label,
.ts-listing .ts-listing-kicker { font-size: 11px; line-height: 1.4; }
.ts-experience .ts-hero-content > p { font-size: 11px; }
.ts-experience .ts-hero-copy p { font-size: 18px; line-height: 1.62; }
.ts-experience .ts-header nav a,
.ts-experience .ts-header nav button,
.ts-experience .ts-languages button { font-size: 11px; }
.ts-experience .ts-hero-actions a,
.ts-experience .ts-hero-actions button,
.ts-experience .ts-book-button,
.ts-experience .ts-property-details,
.ts-experience .ts-property-contact { font-size: 12px; }
.ts-experience .ts-meta { font-size: 13px; line-height: 1.5; }
.ts-experience .ts-summary { font-size: 17px; }
.ts-experience .ts-feature-list li,
.ts-experience .ts-pet-line,
.ts-experience .ts-live-price-note { font-size: 14px; line-height: 1.5; }
.ts-experience .ts-note { font-size: 13px; line-height: 1.55; }
.ts-experience .ts-note strong { font-size: 10px; }

/* The availability finder now follows the hero and acts as the first useful
   decision point. Repeated counts and the second guest control are removed
   visually because the search form already contains the same information. */




.ts-experience .ts-filter-row > label{ display: none; }




.ts-experience .ts-filter-row {
  border-radius: var(--ts-radius-large);
  background: rgba(255,253,248,.72);
}
.ts-experience .ts-filter-row > button { min-height: 44px; font-size: 11px; }
.ts-experience .ts-home-intro { padding-top: clamp(58px,6vw,86px); }

/* A consistent rounded family for interactive and card-like surfaces. */
.ts-experience .ts-property-main,
.ts-experience .ts-property-second,
.ts-experience .ts-benefit-grid article,
.ts-experience .ts-voice-grid article,
.ts-experience .ts-policy-grid article,
.ts-listing .ts-listing-info-cards article,
.ts-listing .ts-listing-sleeping-list li,
.ts-listing .ts-listing-highlights li,
.ts-listing .ts-listing-all-amenities,
.ts-listing .ts-listing-address-note,
.ts-listing .ts-listing-booking-panel,
.ts-price-box{ border-radius: var(--ts-radius-medium); }
.ts-experience .ts-property-second { border-radius: var(--ts-radius-small); }
.ts-experience .ts-book-button,
.ts-experience .ts-payment-button,
.ts-booking-completion > summary { border-radius: var(--ts-radius-pill); }

/* Readable listing copy without returning to oversized, full-screen headings. */
.ts-listing { font-size: 17px; }

.ts-listing .ts-listing-content p,
.ts-listing .ts-listing-content li { font-size: 17px; line-height: 1.62; }
.ts-listing .ts-listing-content h2 {
  max-width: 760px;
  font-size: clamp(36px,3.3vw,50px);
  line-height: 1.04;
}
.ts-listing .ts-listing-lead { max-width: 760px; font-size: 20px; }
.ts-listing .ts-listing-info-cards span { font-size: 14px; }
.ts-listing .ts-listing-amenity-groups li { font-size: 16px; }
.ts-listing-disclosures {
  overflow: hidden;
  border: 1px solid rgba(21,26,23,.14);
  border-radius: var(--ts-radius-medium);
}
.ts-listing-disclosures details:last-child { border-bottom: 0; }
.ts-listing-disclosures summary { padding: 0 18px; }
.ts-listing-disclosures p { padding-right: 18px; padding-left: 18px; }


/* Compact, aligned and fully readable reservation card. It follows normal
   document scrolling so the bottom can always be reached, with no nested
   scrollbar and no viewport-height clipping. */
.ts-listing .ts-booking-inline {
  position: static;
  top: auto;
  align-self: start;
}
.ts-listing .ts-booking-inline .ts-booking-drawer {
  height: auto;
  max-height: none;
  padding: 20px 22px;
  overflow: visible;
  border-radius: 20px;
}
.ts-listing .ts-listing-booking-panel h2 {
  margin: 7px 0 12px;
  font-size: 31px;
  line-height: 1.02;
}
.ts-listing .ts-booking-intro { display: none; }
.ts-listing .ts-booking-form label > span,
.ts-listing .ts-booking-form legend,
.ts-listing .ts-price-box > span { font-size: 11px; line-height: 1.35; }
.ts-listing .ts-date-choice { padding: 8px 0; }
.ts-listing .ts-date-choice > button { min-height: 38px; }
.ts-listing .ts-date-choice strong,
.ts-listing .ts-booking-form input,
.ts-listing .ts-booking-form select { font-size: 17px; }
.ts-listing .ts-arrival-times { margin: 7px 0 2px; font-size: 13px !important; line-height: 1.45; }
.ts-listing .ts-booking-form > label:not(.ts-booking-property):not(.ts-pet-toggle) { padding: 9px 0; }
.ts-listing .ts-pet-toggle { padding: 10px 0; }
.ts-listing .ts-pet-toggle span { font-size: 13px; letter-spacing: .07em; }
.ts-listing .ts-price-box { margin-top: 12px; padding: 14px; }
.ts-listing .ts-price-lines:empty { display: none; }
.ts-listing .ts-price-total { margin-top: 8px; padding-top: 8px; font-size: 14px; }
.ts-listing .ts-price-total strong { font-size: 30px; }
.ts-listing .ts-price-box > small { display: block; margin-top: 7px; font-size: 12px; line-height: 1.45; }
.ts-listing .ts-listing-booking-panel .ts-booking-contact,
.ts-listing .ts-best-price-note summary { font-size: 13px; }
.ts-listing .ts-best-price-note p,
.ts-listing .ts-best-price-note a { font-size: 12px; }
.ts-listing .ts-booking-completion > summary { min-height: 50px; font-size: 13px; }

/* Cancellation choice: one clean row per decision. This avoids clipped text,
   uneven card heights and tiny legal copy inside narrow half-width boxes. */
.ts-listing .ts-rate-plan { margin: 12px 0 4px; }
.ts-listing .ts-rate-plan > legend { margin-bottom: 8px; font-size: 11px; }
.ts-listing .ts-rate-plan-options { grid-template-columns: 1fr; gap: 7px; }
.ts-listing .ts-rate-plan-options > label {
  min-height: 0;
  align-items: center !important;
  gap: 10px;
  padding: 10px 12px !important;
  border-radius: 12px;
}
.ts-listing .ts-rate-plan-options input { margin-top: 0; }
.ts-listing .ts-rate-plan-options strong { font-size: 14px; line-height: 1.32; }
.ts-listing .ts-rate-plan-options small { margin-top: 2px; font-size: 12px; line-height: 1.38; }

/* The same rate decision may also be opened from the homepage. Keep it as two
   readable horizontal choices there as well instead of two narrow columns. */
.ts-booking-backdrop:not(.ts-booking-inline) .ts-rate-plan-options { grid-template-columns: 1fr; }
.ts-booking-backdrop:not(.ts-booking-inline) .ts-rate-plan-options > label {
  min-height: 0;
  align-items: center !important;
  padding: 11px 13px !important;
  border-radius: 12px;
}
.ts-booking-backdrop:not(.ts-booking-inline) .ts-rate-plan-options strong { font-size: 14px; }
.ts-booking-backdrop:not(.ts-booking-inline) .ts-rate-plan-options small { font-size: 12px; }
@media (max-width: 1100px) and (min-width: 951px) {
  
}
@media (max-width: 950px) {
  
  
}
@media (max-width: 680px) {
  .ts-experience { font-size: 16px; }
  .ts-experience .ts-hero-copy p { font-size: 17px; }
  
  
  
  
  
  .ts-experience .ts-filter-row { border-radius: 16px; }
  .ts-listing .ts-listing-content p,
  .ts-listing .ts-listing-content li { font-size: 16px; }
  
  .ts-listing .ts-booking-inline .ts-booking-drawer { padding: 20px 17px calc(24px + env(safe-area-inset-bottom)); }
  .ts-listing .ts-listing-booking-panel h2 { font-size: 30px; }
  .ts-listing .ts-rate-plan-options strong { font-size: 14px; }
  .ts-listing .ts-rate-plan-options small { font-size: 13px; }
}

/* 5.5.13 — conversion hierarchy and final visual polish.
   Homepage previews stay concise, the price promise reads as a hospitality
   benefit rather than a legal notice, and final calls to action no longer
   overpower the rest of the page. */
@media (min-width: 951px) {
  .ts-experience .ts-property,
  .ts-experience .ts-property.is-reverse,
  .ts-experience .ts-property-visual {
    min-height: clamp(660px,72svh,715px);
  }
}
.ts-experience .ts-meta {
  font-size: 14px;
  line-height: 1.55;
}
.ts-experience .ts-summary {
  max-width: 60ch;
  font-size: 18px;
  line-height: 1.62;
}
.ts-experience .ts-feature-list li {
  font-size: 15px;
  line-height: 1.48;
}
.ts-experience .ts-pet-line,
.ts-experience .ts-pet-line span {
  color: #59615b;
  font-size: 15px;
  font-weight: 400;
  line-height: 1.5;
}
.ts-experience .ts-property-interlude {
  min-height: clamp(250px,19vw,305px);
}

.ts-price-promise-home {
  grid-template-columns: minmax(0,.86fr) minmax(0,1.14fr);
  gap: clamp(38px,6vw,86px);
  margin-top: clamp(62px,7vw,92px);
  margin-bottom: clamp(62px,7vw,92px);
  padding: clamp(36px,4.4vw,58px);
  border: 1px solid rgba(21,26,23,.12);
  border-radius: 22px;
  color: #151a17;
  background: #ebe3d5;
  box-shadow: 0 20px 55px rgba(21,26,23,.07);
}
.ts-price-promise-home .ts-kicker { color: #9f5034; }
.ts-price-promise-home h2 {
  max-width: 11ch;
  margin: 11px 0 0;
  color: #151a17;
  font-size: clamp(38px,4vw,58px);
  line-height: .98;
}
.ts-price-promise-home .ts-price-promise-copy > p {
  max-width: 620px;
  margin: 0;
  color: #4f5851;
  font-size: 17px;
  line-height: 1.68;
}
.ts-price-promise-home .ts-price-promise-copy > a {
  min-height: 46px;
  margin-top: 20px;
  padding: 0 19px;
  border: 1px solid #1f3128;
  border-radius: 999px;
  color: #fffdf8;
  background: #1f3128;
  font-size: 11px;
  text-decoration: none;
  transition: transform .2s ease,background-color .2s ease;
}
.ts-price-promise-home .ts-price-promise-terms {
  max-width: 620px;
  margin-top: 14px;
  color: #59615b;
}
.ts-price-promise-home .ts-price-promise-terms summary {
  display: inline-flex;
  min-height: 38px;
  align-items: center;
  cursor: pointer;
  font-size: 12px;
  font-weight: 700;
  list-style: none;
  text-decoration: underline;
  text-underline-offset: 4px;
}
.ts-price-promise-home .ts-price-promise-terms summary::-webkit-details-marker { display: none; }
.ts-price-promise-home .ts-price-promise-terms small {
  max-width: 600px;
  margin-top: 2px;
  color: #687069;
  font-size: 12px;
  line-height: 1.55;
}

.ts-experience .ts-final {
  min-height: 240px;
  padding: 38px 24px;
}
.ts-experience .ts-final > div { gap: 12px; }
.ts-experience .ts-final > p { margin: 0; }
.ts-experience .ts-final button {
  max-width: 720px;
  font-size: clamp(38px,4.4vw,60px);
  line-height: .98;
}
.ts-experience .ts-final a {
  min-height: 44px;
  padding: 0 20px;
  border-radius: 999px;
}
.ts-listing-final {
  min-height: 300px;
  padding: 50px 24px;
}
.ts-listing-final h2 {
  margin: 12px 0 22px;
  font-size: clamp(38px,4vw,58px);
  line-height: 1;
}

@media (hover:hover) {
  .ts-price-promise-home .ts-price-promise-copy > a:hover {
    background: #2c4538;
    transform: translateY(-2px);
  }
}
@media (max-width: 950px) {
  .ts-experience .ts-property-visual { min-height: 500px; }
  .ts-price-promise-home { grid-template-columns: 1fr; gap: 26px; }
  .ts-price-promise-home h2 { max-width: 15ch; }
}
@media (max-width: 680px) {
  .ts-experience .ts-property-visual { min-height: 395px; }
  .ts-experience .ts-property-second,
  .ts-experience .ts-property.is-reverse .ts-property-second {
    display: block;
    right: 9px;
    bottom: 18px;
    left: auto;
    width: 96px;
    border-width: 3px;
  }
  .ts-experience .ts-property-main,
  .ts-experience .ts-property.is-reverse .ts-property-main { inset: 10px 34px 10px 10px; }
  .ts-experience .ts-gallery-count { right: auto; max-width: calc(100% - 124px); }
  .ts-experience .ts-property-copy { padding: 40px 20px 48px; }
  .ts-experience .ts-meta { font-size: 13px; }
  .ts-experience .ts-summary { font-size: 17px; }
  .ts-experience .ts-feature-list li,
  .ts-experience .ts-pet-line,
  .ts-experience .ts-pet-line span { font-size: 14px; }
  .ts-experience .ts-property-interlude {
    min-height: 255px;
    padding: 52px 0 70px;
  }
  .ts-price-promise-home {
    width: calc(100% - 32px);
    gap: 24px;
    padding: 28px 22px;
    border-radius: 18px;
  }
  .ts-price-promise-home h2 { max-width: 12ch; font-size: clamp(36px,10.8vw,48px); }
  .ts-price-promise-home .ts-price-promise-copy > p { font-size: 16px; }
  .ts-experience .ts-final { min-height: 220px; padding: 34px 18px; }
  .ts-experience .ts-final button { font-size: clamp(34px,9.8vw,45px); }
  .ts-listing-final { min-height: 260px; padding: 42px 18px; }
  .ts-listing-final h2 { font-size: clamp(36px,10vw,48px); }
}
@media (prefers-reduced-motion: reduce) {
  .ts-price-promise-home .ts-price-promise-copy > a { transition: none; }
}

/* 5.5.14 — motion, property rhythm and safe sticky booking.
   These overrides deliberately leave pricing and reservation logic untouched. */
.ts-experience .ts-property,
.ts-experience .ts-property.is-reverse {
  padding-block: clamp(24px,2.7vw,40px);
  background: var(--ts-paper);
}

.ts-experience .ts-property-interlude {
  min-height: clamp(300px,22vw,360px);
  grid-template-columns: minmax(190px,.38fr) minmax(0,1fr);
  gap: clamp(38px,5.5vw,88px);
  padding: clamp(72px,7vw,96px) 0;
  border-top: 1px solid rgba(21,26,23,.1);
}
.ts-experience .ts-property-interlude-context {
  display: grid;
  align-content: center;
  gap: 11px;
  padding-left: 17px;
  border-left: 2px solid var(--ts-rust);
}
.ts-experience .ts-property-interlude-from,
.ts-experience .ts-property-interlude-label {
  display: block;
  line-height: 1.4;
  text-transform: uppercase;
}
.ts-experience .ts-property-interlude-from {
  color: #59615b;
  font-size: 11px;
  font-weight: 650;
  letter-spacing: .09em;
}
.ts-experience .ts-property-interlude-label {
  color: var(--ts-rust);
  font-size: 12px;
  font-weight: 760;
  letter-spacing: .15em;
}
.ts-experience .ts-property-interlude > p {
  max-width: 22ch;
  font-size: clamp(32px,2.8vw,45px);
  line-height: 1.17;
}

/* A calm entrance system: visible content arrives quickly and never travels
   horizontally, so narrow screens cannot gain an accidental overflow. */
.ts-experience [data-ts-reveal] {
  opacity: 0;
  transform: translate3d(0,18px,0);
  transition: opacity 560ms cubic-bezier(.16,1,.3,1),transform 620ms cubic-bezier(.16,1,.3,1);
  will-change: opacity,transform;
}
.ts-experience .ts-property-copy[data-ts-reveal],
.ts-experience .ts-host-copy[data-ts-reveal] { transition-delay: 80ms; }
.ts-experience .ts-is-visible[data-ts-reveal] {
  opacity: 1;
  transform: none;
  will-change: auto;
}

@keyframes ts-price-lines-enter {
  from { opacity: .42; transform: translateY(5px); }
  to { opacity: 1; transform: none; }
}
@keyframes ts-price-total-settle {
  0% { opacity: .55; transform: translateY(4px); }
  58% { opacity: 1; transform: translateY(-2px); }
  100% { opacity: 1; transform: none; }
}
@keyframes ts-booking-content-enter {
  from { opacity: .35; transform: translateY(-5px); }
  to { opacity: 1; transform: none; }
}
.ts-experience .ts-price-box.ts-price-updated .ts-price-lines > div {
  animation: ts-price-lines-enter 300ms cubic-bezier(.16,1,.3,1) both;
}
.ts-experience .ts-price-box.ts-price-updated .ts-price-lines > div:nth-child(2) { animation-delay: 35ms; }
.ts-experience .ts-price-box.ts-price-updated .ts-price-lines > div:nth-child(3) { animation-delay: 70ms; }
.ts-experience .ts-price-box.ts-price-updated .ts-price-lines > div:nth-child(4) { animation-delay: 105ms; }
.ts-experience .ts-price-box.ts-price-updated .ts-price-total strong {
  animation: ts-price-total-settle 360ms cubic-bezier(.16,1,.3,1) both;
}
.ts-experience .ts-guest-calendar:not([hidden]),
.ts-experience .ts-booking-completion[open] .ts-booking-completion-body,
.ts-experience .ts-best-price-note[open] > div {
  animation: ts-booking-content-enter 320ms cubic-bezier(.16,1,.3,1) both;
}
.ts-experience .ts-rate-plan-options > label {
  transition: border-color 200ms ease,background-color 200ms ease,box-shadow 200ms ease,transform 200ms ease;
}
.ts-experience .ts-rate-plan-options > label:has(input:checked) {
  background: #fffaf3;
  box-shadow: 0 7px 18px rgba(21,26,23,.06);
}
.ts-experience .ts-availability-status { transition: color 220ms ease,opacity 220ms ease; }

/* Tall-sticky sidebar pattern. A short card stays below the viewport header;
   a tall card receives a negative top offset so its bottom becomes reachable
   during normal page scrolling. There is never a nested card scrollbar. */
@media (min-width: 951px) {
  .ts-listing .ts-booking-inline.is-sticky-ready {
    position: sticky;
    top: var(--ts-booking-sticky-top,20px);
    align-self: start;
  }
  .ts-listing .ts-booking-inline.is-sticky-ready .ts-booking-drawer {
    height: auto;
    max-height: none;
    overflow: visible;
  }
}

@media (max-width: 950px) {
  .ts-experience .ts-property,
  .ts-experience .ts-property.is-reverse { padding-block: 22px 30px; }
  .ts-experience .ts-property-interlude {
    min-height: 300px;
    grid-template-columns: minmax(150px,.38fr) minmax(0,1fr);
    gap: 34px;
    padding: 68px 0 78px;
  }
  .ts-listing .ts-booking-inline.is-sticky-ready {
    position: static;
    top: auto;
  }
}

@media (max-width: 680px) {
  .ts-experience .ts-property,
  .ts-experience .ts-property.is-reverse { padding-block: 18px 26px; }
  .ts-experience .ts-property-interlude {
    min-height: 285px;
    grid-template-columns: 1fr;
    gap: 24px;
    padding: 56px 0 72px;
  }
  .ts-experience .ts-property-interlude-context { gap: 8px; }
  .ts-experience .ts-property-interlude > p {
    max-width: 20ch;
    font-size: clamp(29px,7.6vw,35px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .ts-experience [data-ts-reveal] {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .ts-experience .ts-price-box.ts-price-updated .ts-price-lines > div,
  .ts-experience .ts-price-box.ts-price-updated .ts-price-total strong,
  .ts-experience .ts-guest-calendar:not([hidden]),
  .ts-experience .ts-booking-completion[open] .ts-booking-completion-body,
  .ts-experience .ts-best-price-note[open] > div { animation: none; }
  .ts-experience .ts-rate-plan-options > label { transition: none; }
}

/* 5.5.15 — a consistently rounded property composition and a later,
   more measured viewport reveal. Booking and pricing logic are unchanged. */
.ts-experience .ts-property,
.ts-experience .ts-property.is-reverse {
  border-radius: var(--ts-radius-large,22px);
}
.ts-experience .ts-property-main {
  border-radius: var(--ts-radius-large,22px);
}
.ts-experience .ts-property-second {
  border-radius: var(--ts-radius-medium,16px);
}
.ts-experience [data-ts-reveal] {
  transform: translate3d(0,20px,0);
  transition-duration: 780ms,860ms;
  transition-timing-function: cubic-bezier(.16,1,.3,1);
}
.ts-experience .ts-property-copy[data-ts-reveal],
.ts-experience .ts-host-copy[data-ts-reveal] { transition-delay: 100ms; }

@media (max-width: 680px) {
  .ts-experience .ts-property,
  .ts-experience .ts-property.is-reverse { border-radius: 18px; }
  .ts-experience .ts-property-main { border-radius: 18px; }
  .ts-experience .ts-property-second { border-radius: 14px; }
}

@media (prefers-reduced-motion: reduce) {
  .ts-experience [data-ts-reveal] {
    transform: none;
    transition: none;
  }
}

/* 5.5.16 — rounded visual panels, slower editorial reveals and an intelligent
   listing reservation card. Pricing and reservation behavior are unchanged. */
.ts-experience .ts-property-visual {
  overflow: hidden;
  border-radius: 24px;
  isolation: isolate;
}

/* Ten percent visibility is enough to begin, but the longer ease lets the
   section settle softly instead of snapping into place. */
.ts-experience [data-ts-reveal] {
  opacity: 0;
  filter: blur(1px);
  transform: translate3d(0,20px,0);
  transition:
    opacity 1500ms cubic-bezier(.22,1,.36,1),
    transform 1650ms cubic-bezier(.22,1,.36,1),
    filter 1400ms cubic-bezier(.22,1,.36,1);
}
.ts-experience .ts-property-copy[data-ts-reveal],
.ts-experience .ts-host-copy[data-ts-reveal] { transition-delay: 160ms; }
.ts-experience .ts-is-visible[data-ts-reveal] {
  opacity: 1;
  filter: none;
  transform: none;
}

/* Every editorial rule now uses the same content edge. */
.ts-listing .ts-listing-about-more {
  width: 100%;
  max-width: none;
}
.ts-listing .ts-listing-about-more,
.ts-listing .ts-listing-disclosures,
.ts-listing .ts-listing-things-grid{ --ts-listing-rule: rgba(21,26,23,.14); }
.ts-listing .ts-listing-about-more,
.ts-listing .ts-listing-disclosures details,
.ts-listing .ts-listing-things-grid article { border-color: var(--ts-listing-rule); }

/* The sidebar always begins below the browser/admin header. If it is taller
   than the viewport, JavaScript moves it gently in the current scroll
   direction so neither the header nor the final action becomes trapped. */
@media (min-width: 951px) {
  .ts-listing .ts-booking-inline.is-sticky-ready {
    position: sticky;
    top: var(--ts-booking-sticky-top,20px);
    align-self: start;
    transform: translate3d(0,var(--ts-booking-sticky-shift,0),0);
    transition: transform 130ms cubic-bezier(.22,.65,.32,1);
    will-change: transform;
  }
  .ts-listing .ts-booking-inline.is-sticky-ready:has(.ts-guest-calendar:not([hidden])),
  .ts-listing .ts-booking-inline.is-sticky-ready:has(.ts-booking-completion[open]) {
    position: static;
    transform: none;
  }
}

/* One calm geometry and one divider width throughout the booking decision. */
.ts-listing .ts-listing-booking-panel {
  --ts-booking-rule: rgba(21,26,23,.14);
  border-radius: 22px;
}
.ts-listing .ts-booking-inline .ts-booking-drawer {
  border-radius: 22px;
}
.ts-listing .ts-date-grid { gap: 16px; }
.ts-listing .ts-date-choice,
.ts-listing .ts-booking-form > label:not(.ts-booking-property),
.ts-listing .ts-pet-toggle {
  width: 100%;
  border-bottom: 1px solid var(--ts-booking-rule);
}
.ts-listing .ts-rate-plan {
  width: 100%;
  margin: 15px 0 5px;
}
.ts-listing .ts-rate-plan > legend {
  display: flex;
  width: 100%;
  align-items: center;
  margin-bottom: 10px;
  white-space: nowrap;
}
.ts-listing .ts-rate-plan > legend::after { content: none; }
.ts-listing .ts-rate-plan-options { gap: 8px; }
.ts-listing .ts-rate-plan-options > label {
  min-height: 72px;
  padding: 12px 14px !important;
  border-color: var(--ts-booking-rule);
  border-radius: 15px;
}
.ts-listing .ts-rate-plan-options span { flex: 1 1 auto; }
.ts-listing .ts-rate-plan-options strong {
  letter-spacing: .035em;
  text-transform: none;
}
.ts-listing .ts-price-box {
  width: 100%;
  border-color: var(--ts-booking-rule);
  border-radius: 16px;
  background: #fffdf8;
}
.ts-listing .ts-price-lines,
.ts-listing .ts-price-total,
.ts-listing .ts-best-price-note { border-color: var(--ts-booking-rule); }
.ts-listing .ts-best-price-note {
  width: 100%;
  margin-top: 0;
}
.ts-listing .ts-best-price-note summary { width: 100%; padding: 0 2px; }

/* Contact is a deliberate secondary action, not an accidental collection of
   short and long underlines. */
.ts-listing .ts-listing-booking-panel .ts-booking-contact {
  display: flex;
  width: 100%;
  min-height: 46px;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin: 10px 0 0;
  padding: 0 14px;
  border: 1px solid var(--ts-booking-rule);
  border-radius: 14px;
  color: var(--ts-rust);
  text-decoration: none;
}
.ts-listing .ts-listing-booking-panel .ts-booking-contact::after {
  flex: none;
  content: "↗";
  font-size: 16px;
  font-weight: 400;
}
.ts-listing .ts-booking-completion {
  width: 100%;
  margin-top: 10px;
}

@media (max-width: 950px) {
  .ts-listing .ts-booking-inline.is-sticky-ready {
    position: static;
    top: auto;
    transform: none;
  }
}
@media (max-width: 680px) {
  .ts-experience .ts-property-visual { border-radius: 18px; }
  .ts-listing .ts-rate-plan > legend {
    align-items: flex-start;
    white-space: normal;
  }
  .ts-listing .ts-date-grid { gap: 12px; }
}
@media (prefers-reduced-motion: reduce) {
  .ts-experience [data-ts-reveal] {
    opacity: 1;
    filter: none;
    transform: none;
    transition: none;
  }
  .ts-listing .ts-booking-inline.is-sticky-ready { transition: none; }
}

/* 5.5.17 — clearer host story, separated trust cards and legible direct-price
   promise. This release changes presentation only; booking logic is untouched. */
.ts-experience .ts-host {
  min-height: 0;
  grid-template-columns: minmax(340px,.9fr) minmax(0,1.1fr);
  gap: clamp(38px,5vw,82px);
  align-items: center;
  padding: clamp(30px,3.8vw,58px);
}
.ts-experience .ts-host-image {
  height: clamp(520px,42vw,660px);
  min-height: 0;
  margin: 0;
  border-radius: 24px;
  box-shadow: 0 24px 70px rgba(7,15,10,.22);
}
.ts-experience .ts-host-image span {
  right: 28px;
  bottom: 26px;
  left: 28px;
  font-size: 11px;
}
.ts-experience .ts-host-copy {
  max-width: 780px;
  padding: clamp(24px,3vw,46px) 0;
}
.ts-experience .ts-host h2 {
  max-width: 12ch;
  margin: 18px 0 0;
  font-size: clamp(48px,4vw,72px);
  line-height: .98;
  letter-spacing: -.06em;
}
.ts-experience .ts-host-copy > p:not(.ts-kicker) {
  max-width: 58ch;
  margin: 24px 0 0;
  color: rgba(255,255,255,.74);
  font-size: 17px;
  line-height: 1.68;
}
.ts-experience .ts-host-stats {
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 0;
  margin-top: 34px;
  padding: 0;
  border-top: 1px solid rgba(255,255,255,.17);
  border-bottom: 1px solid rgba(255,255,255,.17);
}
.ts-experience .ts-host-stats > div {
  min-width: 0;
  padding: 22px 18px 22px 0;
}
.ts-experience .ts-host-stats > div + div {
  padding-left: 18px;
  border-left: 1px solid rgba(255,255,255,.17);
}
.ts-experience .ts-host-stats strong {
  color: #fffdf8;
  font: 400 20px/1.2 var(--ts-font-heading, Georgia, serif);
}
.ts-experience .ts-host-stats span {
  display: block;
  margin-top: 7px;
  color: rgba(255,255,255,.58);
  font-size: 11px;
  line-height: 1.45;
  letter-spacing: 0;
  text-transform: none;
}
.ts-experience.ts-lang-it .ts-host-stats strong.ts-it,
.ts-experience.ts-lang-it .ts-host-stats span.ts-it,
.ts-experience.ts-lang-de .ts-host-stats strong.ts-de,
.ts-experience.ts-lang-de .ts-host-stats span.ts-de,
.ts-experience.ts-lang-fr .ts-host-stats strong.ts-fr,
.ts-experience.ts-lang-fr .ts-host-stats span.ts-fr {
  display: block;
}




.ts-experience section.ts-voices:not(.ts-verified-reviews) .ts-voice-grid,
.ts-experience .ts-policy-grid {
  gap: clamp(16px,1.5vw,24px);
  background: transparent;
}
.ts-experience section.ts-voices:not(.ts-verified-reviews) .ts-voice-grid {
  counter-reset: ts-expectation;
}
.ts-experience .ts-policy-grid {
  counter-reset: ts-policy;
}
.ts-experience section.ts-voices:not(.ts-verified-reviews) .ts-voice-grid article,
.ts-experience .ts-policy-grid article {
  min-height: 0;
  padding: clamp(28px,2.5vw,40px);
  border: 1px solid rgba(21,26,23,.13);
  border-radius: 20px;
  background: #fffdf8;
  box-shadow: 0 12px 34px rgba(21,26,23,.035);
}
.ts-experience section.ts-voices:not(.ts-verified-reviews) .ts-voice-grid article {
  min-height: 220px;
  counter-increment: ts-expectation;
}
.ts-experience .ts-policy-grid article {
  counter-increment: ts-policy;
}
.ts-experience section.ts-voices:not(.ts-verified-reviews) .ts-voice-grid article::before,
.ts-experience .ts-policy-grid article::before {
  display: block;
  margin-bottom: 30px;
  color: var(--ts-rust);
  font: italic 400 12px/1 var(--ts-font-heading, Georgia, serif);
  letter-spacing: .08em;
}
.ts-experience section.ts-voices:not(.ts-verified-reviews) .ts-voice-grid article::before {
  content: "0" counter(ts-expectation);
}
.ts-experience .ts-policy-grid article::before {
  content: "0" counter(ts-policy);
}
.ts-experience section.ts-voices:not(.ts-verified-reviews) .ts-voice-grid h3,
.ts-experience .ts-policy-grid h3 {
  margin: 0 0 14px;
  font-size: clamp(24px,2vw,30px);
  line-height: 1.08;
}
.ts-experience section.ts-voices:not(.ts-verified-reviews) .ts-voice-grid p,
.ts-experience .ts-policy-grid p,
.ts-experience .ts-policy-grid article > div {
  margin: 0;
  color: #59615b;
  font-size: 15px;
  line-height: 1.68;
}
.ts-experience .ts-policies .ts-section-heading h2,
.ts-experience section.ts-voices:not(.ts-verified-reviews) .ts-section-heading h2 {
  max-width: 820px;
  font-size: clamp(44px,4vw,64px);
}

/* The earlier dark-panel rule was more specific than the later light design.
   Match that specificity so all price-promise text remains readable. */
.ts-experience .ts-price-promise-home > .ts-price-promise-copy > p {
  color: #465049;
  opacity: 1;
}
.ts-experience .ts-price-promise-home > .ts-price-promise-copy > a {
  color: #fffdf8;
  background: #1f3128;
  -webkit-text-fill-color: #fffdf8;
}
.ts-experience .ts-price-promise-home .ts-price-promise-terms summary {
  color: #39423c;
}
.ts-experience .ts-price-promise-home .ts-price-promise-terms small {
  color: #59615b;
}

.ts-experience .ts-footer small {
  font-size: 11px;
  line-height: 1.7;
  letter-spacing: .055em;
}

@media (max-width: 950px) {
  .ts-experience .ts-host {
    grid-template-columns: 1fr;
    gap: 0;
    padding: 28px;
  }
  .ts-experience .ts-host-image {
    height: min(620px,76vw);
    min-height: 480px;
  }
  .ts-experience .ts-host-copy {
    max-width: 760px;
    padding: 54px 12px 40px;
  }
  .ts-experience .ts-host h2 { max-width: 13ch; }
  .ts-experience .ts-voice-grid,
  .ts-experience .ts-policy-grid { grid-template-columns: 1fr; }
  .ts-experience section.ts-voices:not(.ts-verified-reviews) .ts-voice-grid article,
  .ts-experience .ts-policy-grid article { min-height: 0; }
}

@media (max-width: 680px) {
  .ts-experience .ts-host { padding: 18px; }
  .ts-experience .ts-host-image {
    height: 480px;
    min-height: 0;
    border-radius: 18px;
  }
  .ts-experience .ts-host-copy { padding: 46px 4px 30px; }
  .ts-experience .ts-host h2 {
    max-width: 12ch;
    font-size: clamp(43px,12.5vw,58px);
  }
  .ts-experience .ts-host-copy > p:not(.ts-kicker) { font-size: 16px; }
  .ts-experience .ts-host-stats { grid-template-columns: 1fr; }
  .ts-experience .ts-host-stats > div { padding: 17px 0; }
  .ts-experience .ts-host-stats > div + div {
    padding-left: 0;
    border-top: 1px solid rgba(255,255,255,.17);
    border-left: 0;
  }
  
  .ts-experience section.ts-voices:not(.ts-verified-reviews) .ts-voice-grid,
  .ts-experience .ts-policy-grid { gap: 14px; }
  .ts-experience section.ts-voices:not(.ts-verified-reviews) .ts-voice-grid article,
  .ts-experience .ts-policy-grid article {
    padding: 26px 22px;
    border-radius: 16px;
  }
  .ts-experience section.ts-voices:not(.ts-verified-reviews) .ts-voice-grid article::before,
  .ts-experience .ts-policy-grid article::before { margin-bottom: 22px; }
  .ts-experience .ts-price-promise-home > .ts-price-promise-copy > p { font-size: 16px; }
  .ts-experience .ts-footer small { font-size: 10px; }
}

/* 5.5.18 — staged editorial reveals.
   The previous reveal declared a longer transition lower in this file, but an
   older !important duration above it shortened the visible result to 650ms.
   Use one explicit animation instead: it starts gently, becomes readable in
   the middle of the motion, then settles without a sudden final snap. */
.ts-experience [data-ts-reveal] {
  opacity: 0;
  filter: blur(2.4px);
  transform: translate3d(0,24px,0);
  transition: none !important;
  animation: none;
}

.ts-experience .ts-is-visible[data-ts-reveal] {
  animation: ts-scroll-reveal-editorial 2200ms cubic-bezier(.22,.74,.18,1) both;
}

.ts-experience .ts-property-copy.ts-is-visible[data-ts-reveal],
.ts-experience .ts-host-copy.ts-is-visible[data-ts-reveal] {
  animation-delay: 180ms;
}

@keyframes ts-scroll-reveal-editorial {
  0% {
    opacity: 0;
    filter: blur(2.4px);
    transform: translate3d(0,24px,0);
  }
  28% {
    opacity: .3;
    filter: blur(1.55px);
    transform: translate3d(0,16px,0);
  }
  64% {
    opacity: .76;
    filter: blur(.45px);
    transform: translate3d(0,6px,0);
  }
  100% {
    opacity: 1;
    filter: none;
    transform: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ts-experience [data-ts-reveal],
  .ts-experience .ts-is-visible[data-ts-reveal] {
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
    transition: none !important;
    animation: none !important;
  }
}


/* 7.0.1 — Swiss search dates, clearer direct-booking value and a balanced
   host introduction. Rates, availability and checkout continue to use ISO
   date values internally; this layer changes only the guest-facing display. */

/* Keep a real native date input for validation and the platform date picker,
   while presenting an unambiguous Swiss DD.MM.YYYY value in every browser. */







/* The price promise now explains the guest benefit before the matching rule.
   Explicit colour declarations outrank the retired dark-panel styles. */
.ts-experience .ts-price-promise-home {
  align-items: start;
  background: #eee5d8;
}
.ts-experience .ts-price-promise-home .ts-price-promise-heading,
.ts-experience .ts-price-promise-home .ts-price-promise-copy {
  min-width: 0;
}
.ts-experience .ts-price-promise-home h2 {
  max-width: 12ch;
  color: #151a17;
}
.ts-experience .ts-price-promise-home .ts-price-promise-copy h3 {
  margin: 0 0 13px;
  color: #151a17;
  font: 400 clamp(27px,2.2vw,36px)/1.12 var(--ts-font-heading, Georgia, serif);
  letter-spacing: -.035em;
}
.ts-experience .ts-price-promise-home > .ts-price-promise-copy > p,
.ts-experience .ts-price-promise-home > .ts-price-promise-copy > p.ts-direct-booking-explainer,
.ts-experience .ts-price-promise-home > .ts-price-promise-copy > p.ts-price-match-rule {
  max-width: 64ch;
  color: #38423b;
  -webkit-text-fill-color: #38423b;
  opacity: 1;
}
.ts-experience .ts-price-promise-home > .ts-price-promise-copy > p.ts-direct-booking-explainer {
  font-size: 18px;
  line-height: 1.65;
}
.ts-experience .ts-price-promise-home > .ts-price-promise-copy > p.ts-price-match-rule {
  margin-top: 22px;
  padding-top: 20px;
  border-top: 1px solid rgba(21,26,23,.15);
  font-size: 15px;
  line-height: 1.65;
}
.ts-experience .ts-direct-booking-benefits {
  display: grid;
  gap: 10px;
  margin: 20px 0 0;
  padding: 0;
  list-style: none;
}
.ts-experience .ts-direct-booking-benefits li {
  position: relative;
  min-height: 46px;
  margin: 0;
  padding: 12px 15px 12px 45px;
  border: 1px solid rgba(21,26,23,.12);
  border-radius: 14px;
  color: #253029;
  background: rgba(255,253,248,.7);
  font-size: 15px;
  line-height: 1.45;
}
.ts-experience .ts-direct-booking-benefits li::before {
  position: absolute;
  top: 12px;
  left: 15px;
  display: grid;
  width: 22px;
  height: 22px;
  place-items: center;
  border-radius: 50%;
  color: #1f3128;
  background: #dce8e1;
  content: "✓";
  font-size: 12px;
  font-weight: 800;
}
.ts-experience .ts-price-promise-home > .ts-price-promise-copy > a {
  display: inline-flex;
  color: #fffdf8;
  background: #1f3128;
  -webkit-text-fill-color: #fffdf8;
}
.ts-experience .ts-price-promise-home .ts-price-promise-terms,
.ts-experience .ts-price-promise-home .ts-price-promise-terms summary,
.ts-experience .ts-price-promise-home .ts-price-promise-terms small {
  color: #4d5750;
  -webkit-text-fill-color: #4d5750;
}

/* Three useful, equally weighted host promises replace the uneven four-cell
   statistic layout. Copy remains editable through the existing Elementor
   host-title and host-text controls. */
.ts-experience .ts-host {
  grid-template-columns: minmax(360px,.92fr) minmax(0,1.08fr);
  gap: clamp(46px,5.5vw,90px);
  padding: clamp(34px,4.2vw,66px);
}
.ts-experience .ts-host-image {
  height: clamp(520px,40vw,640px);
  border-radius: 26px;
}
.ts-experience .ts-host-copy {
  max-width: 790px;
  padding: clamp(24px,3vw,44px) 0;
}
.ts-experience .ts-host h2 {
  max-width: 13.5ch;
  font-size: clamp(46px,4vw,68px);
  line-height: 1;
}
.ts-experience .ts-host-copy > p:not(.ts-kicker) {
  max-width: 61ch;
  color: rgba(255,255,255,.8);
  font-size: 18px;
  line-height: 1.7;
}
.ts-experience .ts-host-stats {
  grid-template-columns: repeat(3,minmax(0,1fr));
  margin-top: 34px;
}
.ts-experience .ts-host-stats > div {
  padding: 22px 18px 22px 0;
}
.ts-experience .ts-host-stats strong {
  color: #fffdf8;
  font: 600 16px/1.35 Arial,sans-serif;
  letter-spacing: 0;
}
.ts-experience .ts-host-stats span {
  margin-top: 8px;
  color: rgba(255,255,255,.68);
  font-size: 13px;
  line-height: 1.5;
}


@media (max-width: 1100px) {
  .ts-experience .ts-host {
    grid-template-columns: minmax(300px,.86fr) minmax(0,1.14fr);
    gap: 38px;
    padding: 32px;
  }
  .ts-experience .ts-host-stats {
    grid-template-columns: 1fr;
  }
  .ts-experience .ts-host-stats > div {
    padding: 15px 0;
  }
  .ts-experience .ts-host-stats > div + div {
    padding-left: 0;
    border-top: 1px solid rgba(255,255,255,.17);
    border-left: 0;
  }
}
@media (max-width: 950px) {
  .ts-experience .ts-host {
    grid-template-columns: 1fr;
    gap: 0;
    padding: 28px;
  }
  .ts-experience .ts-host-image {
    height: min(600px,76vw);
  }
  .ts-experience .ts-host-copy {
    padding: 52px 10px 34px;
  }
}
@media (max-width: 680px) {
  
  .ts-experience .ts-price-promise-home {
    gap: 28px;
  }
  .ts-experience .ts-price-promise-home h2 {
    max-width: 13ch;
    font-size: clamp(36px,10vw,48px);
  }
  .ts-experience .ts-price-promise-home > .ts-price-promise-copy > p.ts-direct-booking-explainer {
    font-size: 16px;
  }
  .ts-experience .ts-direct-booking-benefits li {
    font-size: 15px;
  }
  .ts-experience .ts-host {
    padding: 18px;
  }
  .ts-experience .ts-host-image {
    height: 460px;
    border-radius: 19px;
  }
  .ts-experience .ts-host-copy {
    padding: 42px 4px 28px;
  }
  .ts-experience .ts-host h2 {
    max-width: 13ch;
    font-size: clamp(40px,11.5vw,54px);
  }
  .ts-experience .ts-host-copy > p:not(.ts-kicker) {
    font-size: 16px;
  }
}

/* 7.0.0 — single-plugin continuity build.
   These final rules bring the approved 6.1.2 balance to the established
   all-in-one Ticino Stays widget used by the live Home page. They alter only
   presentation; booking, rates, availability, calendars and payment logic
   remain in the existing PHP and JavaScript core. */

/* The finder stays immediately below the hero without repeating explanatory
   copy, leaving the search controls and the properties in view sooner. */





/* Larger native dog controls with reliable multilingual wrapping. */
.ts-experience .ts-pet-toggle{
  min-width: 0;
  align-items: center;
  gap: 10px;
  text-transform: none;
}
.ts-experience .ts-pet-toggle input[type="checkbox"]{
  flex: 0 0 22px;
  width: 22px;
  height: 22px;
  min-height: 22px;
  margin: 0;
  padding: 0;
  accent-color: var(--ts-forest,#1f3128);
}
.ts-experience .ts-pet-toggle span{
  min-width: 0;
  overflow-wrap: anywhere;
}

/* Good to Know is a concise disclosure rather than a full-width billboard. */





/* Compact the factual rules section while retaining every term. */
.ts-listing .ts-listing-things {
  padding-top: clamp(44px,5vw,72px);
  padding-bottom: clamp(44px,5vw,72px);
}
.ts-listing .ts-listing-things-grid {
  gap: 14px;
}
.ts-listing .ts-listing-things-grid article {
  min-height: 0;
  padding: clamp(22px,2.4vw,32px);
  border-radius: 18px;
}
.ts-listing .ts-listing-things-grid h3 {
  font-size: clamp(24px,2vw,29px);
  line-height: 1.15;
}
.ts-listing .ts-listing-things-grid p,
.ts-listing .ts-listing-things-grid li {
  font-size: 16px;
  line-height: 1.55;
}

/* Reservation choices are full-width, sentence case and never clip. */
.ts-listing .ts-rate-plan-options,
.ts-booking-backdrop:not(.ts-booking-inline) .ts-rate-plan-options {
  grid-template-columns: 1fr;
}
.ts-experience .ts-rate-plan-options > label {
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  align-items: center !important;
  padding: 11px 13px !important;
  border-radius: 14px;
}
.ts-experience .ts-rate-plan-options span {
  min-width: 0;
  overflow-wrap: anywhere;
}
.ts-experience .ts-rate-plan-options strong,
.ts-experience .ts-rate-plan-options small {
  letter-spacing: 0 !important;
  text-transform: none !important;
}

/* Normal page flow is the safe default. Only a genuinely wide and tall
   desktop receives a sticky card, so the final action cannot be trapped. */
.ts-listing .ts-booking-inline,
.ts-listing .ts-booking-inline.is-sticky-ready {
  position: static;
  top: auto;
  z-index: auto;
  transform: none;
}
@media (min-width: 1181px) and (min-height: 900px) {
  .ts-listing .ts-booking-inline,
  .ts-listing .ts-booking-inline.is-sticky-ready {
    position: sticky;
    top: var(--ts-booking-sticky-top,24px);
    z-index: 12;
  }
}

/* Calm, readable entrance motion matching the 6.1.2 presentation. */
.ts-experience [data-ts-reveal] {
  opacity: .985;
  filter: none;
  transform: translate3d(0,6px,0);
  transition: none !important;
  animation: none !important;
}
.ts-experience .ts-is-visible[data-ts-reveal] {
  opacity: 1;
  filter: none;
  transform: none;
  transition:
    opacity 620ms cubic-bezier(.22,1,.36,1),
    transform 680ms cubic-bezier(.22,1,.36,1) !important;
}

@media (max-width: 950px) {
  .ts-listing .ts-booking-inline,
  .ts-listing .ts-booking-inline.is-sticky-ready {
    position: static;
    top: auto;
    transform: none;
  }
}
@media (max-width: 680px) {
  
  
  .ts-experience .ts-pet-toggle{
    padding: 10px 2px;
  }
  
  
  .ts-listing .ts-listing-things-grid article {
    padding: 22px 20px;
    border-radius: 16px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .ts-experience [data-ts-reveal],
  .ts-experience .ts-is-visible[data-ts-reveal] {
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
    transition: none !important;
    animation: none !important;
  }
}
/* 7.1.0 — homepage clarity and safer operational controls.
   Final presentation overrides keep the established identity while reducing
   repetition and making booking the clearest action. */
.ts-experience .ts-hero-reassurance {
  max-width: 520px;
  margin: 18px 0 0 clamp(42px,8vw,140px);
  color: rgba(255,255,255,.78);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: .025em;
  text-transform: none;
}






.ts-experience .ts-filter-row {
  margin-top: 18px;
}

.ts-experience .ts-home-trust-strip {
  display: grid;
  grid-template-columns: repeat(4,minmax(0,1fr)) auto;
  gap: 0;
  align-items: stretch;
  margin-top: clamp(24px,3vw,42px);
  overflow: hidden;
  border: 1px solid rgba(21,26,23,.14);
  border-radius: 18px;
  background: rgba(255,253,248,.72);
}
.ts-experience .ts-home-trust-item {
  display: grid;
  align-content: center;
  min-height: 96px;
  padding: 18px 22px;
  border-right: 1px solid rgba(21,26,23,.12);
}
.ts-experience .ts-home-trust-item strong {
  font: 400 20px/1.15 var(--ts-font-heading, Georgia, serif);
}
.ts-experience .ts-home-trust-item span {
  margin-top: 6px;
  color: var(--ts-soft);
  font-size: 13px;
  line-height: 1.4;
}
.ts-experience .ts-home-trust-contact {
  display: flex;
  min-width: 170px;
  align-items: center;
  justify-content: center;
  padding: 18px 24px;
  color: #fffdf8;
  background: var(--ts-rust);
  font-size: 12px;
  font-weight: 750;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.ts-experience .ts-home-trust-strip + .ts-home-intro {
  padding-top: clamp(56px,6vw,88px);
}

.ts-experience .ts-property,
.ts-experience .ts-property-visual {
  min-height: 720px;
}
.ts-experience .ts-property-copy {
  padding: clamp(42px,4.5vw,70px);
}
.ts-experience .ts-property-index {
  margin-bottom: 20px;
}
.ts-experience .ts-property-copy h3 {
  font-size: clamp(42px,4.1vw,66px);
}
.ts-experience .ts-mood {
  font-size: 19px;
}
.ts-experience .ts-meta {
  margin-top: 16px;
  font-size: 12px;
  font-weight: 650;
}
.ts-experience .ts-summary {
  display: -webkit-box;
  max-width: 62ch;
  margin-top: 18px;
  overflow: hidden;
  color: #515953;
  font-size: 15px;
  line-height: 1.62;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}
.ts-experience .ts-amenities-label {
  margin: 20px 0 0;
  color: var(--ts-rust);
  font-size: 11px;
  font-weight: 750;
  letter-spacing: .11em;
  text-transform: uppercase;
}
.ts-experience .ts-feature-list {
  grid-template-columns: 1fr;
  gap: 8px;
  margin-top: 8px;
  padding-top: 12px;
}
.ts-experience .ts-feature-list li {
  font-size: 14px;
  line-height: 1.45;
}
.ts-experience .ts-pet-line {
  margin-top: 13px;
  font-size: 13px;
}
.ts-experience details.ts-note {
  margin-top: 14px;
  padding: 0;
  border: 0;
  color: var(--ts-soft);
}
.ts-experience details.ts-note summary {
  display: flex;
  min-height: 40px;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 0 2px;
  border-top: 1px solid var(--ts-line);
  border-bottom: 1px solid var(--ts-line);
  color: var(--ts-ink);
  cursor: pointer;
  list-style: none;
  font-size: 12px;
  font-weight: 750;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.ts-experience details.ts-note summary::-webkit-details-marker {
  display: none;
}
.ts-experience details.ts-note summary i {
  font: 400 20px/1 Arial,sans-serif;
  transition: transform 220ms ease;
}
.ts-experience details.ts-note[open] summary i {
  transform: rotate(45deg);
}
.ts-experience details.ts-note p {
  margin: 0;
  padding: 12px 2px 2px;
  font-size: 13px;
  line-height: 1.55;
}
.ts-experience .ts-property-actions {
  margin-top: 18px;
}
.ts-experience .ts-property-actions .ts-property-details {
  /* The secondary action reads as secondary through weight and border, not by
     dropping three sizes below the primary beside it. */
  font-size: 15px;
}
.ts-experience .ts-property-interlude {
  display: grid;
  min-height: 200px;
  align-content: center;
  gap: 12px;
  padding: clamp(46px,5vw,72px) clamp(28px,6vw,92px);
  border-radius: 0;
  background: #ebe3d6;
}
.ts-experience .ts-property-interlude::before {
  opacity: .28;
}
.ts-experience .ts-property-interlude > p {
  max-width: 24ch;
  margin: 0;
  font-size: clamp(31px,3vw,46px);
  line-height: 1.04;
}
.ts-experience .ts-mobile-mid-cta {
  display: none;
}

.ts-experience .ts-price-promise-home {
  padding-top: clamp(70px,7vw,105px);
  padding-bottom: clamp(70px,7vw,105px);
}
.ts-experience .ts-price-promise-home h2 {
  font-size: clamp(42px,4.6vw,68px);
}
.ts-experience .ts-host {
  min-height: 680px;
}
.ts-experience .ts-host-image {
  min-height: 580px;
}
.ts-experience .ts-faq {
  padding-top: clamp(72px,7vw,105px);
  padding-bottom: clamp(56px,6vw,88px);
}
.ts-experience .ts-faq-list {
  margin-top: 42px;
}
.ts-experience .ts-faq summary {
  min-height: 72px;
}
.ts-experience .ts-policies {
  padding-bottom: clamp(70px,7vw,105px);
}
.ts-experience .ts-policy-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  margin-top: 34px;
  border-top: 1px solid var(--ts-line);
  background: transparent;
}
.ts-experience .ts-policy-grid details {
  border-bottom: 1px solid var(--ts-line);
}
.ts-experience .ts-policy-grid summary {
  display: flex;
  min-height: 68px;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  cursor: pointer;
  list-style: none;
  font: 400 24px/1.2 var(--ts-font-heading, Georgia, serif);
}
.ts-experience .ts-policy-grid summary::-webkit-details-marker {
  display: none;
}
.ts-experience .ts-policy-grid summary i {
  font: 400 24px/1 Arial,sans-serif;
  transition: transform 220ms ease;
}
.ts-experience .ts-policy-grid details[open] summary i {
  transform: rotate(45deg);
}
.ts-experience .ts-policy-grid details > div {
  max-width: 850px;
  padding: 0 44px 24px 0;
  color: var(--ts-soft);
  font-size: 15px;
  line-height: 1.68;
}

@media (max-width: 1100px) {
  .ts-experience .ts-home-trust-strip {
    grid-template-columns: repeat(2,minmax(0,1fr));
  }
  .ts-experience .ts-home-trust-item:nth-child(2) {
    border-right: 0;
  }
  .ts-experience .ts-home-trust-item:nth-child(-n+2) {
    border-bottom: 1px solid rgba(21,26,23,.12);
  }
  .ts-experience .ts-home-trust-contact {
    grid-column: 1/-1;
    min-height: 54px;
  }
}

@media (max-width: 950px) {
  .ts-experience .ts-property,
  .ts-experience .ts-property-visual {
    min-height: 580px;
  }
  .ts-experience .ts-property-copy {
    padding: 48px clamp(24px,6vw,54px) 58px;
  }
}

@media (max-width: 680px) {
  .ts-experience .ts-hero-reassurance {
    margin: 16px 0 0;
    font-size: 13px;
  }
  
  
  
  .ts-experience .ts-filter-row {
    gap: 7px;
  }
  .ts-experience .ts-filter-row button {
    min-height: 40px;
    padding: 0 13px;
  }
  .ts-experience .ts-home-trust-strip {
    width: calc(100% - 28px);
    grid-template-columns: 1fr 1fr;
    margin-top: 18px;
    border-radius: 16px;
  }
  .ts-experience .ts-home-trust-item {
    min-height: 92px;
    padding: 15px 13px;
  }
  .ts-experience .ts-home-trust-item strong {
    font-size: 17px;
  }
  .ts-experience .ts-home-trust-item span {
    font-size: 12px;
  }
  .ts-experience .ts-home-trust-strip + .ts-home-intro {
    padding-top: 42px;
  }
  .ts-experience .ts-property,
  .ts-experience .ts-property-visual {
    min-height: 0;
  }
  .ts-experience .ts-property-visual {
    height: 430px;
  }
  .ts-experience .ts-property-copy {
    padding: 36px 20px 44px;
  }
  .ts-experience .ts-property-index {
    margin-bottom: 14px;
  }
  .ts-experience .ts-property-copy h3 {
    font-size: clamp(40px,11.5vw,54px);
  }
  .ts-experience .ts-mood {
    font-size: 18px;
  }
  .ts-experience .ts-meta,
  .ts-experience .ts-pet-line {
    font-size: 14px;
  }
  .ts-experience .ts-summary,
  .ts-experience .ts-feature-list li,
  .ts-experience details.ts-note p {
    font-size: 15px;
  }
  .ts-experience .ts-property-interlude {
    width: 100%;
    min-height: 150px;
    padding: 34px 20px;
  }
  .ts-experience .ts-property-interlude > p {
    max-width: 22ch;
    font-size: clamp(27px,8vw,36px);
  }
  .ts-experience .ts-mobile-mid-cta {
    display: block;
    padding: 0 20px 28px;
    background: #ebe3d6;
  }
  .ts-experience .ts-mobile-mid-cta button {
    width: 100%;
    min-height: 52px;
    border-radius: 999px;
    color: #fffdf8;
    background: var(--ts-forest);
    font-size: 12px;
    font-weight: 750;
    letter-spacing: .07em;
    text-transform: uppercase;
  }
  .ts-experience .ts-price-promise-home {
    padding-top: 58px;
    padding-bottom: 58px;
  }
  .ts-experience .ts-host {
    min-height: 0;
  }
  .ts-experience .ts-host-image {
    min-height: 0;
  }
  .ts-experience .ts-faq {
    padding-top: 58px;
    padding-bottom: 44px;
  }
  .ts-experience .ts-faq-list {
    margin-top: 28px;
  }
  .ts-experience .ts-faq summary {
    min-height: 66px;
    font-size: 24px;
  }
  .ts-experience .ts-policy-grid summary {
    min-height: 64px;
    font-size: 22px;
  }
  .ts-experience .ts-policy-grid details > div {
    padding-right: 0;
    font-size: 15px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ts-experience details.ts-note summary i,
  .ts-experience .ts-policy-grid summary i {
    transition: none;
  }
}

/* 7.1.1 — targeted homepage clarity fixes.
   These overrides preserve the established visual system while improving
   filter discoverability, card legibility and editorial rhythm. */
.ts-experience .ts-filter-scroll {
  position: relative;
  margin-top: 18px;
}
.ts-experience .ts-filter-scroll::after {
  position: absolute;
  z-index: 1;
  top: 1px;
  right: 1px;
  bottom: 1px;
  width: 86px;
  border-radius: 0 999px 999px 0;
  background: linear-gradient(90deg,rgba(255,253,248,0),rgba(255,253,248,.9) 48%,#fffdf8 78%);
  content: "";
  pointer-events: none;
}
.ts-experience .ts-filter-scroll-cue {
  position: absolute;
  z-index: 2;
  top: 50%;
  right: 12px;
  display: grid;
  width: 36px;
  height: 36px;
  place-items: center;
  border: 1px solid rgba(21,26,23,.16);
  border-radius: 999px;
  color: var(--ts-forest);
  background: #fffdf8;
  box-shadow: 0 5px 16px rgba(21,26,23,.1);
  font: 500 25px/1 Arial,sans-serif;
  transform: translateY(-50%);
  pointer-events: none;
}
.ts-experience .ts-filter-scroll .ts-filter-row {
  margin-top: 0;
  padding-right: 78px;
  scroll-padding-right: 78px;
  scrollbar-width: none;
}
.ts-experience .ts-filter-scroll .ts-filter-row::-webkit-scrollbar {
  display: none;
}
.ts-experience .ts-filter-row > button {
  font-size: 14px;
  font-weight: 760;
}
.ts-experience .ts-filter-row > button:last-of-type {
  margin-right: 14px;
}
.ts-experience .ts-filter-row > label span,
.ts-experience .ts-home-trust-item span,
.ts-experience .ts-home-trust-contact,
.ts-experience .ts-place,
.ts-experience .ts-property-index,
.ts-experience .ts-gallery-count,
.ts-experience .ts-property-actions button,
.ts-experience .ts-property-actions a{
  font-size: 14px;
}
.ts-experience .ts-kicker,
.ts-experience .ts-amenities-label,
.ts-experience details.ts-note summary {
  font-size: 14px;
  font-weight: 800;
}
.ts-experience .ts-summary,
.ts-experience .ts-feature-list li,
.ts-experience details.ts-note p,
.ts-experience .ts-direct-booking-explainer,
.ts-experience .ts-direct-booking-benefits,
.ts-experience .ts-price-match-rule,
.ts-experience .ts-host-copy > p:not(.ts-kicker),
.ts-experience .ts-faq details > p,
.ts-experience .ts-policy-grid details > div{
  font-size: 16px;
}
.ts-experience .ts-feature-list {
  gap: 11px;
}
.ts-experience .ts-feature-list li {
  line-height: 1.62;
}
.ts-experience .ts-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 18px;
  align-items: center;
  font-size: 16px;
  line-height: 1.4;
}
.ts-experience .ts-meta > i {
  display: none;
}
.ts-experience .ts-meta > span {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  white-space: nowrap;
}
.ts-experience .ts-meta-type::before,
.ts-experience .ts-meta b {
  display: inline-grid;
  width: 22px;
  height: 22px;
  place-items: center;
  border-radius: 50%;
  color: var(--ts-forest);
  background: #e6eee9;
  font: 700 13px/1 Arial,sans-serif;
}
.ts-experience .ts-meta-type::before {
  content: "⌂";
}
.ts-experience .ts-meta b {
  font-weight: 700;
}
.ts-experience .ts-property-interlude.ts-shell {
  width: 100%;
  max-width: none;
  margin-right: 0;
  margin-left: 0;
}
.ts-experience .ts-property-interlude > span {
  font-size: 14px;
  font-weight: 800;
}

.ts-experience .ts-mobile-mid-cta {
  display: none !important;
}

@media (max-width: 680px) {
  .ts-experience .ts-filter-scroll {
    margin-top: 15px;
  }
  .ts-experience .ts-filter-scroll::after {
    width: 72px;
    border-radius: 0 16px 16px 0;
  }
  .ts-experience .ts-filter-scroll-cue {
    right: 8px;
    width: 34px;
    height: 34px;
  }
  .ts-experience .ts-filter-scroll .ts-filter-row {
    padding-right: 68px;
  }
  .ts-experience .ts-filter-row > button {
    min-height: 44px;
    padding-inline: 16px;
  }
  .ts-experience .ts-meta {
    gap: 9px 13px;
  }
  .ts-experience .ts-property-interlude {
    min-height: 180px;
    padding: 42px 22px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ts-experience .ts-filter-scroll-cue {
    transition: none;
  }
}

/* 7.3.3 — resilient, privacy-safe Leaflet + OpenStreetMap location maps. */
.ts-experience .ts-map-fallback {
  position: absolute;
  z-index: 900;
  inset: 0;
  display: grid;
  margin: 0;
  padding: 28px;
  gap: 14px;
  align-content: center;
  place-items: center;
  color: #4d5a52;
  background:
    radial-gradient(circle at 24% 30%,rgba(217,189,143,.26),transparent 30%),
    linear-gradient(135deg,#edf0e9 0%,#e2e8df 54%,#ece8de 100%);
  text-align: center;
  transition: opacity 280ms ease,visibility 280ms ease;
}
.ts-experience [data-ts-map].is-ready > .ts-map-fallback {
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
}
.ts-experience .ts-map-loading-mark {
  display: block;
  width: 42px;
  height: 42px;
  border: 1px solid rgba(29,62,47,.28);
  border-top-color: var(--ts-rust);
  border-radius: 50%;
  animation: ts-map-loading 900ms linear infinite;
}
.ts-experience .ts-map-loading-label,
.ts-experience .ts-map-error-label {
  max-width: 420px;
  font-size: 15px;
  line-height: 1.55;
}
.ts-experience .ts-map-error-label {
  display: none;
}
.ts-experience [data-ts-map].has-tile-error:not(.is-ready) .ts-map-loading-mark,
.ts-experience [data-ts-map].has-tile-error:not(.is-ready) .ts-map-loading-label {
  display: none;
}
.ts-experience [data-ts-map].has-tile-error:not(.is-ready) .ts-map-error-label {
  display: block;
}
@keyframes ts-map-loading {
  to { transform: rotate(360deg); }
}
.ts-experience .leaflet-container {
  z-index: 0;
  color: var(--ts-ink);
  background: #dce4dc;
  font: 15px/1.45 var(--ts-font-body, "Helvetica Neue", Helvetica, Arial, sans-serif);
}
.ts-experience .leaflet-tile-pane {
  filter: grayscale(.42) sepia(.12) saturate(.78) hue-rotate(340deg) brightness(1.035) contrast(.92);
}
.ts-experience .leaflet-bar {
  overflow: hidden;
  border: 1px solid rgba(29,62,47,.2);
  border-radius: 13px;
  box-shadow: 0 12px 28px rgba(21,26,23,.14);
}
.ts-experience .leaflet-control-zoom a {
  width: 38px;
  height: 38px;
  border-color: rgba(29,62,47,.14);
  color: var(--ts-forest);
  background: rgba(255,253,248,.96);
  line-height: 36px;
  transition: color 180ms ease,background-color 180ms ease;
}
.ts-experience .leaflet-control-zoom a:hover,
.ts-experience .leaflet-control-zoom a:focus-visible {
  color: #fffdf8;
  background: var(--ts-rust);
}
.ts-experience .leaflet-control-attribution {
  margin: 0 8px 7px 0 !important;
  padding: 3px 7px;
  border-radius: 8px;
  color: #4c554f;
  background: rgba(255,253,248,.92);
  box-shadow: 0 4px 14px rgba(21,26,23,.08);
  font-size: 11px;
}
.ts-experience .leaflet-control-attribution a {
  color: #244e39;
  text-decoration: underline;
}
.ts-experience .leaflet-popup-content-wrapper {
  border: 1px solid rgba(29,62,47,.12);
  border-radius: 18px;
  color: var(--ts-ink);
  background: #fffdf8;
  box-shadow: 0 16px 40px rgba(21,26,23,.18);
}
.ts-experience .leaflet-popup-tip {
  background: #fffdf8;
}
.ts-experience .leaflet-popup-content {
  min-width: 190px;
  margin: 16px 18px;
}
.ts-experience .ts-map-popup {
  display: grid;
  gap: 5px;
}
.ts-experience .ts-map-popup strong {
  font: 400 20px/1.2 var(--ts-font-heading, Georgia, serif);
}
.ts-experience .ts-map-popup span {
  color: var(--ts-soft);
  font-size: 13px;
}
.ts-experience .ts-map-popup a {
  width: max-content;
  margin-top: 6px;
  color: var(--ts-rust);
  font-size: 12px;
  font-weight: 800;
  text-decoration: underline;
  text-underline-offset: 4px;
}
.ts-listing .ts-property-map-card {
  margin-top: 28px;
  overflow: hidden;
  border: 1px solid rgba(21,26,23,.14);
  border-radius: 22px;
  background: #fffdf8;
}
.ts-listing .ts-property-map-copy {
  display: grid;
  grid-template-columns: minmax(170px,.4fr) minmax(0,1fr);
  gap: 24px;
  align-items: start;
  padding: 24px 28px;
}
.ts-listing .ts-property-map-copy p {
  margin: 0;
}
.ts-listing .ts-property-map-copy > p:last-child {
  max-width: 660px;
  color: #505851;
  font-size: 15px;
  line-height: 1.6;
}
.ts-listing .ts-property-map {
  position: relative;
  min-height: 390px;
  border-top: 1px solid rgba(21,26,23,.12);
}
.ts-experience .ts-collection-map {
  padding-top: clamp(78px,8vw,120px);
  padding-bottom: clamp(86px,9vw,140px);
}
.ts-experience .ts-collection-map-heading {
  display: grid;
  grid-template-columns: minmax(0,1.15fr) minmax(300px,.55fr);
  gap: clamp(40px,7vw,105px);
  align-items: end;
  margin-bottom: 42px;
}
.ts-experience .ts-collection-map-heading h2 {
  max-width: 820px;
  margin: 18px 0 0;
  font: 400 clamp(48px,6vw,88px)/.96 var(--ts-font-heading, Georgia, serif);
  letter-spacing: -.06em;
}
.ts-experience .ts-collection-map-heading > div:last-child > p {
  margin: 0;
  color: var(--ts-soft);
  font-size: 17px;
  line-height: 1.65;
}
.ts-experience .ts-collection-map-heading small {
  display: block;
  margin-top: 16px;
  color: var(--ts-soft);
  font-size: 13px;
  line-height: 1.55;
}
.ts-experience .ts-collection-map-layout {
  display: grid;
  min-height: 540px;
  grid-template-columns: minmax(0,1.55fr) minmax(260px,.55fr);
  overflow: hidden;
  border: 1px solid var(--ts-line);
  border-radius: 28px;
  background: #fffdf8;
  box-shadow: 0 28px 80px rgba(21,26,23,.11);
}
.ts-experience .ts-collection-map-canvas {
  position: relative;
  min-height: 540px;
}
.ts-experience .ts-collection-map-list {
  display: grid;
  align-content: stretch;
  margin: 0;
  padding: 0;
  border-left: 1px solid var(--ts-line);
  list-style: none;
}
.ts-experience .ts-collection-map-list li {
  display: grid;
  grid-template-columns: 42px minmax(0,1fr);
  gap: 14px;
  align-items: center;
  padding: 15px 20px;
  border-bottom: 1px solid var(--ts-line);
  transition: background-color 220ms ease;
}
.ts-experience .ts-collection-map-list li:last-child {
  border-bottom: 0;
}
.ts-experience .ts-collection-map-list li:hover,
.ts-experience .ts-collection-map-list li.is-active {
  background: linear-gradient(90deg,#f3eadf 0%,#f8f3eb 100%);
}
.ts-experience .ts-collection-map-list button {
  display: grid;
  width: 40px;
  height: 40px;
  place-items: center;
  border-radius: 50%;
  color: #fffdf8;
  background: var(--ts-forest);
  cursor: pointer;
  font-size: 13px;
  font-weight: 800;
  transition: transform 180ms ease,background-color 180ms ease;
}
.ts-experience .ts-collection-map-list button:hover,
.ts-experience .ts-collection-map-list button:focus-visible,
.ts-experience .ts-collection-map-list li.is-active button {
  background: var(--ts-rust);
  transform: translateY(-2px);
}
.ts-experience .ts-collection-map-list button:focus-visible,
.ts-experience .ts-collection-map-link:focus-visible,
.ts-experience .ts-map-popup a:focus-visible {
  outline: 3px solid #d9bd8f;
  outline-offset: 3px;
}
.ts-experience .ts-collection-map-link {
  display: grid;
  min-width: 0;
  gap: 2px;
}
.ts-experience .ts-collection-map-link strong {
  overflow: hidden;
  font: 400 18px/1.2 var(--ts-font-heading, Georgia, serif);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ts-experience .ts-collection-map-link span {
  color: var(--ts-soft);
  font-size: 12px;
}
.ts-experience .ts-map-pin {
  border: 0;
  background: transparent;
}
.ts-experience .ts-map-pin-number {
  display: grid;
  width: 40px;
  height: 40px;
  place-items: center;
  border: 3px solid #fffdf8;
  border-radius: 50%;
  color: #fffdf8;
  background: var(--ts-forest);
  box-shadow: 0 7px 20px rgba(21,26,23,.28);
  font-size: 12px;
  font-weight: 850;
  transition: transform 180ms ease,background-color 180ms ease;
}
.ts-experience .ts-map-pin:hover .ts-map-pin-number,
.ts-experience .ts-map-pin:focus .ts-map-pin-number {
  background: var(--ts-rust);
  transform: translateY(-2px) scale(1.04);
}

@media (max-width: 950px) {
  .ts-experience .ts-collection-map-heading {
    grid-template-columns: 1fr;
    gap: 24px;
  }
  .ts-experience .ts-collection-map-layout {
    grid-template-columns: 1fr;
  }
  .ts-experience .ts-collection-map-canvas {
    min-height: 430px;
  }
  .ts-experience .ts-collection-map-list {
    grid-template-columns: 1fr 1fr;
    border-top: 1px solid var(--ts-line);
    border-left: 0;
  }
  .ts-experience .ts-collection-map-list li:nth-child(odd) {
    border-right: 1px solid var(--ts-line);
  }
}

@media (max-width: 680px) {
  .ts-listing .ts-property-map-copy {
    grid-template-columns: 1fr;
    gap: 8px;
    padding: 20px;
  }
  .ts-listing .ts-property-map {
    min-height: 330px;
  }
  .ts-experience .ts-collection-map {
    padding-top: 64px;
    padding-bottom: 74px;
  }
  .ts-experience .ts-collection-map-heading {
    margin-bottom: 26px;
  }
  .ts-experience .ts-collection-map-heading h2 {
    font-size: clamp(40px,12vw,55px);
  }
  .ts-experience .ts-collection-map-heading > div:last-child > p {
    font-size: 16px;
  }
  .ts-experience .ts-collection-map-layout {
    min-height: 0;
    border-radius: 18px;
  }
  .ts-experience .ts-collection-map-canvas {
    min-height: 350px;
  }
  .ts-experience .ts-collection-map-list {
    grid-template-columns: 1fr;
  }
  .ts-experience .ts-collection-map-list li:nth-child(odd) {
    border-right: 0;
  }
  .ts-experience .ts-collection-map-list li {
    min-height: 68px;
    padding: 12px 16px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ts-experience .ts-map-fallback {
    transition: none;
  }
  .ts-experience .ts-map-loading-mark {
    animation: none;
    border-color: var(--ts-rust);
  }
  .ts-experience .ts-collection-map-list li,
  .ts-experience .ts-collection-map-list button,
  .ts-experience .ts-map-pin-number {
    transition: none;
  }
}

/* 7.3.5 — clearer property facts, stronger scan hierarchy, and a reliable
   full-bleed editorial pause between properties. Booking logic is unchanged. */
.ts-experience .ts-meta-type::before {
  display: none;
  content: none;
}
.ts-experience .ts-meta .ts-meta-icon {
  display: inline-grid;
  width: 32px;
  height: 32px;
  flex: 0 0 32px;
  place-items: center;
  border-radius: 50%;
  color: var(--ts-forest);
  background: #e6eee9;
}
.ts-experience .ts-meta .ts-meta-icon svg {
  width: 17px;
  height: 17px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.65;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.ts-experience .ts-meta > span {
  gap: 9px;
  color: #505852;
  font-weight: 650;
}

.ts-experience .ts-collection-map-link strong {
  color: var(--ts-ink);
  font: 700 19px/1.25 var(--ts-font-heading, Georgia, serif);
  letter-spacing: -.015em;
}
.ts-experience .ts-collection-map-link span {
  color: #535b55;
  font-size: 14px;
  font-weight: 520;
  line-height: 1.4;
}

.ts-experience .ts-home-trust-item strong {
  color: var(--ts-ink);
  font: 700 20px/1.2 var(--ts-font-heading, Georgia, serif);
}
.ts-experience .ts-home-trust-item span {
  color: #4d554f;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.45;
}
.ts-experience .ts-home-trust-contact {
  font-size: 14px;
  font-weight: 820;
}

.ts-experience .ts-properties > .ts-property-interlude.ts-shell {
  width: min(1380px, calc(100% - 48px));
  max-width: 1380px;
  margin-right: auto;
  margin-left: auto;
  background: #ebe3d6;
  box-shadow: 0 0 0 100vmax #ebe3d6;
  clip-path: inset(0 -100vmax);
}
.ts-experience .ts-properties > .ts-property-interlude.ts-shell::before {
  display: none;
  content: none;
}

@media (max-width: 680px) {
  .ts-experience .ts-meta .ts-meta-icon {
    width: 30px;
    height: 30px;
    flex-basis: 30px;
  }
  .ts-experience .ts-meta .ts-meta-icon svg {
    width: 16px;
    height: 16px;
  }
  .ts-experience .ts-home-trust-item strong {
    font-size: 18px;
  }
  .ts-experience .ts-home-trust-item span {
    font-size: 13px;
  }
  .ts-experience .ts-properties > .ts-property-interlude.ts-shell {
    width: calc(100% - 36px);
  }
}

/* 7.3.7 self-service font studio. This final layer overrides legacy font shorthands. */
.ts-experience .ts-hero h1 {
  font-family: var(--ts-font-hero, var(--ts-font-heading, Georgia, serif));
}

.ts-experience .ts-property-copy h3,
.ts-listing-hero h1,
.ts-listing-final h2,
.ts-listing-related h3,
.ts-marketing-property-grid h2 {
  font-family: var(--ts-font-property, var(--ts-font-heading, Georgia, serif));
}

.ts-experience .ts-manifesto h2,
.ts-experience .ts-section-heading h2,
.ts-experience .ts-collection-intro h2,
.ts-experience .ts-host h2,
.ts-listing-content h2,
.ts-listing-related > h2,
.ts-marketing-page > header h1 {
  font-family: var(--ts-font-section, var(--ts-font-heading, Georgia, serif));
}

.ts-experience .ts-property-interlude > p {
  font-family: var(--ts-font-interlude, var(--ts-font-heading, Georgia, serif));
}

/* 7.4.0 — complete property pages and verified review hub.
   This final layer standardises the seven listing pages without changing
   availability, pricing, calendar synchronisation or payment behaviour. */
.ts-listing {
  --ts-listing-card: #fffdf8;
  --ts-listing-soft: #f1eadf;
  --ts-listing-rule: rgba(21,26,23,.13);
  --ts-listing-radius: 22px;
  color: var(--ts-ink,#151a17);
}
.ts-listing .ts-listing-icon {
  width: 21px;
  height: 21px;
  flex: 0 0 21px;
  color: var(--ts-rust,#9f5034);
}
.ts-listing-hero {
  min-height: min(700px,calc(100vh - 36px));
  grid-template-columns: minmax(390px,.78fr) minmax(0,1.22fr);
  align-items: stretch;
}
.ts-listing-hero-copy {
  min-width: 0;
  padding: clamp(48px,5.5vw,88px);
}
.ts-listing-hero h1 {
  max-width: 10.5ch;
  margin: 16px 0;
  font-size: clamp(54px,5.7vw,92px);
  line-height: .93;
  overflow-wrap: anywhere;
}
.ts-listing-hero em {
  max-width: 24ch;
  font-size: clamp(22px,2vw,32px);
}
.ts-listing-facts {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  margin-top: 27px;
}
.ts-listing-facts > span {
  display: inline-flex;
  min-height: 38px;
  align-items: center;
  gap: 7px;
}
.ts-listing-facts b {
  color: #444c46;
  font-size: 15px;
  font-weight: 650;
}
.ts-listing-rating {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 7px;
  margin: 15px 0 0;
  font-size: 14px;
}
.ts-listing-rating a {
  color: inherit;
  font-weight: 750;
  text-decoration-thickness: 1px;
  text-underline-offset: 4px;
}
.ts-airbnb-rating > span {
  padding: 5px 9px;
  border-radius: 999px;
  color: #fff;
  background: var(--ts-forest,#1f3128);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .04em;
}
.ts-airbnb-rating > small {
  color: #677068;
  font-size: 12px;
}
.ts-listing-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 28px;
}
.ts-listing-actions > button,
.ts-listing-actions > a {
  min-height: 50px;
  border-radius: 999px;
}
.ts-listing-main-image {
  min-height: 100%;
}
.ts-listing-main-image img {
  height: 100%;
  object-fit: cover;
}
.ts-listing-gallery {
  gap: 8px;
  padding: 8px;
  background: #e7dfd2;
}
.ts-listing-gallery button {
  overflow: hidden;
  border-radius: 12px;
}
.ts-listing-gallery img { transition: transform 320ms cubic-bezier(.16,1,.3,1); }
@media (hover:hover) and (pointer:fine) {
  .ts-listing-gallery button:hover img { transform: scale(1.025); }
}


.ts-listing .ts-listing-content {
  min-width: 0;
}
.ts-listing .ts-listing-content > section {
  padding-bottom: 54px;
}
.ts-listing .ts-listing-content > section + section {
  padding-top: 54px;
}
.ts-listing .ts-listing-content h2 {
  max-width: 13ch;
  margin: 11px 0 22px;
  font-size: clamp(38px,3.6vw,58px);
  line-height: 1.01;
  letter-spacing: -.045em;
}
.ts-listing .ts-listing-content h3 {
  line-height: 1.2;
}
.ts-listing .ts-listing-lead,
.ts-listing .ts-listing-about-more {
  max-width: 760px;
}
.ts-listing .ts-listing-lead {
  font-size: 20px;
  line-height: 1.58;
}
.ts-listing .ts-listing-content p,
.ts-listing .ts-listing-content li {
  font-size: 16px;
  line-height: 1.65;
}
.ts-listing-about-more {
  overflow: hidden;
  margin-top: 20px;
  border: 1px solid var(--ts-listing-rule);
  border-radius: 16px;
  background: var(--ts-listing-card);
}
.ts-listing-about-more summary {
  min-height: 62px;
  padding: 0 18px;
}
.ts-listing-about-more > div {
  padding: 0 18px 22px;
}

.ts-listing .ts-listing-info-cards {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 12px;
  margin-top: 26px;
}
.ts-listing .ts-listing-info-cards article {
  display: grid;
  min-width: 0;
  min-height: 132px;
  grid-template-columns: auto 1fr;
  align-content: start;
  align-items: center;
  gap: 7px 11px;
  padding: 20px;
  border: 1px solid var(--ts-listing-rule);
  border-radius: 18px;
  background: var(--ts-listing-card);
}
.ts-listing .ts-listing-info-cards strong {
  min-width: 0;
  font-size: 25px;
  line-height: 1.12;
}
.ts-listing .ts-listing-info-cards span {
  grid-column: 1 / -1;
  margin: 12px 0 0;
  color: #5c655e;
  font-size: 14px;
}
.ts-listing .ts-listing-sleeping-list {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 10px;
  margin-top: 12px;
}
.ts-listing .ts-listing-sleeping-list li,
.ts-listing .ts-listing-highlights li {
  display: flex;
  min-width: 0;
  min-height: 58px;
  align-items: center;
  gap: 11px;
  padding: 13px 15px;
  border: 1px solid var(--ts-listing-rule);
  border-radius: 16px;
  background: var(--ts-listing-card);
}
.ts-listing .ts-listing-sleeping-list span,
.ts-listing .ts-listing-highlights span {
  min-width: 0;
  overflow-wrap: anywhere;
}
.ts-listing .ts-listing-highlight-heading {
  min-height: 48px;
  margin: 24px 0 10px;
}
.ts-listing .ts-listing-highlights {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 10px;
}
.ts-listing .ts-listing-all-amenities {
  overflow: hidden;
  margin-top: 13px;
  border: 1px solid var(--ts-listing-rule);
  border-radius: 18px;
  background: var(--ts-listing-card);
}
.ts-listing .ts-listing-all-amenities > summary {
  min-height: 66px;
  padding: 0 20px;
}
.ts-listing .ts-listing-amenity-groups {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  column-gap: 34px;
  columns: auto;
  padding: 4px 22px 24px;
}
.ts-listing .ts-listing-amenity-groups article {
  padding: 20px 0;
}
.ts-listing .ts-listing-amenity-groups h3 {
  display: flex;
  align-items: center;
  gap: 9px;
  margin: 0 0 13px;
  font-size: 21px;
}
.ts-listing .ts-listing-amenity-groups ul {
  display: grid;
  gap: 8px;
}
.ts-listing .ts-listing-amenity-groups li {
  display: flex;
  align-items: flex-start;
  gap: 8px;
}
.ts-listing .ts-listing-amenity-groups li .ts-listing-icon {
  width: 18px;
  height: 18px;
  flex-basis: 18px;
  margin-top: 3px;
}

.ts-listing-disclosures {
  overflow: hidden;
  border: 1px solid var(--ts-listing-rule);
  border-radius: 18px;
  background: var(--ts-listing-card);
}
.ts-listing-disclosures summary {
  min-height: 64px;
  padding: 0 19px;
}
.ts-listing .ts-listing-address-note {
  border: 1px solid rgba(159,80,52,.2);
  border-radius: 14px;
  background: #f5eee4;
}


.ts-listing .ts-listing-things-grid {
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 12px;
}
.ts-listing .ts-listing-things-grid article {
  padding: 24px;
  border: 1px solid var(--ts-listing-rule);
  border-radius: 18px;
  background: var(--ts-listing-card);
}

/* Verified Airbnb snapshot and direct-booking reviews remain visibly distinct. */
.ts-listing-review-hub > h2,
.ts-listing-direct-review-section > h2 {
  max-width: 12ch !important;
}
.ts-airbnb-review-card {
  overflow: hidden;
  border: 1px solid var(--ts-listing-rule);
  border-radius: var(--ts-listing-radius);
  background: var(--ts-listing-card);
  box-shadow: 0 18px 50px rgba(21,26,23,.06);
}
.ts-airbnb-review-card > header {
  display: flex;
  min-height: 68px;
  align-items: center;
  justify-content: space-between;
  gap: 15px;
  padding: 15px 20px;
  border-bottom: 1px solid var(--ts-listing-rule);
}
.ts-review-source-mark,
.ts-review-favorite {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-size: 13px;
  font-weight: 800;
}
.ts-review-source-mark .ts-listing-icon {
  width: 24px;
  height: 24px;
}
.ts-review-favorite {
  padding: 7px 10px;
  border-radius: 999px;
  color: #fff;
  background: var(--ts-forest,#1f3128);
  font-size: 11px;
  letter-spacing: .04em;
}
.ts-review-favorite .ts-listing-icon {
  width: 16px;
  height: 16px;
  flex-basis: 16px;
  color: #fff;
}
.ts-airbnb-review-summary {
  display: grid;
  grid-template-columns: 190px minmax(0,1fr);
  align-items: center;
  gap: clamp(22px,4vw,50px);
  padding: 30px 24px;
}
.ts-review-score {
  display: grid;
  justify-items: start;
}
.ts-review-score strong {
  font: 400 66px/.9 var(--ts-font-section,var(--ts-font-heading,Georgia,serif));
  letter-spacing: -.06em;
}
.ts-review-score > span {
  margin-top: 10px;
  color: var(--ts-rust,#9f5034);
  font-size: 15px;
  letter-spacing: .15em;
}
.ts-review-score small {
  margin-top: 6px;
  color: #616a63;
  font-size: 12px;
}
.ts-airbnb-review-summary > p {
  max-width: 52ch;
  margin: 0;
  color: #3f4741;
  font-size: 18px !important;
  line-height: 1.58 !important;
}
.ts-review-category-block,
.ts-review-topics {
  padding: 24px;
  border-top: 1px solid var(--ts-listing-rule);
}
.ts-review-category-block h3,
.ts-review-topics h3 {
  margin: 0 0 17px;
  font-size: 20px;
}
.ts-review-category-grid {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 14px 30px;
}
.ts-review-category-grid > div {
  display: grid;
  grid-template-columns: minmax(92px,1fr) minmax(76px,1.15fr) 30px;
  align-items: center;
  gap: 10px;
}
.ts-review-category-grid span,
.ts-review-category-grid strong {
  font-size: 13px;
}
.ts-review-category-grid strong { text-align: right; }
.ts-review-category-grid meter {
  width: 100%;
  height: 7px;
  border: 0;
  border-radius: 999px;
  background: #ddd7cd;
}
.ts-review-category-grid meter::-webkit-meter-bar {
  border: 0;
  border-radius: 999px;
  background: #ddd7cd;
}
.ts-review-category-grid meter::-webkit-meter-optimum-value {
  border-radius: 999px;
  background: var(--ts-forest,#1f3128);
}
.ts-review-category-grid meter::-moz-meter-bar {
  border-radius: 999px;
  background: var(--ts-forest,#1f3128);
}
.ts-review-topics ul {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.ts-review-topics li {
  display: flex;
  min-height: 42px;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  border: 1px solid var(--ts-listing-rule);
  border-radius: 999px;
  background: #f7f2ea;
}
.ts-review-topics li span { font-weight: 700; }
.ts-review-topics li small {
  color: #687069;
  font-size: 12px;
}
.ts-airbnb-review-card > footer {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  align-items: center;
  gap: 18px;
  padding: 20px 24px;
  border-top: 1px solid var(--ts-listing-rule);
  background: #f7f2ea;
}
.ts-airbnb-review-card > footer p {
  margin: 0;
  color: #5d655f;
  font-size: 12px !important;
  line-height: 1.5 !important;
}
.ts-airbnb-review-card > footer a {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  gap: 8px;
  padding: 0 14px;
  border-radius: 999px;
  color: #fff;
  background: var(--ts-forest,#1f3128);
  font-size: 13px;
  font-weight: 800;
  text-decoration: none;
  white-space: nowrap;
}
.ts-listing-review-intro {
  max-width: 60ch;
  margin-bottom: 22px;
}
.ts-listing .ts-listing-reviews {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 12px;
}
.ts-listing .ts-listing-reviews blockquote {
  position: relative;
  min-width: 0;
  margin: 0;
  padding: 24px;
  border: 1px solid var(--ts-listing-rule);
  border-radius: 18px;
  background: var(--ts-listing-card);
}
.ts-listing-reviews blockquote > .ts-listing-icon {
  position: absolute;
  top: 22px;
  right: 22px;
  width: 28px;
  height: 28px;
  opacity: .42;
}
.ts-listing-reviews blockquote > span {
  display: block;
  padding-right: 34px;
  color: var(--ts-rust,#9f5034);
  letter-spacing: .1em;
}
.ts-listing-reviews blockquote > p {
  margin: 16px 0 22px;
}
.ts-listing-reviews cite {
  color: #5b645d;
  font-size: 13px;
  font-style: normal;
}

/* The page itself scrolls. The reservation card never creates a second
   scrollbar and only sticks when both viewport width and height are generous. */
.ts-listing .ts-booking-inline,
.ts-listing .ts-booking-inline.is-sticky-ready {
  position: static;
  top: auto;
  transform: none !important;
}
.ts-listing .ts-booking-inline .ts-booking-drawer {
  width: 100%;
  height: auto;
  max-height: none;
  overflow: visible;
  padding: 24px;
  border: 1px solid var(--ts-listing-rule);
  border-radius: 22px;
  box-shadow: 0 20px 60px rgba(21,26,23,.10);
}
.ts-listing .ts-listing-booking-panel h2 {
  font-size: clamp(30px,2.5vw,38px);
}
.ts-listing .ts-booking-form label > span,
.ts-listing .ts-booking-form legend,
.ts-listing .ts-price-box > span {
  font-size: 12px;
}
.ts-listing .ts-booking-intro,
.ts-listing .ts-arrival-times,
.ts-listing .ts-price-box > small {
  font-size: 13px !important;
}
.ts-listing .ts-rate-plan-options > label {
  min-height: 0;
  padding: 12px 13px !important;
  border-radius: 15px;
}
.ts-listing .ts-rate-plan-options strong {
  font-size: 14px;
}
.ts-listing .ts-rate-plan-options small {
  font-size: 12.5px;
}
.ts-listing .ts-price-box,
.ts-listing .ts-listing-booking-panel .ts-booking-contact {
  border-radius: 16px;
}
@media (min-width: 1181px) and (min-height: 980px) {
  .ts-listing .ts-booking-inline:not(:has(.ts-guest-calendar:not([hidden]))):not(:has(.ts-booking-completion[open])),
  .ts-listing .ts-booking-inline.is-sticky-ready:not(:has(.ts-guest-calendar:not([hidden]))):not(:has(.ts-booking-completion[open])) {
    position: sticky;
    top: 24px;
  }
}

@media (max-width: 1100px) {
  
  .ts-listing .ts-listing-content h2 { font-size: clamp(36px,4vw,48px); }
  .ts-listing .ts-listing-things-grid { grid-template-columns: 1fr; }
}
@media (max-width: 950px) {
  .ts-listing-hero {
    min-height: 0;
    grid-template-columns: 1fr;
  }
  .ts-listing-main-image {
    min-height: 440px;
    grid-row: 1;
  }
  .ts-listing-hero-copy { grid-row: 2; }
  
  .ts-listing .ts-booking-inline { order: -1; }
  .ts-listing .ts-listing-reviews { grid-template-columns: 1fr; }
}
@media (max-width: 680px) {
  .ts-listing-hero-copy { padding: 42px 20px 52px; }
  .ts-listing-hero h1 {
    max-width: 11ch;
    font-size: clamp(48px,14vw,68px);
  }
  .ts-listing-main-image { min-height: 360px; }
  .ts-listing-gallery {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
  }
  .ts-listing-gallery button:nth-child(n+3) { display: none; }
  
  .ts-listing .ts-listing-content > section { padding-bottom: 40px; }
  .ts-listing .ts-listing-content > section + section { padding-top: 40px; }
  .ts-listing .ts-listing-content h2 {
    max-width: 14ch;
    font-size: clamp(34px,10vw,44px);
  }
  .ts-listing .ts-listing-lead { font-size: 18px; }
  .ts-listing .ts-listing-info-cards,
  .ts-listing .ts-listing-sleeping-list,
  .ts-listing .ts-listing-highlights,
  .ts-listing .ts-listing-amenity-groups,
  .ts-review-category-grid {
    grid-template-columns: 1fr;
  }
  .ts-listing .ts-listing-info-cards article { min-height: 116px; }
  
  .ts-airbnb-review-card > header {
    align-items: flex-start;
    flex-direction: column;
  }
  .ts-airbnb-review-summary {
    grid-template-columns: 1fr;
    gap: 22px;
    padding: 24px 20px;
  }
  .ts-review-score strong { font-size: 58px; }
  .ts-review-category-block,
  .ts-review-topics { padding: 22px 20px; }
  .ts-review-category-grid > div {
    grid-template-columns: minmax(90px,1fr) minmax(70px,1fr) 30px;
  }
  .ts-airbnb-review-card > footer {
    grid-template-columns: 1fr;
    padding: 20px;
  }
  .ts-airbnb-review-card > footer a {
    justify-content: center;
    white-space: normal;
  }
  .ts-listing .ts-booking-inline .ts-booking-drawer {
    padding: 21px 18px calc(24px + env(safe-area-inset-bottom));
    border-radius: 18px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .ts-listing-gallery img { transition: none; }
}

/* 7.4.1 — responsive property-page repair.
   Keep editorial type expressive without allowing headings, fact separators,
   bed icons or native date text to collide at tablet and phone widths. */
.ts-listing .ts-listing-sleeping-list li > span {
  display: block;
  width: auto;
  height: auto;
  min-width: 0;
  flex: 1 1 auto;
  place-items: initial;
  border-radius: 0;
  color: var(--ts-ink,#151a17);
  background: transparent;
  font-size: 16px;
  font-weight: 500;
  line-height: 1.45;
  overflow-wrap: normal;
  word-break: normal;
}
.ts-listing .ts-listing-sleeping-list li > .ts-listing-icon {
  width: 21px;
  height: 21px;
  flex: 0 0 21px;
}
.ts-listing .ts-listing-about-more > div p {
  margin: 0 0 1em;
  font-size: 16.5px;
  line-height: 1.7;
}
.ts-listing .ts-listing-about-more > div p:last-child { margin-bottom: 0; }

/* Safari can keep painting its own date value above a custom display unless
   every internal date-edit layer is made transparent. The native picker and
   validation remain fully active. */



@media (min-width: 681px) and (max-width: 950px) {
  .ts-listing-hero-copy {
    padding: 42px clamp(28px,6vw,52px) 50px;
  }
  .ts-listing-hero h1 {
    max-width: 12ch;
    font-size: clamp(48px,8vw,64px);
    line-height: .96;
    overflow-wrap: normal;
    word-break: normal;
  }
  .ts-listing-hero em { font-size: clamp(21px,3.4vw,28px); }
  .ts-listing-facts {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 11px 22px;
    align-items: start;
  }
  .ts-listing-facts > span {
    display: grid;
    grid-template-columns: 25px minmax(0,1fr);
    gap: 10px;
    align-items: center;
    min-width: 0;
  }
  .ts-listing-facts span + span::before,
  .ts-listing-facts > span::before {
    display: none !important;
    content: none !important;
  }
  .ts-listing-facts b {
    min-width: 0;
    font-size: 15px;
    line-height: 1.35;
  }
  .ts-listing .ts-listing-content h2 {
    max-width: 15ch;
    font-size: clamp(36px,5.4vw,46px);
    line-height: 1;
  }
  .ts-listing .ts-listing-info-cards strong { font-size: 23px; }
  .ts-listing .ts-listing-sleeping-list li { min-height: 66px; }

  
  
  
  
  
  
}

@media (max-width: 680px) {
  .ts-listing-hero h1 {
    max-width: 10.5ch;
    font-size: clamp(42px,11.5vw,56px);
    line-height: .98;
    overflow-wrap: normal;
    word-break: normal;
  }
  .ts-listing-facts {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 10px 14px;
  }
  .ts-listing-facts > span {
    display: grid;
    grid-template-columns: 23px minmax(0,1fr);
    gap: 8px;
    align-items: center;
    min-width: 0;
  }
  .ts-listing-facts span + span::before,
  .ts-listing-facts > span::before {
    display: none !important;
    content: none !important;
  }
  .ts-listing-facts b { font-size: 14px; line-height: 1.35; }
  .ts-listing .ts-listing-content h2 {
    max-width: 14ch;
    font-size: clamp(32px,9vw,40px);
    line-height: 1.02;
  }
  .ts-listing .ts-listing-sleeping-list li { min-height: 62px; padding: 15px 17px; }
  .ts-listing .ts-listing-sleeping-list li > span { font-size: 15.5px; }
  
  
  
}

@media (max-width: 420px) {
  .ts-listing-facts { grid-template-columns: 1fr; }
}

/* 7.4.2 — definitive listing-page visual cleanup.
   This final layer intentionally replaces the accumulated experimental
   spacing and sticky-panel rules without touching booking behaviour. */
.ts-listing {
  --ts-card-radius: 18px;
  --ts-section-gap: clamp(40px,5vw,64px);
  --ts-body-size: clamp(16px,.35vw + 14.5px,18px);
}

.ts-listing .ts-listing-content {
  min-width: 0;
}
.ts-listing .ts-listing-content > section {
  padding-bottom: var(--ts-section-gap);
}
.ts-listing .ts-listing-content > section + section {
  padding-top: var(--ts-section-gap);
}
.ts-listing .ts-listing-content h2 {
  max-width: 17ch;
  margin-bottom: 24px;
  font-size: clamp(36px,3.4vw,54px);
  line-height: 1.02;
  letter-spacing: -.035em;
}
.ts-listing .ts-listing-lead,
.ts-listing .ts-listing-about-more > div p,
.ts-listing .ts-listing-disclosures p,
.ts-listing .ts-listing-address-note,
.ts-listing .ts-listing-things p,
.ts-listing .ts-listing-rules li,
.ts-listing .ts-listing-host > p{
  font-size: var(--ts-body-size);
  line-height: 1.65;
}
.ts-listing .ts-listing-kicker,
.ts-listing .ts-booking-kicker,
.ts-listing .ts-booking-drawer label > span,
.ts-listing .ts-rate-plan > legend {
  font-size: 13px;
  line-height: 1.35;
  letter-spacing: .13em;
}
.ts-listing .ts-listing-info-cards,
.ts-listing .ts-listing-sleeping-list,
.ts-listing .ts-listing-highlights,
.ts-listing .ts-listing-all-amenities,
.ts-listing .ts-listing-disclosures,
.ts-listing .ts-listing-things-grid,
.ts-listing .ts-airbnb-review-card,
.ts-listing .ts-listing-reviews blockquote,
.ts-listing .ts-booking-inline .ts-booking-drawer {
  border-radius: var(--ts-card-radius) !important;
}
.ts-listing .ts-listing-info-cards {
  grid-template-columns: repeat(4,minmax(0,1fr));
  overflow: hidden;
}
.ts-listing .ts-listing-info-cards article {
  min-height: 124px;
  padding: 22px;
}
.ts-listing .ts-listing-info-cards strong {
  font-size: clamp(22px,1.7vw,29px);
}
.ts-listing .ts-listing-info-cards span,
.ts-listing .ts-listing-sleeping-list li > span,
.ts-listing .ts-listing-amenities li span,
.ts-listing .ts-listing-amenity-groups li span {
  font-size: 16px;
  line-height: 1.45;
}
.ts-listing .ts-listing-sleeping-list {
  gap: 12px;
  margin-top: 18px;
}
.ts-listing .ts-listing-sleeping-list li,
.ts-listing .ts-listing-highlights li {
  min-height: 62px;
  padding: 16px 18px;
  border-radius: 14px;
}
.ts-listing .ts-listing-all-amenities > summary {
  min-height: 64px;
  padding: 16px 20px;
  font-size: 16px;
}

/* The notice should support the page, not dominate it. */





/* The booking card follows the page naturally so its final action can never
   be hidden below the viewport. Guest details still open progressively. */
.ts-listing .ts-listing-booking,
.ts-listing .ts-booking-inline,
.ts-listing .ts-booking-inline.is-sticky-ready,
.ts-listing .ts-booking-inline:not(:has(.ts-guest-calendar:not([hidden]))):not(:has(.ts-booking-completion[open])),
.ts-listing .ts-booking-inline.is-sticky-ready:not(:has(.ts-guest-calendar:not([hidden]))):not(:has(.ts-booking-completion[open])) {
  position: static !important;
  top: auto !important;
  align-self: start;
}
.ts-listing .ts-booking-inline .ts-booking-drawer {
  width: 100%;
  height: auto !important;
  max-height: none !important;
  padding: 26px !important;
  overflow: visible !important;
  box-shadow: 0 18px 45px rgba(21,26,23,.1);
}
.ts-listing .ts-booking-drawer h2 {
  max-width: 10ch;
  margin-bottom: 12px;
  font-size: clamp(34px,2.5vw,44px);
  line-height: .98;
}
.ts-listing .ts-booking-drawer > p,
.ts-listing .ts-booking-drawer small,
.ts-listing .ts-booking-time-note,
.ts-listing .ts-best-price-note {
  font-size: 14.5px;
  line-height: 1.5;
}
.ts-listing .ts-rate-plan {
  margin-top: 22px;
  padding-top: 20px;
}
.ts-listing .ts-rate-plan-options {
  display: grid;
  grid-template-columns: 1fr !important;
  gap: 10px;
}
.ts-listing .ts-rate-plan-options > label {
  display: grid;
  grid-template-columns: 22px minmax(0,1fr);
  gap: 11px;
  align-items: start;
  min-width: 0;
  min-height: 0;
  padding: 15px 16px;
  border-radius: 14px;
  overflow: visible;
}
.ts-listing .ts-rate-plan-options input {
  width: 19px;
  height: 19px;
  margin: 1px 0 0;
}
.ts-listing .ts-rate-plan-options span {
  min-width: 0;
}
.ts-listing .ts-rate-plan-options strong,
.ts-listing .ts-rate-plan-options small {
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: normal;
}
.ts-listing .ts-rate-plan-options strong {
  font-size: 14px;
  line-height: 1.35;
  letter-spacing: .06em;
}
.ts-listing .ts-rate-plan-options small {
  margin-top: 5px;
  font-size: 13px;
  line-height: 1.45;
  letter-spacing: 0;
}
.ts-listing .ts-booking-total,
.ts-listing .ts-best-price-note,
.ts-listing .ts-booking-completion {
  border-radius: 14px;
}
.ts-listing .ts-booking-total {
  padding: 20px;
}
.ts-listing .ts-booking-inline button,
.ts-listing .ts-booking-inline a {
  min-height: 46px;
}

@media (max-width: 1180px) {
  
  .ts-listing .ts-booking-inline { order: -1; }
  .ts-listing .ts-booking-inline .ts-booking-drawer {
    max-width: 760px;
    margin: 0 auto;
  }
}
@media (max-width: 780px) {
  
  .ts-listing .ts-listing-content > section { padding-bottom: 36px; }
  .ts-listing .ts-listing-content > section + section { padding-top: 36px; }
  .ts-listing .ts-listing-content h2 {
    margin-bottom: 18px;
    font-size: clamp(31px,8vw,40px);
  }
  .ts-listing .ts-listing-info-cards { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .ts-listing .ts-listing-info-cards article { min-height: 108px; padding: 18px; }
  
  
  .ts-listing .ts-booking-inline .ts-booking-drawer { padding: 22px 18px calc(24px + env(safe-area-inset-bottom)) !important; }
  .ts-listing .ts-booking-drawer h2 { font-size: 36px; }
}
@media (max-width: 420px) {
  .ts-listing .ts-listing-info-cards { grid-template-columns: 1fr 1fr; }
  .ts-listing .ts-listing-info-cards article { min-height: 102px; padding: 16px 14px; }
  .ts-listing .ts-listing-info-cards strong { font-size: 21px; }
  .ts-listing .ts-listing-info-cards span { font-size: 14px; }
}

/* 7.5.0 — private guest experience */
.ts-system-page.ts-portal,
.ts-system-page.ts-cancellation-page {
  width: min(1220px,calc(100% - 32px));
  max-width: none;
  margin: 34px auto;
  padding: 0;
  overflow: hidden;
  border: 1px solid rgba(21,26,23,.1);
  border-radius: 26px;
  background: #f4f1ea;
  box-shadow: 0 28px 80px rgba(21,26,23,.12);
  color: #151a17;
}
.ts-portal-hero,
.ts-cancel-hero {
  padding: clamp(38px,6vw,78px);
  background: #1f3128;
  color: #fffdf8;
}
.ts-portal-brand {
  display: flex;
  gap: 12px;
  align-items: center;
  margin-bottom: clamp(44px,7vw,82px);
  font-family: var(--ts-heading-font,"Times New Roman",serif);
  font-size: 21px;
}
.ts-portal-brand .ts-system-mark {
  display: inline-grid;
  width: 48px;
  height: 48px;
  margin: 0;
  place-items: center;
  border: 1px solid rgba(255,255,255,.75);
  border-radius: 50%;
  color: #fff;
  font-size: 16px;
}
.ts-portal-hero > p:not(.ts-portal-welcome),
.ts-cancel-hero > p {
  margin: 0 0 15px;
  color: #e6cba4;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
}
.ts-portal-hero h1,
.ts-cancel-hero h1 {
  max-width: 15ch;
  margin: 0;
  color: #fffdf8;
  font-family: var(--ts-heading-font,"Times New Roman",serif);
  font-size: clamp(45px,6vw,76px);
  font-weight: 400;
  line-height: .98;
  letter-spacing: -.035em;
}
.ts-portal-welcome,
.ts-cancel-hero > span {
  display: block;
  max-width: 660px;
  margin: 25px 0 0;
  color: rgba(255,255,255,.86);
  font-size: clamp(18px,2vw,23px);
  line-height: 1.5;
}
.ts-portal-hero > small {
  display: block;
  margin-top: 18px;
  color: rgba(255,255,255,.58);
  font-size: 13px;
}
.ts-portal-content,
.ts-cancel-content { padding: clamp(30px,5vw,66px); }
.ts-portal-section,
.ts-cancel-section { margin: 0 0 clamp(48px,7vw,78px); }
.ts-portal-heading > span,
.ts-cancel-heading > span,
.ts-cancel-policy > span {
  display: block;
  margin-bottom: 12px;
  color: #9f5034;
  font-size: 13px;
  font-weight: 750;
  letter-spacing: .15em;
  text-transform: uppercase;
}
.ts-portal-heading h2,
.ts-cancel-heading h2 {
  max-width: 760px;
  margin: 0 0 28px;
  color: #151a17;
  font-family: var(--ts-heading-font,"Times New Roman",serif);
  font-size: clamp(32px,4vw,50px);
  font-weight: 400;
  line-height: 1.08;
  letter-spacing: -.025em;
}
.ts-portal .ts-system-details,
.ts-cancellation-page .ts-system-details {
  display: grid;
  grid-template-columns: repeat(5,minmax(0,1fr));
  gap: 12px;
  margin: 0;
  border: 0;
}
.ts-cancellation-page .ts-system-details { grid-template-columns: 1.4fr 1fr .8fr; }
.ts-portal .ts-system-details > div,
.ts-cancellation-page .ts-system-details > div {
  min-width: 0;
  padding: 20px;
  border: 1px solid rgba(21,26,23,.11);
  border-radius: 16px;
  background: #fffdf8;
}
.ts-portal .ts-system-details span,
.ts-cancellation-page .ts-system-details span {
  display: block;
  margin-bottom: 9px;
  color: #68706a;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.ts-portal .ts-system-details strong,
.ts-cancellation-page .ts-system-details strong {
  display: block;
  overflow-wrap: anywhere;
  color: #151a17;
  font-size: 16px;
  line-height: 1.4;
}
.ts-portal-actions {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 12px;
}
.ts-portal-action {
  display: grid;
  grid-template-columns: 34px minmax(0,1fr) 24px;
  gap: 14px;
  min-height: 88px;
  padding: 20px;
  align-items: center;
  border: 1px solid rgba(21,26,23,.12);
  border-radius: 17px;
  background: #fffdf8;
  color: #151a17;
  text-decoration: none;
  transition: transform .2s ease,box-shadow .2s ease,border-color .2s ease;
}
.ts-portal-action:hover,
.ts-portal-action:focus-visible {
  border-color: rgba(159,80,52,.42);
  box-shadow: 0 13px 28px rgba(21,26,23,.08);
  transform: translateY(-2px);
}
.ts-portal-action > span {
  color: #9f5034;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .08em;
}
.ts-portal-action strong { font-size: 16px; line-height: 1.4; }
.ts-portal-action i { font-size: 21px; font-style: normal; text-align: right; }
.ts-portal-action.primary { background: #1f3128; color: #fffdf8; }
.ts-portal-action.primary > span { color: #e6cba4; }
.ts-portal-action.danger { color: #803927; }
.ts-portal-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
.ts-portal-grid details {
  overflow: hidden;
  border: 1px solid rgba(21,26,23,.12);
  border-radius: 16px;
  background: #fffdf8;
}
.ts-portal-grid summary {
  display: flex;
  min-height: 64px;
  padding: 17px 20px;
  align-items: center;
  justify-content: space-between;
  cursor: pointer;
  font-size: 17px;
  font-weight: 700;
  list-style: none;
}
.ts-portal-grid summary::-webkit-details-marker { display: none; }
.ts-portal-grid summary i { font-size: 22px; font-style: normal; transition: transform .25s ease; }
.ts-portal-grid details[open] summary i { transform: rotate(45deg); }
.ts-portal-grid details p { margin: 0; padding: 0 20px 22px; color: #59615b; font-size: 16px; line-height: 1.65; }
.ts-portal-form {
  margin-top: 24px;
  padding: clamp(25px,4vw,44px);
  border: 1px solid rgba(21,26,23,.12);
  border-radius: 20px;
  background: #fffdf8;
}
.ts-portal-form form { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; }
.ts-portal-form label { color: #535b55; font-size: 14px; font-weight: 700; letter-spacing: .04em; }
.ts-portal-form input,
.ts-portal-form select,
.ts-portal-form textarea {
  width: 100%;
  min-height: 48px;
  margin-top: 8px;
  padding: 12px 14px;
  border: 1px solid rgba(21,26,23,.18);
  border-radius: 11px;
  background: #fff;
  color: #151a17;
  font-size: 16px;
}
.ts-portal-form textarea { min-height: 104px; resize: vertical; }
.ts-portal-form .ts-system-button { align-self: end; }
.ts-portal .ts-system-notice,
.ts-cancellation-page .ts-system-notice { border-radius: 14px; }

.ts-cancel-grid { display: grid; grid-template-columns: .9fr 1.1fr; gap: 16px; margin-bottom: 18px; }
.ts-cancellation-page .ts-system-refund,
.ts-cancel-policy,
.ts-cancel-form {
  margin: 0;
  padding: clamp(24px,4vw,38px);
  border: 1px solid rgba(21,26,23,.12);
  border-radius: 18px;
  background: #fffdf8;
}
.ts-cancellation-page .ts-system-refund {
  display: flex;
  flex-direction: column;
  justify-content: center;
  background: #1f3128;
  color: #fffdf8;
}
.ts-cancellation-page .ts-system-refund > span {
  color: #e6cba4;
  font-size: 12px;
  font-weight: 750;
  letter-spacing: .11em;
  text-transform: uppercase;
}
.ts-cancellation-page .ts-system-refund strong {
  margin: 15px 0;
  color: #fffdf8;
  font-family: var(--ts-heading-font,"Times New Roman",serif);
  font-size: clamp(38px,5vw,58px);
  font-weight: 400;
}
.ts-cancellation-page .ts-system-refund p,
.ts-cancellation-page .ts-system-refund small,
.ts-cancel-policy p,
.ts-cancel-form p { font-size: 16px; line-height: 1.65; }
.ts-cancellation-page .ts-system-refund p { margin: 0 0 9px; color: rgba(255,255,255,.82); }
.ts-cancellation-page .ts-system-refund small { color: rgba(255,255,255,.64); }
.ts-cancel-policy p { margin: 0; color: #59615b; }
.ts-cancel-form { display: flex; gap: 22px; align-items: center; justify-content: space-between; margin-top: 16px; }
.ts-cancel-form p { max-width: 620px; margin: 0; color: #59615b; }
.ts-cancel-confirm { flex: 0 0 auto; background: #9f5034 !important; }
.ts-cancel-back { display: inline-flex; margin-top: 24px; color: #1f3128; font-weight: 700; text-decoration: underline; text-underline-offset: 5px; }
.ts-cancel-status-done { border-left: 3px solid #1f3128; }
.ts-cancel-status-title { margin: 0 0 6px; color: #1f3128; font-size: 15px; font-weight: 750; letter-spacing: .02em; text-transform: uppercase; }

@media (max-width: 860px) {
  .ts-portal .ts-system-details { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .ts-portal .ts-system-details > div:last-child { grid-column: 1/-1; }
  .ts-cancellation-page .ts-system-details,
  .ts-cancel-grid { grid-template-columns: 1fr; }
  .ts-cancel-form { align-items: stretch; flex-direction: column; }
}
@media (max-width: 640px) {
  .ts-system-page.ts-portal,
  .ts-system-page.ts-cancellation-page { width: calc(100% - 20px); margin: 10px auto; border-radius: 20px; }
  .ts-portal-hero,
  .ts-cancel-hero { padding: 30px 22px 38px; }
  .ts-portal-brand { margin-bottom: 44px; }
  .ts-portal-content,
  .ts-cancel-content { padding: 28px 18px 38px; }
  .ts-portal-actions,
  .ts-portal-grid,
  .ts-portal-form form { grid-template-columns: 1fr; }
  .ts-portal .ts-system-details { grid-template-columns: 1fr; }
  .ts-portal .ts-system-details > div:last-child { grid-column: auto; }
  .ts-portal-action { min-height: 78px; padding: 17px; }
  .ts-cancel-confirm { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .ts-portal-action,
  .ts-portal-grid summary i { transition: none; }
}

/* 7.5.1 — pre-launch responsive, tap-target and overflow hardening.
   This layer is deliberately CSS-only: it does not alter availability,
   pricing, payment, calendar or reservation behaviour. */
.ts-experience,
.ts-listing,
.ts-marketing-page,
.ts-system-page {
  max-width: 100%;
  overflow-x: clip;
}
.ts-experience *,
.ts-listing *,
.ts-marketing-page *,
.ts-system-page *,
.ts-standalone-header *,
.ts-standalone-footer * { box-sizing: border-box; }
.ts-experience img,
.ts-listing img,
.ts-marketing-page img { max-width: 100%; height: auto; }

/* 7.5.2 — restore the approved homepage property photography composition.
   The generic responsive-image safeguard above must not override the fixed
   visual frames used by the large lead image and the smaller supporting
   image. Both frames again fill their intended areas exactly as in 7.5.0. */
.ts-experience .ts-property-main img,
.ts-experience .ts-property-second img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ts-experience a,
.ts-experience button,
.ts-listing a,
.ts-listing button,
.ts-marketing-page a,
.ts-marketing-page button,
.ts-system-page a,
.ts-system-page button { overflow-wrap: anywhere; }

/* The anti-spam field remains available to server-side validation but is
   never visible, focusable or capable of creating layout overflow. */
.ts-honeypot,
.ts-honeypot input {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  margin: -1px !important;
  padding: 0 !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

/* Primary navigation and every intentional action meet the 44px mobile
   target without visually turning text links into large buttons. */
.ts-header nav a,
.ts-header nav button,
.ts-languages button,
.ts-standalone-header nav a,
.ts-standalone-brand,
.ts-hero-actions a,
.ts-hero-actions button,
.ts-property-actions a,
.ts-property-actions button,
.ts-property-main > a,
.ts-final a,
.ts-final button,
.ts-footer a,
.ts-standalone-footer a,
.ts-marketing-property-grid article > div a,
.ts-marketing-book-grid > a,
.ts-listing-rating a,
.ts-listing-final a,
.ts-listing-final button,
.ts-listing-related a,
.ts-booking-contact,
.ts-best-price-note a,
.ts-system-button,
.ts-cancel-back {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
}
.ts-languages button { min-width: 36px; justify-content: center; }
.ts-standalone-header nav a { padding-block: 10px; }
.ts-standalone-book { justify-content: center; }

/* Booking controls remain legible and operable in Safari without changing
   the JavaScript field names or submission contract. */
.ts-booking-form select,
.ts-booking-form input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]),
.ts-promo-field input,
.ts-portal-form input,
.ts-portal-form select,
.ts-portal-form textarea{
  min-height: 48px;
  font-size: 16px;
}
.ts-date-choice,
.ts-date-choice button,
.ts-booking-property,
.ts-booking-property select { min-width: 0; width: 100%; }
.ts-date-choice button { min-height: 52px; }
.ts-date-choice button strong,
.ts-booking-property select { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ts-pet-toggle,
.ts-policy,
.ts-rate-plan-options label{
  min-height: 48px;
  cursor: pointer;
}
.ts-pet-toggle input,
.ts-policy input,
.ts-rate-plan-options input{
  flex: 0 0 auto;
  width: 22px !important;
  height: 22px !important;
}
.ts-rate-plan-options label { align-items: flex-start; }
.ts-rate-plan-options span,
.ts-rate-plan-options strong,
.ts-rate-plan-options small { min-width: 0; overflow-wrap: anywhere; }
.ts-guest-calendar-head button,
.ts-guest-calendar-days button,
.ts-filter-row button,
.ts-map-card button,
.leaflet-control-zoom a { min-width: 44px; min-height: 44px; }
.ts-note summary,
.ts-listing-all-amenities > summary,
.ts-booking-completion > summary,
.ts-best-price-note > summary,
.ts-promo-disclosure > summary { min-height: 48px; }

/* Public navigation is now complete on every branded page. */
.ts-footer .ts-footer-nav {
  display: flex;
  grid-column: 1/-1;
  flex-wrap: wrap;
  gap: 8px 24px;
  align-items: center;
  padding-top: 20px;
  border-top: 1px solid rgba(255,255,255,.15);
}
.ts-footer .ts-footer-nav a,
.ts-standalone-footer nav a {
  color: rgba(255,255,255,.82);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .06em;
  text-decoration: none;
  text-transform: uppercase;
}
.ts-footer .ts-footer-nav + small { padding-top: 0; border-top: 0; }
.ts-standalone-footer nav {
  display: flex;
  grid-column: 1/-1;
  flex-wrap: wrap;
  gap: 8px 24px;
  align-items: center;
  padding-top: 20px;
  border-top: 1px solid rgba(255,255,255,.16);
}
.ts-standalone-footer nav + small { padding-top: 0; border-top: 0; }

/* 7.10.0 — crawlable destination links and compact language controls. */
.ts-footer .ts-footer-seo-links,
.ts-standalone-footer .ts-standalone-seo-links {
  display: flex;
  grid-column: 1/-1;
  flex-wrap: wrap;
  gap: 8px 24px;
  align-items: center;
  margin: 0;
  padding-top: 18px;
  border-top: 1px solid rgba(255,255,255,.12);
}
.ts-footer .ts-footer-seo-links a,
.ts-standalone-footer .ts-standalone-seo-links a {
  color: rgba(255,255,255,.7);
  font-size: 12px;
  font-weight: 650;
  letter-spacing: .03em;
  text-decoration: none;
  text-transform: none;
}
.ts-standalone-header .ts-standalone-languages { flex: 0 0 auto; }
@media (max-width:680px) {
  .ts-standalone-header { gap: 8px; padding-inline: 12px; }
  .ts-standalone-brand span { display: none; }
  .ts-standalone-header .ts-standalone-book { max-width: 120px; padding: 10px 11px; font-size: 10px; text-align: center; }
  .ts-standalone-header .ts-standalone-languages { gap: 1px; }
  .ts-standalone-header .ts-standalone-languages a { min-width: 22px; padding: 0 2px; font-size: 11px; }
  .ts-standalone-header .ts-standalone-languages > span { font-size: 10px; opacity: .5; }
  .ts-footer .ts-footer-seo-links,
  .ts-standalone-footer .ts-standalone-seo-links { gap: 4px 16px; }
}

/* Standalone pages use a readable but restrained headline scale. */
.ts-marketing-page header h1 { max-width: 15ch; }
.ts-marketing-page p,
.ts-marketing-page span,
.ts-marketing-page details p { line-height: 1.6; }
.ts-marketing-property-grid article > div { gap: 12px; }

/* Keyboard focus remains visible on light and dark surfaces. */
.ts-experience :focus-visible,
.ts-listing :focus-visible,
.ts-marketing-page :focus-visible,
.ts-system-page :focus-visible,
.ts-standalone-header :focus-visible,
.ts-standalone-footer :focus-visible {
  outline: 3px solid #d28a68;
  outline-offset: 3px;
}

@media (min-width: 1600px) {
  .ts-shell,
  .ts-listing-shell,
  .ts-marketing-page { max-width: 1500px; }
  .ts-property { min-height: 680px; }
  .ts-property-visual { min-height: 680px; }
}

@media (min-width: 961px) and (max-width: 1024px) {
  .ts-standalone-header { padding-inline: 24px; }
  .ts-standalone-header nav { gap: 16px; }
}

/* ==========================================================================
   Shared header: where the desktop navigation gives way.

   Measured, not guessed. The three header groups are the brand mark (173px),
   the primary nav and the language switcher (247px, and it never shrinks --
   it carries flex:0 0 auto). The nav is widest in German ("Unterkuenfte",
   "Ihr Gastgeber", "Verfuegbarkeit pruefen") at 388px. With 48px of header
   padding and two 24px gaps that is 904px of content before anything wraps.
   At 768 only 720px was available, so the brand and the links -- the only
   shrinkable items -- broke onto two lines each.

   So the compact header starts at 960px, not 680px. It keeps the brand, the
   single booking action and the full language switcher, all at their normal
   size: a deliberate tablet header rather than a squeezed desktop one. The
   :not(.ts-standalone-languages) guard is load-bearing -- the switcher is
   also a <nav>, and without it EN/IT/DE/FR collapse to "/ / /".
   ========================================================================== */
@media (max-width: 960px) {
  .ts-standalone-header { gap: 18px; padding-inline: clamp(18px, 3vw, 28px); }
  .ts-standalone-header nav:not(.ts-standalone-languages) a:not(.ts-standalone-book) { display: none; }
  .ts-standalone-header nav { gap: 12px; }
}

/* One primary booking action at a time.

   A property page carries its own "Check availability" in the spec strip, and
   below 1024 it also has the sticky bar. The header's booking pill therefore
   put a second identical action in the very first viewport -- on a phone, two
   of the same CTA within one screen. On a property page the page's own CTA is
   the primary one, so the header steps back and its nav collapses to the brand
   mark and the language switcher.

   Phone tier only. At 768 and above the compact header has room and the pill
   reads as navigation rather than competition, so tablet is left as accepted
   in .38. Marketing and system pages keep their header CTA at every width --
   there it is the only booking action on the page.

   The language switcher is a <nav> too, hence the :not() guard here as well:
   without it EN/IT/DE/FR would disappear on every phone property page. */
@media (max-width: 680px) {
  body:has(.ts-vira-reference) .ts-standalone-header nav:not(.ts-standalone-languages),
  body:has(.ts-listing) .ts-standalone-header nav:not(.ts-standalone-languages) { display: none; }
}

@media (min-width: 681px) and (max-width: 1024px) {
  .ts-marketing-page,
  .ts-listing-shell { width: calc(100% - 40px); }
  .ts-property,
  .ts-property.is-reverse { min-height: 0; grid-template-columns: 1fr; }
  .ts-property-visual,
  .ts-property.is-reverse .ts-property-visual {
    min-height: 580px;
    grid-column: 1;
    grid-row: auto;
  }
  .ts-property-copy,
  .ts-property.is-reverse .ts-property-copy {
    grid-column: 1;
    grid-row: auto;
    padding: 52px clamp(30px,6vw,62px) 60px;
  }
  
  .ts-listing .ts-listing-booking { width: 100%; }
}

@media (max-width: 680px) {
  html { overflow-x: hidden; }
  .ts-standalone-header { min-height: 76px; padding-inline: 16px; }
  .ts-standalone-brand { min-width: 44px; }
  .ts-standalone-header nav { gap: 8px; }
  .ts-standalone-header nav:not(.ts-standalone-languages) a:not(.ts-standalone-book) { display: none; }
  .ts-standalone-book { min-height: 44px; padding-inline: 14px !important; }
  .ts-marketing-page header h1 {
    max-width: 13ch;
    font-size: clamp(42px,13vw,56px);
    line-height: .98;
  }
  .ts-marketing-page header,
  .ts-marketing-page section { padding-inline: 18px; }
  .ts-marketing-property-grid article > div { align-items: stretch; flex-direction: column; }
  .ts-marketing-property-grid article > div a { width: 100%; justify-content: center; }
  .ts-property-visual,
  .ts-property.is-reverse .ts-property-visual { min-height: clamp(360px,104vw,420px); }
  .ts-property-main,
  .ts-property.is-reverse .ts-property-main { inset: 16px 42px 16px 16px; }
  .ts-property-second,
  .ts-property.is-reverse .ts-property-second {
    display: block;
    right: 13px;
    bottom: 38px;
    left: auto;
    width: clamp(98px,29vw,116px);
    aspect-ratio: 4/3;
    border-width: 4px;
  }
  .ts-property-copy { padding: 48px 18px 56px; }
  .ts-property-actions { gap: 10px 12px; }
  .ts-property-actions a,
  .ts-property-actions button { justify-content: center; }
  .ts-booking-drawer,
  .ts-listing .ts-booking-inline .ts-booking-drawer { padding: 22px 18px !important; }
  .ts-date-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
  .ts-rate-plan-options { grid-template-columns: 1fr !important; }
  .ts-rate-plan-options label { padding: 14px; }
  .ts-price-total { align-items: baseline; }
  .ts-price-total strong { font-size: clamp(27px,9vw,36px); }
  .ts-footer,
  .ts-standalone-footer { gap: 18px; }
  .ts-footer .ts-footer-nav,
  .ts-standalone-footer nav { gap: 4px 16px; }
  .ts-footer .ts-footer-nav a,
  .ts-standalone-footer nav a { font-size: 12px; }
  .ts-system-details div { align-items: flex-start; flex-direction: column; gap: 5px; }
}

@media (max-width: 390px) {
  .ts-date-grid { grid-template-columns: 1fr; }
  .ts-date-selectors { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .ts-date-choice button strong { font-size: 16px; }
  .ts-listing-facts { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .ts-listing-facts b { font-size: 14px; }
}

@media (prefers-reduced-motion: reduce) {
  .ts-experience *,
  .ts-listing *,
  .ts-marketing-page *,
  .ts-system-page * {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}

/* 7.5.3 FINAL OVERRIDES — these selectors intentionally sit last so older
   audit layers cannot reintroduce the image or fact-card regressions. */
.ts-listing .ts-listing-main-image img,
.ts-listing .ts-listing-gallery img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ts-experience .ts-property-main img,
.ts-experience .ts-property-second img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ts-experience .ts-property-second {
  isolation: isolate;
  overflow: hidden;
  box-shadow: 0 20px 48px rgba(17,23,19,.18);
}
.ts-listing .ts-listing-sleeping-section h2 {
  max-width: none;
  font-size: clamp(35px,3vw,50px);
}
.ts-listing .ts-listing-sleeping-section .ts-listing-info-cards {
  display: grid;
  grid-template-columns: repeat(4,minmax(0,1fr));
  gap: 0;
  margin-top: 22px;
  overflow: hidden;
  border: 1px solid var(--ts-listing-rule);
  border-radius: var(--ts-card-radius) !important;
  background: var(--ts-listing-card);
}
.ts-listing .ts-listing-sleeping-section .ts-listing-info-cards article {
  display: grid;
  min-width: 0;
  min-height: 106px;
  grid-template-columns: 22px minmax(0,1fr);
  align-content: center;
  align-items: center;
  gap: 6px 10px;
  padding: 17px 18px;
  border: 0;
  border-right: 1px solid var(--ts-listing-rule);
  border-radius: 0;
  background: transparent;
}
.ts-listing .ts-listing-sleeping-section .ts-listing-info-cards article:last-child {
  border-right: 0;
}
.ts-listing .ts-listing-sleeping-section .ts-listing-info-cards svg {
  width: 21px;
  height: 21px;
}
.ts-listing .ts-listing-sleeping-section .ts-listing-info-cards strong {
  min-width: 0;
  font-size: clamp(20px,1.35vw,25px);
  line-height: 1.1;
  white-space: nowrap;
}
.ts-listing .ts-listing-sleeping-section .ts-listing-info-cards span {
  grid-column: 1 / -1;
  margin: 4px 0 0;
  font-size: 14px;
  line-height: 1.35;
}

@media (min-width: 681px) and (max-width: 1120px) {
  .ts-listing .ts-listing-sleeping-section .ts-listing-info-cards {
    grid-template-columns: repeat(2,minmax(0,1fr));
  }
  .ts-listing .ts-listing-sleeping-section .ts-listing-info-cards article:nth-child(2) {
    border-right: 0;
  }
  .ts-listing .ts-listing-sleeping-section .ts-listing-info-cards article:nth-child(-n+2) {
    border-bottom: 1px solid var(--ts-listing-rule);
  }
}

@media (max-width: 680px) {
  .ts-listing .ts-listing-sleeping-section h2 {
    font-size: clamp(31px,9vw,40px);
  }
  .ts-listing .ts-listing-sleeping-section .ts-listing-info-cards {
    grid-template-columns: repeat(2,minmax(0,1fr));
  }
  .ts-listing .ts-listing-sleeping-section .ts-listing-info-cards article {
    min-height: 96px;
    padding: 14px 12px;
  }
  .ts-listing .ts-listing-sleeping-section .ts-listing-info-cards article:nth-child(2) {
    border-right: 0;
  }
  .ts-listing .ts-listing-sleeping-section .ts-listing-info-cards article:nth-child(-n+2) {
    border-bottom: 1px solid var(--ts-listing-rule);
  }
  .ts-listing .ts-listing-sleeping-section .ts-listing-info-cards strong {
    font-size: clamp(18px,5.2vw,22px);
  }
  .ts-listing .ts-listing-sleeping-section .ts-listing-info-cards span {
    font-size: 13px;
  }
}

@media (max-width: 370px) {
  .ts-listing .ts-listing-sleeping-section .ts-listing-info-cards strong {
    white-space: normal;
  }
}

/* 7.5.5 — plugin-managed Typography Studio.
   Font-family assignments only: no spacing, sizing or booking behaviour changes. */
.ts-experience .ts-property-copy > em,
.ts-experience .ts-property-copy .ts-property-subtitle,
.ts-listing-hero em,
.ts-marketing-property-grid article > em {
  font-family: var(--ts-font-subtitle, var(--ts-font-heading, Georgia, serif));
}
.ts-experience .ts-header nav,
.ts-experience .ts-header-actions,
.ts-experience .ts-button,
.ts-experience button,
.ts-experience [role="button"],
.ts-experience .ts-property-actions,
.ts-listing .ts-listing-actions,
.ts-listing .ts-booking-trigger,
.ts-marketing-page .ts-button,
.ts-system-page button {
  font-family: var(--ts-font-ui, var(--ts-font-body, Arial, sans-serif));
}
.ts-experience .ts-kicker,
.ts-experience .ts-meta,
.ts-experience .ts-hero-facts,
.ts-experience .ts-property-number,
.ts-listing .ts-listing-kicker,
.ts-listing .ts-listing-facts,
.ts-listing .ts-listing-section-label,
.ts-listing label > span,
.ts-marketing-page .ts-kicker,
.ts-system-page label > span {
  font-family: var(--ts-font-label, var(--ts-font-body, Arial, sans-serif));
}
.ts-booking-drawer,
.ts-booking-drawer input,
.ts-booking-drawer select,
.ts-booking-drawer textarea,
.ts-booking-drawer button,
.ts-booking-drawer .ts-guest-calendar,
.ts-booking-drawer .ts-price-box,
.ts-listing-booking-panel,
.ts-listing-booking-panel input,
.ts-listing-booking-panel select,
.ts-listing-booking-panel textarea,
.ts-listing-booking-panel button {
  font-family: var(--ts-font-booking, var(--ts-font-body, Arial, sans-serif));
}
.ts-experience .ts-faq summary,
.ts-marketing-faq summary,
.ts-listing .ts-listing-faq summary {
  font-family: var(--ts-font-faq, var(--ts-font-heading, Georgia, serif));
}
.ts-experience .ts-host h2,
.ts-listing .ts-listing-host h2,
.ts-listing .ts-host-card h2 {
  font-family: var(--ts-font-host, var(--ts-font-heading, Georgia, serif));
}
.ts-experience .ts-footer > p,
.ts-experience .ts-footer .ts-footer-tagline,
.ts-standalone-footer > p,
.ts-system-footer > p {
  font-family: var(--ts-font-footer, var(--ts-font-heading, Georgia, serif));
}

/* 7.5.4 FINAL OVERRIDE — the supporting photograph is a button, so reset
   native button spacing and make its image cover the complete rounded frame. */
.ts-experience button.ts-property-second {
  padding: 0 !important;
  background: transparent;
  font-size: 0;
  line-height: 0;
}
.ts-experience button.ts-property-second img {
  display: block;
  width: 100%;
  height: 100%;
  min-width: 100%;
  min-height: 100%;
  max-width: none;
  margin: 0;
  object-fit: cover;
  object-position: center;
}
/* v7.6.0 — age-aware party composition and infant equipment */
.ts-party-composition{margin:20px 0 0!important;padding:18px!important;border:1px solid var(--ts-line)!important;border-radius:16px;background:rgba(255,255,255,.48)}
.ts-party-composition>legend{padding:0 8px;color:var(--ts-ink)!important;font-size:12px!important;font-weight:800!important}
.ts-party-composition>p{margin:0 0 14px;color:var(--ts-soft);font-size:13px;line-height:1.55}
.ts-party-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.ts-party-grid>label{min-width:0;padding:12px!important;border:1px solid var(--ts-line)!important;border-radius:12px;background:var(--ts-white)}
.ts-party-grid select{font-family:var(--ts-font-body,"Helvetica Neue",Arial,sans-serif)!important;font-size:18px!important;font-weight:650}
.ts-party-status{margin:10px 0 0!important;text-align:right;font-size:12px!important}
.ts-party-status:not(:empty):after{content:" occupancy"}
.ts-infant-equipment{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px;padding-top:14px;border-top:1px solid var(--ts-line)}
.ts-infant-equipment>strong{grid-column:1/-1;font-size:13px}
.ts-infant-equipment>label{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;gap:9px;padding:10px 12px!important;border:1px solid var(--ts-line)!important;border-radius:12px;background:var(--ts-white)}
.ts-infant-equipment input{width:18px!important;height:18px}
.ts-infant-equipment span{font-size:14px!important;letter-spacing:0!important;text-transform:none!important}
.ts-infant-restriction{margin:10px 0 0;padding:11px 13px;border-radius:12px;color:var(--ts-soft);background:rgba(159,80,52,.08);font-size:13px}
@media(max-width:720px){.ts-party-grid{grid-template-columns:1fr}.ts-infant-equipment{grid-template-columns:1fr}.ts-party-composition{padding:14px!important}.ts-party-status{text-align:left}}

/* Keep this tablet rule last so later legacy desktop search rules cannot
   restore the cramped six-column layout at iPad portrait/landscape widths. */
@media (min-width: 681px) and (max-width: 1180px) {
  
  
  
  
  
  
  
  
  
}

/* 7.10.1 — one booking language across the homepage finder, property card
   and slide-out window. This layer is presentation-only: field names,
   availability, pricing, fees, discounts and payment behaviour are unchanged. */
.ts-experience {
  --ts-booking-surface: #fffdf8;
  --ts-booking-control: #fffefa;
  --ts-booking-border: rgba(21,26,23,.15);
  --ts-booking-muted: #626a63;
  --ts-booking-radius: 22px;
  --ts-booking-control-radius: 13px;
  --ts-booking-shadow: 0 20px 54px rgba(21,26,23,.09);
}

/* Homepage finder: editorial heading, quiet labels and one clear action. */















.ts-experience .ts-filter-scroll {
  margin-top: 14px;
}
.ts-experience .ts-filter-scroll::after,
.ts-experience .ts-filter-scroll-cue {
  display: none;
}
.ts-experience .ts-filter-scroll .ts-filter-row {
  gap: 6px;
  margin: 0;
  padding: 7px;
  border: 1px solid var(--ts-booking-border);
  border-radius: 16px;
  background: rgba(255,255,255,.32);
}
.ts-experience .ts-filter-row > button {
  min-height: 42px;
  padding: 0 15px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 580;
  letter-spacing: 0;
  text-transform: none;
  white-space: nowrap;
}

/* Shared booking-panel typography and controls. */
.ts-experience .ts-booking-drawer {
  color: var(--ts-ink);
  background: var(--ts-booking-surface);
}
.ts-booking-backdrop:not(.ts-booking-inline) .ts-booking-drawer {
  width: min(590px,100%);
  height: 100dvh;
  padding: 64px 34px max(34px,env(safe-area-inset-bottom));
  overflow-x: hidden;
  overflow-y: auto;
  border-left: 1px solid var(--ts-booking-border);
  box-shadow: -24px 0 70px rgba(9,13,10,.18);
  overscroll-behavior: contain;
}
.ts-experience .ts-booking-close {
  top: 18px;
  right: 18px;
  width: 46px;
  height: 46px;
  border-color: var(--ts-booking-border) !important;
  background: var(--ts-booking-control);
}
.ts-experience .ts-booking-drawer h2,
.ts-listing .ts-booking-drawer h2 {
  max-width: 11ch;
  margin: 10px 0 12px;
  font: 400 clamp(34px,3vw,46px)/.98 var(--ts-font-heading,Georgia,serif);
  letter-spacing: -.045em;
}
.ts-experience .ts-booking-drawer > p:not(.ts-kicker),
.ts-listing .ts-booking-drawer > p:not(.ts-kicker) {
  max-width: 47ch;
  margin: 0 0 18px;
  color: var(--ts-booking-muted);
  font-size: 15px;
  line-height: 1.55;
}
.ts-experience .ts-booking-drawer .ts-kicker,
.ts-listing .ts-booking-drawer .ts-kicker {
  color: var(--ts-rust);
  font-size: 12px;
  font-weight: 650;
  line-height: 1.4;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.ts-experience .ts-booking-form label > span,
.ts-experience .ts-booking-form legend,
.ts-experience .ts-price-box > span,
.ts-listing .ts-booking-drawer label > span,
.ts-listing .ts-rate-plan > legend {
  color: var(--ts-booking-muted);
  font-size: 13px;
  font-weight: 560;
  line-height: 1.4;
  letter-spacing: 0;
  text-transform: none;
}
.ts-experience .ts-booking-form > label,
.ts-experience .ts-booking-form fieldset label {
  padding: 13px 0;
}
.ts-experience .ts-booking-form input,
.ts-experience .ts-booking-form select,
.ts-experience .ts-date-choice button strong {
  font-size: 16px;
  font-weight: 450;
}
.ts-experience .ts-date-choice button {
  min-height: 52px;
  padding: 8px 0;
}
.ts-experience .ts-party-composition {
  margin-top: 18px !important;
  padding: 16px !important;
  border-radius: var(--ts-booking-control-radius);
  background: rgba(255,255,255,.42);
}
.ts-experience .ts-party-composition > p {
  font-size: 13px;
  line-height: 1.5;
}
.ts-experience .ts-party-grid > label,
.ts-experience .ts-infant-equipment > label {
  border-radius: 11px;
}
.ts-experience .ts-pet-toggle {
  min-height: 52px;
  padding: 12px 0;
}
.ts-experience .ts-rate-plan {
  margin-top: 18px;
  padding-top: 18px;
}
.ts-experience .ts-rate-plan-options {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
}
.ts-experience .ts-rate-plan-options > label {
  display: grid;
  grid-template-columns: 22px minmax(0,1fr);
  gap: 10px;
  align-items: start !important;
  min-height: 0;
  padding: 14px !important;
  border: 1px solid var(--ts-booking-border);
  border-radius: var(--ts-booking-control-radius);
  background: var(--ts-booking-control);
}
.ts-experience .ts-rate-plan-options > label:has(input:checked) {
  border-color: var(--ts-rust);
  background: rgba(159,80,52,.055);
}
.ts-experience .ts-rate-plan-options strong {
  font-size: 15px;
  font-weight: 650;
  line-height: 1.35;
  letter-spacing: 0 !important;
  text-transform: none !important;
}
.ts-experience .ts-rate-plan-options small {
  display: block;
  margin-top: 5px;
  color: var(--ts-booking-muted);
  font-size: 13px;
  line-height: 1.45;
  letter-spacing: 0 !important;
  text-transform: none !important;
}
.ts-experience .ts-price-box {
  margin-top: 20px;
  padding: 19px;
  border: 1px solid var(--ts-booking-border);
  border-radius: var(--ts-booking-control-radius);
  background: var(--ts-booking-control);
}
.ts-experience .ts-price-lines div,
.ts-experience .ts-price-total {
  font-size: 14px;
  line-height: 1.45;
}
.ts-experience .ts-price-box small {
  font-size: 13px;
  line-height: 1.45;
}
.ts-experience .ts-booking-contact,
.ts-listing .ts-listing-booking-panel .ts-booking-contact {
  margin: 12px 0 4px;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: 0;
  text-transform: none;
}
.ts-experience .ts-booking-completion > summary,
.ts-experience .ts-payment-button {
  min-height: 54px;
  border-radius: 999px;
  font-size: 14px;
  font-weight: 650;
  letter-spacing: .02em;
}

/* The property booking card matches the drawer but never creates a nested
   scrollbar. It becomes a wide booking section on iPads and smaller screens. */
.ts-listing .ts-booking-inline,
.ts-listing .ts-booking-inline.is-sticky-ready,
.ts-listing .ts-booking-inline:not(:has(.ts-guest-calendar:not([hidden]))):not(:has(.ts-booking-completion[open])),
.ts-listing .ts-booking-inline.is-sticky-ready:not(:has(.ts-guest-calendar:not([hidden]))):not(:has(.ts-booking-completion[open])) {
  position: static !important;
  top: auto !important;
  align-self: start;
}
.ts-listing .ts-booking-inline .ts-booking-drawer {
  width: 100%;
  height: auto !important;
  max-height: none !important;
  padding: 26px !important;
  overflow: visible !important;
  border: 1px solid var(--ts-booking-border);
  border-radius: var(--ts-booking-radius) !important;
  background: var(--ts-booking-surface);
  box-shadow: var(--ts-booking-shadow);
}

/* Small laptops and iPads: no compressed sidebar, no six-field single row. */
@media (min-width: 681px) and (max-width: 1180px) {
  
  
  
  
  
  
  
  
  
  .ts-experience .ts-filter-scroll .ts-filter-row {
    flex-wrap: wrap;
    overflow: visible;
  }
  
  .ts-listing .ts-booking-inline {
    order: -1;
    width: 100%;
  }
  .ts-listing .ts-booking-inline .ts-booking-drawer {
    max-width: 860px;
    margin: 0 auto;
    padding: 30px !important;
  }
}

@media (max-width: 680px) {
  
  
  
  
  
  
  
  .ts-experience .ts-filter-scroll .ts-filter-row {
    flex-wrap: nowrap;
    padding: 6px;
    overflow-x: auto;
    border-radius: 15px;
    scrollbar-width: none;
  }
  .ts-experience .ts-filter-scroll .ts-filter-row::-webkit-scrollbar {
    display: none;
  }
  .ts-booking-backdrop:not(.ts-booking-inline) .ts-booking-drawer {
    width: 100%;
    padding: 68px 18px max(24px,env(safe-area-inset-bottom)) !important;
    border-left: 0;
  }
  .ts-experience .ts-rate-plan-options,
  .ts-listing .ts-booking-inline .ts-rate-plan-options {
    grid-template-columns: 1fr !important;
  }
  .ts-experience .ts-rate-plan-options > label {
    min-height: 0;
  }
  
  .ts-listing .ts-booking-inline .ts-booking-drawer {
    padding: 22px 18px calc(24px + env(safe-area-inset-bottom)) !important;
    border-radius: 18px !important;
  }
  .ts-experience .ts-booking-drawer h2,
  .ts-listing .ts-booking-drawer h2 {
    font-size: 34px;
  }
}

@media (max-width: 390px) {
  .ts-experience .ts-date-selectors {
    grid-template-columns: 1fr;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ts-booking-backdrop,
  .ts-booking-drawer,
  .ts-filter-row button{
    transition: none !important;
  }
}

/* 7.10.2 — final mobile containment and property-page recovery layer.
   Presentation only: booking field names, prices, availability, calendars,
   discounts and payment behaviour are intentionally unchanged. */
.ts-experience,
.ts-listing,
.ts-footer,
.ts-standalone-footer {
  max-width: 100%;
  overflow-x: clip;
}
.ts-experience *,
.ts-listing *,
.ts-footer *,
.ts-standalone-footer * {
  min-width: 0;
  box-sizing: border-box;
}

/* Interludes remain editorial, but the promise is now decisively legible. */
.ts-experience .ts-property-interlude > p,
.ts-experience .ts-property-interlude > p strong {
  font-weight: 700 !important;
}

/* Footer copy wraps within the viewport and uses location names consistently. */
.ts-experience .ts-footer > p,
.ts-standalone-footer > p,
.ts-experience .ts-footer small,
.ts-standalone-footer small {
  max-width: 100%;
  overflow-wrap: anywhere;
}
.ts-experience .ts-footer-nav,
.ts-experience .ts-footer-seo-links,
.ts-standalone-footer nav,
.ts-standalone-footer .ts-standalone-seo-links {
  max-width: 100%;
  flex-wrap: wrap;
}

@media (max-width: 680px) {
  /* The finder and every native iOS control stay inside one card. */
  
  
  
  
  
  
  
  

  /* Filters may scroll inside their own rail but can never widen the page. */
  .ts-experience .ts-filter-scroll {
    width: 100%;
    max-width: 100%;
    overflow: hidden;
  }
  .ts-experience .ts-filter-scroll .ts-filter-row {
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-inline: contain;
    -webkit-overflow-scrolling: touch;
  }
  .ts-experience .ts-filter-scroll .ts-filter-row > * {
    flex: 0 0 auto;
  }

  /* Both property journeys have identical, full-width mobile targets. */
  .ts-experience .ts-property-actions {
    display: grid !important;
    width: 100%;
    grid-template-columns: minmax(0,1fr) !important;
    gap: 10px !important;
  }
  .ts-experience .ts-property-actions .ts-book-button,
  .ts-experience .ts-property-actions .ts-property-details {
    width: 100% !important;
    min-height: 54px !important;
    justify-content: center !important;
    padding: 12px 18px !important;
    /* One button family: the mobile targets keep their larger tap height but
       take the shared control radius instead of a capsule. */
    border-radius: var(--ts-r-control, 10px) !important;
    text-align: center;
  }
  .ts-experience .ts-property-actions .ts-property-details {
    border: 1px solid rgba(21,26,23,.34);
    text-decoration: none;
  }

  /* Marketing copy is prominent without becoming a full-screen section. */
  .ts-experience .ts-properties > .ts-property-interlude.ts-shell {
    width: 100% !important;
    max-width: 100% !important;
    min-height: 220px;
    padding: 42px 24px !important;
  }
  .ts-experience .ts-property-interlude > p {
    max-width: 18ch;
    font-size: clamp(28px,8.2vw,36px) !important;
    line-height: 1.06 !important;
  }

  /* Trust and footer grids stay balanced at narrow iPhone widths. */
  .ts-experience .ts-home-trust-strip {
    width: calc(100% - 28px);
    max-width: calc(100% - 28px);
    grid-template-columns: repeat(2,minmax(0,1fr));
  }
  .ts-experience .ts-home-trust-item {
    min-height: 112px;
    padding: 16px;
  }
  .ts-experience .ts-home-trust-item:nth-child(2n) {
    border-right: 0;
  }
  .ts-experience .ts-home-trust-contact {
    grid-column: 1 / -1;
  }
  .ts-experience .ts-footer,
  .ts-standalone-footer {
    width: 100%;
    padding-inline: 24px !important;
  }
  .ts-experience .ts-footer > p,
  .ts-standalone-footer > p {
    width: 100%;
    font-size: clamp(28px,8.5vw,40px) !important;
    line-height: 1.08;
  }
  .ts-experience .ts-footer small,
  .ts-standalone-footer small {
    width: 100%;
    font-size: 12px !important;
    line-height: 1.6;
  }
  .ts-experience .ts-footer-nav,
  .ts-experience .ts-footer-seo-links,
  .ts-standalone-footer nav,
  .ts-standalone-footer .ts-standalone-seo-links {
    display: grid !important;
    width: 100%;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 8px 16px !important;
  }
  .ts-experience .ts-footer-nav a,
  .ts-experience .ts-footer-seo-links a,
  .ts-standalone-footer nav a,
  .ts-standalone-footer .ts-standalone-seo-links a {
    white-space: normal;
    overflow-wrap: anywhere;
  }
}

@media (max-width: 390px) {
  .ts-experience .ts-home-trust-strip {
    grid-template-columns: minmax(0,1fr);
  }
  .ts-experience .ts-home-trust-item {
    border-right: 0;
  }
}

/* 7.10.3 — canonical mobile alignment.
   This is a presentation-only repair shared by the homepage and all seven
   property pages. Booking data, rate calculations and payment behaviour are
   intentionally untouched. */
body.ts-brand-home,
body.ts-branded-page {
  max-width: 100%;
  overflow-x: clip;
}
.ts-experience,
.ts-listing,
.ts-experience > *,
.ts-listing > * {
  max-width: 100%;
}
.ts-experience img,
.ts-listing img {
  max-width: 100%;
}

/* The visible Swiss date field owns the dimensions. The native date input is
   still the accessible, clickable control, but it no longer contributes its
   oversized iOS intrinsic width to the layout. */





.ts-experience .ts-property-interlude > p,
.ts-experience .ts-property-interlude > p strong {
  font-style: normal !important;
  font-weight: 700 !important;
}

/* Prevent an unstyled listing icon from ever becoming page-sized, including
   during stylesheet swaps or slow-cache refreshes. */
.ts-listing .ts-listing-icon,
.ts-listing .ts-listing-icon svg {
  display: block !important;
  width: 22px !important;
  max-width: 22px !important;
  height: 22px !important;
  max-height: 22px !important;
  flex: 0 0 22px !important;
}

@media (max-width: 680px) {
  
  
  
  
  
  
  
  
  
  
  
  

  /* The filter choices wrap into a deliberate grid instead of appearing as a
     clipped horizontal sentence at the right edge of an iPhone. */
  .ts-experience .ts-filter-scroll {
    width: 100% !important;
    max-width: 100% !important;
    margin-top: 14px !important;
    overflow: visible !important;
  }
  .ts-experience .ts-filter-scroll::after,
  .ts-experience .ts-filter-scroll-cue {
    display: none !important;
  }
  .ts-experience .ts-filter-scroll .ts-filter-row {
    display: grid !important;
    width: 100% !important;
    max-width: 100% !important;
    grid-template-columns: repeat(3,minmax(0,1fr)) !important;
    gap: 8px !important;
    padding: 8px !important;
    overflow: visible !important;
    border-radius: 18px !important;
  }
  .ts-experience .ts-filter-scroll .ts-filter-row > button {
    width: 100% !important;
    min-width: 0 !important;
    min-height: 44px !important;
    padding: 7px 6px !important;
    white-space: normal !important;
    font-size: 11px !important;
    line-height: 1.2 !important;
  }
  .ts-experience .ts-filter-scroll .ts-filter-row > label {
    display: none !important;
  }

  /* Equal hierarchy and exact equal width for the two property journeys. */
  .ts-experience article.ts-property .ts-property-actions-primary-secondary {
    display: flex !important;
    width: 100% !important;
    max-width: 100% !important;
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 10px !important;
  }
  .ts-experience article.ts-property .ts-property-actions-primary-secondary > *,
  .ts-experience article.ts-property .ts-property-actions-primary-secondary .ts-book-button,
  .ts-experience article.ts-property .ts-property-actions-primary-secondary .ts-property-details-full {
    display: flex !important;
    width: 100% !important;
    max-width: 100% !important;
    min-height: 56px !important;
    flex: 0 0 auto !important;
    align-items: center !important;
    justify-content: center !important;
    margin: 0 !important;
    padding: 13px 18px !important;
    border-radius: var(--ts-r-control, 10px) !important;
    text-align: center !important;
    text-decoration: none !important;
    line-height: 1.25 !important;
  }
  .ts-experience article.ts-property .ts-property-actions-primary-secondary .ts-property-details-full {
    border: 1px solid rgba(21,26,23,.42) !important;
    color: #151a17 !important;
    background: transparent !important;
  }

  .ts-experience .ts-properties > .ts-property-interlude.ts-shell {
    min-height: 205px !important;
    padding: 38px 24px !important;
  }
  .ts-experience .ts-property-interlude > p {
    max-width: 19ch !important;
    font-size: clamp(27px,7.8vw,34px) !important;
    line-height: 1.08 !important;
  }

  /* Canonical property pages: contained facts, two photographs and one-column
     content. These rules cover all seven shortcode-driven listings. */
  .ts-listing .ts-listing-topbar,
  .ts-listing .ts-listing-hero,
  .ts-listing .ts-listing-gallery,
  .ts-listing .ts-listing-final,
  .ts-listing .ts-listing-related{
    max-width: 100% !important;
  }
  .ts-listing .ts-listing-topbar {
    width: calc(100% - 32px) !important;
    margin-inline: auto !important;
  }
  .ts-listing .ts-listing-hero {
    display: grid !important;
    width: 100% !important;
    min-height: 0 !important;
    grid-template-columns: minmax(0,1fr) !important;
  }
  .ts-listing .ts-listing-main-image {
    width: 100% !important;
    min-height: 320px !important;
    grid-row: 1 !important;
    overflow: hidden !important;
  }
  .ts-listing .ts-listing-main-image img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
  }
  .ts-listing .ts-listing-hero-copy {
    width: 100% !important;
    grid-row: 2 !important;
    padding: 36px 20px 42px !important;
  }
  .ts-listing .ts-listing-hero h1 {
    max-width: 100% !important;
    font-size: clamp(42px,11vw,56px) !important;
    overflow-wrap: break-word !important;
  }
  .ts-listing .ts-listing-facts {
    display: grid !important;
    width: 100% !important;
    grid-template-columns: repeat(2,minmax(0,1fr)) !important;
    gap: 10px !important;
  }
  .ts-listing .ts-listing-facts > span {
    display: grid !important;
    min-width: 0 !important;
    grid-template-columns: 22px minmax(0,1fr) !important;
    gap: 8px !important;
  }
  .ts-listing .ts-listing-facts b {
    min-width: 0 !important;
    font-size: 15px !important;
    overflow-wrap: anywhere !important;
  }
  .ts-listing .ts-listing-gallery {
    display: grid !important;
    width: 100% !important;
    grid-template-columns: repeat(2,minmax(0,1fr)) !important;
    gap: 6px !important;
    padding: 6px !important;
  }
  .ts-listing .ts-listing-gallery button {
    display: block !important;
    min-width: 0 !important;
  }
  .ts-listing .ts-listing-gallery button:nth-child(n+3) {
    display: none !important;
  }
  
  .ts-listing .ts-listing-content,
  .ts-listing .ts-booking-inline {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }
  .ts-listing .ts-booking-inline {
    position: static !important;
    inset: auto !important;
    order: -1 !important;
    max-height: none !important;
    overflow: visible !important;
  }
  .ts-listing .ts-booking-inline .ts-booking-drawer {
    width: 100% !important;
    max-width: 100% !important;
    max-height: none !important;
    overflow: visible !important;
    border-radius: 20px !important;
  }
  .ts-listing .ts-listing-actions {
    display: grid !important;
    width: 100% !important;
    grid-template-columns: minmax(0,1fr) !important;
  }
  .ts-listing .ts-listing-actions > * {
    width: 100% !important;
    justify-content: center !important;
  }
}

@media (max-width: 390px) {
  .ts-experience .ts-filter-scroll .ts-filter-row {
    grid-template-columns: repeat(2,minmax(0,1fr)) !important;
  }
  .ts-listing .ts-listing-facts {
    grid-template-columns: minmax(0,1fr) !important;
  }
}

/* 7.10.4 FINAL OVERRIDES — kept last so no historical responsive layer can
   reintroduce the category filters, finder misalignment or oversized footer. */
.ts-experience .ts-filter-scroll,
.ts-experience [data-ts-filter],
.ts-experience [data-ts-guest-filter],
.ts-experience [data-ts-filter-count] {
  display: none !important;
}














.ts-experience .ts-home-trust-strip {
  margin-top: 28px !important;
}
.ts-experience .ts-property-contact {
  display: inline-flex !important;
  width: auto !important;
  min-height: 42px !important;
  align-items: center !important;
  margin-top: 12px !important;
  padding: 0 2px !important;
  font-size: 14px !important;
  font-weight: 650 !important;
  text-decoration: underline !important;
  text-underline-offset: 6px !important;
}

.ts-experience .ts-final {
  min-height: 190px !important;
  padding: 30px 24px !important;
}
.ts-experience .ts-final > div {
  gap: 12px !important;
}
.ts-experience .ts-final button {
  font-size: clamp(38px,4.3vw,64px) !important;
  line-height: .98 !important;
}
.ts-experience .ts-final > div > a {
  min-height: 42px !important;
  padding: 0 20px !important;
}
.ts-experience .ts-footer {
  min-height: 0 !important;
  display: grid !important;
  grid-template-columns: minmax(190px,.7fr) minmax(320px,1.3fr) !important;
  gap: 12px 28px !important;
  align-items: center !important;
  padding: 26px clamp(26px,4.5vw,80px) 20px !important;
}
.ts-experience .ts-footer .ts-brand {
  margin: 0 !important;
}
.ts-experience .ts-footer > p,
.ts-experience .ts-footer .ts-footer-tagline {
  max-width: none !important;
  margin: 0 !important;
  text-align: right !important;
  font-size: clamp(22px,2vw,32px) !important;
  line-height: 1.05 !important;
}
.ts-experience .ts-footer .ts-footer-nav,
.ts-experience .ts-footer .ts-footer-seo-links {
  grid-column: 1 / -1 !important;
  width: 100% !important;
  gap: 10px 24px !important;
  margin: 0 !important;
  padding: 11px 0 !important;
}
.ts-experience .ts-footer small {
  grid-column: 1 / -1 !important;
  margin: 0 !important;
  padding: 9px 0 0 !important;
  font-size: 11px !important;
  line-height: 1.4 !important;
}
.ts-standalone-footer {
  min-height: 0 !important;
  gap: 14px !important;
  padding: 28px clamp(24px,4.5vw,72px) 22px !important;
}
.ts-standalone-footer > p {
  margin-block: 0 !important;
  font-size: clamp(22px,2.1vw,32px) !important;
  line-height: 1.08 !important;
}
.ts-standalone-footer nav,
.ts-standalone-footer .ts-standalone-seo-links {
  margin: 0 !important;
  padding-block: 10px !important;
}

@media (max-width: 1180px) {
  
  
  
  
  
  
  
}

@media (max-width: 680px) {
  
  
  
  
  
  .ts-experience .ts-home-trust-strip {
    margin-top: 18px !important;
  }
  .ts-experience .ts-property-contact {
    width: 100% !important;
    justify-content: center !important;
  }
  .ts-experience .ts-final {
    min-height: 170px !important;
    padding: 28px 18px !important;
  }
  .ts-experience .ts-final button {
    font-size: clamp(34px,9vw,44px) !important;
  }
  .ts-experience .ts-footer {
    display: grid !important;
    grid-template-columns: minmax(0,1fr) !important;
    gap: 9px !important;
    padding: 24px 22px calc(22px + env(safe-area-inset-bottom)) !important;
  }
  .ts-experience .ts-footer > p,
  .ts-experience .ts-footer .ts-footer-tagline {
    grid-column: 1 !important;
    text-align: left !important;
    font-size: 23px !important;
  }
  .ts-experience .ts-footer .ts-footer-nav,
  .ts-experience .ts-footer .ts-footer-seo-links {
    grid-column: 1 !important;
    gap: 8px 16px !important;
    padding: 9px 0 !important;
  }
  .ts-experience .ts-footer small {
    grid-column: 1 !important;
    padding-top: 7px !important;
  }
  .ts-standalone-footer {
    gap: 10px !important;
    padding: 24px 22px calc(22px + env(safe-area-inset-bottom)) !important;
  }
  .ts-standalone-footer > p {
    font-size: 23px !important;
  }
}

/* 7.10.5 FINAL RESPONSIVE OVERRIDES.
   This small release changes presentation only. It is deliberately last so
   legacy breakpoint rules cannot resize or reposition the finder controls. */
.ts-experience article.ts-property .ts-property-contact {
  display: none !important;
}























/* At the same breakpoint at which a property hero becomes one column, its
   action row is removed so it cannot sit between the hero and gallery photos.
   Booking remains available in the complete booking section below. */
@media (max-width: 950px) {
  .ts-listing .ts-listing-hero-copy .ts-listing-actions {
    display: none !important;
  }
}

/* iPad portrait/landscape: paired fields and paired actions. */
@media (min-width: 768px) and (max-width: 1180px) {
  
  
  
}

/* iPhone portrait and narrow browser windows: one contained control per row. */
@media (max-width: 767px) {
  
  
  
  
  
}

/* 7.10.6 — WPConsent 1.1.8, using the plugin's documented variables and
   exported Shadow DOM parts. Consent behaviour remains owned by WPConsent. */
:root {
  --wpconsent-floating-button-bg: #1f3128;
  --wpconsent-floating-button-color: #fffdf8;
}

#wpconsent-container {
  --wpconsent-z-index: 999990;
  --wpconsent-min-width: 0;
  --wpconsent-padding: 18px 20px;
  --wpconsent-border-radius: 20px;
  --wpconsent-shadow: 0 20px 60px rgba(20, 25, 22, .20);
  --wpconsent-background: #fbf8f1;
  --wpconsent-text: #151a17;
  --wpconsent-border: rgba(21, 26, 23, .18);
  --wpconsent-outline-color: rgba(21, 26, 23, .14);
  --wpconsent-accept-bg: #1f3128;
  --wpconsent-accept-color: #fffdf8;
  --wpconsent-cancel-bg: #1f3128;
  --wpconsent-cancel-color: #fffdf8;
  --wpconsent-preferences-bg: transparent;
  --wpconsent-preferences-color: #9f5034;
  --wpconsent-font-size: 16px;
  --wpconsent-title-size: 21px;
  --wpconsent-line-height: 1.55;
  --wpconsent-focus-outline-color: #b45a3c;
  --wpconsent-focus-outline-width: 3px;
  --wpconsent-focus-outline-offset: 3px;
  font-family: var(--ts-font-body, Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);
}

#wpconsent-container::part(wpconsent-banner) {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 18px 28px;
  width: min(1120px, calc(100% - 40px));
  max-width: 1120px;
  margin: 0 auto 18px;
  border: 1px solid rgba(21, 26, 23, .16);
  border-radius: 20px;
}

#wpconsent-container::part(wpconsent-banner-body) {
  min-width: 0;
  max-width: 720px;
  font-size: 16px;
  line-height: 1.55;
}

#wpconsent-container::part(wpconsent-banner-footer) {
  display: grid;
  grid-template-columns: repeat(3, minmax(118px, auto));
  align-items: center;
  gap: 10px;
}

#wpconsent-container::part(wpconsent-button-accept),
#wpconsent-container::part(wpconsent-button-cancel),
#wpconsent-container::part(wpconsent-button-preferences),
#wpconsent-container::part(wpconsent-preferences-accept-button),
#wpconsent-container::part(wpconsent-preferences-cancel-button),
#wpconsent-container::part(wpconsent-preferences-save-button) {
  min-height: 48px;
  padding: 11px 17px;
  border-radius: 999px;
  font: 700 13px/1.2 var(--ts-font-body, Inter, ui-sans-serif, system-ui, sans-serif);
  letter-spacing: .04em;
  text-transform: none;
  white-space: nowrap;
}

#wpconsent-container::part(wpconsent-button-preferences) {
  border: 1px solid rgba(159, 80, 52, .45);
}

#wpconsent-container::part(wpconsent-button-preferences):hover {
  background: rgba(159, 80, 52, .08);
}

#wpconsent-container::part(wpconsent-button-accept):hover,
#wpconsent-container::part(wpconsent-button-cancel):hover,
#wpconsent-container::part(wpconsent-preferences-accept-button):hover,
#wpconsent-container::part(wpconsent-preferences-save-button):hover {
  background: #16241d;
  transform: translateY(-1px);
}

#wpconsent-container::part(wpconsent-preferences-modal) {
  padding: 20px;
  background: rgba(15, 21, 18, .64);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

#wpconsent-container::part(wpconsent-preferences-content) {
  width: min(680px, calc(100vw - 32px));
  max-height: min(760px, calc(100dvh - 32px));
  border: 1px solid rgba(21, 26, 23, .15);
  border-radius: 24px;
  box-shadow: 0 28px 80px rgba(15, 21, 18, .28);
}

#wpconsent-container::part(wpconsent-preferences-header),
#wpconsent-container::part(wpconsent-preferences-description),
#wpconsent-container::part(wpconsent-preferences-actions) {
  padding-right: clamp(20px, 4vw, 34px);
  padding-left: clamp(20px, 4vw, 34px);
}

#wpconsent-container::part(wpconsent-preferences-title) {
  font-family: var(--ts-font-heading, Georgia, serif);
  font-size: clamp(30px, 5vw, 46px);
  font-weight: 500;
  line-height: 1;
  letter-spacing: -.035em;
}

#wpconsent-container::part(wpconsent-preferences-close) {
  width: 44px;
  height: 44px;
  border: 1px solid rgba(21, 26, 23, .16);
  border-radius: 50%;
}

#wpconsent-container::part(wpconsent-accordion-item) {
  margin-bottom: 10px;
  border: 1px solid rgba(21, 26, 23, .13);
  border-radius: 16px;
  overflow: hidden;
}

#wpconsent-container::part(wpconsent-accordion-header) {
  min-height: 58px;
  padding: 12px 16px;
}

#wpconsent-container::part(wpconsent-preferences-buttons) {
  gap: 10px;
}

#wpconsent-container::part(wpconsent-settings-button) {
  left: 16px;
  right: auto;
  bottom: calc(16px + env(safe-area-inset-bottom));
  width: 46px;
  height: 46px;
  border: 1px solid rgba(255, 253, 248, .28);
  border-radius: 50%;
  box-shadow: 0 10px 30px rgba(15, 21, 18, .20);
}

/* A persistent, lightweight way to reopen choices without relying only on a
   floating control. WPConsent owns the click behaviour for this class. */
.ts-footer-cookie-settings {
  width: auto !important;
  min-width: 0 !important;
  height: auto !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  color: inherit !important;
  background: transparent !important;
  font: inherit !important;
  letter-spacing: inherit !important;
  text-transform: none !important;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 5px;
  cursor: pointer;
}

.ts-footer-cookie-settings:hover { color: #dfb98a !important; }
.ts-footer-cookie-settings:focus-visible {
  outline: 3px solid #dfb98a;
  outline-offset: 4px;
  border-radius: 4px !important;
}

/* Listing cleanup confirmed in the live audit. */
.ts-listing .ts-listing-topbar { justify-content: flex-start; }
.ts-listing .ts-listing-highlight-heading { justify-content: flex-start; }



@media (max-width: 900px) {
  #wpconsent-container::part(wpconsent-banner) {
    grid-template-columns: 1fr;
    gap: 15px;
    width: calc(100% - 24px);
    margin-bottom: calc(12px + env(safe-area-inset-bottom));
  }
  #wpconsent-container::part(wpconsent-banner-footer) {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    width: 100%;
  }
}

@media (max-width: 600px) {
  #wpconsent-container {
    --wpconsent-padding: 16px;
    --wpconsent-font-size: 15px;
  }
  #wpconsent-container::part(wpconsent-banner) {
    gap: 13px;
    border-radius: 18px;
  }
  #wpconsent-container::part(wpconsent-banner-body) {
    font-size: 15px;
    line-height: 1.5;
  }
  #wpconsent-container::part(wpconsent-banner-footer) {
    grid-template-columns: 1fr 1fr;
  }
  #wpconsent-container::part(wpconsent-button-preferences) {
    grid-column: 1 / -1;
    grid-row: 2;
  }
  #wpconsent-container::part(wpconsent-button-accept),
  #wpconsent-container::part(wpconsent-button-cancel),
  #wpconsent-container::part(wpconsent-button-preferences) {
    width: 100%;
    min-width: 0;
    min-height: 50px;
    padding-right: 10px;
    padding-left: 10px;
    white-space: normal;
  }
  #wpconsent-container::part(wpconsent-preferences-modal) { padding: 10px; }
  #wpconsent-container::part(wpconsent-preferences-content) {
    width: calc(100vw - 20px);
    max-height: calc(100dvh - 20px);
    border-radius: 18px;
  }
  #wpconsent-container::part(wpconsent-preferences-buttons),
  #wpconsent-container::part(wpconsent-preferences-buttons-left) {
    display: grid;
    grid-template-columns: 1fr;
    width: 100%;
  }
  #wpconsent-container::part(wpconsent-preferences-accept-button),
  #wpconsent-container::part(wpconsent-preferences-cancel-button),
  #wpconsent-container::part(wpconsent-preferences-save-button) {
    width: 100%;
  }
  #wpconsent-container::part(wpconsent-settings-button) {
    left: 12px;
    bottom: calc(12px + env(safe-area-inset-bottom));
    width: 44px;
    height: 44px;
  }
  
}

@media (prefers-reduced-motion: reduce) {
  #wpconsent-container::part(wpconsent-banner),
  #wpconsent-container::part(wpconsent-preferences-modal),
  #wpconsent-container::part(wpconsent-preferences-content),
  #wpconsent-container::part(wpconsent-button-accept),
  #wpconsent-container::part(wpconsent-button-cancel),
  #wpconsent-container::part(wpconsent-button-preferences) {
    animation: none !important;
    transition: none !important;
    transform: none !important;
  }
}

/* 7.10.7 LISTING RHYTHM — compact, scan-friendly property pages.
   The map component is intentionally excluded from this release. */
.ts-listing { --ts-listing-section-space: clamp(38px,4vw,56px); }

.ts-listing .ts-listing-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit,minmax(150px,1fr));
  gap: 7px;
  padding: 7px;
}
.ts-listing .ts-listing-gallery button {
  min-width: 0;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-radius: 10px;
}
.ts-listing .ts-listing-gallery img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ts-listing .ts-listing-content > section { padding-bottom: var(--ts-listing-section-space); }
.ts-listing .ts-listing-content > section + section { padding-top: var(--ts-listing-section-space); }
.ts-listing .ts-listing-content h2 {
  max-width: 24ch;
  font-size: clamp(34px,3vw,48px);
  line-height: 1.02;
}
.ts-listing .ts-listing-overview-copy { max-width: 68ch; }
.ts-listing .ts-listing-overview-copy p {
  margin: 0;
  color: var(--ts-soft,#5d655f);
  font-size: clamp(17px,1.25vw,19px);
  line-height: 1.68;
}
.ts-listing .ts-listing-overview-copy p + p { margin-top: 16px; }
.ts-listing .ts-listing-overview-copy .ts-listing-lead {
  color: var(--ts-ink,#151a17);
  font-size: clamp(19px,1.45vw,22px);
  line-height: 1.55;
}
.ts-listing .ts-listing-about-more {
  max-width: 68ch;
  margin-top: 20px;
}
.ts-listing .ts-listing-sleeping-section h2 { font-size: clamp(32px,2.55vw,42px); }
.ts-listing .ts-listing-sleeping-list {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 10px;
  margin-top: 20px;
}
.ts-listing .ts-listing-sleeping-list li {
  min-height: 64px;
  padding: 15px 17px;
  border: 1px solid rgba(21,26,23,.13);
  border-radius: 16px;
  background: rgba(255,255,255,.54);
}
.ts-listing .ts-listing-sleeping-list li > span {
  font-size: 16px;
  line-height: 1.4;
}
.ts-experience .ts-party-disclosure {
  margin: 14px 0 0;
  border-top: 1px solid var(--ts-booking-border,rgba(21,26,23,.14));
  border-bottom: 1px solid var(--ts-booking-border,rgba(21,26,23,.14));
}
.ts-experience .ts-party-disclosure > summary {
  display: grid;
  min-height: 58px;
  grid-template-columns: minmax(0,1fr) auto 22px;
  gap: 10px;
  align-items: center;
  padding: 10px 0;
  color: var(--ts-ink,#151a17);
  cursor: pointer;
  list-style: none;
}
.ts-experience .ts-party-disclosure > summary::-webkit-details-marker { display: none; }
.ts-experience .ts-party-disclosure > summary span {
  color: var(--ts-booking-muted,#626963);
  font-size: 14px;
  font-weight: 560;
}
.ts-experience .ts-party-disclosure > summary strong {
  font-size: 15px;
  font-weight: 650;
}
.ts-experience .ts-party-disclosure > summary i {
  font-size: 22px;
  font-style: normal;
  text-align: center;
  transition: transform 220ms ease;
}
.ts-experience .ts-party-disclosure[open] > summary i { transform: rotate(45deg); }
.ts-experience .ts-party-disclosure .ts-party-composition {
  margin: 0 0 16px !important;
  padding: 15px !important;
}
.ts-experience .ts-party-disclosure .ts-party-grid { gap: 8px; }
.ts-experience .ts-party-disclosure .ts-party-grid > label { padding: 10px !important; }
.ts-experience .ts-party-disclosure .ts-party-composition > p { font-size: 14px; }
.ts-listing .ts-booking-inline,
.ts-listing .ts-booking-inline.is-sticky-ready {
  position: static !important;
  top: auto !important;
  max-height: none !important;
  overflow: visible !important;
}
.ts-listing .ts-booking-inline .ts-booking-drawer {
  height: auto !important;
  max-height: none !important;
  overflow: visible !important;
}

@media (max-width: 680px) {
  .ts-listing { --ts-listing-section-space: 36px; }
  
  .ts-listing .ts-listing-content > section { padding-bottom: var(--ts-listing-section-space) !important; }
  .ts-listing .ts-listing-content > section + section { padding-top: var(--ts-listing-section-space) !important; }
  .ts-listing .ts-listing-content h2 {
    max-width: 100%;
    font-size: clamp(32px,9vw,40px);
  }
  .ts-listing .ts-listing-sleeping-list { grid-template-columns: 1fr; }
  .ts-listing .ts-listing-sleeping-list li { min-height: 60px; }
  .ts-experience .ts-party-disclosure > summary { grid-template-columns: minmax(0,1fr) auto 20px; }
  .ts-experience .ts-party-disclosure .ts-party-grid { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .ts-experience .ts-party-disclosure > summary i { transition: none; }
}

/* ==========================================================================
   7.11.0 LAYOUT FOUNDATION
   --------------------------------------------------------------------------
   Single authoritative layout definition for the homepage stay finder,
   listing content/sidebar shell, Good-to-know callout and homepage host
   contact block. Historical rules for these component families were removed
   instead of being overridden again. Booking calculations, availability,
   Stripe, iCal, maps and reservation logic are unchanged.
   ========================================================================== */
.ts-experience,
.ts-listing {
  --ts-layout-wide: 1360px;
  --ts-layout-standard: 1180px;
  --ts-layout-reading: 760px;
  --ts-layout-gutter: clamp(20px,3vw,36px);
  --ts-layout-gap: clamp(24px,3.5vw,56px);
  --ts-space-xs: 8px;
  --ts-space-sm: 14px;
  --ts-space-md: 24px;
  --ts-space-lg: 40px;
  --ts-space-xl: 64px;
}
.ts-experience .ts-shell {
  width:min(var(--ts-layout-wide),calc(100% - (var(--ts-layout-gutter) * 2)));
  max-width:var(--ts-layout-wide);
  margin-inline:auto;
}

/* Homepage finder */
.ts-experience .ts-stay-finder-after-hero {
  width: min(var(--ts-layout-wide),calc(100% - (var(--ts-layout-gutter) * 2)));
  margin: clamp(28px,3vw,44px) auto 0;
  padding: clamp(24px,2.6vw,34px);
  border: 1px solid var(--ts-booking-border,rgba(21,26,23,.15));
  border-radius: 22px;
  background: var(--ts-booking-surface,#fffdf8);
  box-shadow: 0 18px 50px rgba(21,26,23,.075);
}
.ts-experience .ts-stay-finder-head { display:block; margin:0 0 18px; }
.ts-experience .ts-stay-finder-head h3 {
  max-width:none;
  margin:0;
  font:400 clamp(36px,3.2vw,50px)/1.02 var(--ts-font-heading,Georgia,serif);
  letter-spacing:-.038em;
}
.ts-experience .ts-stay-finder-head p {
  display:block;
  max-width:60ch;
  margin:8px 0 0;
  color:var(--ts-booking-muted,#626a63);
  font-size:15px;
  line-height:1.55;
}
.ts-experience .ts-global-search {
  position:relative;
  width:100%;
  min-width:0;
}
.ts-experience .ts-search-bar {
  display:grid;
  grid-template-columns:minmax(0,1.3fr) minmax(0,.9fr) auto;
  align-items:stretch;
  width:100%;
  min-height:76px;
  overflow:hidden;
  border:1px solid var(--ts-booking-border,rgba(21,26,23,.15));
  border-radius:18px;
  background:rgba(255,255,255,.78);
  box-shadow:0 10px 30px rgba(21,26,23,.045);
}
.ts-experience .ts-search-segment {
  position:relative;
  display:grid;
  gap:4px;
  align-content:center;
  justify-items:start;
  width:100%;
  min-width:0;
  min-height:76px;
  padding:14px 24px;
  border:0;
  border-radius:0;
  color:var(--ts-ink,#151a17);
  background:transparent;
  box-shadow:none;
  text-align:left;
  cursor:pointer;
}
.ts-experience .ts-search-segment + .ts-search-segment::before {
  position:absolute;
  top:18px;
  bottom:18px;
  left:0;
  width:1px;
  background:rgba(21,26,23,.11);
  content:"";
}
.ts-experience .ts-search-segment:hover,
.ts-experience .ts-search-segment:focus-visible,
.ts-experience .ts-search-segment[aria-expanded="true"] {
  background:rgba(31,49,40,.045);
  outline:none;
}
.ts-experience .ts-search-segment span {
  color:var(--ts-ink,#151a17);
  font-size:12px;
  font-weight:700;
  line-height:1.1;
  letter-spacing:.02em;
}
.ts-experience .ts-search-segment strong {
  max-width:100%;
  overflow:hidden;
  color:var(--ts-booking-muted,#626a63);
  font-size:15px;
  font-weight:430;
  line-height:1.25;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.ts-experience .ts-search-submit {
  display:inline-flex;
  min-width:178px;
  min-height:58px;
  align-self:center;
  align-items:center;
  justify-content:center;
  gap:12px;
  margin:9px;
  padding:0 24px;
  border:0;
  border-radius:14px;
  color:#fff;
  background:var(--ts-forest,#1f3128);
  box-shadow:0 10px 24px rgba(31,49,40,.14);
  cursor:pointer;
  font-size:14px;
  font-weight:700;
  white-space:nowrap;
}
.ts-experience .ts-search-submit b {
  font-size:18px;
  font-weight:400;
}
.ts-experience .ts-search-submit:hover,
.ts-experience .ts-search-submit:focus-visible { background:var(--ts-ink,#151a17); outline:none; }
.ts-experience .ts-search-submit:disabled { cursor:wait; opacity:.68; }
.ts-experience .ts-search-who-popover {
  position:absolute;
  z-index:30;
  top:calc(76px + 10px);
  right:190px;
  width:min(390px,calc(100% - 24px));
  padding:20px;
  border:1px solid rgba(21,26,23,.12);
  border-radius:16px;
  background:#fffdf8;
  box-shadow:0 22px 48px rgba(21,26,23,.12);
}
.ts-experience .ts-search-who-popover[hidden] { display:none !important; }
.ts-experience .ts-search-who-row,
.ts-experience .ts-search-dog-row {
  display:flex;
  gap:18px;
  align-items:center;
  justify-content:space-between;
}
.ts-experience .ts-search-who-row { padding-bottom:18px; }
.ts-experience .ts-search-who-row > div:first-child,
.ts-experience .ts-search-dog-row > span { display:grid; gap:4px; }
.ts-experience .ts-search-who-row strong,
.ts-experience .ts-search-dog-row strong { color:var(--ts-ink,#151a17); font-size:15px; font-weight:650; }
.ts-experience .ts-search-who-row span,
.ts-experience .ts-search-dog-row small { color:var(--ts-booking-muted,#626a63); font-size:12px; line-height:1.4; }
.ts-experience .ts-search-stepper { display:flex; gap:10px; align-items:center; }
.ts-experience .ts-search-stepper button {
  display:grid;
  width:38px;
  min-width:38px;
  height:38px;
  min-height:38px;
  place-items:center;
  padding:0;
  border:1px solid rgba(21,26,23,.18);
  border-radius:999px;
  color:var(--ts-ink,#151a17);
  background:transparent;
  box-shadow:none;
  cursor:pointer;
  font-size:19px;
}
.ts-experience .ts-search-stepper button:disabled { cursor:not-allowed; opacity:.28; }
.ts-experience .ts-search-stepper strong { min-width:22px; text-align:center; }
.ts-experience .ts-search-dog-row {
  padding-top:18px;
  border-top:1px solid rgba(21,26,23,.10);
  cursor:pointer;
}
.ts-experience .ts-search-dog-row input[type="checkbox"] {
  flex:0 0 auto;
  width:24px;
  height:24px;
  margin:0;
  accent-color:var(--ts-forest,#1f3128);
}
.ts-experience .ts-search-feedback {
  display:flex;
  gap:22px;
  align-items:center;
  justify-content:space-between;
  margin-top:14px;
  padding:16px 18px;
  border:1px solid rgba(21,26,23,.10);
  border-radius:16px;
  background:rgba(255,255,255,.50);
}
.ts-experience .ts-search-feedback[hidden] { display:none !important; }
.ts-experience .ts-search-feedback.is-empty { background:rgba(159,80,52,.045); }
.ts-experience .ts-search-feedback > div:first-child { display:grid; gap:4px; }
.ts-experience .ts-search-feedback strong { color:var(--ts-ink,#151a17); font-size:15px; font-weight:700; }
.ts-experience .ts-search-feedback:not(.is-empty) [data-ts-search-feedback-title]::before {
  display:inline-block;
  width:7px;
  height:7px;
  margin-right:9px;
  border-radius:50%;
  background:var(--ts-forest,#1f3128);
  content:"";
  vertical-align:2px;
}
.ts-experience .ts-search-feedback span { color:var(--ts-booking-muted,#626a63); font-size:13px; line-height:1.45; }
.ts-experience .ts-search-feedback-actions { display:flex; gap:8px; flex:0 0 auto; }
.ts-experience .ts-search-feedback-actions button {
  width:auto;
  min-height:40px;
  padding:0 14px;
  border:1px solid rgba(21,26,23,.13);
  border-radius:12px;
  color:var(--ts-ink,#151a17);
  background:rgba(255,255,255,.78);
  box-shadow:none;
  cursor:pointer;
  font-size:12px;
  font-weight:650;
  white-space:nowrap;
}

/* Homepage host contact */
.ts-experience .ts-host-contact {
  display:grid;
  grid-template-areas:"headline action" "detail action";
  grid-template-columns:minmax(0,1fr) auto;
  gap:10px clamp(22px,3vw,42px);
  align-items:center;
  margin-top:32px;
}
.ts-experience .ts-host-closing {
  grid-area:headline;
  max-width:21ch;
  margin:0;
  color:#fffdf8;
  font:italic 400 clamp(26px,2.4vw,38px)/1.18 var(--ts-font-heading,Georgia,serif);
}
.ts-experience .ts-host-contact > a {
  grid-area:action;
  display:inline-flex;
  width:max-content;
  min-width:168px;
  min-height:50px;
  align-items:center;
  justify-content:center;
  padding:0 22px;
  border:1px solid rgba(255,255,255,.7);
  border-radius:999px;
  color:#fff;
  font-size:13px;
  font-weight:650;
  line-height:1.2;
  letter-spacing:.02em;
  text-align:center;
  text-decoration:none;
  text-transform:none;
  white-space:nowrap;
}
.ts-experience .ts-host-contact > small {
  grid-area:detail;
  max-width:62ch;
  color:rgba(255,255,255,.7);
  font-size:14px;
  line-height:1.6;
}

/* Property listing shell */
.ts-listing .ts-listing-layout {
  display:grid;
  width:min(1260px,calc(100% - (var(--ts-layout-gutter) * 2)));
  grid-template-columns:minmax(0,1fr) minmax(360px,400px);
  gap:clamp(48px,5vw,74px);
  align-items:start;
  margin-inline:auto;
  padding-top:clamp(48px,5vw,68px);
  padding-bottom:clamp(62px,6vw,86px);
}
.ts-listing .ts-listing-layout > *,
.ts-listing .ts-listing-content,
.ts-listing .ts-booking-inline { min-width:0; max-width:100%; }
.ts-listing .ts-listing-good-to-know {
  width:100%;
  max-width:none;
  padding:clamp(26px,3vw,38px);
  border:1px solid rgba(159,80,52,.22);
  border-left:5px solid var(--ts-rust,#9f5034);
  border-radius:20px;
  background:rgba(159,80,52,.055);
}
.ts-listing .ts-listing-good-to-know h2 {
  max-width:18ch;
  margin-bottom:16px;
  font-size:clamp(36px,3.2vw,52px);
  line-height:1;
}
.ts-listing .ts-listing-good-to-know > p:not(.ts-listing-kicker) {
  max-width:70ch;
  margin-bottom:0;
  color:var(--ts-ink,#151a17);
  font-size:clamp(16px,1.25vw,18px);
  line-height:1.65;
}
.ts-listing .ts-listing-good-to-know > a { display:inline-flex; margin-top:18px; }

@media (min-width:768px) and (max-width:1180px) {
  .ts-experience { --ts-layout-gutter:20px; }
  .ts-experience .ts-stay-finder-after-hero { padding:26px; }
  .ts-experience .ts-search-bar { grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr) auto; }
  .ts-experience .ts-search-submit { min-width:154px; padding-inline:20px; }
  .ts-experience .ts-search-who-popover { right:166px; }
  .ts-listing .ts-listing-layout {
    width:min(920px,calc(100% - 40px));
    grid-template-columns:minmax(0,1fr);
    gap:38px;
  }
  .ts-listing .ts-booking-inline { order:-1; width:100%; }
}

@media (max-width:767px) {
  .ts-experience,
  .ts-listing { --ts-layout-gutter:14px; }
  .ts-experience .ts-stay-finder-after-hero {
    margin-top:22px;
    padding:20px 16px;
    border-radius:18px;
  }
  .ts-experience .ts-stay-finder-head { margin-bottom:16px; }
  .ts-experience .ts-stay-finder-head h3 { font-size:clamp(34px,10.5vw,44px); }
  .ts-experience .ts-stay-finder-head p { font-size:15px; }
  .ts-experience .ts-search-bar {
    grid-template-columns:minmax(0,1fr);
    gap:0;
    min-height:0;
    overflow:visible;
    border-radius:18px;
    background:transparent;
    box-shadow:none;
  }
  .ts-experience .ts-search-segment {
    min-height:66px;
    padding:12px 16px;
    border:1px solid rgba(21,26,23,.13);
    background:rgba(255,255,255,.72);
  }
  .ts-experience .ts-search-segment-when { border-radius:16px 16px 0 0; }
  .ts-experience .ts-search-segment-who { border-top:0; border-radius:0 0 16px 16px; }
  .ts-experience .ts-search-segment + .ts-search-segment::before { display:none; }
  .ts-experience .ts-search-submit {
    width:100%;
    min-height:56px;
    margin:12px 0 0;
  }
  .ts-experience .ts-search-who-popover {
    position:static;
    width:100%;
    margin-top:10px;
    padding:18px 16px;
    border-radius:18px;
  }
  .ts-experience .ts-search-feedback {
    display:grid;
    gap:14px;
    padding:16px;
  }
  .ts-experience .ts-search-feedback-actions { width:100%; }
  .ts-experience .ts-search-feedback-actions button { flex:1 1 0; }
  .ts-experience .ts-host-contact {
    grid-template-areas:"headline" "detail" "action";
    grid-template-columns:1fr;
    gap:14px;
  }
  .ts-experience .ts-host-closing { max-width:none; font-size:clamp(28px,8.5vw,38px); }
  .ts-experience .ts-host-contact > a { width:100%; min-width:0; min-height:52px; margin-top:4px; }
  .ts-listing .ts-listing-layout {
    width:calc(100% - 28px);
    grid-template-columns:minmax(0,1fr);
    gap:30px;
    padding-top:38px;
    padding-bottom:56px;
  }
  .ts-listing .ts-booking-inline { order:-1; }
  .ts-listing .ts-listing-good-to-know { padding:24px 20px; border-radius:18px; }
  .ts-listing .ts-listing-good-to-know h2 { max-width:100%; font-size:clamp(34px,10vw,42px); }
}

/* Search results are an actual filtered collection, not only a status count. */
.ts-experience .ts-property[hidden],
.ts-experience .ts-property-interlude[hidden] { display:none !important; }
.ts-experience.ts-has-search-results .ts-properties { scroll-margin-top:24px; }
/* Search results stay visually clean: filtering itself is the emphasis. */
.ts-experience .ts-property.is-search-match { box-shadow:none; }

/* Booking price guarantee: visually separate it from the total card. */
.ts-listing .ts-best-price-note {
  width:100%;
  margin-top:12px;
  overflow:hidden;
  border:1px solid var(--ts-booking-rule,rgba(21,26,23,.14));
  border-radius:14px;
  background:rgba(159,80,52,.035);
}
.ts-listing .ts-best-price-note summary {
  width:100%;
  min-height:54px;
  padding:0 16px;
  color:var(--ts-rust,#9f5034);
  font-size:14px;
  line-height:1.35;
}
.ts-listing .ts-best-price-note summary span { flex:0 0 auto; }
.ts-listing .ts-best-price-note > div {
  padding:0 16px 16px;
}
.ts-listing .ts-best-price-note[open] > div {
  padding-top:2px;
}
.ts-listing .ts-best-price-note p { font-size:13px; line-height:1.55; }
.ts-listing .ts-best-price-note a { font-size:12px; line-height:1.45; }

/* iPad/tablet property previews keep the editorial image/text split. */
@media (min-width:768px) and (max-width:1180px) {
  .ts-experience .ts-property,
  .ts-experience .ts-property.is-reverse {
    display:grid;
    min-height:0;
    grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);
    align-items:stretch;
  }
  .ts-experience .ts-property.is-reverse {
    grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);
  }
  .ts-experience .ts-property-visual {
    min-height:560px;
    grid-column:1;
    grid-row:1;
  }
  .ts-experience .ts-property-copy {
    grid-column:2;
    grid-row:1;
    justify-content:center;
    padding:38px clamp(26px,3.6vw,42px) 42px;
  }
  .ts-experience .ts-property.is-reverse .ts-property-visual { grid-column:2; grid-row:1; }
  .ts-experience .ts-property.is-reverse .ts-property-copy { grid-column:1; grid-row:1; }
  .ts-experience .ts-property-copy h3 { font-size:clamp(38px,5.2vw,52px); }
  .ts-experience .ts-summary { font-size:15px; line-height:1.55; }
  .ts-experience .ts-property-main,
  .ts-experience .ts-property.is-reverse .ts-property-main { inset:18px 42px 18px 18px; }
  .ts-experience .ts-property.is-reverse .ts-property-main { right:18px; left:42px; }
  .ts-experience .ts-property-second { right:12px; bottom:28px; width:108px; border-width:4px; }
  .ts-experience .ts-property.is-reverse .ts-property-second { right:auto; left:12px; }
}

@media (prefers-reduced-motion:reduce) {
  .ts-experience .ts-global-search button { transition:none; }
}


/* 7.11.0.4 — premium homepage date-range picker.
   Keep the simple two-click range flow, but present it as a calmer,
   more premium dual-month calendar inspired by leading travel sites. */
.ts-experience .ts-global-search .ts-swiss-date-field {
  overflow:visible;
  contain:none;
}
.ts-experience .ts-global-search .ts-search-date-trigger {
  position:relative;
  z-index:1;
  display:flex;
  width:100%;
  min-height:52px;
  align-items:center;
  justify-content:flex-start;
  padding:0;
  border:0;
  border-radius:inherit;
  color:var(--ts-ink,#151a17);
  background:transparent;
  box-shadow:none;
  text-align:left;
}
.ts-experience .ts-global-search .ts-search-date-trigger:hover,
.ts-experience .ts-global-search .ts-search-date-trigger:focus-visible {
  background:rgba(31,49,40,.03);
  outline:2px solid transparent;
}
.ts-experience .ts-global-search .ts-search-date-trigger .ts-swiss-date-display {
  position:static;
  display:flex;
  width:100%;
  min-height:52px;
  align-items:center;
  padding:0 44px 0 14px;
  pointer-events:none;
}
.ts-experience .ts-global-search .ts-search-range-calendar {
  grid-column:1 / -1;
  width:100%;
  margin:6px 0 0;
  padding:22px;
  border:1px solid rgba(21,26,23,.12);
  border-radius:18px;
  background:linear-gradient(180deg,rgba(255,255,255,.97) 0%, rgba(252,250,245,.99) 100%);
  box-shadow:0 24px 56px rgba(21,26,23,.10);
}
.ts-experience .ts-global-search .ts-search-range-calendar[hidden] { display:none !important; }
.ts-experience .ts-search-range-calendar-summary {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px;
  align-items:stretch;
  margin-bottom:18px;
}
.ts-experience .ts-search-calendar-chip {
  display:grid;
  gap:5px;
  min-height:74px;
  padding:14px 16px;
  border:0;
  border-radius:0;
  background:transparent;
}
.ts-experience .ts-search-calendar-chip small {
  color:var(--ts-booking-muted,#626a63);
  font-size:11px;
  font-weight:650;
  letter-spacing:.06em;
  text-transform:uppercase;
}
.ts-experience .ts-search-calendar-chip strong {
  color:var(--ts-ink,#151a17);
  font-size:17px;
  font-weight:560;
  line-height:1.15;
}
.ts-experience .ts-search-calendar-chip + .ts-search-calendar-chip {
  border-left:1px solid rgba(21,26,23,.10);
}
.ts-experience .ts-search-calendar-chip.is-helper {
  background:transparent;
}
.ts-experience .ts-search-calendar-chip.is-helper strong {
  font:400 22px/1.1 var(--ts-font-heading,Georgia,serif);
}
.ts-experience .ts-search-range-calendar-head {
  display:grid;
  grid-template-columns:46px minmax(0,1fr) 46px;
  gap:14px;
  align-items:center;
  margin-bottom:16px;
}
.ts-experience .ts-global-search .ts-search-range-calendar-head button {
  width:46px;
  min-width:46px;
  min-height:46px;
  padding:0;
  border:1px solid rgba(21,26,23,.12);
  border-radius:12px;
  color:var(--ts-ink,#151a17);
  background:rgba(255,255,255,.94);
  box-shadow:none;
  font-size:18px;
}
.ts-experience .ts-global-search .ts-search-range-calendar-head button:disabled {
  cursor:not-allowed;
  opacity:.28;
}
.ts-experience .ts-search-range-calendar-head strong {
  color:var(--ts-ink,#151a17);
  font:400 26px/1.08 var(--ts-font-heading,Georgia,serif);
  text-align:center;
  letter-spacing:-.02em;
}
.ts-experience .ts-search-range-calendar-panels {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:20px;
}
.ts-experience .ts-search-calendar-panel {
  min-width:0;
}
.ts-experience .ts-search-calendar-panel h4 {
  margin:0 0 14px;
  color:var(--ts-ink,#151a17);
  font:400 18px/1.15 var(--ts-font-heading,Georgia,serif);
  text-align:center;
  text-transform:capitalize;
}
.ts-experience .ts-search-range-calendar-week,
.ts-experience .ts-search-range-calendar-days {
  display:grid;
  grid-template-columns:repeat(7,minmax(0,1fr));
  gap:6px;
}
.ts-experience .ts-search-range-calendar-week {
  margin-bottom:8px;
}
.ts-experience .ts-search-range-calendar-week span {
  padding:4px 0;
  color:var(--ts-booking-muted,#626a63);
  font-size:10px;
  font-weight:700;
  text-align:center;
  text-transform:uppercase;
}
.ts-experience .ts-search-range-calendar-days > span.is-empty {
  display:block;
  min-height:44px;
}
.ts-experience .ts-global-search .ts-search-range-calendar-days button {
  display:grid;
  width:100%;
  min-width:0;
  min-height:44px;
  place-items:center;
  padding:0;
  border:1px solid transparent;
  border-radius:14px;
  color:var(--ts-ink,#151a17);
  background:transparent;
  box-shadow:none;
  font-size:15px;
  font-weight:560;
}
.ts-experience .ts-global-search .ts-search-range-calendar-days button:hover:not(:disabled):not(.is-selected) {
  border-color:rgba(21,26,23,.12);
  background:rgba(31,49,40,.05);
}
.ts-experience .ts-global-search .ts-search-range-calendar-days button.is-range {
  border-radius:10px;
  background:rgba(31,49,40,.10);
}
.ts-experience .ts-global-search .ts-search-range-calendar-days button.is-selected {
  border-color:var(--ts-forest,#1f3128);
  color:#fff;
  background:var(--ts-forest,#1f3128);
  box-shadow:0 10px 18px rgba(31,49,40,.18);
}
.ts-experience .ts-global-search .ts-search-range-calendar-days button.is-start,
.ts-experience .ts-global-search .ts-search-range-calendar-days button.is-end {
  border-radius:14px;
}
.ts-experience .ts-global-search .ts-search-range-calendar-days button.is-before-start {
  opacity:.38;
}
.ts-experience .ts-global-search .ts-search-range-calendar-days button:disabled {
  cursor:not-allowed;
  opacity:.24;
}
.ts-experience .ts-search-range-calendar > p {
  margin:16px 2px 0;
  color:var(--ts-booking-muted,#626a63);
  font-size:13px;
  line-height:1.5;
  text-align:center;
}
@media (min-width:768px) and (max-width:1180px) {
  .ts-experience .ts-search-range-calendar-summary {
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .ts-experience .ts-search-calendar-chip.is-helper {
    grid-column:1 / -1;
  }
}
@media (max-width:767px) {
  .ts-experience .ts-global-search .ts-search-range-calendar {
    width:100%;
    padding:16px 12px;
    border-radius:18px;
  }
  .ts-experience .ts-search-range-calendar-summary,
  .ts-experience .ts-search-range-calendar-panels {
    grid-template-columns:minmax(0,1fr);
  }
  .ts-experience .ts-search-calendar-chip {
    min-height:68px;
    padding:12px 14px;
  }
  .ts-experience .ts-search-calendar-chip + .ts-search-calendar-chip {
    border-left:0;
    border-top:1px solid rgba(21,26,23,.10);
  }
  .ts-experience .ts-search-calendar-chip strong {
    font-size:16px;
  }
  .ts-experience .ts-search-calendar-chip.is-helper strong {
    font-size:20px;
  }
  .ts-experience .ts-search-range-calendar-head {
    grid-template-columns:40px minmax(0,1fr) 40px;
    gap:10px;
    margin-bottom:14px;
  }
  .ts-experience .ts-global-search .ts-search-range-calendar-head button {
    width:40px;
    min-width:40px;
    min-height:40px;
    font-size:16px;
  }
  .ts-experience .ts-search-range-calendar-head strong {
    font-size:22px;
  }
  .ts-experience .ts-search-calendar-panel h4 {
    margin-bottom:12px;
    font-size:17px;
  }
  .ts-experience .ts-search-range-calendar-week,
  .ts-experience .ts-search-range-calendar-days {
    gap:4px;
  }
  .ts-experience .ts-search-range-calendar-days > span.is-empty,
  .ts-experience .ts-global-search .ts-search-range-calendar-days button {
    min-height:40px;
  }
}

/* 7.11.0.7 — range editing, month separation and mobile search action. */
.ts-experience .ts-search-calendar-chip.is-date {
  appearance:none;
  -webkit-appearance:none;
  width:100%;
  min-width:0;
  color:inherit;
  text-align:left;
  cursor:pointer;
}
.ts-experience .ts-search-calendar-chip.is-date:hover,
.ts-experience .ts-search-calendar-chip.is-date:focus-visible {
  background:rgba(31,49,40,.035);
  outline:none;
}
.ts-experience .ts-search-calendar-chip.is-date.is-active {
  background:rgba(31,49,40,.055);
  box-shadow:inset 0 -2px 0 var(--ts-forest,#1f3128);
}
.ts-experience .ts-search-calendar-chip.is-date.is-disabled {
  opacity:.55;
}
.ts-experience .ts-search-calendar-mobile-action { display:none; }
.ts-experience .ts-search-calendar-submit {
  display:inline-flex;
  width:100%;
  min-height:54px;
  align-items:center;
  justify-content:center;
  gap:12px;
  padding:0 18px;
  border:0;
  border-radius:12px;
  color:#fff;
  background:var(--ts-forest,#1f3128);
  box-shadow:0 10px 24px rgba(31,49,40,.14);
  cursor:pointer;
  font-size:14px;
  font-weight:700;
}
.ts-experience .ts-search-calendar-submit b { font-size:18px; font-weight:400; }
.ts-experience .ts-search-calendar-submit:disabled { cursor:not-allowed; opacity:.42; box-shadow:none; }

@media (min-width:768px) {
  .ts-experience .ts-search-range-calendar-panels {
    gap:0;
  }
  .ts-experience .ts-search-calendar-panel {
    padding-inline:28px;
  }
  .ts-experience .ts-search-calendar-panel:first-child {
    padding-left:2px;
  }
  .ts-experience .ts-search-calendar-panel + .ts-search-calendar-panel {
    padding-right:2px;
    border-left:1px solid rgba(21,26,23,.11);
  }
  .ts-experience .ts-search-calendar-panel h4 {
    margin-bottom:16px;
    padding-bottom:11px;
    border-bottom:1px solid rgba(21,26,23,.07);
    font-size:19px;
  }
}

@media (max-width:767px) {
  .ts-experience .ts-search-range-calendar-summary {
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:0;
    margin-bottom:14px;
    border:1px solid rgba(21,26,23,.10);
    border-radius:14px;
    overflow:hidden;
    background:rgba(255,255,255,.68);
  }
  .ts-experience .ts-search-calendar-chip {
    min-height:62px;
    padding:11px 12px;
  }
  .ts-experience .ts-search-calendar-chip + .ts-search-calendar-chip {
    border-top:0;
  }
  .ts-experience .ts-search-calendar-chip:nth-child(2) {
    border-left:1px solid rgba(21,26,23,.10);
  }
  .ts-experience .ts-search-calendar-chip.is-helper {
    grid-column:1 / -1;
    min-height:auto;
    padding:9px 12px 10px;
    border-top:1px solid rgba(21,26,23,.08);
  }
  .ts-experience .ts-search-calendar-chip.is-helper small {
    display:none;
  }
  .ts-experience .ts-search-calendar-chip.is-helper strong {
    font:600 13px/1.25 var(--ts-font-body,Arial,sans-serif);
    color:var(--ts-booking-muted,#626a63);
  }
  .ts-experience .ts-search-range-calendar-panels {
    display:block;
  }
  .ts-experience .ts-search-calendar-panel + .ts-search-calendar-panel {
    display:none;
  }
  .ts-experience .ts-search-calendar-panel h4 {
    margin-bottom:10px;
    padding-bottom:10px;
    border-bottom:1px solid rgba(21,26,23,.08);
    font-size:18px;
  }
  .ts-experience .ts-search-range-calendar > p {
    margin:12px 4px 0;
    padding-bottom:4px;
  }
  .ts-experience .ts-search-calendar-mobile-action {
    position:sticky;
    z-index:8;
    bottom:0;
    display:block;
    margin:12px -12px -16px;
    padding:12px max(12px,env(safe-area-inset-right)) calc(12px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));
    border-top:1px solid rgba(21,26,23,.09);
    background:linear-gradient(180deg,rgba(252,250,245,.90) 0%, rgba(252,250,245,.99) 34%);
    backdrop-filter:blur(10px);
    -webkit-backdrop-filter:blur(10px);
  }
}


/* 7.11.0.8 — property hero fact alignment.
   Dot separators become orphaned when a fact wraps to the next line, pushing
   the bathroom icon/text out of alignment. Use spacing only so every wrapped
   fact starts on the same visual axis. */
.ts-listing .ts-listing-facts {
  column-gap:clamp(18px,2vw,28px);
  row-gap:12px;
  align-items:center;
}
.ts-listing .ts-listing-facts > span {
  display:inline-flex;
  align-items:center;
  gap:9px;
  min-height:24px;
}
.ts-listing .ts-listing-facts span + span::before {
  display:none;
  content:none;
}

/* 7.11.0.10 — homepage search-to-booking continuity.
   Search results now expose the server-calculated complete trip total directly
   on each matching stay and carry the selected trip into property pages. */
.ts-experience .ts-property-search-quote[hidden] { display:none !important; }
.ts-experience .ts-property-search-quote {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:4px 18px;
  align-items:end;
  margin:18px 0 2px;
  padding:16px 0 15px;
  border-top:1px solid rgba(21,26,23,.12);
  border-bottom:1px solid rgba(21,26,23,.12);
}
.ts-experience .ts-property-search-quote > span {
  grid-column:1;
  color:var(--ts-rust,#9f5034);
  font-size:11px;
  font-weight:700;
  letter-spacing:.09em;
  line-height:1.25;
  text-transform:uppercase;
}
.ts-experience .ts-property-search-quote > strong {
  grid-column:2;
  grid-row:1 / span 2;
  color:var(--ts-ink,#151a17);
  font:400 clamp(27px,2.5vw,35px)/1 var(--ts-font-heading,Georgia,serif);
  letter-spacing:-.025em;
  white-space:nowrap;
}
.ts-experience .ts-property-search-quote > small {
  grid-column:1;
  color:var(--ts-booking-muted,#626a63);
  font-size:13px;
  line-height:1.4;
}
.ts-experience.ts-has-search-results .ts-property-actions-primary-secondary .ts-book-button {
  background:var(--ts-forest,#1f3128);
}
@media (max-width:767px) {
  .ts-experience .ts-property-search-quote {
    grid-template-columns:1fr;
    gap:5px;
    padding:14px 0;
  }
  .ts-experience .ts-property-search-quote > strong {
    grid-column:1;
    grid-row:auto;
    margin-top:2px;
    font-size:30px;
  }
  .ts-experience .ts-property-search-quote > small { grid-column:1; }
}

/* ========================================================================
   7.11.0.11 — shared premium property template + reservation handoff
   The page is deliberately quieter: photography, type and whitespace carry
   the experience; functional cards are reserved for booking decisions.
   ======================================================================== */
.ts-listing {
  --ts-listing-wide: 1360px;
  --ts-listing-content: 1260px;
  --ts-listing-rule: rgba(21,26,23,.11);
  --ts-listing-soft: #f5f0e7;
}
.ts-listing .ts-listing-topbar,
.ts-listing .ts-listing-hero,
.ts-listing .ts-listing-gallery {
  width:min(var(--ts-listing-wide),calc(100% - 48px));
  margin-inline:auto;
}
.ts-listing .ts-listing-topbar { padding:18px 0 12px; }
.ts-listing .ts-listing-hero {
  display:grid;
  grid-template-columns:minmax(390px,.78fr) minmax(0,1.22fr);
  min-height:620px;
  overflow:hidden;
  border:1px solid rgba(21,26,23,.075);
  border-radius:22px;
  background:#ebe5da;
}
.ts-listing .ts-listing-hero-copy {
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:clamp(42px,4.5vw,72px);
}
.ts-listing .ts-listing-hero-copy > p:first-child {
  margin:0 0 18px;
  font-size:11px;
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase;
}
.ts-listing .ts-listing-hero h1 {
  max-width:10ch;
  margin:0;
  font-size:clamp(52px,5vw,78px);
  line-height:.94;
  letter-spacing:-.055em;
  text-wrap:balance;
}
.ts-listing .ts-listing-hero em {
  display:block;
  max-width:22ch;
  margin-top:22px;
  color:#626a63;
  font-size:clamp(21px,1.8vw,28px);
  line-height:1.3;
}
.ts-listing .ts-listing-facts {
  display:flex;
  flex-wrap:wrap;
  gap:10px 22px;
  margin-top:28px;
  padding:14px 0;
  border-top:1px solid var(--ts-listing-rule);
  border-bottom:1px solid var(--ts-listing-rule);
}
.ts-listing .ts-listing-facts > span { gap:8px; padding:0; }
.ts-listing .ts-listing-facts > span + span { border:0; }
.ts-listing .ts-listing-facts b { font-size:14px; font-weight:560; }
.ts-listing .ts-listing-rating { margin-top:16px; }
.ts-listing .ts-airbnb-rating a { color:var(--ts-rust,#9f5034); text-decoration:none; }
.ts-listing .ts-airbnb-rating > small { display:none; }
.ts-listing .ts-listing-actions { gap:18px; margin-top:24px; }
.ts-listing .ts-listing-actions > button.primary {
  min-height:52px;
  padding-inline:24px;
  border-radius:12px;
  box-shadow:0 12px 24px rgba(21,26,23,.10);
}
.ts-listing .ts-listing-actions > a {
  min-height:44px;
  padding:0 2px;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  color:var(--ts-ink,#151a17);
  text-decoration:underline;
  text-underline-offset:6px;
}
.ts-listing .ts-listing-main-image { min-height:620px; }
.ts-listing .ts-listing-main-image > span { right:20px; bottom:20px; border-radius:10px; }

/* Restore the preferred gallery: one dominant image above, quiet thumbnails below. */
.ts-listing .ts-listing-gallery {
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:8px;
  margin-top:8px;
  padding:0;
  background:transparent;
}
.ts-listing .ts-listing-gallery button {
  display:block;
  aspect-ratio:4/3;
  overflow:hidden;
  border:0;
  border-radius:10px;
  background:#ded8ce;
}
.ts-listing .ts-listing-gallery img { width:100%; height:100%; object-fit:cover; }

.ts-listing .ts-listing-layout {
  width:min(var(--ts-listing-content),calc(100% - 56px));
  grid-template-columns:minmax(0,1fr) minmax(350px,390px);
  gap:clamp(52px,5vw,78px);
  padding-top:clamp(64px,6vw,90px);
}
.ts-listing .ts-listing-content > section {
  padding:clamp(50px,5vw,74px) 0;
  border-bottom:1px solid var(--ts-listing-rule);
}
.ts-listing .ts-listing-content > section:first-child { padding-top:0; }
.ts-listing .ts-listing-content > section:last-child { border-bottom:0; }
.ts-listing .ts-listing-content h2 {
  max-width:16ch;
  margin:8px 0 24px;
  font-size:clamp(38px,3.4vw,54px);
  line-height:1.02;
  letter-spacing:-.04em;
}
.ts-listing .ts-listing-overview-copy { max-width:66ch; }
.ts-listing .ts-listing-overview-copy .ts-listing-lead {
  color:#303631;
  font-size:clamp(19px,1.45vw,23px);
  line-height:1.62;
}
.ts-listing .ts-listing-about-more,
.ts-listing .ts-listing-all-amenities {
  border:0;
  border-top:1px solid var(--ts-listing-rule);
  border-radius:0;
  background:transparent;
}
.ts-listing .ts-listing-about-more summary,
.ts-listing .ts-listing-all-amenities summary { padding-inline:0; }

.ts-listing .ts-listing-feature-row {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  border-top:1px solid var(--ts-listing-rule);
  border-bottom:1px solid var(--ts-listing-rule);
}
.ts-listing .ts-listing-feature-row > div {
  display:grid;
  grid-template-columns:28px minmax(0,1fr);
  gap:12px;
  align-items:start;
  min-height:88px;
  padding:22px 22px 22px 0;
}
.ts-listing .ts-listing-feature-row > div:nth-child(even) { padding-left:22px; border-left:1px solid var(--ts-listing-rule); }
.ts-listing .ts-listing-feature-row > div:nth-child(n+3) { border-top:1px solid var(--ts-listing-rule); }
.ts-listing .ts-listing-feature-row svg { width:22px; height:22px; }
.ts-listing .ts-listing-feature-row span { font-size:15px; line-height:1.5; }

.ts-listing .ts-listing-sleeping-list {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
  margin:0;
  padding:0;
  list-style:none;
}
.ts-listing .ts-listing-sleeping-list li {
  display:flex;
  min-height:92px;
  align-items:flex-start;
  gap:14px;
  padding:22px;
  border:1px solid var(--ts-listing-rule);
  border-radius:14px;
  background:rgba(255,255,255,.34);
}
.ts-listing .ts-listing-sleeping-list svg { width:23px; height:23px; }

.ts-listing .ts-review-editorial {
  display:grid;
  grid-template-columns:minmax(180px,.38fr) minmax(0,.62fr);
  gap:clamp(28px,4vw,52px);
  padding:30px 0;
  border-top:1px solid var(--ts-listing-rule);
  border-bottom:1px solid var(--ts-listing-rule);
}
.ts-listing .ts-review-editorial-score { display:flex; flex-direction:column; align-items:flex-start; }
.ts-listing .ts-review-editorial-score > strong {
  font:400 clamp(56px,5vw,76px)/.9 var(--ts-font-heading,Georgia,serif);
  letter-spacing:-.05em;
}
.ts-listing .ts-review-editorial-score > span { margin-top:10px; color:var(--ts-rust,#9f5034); letter-spacing:.08em; }
.ts-listing .ts-review-editorial-score > small { margin-top:8px; color:#667068; }
.ts-listing .ts-review-editorial-score > em {
  margin-top:18px;
  padding:6px 9px;
  border:1px solid rgba(159,80,52,.20);
  border-radius:7px;
  color:var(--ts-rust,#9f5034);
  font-size:11px;
  font-style:normal;
  font-weight:700;
  text-transform:uppercase;
}
.ts-listing .ts-review-editorial-copy > p:first-child { margin-top:0; font-size:18px; line-height:1.65; }
.ts-listing .ts-review-editorial-copy ul { display:flex; flex-wrap:wrap; gap:8px; margin:20px 0; padding:0; list-style:none; }
.ts-listing .ts-review-editorial-copy li { padding:8px 10px; border:1px solid var(--ts-listing-rule); border-radius:8px; }
.ts-listing .ts-review-editorial-copy li small { margin-left:5px; color:#747c76; }
.ts-listing .ts-review-source-note { color:#707871; font-size:12px !important; }
.ts-listing .ts-review-source-note a { color:inherit; text-underline-offset:3px; }
.ts-listing .ts-review-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); margin-top:20px; }
.ts-listing .ts-review-metrics > div { display:flex; justify-content:space-between; gap:12px; padding:12px 16px; border-left:1px solid var(--ts-listing-rule); }
.ts-listing .ts-review-metrics > div:first-child { border-left:0; padding-left:0; }

.ts-listing .ts-listing-good-to-know {
  width:100%;
  max-width:none;
  padding:clamp(30px,4vw,46px);
  border:0;
  border-left:4px solid var(--ts-rust,#9f5034);
  border-radius:0;
  background:rgba(159,80,52,.055);
}
.ts-listing .ts-listing-good-to-know h2 { max-width:16ch; }
.ts-listing .ts-listing-good-to-know > p:not(.ts-listing-kicker) { max-width:68ch; }

.ts-listing .ts-listing-detail-rows { border-top:1px solid var(--ts-listing-rule); }
.ts-listing .ts-listing-detail-rows details { border-bottom:1px solid var(--ts-listing-rule); }
.ts-listing .ts-listing-detail-rows summary {
  display:flex;
  min-height:64px;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  padding:0;
  cursor:pointer;
  list-style:none;
  font-size:17px;
  font-weight:600;
}
.ts-listing .ts-listing-detail-rows summary::-webkit-details-marker { display:none; }
.ts-listing .ts-listing-detail-rows summary i { font-style:normal; font-size:22px; font-weight:300; }
.ts-listing .ts-listing-detail-rows details[open] summary i { transform:rotate(45deg); }
.ts-listing .ts-listing-detail-rows details > div { max-width:66ch; padding:0 0 24px; color:#4f5851; line-height:1.65; }

/* Booking panel is a decision card; personal details move to the next page. */
.ts-listing .ts-listing-booking-panel {
  position:sticky;
  top:24px;
  padding:24px;
  border:1px solid rgba(21,26,23,.12);
  border-radius:18px;
  background:#fffdf9;
  box-shadow:0 16px 40px rgba(21,26,23,.07);
}
.ts-listing .ts-booking-completion[hidden] { display:none !important; }
.ts-listing .ts-reserve-button {
  display:flex;
  width:100%;
  min-height:54px;
  align-items:center;
  justify-content:center;
  gap:8px;
  margin-top:16px;
  padding:0 22px;
  border:0;
  border-radius:var(--ts-r-control,10px);
  color:#fff;
  background:var(--ts-forest,#1f3128);
  font-size:15px;
  font-weight:650;
  letter-spacing:0;
  text-transform:none;
  cursor:pointer;
}
.ts-listing .ts-reserve-button:disabled { cursor:not-allowed; opacity:.42; }
.ts-listing .ts-reserve-note { margin:9px 0 0; color:#707871; font-size:12px; line-height:1.45; text-align:center; }
.ts-listing .ts-booking-contact { margin-top:16px; }

/* Dedicated booking-details step. */
.ts-checkout-page { min-height:72vh; background:#f8f4ec; color:var(--ts-ink,#151a17); }
.ts-checkout-shell { width:min(1180px,calc(100% - 48px)); margin:0 auto; padding:46px 0 80px; }
.ts-checkout-back { display:inline-block; margin-bottom:36px; color:#566059; font-size:14px; text-decoration:none; }
.ts-checkout-header { max-width:760px; margin-bottom:42px; }
.ts-checkout-header h1,
.ts-checkout-invalid h1 { max-width:12ch; margin:8px 0 18px; font:400 clamp(48px,5vw,72px)/.96 var(--ts-font-heading,Georgia,serif); letter-spacing:-.05em; }
.ts-checkout-header > p:last-child { max-width:62ch; color:#5f6861; font-size:17px; line-height:1.65; }
.ts-checkout-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(340px,410px); gap:clamp(52px,6vw,86px); align-items:start; }
.ts-checkout-form-column { min-width:0; }
.ts-checkout-details-form fieldset { margin:0; padding:0; border:0; }
.ts-checkout-details-form legend { margin-bottom:22px; font:400 30px/1.1 var(--ts-font-heading,Georgia,serif); }
.ts-checkout-details-form label { display:grid; gap:8px; margin-bottom:16px; color:#545e56; font-size:13px; font-weight:600; }
.ts-checkout-details-form input[type="text"],
.ts-checkout-details-form input[type="email"],
.ts-checkout-details-form input[type="tel"] { min-height:54px; padding:0 15px; border:1px solid rgba(21,26,23,.14); border-radius:10px; background:#fff; color:#151a17; font-size:16px; }
.ts-checkout-field-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.ts-checkout-promo { margin:18px 0 4px; border-top:1px solid var(--ts-listing-rule); border-bottom:1px solid var(--ts-listing-rule); }
.ts-checkout-promo summary { display:flex; min-height:58px; align-items:center; justify-content:space-between; cursor:pointer; list-style:none; }
.ts-checkout-promo summary::-webkit-details-marker { display:none; }
.ts-checkout-promo > div { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px; padding:0 0 16px; }
.ts-checkout-promo input { min-height:48px; padding:0 12px; border:1px solid rgba(21,26,23,.14); border-radius:9px; }
.ts-checkout-promo button { min-height:48px; padding:0 18px; border:1px solid rgba(21,26,23,.14); border-radius:9px; background:#fff; }
.ts-checkout-policy { grid-template-columns:22px minmax(0,1fr) !important; align-items:start; gap:11px !important; font-weight:400 !important; line-height:1.5; }
.ts-checkout-policy input { width:20px; height:20px; margin-top:1px; accent-color:var(--ts-forest,#1f3128); }
.ts-checkout-status { min-height:0; color:#6b4434; font-size:13px; }
.ts-checkout-status:empty { display:none; }
.ts-checkout-payment { width:100%; min-height:56px; border:0; border-radius:11px; color:#fff; background:var(--ts-forest,#1f3128); font-size:15px; font-weight:700; cursor:pointer; }
.ts-checkout-payment:disabled { opacity:.45; cursor:not-allowed; }
.ts-checkout-summary { position:sticky; top:24px; overflow:hidden; border:1px solid rgba(21,26,23,.11); border-radius:18px; background:#fffdf9; box-shadow:0 18px 46px rgba(21,26,23,.07); }
.ts-checkout-summary > img { display:block; width:100%; aspect-ratio:16/10; object-fit:cover; }
.ts-checkout-summary-body { padding:22px; }
.ts-checkout-summary-body > p:first-child { margin:0 0 5px; color:#757d77; font-size:11px; font-weight:700; letter-spacing:.10em; text-transform:uppercase; }
.ts-checkout-summary h2 { margin:0; font:400 29px/1.05 var(--ts-font-heading,Georgia,serif); }
.ts-checkout-stay-meta { display:grid; gap:5px; margin:16px 0 20px; color:#59625b; font-size:14px; }
.ts-checkout-price-lines { display:grid; gap:8px; padding:18px 0; border-top:1px solid var(--ts-listing-rule); }
.ts-checkout-price-lines > div { display:flex; justify-content:space-between; gap:16px; font-size:13px; }
.ts-checkout-price-lines > div.is-discount { color:#5b744f; }
.ts-checkout-total { display:flex; justify-content:space-between; gap:16px; padding:16px 0; border-top:1px solid var(--ts-listing-rule); border-bottom:1px solid var(--ts-listing-rule); }
.ts-checkout-total strong { font-size:22px; }
.ts-checkout-security { padding-top:18px; }
.ts-checkout-security strong { font-size:13px; }
.ts-checkout-security p { margin:6px 0 0; color:#747c76; font-size:12px; line-height:1.5; }
.ts-checkout-edit { margin:16px 0 0; color:#747c76; font-size:12px; }
.ts-checkout-edit a { color:inherit; }
.ts-checkout-trip-mobile { display:none; }
.ts-checkout-invalid { max-width:720px; padding:50px 0; }

@media (min-width:768px) and (max-width:1180px) {
  .ts-listing .ts-listing-topbar,
  .ts-listing .ts-listing-hero,
  .ts-listing .ts-listing-gallery { width:calc(100% - 40px); }
  .ts-listing .ts-listing-hero { grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); min-height:540px; }
  .ts-listing .ts-listing-hero-copy { padding:36px; }
  .ts-listing .ts-listing-main-image { min-height:540px; }
  .ts-listing .ts-listing-gallery { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .ts-listing .ts-listing-gallery button:nth-child(n+4) { display:none; }
  .ts-listing .ts-listing-layout { width:min(920px,calc(100% - 40px)); grid-template-columns:minmax(0,1fr); gap:38px; }
  .ts-listing .ts-booking-inline { order:-1; }
  .ts-listing .ts-listing-booking-panel { position:relative; top:auto; }
  .ts-checkout-layout { grid-template-columns:minmax(0,1fr) minmax(310px,360px); gap:36px; }
}
@media (max-width:767px) {
  .ts-listing .ts-listing-topbar,
  .ts-listing .ts-listing-hero,
  .ts-listing .ts-listing-gallery { width:calc(100% - 28px); }
  .ts-listing .ts-listing-hero { display:flex; flex-direction:column; min-height:0; border-radius:16px; }
  .ts-listing .ts-listing-hero-copy { order:2; padding:28px 20px 30px; }
  .ts-listing .ts-listing-main-image { order:1; min-height:0; aspect-ratio:4/3; }
  .ts-listing .ts-listing-hero h1 { max-width:11ch; font-size:clamp(44px,13vw,58px); }
  .ts-listing .ts-listing-hero em { font-size:21px; }
  .ts-listing .ts-listing-facts { gap:10px 18px; }
  .ts-listing .ts-listing-actions { align-items:stretch; flex-direction:column; }
  .ts-listing .ts-listing-actions > button.primary { width:100%; }
  .ts-listing .ts-listing-actions > a { justify-content:center; }
  .ts-listing .ts-listing-gallery { grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px; }
  .ts-listing .ts-listing-gallery button:nth-child(n+3) { display:none; }
  .ts-listing .ts-listing-layout { width:calc(100% - 28px); grid-template-columns:minmax(0,1fr); gap:28px; padding-top:42px; }
  .ts-listing .ts-booking-inline { order:-1; }
  .ts-listing .ts-listing-booking-panel { position:relative; top:auto; padding:18px; border-radius:15px; }
  .ts-listing .ts-listing-content > section { padding:44px 0; }
  .ts-listing .ts-listing-content h2 { font-size:clamp(36px,10vw,46px); }
  .ts-listing .ts-listing-feature-row,
  .ts-listing .ts-listing-sleeping-list,
  .ts-listing .ts-review-editorial,
  .ts-listing .ts-review-metrics { grid-template-columns:minmax(0,1fr); }
  .ts-listing .ts-listing-feature-row > div:nth-child(even) { padding-left:0; border-left:0; }
  .ts-listing .ts-listing-feature-row > div + div { border-top:1px solid var(--ts-listing-rule); }
  .ts-listing .ts-review-metrics > div { padding-left:0; border-left:0; border-top:1px solid var(--ts-listing-rule); }
  .ts-listing .ts-review-metrics > div:first-child { border-top:0; }
  .ts-checkout-shell { width:calc(100% - 28px); padding:30px 0 56px; }
  .ts-checkout-back { margin-bottom:24px; }
  .ts-checkout-header { margin-bottom:28px; }
  .ts-checkout-header h1 { font-size:clamp(43px,12vw,58px); }
  .ts-checkout-layout { grid-template-columns:minmax(0,1fr); gap:28px; }
  .ts-checkout-summary { position:relative; top:auto; order:-1; }
  .ts-checkout-trip-mobile { display:none; }
  .ts-checkout-field-grid { grid-template-columns:minmax(0,1fr); gap:0; }
}

/* 7.11.0.11 — curated amenity preview before the full expandable inventory. */
.ts-listing .ts-listing-amenity-highlights {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:0 28px;
  margin:0 0 22px;
  padding:0;
  border-top:1px solid var(--ts-listing-rule);
  list-style:none;
}
.ts-listing .ts-listing-amenity-highlights li {
  display:grid;
  grid-template-columns:22px minmax(0,1fr);
  gap:11px;
  align-items:center;
  min-height:54px;
  border-bottom:1px solid var(--ts-listing-rule);
  color:#3f4741;
  font-size:14px;
  line-height:1.4;
}
.ts-listing .ts-listing-amenity-highlights svg { width:18px; height:18px; }
@media (max-width:767px) {
  .ts-listing .ts-listing-amenity-highlights { grid-template-columns:minmax(0,1fr); }
}


/* 7.11.0.13 — approved hybrid property-page design.
   Top: gallery-led opening with one large image + thumbnails.
   Desktop: compact editorial content rows + sticky reservation card.
   Tablet/mobile: content-led page with booking opened on demand and a sticky bottom action. */
.ts-listing{
  --ts-page:#fbf8f2;
  --ts-paper:#fffdf9;
  --ts-warm:#f2eadf;
  --ts-ink-strong:#151a17;
  --ts-ink:#2b342f;
  --ts-muted:#66706a;
  --ts-rule:rgba(21,26,23,.11);
  --ts-accent:#1f3128;
  --ts-rust-soft:#9b5238;
  background:var(--ts-page);
  color:var(--ts-ink-strong);
  padding-bottom:72px;
}
.ts-listing .ts-listing-topbar,
.ts-listing .ts-listing-hero,
.ts-listing .ts-listing-layout,
.ts-listing .ts-listing-related{
  width:min(1260px,calc(100% - 56px));
  margin-left:auto;
  margin-right:auto;
}
.ts-listing .ts-listing-topbar{padding:18px 0 12px}
.ts-listing .ts-listing-breadcrumb{color:var(--ts-muted);font-size:12px}
.ts-listing .ts-listing-breadcrumb a{color:inherit;text-decoration:none}

/* Hero + gallery: second-concept opening. */
.ts-listing .ts-listing-hero{
  display:grid;
  grid-template-columns:minmax(310px,.72fr) minmax(0,1.28fr);
  gap:clamp(30px,4vw,54px);
  align-items:center;
  min-height:0;
  padding:22px 0 12px;
  background:transparent;
  border:0;
  border-radius:0;
  box-shadow:none;
}
.ts-listing .ts-listing-hero-copy{padding:0}
.ts-listing .ts-listing-hero-copy>p:first-child{
  margin:0;
  color:var(--ts-rust-soft);
  font-size:11px;
  font-weight:760;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.ts-listing .ts-listing-hero h1{
  max-width:10ch;
  margin:14px 0 14px;
  color:var(--ts-ink-strong);
  font:400 clamp(48px,5.4vw,76px)/.94 var(--ts-font-heading,Georgia,serif);
  letter-spacing:-.05em;
}
.ts-listing .ts-listing-hero em{
  display:block;
  max-width:16ch;
  color:#3f4843;
  font:italic clamp(21px,2.15vw,29px)/1.28 var(--ts-font-heading,Georgia,serif);
}
.ts-listing .ts-listing-facts{
  display:flex;
  flex-wrap:wrap;
  gap:10px 18px;
  margin:24px 0 16px;
}
.ts-listing .ts-listing-facts span{
  display:inline-flex;
  gap:7px;
  align-items:center;
  color:#313a35;
  font-size:13px;
}
.ts-listing .ts-listing-facts svg{width:17px;height:17px;color:var(--ts-rust-soft)}
.ts-listing .ts-listing-facts b{font-weight:520}
.ts-listing .ts-listing-rating{margin:8px 0;color:#3f4943;font-size:13px;line-height:1.45}
.ts-listing .ts-listing-rating.ts-airbnb-rating{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center}
.ts-listing .ts-listing-rating.ts-airbnb-rating a{color:inherit;text-decoration:none}
.ts-listing .ts-listing-rating.ts-airbnb-rating span{
  display:inline-flex;min-height:26px;align-items:center;padding:0 9px;border-radius:999px;background:#e8eee9;color:#294033;font-size:11px;font-weight:700
}
.ts-listing .ts-listing-rating.ts-airbnb-rating small{color:#727a75;font-size:11px}
.ts-listing .ts-listing-actions{display:flex;gap:10px;margin-top:25px}
.ts-listing .ts-listing-actions>button.primary,
.ts-listing .ts-listing-actions>a{
  display:inline-flex;min-height:50px;align-items:center;justify-content:center;padding:0 20px;border-radius:8px;font-size:13px;font-weight:650;text-decoration:none
}
.ts-listing .ts-listing-actions>button.primary{border:1px solid var(--ts-accent);background:var(--ts-accent);color:#fff}
.ts-listing .ts-listing-actions>a{border:1px solid rgba(21,26,23,.24);background:transparent;color:var(--ts-ink-strong)}

.ts-listing .ts-listing-hero-media{min-width:0}
.ts-listing .ts-listing-main-image{
  position:relative;display:block;width:100%;min-height:0;aspect-ratio:16/9;overflow:hidden;border:0;border-radius:14px;background:#e9e3da;padding:0
}
.ts-listing .ts-listing-main-image img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .35s ease}
.ts-listing .ts-listing-main-image:hover img{transform:scale(1.012)}
.ts-listing .ts-listing-main-image>span{display:none}
.ts-listing .ts-listing-gallery{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr)) auto;
  gap:8px;
  width:100%;
  margin:8px 0 0;
  padding:0;
  background:transparent;
}
.ts-listing .ts-listing-gallery>button:not(.ts-listing-view-all){
  display:block;min-width:0;overflow:hidden;aspect-ratio:1.45/1;border:0;border-radius:10px;background:#ece6dd;padding:0
}
.ts-listing .ts-listing-gallery>button:not(.ts-listing-view-all) img{display:block;width:100%;height:100%;object-fit:cover}
.ts-listing .ts-listing-view-all{
  align-self:stretch;display:flex;gap:8px;align-items:center;justify-content:center;min-width:126px;padding:0 8px;border:0;background:transparent;color:#313934;font-size:12px;font-weight:600;white-space:nowrap
}
.ts-listing .ts-listing-view-all:hover{text-decoration:underline;text-underline-offset:4px}

/* Main desktop body: first-concept editorial rows + booking sidebar. */
.ts-listing .ts-listing-layout{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(330px,372px);
  gap:clamp(44px,5vw,68px);
  align-items:start;
  padding-top:56px;
}
.ts-listing .ts-listing-content{min-width:0}
.ts-listing .ts-listing-content>section{
  display:grid;
  grid-template-columns:132px minmax(0,1fr);
  column-gap:30px;
  row-gap:12px;
  padding:28px 0;
  border-top:1px solid var(--ts-rule);
  background:transparent;
}
.ts-listing .ts-listing-content>section:first-child{padding-top:0;border-top:0}
.ts-listing .ts-listing-content .ts-listing-kicker{
  grid-column:1;
  grid-row:1 / span 2;
  align-self:start;
  margin:0;
  color:#252d29;
  font:400 20px/1.15 var(--ts-font-heading,Georgia,serif);
  letter-spacing:-.02em;
  text-transform:none;
}
.ts-listing .ts-listing-content>section>h2{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important}
.ts-listing .ts-listing-overview-copy,
.ts-listing .ts-listing-about-more,
.ts-listing .ts-listing-feature-row,
.ts-listing .ts-listing-sleeping-list,
.ts-listing .ts-listing-amenity-highlights,
.ts-listing .ts-listing-all-amenities,
.ts-listing .ts-review-editorial,
.ts-listing .ts-review-metrics,
.ts-listing .ts-listing-reviews,
.ts-listing .ts-property-map-card,
.ts-listing .ts-listing-disclosures,
.ts-listing .ts-listing-address-note,
.ts-listing .ts-listing-good-to-know>p:not(.ts-listing-kicker),
.ts-listing .ts-listing-detail-rows,
.ts-listing .ts-listing-host>p,
.ts-listing .ts-listing-host>a{
  grid-column:2;
}
.ts-listing .ts-listing-overview-copy{max-width:68ch}
.ts-listing .ts-listing-overview-copy p{margin:0;color:#2e3832;font-size:15px;line-height:1.72}
.ts-listing .ts-listing-overview-copy p+p{margin-top:12px}
.ts-listing .ts-listing-overview-copy .ts-listing-lead{color:#222b26;font-size:16px;line-height:1.74}
.ts-listing .ts-listing-about-more{margin-top:2px;border-top:0}
.ts-listing .ts-listing-about-more summary{display:inline-flex;gap:8px;align-items:center;min-height:36px;color:#34413a;font-size:13px;font-weight:650;cursor:pointer;list-style:none}
.ts-listing .ts-listing-about-more summary::-webkit-details-marker{display:none}

.ts-listing .ts-listing-feature-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.ts-listing .ts-listing-feature-row>div{
  display:grid;grid-template-columns:28px minmax(0,1fr);gap:9px;align-items:start;min-height:0;padding:0;border:0;background:transparent;box-shadow:none
}
.ts-listing .ts-listing-feature-row svg{width:23px;height:23px;color:#7e5a47}
.ts-listing .ts-listing-feature-row span{color:#28322c;font-size:13px;line-height:1.55}

.ts-listing .ts-listing-sleeping-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0;padding:0;list-style:none}
.ts-listing .ts-listing-sleeping-list li{
  display:grid;grid-template-columns:28px minmax(0,1fr);gap:11px;align-items:center;min-height:64px;padding:12px 14px;border:1px solid var(--ts-rule);border-radius:8px;background:rgba(255,255,255,.45);color:#25302a
}
.ts-listing .ts-listing-sleeping-list svg{width:21px;height:21px;color:#785946}
.ts-listing .ts-listing-sleeping-list span{font-size:13px;line-height:1.5}

.ts-listing .ts-listing-amenity-highlights{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 18px;margin:0;padding:0;border:0;list-style:none}
.ts-listing .ts-listing-amenity-highlights li{
  display:grid;grid-template-columns:20px minmax(0,1fr);gap:8px;align-items:start;min-height:0;padding:0;border:0;background:transparent;color:#303a34;font-size:12.5px;line-height:1.5
}
.ts-listing .ts-listing-amenity-highlights svg{width:17px;height:17px;color:#755845;margin-top:1px}
.ts-listing .ts-listing-all-amenities{margin-top:4px;border:0}
.ts-listing .ts-listing-all-amenities>summary{display:inline-flex;gap:8px;align-items:center;min-height:34px;color:#334239;font-size:12.5px;font-weight:650;list-style:none;cursor:pointer}
.ts-listing .ts-listing-all-amenities>summary::-webkit-details-marker{display:none}
.ts-listing .ts-listing-amenity-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px;padding:0;background:transparent}
.ts-listing .ts-listing-amenity-groups article{min-height:0;padding:16px;border:1px solid var(--ts-rule);border-radius:8px;background:rgba(255,255,255,.42)}
.ts-listing .ts-listing-amenity-groups h3{display:flex;gap:8px;align-items:center;margin:0 0 10px;color:#26302b;font-size:15px}
.ts-listing .ts-listing-amenity-groups ul{display:grid;gap:7px;margin:0;padding:0;list-style:none}
.ts-listing .ts-listing-amenity-groups li{color:#3a4540;font-size:12.5px;line-height:1.45}

.ts-listing .ts-listing-review-hub{border:0;border-radius:0;background:transparent;box-shadow:none}
.ts-listing .ts-review-editorial{display:grid;grid-template-columns:118px minmax(0,1fr);gap:24px;align-items:start}
.ts-listing .ts-review-editorial-score{padding:0 20px 0 0;border-right:1px solid var(--ts-rule)}
.ts-listing .ts-review-editorial-score strong{display:block;color:#181e1a;font:400 40px/.95 var(--ts-font-heading,Georgia,serif)}
.ts-listing .ts-review-editorial-score span{display:block;margin-top:6px;color:#84582e;font-size:12px;letter-spacing:.12em}
.ts-listing .ts-review-editorial-score small{display:block;margin-top:7px;color:#626b65;font-size:11px;line-height:1.45}
.ts-listing .ts-review-editorial-score em{display:inline-block;margin-top:8px;color:#304238;font-size:10.5px;font-style:normal;font-weight:700}
.ts-listing .ts-review-editorial-copy>p:first-child{margin:0;color:#26312b;font-size:14px;line-height:1.65}
.ts-listing .ts-review-editorial-copy ul{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:14px 0 0;padding:0;list-style:none}
.ts-listing .ts-review-editorial-copy li{padding:0;border:0;background:transparent}
.ts-listing .ts-review-editorial-copy li span{display:block;color:#2b352f;font-size:12px;font-weight:650}
.ts-listing .ts-review-editorial-copy li small{display:block;margin-top:3px;color:#737b76;font-size:10.5px}
.ts-listing .ts-review-source-note{margin:12px 0 0!important;color:#747c77!important;font-size:10.5px!important;line-height:1.5!important}
.ts-listing .ts-review-source-note a{color:inherit;font-size:inherit}
.ts-listing .ts-review-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin-top:15px;border-top:1px solid var(--ts-rule)}
.ts-listing .ts-review-metrics>div{padding:12px 14px 0 0;border:0;background:transparent}
.ts-listing .ts-review-metrics>div+div{padding-left:14px;border-left:1px solid var(--ts-rule)}
.ts-listing .ts-review-metrics span{color:#69726d;font-size:9.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase}
.ts-listing .ts-review-metrics strong{display:block;margin-top:4px;color:#1f2823;font-size:18px}
.ts-listing .ts-listing-reviews{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.ts-listing .ts-listing-reviews blockquote{margin:0;padding:0;border:0;background:transparent;box-shadow:none}
.ts-listing .ts-listing-reviews blockquote p{margin:8px 0 10px;color:#2a352f;font-size:13px;line-height:1.62}
.ts-listing .ts-listing-reviews blockquote cite{color:#69726d;font-size:10.5px;font-style:normal}

.ts-listing .ts-property-map-card{overflow:hidden;border:1px solid var(--ts-rule);border-radius:10px;background:#fff;box-shadow:none}
.ts-listing .ts-property-map-copy{padding:13px 15px 0}
.ts-listing .ts-property-map-copy .ts-listing-kicker{display:none}
.ts-listing .ts-property-map-copy p{margin:0 0 10px;color:#626b65;font-size:11px;line-height:1.45}
.ts-listing .ts-property-map{min-height:250px}
.ts-listing .ts-listing-disclosures{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}
.ts-listing .ts-listing-disclosures details,
.ts-listing .ts-listing-detail-rows details{padding:0;border:0;border-top:1px solid var(--ts-rule);border-radius:0;background:transparent}
.ts-listing .ts-listing-disclosures summary,
.ts-listing .ts-listing-detail-rows summary{display:flex;min-height:48px;align-items:center;justify-content:space-between;gap:12px;list-style:none;cursor:pointer;color:#27312c;font-size:12.5px;font-weight:650}
.ts-listing .ts-listing-disclosures summary::-webkit-details-marker,
.ts-listing .ts-listing-detail-rows summary::-webkit-details-marker{display:none}
.ts-listing .ts-listing-disclosures summary i,
.ts-listing .ts-listing-detail-rows summary i{font-style:normal;font-size:18px;font-weight:300}
.ts-listing .ts-listing-disclosures p,
.ts-listing .ts-listing-detail-rows details>div{padding:0 0 14px;color:#424c46;font-size:12.5px;line-height:1.62}
.ts-listing .ts-listing-address-note{margin:10px 0 0;color:#707873;font-size:10.5px}
.ts-listing .ts-listing-good-to-know{padding:28px 0;border:0;border-top:1px solid var(--ts-rule);border-radius:0;background:transparent}
.ts-listing .ts-listing-good-to-know>p:not(.ts-listing-kicker){margin:0;max-width:66ch;color:#303a35;font-size:13.5px;line-height:1.68}
.ts-listing .ts-listing-detail-rows{display:grid;gap:0;border-bottom:1px solid var(--ts-rule)}
.ts-listing .ts-listing-rules{display:grid;grid-template-columns:1fr;gap:7px;margin:0;padding:0;border:0;list-style:none}
.ts-listing .ts-listing-rules li{color:#3d4742;font-size:12.5px;line-height:1.55}
.ts-listing .ts-listing-host{padding:28px 0;border:0;border-top:1px solid var(--ts-rule);border-radius:0;background:transparent}
.ts-listing .ts-listing-host>p{margin:0 0 8px;max-width:65ch;color:#333e38;font-size:13.5px;line-height:1.65}
.ts-listing .ts-listing-host>a{display:inline-flex;min-height:36px;align-items:center;margin-top:7px;padding:0;border:0;border-bottom:1px solid currentColor;border-radius:0;color:#2f4137;font-size:12.5px;text-decoration:none}

/* Reservation card: visually quiet, always secondary to the property itself. */
.ts-listing .ts-booking-inline{min-width:0}
.ts-listing .ts-listing-booking-panel{
  position:sticky;top:24px;padding:24px;border:1px solid rgba(21,26,23,.09);border-radius:10px;background:#f5efe5;box-shadow:0 12px 30px rgba(21,26,23,.045)
}
.ts-listing .ts-listing-booking-panel .ts-kicker{color:#725646;font-size:9.5px;letter-spacing:.11em}
.ts-listing .ts-listing-booking-panel h2{margin:8px 0 9px;color:#17201b;font:400 27px/1.04 var(--ts-font-heading,Georgia,serif);letter-spacing:-.03em}
.ts-listing .ts-listing-booking-panel .ts-booking-intro{margin:0 0 14px;color:#65706a;font-size:11.5px;line-height:1.5}
.ts-listing .ts-listing-booking-panel .ts-booking-property{display:none}
.ts-listing .ts-listing-booking-panel .ts-date-grid{gap:8px}
.ts-listing .ts-listing-booking-panel .ts-date-choice,
.ts-listing .ts-listing-booking-panel .ts-party-disclosure,
.ts-listing .ts-listing-booking-panel .ts-rate-plan,
.ts-listing .ts-listing-booking-panel .ts-price-box,
.ts-listing .ts-listing-booking-panel .ts-best-price-note{border-color:rgba(21,26,23,.09);border-radius:8px;background:rgba(255,255,255,.5)}
.ts-listing .ts-listing-booking-panel .ts-date-choice>span{font-size:10px;color:#69736d}
.ts-listing .ts-listing-booking-panel .ts-date-choice button{min-height:44px;border-radius:7px}
.ts-listing .ts-listing-booking-panel .ts-arrival-times{font-size:10px;line-height:1.45}
.ts-listing .ts-listing-booking-panel .ts-party-disclosure summary{min-height:48px;font-size:12px}
.ts-listing .ts-listing-booking-panel .ts-pet-toggle{font-size:11.5px}
.ts-listing .ts-listing-booking-panel .ts-price-box{padding:15px}
.ts-listing .ts-listing-booking-panel .ts-price-box>span:first-child{color:#67716b;font-size:9.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.ts-listing .ts-listing-booking-panel .ts-price-lines{gap:6px;margin:10px 0;color:#39443e;font-size:11px}
.ts-listing .ts-listing-booking-panel .ts-price-total{padding-top:10px;border-top:1px solid var(--ts-rule)}
.ts-listing .ts-listing-booking-panel .ts-price-total span{font-size:12px;font-weight:650}
.ts-listing .ts-listing-booking-panel .ts-price-total strong{font:400 30px/1 var(--ts-font-heading,Georgia,serif);color:#16201b}
.ts-listing .ts-listing-booking-panel .ts-price-box small{font-size:9.5px;color:#707973}
.ts-listing .ts-reserve-button{min-height:50px;margin-top:13px;border-radius:var(--ts-r-control,10px);font-size:15px}
.ts-listing .ts-reserve-note{margin-top:7px;color:#727a75;font-size:9.5px}
.ts-listing .ts-listing-booking-panel .ts-best-price-note summary{min-height:44px;font-size:11.5px}
.ts-listing .ts-listing-booking-panel .ts-booking-contact{display:inline-flex;margin:8px 0 0;color:#33443a;font-size:11.5px;text-decoration:none;border-bottom:1px solid currentColor}

/* Related properties. */
.ts-listing .ts-listing-related{margin-top:48px;padding-top:38px;border-top:1px solid var(--ts-rule)}
.ts-listing .ts-listing-related>.ts-listing-kicker{margin:0;color:#252d29;font:400 22px/1.1 var(--ts-font-heading,Georgia,serif);letter-spacing:-.02em;text-transform:none}
.ts-listing .ts-listing-related>h2{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important}
.ts-listing .ts-listing-related>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:18px}
.ts-listing .ts-listing-related article{overflow:hidden;border:1px solid var(--ts-rule);border-radius:10px;background:var(--ts-paper)}
.ts-listing .ts-listing-related article img{display:block;width:100%;aspect-ratio:16/11;object-fit:cover}
.ts-listing .ts-listing-related article p{margin:12px 14px 4px;padding:0;color:#707873;font-size:9.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.ts-listing .ts-listing-related article h3{margin:0 14px 14px;padding:0;font:400 20px/1.08 var(--ts-font-heading,Georgia,serif)}
.ts-listing .ts-listing-related article h3 a{color:#1b231f;text-decoration:none}

/* Sticky bar is only used when the inline booking form is hidden. */
.ts-listing .ts-listing-mobile-bookbar{display:none}

@media (min-width:768px) and (max-width:1180px){
  .ts-listing .ts-listing-topbar,
  .ts-listing .ts-listing-hero,
  .ts-listing .ts-listing-layout,
  .ts-listing .ts-listing-related{width:calc(100% - 40px)}
  .ts-listing .ts-listing-hero{grid-template-columns:minmax(260px,.76fr) minmax(0,1.24fr);gap:28px}
  .ts-listing .ts-listing-hero h1{font-size:clamp(42px,6vw,58px)}
  .ts-listing .ts-listing-main-image{aspect-ratio:15/10}
  .ts-listing .ts-listing-gallery{grid-template-columns:repeat(3,minmax(0,1fr)) auto}
  .ts-listing .ts-listing-layout{grid-template-columns:minmax(0,1fr);gap:0;padding-top:44px}
  .ts-listing .ts-listing-content>section{grid-template-columns:122px minmax(0,1fr);column-gap:24px}
  .ts-listing .ts-listing-feature-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:15px 22px}
  .ts-listing .ts-booking-inline{display:none}
  .ts-listing .ts-listing-mobile-bookbar{display:flex}
}

@media (max-width:1024px){
  .ts-listing{padding-bottom:100px}
  .ts-listing .ts-booking-inline{display:none}
  .ts-listing .ts-booking-inline.is-open{
    position:fixed;inset:0;z-index:99999;display:flex;align-items:flex-end;justify-content:center;padding:0;background:rgba(16,22,18,.38);backdrop-filter:blur(3px)
  }
  .ts-listing .ts-booking-inline.is-open .ts-booking-drawer{
    position:relative;top:auto;width:min(680px,100%);max-height:88vh;margin:0;padding:22px 20px 26px;overflow:auto;border:0;border-radius:20px 20px 0 0;background:#fffdf9;box-shadow:0 -18px 50px rgba(0,0,0,.18)
  }
  .ts-listing .ts-booking-inline.is-open .ts-booking-close{
    position:sticky;top:0;z-index:4;display:grid!important;width:38px;height:38px;margin:0 0 0 auto;place-items:center;border:1px solid var(--ts-rule);border-radius:999px;background:#fff;color:#202a24
  }
  .ts-listing .ts-listing-mobile-bookbar{
    position:fixed;z-index:9990;right:14px;bottom:max(12px,env(safe-area-inset-bottom));left:14px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 10px 10px 16px;border:1px solid rgba(21,26,23,.10);border-radius:16px;background:rgba(255,253,249,.96);box-shadow:0 12px 34px rgba(21,26,23,.16);backdrop-filter:blur(16px)
  }
  .ts-listing .ts-listing-mobile-bookbar>div{min-width:0;display:grid;gap:2px}
  .ts-listing .ts-listing-mobile-bookbar strong{overflow:hidden;color:#17201b;font:400 20px/1.05 var(--ts-font-heading,Georgia,serif);white-space:nowrap;text-overflow:ellipsis}
  .ts-listing .ts-listing-mobile-bookbar small{overflow:hidden;color:#68716c;font-size:10px;white-space:nowrap;text-overflow:ellipsis}
  .ts-listing .ts-listing-mobile-bookbar button{flex:0 0 auto;min-height:48px;padding:0 20px;border:0;border-radius:9px;background:var(--ts-accent);color:#fff;font-size:12.5px;font-weight:700}
  /* Revealed only once no real booking control is on screen -- see the
     setupStickyBookBar comment in ticino-stays.js. Visible by default so a
     script failure degrades to the previous behaviour. */
  .ts-listing .ts-listing-mobile-bookbar.is-managed{transform:translateY(calc(100% + 20px));opacity:0;visibility:hidden;transition:transform .3s cubic-bezier(.16,1,.3,1),opacity .2s ease,visibility 0s linear .3s}
  .ts-listing .ts-listing-mobile-bookbar.is-managed.is-visible{transform:none;opacity:1;visibility:visible;transition:transform .3s cubic-bezier(.16,1,.3,1),opacity .22s ease,visibility 0s}
  body:has(.ts-booking-backdrop.is-open) .ts-listing .ts-listing-mobile-bookbar{transform:translateY(calc(100% + 20px));opacity:0;visibility:hidden}
}

@media (max-width:767px){
  .ts-listing .ts-listing-topbar,
  .ts-listing .ts-listing-hero,
  .ts-listing .ts-listing-layout,
  .ts-listing .ts-listing-related{width:calc(100% - 28px)}
  .ts-listing .ts-listing-topbar{padding:10px 0 6px}
  .ts-listing .ts-listing-breadcrumb{display:none}
  .ts-listing .ts-listing-hero{display:flex;flex-direction:column;gap:18px;padding:18px 0 0}
  .ts-listing .ts-listing-hero-copy{order:1}
  .ts-listing .ts-listing-hero-media{order:2}
  .ts-listing .ts-listing-hero-copy>p:first-child{font-size:10px}
  .ts-listing .ts-listing-hero h1{max-width:11ch;margin:10px 0 10px;font-size:clamp(42px,12vw,55px)}
  .ts-listing .ts-listing-hero em{font-size:20px}
  .ts-listing .ts-listing-facts{gap:8px 12px;margin:18px 0 12px}
  .ts-listing .ts-listing-facts span{font-size:12px}
  .ts-listing .ts-listing-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:18px}
  .ts-listing .ts-listing-actions>button.primary,
  .ts-listing .ts-listing-actions>a{min-height:48px;padding:0 10px;font-size:12px}
  .ts-listing .ts-listing-main-image{aspect-ratio:4/3;border-radius:12px}
  .ts-listing .ts-listing-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:6px}
  .ts-listing .ts-listing-gallery>button:not(.ts-listing-view-all){aspect-ratio:1.35/1;border-radius:9px}
  .ts-listing .ts-listing-gallery>button:nth-of-type(3){display:none}
  .ts-listing .ts-listing-view-all{grid-column:1/-1;min-height:34px;justify-content:flex-end;padding:0;font-size:11.5px}
  .ts-listing .ts-listing-layout{display:block;padding-top:32px}
  .ts-listing .ts-listing-content>section{display:block;padding:28px 0;border-top:1px solid var(--ts-rule)}
  .ts-listing .ts-listing-content>section:first-child{padding-top:0;border-top:0}
  .ts-listing .ts-listing-content .ts-listing-kicker{display:block;margin:0 0 15px;color:#1e2722;font:400 23px/1.08 var(--ts-font-heading,Georgia,serif);letter-spacing:-.025em}
  .ts-listing .ts-listing-overview-copy p{font-size:14px;line-height:1.68}
  .ts-listing .ts-listing-overview-copy .ts-listing-lead{font-size:15.5px}
  .ts-listing .ts-listing-feature-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 14px}
  .ts-listing .ts-listing-feature-row>div{grid-template-columns:24px minmax(0,1fr);gap:8px}
  .ts-listing .ts-listing-feature-row span{font-size:12.5px}
  .ts-listing .ts-listing-sleeping-list{grid-template-columns:1fr 1fr;gap:8px}
  .ts-listing .ts-listing-sleeping-list li{min-height:62px;padding:10px;grid-template-columns:23px minmax(0,1fr)}
  .ts-listing .ts-listing-sleeping-list span{font-size:12px}
  .ts-listing .ts-listing-amenity-highlights{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 14px}
  .ts-listing .ts-listing-amenity-highlights li{font-size:11.8px}
  .ts-listing .ts-listing-amenity-groups{grid-template-columns:1fr}
  .ts-listing .ts-review-editorial{grid-template-columns:100px minmax(0,1fr);gap:16px}
  .ts-listing .ts-review-editorial-score{padding-right:14px}
  .ts-listing .ts-review-editorial-score strong{font-size:36px}
  .ts-listing .ts-review-editorial-copy ul{grid-template-columns:1fr;gap:5px}
  .ts-listing .ts-review-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}
  .ts-listing .ts-listing-reviews{grid-template-columns:1fr}
  .ts-listing .ts-property-map{min-height:230px}
  .ts-listing .ts-listing-disclosures{grid-template-columns:1fr}
  .ts-listing .ts-listing-related{margin-top:36px;padding-top:30px}
  .ts-listing .ts-listing-related>div{grid-template-columns:1fr;gap:12px}
  .ts-listing .ts-listing-mobile-bookbar{right:10px;left:10px;bottom:max(8px,env(safe-area-inset-bottom));border-radius:14px}
  .ts-listing .ts-listing-mobile-bookbar strong{font-size:18px}
  .ts-listing .ts-listing-mobile-bookbar button{min-height:46px;padding:0 18px}
}

/* 7.11.0.13 legacy-specificity guardrails.
   These declarations only neutralise older responsive rules that used !important. */
.ts-listing .ts-booking-inline .ts-booking-drawer{
  padding:24px !important;
  border-radius:10px !important;
}
@media (max-width:1024px){
  .ts-listing .ts-booking-inline{
    display:none !important;
    position:static !important;
    inset:auto !important;
    order:initial !important;
    width:auto !important;
    max-width:none !important;
    max-height:none !important;
    overflow:visible !important;
  }
  .ts-listing .ts-booking-inline.is-open{
    position:fixed !important;
    inset:0 !important;
    z-index:99999 !important;
    display:flex !important;
    width:100% !important;
    max-width:none !important;
    align-items:flex-end !important;
    justify-content:center !important;
    overflow:hidden !important;
  }
  .ts-listing .ts-booking-inline.is-open .ts-booking-drawer{
    width:min(680px,100%) !important;
    max-width:100% !important;
    max-height:88vh !important;
    padding:22px 20px 26px !important;
    overflow:auto !important;
    border-radius:20px 20px 0 0 !important;
  }
}
@media (max-width:767px){
  .ts-listing .ts-listing-hero{
    display:flex !important;
    width:calc(100% - 28px) !important;
    min-height:0 !important;
    grid-template-columns:none !important;
  }
  .ts-listing .ts-listing-hero-copy{
    width:100% !important;
    order:1 !important;
    grid-row:auto !important;
    padding:0 !important;
  }
  .ts-listing .ts-listing-hero h1{
    max-width:11ch !important;
    font-size:clamp(42px,12vw,55px) !important;
  }
  .ts-listing .ts-listing-hero-copy .ts-listing-actions{
    display:grid !important;
  }
  .ts-listing .ts-listing-gallery{
    display:grid !important;
    width:100% !important;
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:6px !important;
    padding:0 !important;
  }
  .ts-listing .ts-listing-gallery>button:not(.ts-listing-view-all){display:block !important}
  .ts-listing .ts-listing-gallery>button:nth-of-type(3){display:none !important}
  .ts-listing .ts-listing-gallery .ts-listing-view-all{
    display:flex !important;
    grid-column:1/-1 !important;
  }
  .ts-listing .ts-listing-content>section{
    padding:28px 0 !important;
  }
  .ts-listing .ts-listing-content>section+section{
    padding-top:28px !important;
  }
}

/* 7.11.0.16 — compact standalone footer for branded/property pages. */
.ts-standalone-footer {
  margin: 28px 16px 0 !important;
  padding: 34px clamp(28px,4vw,60px) 26px !important;
  border-radius: 24px 24px 0 0;
}
.ts-standalone-footer > a { font-size: 28px !important; }
.ts-standalone-footer > p {
  max-width: 720px;
  justify-self: end;
  font-size: clamp(24px,2vw,31px) !important;
  line-height: 1.08 !important;
}
.ts-standalone-footer nav,
.ts-standalone-footer .ts-standalone-seo-links {
  padding-block: 8px !important;
}
.ts-standalone-footer small { padding-top: 7px !important; }
@media (max-width:680px) {
  .ts-standalone-footer {
    margin: 20px 8px 0 !important;
    padding: 26px 20px calc(22px + env(safe-area-inset-bottom)) !important;
    border-radius: 18px 18px 0 0;
  }
  .ts-standalone-footer > p {
    justify-self: start;
    font-size: 22px !important;
  }
}

/* 7.11.0.20 — booking-details responsive harmonisation.
   Keep the booking step visually continuous with Ticino Stays without
   reproducing the homepage listing card. */
.ts-checkout-page {
  min-height:0;
  background:var(--ts-paper,#f4f1ea);
  color:var(--ts-ink,#151a17);
}
.ts-checkout-shell {
  width:min(1340px,calc(100% - 48px));
  padding:26px 0 56px;
}
.ts-checkout-back {
  margin-bottom:18px;
  color:#46514b;
  font-size:15px;
  font-weight:600;
}
.ts-checkout-header { margin-bottom:22px; }
.ts-checkout-header .ts-kicker,
.ts-checkout-invalid .ts-kicker {
  color:var(--ts-rust,#9f5034);
  font-size:14px;
  font-weight:650;
  letter-spacing:0;
  text-transform:none;
}
.ts-checkout-header h1,
.ts-checkout-invalid h1 {
  max-width:14ch;
  margin:6px 0 10px;
  font-size:clamp(38px,3.6vw,58px);
  line-height:1.02;
}
.ts-checkout-header > p:last-child {
  max-width:62ch;
  color:#56615b;
  font-size:16px;
  line-height:1.55;
}
.ts-checkout-layout {
  grid-template-columns:minmax(0,1fr) minmax(360px,410px);
  gap:clamp(36px,4.2vw,60px);
  align-items:start;
  min-height:0;
}
.ts-checkout-details-form legend {
  margin-bottom:16px;
  font-size:30px;
}
.ts-checkout-details-form label {
  gap:8px;
  margin-bottom:15px;
  color:#3f4943;
  font-size:15px;
  font-weight:600;
}
.ts-checkout-details-form input[type="text"],
.ts-checkout-details-form input[type="email"],
.ts-checkout-details-form input[type="tel"] {
  min-height:56px;
  padding:0 16px;
  border-color:rgba(21,26,23,.12);
  border-radius:14px;
  background:#fffdf9;
  font-size:16px;
}
/* Card-contained rather than a bare top/bottom-rule divider, so the promo
   field reads as part of the guest-details form instead of a floating,
   disconnected link between sections. */
.ts-checkout-promo {
  margin:20px 0 24px;
  border:1px solid rgba(21,26,23,.12);
  border-top:1px solid rgba(21,26,23,.12);
  border-bottom:1px solid rgba(21,26,23,.12);
  border-radius:14px;
  background:#fffdf9;
  padding:0 16px;
}
.ts-checkout-promo summary { min-height:54px; font-size:15px; font-weight:600; }
.ts-checkout-promo > div { padding:0 0 16px; }
.ts-checkout-promo input,
.ts-checkout-promo button { min-height:50px; border-radius:11px; font-size:15px; }
.ts-checkout-policy { color:#46514b; font-size:15px !important; line-height:1.55; }
.ts-checkout-status { font-size:14px; }
.ts-checkout-payment { min-height:58px; border-radius:14px; font-size:16px; }
.ts-checkout-summary {
  top:16px;
  border-color:rgba(21,26,23,.11);
  border-radius:20px;
  background:#fffdf9;
  box-shadow:0 10px 30px rgba(21,26,23,.06);
}
.ts-checkout-summary > img { aspect-ratio:16/9; }
.ts-checkout-summary-body { padding:22px; }
.ts-checkout-summary-body > p:first-child {
  margin-bottom:6px;
  color:var(--ts-rust,#9f5034);
  font-size:14px;
  font-weight:600;
  letter-spacing:0;
  text-transform:none;
}
.ts-checkout-summary h2 { font-size:29px; line-height:1.06; }
.ts-checkout-stay-meta { gap:7px; margin:15px 0 18px; color:#53605a; font-size:15px; }
.ts-checkout-price-lines { gap:9px; padding:16px 0; }
.ts-checkout-price-lines > div { font-size:15px; }
.ts-checkout-total span { font-size:16px; }
.ts-checkout-total strong { font-size:28px; }
.ts-checkout-security strong { font-size:15px; }
.ts-checkout-security p,
.ts-checkout-edit { font-size:14px; line-height:1.55; }

@media (max-width:767px) {
  .ts-checkout-page,
  .ts-checkout-shell,
  .ts-checkout-layout,
  .ts-checkout-form-column { min-height:0 !important; }
  .ts-checkout-page { padding-bottom:0; }
  .ts-checkout-shell {
    width:calc(100% - 32px);
    margin:0 auto;
    padding:24px 0 34px;
  }
  .ts-checkout-back { margin-bottom:22px; font-size:15px; }
  .ts-checkout-header { margin-bottom:26px; }
  .ts-checkout-header .ts-kicker { font-size:14px; }
  .ts-checkout-header h1 {
    max-width:10ch;
    margin-top:7px;
    font-size:clamp(42px,12vw,54px);
    line-height:.96;
  }
  .ts-checkout-header > p:last-child { font-size:17px; line-height:1.58; }
  .ts-checkout-layout {
    display:grid !important;
    grid-template-columns:minmax(0,1fr) !important;
    gap:24px !important;
    align-content:start !important;
  }
  .ts-checkout-summary {
    position:relative !important;
    top:auto !important;
    order:-1 !important;
    display:block !important;
    width:100% !important;
    overflow:hidden;
    border-radius:16px;
    box-shadow:none;
  }
  .ts-checkout-summary > img { display:none !important; }
  .ts-checkout-summary-body { padding:18px; }
  .ts-checkout-summary-body > p:first-child { font-size:14px; }
  .ts-checkout-summary h2 { font-size:27px; }
  .ts-checkout-stay-meta { margin:13px 0 16px; font-size:15px; }
  .ts-checkout-price-lines { padding:14px 0; }
  .ts-checkout-price-lines > div { font-size:14px; }
  .ts-checkout-total { padding:14px 0; }
  .ts-checkout-total strong { font-size:26px; }
  .ts-checkout-security { padding-top:14px; }
  .ts-checkout-security p,
  .ts-checkout-edit { font-size:13px; }
  .ts-checkout-details-form legend { margin-bottom:18px; font-size:30px; }
  .ts-checkout-details-form label { font-size:15px; }
  .ts-checkout-details-form input[type="text"],
  .ts-checkout-details-form input[type="email"],
  .ts-checkout-details-form input[type="tel"] { min-height:56px; font-size:17px; }
  .ts-checkout-field-grid { grid-template-columns:minmax(0,1fr); gap:0; }
  .ts-checkout-promo { margin:22px 0; }
  .ts-checkout-policy { font-size:15px !important; }
  .ts-checkout-payment { min-height:56px; font-size:15px; }
}

/* 7.11.0.21 — Complete your booking responsive cleanup.
   Presentation only: the form fields, state, pricing output and Stripe handoff
   remain unchanged. */
.ts-checkout-page,
.ts-checkout-page *,
.ts-checkout-page *::before,
.ts-checkout-page *::after { box-sizing:border-box; }
.ts-checkout-shell,
.ts-checkout-layout,
.ts-checkout-form-column,
.ts-checkout-details-form,
.ts-checkout-field-grid,
.ts-checkout-summary,
.ts-checkout-summary-body { min-width:0; max-width:100%; }
.ts-checkout-summary > img {
  display:block;
  width:100%;
  height:auto;
  aspect-ratio:16/9;
  object-fit:cover;
}
.ts-checkout-details-form input,
.ts-checkout-promo input,
.ts-checkout-promo button,
.ts-checkout-payment { max-width:100%; }
.ts-checkout-summary-body > p:first-child,
.ts-checkout-header .ts-kicker,
.ts-checkout-invalid .ts-kicker {
  text-transform:none !important;
  letter-spacing:0 !important;
}

@media (min-width:1025px) {
  .ts-checkout-layout {
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(360px,410px);
    gap:clamp(40px,4.5vw,64px);
    align-items:start;
  }
  .ts-checkout-summary {
    position:sticky;
    top:28px;
    max-height:none;
    overflow:hidden;
    border-radius:20px;
    box-shadow:0 14px 36px rgba(21,26,23,.07);
    border:1px solid rgba(21,26,23,.11);
    background:#fffdf9;
  }
}

/* Tablet: retain the complete trip summary, but place its image beside the
   details so it does not push the guest form far below the fold. */
@media (min-width:768px) and (max-width:1024px) {
  .ts-checkout-shell { width:calc(100% - 40px); padding:32px 0 54px; }
  .ts-checkout-header { margin-bottom:30px; }
  .ts-checkout-layout {
    display:grid;
    grid-template-columns:minmax(0,1fr);
    gap:30px;
  }
  .ts-checkout-summary {
    position:relative;
    top:auto;
    order:-1;
    display:grid;
    grid-template-columns:minmax(220px,.82fr) minmax(0,1.18fr);
    width:100%;
    max-height:none;
    overflow:hidden;
  }
  .ts-checkout-summary > img {
    width:100%;
    height:100%;
    min-height:100%;
    aspect-ratio:auto;
    object-fit:cover;
  }
  .ts-checkout-summary-body { padding:22px; }
  .ts-checkout-field-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

@media (max-width:767px) {
  .ts-checkout-page { width:100%; max-width:100%; overflow-x:clip; }
  .ts-checkout-shell {
    width:calc(100% - 32px);
    max-width:100%;
    padding:24px 0 36px;
  }
  .ts-checkout-header h1,
  .ts-checkout-invalid h1 { overflow-wrap:normal; word-break:normal; }
  .ts-checkout-layout { width:100%; grid-template-columns:minmax(0,1fr) !important; }
  .ts-checkout-summary {
    position:relative !important;
    top:auto !important;
    order:-1;
    width:100%;
    max-height:none;
    overflow:hidden;
  }
  .ts-checkout-summary > img { display:none !important; }
  .ts-checkout-summary-body { padding:18px; }
  .ts-checkout-details-form label,
  .ts-checkout-policy,
  .ts-checkout-promo summary { font-size:16px !important; }
  .ts-checkout-details-form input[type="text"],
  .ts-checkout-details-form input[type="email"],
  .ts-checkout-details-form input[type="tel"] {
    width:100%;
    min-width:0;
    min-height:56px;
    font-size:17px;
  }
  .ts-checkout-promo > div { grid-template-columns:minmax(0,1fr) auto; }
  .ts-checkout-payment { width:100%; min-height:56px; }
}

@media (max-width:390px) {
  .ts-checkout-shell { width:calc(100% - 28px); }
  .ts-checkout-header h1 { font-size:clamp(40px,12.5vw,49px); }
  .ts-checkout-summary h2 { font-size:25px; }
  .ts-checkout-promo > div { grid-template-columns:minmax(0,1fr); }
  .ts-checkout-promo button { width:100%; }
}

/* 7.11.1.0 — booking journey acceptance.
   Keep the checkout visually continuous with Ticino Stays and make the
   cancelled-payment return state explicit without adding another heavy
   interface layer. (The numbered 1·2·3 step strip was retired — the page is a
   single continuous view: details, then payment, with the summary alongside.) */
.ts-checkout-return-notice {
  max-width:760px;
  margin:-8px 0 22px;
  padding:15px 17px;
  border:1px solid rgba(21,26,23,.10);
  border-radius:14px;
  background:#fffdf9;
  color:#34413a;
  font-size:15px;
  line-height:1.55;
}
.ts-checkout-return-notice.is-cancelled { border-left:4px solid #7d8e80; }
.ts-checkout-return-notice.is-pending { border-left:4px solid #9f5034; background:#fff8f2; }
.ts-checkout-details-form legend { color:#151a17; }
.ts-checkout-details-form label > span { color:#46514b; }
.ts-checkout-payment.is-loading::after {
  display:inline-block;
  width:15px;
  height:15px;
  margin-left:9px;
  border:2px solid currentColor;
  border-right-color:transparent;
  border-radius:50%;
  content:"";
  vertical-align:-2px;
  animation:ts-checkout-spin .75s linear infinite;
}
@keyframes ts-checkout-spin { to { transform:rotate(360deg); } }

@media (min-width:1025px) {
  .ts-checkout-summary {
    max-height:none;
    overflow:visible;
    scrollbar-gutter:auto;
  }
}
@media (max-width:767px) {
  .ts-checkout-return-notice {
    margin:-4px 0 24px;
    padding:14px;
    font-size:15px;
  }
}
@media (prefers-reduced-motion:reduce) {
  .ts-checkout-payment.is-loading::after { animation:none; }
}

/* 7.11.1.1 — confirmation + private guest portal acceptance.
   Guest-facing hierarchy only. Booking, pricing, Stripe and availability logic are untouched. */
.ts-confirmation-page .ts-confirmation-kicker,
.ts-portal .ts-portal-heading > span,
.ts-portal .ts-system-details span,
.ts-portal .ts-portal-hero > p:not(.ts-portal-welcome):not(.ts-portal-dates),
.ts-portal .ts-portal-status-row {
  text-transform: none;
  letter-spacing: .02em;
}
.ts-confirmation-page .ts-confirmation-next {
  border-top: 0;
  border-bottom: 1px solid #d8d2c7;
  background: #eef1e9;
}
.ts-confirmation-page .ts-confirmation-actions .ts-system-button {
  min-height: 50px;
  border-radius: 14px;
}
.ts-confirmation-text-links {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
  align-items: center;
  justify-content: center;
  padding-top: 5px;
  color: #777d77;
  font-size: 13px;
}
.ts-confirmation-text-links a {
  color: #3d4942;
  text-decoration: underline;
  text-underline-offset: 4px;
}
.ts-confirmation-page .ts-confirmation-grid { background: #f4f1ea; }

.ts-portal .ts-portal-brand { margin-bottom: clamp(34px,5vw,58px); }
.ts-portal-status-row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  margin: 0 0 16px;
  color: rgba(255,255,255,.68);
  font-size: 13px;
  font-weight: 600;
}
.ts-portal-status {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 5px 10px;
  border: 1px solid rgba(255,255,255,.3);
  border-radius: 999px;
  background: rgba(255,255,255,.08);
  color: #fffdf8;
  font-size: 12px;
  font-weight: 750;
}
.ts-portal-status.confirmed::before {
  content: "✓";
  margin-right: 6px;
}
.ts-portal-status.cancelled,
.ts-portal-status.refund_pending { color: #f3d6c9; border-color: rgba(243,214,201,.38); }
.ts-portal-dates {
  margin: 18px 0 0 !important;
  color: #e6cba4 !important;
  font-size: clamp(17px,2vw,20px) !important;
  font-weight: 650 !important;
}
.ts-portal .ts-portal-heading > span {
  margin-bottom: 10px;
  font-size: 14px;
  font-weight: 750;
}
.ts-portal .ts-portal-heading h2 {
  max-width: 800px;
  margin-bottom: 24px;
  font-size: clamp(30px,3.6vw,46px);
}
.ts-portal-before .ts-portal-actions { align-items: stretch; }
.ts-portal-action strong {
  display: block;
  font-size: 17px;
}
.ts-portal-action strong small {
  display: block;
  margin-top: 5px;
  color: inherit;
  opacity: .68;
  font-size: 13px;
  font-weight: 500;
  line-height: 1.45;
}
.ts-portal-action.completed {
  border-color: rgba(65,108,76,.28);
  background: #edf3ea;
}
.ts-portal-secondary-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 22px;
  margin-top: 22px;
}
.ts-portal-secondary-actions a {
  color: #1f3128;
  font-size: 14px;
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 5px;
}
.ts-portal-secondary-actions a.danger { color: #803927; }
.ts-portal-inactive .ts-portal-hero { background: #35433c; }
.ts-portal-inactive .ts-portal-content { max-width: 900px; margin: 0 auto; }
.ts-portal-inactive .ts-portal-booking { margin-bottom: 18px; }
.ts-portal .ts-system-details span {
  font-size: 13px;
  letter-spacing: 0;
}
.ts-portal .ts-system-details strong { font-size: 16px; }
.ts-portal-form:target {
  scroll-margin-top: 24px;
  box-shadow: 0 0 0 3px rgba(159,80,52,.12);
}

@media (max-width: 760px) {
  .ts-confirmation-page .ts-confirmation-next { padding: 30px 20px; }
  .ts-confirmation-text-links { justify-content: flex-start; }
  .ts-confirmation-page .ts-confirmation-grid { padding: 12px; }
  .ts-confirmation-page .ts-confirmation-card dd { font-size: 14px; }
  .ts-portal-status-row { align-items: flex-start; flex-direction: column; gap: 7px; }
  .ts-portal .ts-portal-heading h2 { font-size: 30px; line-height: 1.12; }
  .ts-portal .ts-system-details > div { padding: 17px; }
  .ts-portal-action { grid-template-columns: 30px minmax(0,1fr) 20px; gap: 12px; }
  .ts-portal-action strong { font-size: 16px; }
  .ts-portal-secondary-actions { flex-direction: column; align-items: flex-start; }
}

/* 7.11.1.1 — guest portal final acceptance refinements. */
.ts-portal-dates {
  text-transform: none !important;
  letter-spacing: 0 !important;
}
.ts-portal .ts-system-details {
  grid-template-columns: repeat(6,minmax(0,1fr));
}
.ts-portal .ts-system-details > div {
  grid-column: span 2;
}
.ts-portal .ts-system-details > div:nth-last-child(-n+2) {
  grid-column: span 3;
}
@media (max-width: 860px) {
  .ts-portal .ts-system-details { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .ts-portal .ts-system-details > div,
  .ts-portal .ts-system-details > div:nth-last-child(-n+2) { grid-column: auto; }
  .ts-portal .ts-system-details > div:last-child { grid-column: 1/-1; }
}
@media (max-width: 640px) {
  .ts-portal .ts-system-details { grid-template-columns: 1fr; }
  .ts-portal .ts-system-details > div,
  .ts-portal .ts-system-details > div:nth-last-child(-n+2),
  .ts-portal .ts-system-details > div:last-child { grid-column: auto; }
}


/* 7.11.2.0 — guest booking-change request acceptance. */
.ts-portal-change {
  border-top: 1px solid #d8d2c7;
}
.ts-portal-change-pending {
  display: grid;
  gap: 5px;
  margin: -5px 0 18px;
  padding: 15px 17px;
  border: 1px solid rgba(159,80,52,.22);
  border-radius: 14px;
  background: #fbf1e8;
  color: #39443e;
}
.ts-portal-change-pending strong {
  color: #9f5034;
  font-size: 14px;
}
.ts-portal-change-pending span {
  font-size: 14px;
  line-height: 1.45;
}
.ts-portal-change-details {
  overflow: hidden;
  border: 1px solid #d8d2c7;
  border-radius: 16px;
  background: #fffdf8;
}
.ts-portal-change-details > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 17px 18px;
  cursor: pointer;
  list-style: none;
  color: #1f3128;
  font-size: 16px;
  font-weight: 750;
}
.ts-portal-change-details > summary::-webkit-details-marker { display: none; }
.ts-portal-change-details > summary i {
  font-style: normal;
  font-size: 20px;
  line-height: 1;
  transition: transform .18s ease;
}
.ts-portal-change-details[open] > summary i { transform: rotate(45deg); }
.ts-portal-change-form {
  display: grid;
  gap: 17px;
  padding: 0 18px 20px;
  border-top: 1px solid #e8e3da;
}
.ts-portal-change-form > label,
.ts-portal-change-form fieldset label {
  display: grid;
  gap: 7px;
  color: #4e5952;
  font-size: 13px;
  font-weight: 700;
}
.ts-portal-change-form input[type="date"],
.ts-portal-change-form input[type="number"],
.ts-portal-change-form textarea {
  width: 100%;
  min-height: 48px;
  padding: 11px 12px;
  border: 1px solid #cfc9be;
  border-radius: 12px;
  background: #fff;
  color: #1f3128;
  font: inherit;
  font-size: 16px;
}
.ts-portal-change-form textarea { min-height: 96px; resize: vertical; }
.ts-portal-change-form fieldset {
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}
.ts-portal-change-form legend {
  margin: 0 0 10px;
  color: #1f3128;
  font-size: 15px;
  font-weight: 750;
}
.ts-portal-change-dates,
.ts-portal-change-party {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 12px;
}
.ts-portal-change-party { grid-template-columns: repeat(3,minmax(0,1fr)); }
.ts-portal-change-check {
  display: flex !important;
  align-items: center;
  gap: 10px !important;
  min-height: 46px;
  padding: 10px 12px;
  border-radius: 12px;
  background: #f4f1ea;
}
.ts-portal-change-check input { width: 18px; height: 18px; margin: 0; }
.ts-portal-change-form .ts-system-button {
  justify-self: start;
  min-height: 48px;
  border-radius: 13px;
}
@media (max-width: 640px) {
  .ts-portal-change-details > summary { padding: 16px; }
  .ts-portal-change-form { padding: 0 16px 18px; }
  .ts-portal-change-dates,
  .ts-portal-change-party { grid-template-columns: 1fr; }
  .ts-portal-change-form .ts-system-button { width: 100%; }
}

/* 7.11.2.0 — guest modification live quote. */
.ts-portal-change-quote{display:grid;gap:14px;padding:17px;border:1px solid #d8d2c7;border-radius:15px;background:#f7f4ed}.ts-portal-change-quote-head>div{display:grid;gap:6px}.ts-portal-change-quote-head strong{color:#1f3128;font-size:15px;line-height:1.45}.ts-portal-change-quote-head span{color:#7a6559;font-size:13px}.ts-portal-change-quote-head span.is-available{color:#286246;font-weight:700}.ts-portal-change-quote-head span.is-error{color:#9f5034;font-weight:700}.ts-portal-change-money{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.ts-portal-change-money>div{display:grid;gap:7px;min-width:0;padding:12px;border:1px solid #ded8cc;border-radius:12px;background:#fff}.ts-portal-change-money span{color:#657069;font-size:11px;font-weight:700;line-height:1.3}.ts-portal-change-money strong{color:#1f3128;font:600 17px/1.2 var(--ts-body-font,Arial,sans-serif);overflow-wrap:anywhere}.ts-portal-change-money .difference{border-color:rgba(159,80,52,.28);background:#fff9f5}.ts-portal-change-money .difference strong{color:#9f5034}.ts-portal-change-quote>p{margin:0;color:#67716b;font-size:12.5px;line-height:1.5}.ts-portal-change-form [data-change-submit]:disabled{cursor:not-allowed;opacity:.48}
@media(max-width:700px){.ts-portal-change-money{grid-template-columns:1fr}.ts-portal-change-quote{padding:15px}}

/* 7.11.2.0 — approved modification state remains visible until finalization. */
.ts-portal-change-pending.is-approved {
  border-color: rgba(40,98,70,.24);
  background: #edf4ef;
}
.ts-portal-change-pending.is-approved > strong {
  color: #286246;
}
.ts-portal-change-breakdown {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  padding-top: 10px;
  border-top: 1px solid #e5dfd4;
}
.ts-portal-change-breakdown > div {
  display: grid;
  gap: 4px;
  padding: 10px 11px;
  border-radius: 10px;
  background: rgba(31,49,40,.045);
}
.ts-portal-change-breakdown span { color: #667068; font-size: 12px; line-height: 1.3; }
.ts-portal-change-breakdown strong { color: #1f3128; font-size: 14px; }
@media (max-width: 620px) {
  .ts-portal-change-breakdown { grid-template-columns: 1fr; }
  .ts-portal-change-breakdown > div { grid-template-columns: minmax(0,1fr) auto; align-items: center; }
}

/* 7.11.2.0 — post-booking typography harmonisation. */
.ts-portal .ts-portal-heading h2,
.ts-cancellation-page .ts-cancel-heading h2 {
  max-width: 760px;
  font-size: clamp(28px, 3vw, 38px);
  line-height: 1.12;
}
.ts-cancellation-page .ts-cancel-hero > p {
  text-transform: none;
  letter-spacing: .02em;
}
.ts-cancellation-page .ts-system-details span {
  text-transform: none;
  letter-spacing: .02em;
  white-space: nowrap;
}
@media (max-width: 640px) {
  .ts-portal .ts-portal-heading h2,
  .ts-cancellation-page .ts-cancel-heading h2 { font-size: 28px; }
}

/* 7.11.2.1 — post-booking responsive acceptance.
   Scoped to confirmation/portal/cancellation surfaces. Property-page and
   homepage layouts remain untouched. */
.ts-portal,
.ts-cancellation-page {
  contain: layout style;
}
.ts-portal .ts-portal-hero,
.ts-cancellation-page .ts-cancel-hero,
.ts-portal .ts-portal-content,
.ts-cancellation-page .ts-cancel-content,
.ts-portal .ts-portal-section,
.ts-cancellation-page .ts-cancel-section,
.ts-portal .ts-portal-form,
.ts-portal .ts-portal-change-details,
.ts-portal .ts-portal-change-form,
.ts-portal .ts-portal-change-quote,
.ts-portal .ts-system-details > div,
.ts-cancellation-page .ts-system-details > div {
  min-width: 0;
  max-width: 100%;
}
.ts-portal h1,
.ts-portal h2,
.ts-portal p,
.ts-portal strong,
.ts-portal span,
.ts-portal a,
.ts-cancellation-page h1,
.ts-cancellation-page h2,
.ts-cancellation-page p,
.ts-cancellation-page strong,
.ts-cancellation-page span,
.ts-cancellation-page a {
  overflow-wrap: anywhere;
}
.ts-portal .ts-portal-welcome {
  color: rgba(255,255,255,.86);
}
.ts-portal .ts-portal-hero > small {
  color: rgba(255,255,255,.68);
}
.ts-portal .ts-portal-form label {
  letter-spacing: 0;
  text-transform: none;
}
.ts-portal .ts-portal-form input,
.ts-portal .ts-portal-form select,
.ts-portal .ts-portal-form textarea,
.ts-portal .ts-portal-change-form input,
.ts-portal .ts-portal-change-form select,
.ts-portal .ts-portal-change-form textarea {
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}
.ts-portal .ts-portal-actions {
  grid-template-columns: repeat(auto-fit,minmax(min(260px,100%),1fr));
}
.ts-portal .ts-portal-action {
  min-width: 0;
}
.ts-portal .ts-portal-action strong,
.ts-portal .ts-portal-action strong small {
  min-width: 0;
  overflow-wrap: anywhere;
}
.ts-portal .ts-portal-secondary-actions {
  row-gap: 12px;
}
.ts-portal #change-booking {
  scroll-margin-top: 22px;
}
.ts-portal .ts-portal-change-pending > span,
.ts-portal .ts-portal-change-quote-head,
.ts-portal .ts-portal-change-money > div,
.ts-portal .ts-portal-change-breakdown > div {
  min-width: 0;
}
.ts-portal .ts-portal-change-form .ts-system-button,
.ts-portal .ts-portal-form .ts-system-button {
  min-height: 50px;
  justify-content: center;
}
.ts-cancellation-page .ts-cancel-policy,
.ts-cancellation-page .ts-system-refund,
.ts-cancellation-page .ts-cancel-form {
  min-width: 0;
}
.ts-cancellation-page .ts-cancel-confirm {
  min-height: 50px;
  justify-content: center;
}

@media (min-width: 901px) {
  .ts-portal .ts-portal-actions {
    grid-template-columns: repeat(auto-fit,minmax(250px,1fr));
  }
}

@media (min-width: 641px) and (max-width: 900px) {
  .ts-portal .ts-portal-actions > :last-child:nth-child(odd) {
    grid-column: 1 / -1;
  }
  .ts-portal .ts-portal-actions > :last-child:nth-child(odd) strong {
    max-width: 48ch;
  }
  .ts-portal .ts-portal-change-money,
  .ts-portal .ts-portal-change-breakdown {
    grid-template-columns: repeat(3,minmax(0,1fr));
  }
}

@media (max-width: 760px) {
  .ts-system-page.ts-portal,
  .ts-system-page.ts-cancellation-page {
    width: calc(100% - 16px);
    margin: 8px auto;
    border-radius: 18px;
  }
  .ts-portal-hero,
  .ts-cancel-hero {
    padding: 30px 20px 36px;
  }
  .ts-portal-content,
  .ts-cancel-content {
    padding: 28px 18px 34px;
  }
  .ts-portal-section,
  .ts-cancel-section {
    margin-bottom: 42px;
  }
  .ts-portal .ts-portal-heading h2,
  .ts-cancellation-page .ts-cancel-heading h2 {
    margin-bottom: 22px;
  }
  .ts-portal .ts-system-details > div,
  .ts-cancellation-page .ts-system-details > div {
    padding: 17px;
  }
  .ts-portal .ts-portal-secondary-actions {
    gap: 10px 18px;
  }
  .ts-portal .ts-portal-change-details > summary {
    min-height: 58px;
  }
  .ts-portal .ts-portal-change-money,
  .ts-portal .ts-portal-change-breakdown {
    grid-template-columns: 1fr;
  }
  .ts-portal .ts-portal-change-breakdown > div {
    grid-template-columns: minmax(0,1fr) auto;
    align-items: center;
  }
  .ts-cancellation-page .ts-cancel-grid {
    gap: 12px;
  }
  .ts-cancellation-page .ts-cancel-form {
    gap: 16px;
  }
}

@media (max-width: 640px) {
  .ts-portal-brand {
    margin-bottom: 34px;
  }
  .ts-portal-hero h1,
  .ts-cancel-hero h1 {
    max-width: 13ch;
    font-size: clamp(39px,11.5vw,48px);
    line-height: 1;
  }
  .ts-portal-dates {
    font-size: 16px;
    line-height: 1.35;
  }
  .ts-portal-welcome,
  .ts-cancel-hero > span {
    margin-top: 22px;
    font-size: 17px;
    line-height: 1.55;
  }
  .ts-portal .ts-portal-status-row {
    margin-bottom: 15px;
    font-size: 12.5px;
  }
  .ts-portal .ts-portal-heading h2,
  .ts-cancellation-page .ts-cancel-heading h2 {
    font-size: clamp(27px,7.5vw,31px);
    line-height: 1.1;
  }
  .ts-portal .ts-portal-actions,
  .ts-portal .ts-portal-grid,
  .ts-portal .ts-portal-form form,
  .ts-portal .ts-portal-change-dates,
  .ts-portal .ts-portal-change-party {
    grid-template-columns: 1fr;
  }
  .ts-portal .ts-portal-action {
    min-height: 76px;
    padding: 16px;
  }
  .ts-portal .ts-portal-secondary-actions {
    align-items: stretch;
  }
  .ts-portal .ts-portal-secondary-actions a {
    width: fit-content;
    max-width: 100%;
  }
  .ts-portal .ts-portal-change-form {
    gap: 15px;
    padding: 0 14px 16px;
  }
  .ts-portal .ts-portal-change-details > summary {
    padding: 15px 14px;
  }
  .ts-portal .ts-portal-change-pending,
  .ts-portal .ts-portal-change-quote {
    padding: 14px;
  }
  .ts-portal .ts-portal-change-form .ts-system-button,
  .ts-portal .ts-portal-form .ts-system-button {
    width: 100%;
  }
  .ts-portal .ts-portal-form {
    padding: 20px 16px;
  }
  .ts-cancellation-page .ts-system-refund,
  .ts-cancellation-page .ts-cancel-policy,
  .ts-cancellation-page .ts-cancel-form {
    padding: 20px;
  }
  .ts-cancellation-page .ts-system-refund strong {
    font-size: clamp(38px,12vw,48px);
  }
  .ts-cancellation-page .ts-cancel-confirm,
  .ts-cancellation-page .ts-cancel-back {
    width: 100%;
  }
  .ts-cancellation-page .ts-cancel-back {
    justify-content: flex-start;
  }
}

@media (max-width: 390px) {
  .ts-system-page.ts-portal,
  .ts-system-page.ts-cancellation-page {
    width: calc(100% - 12px);
    margin: 6px auto;
  }
  .ts-portal-hero,
  .ts-cancel-hero {
    padding-inline: 18px;
  }
  .ts-portal-content,
  .ts-cancel-content {
    padding-inline: 14px;
  }
  .ts-portal .ts-system-details > div,
  .ts-cancellation-page .ts-system-details > div {
    padding: 15px;
  }
  .ts-portal .ts-portal-action {
    grid-template-columns: 28px minmax(0,1fr) 18px;
    gap: 10px;
    padding: 15px 13px;
  }
  .ts-portal .ts-portal-change-breakdown > div {
    padding: 9px 10px;
  }
}

/* 7.11.3.0 — approved booking-change payment/finalization states. */
.ts-portal-change-payment {
  margin-top: 16px;
  padding: 18px;
  border: 1px solid rgba(31,49,40,.14);
  border-radius: 16px;
  background: #eef3ec;
}
.ts-portal-change-payment p { margin: 0 0 8px; color:#344139; font-size:15px; line-height:1.55; }
.ts-portal-change-payment p small { color:#68736c; font-size:13px; }
.ts-portal-change-payment .ts-system-button { margin-top:10px; min-height:50px; border-radius:13px; }
.ts-portal-change-pending.is-approved { border-color:rgba(31,49,40,.22); background:#edf3ea; }
@media (max-width:640px) {
  .ts-portal-change-payment { padding:16px; border-radius:14px; }
  .ts-portal-change-payment .ts-system-button { width:100%; text-align:center; }
}

/* 7.11.3.5 — compact change-section heading subtitle */
.ts-portal-heading-sub {
  margin: 4px 0 0;
  color: #68736c;
  font-size: 14px;
  font-weight: 400;
  line-height: 1.55;
}

/* 7.11.3.6 — compact modification availability calendar */
.ts-portal-change-cal-wrap {
  border: 1px solid #ddd7ce;
  border-radius: 16px;
  background: #faf8f4;
  padding: 16px 18px;
  margin: 0 auto 20px;
  max-width: 400px;
  box-sizing: border-box;
}
.ts-change-cal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
}
.ts-change-cal-month-label {
  font-size: 14.5px;
  font-weight: 700;
  color: #1f3128;
  letter-spacing: .01em;
}
.ts-change-cal-prev,
.ts-change-cal-next {
  background: #fff;
  border: 1px solid #d0c9be;
  border-radius: 8px;
  width: 32px; height: 32px;
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
  color: #3d5245;
  transition: background .15s, border-color .15s;
  display: flex; align-items: center; justify-content: center;
}
.ts-change-cal-prev:hover,
.ts-change-cal-next:hover { background: #ece8e1; border-color: #b4ac9f; }
.ts-change-cal-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 4px;
}
.ts-cal-dow {
  font-size: 11px;
  font-weight: 700;
  color: #8a9189;
  text-align: center;
  padding: 2px 0 6px;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.ts-cal-empty { visibility: hidden; }
.ts-cal-day {
  aspect-ratio: 1;
  max-width: 46px;
  max-height: 46px;
  margin: 0 auto;
  width: 100%;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px;
  font-weight: 500;
  border-radius: 8px;
  border: 1px solid transparent;
  cursor: pointer;
  background: #ffffff;
  color: #1f3128;
  transition: background .12s, border-color .12s, color .12s;
  font-family: inherit;
  line-height: 1;
  padding: 0;
}
.ts-cal-day.ts-cal-available { border-color: #eae5dc; }
.ts-cal-day.ts-cal-available:hover { background: #e3efe7; border-color: #b3d5c0; }
.ts-cal-day.ts-cal-past { color: #c4bfb8; background: transparent; cursor: default; }
.ts-cal-day.ts-cal-blocked { color: #a8a29a; background: #eae6df; cursor: default; text-decoration: line-through; }
.ts-cal-day.ts-cal-own { background: #fef6e7; color: #8a6520; border-color: #f1dfba; font-weight: 600; }
.ts-cal-day.ts-cal-in-range { background: #dcf0e4; color: #1a3b29; }
.ts-cal-day.ts-cal-sel-in,
.ts-cal-day.ts-cal-sel-out,
.ts-cal-day.ts-cal-sel-both { background: #1f3128; color: #fff; font-weight: 700; border-radius: 10px; }
.ts-change-cal-legend {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 14px;
  padding-top: 10px;
  border-top: 1px solid #e8e3da;
  font-size: 11.5px;
  color: #68736c;
}
.ts-change-cal-legend span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.ts-change-cal-legend i {
  display: inline-block;
  width: 10px; height: 10px;
  border-radius: 3px;
}
.ts-leg-avail { background: #ffffff; border: 1px solid #ccc5b9; }
.ts-leg-own { background: #fef6e7; border: 1px solid #f1dfba; }
.ts-leg-sel { background: #1f3128; }
.ts-leg-blocked { background: #eae6df; }
.ts-change-cal-prompt {
  min-height: 18px;
  font-size: 12.5px;
  font-weight: 600;
  color: #24573b;
  margin-top: 8px;
  text-align: center;
}
.ts-change-cal-status {
  min-height: 18px;
  font-size: 12px;
  color: #a44832;
  margin-top: 4px;
  text-align: center;
}
.ts-change-cal-selected {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  flex-wrap: wrap;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid #e8e3da;
  font-size: 13px;
  color: #4a574f;
}
.ts-change-cal-sel-label { color: #7f8983; font-size: 12px; }
.ts-change-cal-sel-in,
.ts-change-cal-sel-out { font-weight: 700; color: #1f3128; }
.ts-change-cal-sel-sep { color: #8a9189; }
.ts-change-cal-nights { font-weight: 600; color: #2d6046; }
@media (max-width: 520px) {
  .ts-portal-change-cal-wrap { padding: 12px; border-radius: 14px; }
  .ts-cal-day { font-size: 12px; border-radius: 6px; }
}

/* Normal-booking on-page payment — Stripe Checkout Session, ui_mode 'elements'.
   ONE coherent booking card: guest details and payment are two blocks of the
   same surface separated by a single hairline. There is no staging button and
   no nested card — Stripe's Payment Element sits directly in the payment block,
   themed to match via the Appearance API. */
.ts-checkout-block { position:relative; }
.ts-checkout-block[hidden] { display:none !important; }
.ts-checkout-block + .ts-checkout-block { margin-top:16px; padding-top:16px; border-top:1px solid rgba(31,49,40,.13); }
.ts-checkout-block-title {
  margin:0 0 14px;
  color:var(--ts-soft,#60665f);
  font:700 11px/1.2 var(--ts-font-body,Arial,sans-serif);
  letter-spacing:.13em;
  text-transform:uppercase;
}
.ts-embedded-checkout[hidden] { display:none !important; }
.ts-embedded-checkout-status { margin:0; color:var(--ts-soft,#60665f); font-size:13px; line-height:1.55; }
.ts-embedded-checkout-status:empty { display:none; }
.ts-embedded-checkout-mount { width:100%; }
.ts-embedded-checkout.is-active .ts-embedded-checkout-mount { min-height:170px; }
.ts-embedded-checkout.is-active .ts-embedded-checkout-mount:empty { min-height:0; }
.ts-embedded-checkout-note { margin:12px 0 0; color:var(--ts-soft,#60665f); font-size:12px; line-height:1.55; text-align:center; }
.ts-embedded-checkout-cancel { display:block; margin:14px auto 0; padding:8px 4px; border:0; border-bottom:1px solid currentColor; color:var(--ts-rust,#9f5034); background:transparent; cursor:pointer; font:700 10px/1.2 var(--ts-font-body,Arial,sans-serif); letter-spacing:.08em; text-transform:uppercase; }
.ts-embedded-checkout-cancel:disabled { opacity:.45; cursor:wait; }
.ts-embedded-checkout-cancel[hidden] { display:none !important; }

/* Idle: a compact, deliberately clickable placeholder that occupies the same
   footprint the Payment Element will. Clicking it is one of the two explicit
   gestures that arm the Checkout Session — nothing happens on page load. */
.ts-payment-placeholder {
  display:flex; flex-direction:column; gap:6px; width:100%;
  margin:0; padding:15px 16px; text-align:left; cursor:pointer;
  border:1px dashed rgba(31,49,40,.22); border-radius:12px; background:#fcfaf4;
  font-family:var(--ts-font-body,Arial,sans-serif);
  transition:border-color .15s ease, background .15s ease;
}
.ts-payment-placeholder:hover { border-color:rgba(31,49,40,.4); background:#faf7ef; }
.ts-payment-placeholder-methods { color:var(--ts-ink,#151a17); font-size:13px; font-weight:650; letter-spacing:.01em; }
.ts-payment-placeholder-hint { color:var(--ts-soft,#60665f); font-size:12px; line-height:1.5; }
.ts-embedded-checkout.is-active .ts-payment-placeholder { display:none; }
.ts-embedded-checkout.is-idle .ts-embedded-checkout-mount { display:none; }

/* Terms sit with the payment action they authorise. */
.ts-embedded-checkout .ts-checkout-policy { margin:16px 0 0; }

/* The single primary action for the whole card. */
.ts-checkout-pay {
  display:block; width:100%; min-height:54px; margin-top:14px;
  border:0; border-radius:11px; color:#fff; background:var(--ts-forest,#1f3128);
  font-family:var(--ts-font-body,Arial,sans-serif); font-size:15px; font-weight:700; letter-spacing:.01em;
  cursor:pointer; transition:opacity .15s ease, background .15s ease;
}
.ts-checkout-pay:hover:not(:disabled) { background:#182619; }
.ts-checkout-pay:disabled { opacity:.4; cursor:not-allowed; }
.ts-checkout-pay.is-loading { opacity:.7; cursor:progress; }
.ts-pay-errors { margin:12px 0 0; color:var(--ts-rust,#9f5034); font-size:13px; line-height:1.5; }
.ts-pay-errors:empty { display:none; }
.ts-checkout-details-form[hidden] { display:none !important; }

@media(max-width:680px) {
  .ts-checkout-block + .ts-checkout-block { margin-top:14px; padding-top:14px; }
  .ts-embedded-checkout.is-active .ts-embedded-checkout-mount { min-height:190px; }
  /* iOS refuses to zoom-suppress below 16px. */
  .ts-checkout-details-form input,
  .ts-checkout-details-form select { font-size:16px; }
  .ts-checkout-pay { min-height:52px; }
}

/* Mobile order: the heading, then the stay summary card on top, then the
   guest-details and payment card. Presentation/order only — no payment, hold
   or Stripe logic is affected. */
@media (max-width:767px) {
  .ts-checkout-summary { order:-1 !important; }
  .ts-checkout-form-column { order:0 !important; }
}

/* Guest portal compact-flow repair — presentation only. */
.ts-portal .ts-portal-compact-header {
  min-height: 0;
  padding: 26px clamp(24px,4vw,46px) 28px;
  border-bottom: 1px solid rgba(255,255,255,.14);
  background: #1f3128;
  color: #fffdf8;
}
.ts-portal .ts-portal-brand {
  margin: 0 0 15px;
  color: #fffdf8;
  font-size: 17px;
}
.ts-portal .ts-portal-brand .ts-system-mark {
  width: 38px;
  height: 38px;
  border-color: rgba(255,255,255,.72);
  color: #fffdf8;
  font-size: 13px;
}
.ts-portal .ts-portal-compact-header h1 {
  max-width: none;
  margin: 0 0 13px;
  color: #fffdf8;
  font-size: clamp(30px,4vw,44px);
  line-height: 1.04;
}
.ts-portal .ts-portal-compact-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 7px 14px;
  align-items: center;
  margin: 0;
  color: rgba(255,255,255,.82);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0;
}
.ts-portal .ts-portal-compact-meta > span { color: inherit; }
.ts-portal .ts-portal-compact-meta .ts-portal-status {
  min-height: 27px;
  padding: 4px 10px;
  border-color: rgba(255,255,255,.36);
  background: rgba(255,255,255,.1);
  color: #fffdf8;
}
.ts-portal .ts-portal-compact-meta .ts-portal-reference {
  color: rgba(255,255,255,.62);
  font-size: 12px;
  font-weight: 500;
}
.ts-portal .ts-portal-content {
  display: block;
  padding: clamp(24px,4vw,46px);
}
.ts-portal .ts-portal-section,
.ts-portal .ts-portal-form {
  margin: 0 0 clamp(28px,3.5vw,40px);
}
.ts-portal .ts-portal-content > :last-child { margin-bottom: 0; }
.ts-portal .ts-portal-heading h2 {
  margin: 0 0 16px;
  color: #1f3128;
  font-size: clamp(25px,3vw,34px);
  line-height: 1.12;
}
.ts-portal .ts-portal-attention {
  margin: 0 0 12px;
  padding: 16px 18px;
  border-radius: 14px;
}
.ts-portal .ts-compact-grid { gap: 10px; }
.ts-portal .ts-compact-grid > div {
  min-height: 0;
  padding: 16px;
}
.ts-portal .ts-portal-secondary-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 13px;
}
.ts-portal .ts-portal-secondary-actions a {
  display: inline-flex;
  min-height: 42px;
  align-items: center;
  justify-content: center;
  padding: 9px 14px;
  border: 1px solid rgba(21,26,23,.16);
  border-radius: 10px;
  background: #fffdf8;
  color: #1f3128;
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
}
.ts-portal .ts-portal-secondary-actions a:hover,
.ts-portal .ts-portal-secondary-actions a:focus-visible { border-color: rgba(159,80,52,.48); }
.ts-portal .ts-portal-secondary-actions a.danger { color: #803927; }
.ts-portal .ts-portal-arrival .ts-portal-actions {
  grid-template-columns: repeat(auto-fit,minmax(min(230px,100%),1fr));
  gap: 10px;
}
.ts-portal .ts-portal-arrival .ts-portal-action {
  min-height: 68px;
  padding: 15px 17px;
}
.ts-portal .ts-portal-arrival .ts-portal-action.primary {
  border-color: #1f3128;
  background: #1f3128;
  color: #fffdf8;
}
.ts-portal .ts-portal-arrival .ts-portal-action.primary > span { color: #e6cba4; }
.ts-portal .ts-portal-arrival .ts-portal-action.primary strong { color: #fffdf8; }
.ts-portal #arrival-information .ts-portal-grid { gap: 10px; }
.ts-portal #arrival-information .ts-portal-grid summary { min-height: 58px; padding: 14px 17px; }
.ts-portal #guest-registration { margin-top: 0; }
.ts-portal .ts-portal-change {
  padding-top: 26px;
  border-top: 1px solid #d8d2c7;
}
.ts-portal .ts-portal-change-details > summary { min-height: 58px; }

@media (max-width: 760px) {
  .ts-portal .ts-portal-compact-header { padding: 22px 20px 24px; }
  .ts-portal .ts-portal-brand { margin-bottom: 13px; }
  .ts-portal .ts-portal-compact-header h1 { font-size: clamp(29px,8vw,38px); }
  .ts-portal .ts-portal-compact-meta { align-items: flex-start; flex-direction: row; gap: 7px 11px; }
  .ts-portal .ts-portal-content { padding: 24px 18px 30px; }
  .ts-portal .ts-portal-section,
  .ts-portal .ts-portal-form { margin-bottom: 28px; }
  .ts-portal .ts-portal-secondary-actions a { flex: 1 1 calc(50% - 4px); }
  .ts-portal .ts-portal-arrival .ts-portal-actions { grid-template-columns: 1fr; }
}

@media (max-width: 430px) {
  .ts-portal .ts-portal-compact-header { padding-inline: 17px; }
  .ts-portal .ts-portal-brand .ts-system-mark { width: 34px; height: 34px; }
  .ts-portal .ts-portal-compact-meta .ts-portal-reference { flex-basis: 100%; }
  .ts-portal .ts-portal-content { padding-inline: 14px; }
  .ts-portal .ts-portal-secondary-actions { flex-direction: column; }
  .ts-portal .ts-portal-secondary-actions a { width: 100%; }
  .ts-portal .ts-portal-arrival .ts-portal-action { min-height: 64px; }
}

/* ==========================================================================
   Site footer — one slim near-black band, shared by ts_site_footer_markup()
   across every branded page and the marketing experience. Presentation only.
   (The former .ts-footer / .ts-standalone-footer rules above are now inert —
   no markup emits those classes.)
   ========================================================================== */
.ts-site-footer {
  background: #151a17;
  color: #e7e1d2;
  padding: clamp(22px, 3vw, 30px) clamp(20px, 4vw, 64px);
  font: 400 13px/1.55 var(--ts-font-body, "Helvetica Neue", Helvetica, Arial, sans-serif);
}
.ts-site-footer a { color: inherit; text-decoration: none; }
.ts-site-footer-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px 30px;
}
.ts-site-footer-brand {
  font-family: var(--ts-font-heading, Georgia, serif);
  font-size: clamp(16px, 1.5vw, 19px);
  letter-spacing: .01em;
  color: #f4f0e6;
}
.ts-site-footer-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 9px 22px;
  font-size: 12px;
}
.ts-site-footer-nav a,
.ts-site-footer-cookies {
  padding: 0;
  border: 0;
  background: transparent;
  color: rgba(231, 225, 210, .62);
  font: inherit;
  letter-spacing: .01em;
  cursor: pointer;
  transition: color .18s ease;
}
.ts-site-footer-nav a:hover,
.ts-site-footer-nav a:focus-visible,
.ts-site-footer-cookies:hover,
.ts-site-footer-cookies:focus-visible { color: #f4f0e6; }
.ts-site-footer-seo {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 18px;
  margin-top: 16px;
  font-size: 11px;
}
.ts-site-footer-seo a { color: rgba(231, 225, 210, .38); }
.ts-site-footer-seo a:hover,
.ts-site-footer-seo a:focus-visible { color: rgba(231, 225, 210, .72); }
.ts-site-footer-legal {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 6px 24px;
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid rgba(231, 225, 210, .14);
  font-size: 11px;
  color: rgba(231, 225, 210, .42);
}
.ts-experience .ts-site-footer { position: relative; z-index: 2; }

@media (max-width: 640px) {
  .ts-site-footer-bar { flex-direction: column; align-items: flex-start; gap: 12px; }
  .ts-site-footer-legal { flex-direction: column; gap: 4px; }
}
/* Clear the fixed mobile booking bars that sit over the foot of the home and
   property pages; other pages (checkout, portal) keep the tight padding. */
@media (max-width: 680px) {
  body:has(.ts-mobile-book) .ts-site-footer,
  body:has(.ts-listing-mobile-bookbar) .ts-site-footer {
    padding-bottom: calc(90px + env(safe-area-inset-bottom));
  }
}

/* ==========================================================================
   Complete-booking single-screen pass: the heading spans the full width above
   both columns (so the summary card never floats above it), guest details and
   payment share one card, and a countdown tells the guest how long their dates
   are held. Presentation only — quote, availability, hold and Stripe logic are
   untouched.
   ========================================================================== */
.ts-checkout-header { max-width:none; margin:0 0 14px; }
.ts-checkout-header h1 {
  max-width:22ch;
  margin:4px 0 0;
  font-size:clamp(26px, 2.4vw, 32px);
  line-height:1.08;
}
.ts-checkout-card {
  padding:clamp(20px, 2.2vw, 26px);
  border:1px solid rgba(21, 26, 23, .11);
  border-radius:16px;
  background:#fffdf9;
}
.ts-checkout-card .ts-embedded-checkout { margin-left:0; margin-right:0; }
.ts-checkout-layout { gap:clamp(28px, 3.2vw, 46px); }
.ts-checkout-summary > img { height:132px; }
.ts-checkout-summary-body { padding:18px; }
.ts-checkout-summary .ts-checkout-stay-meta { margin:10px 0 12px; }
.ts-checkout-summary .ts-checkout-price-lines { padding:12px 0; }
.ts-checkout-summary .ts-checkout-total { padding:12px 0; }
.ts-checkout-summary .ts-checkout-security { padding-top:12px; }

/* "Held for you" — a quiet, ticking pill next to the payment heading. Hidden
   until a hold actually exists; the countdown text is written by JS. */
.ts-checkout-hold {
  display:inline-flex;
  align-items:center;
  gap:6px;
  margin:-4px 0 12px;
  padding:5px 12px;
  border:1px solid rgba(31, 49, 40, .22);
  border-radius:999px;
  color:var(--ts-forest, #1f3128);
  background:#eef3ee;
  font-size:12px;
  font-weight:650;
  font-variant-numeric:tabular-nums;
}
.ts-checkout-hold[hidden] { display:none; }

@media (min-width:1025px) {
  .ts-checkout-layout { grid-template-columns:minmax(0,1fr) minmax(340px,390px); }
}
@media (max-width:767px) {
  .ts-checkout-header { margin-bottom:14px; }
  .ts-checkout-header h1 { max-width:none; font-size:clamp(24px, 6.4vw, 30px); }
  .ts-checkout-card { padding:18px; border-radius:16px; }
  /* The stay summary is a reminder, not a hero: cap it so the guest reaches
     the details and payment without scrolling past a full-bleed photo. */
  .ts-checkout-summary > img { height:132px; aspect-ratio:auto; object-fit:cover; }
  .ts-checkout-summary-body { padding:16px; }
  /* Keep the Stripe reassurance, just tighten it. */
  .ts-checkout-security { margin-top:12px; padding-top:12px; }
  .ts-checkout-security p { font-size:12px; line-height:1.5; }
  /* Tighten the summary so the guest reaches the details and payment sooner.
     Content is unchanged — only spacing and scale. */
  .ts-checkout-summary-body h2 { font-size:21px; }
  .ts-checkout-stay-meta { gap:2px; margin:8px 0 10px; font-size:14px; }
  .ts-checkout-price-lines { padding:10px 0; font-size:14px; }
  .ts-checkout-total { padding:10px 0; }
  .ts-checkout-total strong { font-size:21px; }
  .ts-checkout-edit { margin-top:12px; }
}

/* ==========================================================================
   Booking confirmation — one experience, two states. The processing state
   reuses the confirmed hero/grid exactly, so the webhook-driven reload is
   barely perceptible. Presentation only: fulfilment stays webhook-authoritative
   and this page never marks a booking paid or releases a hold.
   ========================================================================== */
.ts-confirmation-spinner {
  display: block;
  width: 26px;
  height: 26px;
  margin: 0 0 24px;
  border: 2px solid rgba(255,255,255,.26);
  border-top-color: #e3c39a;
  border-radius: 50%;
  animation: ts-confirm-spin .9s linear infinite;
}
@keyframes ts-confirm-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  .ts-confirmation-spinner { animation: none; border-top-color: rgba(255,255,255,.6); }
}
.ts-confirmation-hero.is-processing h1 { font-size: clamp(38px, 4.6vw, 60px); }
.ts-confirmation-hero.is-processing p[data-ts-processing-body] {
  max-width: 520px;
  margin: 0;
  color: rgba(255,255,255,.75);
  font-size: 17px;
  line-height: 1.55;
}
