/* Public booking: reference composition, isolated from the partner dialog. */
#bookingDialog.booking-reference{--booking-ink:#10253d;--booking-muted:#78869b;--booking-line:#e6eef3;--booking-accent:#087b95;width:min(1576px,100%);height:min(998px,100dvh);max-width:100%;max-height:100dvh;padding:0;border:0;border-radius:0;background:#076d89}
#bookingDialog.booking-reference .dialog-shell{position:relative;grid-template-columns:36% minmax(0,64%);grid-template-rows:126px minmax(0,1fr);padding:0 32px 38px 0;background:linear-gradient(90deg,rgba(0,29,47,.12),transparent 40%,rgba(219,247,253,.2)),url('../img/booking-ocean.png?v=2') center/cover;overflow:hidden}
#bookingDialog.booking-reference .booking-topbar{grid-row:1;padding:20px 22px 20px 54px;background:transparent;border:0;align-items:center}
#bookingDialog.booking-reference .booking-topbar__brand{width:280px;gap:0}
#bookingDialog.booking-reference .booking-topbar__brand .brand-logo{width:280px;max-width:100%}
#bookingDialog.booking-reference .booking-topbar__brand>strong{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);border:0;padding:0}
#bookingDialog.booking-reference .booking-topbar__tools{margin-left:auto}
#bookingDialog.booking-reference .booking-explore{color:#407b9a;font-size:13px;letter-spacing:.27em;line-height:1.8;text-align:right;padding-right:36px}
#bookingDialog.booking-reference .dialog-close{position:absolute;right:12px;top:12px;width:36px;height:36px;min-width:36px;border:1px solid #bdd4df;background:#ffffffb8;color:#174360;border-radius:50%;padding:8px}
#bookingDialog.booking-reference .booking-dialog__side{display:flex;grid-row:2;padding:0 40px 0 56px;background:none;overflow:hidden;justify-content:flex-end}
#bookingDialog.booking-reference .booking-dialog__side h2{font-size:clamp(36px,3.55vw,57px);font-weight:750;line-height:1.22;letter-spacing:-.05em;white-space:pre-line;text-shadow:0 2px 14px #00334555;margin:0;word-break:keep-all;overflow-wrap:normal}
#bookingDialog.booking-reference .booking-side-lede{color:white;font-size:21px;line-height:1.55;white-space:pre-line;margin:22px 0 24px;font-weight:500}
#bookingDialog.booking-reference .booking-side-benefits{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;color:#fff;margin:0 0 30px}
#bookingDialog.booking-reference .booking-side-benefits>span{display:flex;align-items:center;gap:10px}
#bookingDialog.booking-reference .booking-side-benefits b{display:grid;place-items:center;width:40px;height:40px;border:1px solid #deeff8;border-radius:50%;flex:none;font-size:23px;font-weight:400}
#bookingDialog.booking-reference .booking-side-benefits small{font-size:12px;line-height:1.5;white-space:pre-line}
#bookingDialog.booking-reference .booking-side-location{color:#fff;margin:0;font-size:14px;line-height:1.6;padding-left:28px;position:relative}
#bookingDialog.booking-reference .booking-side-location:before{content:'';position:absolute;left:2px;top:4px;width:12px;height:16px;border:3px solid white;border-radius:60% 60% 60% 0;transform:rotate(-45deg)}
#bookingDialog.booking-reference .booking-side-location small{display:block;font-size:10px;letter-spacing:.23em;margin-top:5px}
#bookingDialog.booking-reference .booking-form{grid-row:2;position:static;grid-template-rows:minmax(0,1fr) auto;background:linear-gradient(145deg,rgba(255,255,255,.98),rgba(241,251,255,.94));border-radius:30px;padding:30px 30px 20px;overflow:visible}
#bookingDialog.booking-reference .booking-progress{position:absolute;left:45%;right:19%;top:46px;display:flex;justify-content:space-between;padding:0;gap:22px;border:0;background:none}
#bookingDialog.booking-reference .booking-progress button{width:auto;position:relative;min-height:44px;padding:0;gap:14px;border:0;border-radius:0;background:none;color:#78869b}
#bookingDialog.booking-reference .booking-progress button:not(:last-child):after{content:'';height:2px;width:24px;background:#d7e2eb;position:absolute;left:calc(100% + 10px)}
#bookingDialog.booking-reference .booking-progress button>span{width:40px;height:40px;flex-basis:40px;background:#f5f8fa9c;border-color:#dbe6ec;font-size:17px;color:#7a889b}
#bookingDialog.booking-reference .booking-progress button i{font-size:15px;white-space:nowrap}
#bookingDialog.booking-reference .booking-progress button.is-active{color:#10253d}
#bookingDialog.booking-reference .booking-progress button.is-active>span{background:linear-gradient(120deg,#17899b,#066087);border-color:transparent;color:#fff}
#bookingDialog.booking-reference .booking-progress button.is-active i{padding:10px 0;border-bottom:2px solid #0989a2}
#bookingDialog.booking-reference .booking-step{grid-row:1;padding:0 2px 16px;scrollbar-gutter:auto;overflow:auto;min-height:0}
#bookingDialog.booking-reference .step-heading{margin:0 8px 24px}
#bookingDialog.booking-reference .step-heading h3{font-size:clamp(28px,2.45vw,38px);font-weight:750;line-height:1.35;margin-bottom:4px}
#bookingDialog.booking-reference .step-heading>span{font-size:17px;line-height:1.5}
#bookingDialog.booking-reference .booking-visit-layout{display:grid;grid-template-columns:1.13fr 1fr;gap:18px}
#bookingDialog.booking-reference .booking-visit-left,#bookingDialog.booking-reference .booking-visit-right{display:flex;flex-direction:column;gap:18px;min-width:0}
#bookingDialog.booking-reference .booking-visit-card{padding:18px;border:1px solid #e5eef4;border-radius:17px;background:#ffffff78;min-width:0}
#bookingDialog.booking-reference .booking-visit-card h4{margin:0 0 12px;font-size:17px;font-weight:700;line-height:1.5}
#bookingDialog.booking-reference .booking-visit-card h4:before,#bookingDialog.booking-reference .booking-product-field>span:before,#bookingDialog.booking-reference .booking-date-field>span:before,#bookingDialog.booking-reference #bookingCountryLabel:before{content:'';display:inline-block;width:23px;height:23px;vertical-align:middle;margin-right:12px;background:var(--booking-accent);mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='black' stroke-width='2'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M7 2v6M17 2v6M7 14h2m3 0h2m3 0h1M7 17h2m3 0h2'/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat}
#bookingDialog.booking-reference .booking-people-card h4:before{mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='9' cy='7' r='4'/%3E%3Ccircle cx='18' cy='8' r='3'/%3E%3Cpath d='M1 21v-4a8 6 0 0 1 16 0v4zm17-8a5 5 0 0 1 5 5v3h-4v-4z'/%3E%3C/svg%3E")}
#bookingDialog.booking-reference #bookingCountryLabel:before{mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='black' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cellipse cx='12' cy='12' rx='4' ry='10'/%3E%3Cpath d='M2 12h20'/%3E%3C/g%3E%3C/svg%3E")}
#bookingDialog.booking-reference .field{margin:0 0 16px}
#bookingDialog.booking-reference .booking-visit-card .field{margin:0}
#bookingDialog.booking-reference .field>span:not(.booking-guest-counter){font-size:16px}
#bookingDialog.booking-reference .booking-product-field{position:relative;padding-top:40px}
#bookingDialog.booking-reference .booking-product-field>span{position:absolute;top:0;left:0}
#bookingDialog.booking-reference .booking-product-details{position:absolute;right:0;top:4px;padding:0;border:0;background:none;color:#147793;font-size:12px;font-weight:600}
#bookingDialog.booking-reference .booking-product-thumb{position:absolute;bottom:1px;left:1px;width:92px;height:76px;object-fit:cover;object-position:left;border-radius:10px}
#bookingDialog.booking-reference .booking-product-field select{height:78px;padding-left:108px;font-size:15px;font-weight:650;border-color:#cad8e4;border-radius:11px;background-color:transparent;padding-right:24px;text-overflow:ellipsis}
#bookingDialog.booking-reference #bookingProductDescription{font-size:13px;color:var(--booking-muted);line-height:1.6;margin:12px 0 0}
#bookingDialog.booking-reference .booking-people-card{flex:1}
#bookingDialog.booking-reference .booking-people-card .field{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 0;border-bottom:1px solid #f0f4f7}
#bookingDialog.booking-reference .booking-people-card .field>span:first-child{white-space:nowrap;font-size:16px}
#bookingDialog.booking-reference .booking-people-card .field small{font-size:12px;font-weight:400;color:#7b879d}
#bookingDialog.booking-reference .field>.booking-guest-counter{width:158px;flex:none;height:48px;grid-template-columns:45px minmax(0,1fr) 45px;gap:0;border:1px solid #e8eff3;padding:0;border-radius:10px}
#bookingDialog.booking-reference .booking-guest-counter button{width:45px;height:46px;border:0;border-radius:9px;background:#eff6f8;color:#087d99}
#bookingDialog.booking-reference .booking-guest-counter select{height:46px;font-size:21px;padding:0;background:white}
#bookingDialog.booking-reference .inline-note{margin-top:20px;padding:15px;border:0;background:#edf5f8;color:#75869d;font-size:12px;line-height:1.65}
#bookingDialog.booking-reference .booking-date-field{display:block;position:relative}
#bookingDialog.booking-reference .booking-date-field>span{display:block;margin-bottom:8px}
#bookingDialog.booking-reference .field .booking-inline-date-input{position:absolute;width:1px;height:1px;padding:0;border:0;opacity:0;pointer-events:none}
#bookingDialog.booking-reference .booking-inline-calendar header{display:flex;align-items:center;justify-content:space-between;margin:6px 0 14px}
#bookingDialog.booking-reference .booking-inline-calendar header strong{font-size:17px}
#bookingDialog.booking-reference .booking-inline-calendar header button{width:34px;height:34px;padding:0;border:0;background:none;color:#086992;font-size:28px}
#bookingDialog.booking-reference .booking-inline-calendar header button:disabled{opacity:.25;cursor:default}
#bookingDialog.booking-reference .booking-calendar-week,#bookingDialog.booking-reference .booking-calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));text-align:center;gap:0}
#bookingDialog.booking-reference .booking-calendar-week span{color:#7d899d;font-size:12px;padding:0 0 10px}
#bookingDialog.booking-reference .booking-calendar-days button{justify-self:center;display:grid;place-items:center;width:36px;height:39px;border:0;border-radius:50%;padding:0;color:#19314c;background:transparent;font-size:14px;font-variant-numeric:tabular-nums}
#bookingDialog.booking-reference .booking-calendar-days button:disabled{color:#a7b2c1;cursor:default}
#bookingDialog.booking-reference .booking-calendar-days button:not(:disabled):hover{background:#e1f1f6}
#bookingDialog.booking-reference .booking-calendar-days button.is-selected{background:linear-gradient(130deg,#168ba1,#006083);color:white}
#bookingDialog.booking-reference .booking-nationality-card{position:relative}
#bookingDialog.booking-reference .booking-country__trigger{height:54px;background:#ffffffab;border-color:#cad8e4;border-radius:11px;padding:12px 16px;font-size:16px}
#bookingDialog.booking-reference .booking-country__panel{position:relative;top:auto;max-height:270px;z-index:2;margin-top:8px;border-color:#cad8e4}
#bookingDialog.booking-reference .booking-country__list{max-height:170px}
#bookingDialog.booking-reference .booking-form__footer{grid-row:2;grid-template-columns:auto minmax(0,1fr) minmax(220px,.9fr);grid-template-areas:'error error error' 'back meta next' 'back meta secure';gap:8px 18px;padding:20px 22px 16px;border:1px solid #e9f0f5;border-radius:18px;background:#ffffffd9;box-shadow:0 7px 24px #456f8310}
#bookingDialog.booking-reference .booking-footer-selection{display:grid;gap:4px;margin:0;grid-area:meta}
#bookingDialog.booking-reference .booking-footer-selection>span{color:#137c95;font-size:13px;font-weight:650}
#bookingDialog.booking-reference .booking-footer-selection>strong{font-size:16px;text-align:left}
#bookingDialog.booking-reference #bookingFooterGuests{font-size:14px;color:#7a879d}
#bookingDialog.booking-reference #bookingNext{min-width:0;width:100%;min-height:52px;padding:12px 22px;border:0;border-radius:40px;background:linear-gradient(110deg,#178b99,#08618e);font-size:17px}
#bookingDialog.booking-reference .booking-secure-note{grid-area:secure;text-align:center;color:#7e8b9d;font-size:11px;line-height:1.5}
#bookingDialog.booking-reference .booking-secure-note:before{content:'▣';margin-right:7px}
#bookingDialog.booking-reference #bookingBack{min-height:46px;padding:8px;min-width:50px}
#bookingDialog.booking-reference :is(button,select):focus-visible{outline:3px solid #48a4c2;outline-offset:2px}
#bookingDialog.booking-reference[data-current-step="4"] .booking-form{grid-template-rows:minmax(0,1fr)}
@media(min-width:1250px) and (min-height:900px){#bookingDialog.booking-reference .booking-form{padding-top:32px}#bookingDialog.booking-reference .step-heading{margin-bottom:26px}#bookingDialog.booking-reference .booking-visit-card{padding:20px}#bookingDialog.booking-reference .booking-calendar-days button{height:44px;width:42px}#bookingDialog.booking-reference .booking-people-card .field{padding:16px 0}#bookingDialog.booking-reference .booking-visit-layout{gap:20px}}
@media(max-width:1200px){#bookingDialog.booking-reference .dialog-shell{grid-template-columns:30% minmax(0,70%);padding-right:20px;padding-bottom:22px;grid-template-rows:104px minmax(0,1fr)}#bookingDialog.booking-reference .booking-dialog__side{padding:0 24px}#bookingDialog.booking-reference .booking-dialog__side h2{font-size:36px}#bookingDialog.booking-reference .booking-side-lede{font-size:16px}#bookingDialog.booking-reference .booking-side-benefits{grid-template-columns:1fr;gap:9px;margin-bottom:20px}#bookingDialog.booking-reference .booking-side-benefits small{white-space:normal}#bookingDialog.booking-reference .booking-side-benefits b{width:30px;height:30px}#bookingDialog.booking-reference .booking-topbar{padding-left:26px}#bookingDialog.booking-reference .booking-topbar__brand{width:225px}#bookingDialog.booking-reference .booking-progress{left:35%;right:16%;top:30px}#bookingDialog.booking-reference .booking-explore{font-size:10px;padding-right:12px}#bookingDialog.booking-reference .booking-form{padding:24px 20px 16px}#bookingDialog.booking-reference .booking-visit-card{padding:14px}#bookingDialog.booking-reference .booking-visit-layout{gap:12px}#bookingDialog.booking-reference .booking-product-thumb{width:64px}#bookingDialog.booking-reference .booking-product-field select{padding-left:75px;font-size:13px}#bookingDialog.booking-reference .booking-people-card .field{flex-wrap:wrap}#bookingDialog.booking-reference .booking-product-details{font-size:10px}#bookingDialog.booking-reference .booking-form__footer{padding:16px;gap:8px 10px}}
@media(max-width:850px){#bookingDialog.booking-reference .dialog-shell{display:grid;grid-template-columns:1fr;grid-template-rows:114px minmax(0,1fr);padding:0 14px 14px}#bookingDialog.booking-reference .booking-topbar{grid-column:1;grid-row:1;align-self:start;height:52px;padding:10px 8px}#bookingDialog.booking-reference .booking-topbar__brand{width:200px}#bookingDialog.booking-reference .booking-explore{display:none}#bookingDialog.booking-reference .booking-dialog__side{display:none}#bookingDialog.booking-reference .booking-form{grid-column:1;grid-row:2;border-radius:22px;padding:18px 16px 14px;overflow:hidden}#bookingDialog.booking-reference .booking-progress{left:16px;right:16px;top:60px;height:38px;gap:8px;display:flex;align-items:center;justify-content:space-between}#bookingDialog.booking-reference .booking-progress button{display:inline-flex;align-items:center;justify-content:center;flex-direction:row;flex-wrap:nowrap;white-space:nowrap;flex:1 1 0;min-height:36px;height:36px;padding:0 4px;gap:6px}#bookingDialog.booking-reference .booking-progress button>span{width:28px;height:28px;min-width:28px;flex:0 0 28px;font-size:13px;line-height:28px;display:grid;place-items:center}#bookingDialog.booking-reference .booking-progress button i{font-size:12.5px;font-style:normal;white-space:nowrap;padding:0;border-bottom:none}#bookingDialog.booking-reference .booking-progress button.is-active i{padding-bottom:2px;border-bottom:2px solid #0989a2;font-weight:700}#bookingDialog.booking-reference .booking-progress button:not(:last-child):after{display:none}#bookingDialog.booking-reference .step-heading{margin:0 0 16px}#bookingDialog.booking-reference .step-heading h3{font-size:26px}#bookingDialog.booking-reference .step-heading>span{font-size:14px}#bookingDialog.booking-reference .booking-product-thumb{width:82px}#bookingDialog.booking-reference .booking-product-field select{padding-left:94px}#bookingDialog.booking-reference .booking-product-details{font-size:11px}#bookingDialog.booking-reference .booking-form__footer{grid-template-columns:auto 1fr;grid-template-areas:'meta meta' 'error error' 'back next' 'secure secure';padding:13px 15px;gap:8px 10px}#bookingDialog.booking-reference .booking-footer-selection{display:grid;grid-template-columns:auto 1fr;gap:3px 10px}#bookingDialog.booking-reference .booking-footer-selection>strong{text-align:right;font-size:14px}#bookingDialog.booking-reference #bookingFooterGuests{grid-column:1/-1;font-size:12px}#bookingDialog.booking-reference .booking-secure-note{font-size:10px}}
@media(max-width:580px){#bookingDialog.booking-reference .dialog-shell{padding:0 8px 8px;grid-template-rows:108px minmax(0,1fr)}#bookingDialog.booking-reference .booking-topbar{height:48px;padding:8px 6px}#bookingDialog.booking-reference .booking-topbar__brand{width:180px}#bookingDialog.booking-reference .booking-progress{top:54px;left:10px;right:10px;height:36px;gap:6px}#bookingDialog.booking-reference .booking-progress button{gap:5px;min-height:34px;height:34px;padding:0 3px}#bookingDialog.booking-reference .booking-progress button>span{width:26px;height:26px;min-width:26px;flex:0 0 26px;font-size:12px;line-height:26px}#bookingDialog.booking-reference .booking-progress button i{font-size:11.5px}#bookingDialog.booking-reference .booking-form{padding:16px 12px 10px}#bookingDialog.booking-reference .booking-step[data-step="2"]{padding-top:8px}#bookingDialog.booking-reference .booking-visit-layout{grid-template-columns:1fr;gap:14px}#bookingDialog.booking-reference .booking-visit-left,#bookingDialog.booking-reference .booking-visit-right{gap:14px}#bookingDialog.booking-reference .booking-people-card .field{flex-wrap:nowrap}#bookingDialog.booking-reference .booking-product-field select{font-size:14px}#bookingDialog.booking-reference .booking-calendar-days button{height:41px;width:40px}#bookingDialog.booking-reference .booking-visit-card{padding:15px}#bookingDialog.booking-reference .step-heading h3{font-size:24px}#bookingDialog.booking-reference .field>.booking-guest-counter{width:140px;grid-template-columns:40px minmax(0,1fr) 40px}#bookingDialog.booking-reference .booking-guest-counter button{width:40px}#bookingDialog.booking-reference .booking-people-card .field small{font-size:10px}#bookingDialog.booking-reference .booking-people-card .field>span:first-child{font-size:14px}#bookingDialog.booking-reference .form-grid{grid-template-columns:1fr}}

@media(prefers-reduced-motion:reduce){#bookingDialog.booking-reference .dialog-shell{animation:none}#bookingDialog.booking-reference *{scroll-behavior:auto!important;transition:none!important}}

#bookingDialog.booking-reference .booking-topbar__brand .bws-logo--wordmark{width:270px;height:auto;max-width:100%}#bookingDialog.booking-reference .booking-topbar__brand .bws-logo--wordmark img{width:100%;height:auto;max-height:none}#bookingDialog.booking-reference .booking-side-benefits svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.4}

#bookingDialog.booking-reference .booking-people-card .field{flex-direction:row;text-align:left}
#bookingDialog.booking-reference .step-heading h3:focus{outline:none}
#bookingDialog.booking-reference .booking-product-field>span:before{mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='black' stroke-width='2'%3E%3Cpath d='M12 21s8-7 8-12a8 8 0 0 0-16 0c0 5 8 12 8 12Z'/%3E%3Ccircle cx='12' cy='9' r='3'/%3E%3C/g%3E%3C/svg%3E")}
#bookingDialog.booking-reference .step-heading{position:relative}
#bookingDialog.booking-reference .booking-season-note{position:absolute;top:13px;right:0;padding-bottom:9px;border-bottom:2px solid #a3d3e4;color:#244967;font-size:13px;font-weight:500}
@media(max-width:1380px){#bookingDialog.booking-reference .booking-season-note{display:none}}

/* A smaller, softly rounded dialog with breathing room around the viewport. */
#bookingDialog.booking-reference{
  width:min(1440px,calc(100% - 64px));
  height:min(900px,calc(100dvh - 64px));
  max-width:calc(100% - 64px);
  max-height:calc(100dvh - 64px);
  margin:auto;
  border-radius:32px;
  box-shadow:0 24px 80px rgba(0,28,45,.28);
}
#bookingDialog.booking-reference .dialog-shell{border-radius:inherit}
#bookingDialog.booking-reference .booking-form{border-radius:28px}
#bookingDialog.booking-reference .booking-visit-card,
#bookingDialog.booking-reference .booking-form__footer{border-radius:22px}
#bookingDialog.booking-reference .field input,
#bookingDialog.booking-reference .field select,
#bookingDialog.booking-reference .field textarea,
#bookingDialog.booking-reference .booking-country__trigger,
#bookingDialog.booking-reference .booking-country__panel,
#bookingDialog.booking-reference .inline-note{border-radius:15px}
#bookingDialog.booking-reference .booking-product-thumb{border-radius:14px}
#bookingDialog.booking-reference .field>.booking-guest-counter{border-radius:14px;overflow:hidden}
#bookingDialog.booking-reference .booking-guest-counter button{border-radius:12px}
@media(min-width:851px){
  #bookingDialog.booking-reference .dialog-shell{grid-template-rows:108px minmax(0,1fr);padding-right:26px;padding-bottom:26px}
  #bookingDialog.booking-reference .booking-progress{top:34px}
  #bookingDialog.booking-reference .booking-form{padding:26px 24px 18px}
  #bookingDialog.booking-reference .booking-dialog__side{padding-left:40px;padding-right:28px}
  #bookingDialog.booking-reference .booking-dialog__side h2{font-size:clamp(32px,3.2vw,50px)}
  #bookingDialog.booking-reference .booking-side-lede{font-size:18px;margin:18px 0 20px}
  #bookingDialog.booking-reference .step-heading h3{font-size:clamp(27px,2.2vw,34px)}
  #bookingDialog.booking-reference .booking-visit-card{padding:16px}
  #bookingDialog.booking-reference .booking-people-card .field{padding:12px 0}
}
@media(max-width:850px){
  #bookingDialog.booking-reference{width:calc(100% - 24px);max-width:calc(100% - 24px);height:calc(100dvh - 40px);max-height:calc(100dvh - 40px);border-radius:26px}
  #bookingDialog.booking-reference .booking-form{border-radius:22px}
  #bookingDialog.booking-reference .booking-visit-card,
  #bookingDialog.booking-reference .booking-form__footer{border-radius:18px}
}
@media(max-width:380px){
  #bookingDialog.booking-reference{width:calc(100% - 16px);max-width:calc(100% - 16px)}
  #bookingDialog.booking-reference .dialog-shell{grid-template-rows:104px minmax(0,1fr)}
  #bookingDialog.booking-reference .booking-topbar{height:46px;padding:6px 4px}
  #bookingDialog.booking-reference .booking-progress{left:6px;right:6px;top:50px;height:34px;gap:4px}
  #bookingDialog.booking-reference .booking-progress button{gap:4px;padding:0 2px;min-height:32px;height:32px}
  #bookingDialog.booking-reference .booking-progress button>span{width:23px;height:23px;min-width:23px;flex:0 0 23px;font-size:11px;line-height:23px}
  #bookingDialog.booking-reference .booking-progress button i{font-size:10.5px}
  #bookingDialog.booking-reference .booking-people-card .field{flex-wrap:wrap}
}


@media(min-width:851px){
  #bookingDialog.booking-reference .booking-calendar-days button{height:38px;width:36px}
  #bookingDialog.booking-reference .booking-inline-calendar header{margin-bottom:10px}
  #bookingDialog.booking-reference .step-heading{margin-bottom:20px}
}

/* Thumbnail options retain the native select's booking value. */
#bookingDialog.booking-reference .booking-product-field .booking-product-native{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none;padding:0;border:0;clip-path:inset(50%)}
#bookingDialog.booking-reference .booking-product-trigger{display:grid;grid-template-columns:84px minmax(0,1fr) 16px;align-items:center;gap:14px;width:100%;min-height:78px;padding:0 14px 0 0;border:1px solid #cad8e4;border-radius:15px;background:#fff;color:var(--booking-ink);text-align:left;font:inherit;font-size:15px;font-weight:650;cursor:pointer}
#bookingDialog.booking-reference .booking-product-trigger .booking-product-thumb{position:static;width:84px;height:76px;object-fit:cover;border-radius:14px 0 0 14px}
#bookingDialog.booking-reference #bookingProductValue{min-width:0;overflow-wrap:anywhere;line-height:1.5}
#bookingDialog.booking-reference .booking-product-chevron{width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);justify-self:center}
#bookingDialog.booking-reference .booking-product-trigger[aria-expanded="true"]{border-color:var(--booking-accent)}
#bookingDialog.booking-reference .booking-product-trigger[aria-expanded="true"] .booking-product-chevron{transform:rotate(225deg)}
#bookingDialog.booking-reference .booking-product-list{display:grid;gap:6px;width:100%;max-height:260px;overflow-y:auto;overscroll-behavior:contain;padding:7px;border:1px solid #cadde6;border-radius:16px;background:#fff;box-shadow:0 8px 20px #123b4314}
#bookingDialog.booking-reference .booking-product-option{display:grid;grid-template-columns:66px minmax(0,1fr);gap:12px;align-items:center;padding:8px;border:1px solid transparent;border-radius:12px;cursor:pointer;color:var(--booking-ink);font-size:14px;font-weight:600;line-height:1.5;min-width:0}
#bookingDialog.booking-reference .booking-product-option img{width:66px;height:54px;border-radius:9px;object-fit:cover}
#bookingDialog.booking-reference .booking-product-option span{overflow-wrap:anywhere}
#bookingDialog.booking-reference .booking-product-option:hover,#bookingDialog.booking-reference .booking-product-option:focus-visible{background:#eef7fa;outline:2px solid #78b9cd;outline-offset:-2px}
#bookingDialog.booking-reference .booking-product-option[aria-selected="true"]{background:#e7f4f8;border-color:#99cbd8}
#bookingDialog.booking-reference .booking-product-option[aria-disabled="true"],#bookingDialog.booking-reference .booking-product-trigger:disabled{opacity:.5;cursor:default}
@media(max-width:580px){#bookingDialog.booking-reference .booking-product-trigger{grid-template-columns:68px minmax(0,1fr) 12px;gap:10px;font-size:14px}#bookingDialog.booking-reference .booking-product-list[popover]{position:fixed;inset:auto;margin:0;box-sizing:border-box;box-shadow:0 12px 32px #123b432b}}

/* Enhanced Validation & Required Field Error States */
#bookingDialog.booking-reference .field.has-error input,
#bookingDialog.booking-reference .field.has-error select,
#bookingDialog.booking-reference .field.has-error textarea,
#bookingDialog.booking-reference .field.has-error .booking-product-trigger,
#bookingDialog.booking-reference .field.has-error .booking-country__trigger {
  border: 2px solid #ef4444 !important;
  box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.18) !important;
  background-color: #fff8f8 !important;
}
#bookingDialog.booking-reference .booking-people-card.has-error {
  border: 2px solid #ef4444 !important;
  box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.18) !important;
  background-color: #fff8f8 !important;
}
#bookingDialog.booking-reference .check-field.has-error {
  border: 2px solid #ef4444 !important;
  box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.18) !important;
  background-color: #fef2f2 !important;
  border-radius: 12px;
  padding: 12px 14px;
}
#bookingDialog.booking-reference [data-field-error],
#bookingDialog.booking-reference .field-error-msg {
  display: none;
  align-items: center;
  gap: 5px;
  color: #dc2626 !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  line-height: 1.4 !important;
  margin-top: 6px !important;
}
#bookingDialog.booking-reference .has-error [data-field-error]:not(:empty),
#bookingDialog.booking-reference .has-error .field-error-msg:not(:empty) {
  display: flex !important;
}
#bookingDialog.booking-reference [data-field-error]::before,
#bookingDialog.booking-reference .field-error-msg::before {
  content: "⚠️";
  font-size: 12px;
  line-height: 1;
}
#bookingParticipants .field.has-error input,
#bookingParticipants .field.has-error select {
  border: 2px solid #ef4444 !important;
  box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.18) !important;
  background-color: #fff8f8 !important;
}

