.booking-section { padding-top:32px; padding-bottom:56px; scroll-margin-top:112px; }
.booking-title { font:700 clamp(2rem,4vw,3rem)/1.1 Georgia,serif; color:var(--brand-primary); margin:0 0 10px; }
.booking-result-summary { color:color-mix(in srgb,var(--brand-primary) 70%,#333); margin:0; }
.booking-progress { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:0; max-width:780px; margin:0 auto 22px; }
.booking-progress > * { position:relative; display:flex; flex-direction:column; align-items:center; gap:5px; min-width:0; padding:0; border:0; background:none; color:var(--brand-primary); font:inherit; text-align:center; }
.booking-progress button:not(:disabled) { cursor:pointer; }
.booking-progress > *:not(:last-child)::after { content:""; position:absolute; top:18px; left:calc(50% + 24px); width:calc(100% - 48px); height:2px; background:color-mix(in srgb,var(--brand-primary) 19%,white); }
.booking-progress > [data-status="complete"]:not(:last-child)::after { background:var(--brand-primary); }
.booking-step-circle { display:grid; place-items:center; width:38px; height:38px; border-radius:50%; background:color-mix(in srgb,var(--brand-primary) 11%,white); color:color-mix(in srgb,var(--brand-primary) 55%,#555); font-size:.95rem; font-weight:750; }
.booking-progress [data-status="active"] .booking-step-circle,.booking-progress [data-status="complete"] .booking-step-circle { background:var(--brand-primary); color:#fff; }
.booking-step-label { font-size:.82rem; font-weight:700; color:color-mix(in srgb,var(--brand-primary) 58%,#444); }
.booking-progress [data-status="active"] .booking-step-label { color:var(--brand-primary); }
.booking-progress > :focus-visible { outline:3px solid var(--brand-accent); outline-offset:4px; }
.booking-panel { background:#fff; padding:26px; border:1px solid #dce5e8; border-radius:18px; box-shadow:0 10px 32px #18313b08; }
.booking-results { display:grid; gap:18px; margin-top:16px; }
.booking-offer { display:grid; grid-template-columns:240px minmax(0,1fr); overflow:hidden; padding:0; }
.booking-offer img { width:100%; height:100%; min-height:220px; object-fit:cover; }
.booking-offer-copy { padding:22px; }
.booking-offer h4 { margin:0 0 8px; font:700 1.6rem Georgia,serif; color:var(--brand-primary); }
.booking-offer .room-amenities { margin-bottom:14px; }
.booking-price { margin:12px 0; display:flex; align-items:baseline; justify-content:space-between; flex-wrap:wrap; gap:8px; }
.booking-price strong { font-size:1.4rem; color:var(--brand-primary); }
.booking-actions { display:flex; flex-wrap:wrap; gap:12px; align-items:center; }
.booking-actions button { cursor:pointer; }
.booking-actions button:disabled { opacity:.5; cursor:not-allowed; }
.booking-link { color:var(--brand-primary); background:none; border:0; font:inherit; text-decoration:underline; cursor:pointer; padding:8px 0; }
.booking-criteria-summary { display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; margin:0 0 16px; color:color-mix(in srgb,var(--brand-primary) 70%,#333); }
.booking-review { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr); gap:24px; align-items:start; }
.booking-guest { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.booking-guest label { display:grid; gap:6px; font-size:.9rem; font-weight:650; }
.booking-guest input { width:100%; min-width:0; min-height:48px; border:1px solid #c9d7dc; border-radius:10px; padding:10px; background:#fff; color:#18313b; font:inherit; }
.booking-guest .booking-wide { grid-column:1/-1; }
.booking-guest .button { cursor:pointer; min-height:48px; }
.booking-guest .booking-agreement { display:flex; align-items:start; font-weight:400; }
.booking-agreement input { width:20px; min-height:20px; margin-top:4px; flex-shrink:0; }
.booking-summary dl { display:grid; grid-template-columns:1fr auto; gap:10px; }
.booking-summary dd { margin:0; text-align:right; }
.booking-summary .booking-total { border-top:1px solid #dce5e8; padding-top:12px; font-weight:800; font-size:1.2rem; }
.booking-confirmation { max-width:680px; margin:auto; text-align:center; }
.booking-success { display:grid; place-items:center; width:64px; height:64px; border-radius:50%; background:color-mix(in srgb,var(--brand-primary) 12%,white); color:var(--brand-primary); margin:0 auto 20px; font-size:2rem; }
.booking-confirmation .booking-summary { text-align:left; }
#booking-error { margin:0 0 20px; padding:14px; border:1px solid #e4b5ae; border-radius:10px; background:#fff4f2; color:#a53526; }
.booking-entry { position:sticky; top:0; z-index:5; padding:12px 24px; background:#fffffff5; border-bottom:1px solid #dce5e8; }
.booking-entry[hidden] { display:none; }
.booking-entry form { max-width:1100px; margin:auto; display:grid; grid-template-columns:minmax(155px,1fr) minmax(155px,1fr) minmax(195px,1.25fr) auto; align-items:end; gap:12px; }
.booking-entry label { display:grid; gap:4px; min-width:0; font-size:.85rem; font-weight:650; }
.booking-entry input { width:100%; min-width:0; min-height:44px; padding:8px; border:1px solid #c9d7dc; border-radius:8px; font:inherit; }
.booking-entry .button { min-height:44px; cursor:pointer; white-space:nowrap; }
.booking-guest-room { position:relative; min-width:0; }
.booking-guest-room summary { display:grid; gap:2px; min-height:44px; padding:5px 12px; border:1px solid #c9d7dc; border-radius:8px; cursor:pointer; font-size:.76rem; font-weight:700; line-height:1.15; }
.booking-guest-room summary::marker { color:var(--brand-primary); }
.booking-guest-room summary span { font-size:.88rem; font-weight:500; white-space:nowrap; }
.booking-guest-room-fields { position:absolute; top:calc(100% + 6px); left:0; z-index:8; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; width:max(240px,100%); padding:16px; border:1px solid #dce5e8; border-radius:12px; background:#fff; box-shadow:0 15px 35px #18313b26; }
.booking-guest-room:not([open]) .booking-guest-room-fields { display:none; }
.booking-children-field[hidden] { display:none; }
body:has(dialog[open]) .booking-entry { visibility:hidden; }
@media(max-width:760px) {
 .booking-section { padding:24px 16px 40px; scroll-margin-top:160px; }
 .booking-panel { padding:20px; }
 .booking-review { grid-template-columns:1fr; }
 .booking-offer { grid-template-columns:1fr; padding:0; }
 .booking-offer img { height:210px; }
 .booking-entry { padding:9px 12px; }
 .booking-entry form { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
 .booking-entry .button { padding:8px 10px; white-space:normal; }
 .booking-guest-room-fields { right:0; left:auto; }
 .booking-progress { margin-bottom:18px; }
 .booking-step-circle { width:34px; height:34px; }
 .booking-progress > *:not(:last-child)::after { top:16px; left:calc(50% + 21px); width:calc(100% - 42px); }
 .booking-step-label { font-size:.75rem; }
}
@media(max-width:390px) { .booking-guest { grid-template-columns:1fr; } .booking-guest-room-fields { width:min(260px,calc(100vw - 24px)); } }
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } }
.booking-offer[data-preferred="true"] { border-color:var(--brand-primary); box-shadow:0 0 0 2px var(--brand-secondary); }
