.booking-flow-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:28px;align-items:start}
.booking-summary{position:sticky;top:84px;border:1px solid #D9E6EC;border-radius:12px;overflow:hidden;background:#fff;box-shadow:0 4px 16px rgba(0,102,149,.12);color:#1C1C1C;min-width:0}
.booking-summary-heading{background:#006695;color:#fff;padding:20px 22px}
.booking-summary-heading small{display:block;letter-spacing:.14em;font-size:11px;opacity:.8;margin-bottom:5px}
.booking-summary-heading h2{font-size:22px;font-weight:600;margin:0 0 8px}
.booking-summary-heading p{font-size:13px;margin:0;opacity:.95}
.booking-summary-body{padding:20px}
.booking-summary-heading,.booking-summary-action{flex-shrink:0}
.booking-summary-list{margin:0 0 20px;padding:0;list-style:none}
.booking-summary-item{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid #EDF1F3}
.booking-summary-item img{width:56px;height:44px;border-radius:5px;object-fit:cover;flex-shrink:0;background:#F2F7F9}
.booking-summary-item div{flex:1;min-width:0;font-size:13px;line-height:1.6;overflow-wrap:anywhere}
.booking-summary-item span{display:block;font-size:12px;color:#667982}
.booking-summary-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:14px;margin:12px 0}
.booking-summary-row strong{white-space:nowrap;font-weight:500}
.booking-summary-discount{color:#9B1248}
.booking-summary-total{border-top:1px dashed #C9CDD4;padding-top:16px;margin-top:16px;color:#9B1248}
.booking-summary-total strong{font-size:24px;font-weight:600}
.booking-confirmation-amount{color:#9B1248;font-weight:600;white-space:nowrap}
.booking-confirmation-popup .swal2-image{margin-bottom:0}
.booking-confirmation-popup .swal2-title{padding-top:0}
.booking-desktop-total{display:none}
.booking-summary-note{font-size:12px;line-height:1.7;color:#667982;margin:12px 0}
.booking-rule-card{padding:14px;background:#FAF4EC;border-left:3px solid #E4C8A7;border-radius:6px;margin-top:20px;font-size:12px;line-height:1.9}
.booking-rule-card strong{display:block;font-size:14px;color:#006695;margin-bottom:5px;font-weight:500}
.booking-rule-card ul{padding-left:18px;margin:0}
.booking-summary-warning{background:#FFF3ED;color:#9C4823;border:1px solid #F3D2BC;border-radius:6px;padding:12px;font-size:13px;line-height:1.6;margin:14px 0}
.booking-breakdown{padding:10px 12px;border-radius:5px;background:#FFF5F9;font-size:12px;color:#9B1248;margin:12px 0}
.booking-inline-pricing{border-top:1px solid #E5E6EB;margin-top:16px;padding-top:8px}
.booking-empty-products{padding:30px;text-align:center;color:#667982;border:1px dashed #C9CDD4;border-radius:8px}
.booking-photo{background:#F2F7F9}
@media(max-width:1099px){.booking-flow-layout{grid-template-columns:1fr}.booking-summary{position:static}}
@media(max-width:639px){.booking-flow-layout{gap:20px}.booking-summary-heading,.booking-summary-body{padding:16px 18px}}

/* Desktop summaries expand fully; long orders scroll with the page. */
.booking-with-mobile-summary [v-cloak]{visibility:hidden}
.booking-step1-summary{display:flex;flex-direction:column}
.booking-step1-summary .booking-summary-heading,.booking-summary-action{flex-shrink:0}
.booking-step1-summary .booking-summary-list{max-height:none;overflow:visible}
.booking-summary-action{padding:16px 22px;border-top:1px solid #E5E6EB;background:#fff}
.booking-start-button{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:48px;padding:12px 16px;border:0;border-radius:12px;background:#006695;color:#fff;font-size:16px;font-weight:500;cursor:pointer;transition:background .15s}
.booking-start-button:hover:not(:disabled){background:#004d73}
.booking-start-button:disabled{opacity:.65;cursor:wait}
.booking-start-button:focus-visible,.booking-drawer-toggle:focus-visible{outline:3px solid #E4C8A7;outline-offset:3px}
.booking-start-spinner{width:16px;height:16px;border:2px solid #ffffff60;border-top-color:#fff;border-radius:50%;animation:booking-start-spin .8s linear infinite}
@keyframes booking-start-spin{to{transform:rotate(360deg)}}
.booking-mobile-summary{display:none}
.booking-drawer-total{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px;min-width:0;color:#fff;font-size:16px;font-weight:500;text-align:left}
.booking-drawer-original{color:#8FC2D3;font-size:13px;font-weight:400;text-decoration:line-through;text-decoration-thickness:1px;white-space:nowrap}
.booking-drawer-details{display:flex;flex-direction:column;gap:24px;color:#1C1C1C}
.booking-drawer-section{min-width:0}
.booking-drawer-details .booking-drawer-heading{display:flex;align-items:center;justify-content:flex-start;gap:8px;margin:0 0 14px;color:#1C1C1C;font-size:17px;font-weight:500;line-height:1.5;overflow-wrap:anywhere}
.booking-drawer-heading img{width:24px;height:24px;flex-shrink:0}
.booking-drawer-services{display:flex;flex-direction:column;gap:12px;list-style:none;padding:0;margin:0}
.booking-drawer-services li{display:flex;align-items:flex-start;gap:10px;min-width:0}
.booking-drawer-photo{width:56px;height:42px;border-radius:6px;object-fit:cover;flex-shrink:0;background:#F2F7F9}
.booking-drawer-product{flex:1;display:grid;grid-template-columns:minmax(0,1fr) max-content;align-items:center;gap:8px;min-width:0;font-size:14px;font-weight:500;line-height:1.4;overflow-wrap:anywhere}
.booking-drawer-product strong{display:block;margin-top:2px;font-size:14px;font-weight:500}
.booking-drawer-quantity{white-space:nowrap}
.booking-drawer-address{margin:0;color:#737373;font-size:14px;line-height:1.7;overflow-wrap:anywhere}
.booking-drawer-section:last-child .booking-drawer-heading{margin-bottom:0}
.booking-date-status{margin:0 0 20px;text-align:center;font-size:14px;line-height:1.7;color:#667982}
.booking-date-status.error{color:#9B1248}
.booking-date-status button{border:1px solid currentColor;border-radius:6px;padding:4px 10px;background:#fff;color:inherit;font:inherit;cursor:pointer}
.booking-loading-overlay{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:24px;background:rgba(0,0,0,.45);cursor:wait}
.booking-loading-spinner{width:44px;height:44px;border:4px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:booking-start-spin .8s linear infinite}
.booking-field-required{color:#DC2626;margin-left:4px}
.booking-invoice-section{margin-top:24px;padding-top:24px;border-top:1px solid #E5E6EB}
.booking-checkout-title{display:flex;align-items:center;gap:6px;margin:0 0 12px;color:#006695;font-size:21px;font-weight:500}
.booking-checkout-label{display:block;margin-bottom:6px;font-size:16px;font-weight:500;color:#1C1C1C}
.booking-choice-options{display:flex;flex-wrap:wrap;gap:12px}
.booking-choice-options label{display:flex;align-items:center;gap:8px;padding:12px;border:1px solid #D9E6EC;border-radius:8px;cursor:pointer}
.booking-choice-options input,.booking-policy input{accent-color:#006695;width:18px;height:18px;flex-shrink:0}
.booking-checkout-error{margin:6px 0;color:#DC2626;font-size:14px}
.booking-checkout-input{width:100%;padding:10px 12px;border:1px solid #D9E6EC;border-radius:6px;font:inherit}
.booking-checkout-input:focus{outline:2px solid #8FC2D3;outline-offset:1px}
.booking-checkout-input[readonly]{background:#F2F7F9;color:#667982}
.booking-checkout-fields{display:grid;gap:16px;margin-top:16px}
.booking-policy{display:flex;align-items:flex-start;gap:10px;margin-top:20px;font-size:14px;line-height:1.7;cursor:pointer}
@media(prefers-reduced-motion:reduce){.booking-loading-spinner{animation:none}}
.booking-step-one .service-area-map img{width:auto;max-width:100%;height:220px;object-fit:contain}
@media(min-width:768px){
    .booking-step-one .service-area-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch}
    .booking-step-one .service-area-map{position:relative;min-width:0;min-height:0}
    .booking-step-one .service-area-map img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
}
@media(max-width:1099px){
    .booking-with-mobile-summary{padding-bottom:calc(176px + env(safe-area-inset-bottom,0px))}
    .booking-step1-summary{display:none}
    .booking-mobile-summary{display:block;position:fixed;bottom:0;left:0;right:0;z-index:50}
    .booking-drawer-overlay{position:fixed;inset:0;border:0;background:rgba(28,28,28,.3);cursor:pointer}
    .booking-drawer{position:relative;z-index:1;background:#fff;box-shadow:0 -4px 18px rgba(0,102,149,.12)}
    .booking-drawer-toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:76px;padding:16px 24px;border:0;background:#fff;color:#1C1C1C;font-size:16px;font-weight:500;cursor:pointer}
    .booking-fixed-total{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px;min-width:0;text-align:left}
    .booking-fixed-total del{color:#8B8B94;font-size:14px;font-weight:400;white-space:nowrap}
    .booking-fixed-total strong{color:#9B1248;font-size:28px;font-weight:600;line-height:1.3;white-space:nowrap}
    .booking-drawer-label{display:flex;align-items:center;gap:8px;font-size:13px;white-space:nowrap}
    .booking-drawer-label svg{width:20px;height:20px;transition:transform .2s}
    .booking-drawer-label svg.is-open{transform:rotate(180deg)}
    .booking-drawer-content{position:absolute;bottom:100%;left:0;right:0;display:flex;flex-direction:column;max-height:min(60dvh,calc(100dvh - 196px - env(safe-area-inset-bottom,0px)));min-height:0;overflow:hidden;background:#fff;border-radius:16px 16px 0 0;border-bottom:1px dashed #C9CDD4;box-shadow:0 -6px 20px rgba(0,102,149,.1);animation:booking-drawer-enter .22s ease-out}
    .booking-drawer-header{display:flex;align-items:center;justify-content:flex-end;gap:16px;padding:12px 24px;border-bottom:1px solid #E5E6EB;flex-shrink:0;background:#fff}
    .booking-drawer-close{display:grid;place-items:center;width:40px;height:40px;flex-shrink:0;border:0;border-radius:4px;background:transparent;color:#667982;font-size:28px;line-height:1;cursor:pointer}
    .booking-drawer-close:hover{background:#F2F7F9}
    .booking-drawer-close:focus-visible,.booking-drawer-scroll:focus-visible{outline:3px solid #E4C8A7;outline-offset:-3px}
    .booking-drawer-scroll{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:20px 24px}
    .booking-drawer-content .booking-summary-list{max-height:none;overflow:visible}
    .booking-mobile-action{padding:0 24px calc(16px + env(safe-area-inset-bottom,0px));background:#fff}

}
@media(prefers-reduced-motion:reduce){.booking-drawer-label svg{transition:none}.booking-start-spinner{animation:none}}

@keyframes booking-drawer-enter{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.booking-drawer-content{animation:none}}

html:has(body.booking-with-mobile-summary){scrollbar-gutter:stable}
@media(max-width:1099px){
    .booking-mobile-action.has-previous{display:flex;align-items:center;gap:12px}
    .booking-mobile-action.has-previous .booking-start-button{flex:1;min-width:0}
    .booking-mobile-previous{flex-shrink:0;display:flex;align-items:center;justify-content:center;min-height:48px;padding:8px 12px;border:0;border-radius:6px;background:#fff;color:#1C1C1C;font-size:18px;font-weight:500;text-decoration:none;cursor:pointer}
    .booking-mobile-previous:focus-visible{outline:3px solid #E4C8A7;outline-offset:2px}
}

/* One desktop shell keeps all three booking steps and their actions aligned. */
.booking-desktop-navigation{display:none}
@media(min-width:1100px){
    .booking-desktop-shell{box-sizing:border-box;width:100%;max-width:1152px;margin-inline:auto;padding-inline:16px}
    .booking-desktop-sidebar{align-self:stretch;min-width:0}
    .booking-desktop-total{display:flex}
    .booking-desktop-navigation{display:block;position:fixed;bottom:0;left:0;right:0;height:72px;border-top:1px solid #E5E6EB;background:#fff;z-index:40}
    .booking-desktop-navigation-inner{height:100%;display:flex;align-items:center;justify-content:space-between}
    .booking-desktop-next{display:flex;align-items:center;justify-content:center;min-width:280px;height:48px;padding:12px 24px;border:0;border-radius:4px;background:#006695;color:#fff;font-size:14px;font-weight:500;white-space:nowrap;cursor:pointer;transition:background .15s}
    .booking-desktop-next:hover:not(:disabled){background:#005580}
    .booking-desktop-next:disabled{opacity:.65;cursor:wait}
    .booking-desktop-next:focus-visible{outline:3px solid #E4C8A7;outline-offset:3px}
}

.booking-drawer-unit-prices{text-align:right;white-space:nowrap}
.booking-drawer-unit-prices del{display:block;font-size:12px;font-weight:400;color:#888}
.booking-drawer-offer{display:inline-flex;max-width:100%;margin-bottom:4px;padding:2px 8px;border-radius:999px;background:#D91C68;color:#fff;font-size:11px;font-weight:400;line-height:1.4}
.booking-quantity-offer{margin-bottom:12px;overflow-wrap:anywhere}
.booking-fixed-total .booking-quantity-offer{align-self:center;margin-bottom:0}