/* Step 2 Compact Layout & Guest Details */
.booking-step[data-step="2"] {
  padding-top: 8px;
}
.booking-dialog.booking-reference .step-heading--compact {
  margin-top: 0;
  margin-bottom: 12px;
}
.booking-dialog.booking-reference .step-heading--compact h3 {
  font-size: clamp(21px, 2vw, 26px);
  margin: 3px 0 2px;
}
.booking-dialog.booking-reference .step-heading--compact span {
  font-size: 13px;
  color: #557582;
}
.booking-lead-card {
  background: #ffffff !important;
  border: 1px solid #d4e3e9 !important;
  border-radius: 14px !important;
  padding: 14px 16px 12px !important;
  margin-bottom: 10px !important;
  box-shadow: 0 2px 10px rgba(16, 52, 72, 0.04) !important;
}
.field--compact {
  margin: 0 0 8px !important;
  gap: 3px !important;
}
.field--compact > span,
.field--compact .field-label-row {
  display: flex !important;
  justify-content: space-between !important;
  align-items: center !important;
  font-size: 12.5px !important;
  font-weight: 700 !important;
  letter-spacing: 0 !important;
  color: #173d4d !important;
  margin-bottom: 2px !important;
}
#bookingDialog .field--compact input,
#bookingDialog.booking-reference .field--compact input,
#bookingDialog .field--compact select,
#bookingDialog.booking-reference .field--compact select,
.field--compact input,
.field--compact select {
  height: 40px !important;
  min-height: 40px !important;
  max-height: 40px !important;
  padding: 7px 12px !important;
  font-size: 14px !important;
  line-height: normal !important;
  border-radius: 8px !important;
  border: 1px solid #c9dbe2 !important;
  background: #ffffff !important;
  transition: border-color 0.2s, box-shadow 0.2s !important;
}
.field--compact input:focus,
.field--compact select:focus {
  border-color: #087b95 !important;
  box-shadow: 0 0 0 3px rgba(8, 123, 149, 0.15) !important;
}
.form-grid--lead-top {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 10px;
}
.form-grid--contact {
  display: grid;
  grid-template-columns: 1fr 1.15fr;
  gap: 10px;
}

