/* Shared LASERRIX appointment-request modal. */
.booking-overlay{position:fixed;inset:0;z-index:10020;display:none;align-items:center;justify-content:center;padding:22px;background:rgba(36,26,22,.68);backdrop-filter:blur(4px)}
.booking-overlay.open{display:flex}
.booking-dialog{position:relative;width:min(100%,760px);max-height:min(900px,calc(100vh - 44px));overflow:auto;border:1px solid rgba(61,43,38,.12);border-radius:26px;background:#fffdfb;color:var(--brown,#3d2b26);box-shadow:0 28px 90px rgba(36,26,22,.36);font-family:var(--sans,Inter,Arial,sans-serif)}
.booking-dialog *{box-sizing:border-box}
.booking-close{position:sticky;top:12px;z-index:5;float:right;display:flex;align-items:center;justify-content:center;width:38px;height:38px;margin:12px 12px -50px 0;border:0;border-radius:50%;background:var(--cream,#fbf3ee);color:var(--brown,#3d2b26);font-size:24px;line-height:1;cursor:pointer}
.booking-close:hover,.booking-close:focus-visible{background:var(--pink-panel,#f8e8eb)}
.booking-shell{padding:34px 36px 32px}
.booking-kicker{margin:0 46px 5px 0;color:var(--pink-deep,#c66f8a);font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.booking-title{margin:0 46px 8px 0;font-family:var(--serif,"Playfair Display",Georgia,serif);font-size:clamp(29px,5vw,40px);font-weight:600;line-height:1.1;letter-spacing:-.025em}
.booking-intro{margin:0 0 22px;color:var(--brown-soft,#725d54);font-size:15px;line-height:1.55}
.booking-progress{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0 0 25px;padding:0;list-style:none}
.booking-progress li{padding:10px 8px;border-radius:12px;background:var(--cream,#fbf3ee);color:var(--brown-soft,#725d54);font-size:12px;font-weight:800;text-align:center}
.booking-progress li.active{background:var(--brown,#3d2b26);color:#fff}
.booking-progress li.done{background:var(--pink-panel,#f8e8eb);color:var(--brown,#3d2b26)}
.booking-dialog [hidden]{display:none!important}
.booking-step-title{margin:0 0 15px;font-family:var(--serif,"Playfair Display",Georgia,serif);font-size:25px;line-height:1.2}
.booking-fieldset{min-width:0;margin:0 0 20px;padding:0;border:0}
.booking-legend,.booking-label{display:block;margin:0 0 9px;font-size:14px;font-weight:800}
.booking-choice-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.booking-choice{position:relative}
.booking-choice input{position:absolute;opacity:0;pointer-events:none}
.booking-choice label{display:flex;align-items:center;justify-content:center;min-height:48px;padding:10px 12px;border:1.5px solid rgba(61,43,38,.2);border-radius:13px;background:#fff;color:var(--brown,#3d2b26);font-size:14px;font-weight:800;text-align:center;cursor:pointer}
.booking-choice label>span{display:block}
.booking-choice small{display:block;margin-top:2px;color:var(--brown-soft,#725d54);font-size:10.5px;font-weight:600;line-height:1.2}
.booking-choice input:checked+label{border-color:var(--pink-deep,#d3849c);background:var(--pink-panel,#f8e8eb);box-shadow:0 0 0 2px rgba(211,132,156,.12)}
.booking-choice input:focus-visible+label{outline:3px solid rgba(211,132,156,.26);outline-offset:2px}
.booking-services{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;margin-bottom:18px}
.booking-category{overflow:hidden;border:1px solid rgba(61,43,38,.13);border-radius:15px;background:#fff}
.booking-category h4{margin:0;padding:12px 14px;background:var(--cream,#fbf3ee);font-family:var(--serif,"Playfair Display",Georgia,serif);font-size:18px}
.booking-zone{display:flex;align-items:center;gap:10px;min-height:45px;padding:9px 12px;border-top:1px solid rgba(61,43,38,.09);cursor:pointer}
.booking-zone input{width:18px;height:18px;margin:0;accent-color:var(--pink-deep,#d3849c)}
.booking-zone span{flex:1;font-size:14px;line-height:1.35}
.booking-zone strong{font-size:14px;white-space:nowrap}
.booking-packages{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:16px}
.booking-package{position:relative}
.booking-package input{position:absolute;opacity:0}
.booking-package label{display:block;height:100%;min-height:128px;padding:15px;border:1.5px solid rgba(61,43,38,.17);border-radius:15px;background:#fff;cursor:pointer}
.booking-package input:checked+label{border-color:var(--pink-deep,#d3849c);background:var(--pink-panel,#f8e8eb)}
.booking-package input:focus-visible+label{outline:3px solid rgba(211,132,156,.26);outline-offset:2px}
.booking-package strong{display:block;margin-bottom:7px;font-size:17px}
.booking-package span{display:block;color:var(--brown-soft,#725d54);font-size:12.5px;line-height:1.4}
.booking-series{margin-bottom:18px}
.booking-input,.booking-textarea,.booking-select{display:block;width:100%;min-height:50px;padding:12px 14px;border:1.5px solid rgba(61,43,38,.22);border-radius:13px;background:#fffdfb;color:var(--brown,#3d2b26);font:inherit;font-size:16px}
.booking-textarea{min-height:92px;resize:vertical;line-height:1.45}
.booking-input:focus,.booking-textarea:focus,.booking-select:focus{border-color:var(--pink-deep,#d3849c);outline:3px solid rgba(211,132,156,.15);outline-offset:1px}
.booking-help{margin:7px 0 9px;color:var(--brown-soft,#725d54);font-size:12.5px;line-height:1.45}
.booking-date-field{position:relative}
.booking-date-control{display:grid;grid-template-columns:minmax(0,1fr) 52px;gap:8px}
.booking-calendar-toggle{display:flex;align-items:center;justify-content:center;border:1.5px solid rgba(61,43,38,.22);border-radius:13px;background:var(--pink-panel,#f8e8eb);color:var(--brown,#3d2b26);font-size:21px;cursor:pointer}
.booking-calendar-toggle:hover,.booking-calendar-toggle[aria-expanded="true"]{border-color:var(--pink-deep,#d3849c);background:#f5dce3}
.booking-calendar-toggle:focus-visible{outline:3px solid rgba(211,132,156,.26);outline-offset:2px}
.booking-calendar{position:fixed;z-index:8;top:50%;left:50%;width:min(calc(100vw - 32px),360px);padding:14px;border:1px solid rgba(61,43,38,.14);border-radius:18px;background:#fffdfb;box-shadow:0 18px 50px rgba(36,26,22,.22);transform:translate(-50%,-50%)}
.booking-calendar-header{display:grid;grid-template-columns:38px 1fr 38px;align-items:center;gap:8px;margin-bottom:10px;text-align:center}
.booking-calendar-header strong{font-family:var(--serif,"Playfair Display",Georgia,serif);font-size:18px}
.booking-calendar-header button{width:36px;height:36px;border:0;border-radius:10px;background:var(--cream,#fbf3ee);color:var(--brown,#3d2b26);font-size:25px;line-height:1;cursor:pointer}
.booking-calendar-header button:disabled{cursor:default;opacity:.32}
.booking-calendar-header button:focus-visible,.booking-calendar-days button:focus-visible{outline:3px solid rgba(211,132,156,.28);outline-offset:1px}
.booking-calendar-weekdays,.booking-calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.booking-calendar-weekdays{margin-bottom:5px;color:var(--brown-soft,#725d54);font-size:10px;font-weight:800;text-align:center;text-transform:uppercase}
.booking-calendar-weekdays span{padding:4px 0}
.booking-calendar-days button{aspect-ratio:1;border:0;border-radius:10px;background:transparent;color:var(--brown,#3d2b26);font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.booking-calendar-days button:hover:not(:disabled){background:var(--cream,#fbf3ee)}
.booking-calendar-days button.outside{color:#b9aaa3}
.booking-calendar-days button.today{box-shadow:inset 0 0 0 1.5px var(--pink-deep,#d3849c)}
.booking-calendar-days button.selected{background:var(--brown,#3d2b26);color:#fff;box-shadow:none}
.booking-calendar-days button:disabled{cursor:not-allowed;color:#d3c8c3;text-decoration:line-through;opacity:.58}
.booking-step[data-step="1"]{padding-bottom:145px}
.booking-step-footer{position:fixed;z-index:4;left:50%;bottom:max(22px,calc((100vh - 900px)/2 + 22px));display:flex;align-items:stretch;gap:12px;width:min(calc(100vw - 116px),688px);padding:10px;border:1px solid rgba(61,43,38,.13);border-radius:18px;background:rgba(255,253,251,.97);box-shadow:0 12px 36px rgba(36,26,22,.18);transform:translateX(-50%);backdrop-filter:blur(10px)}
.booking-price{flex:1;margin:0;padding:9px 12px;border-radius:13px;background:var(--cream,#fbf3ee);font-size:12px;line-height:1.3}
.booking-price-row{display:flex;justify-content:space-between;gap:14px;margin:2px 0}
.booking-price-row strong{white-space:nowrap}
.booking-saving{color:#9d3f63;font-weight:800}
.booking-price-total{margin-top:5px;padding-top:5px;border-top:1px solid rgba(61,43,38,.14);font-size:16px;font-weight:800}
.booking-price-note{margin:5px 0 0;color:var(--brown-soft,#725d54);font-size:9.5px;line-height:1.25}
.booking-footer-action{display:flex;flex:0 0 150px;flex-direction:column;justify-content:center}
.booking-footer-action .booking-button{width:100%}
.booking-footer-action .booking-error{margin:0 0 6px;font-size:11px}
.booking-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.booking-field{margin-bottom:17px}
.booking-time-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.booking-error{display:none;margin:12px 0;color:#a92922;font-size:13px;font-weight:700;line-height:1.45}
.booking-error.show{display:block}
.booking-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:22px}
.booking-button{display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:12px 22px;border:0;border-radius:999px;background:var(--brown,#3d2b26);color:#fff;font:inherit;font-size:15px;font-weight:800;text-decoration:none;cursor:pointer}
.booking-button:hover{background:var(--ink,#241a16)}
.booking-button.secondary{border:1.5px solid rgba(61,43,38,.22);background:#fff;color:var(--brown,#3d2b26)}
.booking-button:focus-visible,.booking-close:focus-visible{outline:3px solid rgba(211,132,156,.3);outline-offset:2px}
.booking-button:disabled{cursor:wait;opacity:.62}
.booking-submit-note{margin:14px 0 0;padding:13px 15px;border:1px solid rgba(61,43,38,.12);border-radius:13px;background:var(--cream,#fbf3ee);color:#55423a;font-size:13.5px;font-weight:600;line-height:1.55;text-align:left}
.booking-submit-note a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.booking-honeypot{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important;opacity:0!important}
.booking-success{padding:22px 0 8px;text-align:center}
.booking-success-mark{display:flex;align-items:center;justify-content:center;width:58px;height:58px;margin:0 auto 16px;border-radius:50%;background:var(--pink-panel,#f8e8eb);font-size:27px}
.booking-success h3{margin:0 0 10px;font-family:var(--serif,"Playfair Display",Georgia,serif);font-size:32px}
.booking-success p{max-width:520px;margin:0 auto 22px;color:var(--brown-soft,#725d54);font-size:15px;line-height:1.6}
.booking-success-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}

@media(max-width:700px){
  .booking-overlay{padding:0;align-items:stretch}
  .booking-dialog{width:100%;max-height:100vh;border:0;border-radius:0}
  .booking-shell{padding:25px 18px 24px}
  .booking-close{top:8px;margin:8px 8px -46px 0}
  .booking-services,.booking-packages,.booking-grid{grid-template-columns:1fr}
  .booking-packages{gap:8px}.booking-package label{min-height:0}
  .booking-time-options{grid-template-columns:1fr}
  .booking-step[data-step="1"]{padding-bottom:188px}
  .booking-step-footer{left:0;right:0;bottom:0;width:auto;padding:9px 12px calc(9px + env(safe-area-inset-bottom));border-width:1px 0 0;border-radius:0;transform:none}
  .booking-price{padding:8px 10px;font-size:11.5px}
  .booking-price-note{font-size:9px}
  .booking-footer-action{flex-basis:116px}
  .booking-footer-action .booking-button{flex:0 0 auto;min-height:46px;padding:10px 12px;border-radius:14px;font-size:14px}
  .booking-calendar{top:auto;right:12px;bottom:14px;left:12px;width:auto;padding:13px;border-radius:20px;transform:none}
  .booking-calendar-days button{font-size:13px}
  .booking-step:not([data-step="1"]) .booking-actions{position:sticky;bottom:-24px;margin:18px -18px -24px;padding:13px 18px calc(13px + env(safe-area-inset-bottom));background:rgba(255,253,251,.96);border-top:1px solid rgba(61,43,38,.1)}
  .booking-button{flex:1;padding-left:14px;padding-right:14px}
  .booking-progress li{padding:9px 4px;font-size:11px}
}

@media(prefers-reduced-motion:reduce){.booking-overlay,.booking-dialog{scroll-behavior:auto}}
