/* The iframe changes height at each native step. Browser scroll anchoring must
   not preserve an old bottom-of-checkout anchor after our explicit top jump. */
html:has(.tr-booking-page) { overflow-anchor:none; scrollbar-gutter:stable; scroll-behavior:auto; }
.tr-booking-page { min-height:65svh; font-variant-numeric:lining-nums; font-feature-settings:'lnum' 1; }
.tr-booking-page > .tr-wrap { width:calc(100% - 32px); max-width:1440px; }
html.tr-booking-dialog-open,html.tr-booking-dialog-open body { overflow:hidden !important; overscroll-behavior:none; }
html:has(.tr-booking-search .tr-calendar:not([hidden])),html:has(.tr-booking-search .tr-calendar:not([hidden])) body { overflow:hidden !important; overscroll-behavior:none; }
.tr-booking-page.has-booking-dialog { position:relative; z-index:10000; }
.tr-booking-dialog-shade { position:fixed; inset:0; z-index:9999; background:rgb(30 26 24 / 58%); }
.tr-booking-dialog-shade[hidden] { display:none; }
.tr-booking-frame.is-dialog-open { position:relative; z-index:2; }
.tr-booking-head { padding-block:18px; display:flex; align-items:center; justify-content:space-between; gap:12px 24px; scroll-margin-top:110px; }
.tr-booking-head:focus { outline:none; }
.tr-booking-page.is-registered .tr-booking-head { padding-block:0; }
.tr-booking-page.is-registered .tr-booking-progress,.tr-booking-page.is-registered .tr-booking-current-stage { display:none; }
.tr-booking-page.is-registered .tr-booking-frame { min-height:480px; }
.tr-booking-contact { padding:20px 0 28px; text-align:center; }
.tr-booking-contact .tr-booking-help { margin:0; font:400 14px/1.6 Raleway,Arial,sans-serif; max-width:none; text-align:center !important; }
.tr-booking-retry { margin:0 0 20px; }
.tr-booking-retry[hidden] { display:none; }
.tr-booking-help a { color:inherit; }
.tr-booking-help a:hover { color:var(--tr-brand-red); }
.tr-booking-progress { min-width:0; }
.tr-booking-current-stage { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
.tr-subpage main .tr-booking-progress ol { display:flex; gap:10px 18px; padding:0; margin:0; list-style:none; }
.tr-booking-progress li { display:flex; align-items:center; gap:7px; color:var(--tr-muted); font:400 13px/1.4 Raleway,Arial,sans-serif; white-space:nowrap; }
.tr-booking-progress__number { display:grid; place-items:center; flex:none; width:25px; height:25px; border:1px solid var(--tr-edge); border-radius:50%; font-size:12px; }
.tr-booking-progress li[aria-current="step"] { color:var(--tr-ink); }
.tr-booking-progress li[aria-current="step"] .tr-booking-progress__number { color:#fff; border-color:var(--tr-brand-red); background:var(--tr-brand-red); }
.tr-booking-progress li.is-complete .tr-booking-progress__number { color:var(--tr-ink); background:var(--tr-gray); }
.tr-booking-shell { padding-bottom:40px; }
.tr-booking-fallback { font:400 13px/1.6 Raleway,Arial,sans-serif; }
.tr-booking-fallback[hidden] { display:none; }
.tr-booking-fallback a,.tr-booking-fallback button { padding:6px 0; border:0; background:none; color:var(--tr-ink); font:inherit; text-decoration:underline; text-underline-offset:.2em; cursor:pointer; }
.tr-booking-frame { display:block; width:100%; height:850px; min-height:480px; border:0; opacity:0; transition:opacity .15s; color-scheme:light; }
.tr-booking-frame.is-ready { opacity:1; }
.tr-booking-frame[hidden] { display:none; }
.tr-booking-status { margin:18px 0; padding:16px 20px; background:var(--tr-gray); font-size:.95rem; line-height:1.7; }
.tr-booking-status:empty { display:none; }
.tr-booking-status.is-loading { display:flex; align-items:center; gap:12px; color:var(--tr-muted); font:400 14px/1.6 Raleway,Arial,sans-serif; }
.tr-booking-status.is-loading::before { content:''; box-sizing:border-box; width:18px; height:18px; flex:none; border:2px solid var(--tr-edge); border-top-color:var(--tr-brand-red); border-radius:50%; animation:tr-booking-loading .8s linear infinite; }
@keyframes tr-booking-loading { to { transform:rotate(360deg); } }
@media(prefers-reduced-motion:reduce) { .tr-booking-status.is-loading::before { animation:none; } }
.tr-booking-necessary { margin-bottom:24px; }
.tr-booking-necessary[hidden] { display:none !important; }
.tr-booking-necessary:disabled { opacity:.55; cursor:wait; }
.tr-booking-noscript { padding:24px 0; }
.tr-booking-search { position:relative; display:grid; grid-template-columns:minmax(280px,1fr) 110px 90px minmax(200px,auto); gap:16px; align-items:end; margin:0 0 22px; padding:20px; background:var(--tr-gray); border-radius:6px; }
.tr-booking-search[hidden],.tr-booking-search-summary[hidden],.tr-booking-search-warning[hidden] { display:none; }
.tr-booking-search label { display:grid; gap:7px; color:var(--tr-muted); font:400 12px/1.4 Raleway,Arial,sans-serif; }
.tr-booking-search select { box-sizing:border-box; width:100%; min-height:46px; border:1px solid #c7beb7; border-radius:3px; background:#fff; color:var(--tr-ink); padding:8px 30px 8px 12px; font:400 16px/1.4 Raleway,Arial,sans-serif; }
.tr-booking-search select { appearance:none; -webkit-appearance:none; padding-right:38px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23302b28' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m7 10 5 5 5-5'/%3E%3C/svg%3E"); background-position:right 11px center; background-size:18px; background-repeat:no-repeat; cursor:pointer; }
@media(forced-colors:active) { .tr-booking-search select { appearance:auto; background-image:none; } }
.tr-booking-dates { display:grid; grid-template-columns:1fr auto 1fr; gap:12px; align-items:end; min-width:0; }
.tr-booking-dates button { position:relative; display:grid; text-align:left; gap:7px; background:transparent; border:0; padding:0; color:var(--tr-ink); font:400 16px/1.4 Raleway,Arial,sans-serif; cursor:pointer; }
.tr-booking-dates button small { color:var(--tr-muted); font:400 12px/1.4 Raleway,Arial,sans-serif; }
.tr-booking-dates button span { display:block; min-height:46px; padding:12px 0 9px; border-bottom:1px solid #a99d94; }
.tr-booking-dates button svg { position:absolute; right:0; top:0; color:var(--tr-muted); }
.tr-booking-date-arrow { align-self:end; padding-bottom:12px; color:var(--tr-muted); }
.tr-booking-search .tr-booking-search-submit { justify-content:space-between; gap:16px; min-height:46px; padding:12px 16px; font:500 14px/1.4 Raleway,Arial,sans-serif; text-transform:none; letter-spacing:0; }
.tr-booking-search-warning,.tr-booking-search-error { grid-column:1/-1; margin:0; font:400 13px/1.6 Raleway,Arial,sans-serif; }
.tr-booking-search-error { color:#a31f1f; }
.tr-booking-search-error:empty { display:none; }
.tr-booking-search-summary { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px 18px; margin-bottom:20px; background:var(--tr-gray); font:400 14px/1.6 Raleway,Arial,sans-serif; }
.tr-booking-search-summary button { padding:8px 0; border:0; background:none; color:var(--tr-ink); font:inherit; text-decoration:underline; text-underline-offset:3px; white-space:nowrap; cursor:pointer; }
.tr-booking-search-summary [data-booking-search-label] { display:flex; flex-wrap:wrap; gap:4px 18px; }
.tr-booking-search-summary [data-booking-summary-dates],.tr-booking-search-summary [data-booking-summary-guests] { white-space:nowrap; }
/* This shared calendar belongs to the website, not the tall supplier iframe. */
.tr-booking-search .tr-calendar { position:fixed; z-index:300; inset:50% auto auto 50%; transform:translate(-50%,-50%); width:min(650px,calc(100vw - 24px)); max-height:calc(100svh - 32px) !important; padding:20px; margin:0; border:1px solid var(--tr-edge); border-radius:8px; box-shadow:0 0 0 100vmax #302b2866,0 16px 60px #302b2826; overscroll-behavior:contain; }
.tr-booking-calendar-title { display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; font:400 20px/1.3 Georgia,serif; }
.tr-booking-calendar-title button { display:grid; place-items:center; width:40px; height:40px; border:0; background:var(--tr-gray); color:var(--tr-ink); border-radius:50%; font:400 26px/1 Arial,sans-serif; cursor:pointer; }
.tr-booking-search .tr-calendar__close { min-height:46px; margin-top:16px; padding:12px; font:500 14px/1.5 Raleway,Arial,sans-serif; text-transform:none; letter-spacing:0; }
.tr-booking-search .tr-calendar__nights { font-weight:400; font-size:12px; }
.tr-booking-search .tr-calendar__month-title { font-size:17px; }
.tr-booking-search .tr-calendar__days button { font-family:Raleway,Arial,sans-serif; font-size:14px; font-weight:400; font-variant-numeric:lining-nums; font-feature-settings:'lnum' 1; }
@media(max-width:1050px) {
  .tr-booking-head { flex-wrap:wrap; }
  .tr-booking-progress { width:100%; }
  .tr-subpage main .tr-booking-progress ol { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); }
  .tr-booking-progress li { flex-direction:column; text-align:center; white-space:normal; font-size:12px; }
  .tr-booking-help { width:100%; max-width:none; text-align:center; }
  .tr-booking-search { grid-template-columns:minmax(250px,1fr) 90px 80px; }
  .tr-booking-search-submit { grid-column:1/-1; }
}
@media(max-width:767px) {
  .tr-booking-page > .tr-wrap { width:calc(100% - 24px); max-width:none; }
  .tr-booking-head { display:grid; grid-template-columns:minmax(0,1fr); padding-block:12px; gap:10px; }
  .tr-booking-progress { width:100%; }
  .tr-subpage main .tr-booking-progress ol { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; }
  .tr-booking-progress li { justify-content:center; flex-direction:row; font-size:12px; padding:0; }
  .tr-booking-progress .tr-booking-progress__label { display:none; }
  .tr-booking-progress__number { width:29px; height:29px; }
  .tr-booking-current-stage { position:static; width:auto; height:auto; overflow:visible; clip-path:none; grid-row:2; text-align:center; font:500 15px/1.5 Raleway,Arial,sans-serif; }
  .tr-subpage main .tr-booking-help { margin:0; font-size:12px; text-align:right; }
  .tr-booking-help a { display:inline-block; white-space:nowrap; }
  .tr-booking-frame { min-height:560px; }
  .tr-booking-shell { padding-bottom:20px; }
  .tr-booking-page > .tr-booking-shell { width:calc(100% - 12px); }
  .tr-booking-search { grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:12px; padding:12px; margin-bottom:12px; }
  .tr-booking-dates { grid-column:1/-1; gap:10px; }
  .tr-booking-search .tr-booking-search-submit { grid-column:1/-1; }
  .tr-booking-search-summary { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px; padding:10px 12px; margin-bottom:12px; font-size:12px; }
  .tr-booking-search-summary [data-booking-search-label] { display:grid; gap:3px; }
  .tr-booking-search-summary button { font-size:12px; }
  .tr-booking-search .tr-calendar { padding:14px; }
  .tr-booking-search .tr-calendar__days button { min-height:36px; }
  .tr-booking-search .tr-calendar__month + .tr-calendar__month { display:none; }
  .tr-booking-search .tr-calendar__months { grid-template-columns:1fr; }
}
/* On the narrowest phones the supplier already provides its own card gutter.
   Avoid a second outer gutter that would squeeze prices into the book button. */
@media(max-width:360px) {
  .tr-booking-page > .tr-booking-shell { width:100%; }
}

/* Completed native searches only; loading and unknown adapter states stay neutral. */
.tr-booking-result { margin:16px 0 24px; padding:24px; background:var(--tr-gray,#f4f3f2); border:1px solid #c4c4c4; border-radius:6px; }
.tr-booking-result[hidden] { display:none; }
.tr-booking-result h2 { margin:0 0 10px; font:600 20px/1.4 Raleway,Arial,sans-serif; }
.tr-booking-result p { max-width:780px; margin:0 0 20px; font:400 15px/1.6 Raleway,Arial,sans-serif; }
.tr-booking-result__actions { display:flex; flex-wrap:wrap; gap:12px; }
.tr-booking-result__actions > * { min-height:44px; }
@media(max-width:600px) { .tr-booking-result { padding:18px; } .tr-booking-result__actions > * { flex:1 1 180px; text-align:center; justify-content:center; } }
