/* Shared booking and campaign pricing. */
[data-price-old][hidden],[data-price-saving][hidden],[data-promo-remove][hidden]{display:none!important}
.booking-form label{display:block;margin:0 0 8px;font-size:12px;font-weight:700;line-height:1.4}
.booking-form .request-fields{display:grid;grid-template-columns:1fr;gap:18px}
.booking-form .promo-input input{border:0;border-radius:0;background:transparent;padding:15px 16px}
.booking-form .promo-input button{border:0;font-size:13px;font-weight:700;color:#fff;background:#009ba4;padding:12px 16px}
.booking-form .promo-input button:hover{background:#008d96}
.promo-feedback{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:0 12px;height:50px}
.booking-form [data-promo-status]{font-size:12px;line-height:1.6;color:#28746b;margin:8px 0 0;min-height:0}
.booking-form [data-promo-status]:empty{display:none}
.booking-form [data-promo-status].is-error{color:#a04842}
.booking-form .remove-code{font-size:11px;margin-top:8px;white-space:nowrap}
.booking-price{margin-top:22px;padding:18px 0;border-top:1px solid #cfdbd6;border-bottom:1px solid #cfdbd6;display:grid;grid-template-columns:1fr auto;align-items:center;gap:7px 16px;transition:color .2s}
.booking-price-label{font-size:14px;font-weight:600;line-height:1.4}
.booking-price-label>span{display:block;font-size:11px;font-weight:400;color:var(--muted);margin-top:4px}
.booking-price-amount{text-align:right;line-height:1.15}
.booking-price-amount s{display:block;font-size:14px;font-weight:400;color:#7a8b8e;margin-bottom:5px}
.booking-price-amount strong{font-size:30px;font-weight:700;letter-spacing:-.055em;white-space:nowrap}
.booking-price.is-special .booking-price-amount strong{color:#00818a}
.booking-price-saving{grid-column:1/-1;justify-self:end;color:#007e79;background:#deeee6;padding:3px 9px;border-radius:100px;font-size:11px;font-weight:600}
.booking-form .request-bottom{margin-top:22px;display:flex;justify-content:center}
.booking-form .request-submit{margin:0;width:auto;min-width:0;max-width:100%;padding:19px 26px;font-size:15px;font-weight:700;line-height:1.55;justify-content:center;align-items:center;gap:18px;opacity:1;cursor:default;border:0;color:#fff;background:#009ba4}
.price-card .price-value s{display:block;font-size:20px;letter-spacing:0;line-height:1.4;color:#819194;font-weight:400;margin-bottom:5px}
.overview-price s{display:block;font-size:15px;font-weight:400;letter-spacing:0;line-height:1.5;color:#7c8f91;margin-bottom:4px}
/* Native dialog supplies the focus trap and inert background. */
html{scrollbar-gutter:stable}
html.booking-modal-open{overflow:hidden}
.booking-modal{padding:0;border:0;border-radius:28px;width:min(930px,calc(100vw - 48px));max-width:none;max-height:calc(100dvh - 40px);margin:auto;background:#fff;color:var(--ink);box-shadow:0 32px 100px #071f3550;overflow:hidden}
.booking-modal::backdrop{background:rgba(9,31,37,.62);backdrop-filter:blur(8px)}
.booking-modal[open]{animation:booking-appear .24s ease-out}
.booking-modal-layout{display:grid;grid-template-columns:.78fr 1.22fr;max-height:calc(100dvh - 40px)}
.modal-close{position:absolute;right:14px;top:14px;z-index:3;width:34px;height:34px;padding:8px;border:0;border-radius:50%;color:var(--ink);background:#eff3ef;display:grid;place-items:center;transition:background .2s}
.modal-close svg{width:18px;height:18px}
.modal-close:hover{background:#dfe9e5}
.booking-modal-story{position:relative;isolation:isolate;overflow:hidden;background:#faf7ee;padding:30px 28px;min-height:610px}
.modal-brand{display:block;width:100px;height:auto}
.modal-wordmark{font-size:53px;font-weight:700;letter-spacing:-.065em;line-height:1;margin-top:32px;color:#389fa6}
.booking-modal-story>p{position:relative;z-index:1;font-size:18px;line-height:1.5;letter-spacing:-.025em;margin-top:18px;max-width:270px}
.booking-modal-story>p strong{font-weight:600}
.modal-people{position:absolute;bottom:0;left:0;width:100%;height:calc(100% - 240px);object-fit:cover;object-position:55% 80%;z-index:-1;mask-image:linear-gradient(transparent,#000 14%);-webkit-mask-image:linear-gradient(transparent,#000 14%)}
.booking-modal-content{padding:32px 36px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
.booking-modal-heading{padding-right:25px}
.booking-modal-heading>.eyebrow{font-size:9px;color:#688587;letter-spacing:.12em}
.booking-modal-heading h2{font-size:32px;line-height:1.1;letter-spacing:-.045em;margin:12px 0 10px;outline:none}
.booking-modal-heading>p{font-size:14px;line-height:1.65;color:var(--muted);max-width:375px}
.booking-modal .booking-form{margin-top:24px}
.booking-modal .request-fields{grid-template-columns:1fr 1fr;gap:16px}
.booking-modal .booking-email-field,.booking-modal .booking-promo-field{grid-column:1/-1}
.booking-modal .request-fields input{padding:12px 13px;font-size:14px}
.booking-modal .promo-input input{padding:12px 13px}
.booking-modal .booking-price{margin-top:19px;padding:15px 0}
.booking-modal .booking-form .request-bottom{margin-top:20px}
.booking-modal .booking-form .request-submit{padding:17px 25px;font-size:14px;gap:17px}
@keyframes booking-appear{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}
/* Compact, deliberate footer groups. */
.footer-legal{display:grid;grid-template-columns:1.4fr 1fr .9fr;gap:28px;padding-top:27px;margin-top:30px;font-size:14px;line-height:1.8}
.footer-legal-group{min-width:0}
.footer-legal-group>h3{font-size:10px;line-height:1.5;font-weight:500;color:#7e9da1;letter-spacing:.1em;text-transform:uppercase;margin:0 0 10px}
.footer-legal .footer-legal-group>p{display:block;margin:0;line-height:1.8}
.footer-contacts a{display:block;width:fit-content}
.footer .warning{margin-top:28px}
.footer-end{margin-top:26px}
@media(max-width:1100px){.footer-legal{font-size:13px;gap:22px}.footer-legal .footer-legal-group>p{display:block}}
@media(max-width:700px){
 .booking-form .request-submit{font-size:13px;padding:17px 23px;gap:14px}
 .booking-price-amount strong{font-size:28px}
 .booking-modal{width:calc(100vw - 24px);max-height:calc(100dvh - 24px);border-radius:22px}
 .booking-modal-layout{display:block;max-height:calc(100dvh - 24px)}
 .booking-modal-story{display:none}
 .booking-modal-content{max-height:calc(100dvh - 24px);padding:29px 23px 25px}
 .booking-modal-heading h2{font-size:29px}
 .booking-modal-heading>p{font-size:13px}
 .booking-modal .request-fields{grid-template-columns:1fr;gap:15px}
 .booking-modal .booking-form{margin-top:21px}
 .booking-modal .booking-form .request-submit{font-size:13px;padding:16px 23px}
 .modal-close{right:11px;top:11px}
 .booking-form .promo-input button{font-size:12px;padding:10px 12px}
 .footer-legal{grid-template-columns:1fr 1fr;gap:25px 20px}
 .footer-legal-group:first-child{grid-column:1/-1}
}
@media(max-width:370px){.footer-legal{grid-template-columns:1fr}.footer-legal-group:first-child{grid-column:auto}.booking-modal-content{padding-left:18px;padding-right:18px}}
@media(prefers-reduced-motion:reduce){.booking-modal[open]{animation:none}.booking-price{transition:none}}
/* Keep both people fully visible even when the form has no promo feedback. */
.modal-people{object-fit:contain;object-position:center bottom;mask-image:none;-webkit-mask-image:none}
@media(min-width:701px) and (max-height:760px){
 .booking-modal-content{padding:25px 32px}
 .booking-modal .booking-form{margin-top:19px}
 .booking-modal .request-fields{gap:13px}
 .booking-modal .booking-price{margin-top:16px;padding:12px 0}
 .booking-modal .booking-form .request-bottom{margin-top:17px}
 .booking-modal .booking-form .request-submit{padding:15px 24px}
}

/* Immersive desktop photo with a dark scrim behind the brand and copy. */
.booking-modal-story{background:#254348;color:#fff}
.booking-modal-story::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(10,31,37,.86) 0%,rgba(10,31,37,.69) 34%,rgba(10,31,37,.12) 64%,rgba(10,31,37,.12) 100%);pointer-events:none}
.modal-people{inset:0;width:100%;height:100%;max-height:none;object-fit:cover;object-position:58% center;z-index:-2;mask-image:none;-webkit-mask-image:none}
.modal-wordmark{color:#bef2ed}
.booking-modal-story>p,.booking-modal-story>p strong{font-weight:400}
.booking-modal-heading>p{max-width:none;white-space:nowrap}
@media(min-width:701px) and (max-width:1000px){.booking-modal-layout{grid-template-columns:.65fr 1.35fr}.booking-modal-heading>p{font-size:12px}}
@media(max-width:700px){.booking-modal-heading>p{white-space:normal}}

/* Stable campaign slots prevent the dialog and the fields from moving. */
.booking-price [data-price-old][hidden]{display:block!important;visibility:hidden;opacity:0}
.booking-price [data-price-saving][hidden]{display:inline-block!important;visibility:hidden;opacity:0}
.booking-price [data-price-old],.booking-price [data-price-saving]{transition:opacity .2s ease;opacity:1}
.booking-price [data-price-current]{transition:color .2s ease}
.booking-form.has-promo .booking-price [data-price-current]{animation:price-appear .22s ease-out}
.coupon{transition:background-color .2s ease,border-color .2s ease}
@keyframes price-appear{from{opacity:.25}to{opacity:1}}
.booking-modal-story>p{position:absolute;left:28px;right:28px;bottom:30px;max-width:none;margin:0;z-index:1}
.booking-modal-story::before{background:linear-gradient(180deg,rgba(10,31,37,.62),rgba(10,31,37,.13) 36%,rgba(10,31,37,.08) 55%,rgba(10,31,37,.85) 100%)}
@media(min-width:701px) and (max-width:1000px){.booking-modal-content{padding-left:26px;padding-right:26px}.booking-modal-heading{padding-right:0}}
@media(prefers-reduced-motion:reduce){.booking-form.has-promo .booking-price [data-price-current]{animation:none}.booking-price [data-price-old],.booking-price [data-price-saving],.booking-price [data-price-current],.coupon{transition:none}}

/* Other price summaries reserve their previous-price line as well. */
.overview-price [data-price-old][hidden],.price-value [data-price-old][hidden]{display:block!important;visibility:hidden}
.price-card .price-promo{min-height:calc(3.2em + 24px)}
@media(min-width:701px) and (max-width:1100px){.price-card .price-promo{min-height:calc(4.8em + 24px)}}
