.booking-page{padding-bottom:2rem}.booking-hero{background:linear-gradient(135deg,#f4f8fd,#e8f2ff 55%,#f8fafc);border-bottom:1px solid var(--gray-200)}.booking-hero-inner{display:grid;grid-template-columns:1.1fr .9fr;grid-gap:2rem;gap:2rem;align-items:center;padding:3rem 0 2.5rem}.booking-hero-copy h1{margin:0 0 .75rem;font-size:clamp(2rem,4vw,2.75rem);font-weight:800;color:var(--navy)}.booking-hero-copy>p{margin:0 0 1.5rem;color:var(--gray-500);font-size:1.05rem}.booking-trust{display:flex;flex-wrap:wrap;gap:1.25rem 1.75rem;font-size:.9rem;font-weight:600;color:var(--navy)}.booking-trust>div{gap:.5rem}.booking-trust>div,.trust-icon{display:inline-flex;align-items:center}.trust-icon{justify-content:center;width:32px;height:32px;border-radius:999px;background:var(--white);color:var(--blue);box-shadow:var(--shadow)}.booking-hero-media{min-height:240px;border-radius:var(--radius);background:linear-gradient(180deg,rgba(15,43,74,.08),rgba(15,43,74,.18)),url(https://images.unsplash.com/photo-1581578731548-c64695cc6952?w=900&q=80) 50%/cover;box-shadow:var(--shadow-lg)}.booking-steps{list-style:none;display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;justify-content:center;padding:1.75rem 0 .5rem;margin:0 0 1.5rem;counter-reset:none}.booking-steps li{display:inline-flex;align-items:center;gap:.5rem;color:var(--gray-500);font-weight:600;font-size:.92rem}.booking-steps li span{width:28px;height:28px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:var(--gray-200);color:var(--gray-700);font-size:.85rem}.booking-steps li.active{color:var(--navy)}.booking-steps li.active span{background:var(--blue);color:var(--white)}.booking-error{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca;border-radius:8px}.booking-error,.booking-notice{padding:.85rem 1rem;margin-bottom:1rem}.booking-notice{background:#eff6ff;color:#1e40af;border:1px solid #bfdbfe;border-radius:8px}.booking-grid{display:grid;grid-template-columns:1fr;grid-gap:1.25rem;gap:1.25rem;margin-bottom:1.25rem}.booking-panel{background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow)}.booking-panel h2{margin:0 0 .35rem;font-size:1.25rem;color:var(--navy)}.panel-sub{margin:0 0 1.25rem;color:var(--gray-500);font-size:.95rem}.service-options{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));grid-gap:.75rem;gap:.75rem}.service-option{display:grid;grid-template-columns:1fr;grid-template-rows:auto auto 1fr auto;justify-items:center;text-align:center;grid-gap:.45rem;gap:.45rem;padding:.9rem .75rem .85rem;min-height:13.5rem;height:auto;overflow:hidden;box-sizing:border-box;align-content:stretch;border-radius:10px;border:1.5px solid var(--gray-200);background:var(--white);cursor:pointer;transition:border-color .15s,box-shadow .15s;color:inherit;font:inherit}.service-option:hover{border-color:#b7d4f7}.service-option.selected{border-color:var(--blue);background:#f5f9ff;box-shadow:0 0 0 1px var(--blue)}.radio{width:18px;height:18px;border-radius:999px;border:2px solid var(--gray-200);display:inline-block;order:-1;justify-self:end;margin:-.15rem -.1rem 0 0}.radio.on{border-color:var(--blue);box-shadow:inset 0 0 0 4px var(--blue)}.service-option-icon{width:64px;height:64px;border-radius:14px;background:var(--blue-light);color:var(--blue);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.service-option-icon svg{width:32px;height:32px}.service-option-body{display:flex;flex-direction:column;gap:.2rem;align-items:center;width:100%;min-width:0;min-height:0;overflow:hidden}.service-option-body strong{color:var(--navy);font-size:.88rem;line-height:1.25}.service-option-body span,.service-option-body strong{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word;max-width:100%}.service-option-body span{color:var(--gray-500);font-size:.75rem;line-height:1.3}.service-option-price{font-weight:700;color:var(--blue);white-space:normal;font-size:.78rem;line-height:1.3;align-self:end;width:100%;max-width:100%;overflow:hidden;word-break:break-word;padding-top:.15rem}.addon-block{margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid var(--gray-100)}.addon-block h3{margin:0 0 .25rem;font-size:1rem}.addon-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));grid-gap:.75rem;gap:.75rem}.addon-item{display:grid;grid-template-columns:1fr;grid-template-rows:auto auto 1fr auto;justify-items:center;text-align:center;grid-gap:.45rem;gap:.45rem;padding:.9rem .7rem .85rem;min-height:13.5rem;height:auto;overflow:hidden;box-sizing:border-box;align-content:stretch;border:1.5px solid var(--gray-200);border-radius:10px;cursor:pointer;position:relative}.addon-item.on{border-color:var(--blue);background:#f8fbff}.addon-item input[type=checkbox]{position:absolute;top:.65rem;right:.65rem;margin:0;width:16px;height:16px;accent-color:var(--blue)}.addon-item-icon{width:64px;height:64px;border-radius:14px;background:var(--blue-light);color:var(--blue);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:.35rem}.addon-item-icon svg{width:32px;height:32px}.addon-item-body{display:flex;flex-direction:column;gap:.15rem;align-items:center;width:100%;min-width:0;min-height:0;overflow:hidden;padding-top:0}.addon-item-body strong{font-size:.88rem;line-height:1.25;color:var(--navy);-webkit-line-clamp:2}.addon-item em,.addon-item-body strong{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word;max-width:100%}.addon-item em{font-style:normal;color:var(--gray-500);font-size:.75rem;line-height:1.3;-webkit-line-clamp:3}.addon-price{font-weight:700;color:var(--blue);white-space:normal;font-size:.85rem;align-self:end;width:100%;max-width:100%;overflow:hidden;word-break:break-word}.service-pick-block{margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid var(--gray-100)}.service-pick-block h3{margin:0 0 .25rem;font-size:1rem}.services-link{display:inline-block;margin-top:1.25rem;color:var(--blue);font-weight:600;font-size:.92rem}.datetime-layout{display:grid;grid-template-columns:1.2fr .8fr;grid-gap:1rem;gap:1rem}.calendar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.calendar-header button{width:32px;height:32px;border-radius:8px;border:1px solid var(--gray-200);background:var(--white);cursor:pointer;font-size:1.1rem}.calendar-grid,.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:.35rem;gap:.35rem}.calendar-weekdays span{text-align:center;font-size:.75rem;font-weight:700;color:var(--gray-500);padding:.25rem 0}.cal-day{aspect-ratio:1;border:none;border-radius:999px;background:transparent;cursor:pointer;font-weight:600;color:var(--gray-500);position:relative}.cal-day:disabled{cursor:default;opacity:.45}.cal-day.available{color:var(--navy)}.cal-day.available:after{content:"";position:absolute;left:50%;bottom:4px;width:5px;height:5px;border-radius:999px;background:var(--blue);transform:translateX(-50%)}.cal-day.selected{background:var(--blue);color:var(--white)}.cal-day.selected:after{background:var(--white)}.cal-empty{aspect-ratio:1}.cal-status,.selected-date-label{margin:.85rem 0 0;font-size:.9rem}.selected-date-label{font-weight:600;color:var(--navy)}.time-slots h3{margin:0 0 .75rem;font-size:.95rem}.time-list{display:flex;flex-direction:column;gap:.45rem;max-height:340px;overflow:auto}.time-slot{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.7rem .85rem;border-radius:8px;border:1.5px solid var(--gray-200);background:var(--white);cursor:pointer;font-weight:600;color:var(--navy)}.time-slot:disabled{opacity:.4;cursor:default}.time-slot.selected{border-color:var(--blue);background:#f5f9ff}.prev-tag{color:var(--blue);background:var(--blue-light)}.pref-tag,.prev-tag{font-size:.7rem;font-weight:700;padding:.15rem .4rem;border-radius:999px}.pref-tag{color:#0f766e;background:#ccfbf1}.preferred-cleaner-note{margin:0 0 .65rem;font-size:.85rem;line-height:1.4}.address-panel{margin-bottom:1.25rem}.address-with-map{display:grid;grid-template-columns:1.15fr .85fr;grid-gap:1.25rem;gap:1.25rem;align-items:start}.address-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:1rem;gap:1rem}.density-map-wrap{display:flex;flex-direction:column;gap:.65rem;min-width:0}.density-map-status{font-size:.9rem;color:var(--gray-700);line-height:1.45}.density-map-status p{margin:0}.density-map-status strong{color:var(--navy)}.density-privacy{color:var(--gray-500);font-size:.82rem}.density-map-error{color:#b91c1c;margin:0}.density-map,.density-map-empty{position:relative;z-index:0;height:160px;border-radius:10px;border:1.5px solid var(--gray-200);overflow:hidden;background:var(--gray-50)}.density-map-empty{display:flex;align-items:center;justify-content:center;padding:1rem;text-align:center}.density-map .leaflet-container{width:100%;height:100%;font:inherit}.density-fallback-note{margin:1rem 0 0;padding:.75rem .9rem;background:#fffbeb;border:1px solid #fde68a;border-radius:8px;color:#92400e;font-size:.9rem}.nearby-cleaners{display:flex;flex-direction:column;gap:.5rem;margin-top:.1rem}.nearby-cleaners-header h3{margin:0;font-size:.95rem;font-weight:700;color:var(--navy)}.nearby-cleaners-header p{margin:.15rem 0 0;font-size:.8rem;line-height:1.35}.nearby-cleaner-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));grid-gap:.45rem;gap:.45rem}.nearby-cleaner-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.2rem;aspect-ratio:1/1;width:100%;min-height:0;text-align:center;padding:.45rem .35rem;border:1.5px solid var(--gray-200);border-radius:10px;background:#fff;cursor:pointer;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}.nearby-cleaner-tile:hover{border-color:#93c5fd;background:#f8fbff}.nearby-cleaner-tile.selected{border-color:var(--blue);background:#eff6ff;box-shadow:0 0 0 1px var(--blue)}.nearby-cleaner-name{font-size:.78rem;font-weight:700;color:var(--navy);line-height:1.2;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nearby-cleaner-rating{font-size:.72rem;font-weight:600;color:#b45309;line-height:1.2}.nearby-cleaner-meta{font-size:.68rem;color:var(--gray-600);line-height:1.2}.address-grid label{display:flex;flex-direction:column;gap:.4rem;font-size:.88rem;font-weight:600;color:var(--navy)}.address-grid .notes-field,.address-grid label:first-child{grid-column:1/-1}.address-grid input,.address-grid textarea{font:inherit;font-weight:500;padding:.75rem .85rem;border:1.5px solid var(--gray-200);border-radius:8px;color:var(--navy)}.address-grid input:focus,.address-grid textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(29,111,212,.15)}.why-book{background:var(--blue-light);padding:2rem 0;margin:1rem 0 2rem}.why-book h2{margin:0 0 1.25rem}.why-book h2,.why-book-grid{text-align:center;color:var(--navy)}.why-book-grid{display:grid;grid-template-columns:repeat(5,1fr);grid-gap:1rem;gap:1rem;font-weight:600;font-size:.9rem}.booking-summary-wrap{position:-webkit-sticky;position:sticky;bottom:0;z-index:20;background:linear-gradient(180deg,transparent,var(--gray-50) 18%);padding-top:1rem}.booking-summary{display:grid;grid-template-columns:auto 1.4fr auto auto;grid-gap:1.25rem;gap:1.25rem;align-items:center;background:var(--white);border:3px solid var(--blue);border-radius:var(--radius);padding:1rem 1.25rem;box-shadow:var(--shadow-lg)}.summary-thumb{width:64px;height:64px;border-radius:10px;background:url(https://images.unsplash.com/photo-1586023492125-27b2c045efd7?w=160&q=80) 50%/cover}.summary-details h3{margin:0 0 .25rem;font-size:.95rem}.summary-details p{margin:0;color:var(--gray-500);font-size:.9rem}.summary-addons{margin-top:.25rem!important;font-size:.82rem!important}.summary-price{display:flex;flex-direction:column;align-items:flex-end;gap:.15rem}.summary-price span{font-size:.8rem;color:var(--gray-500)}.summary-price strong{font-size:1.35rem;color:var(--navy)}.summary-price em{font-style:normal;font-size:.82rem;color:var(--gray-500)}.summary-actions{display:flex;flex-direction:column;align-items:stretch;gap:.35rem}.summary-actions .btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.summary-cta-short{display:none}.coupon-hint{font-size:.78rem}.coupon-hint,.satisfaction-note{color:var(--gray-500);text-align:center}.satisfaction-note{font-size:.88rem;margin:.85rem 0 0}.muted{color:var(--gray-500)}.nav-auth-link{background:none;border:none;font:inherit;color:inherit;cursor:pointer;padding:0}.review-page{padding:2.5rem 0 4rem;background:var(--gray-50);min-height:70vh}.review-card{max-width:720px;margin:0 auto;background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius);box-shadow:var(--shadow);padding:2rem}.review-card h1{margin:0 0 .5rem;font-size:1.75rem}.review-card>.lead{margin:0 0 1.5rem;color:var(--gray-500)}.review-rows{display:flex;flex-direction:column;gap:.85rem;margin-bottom:1.5rem}.review-row{display:flex;justify-content:space-between;gap:1rem;padding-bottom:.85rem;border-bottom:1px solid var(--gray-100)}.review-row span{color:var(--gray-500)}.review-row strong{text-align:right;color:var(--navy)}.review-total{display:flex;justify-content:space-between;align-items:baseline;margin:1rem 0 1.5rem;font-size:1.15rem}.review-actions{display:flex;flex-wrap:wrap;gap:.75rem}.auth-page{min-height:70vh;display:grid;place-items:center;padding:3rem 1rem;background:linear-gradient(180deg,#f4f8fd,#fff)}.auth-card{width:min(100%,420px);background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:2rem}.auth-card h1{margin:0 0 .35rem;font-size:1.5rem}.auth-card .lead{margin:0 0 1.25rem;color:var(--gray-500)}.auth-form{gap:.85rem}.auth-form,.auth-form label{display:flex;flex-direction:column}.auth-form label{gap:.35rem;font-size:.88rem;font-weight:600}.auth-form input{font:inherit;font-weight:500;padding:.75rem .85rem;border:1.5px solid var(--gray-200);border-radius:8px}.auth-form .btn{margin-top:.5rem;width:100%}.auth-field-hint{font-size:.78rem;font-weight:500;color:var(--gray-500);line-height:1.35}.auth-switch{margin-top:1rem;text-align:center;color:var(--gray-500);font-size:.92rem}.auth-switch a{color:var(--blue);font-weight:600}@media (max-width:960px){.address-with-map,.booking-grid,.booking-hero-inner,.datetime-layout,.why-book-grid{grid-template-columns:1fr}.booking-hero-media{min-height:180px}.addon-list,.service-options{grid-template-columns:repeat(2,minmax(0,1fr))}.booking-summary-wrap{padding:.55rem .75rem calc(.45rem + env(safe-area-inset-bottom, 0));background:linear-gradient(180deg,transparent,var(--gray-50) 28%);box-shadow:none}.booking-summary{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"thumb details price" "actions actions actions";grid-gap:.45rem .7rem;gap:.45rem .7rem;align-items:start;padding:.7rem .8rem;border:3px solid var(--blue);border-radius:12px;box-shadow:var(--shadow);background:var(--white)}.summary-thumb{grid-area:thumb;display:block;width:48px;height:48px;border-radius:8px;margin-top:.1rem}.summary-details{grid-area:details;min-width:0}.summary-details h3{display:block;margin:0 0 .15rem;font-size:.82rem;line-height:1.2}.summary-details .summary-primary{margin:0;font-size:.78rem;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.summary-addons{display:inline;margin:0!important;font-size:.72rem!important;line-height:1.3}.summary-rooms:has(+.summary-zip):after{content:" · "}.summary-extra,.summary-zip .summary-street{display:none}.summary-price{grid-area:price;align-items:flex-end;gap:.05rem;text-align:right}.summary-price span{display:block;font-size:.68rem}.summary-price strong{font-size:1.05rem;line-height:1.15}.summary-price em{display:block;font-size:.68rem;line-height:1.25}.summary-actions{grid-area:actions;gap:.25rem}.summary-cta{width:100%;padding:.55rem .85rem;font-size:.88rem}.summary-cta-full{display:none}.summary-cta-short{display:inline}.coupon-hint{display:block;font-size:.7rem}.satisfaction-note{display:block;margin:.45rem 0 0;font-size:.72rem;line-height:1.3;padding:0 .15rem}}@media (max-width:640px){.address-grid{grid-template-columns:1fr}.addon-list,.service-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.service-option{min-height:12.5rem;padding:.75rem .55rem .7rem;gap:.4rem}.service-option-icon{width:56px;height:56px;border-radius:12px}.service-option-icon svg{width:28px;height:28px}.service-option-body strong{font-size:.8rem}.service-option-body span{font-size:.7rem;-webkit-line-clamp:2}.service-option-price{font-size:.72rem}.addon-item{min-height:12.5rem;padding:.75rem .55rem .7rem;gap:.35rem}.addon-item input[type=checkbox]{top:.55rem;right:.55rem;width:15px;height:15px}.addon-item-icon{width:56px;height:56px;border-radius:12px;margin-top:.2rem}.addon-item-icon svg{width:28px;height:28px}.addon-item-body strong{font-size:.8rem}.addon-item-body em{font-size:.7rem;-webkit-line-clamp:2}.addon-price{font-size:.78rem}.booking-summary{gap:.4rem .55rem;padding:.6rem .7rem}.summary-thumb{width:42px;height:42px}.summary-details h3{font-size:.78rem}.summary-price strong{font-size:1rem}}.beds-baths-block{margin-top:0;padding-top:0;border-top:none}.beds-baths-block h3{font-size:1rem;font-weight:600;margin:0 0 .25rem}.beds-baths-sub{margin-bottom:.75rem}.beds-baths-selects{display:grid;grid-template-columns:1fr 1fr;grid-gap:1.25rem 2rem;gap:1.25rem 2rem;margin-top:.75rem}.beds-baths-bathrooms,.beds-baths-bedrooms{min-width:0}.beds-baths-field{display:flex;flex-direction:column;gap:.45rem}.beds-baths-label-row{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem}.beds-baths-label{font-size:.9rem;font-weight:600;color:var(--navy,#0f3d7a)}.beds-baths-value{font-size:1.1rem;font-weight:800;color:var(--blue);line-height:1;min-width:2ch;text-align:right}.beds-baths-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:.4rem;border-radius:999px;background:linear-gradient(90deg,var(--blue-light),#dbeafe);outline:none;cursor:pointer}.beds-baths-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:1.35rem;height:1.35rem;border-radius:999px;background:var(--blue);border:3px solid #fff;box-shadow:0 1px 4px rgba(15,61,122,.28);cursor:-webkit-grab;cursor:grab;-webkit-transition:transform .12s ease;transition:transform .12s ease}.beds-baths-slider::-webkit-slider-thumb:active{cursor:-webkit-grabbing;cursor:grabbing;transform:scale(1.08)}.beds-baths-slider::-moz-range-thumb{width:1.35rem;height:1.35rem;border-radius:999px;background:var(--blue);border:3px solid #fff;box-shadow:0 1px 4px rgba(15,61,122,.28);cursor:grab}.beds-baths-slider::-moz-range-track{height:.4rem;border-radius:999px;background:linear-gradient(90deg,var(--blue-light),#dbeafe)}.beds-baths-slider:focus-visible{outline:2px solid var(--blue);outline-offset:4px}.beds-baths-range-labels{display:flex;justify-content:space-between;font-size:.78rem;font-weight:600;color:var(--gray-500);margin-top:-.1rem}@media (max-width:640px){.beds-baths-selects{grid-template-columns:1fr;gap:1.25rem}.beds-baths-bedrooms{order:1}.beds-baths-bathrooms{order:2}}.review-cta-banner{display:flex;align-items:flex-start;gap:1rem;background:linear-gradient(135deg,#fef9c3,#fef3c7);border:1.5px solid #fcd34d;border-radius:10px;padding:1rem 1.25rem;margin-bottom:1.5rem}.review-cta-stars{font-size:1.3rem;line-height:1.4;flex-shrink:0;letter-spacing:2px;color:#f59e0b}.review-cta-banner strong{display:block;font-size:.95rem;color:#92400e;margin-bottom:.25rem}.review-cta-banner p{font-size:.85rem;color:#78350f;margin:0;line-height:1.4}.review-modal-card{background:#fff;border-radius:16px;padding:2rem;width:100%;max-width:440px;position:relative;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.15)}.review-modal-close{position:absolute;top:1rem;right:1rem;background:none;border:none;font-size:1.4rem;cursor:pointer;color:#6b7280;line-height:1;padding:.25rem .5rem}.review-modal-icon{font-size:2.5rem;margin-bottom:.5rem}.review-modal-card h2{font-size:1.3rem;font-weight:700;margin:0 0 .25rem}.review-modal-sub{color:#6b7280;font-size:.9rem;margin:0 0 1.25rem}.review-stars{display:flex;justify-content:center;gap:.5rem;margin:.75rem 0 .25rem}.review-star{background:none;border:none;font-size:2.2rem;cursor:pointer;color:#d1d5db;transition:color .1s,transform .1s;line-height:1;padding:0}.review-star.filled,.review-star:hover{color:#f59e0b;transform:scale(1.15)}.review-rating-label{font-size:.9rem;color:#6b7280;margin:.25rem 0 1rem;min-height:1.3em}.review-comment-label{display:flex;flex-direction:column;text-align:left;font-size:.9rem;font-weight:500;gap:.4rem;margin-bottom:1rem}.review-comment-label textarea{padding:.6rem .75rem;border:1.5px solid #d1d5db;border-radius:8px;font-size:.9rem;resize:vertical;font-family:inherit}.review-modal-actions{display:flex;gap:.75rem;justify-content:center;margin-top:.5rem}