@font-face{font-family:"Sora";src:url("fonts/Sora-Regular.ttf") format("truetype");font-weight:400;font-display:swap}@font-face{font-family:"Host Grotesk";src:url("fonts/HostGrotesk-Medium.ttf") format("truetype");font-weight:500;font-display:swap}
/* MOV-1.5.16-014: guest journey, shared front palette and typography. */
.booking-shell{box-sizing:border-box;width:min(1120px,calc(100% - 48px));margin:48px auto 80px;color:var(--ch-text,#0b3f3d);font-family:"Sora",Arial,sans-serif;overflow-wrap:anywhere}.booking-shell *{box-sizing:border-box}.booking-shell h1,.booking-shell h2,.booking-shell h3{font-family:"Host Grotesk",Arial,sans-serif;letter-spacing:-.045em;font-weight:500;line-height:1.08}.booking-shell h1{font-size:clamp(2.8rem,6vw,5.3rem);margin:18px 0 24px;max-width:850px}.booking-shell h2{font-size:clamp(1.8rem,3.4vw,2.8rem);margin:12px 0}.booking-shell h3{font-size:1.8rem;margin:12px 0 22px}.booking-shell p{line-height:1.8}.booking-intro{margin-bottom:36px;max-width:780px}.booking-intro>p{font-size:.95rem;max-width:620px;color:var(--ch-text-secondary,#637570)}.booking-kicker{display:block;font-size:.65rem;font-weight:600;letter-spacing:.18em;color:var(--ch-primary,#2a9d8f)}
.booking-glass{min-width:0;padding:clamp(22px,4vw,40px);border-radius:30px;border:1px solid var(--ch-border,#d5dcd2);background:linear-gradient(130deg,color-mix(in srgb,var(--ch-surface-1,#fffaf0) 91%,transparent),color-mix(in srgb,var(--ch-primary,#2a9d8f) 9%,var(--ch-surface-1,#fffaf0)));box-shadow:inset 1px 1px #ffffff9c,0 18px 55px #0b4b3f0b;backdrop-filter:blur(18px);margin-bottom:24px}.booking-selection{position:relative;overflow:hidden;border-left:4px solid var(--ch-primary,#2a9d8f)}.booking-selection::after{content:"";position:absolute;width:200px;height:200px;right:-100px;top:-100px;border-radius:50%;border:1px solid #c9a15166;pointer-events:none}
.booking-steps{display:flex;flex-wrap:wrap;gap:10px;list-style:none;padding:0;margin-top:30px;counter-reset:journey}.booking-steps li{counter-increment:journey;font-size:.7rem;padding:10px 14px;border:1px solid var(--ch-border,#d5dcd2);border-radius:40px;background:var(--ch-surface-1,#fffaf0)}.booking-steps li::before{content:counter(journey) "  ";color:var(--ch-primary,#2a9d8f);margin-right:5px}.booking-steps .is-current{box-shadow:inset 0 0 0 1px var(--ch-primary,#2a9d8f)}
.booking-confirm-form{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:0 24px;align-items:start}.booking-contact{grid-row:1/3}.booking-summary{grid-column:2;grid-row:1/4}.booking-promotion{grid-column:1;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:end}.booking-contact-fields{display:grid;gap:22px}.booking-shell label{display:grid;gap:10px;font-size:.77rem;font-weight:500}.booking-shell input:not([type=hidden]){width:100%;min-width:0;min-height:52px;border-radius:16px;border:1px solid var(--ch-border,#d5dcd2);background:var(--ch-surface-1,#fffaf0);padding:14px 16px;color:var(--ch-text,#0b3f3d);font:inherit;font-size:16px}.booking-shell input:focus-visible{outline:2px solid var(--ch-primary,#2a9d8f);outline-offset:3px}.booking-shell .guest-button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;border-radius:50px;padding:15px 26px;font:500 .8rem "Sora",Arial,sans-serif;background:var(--ch-primary,#2a9d8f);border:1px solid transparent;color:#fff;text-decoration:none;cursor:pointer;box-shadow:0 8px 24px #2a9d8f21}.booking-shell .guest-button.secondary{background:transparent;border-color:var(--ch-border,#b9d7c9);color:var(--ch-text,#0b3f3d);box-shadow:inset 1px 1px #ffffff66}.booking-shell button:disabled{opacity:.55;cursor:wait}.booking-confirm-form>[data-checkout-feedback],.booking-confirm{grid-column:1/-1}.booking-confirm{justify-self:end;min-width:260px}
.booking-shell dl{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:16px 20px;font-size:.8rem;line-height:1.7}.booking-shell dt{color:var(--ch-text-secondary,#637570)}.booking-shell dd{margin:0;text-align:right}.booking-shell .price{display:block;border-top:1px solid var(--ch-border,#d5dcd2);padding-top:24px;margin-top:26px;font:500 clamp(1.8rem,4vw,2.8rem) "Host Grotesk",Arial,sans-serif;letter-spacing:-.04em}.booking-summary>p:not(.price){font-size:.75rem}.booking-shell .notice,.booking-test-note{padding:18px 22px;border-radius:20px;background:color-mix(in srgb,var(--ch-primary,#2a9d8f) 9%,var(--ch-surface-1,#fffaf0));border:1px solid var(--ch-border,#d5dcd2);font-size:.8rem;line-height:1.7}.booking-receipt{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:0 24px}.booking-receipt>.booking-intro,.booking-receipt>.notice,.booking-receipt-actions,.booking-card-payment{grid-column:1/-1}.booking-trip{grid-row:3/6}.booking-conditions{font-size:.75rem}.booking-receipt-actions{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:28px}.booking-card-payment{max-width:680px;width:100%;justify-self:center;margin-top:26px}.booking-card-payment h2{max-width:530px}.booking-card-fields{margin-top:24px;display:grid;gap:20px}.booking-card-fields[hidden]{display:none}.booking-hosted-field{height:56px;min-width:0;border:1px solid var(--ch-border,#cbd6ca);border-radius:16px;padding:0;background:var(--ch-surface-1,#fffaf0)}.booking-hosted-field>div{height:100%!important;min-width:0}.booking-hosted-field iframe[title^="paypal_card_"],.booking-hosted-field iframe[title^="prerender__paypal_card_"]{display:block;height:100%!important;width:100%!important;border:0}.booking-hosted-field:focus-within,.booking-hosted-field.card-is-focused{border-color:var(--ch-primary,#2a9d8f);box-shadow:0 0 0 1px var(--ch-primary,#2a9d8f)}.booking-field-pair{display:grid;align-items:end;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}.booking-payment-feedback{font-size:.8rem}.booking-secure-note{font-size:.65rem;color:var(--ch-text-secondary,#637570);text-align:center}
body[data-app=guest] #availability .room-availability{border-radius:30px;background:linear-gradient(135deg,var(--ch-surface-1,#fffaf0),color-mix(in srgb,var(--ch-primary,#2a9d8f) 8%,var(--ch-bg,#f6f0e7)));box-shadow:inset 1px 1px #ffffff77,0 18px 55px #0b4b3f0b;border:1px solid var(--ch-border,#d5dcd2);padding:clamp(18px,3vw,30px)}body[data-app=guest] #availability .room-photo-strip img{border-radius:18px}body[data-app=guest] #availability .room-selection .guest-button{border-radius:40px;font-family:"Sora",Arial,sans-serif}
@media(max-width:740px){.booking-shell{width:calc(100% - 32px);margin:30px auto 50px}.booking-glass{border-radius:25px;padding:24px}.booking-confirm-form,.booking-receipt{display:block}.booking-confirm{width:100%;min-width:0}.booking-contact-fields{gap:20px}.booking-promotion{grid-template-columns:1fr}.booking-receipt-actions{display:grid;grid-template-columns:1fr 1fr}.booking-receipt-actions .guest-button{padding:14px 12px;font-size:.7rem}.booking-shell dl{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:14px;font-size:.75rem}.booking-shell h1{font-size:clamp(2.6rem,11vw,4rem)}.booking-steps{gap:7px}.booking-steps li{padding:9px 11px;font-size:.63rem}}
@media(prefers-reduced-motion:reduce){.booking-shell *{scroll-behavior:auto}}

.booking-shell .guest-button.secondary{color:var(--ch-text,#0b3f3d)!important}

/* MOV-1.5.17-010: the secure SDK owns its input; the host supplies exactly one border. */
.booking-card-fields>label,.booking-field-pair>label{display:flex;flex-direction:column;gap:10px;min-width:0;margin:0}.booking-payment-feedback:empty{display:none}

/* MOV-1.5.18-021: invalid SDK fields retain one rounded boundary. */
.booking-hosted-field.card-is-invalid{border-color:#b64139;box-shadow:0 0 0 1px #b64139}

/* MOV-1.5.35-002 */
.selection-count-bubble{display:inline-block;padding:10px 16px;border:1px solid var(--ch-border);border-radius:18px;background:var(--ch-surface-1);box-shadow:0 6px 20px #124f4215;font-size:.85rem}.booking-access-choice{display:flex;flex-wrap:wrap;gap:12px}

/* MOV-1.5.56-006: the SDK and its rounded host share the same readable surface in both themes. */
body[data-app=guest] .booking-hosted-field{background:#fffaf3;color:#0f4c3a;color-scheme:light;overflow:hidden}