/* Phone Field Group with Dial Code Select */
.phone-field-container {
  min-width: 0;
}
.phone-input-group {
  display: flex !important;
  gap: 6px !important;
  align-items: center !important;
  width: 100% !important;
  position: relative;
}
#bookingDialog select#phoneCountryCode,
#bookingDialog select.phone-code-select--hidden,
#bookingDialog select.phone-code-select.phone-code-select--hidden,
#bookingDialog.booking-reference select#phoneCountryCode,
#bookingDialog.booking-reference .phone-code-select--hidden,
select#phoneCountryCode,
.phone-code-select--hidden {
  display: none !important;
  position: absolute !important;
  width: 0 !important;
  height: 0 !important;
  min-width: 0 !important;
  max-width: 0 !important;
  min-height: 0 !important;
  max-height: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  border: 0 !important;
  opacity: 0 !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  pointer-events: none !important;
  visibility: hidden !important;
}

#bookingDialog .phone-code-select:not(.phone-code-select--hidden),
#bookingDialog.booking-reference .phone-code-select:not(.phone-code-select--hidden),
.phone-code-select:not(.phone-code-select--hidden) {
  flex: 0 0 96px !important;
  width: 96px !important;
  height: 40px !important;
  min-height: 40px !important;
  max-height: 40px !important;
  padding: 6px 8px !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  color: #164052 !important;
  background-color: #f6fafb !important;
  border: 1px solid #c9dbe2 !important;
  border-radius: 8px !important;
  cursor: pointer !important;
}
.phone-country-picker {
  position: relative !important;
  flex: 0 0 108px !important;
  width: 108px !important;
  min-width: 108px !important;
  max-width: 108px !important;
}
.phone-country-trigger {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 6px !important;
  width: 108px !important;
  min-width: 108px !important;
  max-width: 108px !important;
  height: 40px !important;
  min-height: 40px !important;
  max-height: 40px !important;
  padding: 0 8px !important;
  box-sizing: border-box !important;
  background: #f6fafb !important;
  border: 1px solid #c9dbe2 !important;
  border-radius: 8px !important;
  cursor: pointer !important;
  font: inherit !important;
  transition: background 0.15s, border-color 0.15s, box-shadow 0.15s;
}
.phone-country-trigger:hover,
.phone-country-trigger[aria-expanded="true"] {
  background: #eef6f9 !important;
  border-color: #168ba1 !important;
}
.phone-country-flag {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex: 0 0 24px !important;
  width: 24px !important;
  height: 16px !important;
  min-width: 24px !important;
  max-width: 24px !important;
  min-height: 16px !important;
  max-height: 16px !important;
  overflow: hidden !important;
  border-radius: 2px !important;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.18) !important;
}
.phone-country-flag img,
.phone-country-flag .flag-img {
  width: 24px !important;
  height: 16px !important;
  min-width: 24px !important;
  max-width: 24px !important;
  min-height: 16px !important;
  max-height: 16px !important;
  object-fit: cover !important;
  display: block !important;
  border-radius: 2px !important;
}
.phone-country-code {
  flex: 1 1 auto !important;
  text-align: left !important;
  font-size: 13px !important;
  font-weight: 700 !important;
  color: #164052 !important;
  white-space: nowrap !important;
  line-height: 1 !important;
  overflow: hidden !important;
}
.phone-country-arrow {
  flex: 0 0 12px !important;
  width: 12px !important;
  height: 12px !important;
  fill: none !important;
  stroke: #456f83 !important;
  stroke-width: 2.2 !important;
  stroke-linecap: round !important;
  stroke-linejoin: round !important;
  margin-left: auto !important;
}
.phone-country-panel {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  z-index: 105;
  width: 310px;
  max-width: calc(100vw - 36px);
  max-height: 270px;
  background: #ffffff;
  border: 1px solid #c8dce4;
  border-radius: 12px;
  box-shadow: 0 14px 36px rgba(10, 42, 56, 0.2);
  padding: 8px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.phone-country-search input {
  width: 100%;
  height: 34px !important;
  min-height: 34px !important;
  font-size: 13px !important;
  padding: 6px 10px !important;
  border-radius: 6px !important;
  border: 1px solid #cfe0e6 !important;
  background: #fcfdfe;
}
.phone-country-list {
  overflow-y: auto;
  max-height: 210px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin-top: 4px;
}
.phone-country-group {
  margin: 8px 6px 3px;
  font-size: 11px;
  font-weight: 700;
  color: #57736f;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.phone-country-item {
  display: grid !important;
  grid-template-columns: 24px minmax(0, 1fr) auto !important;
  align-items: center !important;
  gap: 8px !important;
  width: 100% !important;
  min-height: 34px !important;
  padding: 6px 8px !important;
  border: 0 !important;
  border-radius: 6px !important;
  background: transparent !important;
  text-align: left !important;
  font: inherit !important;
  font-size: 13px !important;
  color: #164052 !important;
  cursor: pointer !important;
  transition: background 0.1s;
}
.phone-country-item:hover,
.phone-country-item[aria-pressed="true"] {
  background: #eaf5f0 !important;
  color: #09758e !important;
}
.phone-country-item img {
  width: 24px;
  height: 16px;
  object-fit: cover;
  border-radius: 2px;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
}
.phone-country-item span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.phone-country-item small {
  font-size: 12px;
  font-weight: 700;
  color: #09758e;
}
.phone-country-empty {
  padding: 14px;
  font-size: 13px;
  color: #57736f;
  text-align: center;
  margin: 0;
}
#bookingDialog .phone-input-group input[type="tel"],
#bookingDialog.booking-reference .phone-input-group input[type="tel"],
.phone-input-group input[type="tel"] {
  flex: 1 !important;
  min-width: 0 !important;
  height: 40px !important;
  min-height: 40px !important;
  max-height: 40px !important;
  padding: 7px 12px !important;
  font-size: 14px !important;
  line-height: normal !important;
  border-radius: 8px !important;
  border: 1px solid #c9dbe2 !important;
  background: #ffffff !important;
}

/* Hotel Combobox & Dropdown */
.hotel-combobox-field {
  position: relative;
  margin-bottom: 2px !important;
}
.hotel-custom-badge {
  display: none !important;
}
.hotel-combobox-wrap {
  position: relative;
  display: flex;
  align-items: center;
}
.hotel-combobox-wrap input {
  width: 100%;
  padding-right: 42px !important;
}
.hotel-dropdown-trigger {
  position: absolute !important;
  right: 5px !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  width: 30px !important;
  height: 30px !important;
  min-height: 30px !important;
  max-height: 30px !important;
  min-width: 30px !important;
  max-width: 30px !important;
  padding: 0 !important;
  box-sizing: border-box !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: #edf5f8 !important;
  border: 1px solid #c2dfe6 !important;
  border-radius: 6px !important;
  color: #1b5e77 !important;
  cursor: pointer !important;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
  z-index: 2;
}
.hotel-dropdown-trigger:hover,
.hotel-dropdown-trigger[aria-expanded="true"] {
  background: #ddedf2 !important;
  border-color: #0b7593 !important;
  color: #084c61 !important;
}
.hotel-dropdown-trigger svg {
  width: 15px !important;
  height: 15px !important;
  stroke: currentColor !important;
  fill: none !important;
  stroke-width: 2.2 !important;
  display: block !important;
  pointer-events: none !important;
}
.hotel-dropdown-panel {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  max-height: 270px;
  background: #ffffff;
  border: 1px solid #c8dce4;
  border-radius: 14px;
  box-shadow: 0 14px 36px rgba(10, 42, 56, 0.18);
  z-index: 100;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.hotel-search-bar {
  padding: 8px 10px;
  background: #f7fafc;
  border-bottom: 1px solid #e5eff2;
}
.hotel-search-bar input {
  width: 100%;
  height: 34px !important;
  min-height: 34px !important;
  font-size: 13px !important;
  padding: 6px 10px !important;
  border-radius: 8px !important;
  border: 1px solid #cfe0e6 !important;
  background: #ffffff;
}
.hotel-dropdown-items {
  overflow-y: auto;
  max-height: 220px;
  padding: 4px;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.hotel-dropdown-item {
  padding: 7px 10px;
  border-radius: 8px;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  gap: 2px;
  transition: background 0.1s;
}
.hotel-dropdown-item:hover,
.hotel-dropdown-item:focus {
  background: #edf7fa;
}
.hotel-dropdown-item strong {
  font-size: 13.5px;
  color: #143544;
}
.hotel-dropdown-item small {
  font-size: 11.5px;
  color: #63808c;
}
.hotel-dropdown-item--custom {
  background: #f2fafc;
  border-bottom: 1px solid #e0eff2;
  margin-bottom: 2px;
}
.hotel-dropdown-item--custom strong {
  color: #076d85;
}
.hotel-dropdown-empty {
  padding: 14px;
  text-align: center;
  font-size: 13px;
  color: #728b96;
}

@media(max-width: 600px) {
  .form-grid--lead-top,
  .form-grid--contact {
    grid-template-columns: 1fr;
    gap: 8px;
  }
  .booking-lead-card {
    padding: 12px;
  }
}

/* Public Booking Time Slot Selection */
.booking-timeslot-card {
  margin-top: 14px;
  background: #ffffffaa;
  border: 1px solid #dce8ef;
  border-radius: 17px;
  padding: 16px;
  transition: all 0.2s ease;
}
.booking-timeslot-card.has-error {
  border-color: #ef4444 !important;
  background: #fff5f5 !important;
}
.booking-slots-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(105px, 1fr));
  gap: 8px;
  max-height: 230px;
  overflow-y: auto;
  padding: 4px 2px;
}
.booking-slot-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 10px 6px;
  background: #ffffff;
  border: 1.5px solid #d0e1ea;
  border-radius: 12px;
  cursor: pointer;
  transition: all 0.18s ease;
  min-height: 58px;
  text-align: center;
}
.booking-slot-btn:hover:not(:disabled) {
  border-color: #087b95;
  background: #f0f9fb;
  transform: translateY(-1px);
}
.booking-slot-btn.is-selected {
  border-color: #087b95;
  background: linear-gradient(135deg, #097d97, #065e84);
  color: #ffffff !important;
  box-shadow: 0 4px 12px rgba(8, 123, 149, 0.28);
}
.booking-slot-btn.is-selected .slot-time,
.booking-slot-btn.is-selected .slot-status,
.booking-slot-btn.is-selected .slot-rem {
  color: #ffffff !important;
}
.booking-slot-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
  background: #f1f5f9;
  border-color: #e2e8f0;
}
.booking-slot-btn .slot-time {
  font-size: 15px;
  font-weight: 750;
  color: #0f2d42;
  line-height: 1.2;
}
.booking-slot-btn .slot-status {
  font-size: 11px;
  font-weight: 600;
  margin-top: 3px;
  color: #059669;
}
.booking-slot-btn .slot-status.is-almost {
  color: #d97706;
}
.booking-slot-btn .slot-status.is-closed,
.booking-slot-btn .slot-status.is-full {
  color: #dc2626;
}
.booking-slot-btn .slot-rem {
  font-size: 10.5px;
  color: #64748b;
  margin-top: 1px;
}
.slot-hold-indicator {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: #e0f2fe;
  color: #0369a1;
  padding: 3px 8px;
  border-radius: 6px;
  font-weight: 600;
  animation: holdPulse 2s infinite ease-in-out;
}
@keyframes holdPulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.7; }
}

