/* ---------- BOOKING PAGE ---------- */
  .visually-hidden {
    position:absolute;
    width:1px;
    height:1px;
    padding:0;
    margin:-1px;
    overflow:hidden;
    clip:rect(0, 0, 0, 0);
    white-space:nowrap;
    border:0;
  }
  .booking-page {
    background:var(--deep);
  }
  .booking-page header {
    background:linear-gradient(180deg, rgba(9,15,15,.42), rgba(15,23,23,.28));
    border-color:rgba(255,255,255,.14);
    box-shadow:0 8px 24px rgba(0,0,0,.1);
  }
  .booking-page header.scrolled {
    background:linear-gradient(180deg, rgba(9,15,15,.5), rgba(15,23,23,.36));
    border-color:rgba(255,255,255,.18);
  }
  .booking-page header .logo,
  .booking-page .nav-links,
  .booking-page .burger span {
    color:var(--paper);
  }
  .booking-page .burger span {
    background:var(--paper);
  }
  .booking-hero {
    position:relative;
    overflow:hidden;
    padding:112px 0 108px;
    color:var(--paper);
    background:
      linear-gradient(90deg, rgba(11,18,18,0.68) 0%, rgba(18,28,27,0.56) 48%, rgba(18,28,27,0.42) 100%),
      linear-gradient(180deg, rgba(10,16,16,0.18), rgba(10,16,16,0.48)),
      url('../assets/images/booking-lotus.jpg') center top / cover no-repeat,
      var(--deep);
    background-color:var(--deep);
    -webkit-backface-visibility:hidden;
    backface-visibility:hidden;
  }
  .booking-hero::before,
  .booking-hero::after {
    content:"";
    position:absolute;
    border:1px solid rgba(247,244,236,0.08);
    border-radius:0;
    pointer-events:none;
  }
  .booking-hero::before {
    width:46rem;
    height:46rem;
    top:-29rem;
    right:-16rem;
  }
  .booking-hero::after {
    width:33rem;
    height:33rem;
    bottom:-23rem;
    left:-13rem;
  }
  .booking-hero .wrap {
    position:relative;
    z-index:1;
    display:grid;
    grid-template-columns:minmax(260px, 0.78fr) minmax(480px, 1.22fr);
    gap:clamp(42px, 8vw, 118px);
    align-items:start;
  }
  .booking-heading {
    position:-webkit-sticky;
    position:sticky;
    top:126px;
    padding-top:44px;
  }
  .booking-back {
    display:inline-block;
    font-family:'JetBrains Mono', monospace;
    font-size:0.68rem;
    letter-spacing:0.08em;
    text-transform:uppercase;
    color:#c9d6c2;
    text-decoration:none;
    margin-bottom:64px;
    transition:color .25s ease, transform .25s ease;
  }
  .booking-back:hover {
    color:var(--accent-gold);
    transform:translateX(-3px);
  }
  .booking-heading .eyebrow {
    color:#b7cdb6;
  }
  .booking-heading h1 {
    color:var(--paper);
    font-size:clamp(3.1rem, 5.4vw, 5.4rem);
    letter-spacing:-0.025em;
  }
  .booking-heading h1 i {
    color:#e7b98e;
  }
  .booking-heading p {
    max-width:31ch;
    color:#c3cec9;
    margin:26px 0 0;
  }
  .booking-form-card {
    background:rgba(247,244,236,0.98);
    color:var(--ink);
    padding:clamp(28px, 5vw, 54px);
    box-shadow:0 30px 80px rgba(0,0,0,0.28);
    border-radius:5px;
    -webkit-font-smoothing:auto;
    -moz-osx-font-smoothing:auto;
    text-rendering:optimizeLegibility;
    font-synthesis:none;
  }
  .booking-form-card.fade-in-up.is-visible {
    transform:none;
  }
  .booking-form-header {
    padding-bottom:24px;
    border-bottom:1px solid var(--line);
  }
  .booking-form-header .eyebrow {
    margin-bottom:9px;
  }
  .booking-form-header h2 {
    font-size:clamp(2rem, 4vw, 2.7rem);
  }
  .booking-form-header p {
    margin:10px 0 0;
    color:#6c7a75;
    font-size:.88rem;
  }
  .booking-form-header .wizard-progress {
    margin-top:18px;
    width:100%;
    height:4px;
    overflow:hidden;
    border-radius:999px;
    background:rgba(31,46,43,.12);
  }
  .wizard-progress span {
    display:block;
    width:0;
    height:100%;
    border-radius:inherit;
    background:var(--accent-gold);
    transition:width .7s var(--ease-luxury);
  }
  .booking-section {
    padding:34px 0;
    border-bottom:1px solid var(--line);
  }
  .booking-section:not([hidden]) {
    animation:wizard-reveal .72s var(--ease-luxury);
  }
  @keyframes wizard-reveal {
    from { opacity:0; transform:translateY(14px); }
    to { opacity:1; transform:none; }
  }
  .booking-section-title {
    display:grid;
    grid-template-columns:28px 1fr;
    gap:12px;
    margin-bottom:21px;
  }
  .booking-section-title > span {
    font-family:'JetBrains Mono', monospace;
    color:var(--accent-gold);
    font-size:.68rem;
    padding-top:4px;
  }
  .booking-section-title h2 {
    font-size:1.55rem;
    color:#172724;
    text-rendering:optimizeLegibility;
  }
  .booking-section-title p {
    margin:4px 0 0;
    color:#455752;
    font-size:.84rem;
    font-weight:400;
  }
  .treatment-options {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:10px;
  }
  .treatment-choice {
    position:relative;
    cursor:pointer;
  }
  .treatment-choice input {
    position:absolute;
    opacity:0;
    inset:0;
    cursor:pointer;
  }
  .treatment-choice > span {
    display:flex;
    flex-direction:column;
    min-height:86px;
    padding:16px 40px 16px 16px;
    border:1px solid var(--line);
    background:#fcfaf5;
    transition:border-color .25s ease, background .25s ease, transform .25s ease, box-shadow .25s ease;
  }
  .treatment-choice strong {
    font-family:'Instrument Serif',
    serif; font-size:1.14rem;
    font-weight:400;
    line-height:1.1;
    color:#172724;
    text-rendering:optimizeLegibility;
  }
  .treatment-choice small {
    margin-top:7px;
    color:#455752;
    font-family:'JetBrains Mono',
    monospace; font-size:.65rem;
  }
  .treatment-choice i {
    position:absolute;
    top:15px;
    right:14px;
    color:var(--accent-gold);
    font-style:normal;
    transition:transform .25s ease;
  }
  .treatment-choice:hover > span {
    transform:translateY(-2px);
    box-shadow:0 8px 16px -13px rgba(28,52,56,.55);
  }
  .treatment-choice input:checked + span {
    background:#eef0e8;
    border-color:var(--sage);
    box-shadow:inset 3px 0 0 var(--accent-gold);
  }
  .treatment-choice input:checked ~ i {
    transform:rotate(45deg);
  }
  .treatment-choice input:focus-visible + span {
    outline:2px solid var(--accent-gold);
    outline-offset:2px;
  }
  .booking-datetime {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:14px;
    padding-left:40px;
  }
  .booking-form-card .form-field {
    margin:0;
  }
  .booking-form-card .form-field label {
    color:#40534d;
    font-weight:500;
    letter-spacing:.075em;
  }
  .booking-form-card .form-field label em {
    font-style:normal;
    color:#7f9791;
    text-transform:none;
    letter-spacing:0;
  }
  .booking-form-card select {
    -webkit-appearance:none;
    appearance:none;
    width:100%;
    min-height:48px;
    padding:13px 38px 13px 14px;
    background:var(--paper) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%231F2E2B' d='m6 8 6-8H0z'/%3E%3C/svg%3E") no-repeat right 14px center;
    border:1px solid var(--line);
    border-radius:2px;
    color:var(--ink);
    font:500 16px 'Inter', sans-serif;
    -webkit-font-smoothing:auto;
    text-rendering:optimizeLegibility;
  }
  .booking-form-card input,
  .booking-form-card textarea {
    color:#172724;
    font-weight:500;
    -webkit-font-smoothing:auto;
    text-rendering:optimizeLegibility;
  }
  .booking-form-card input::placeholder,
  .booking-form-card textarea::placeholder {
    color:#6d7d78;
    opacity:1;
    font-weight:400;
  }
  .booking-form-card select:focus {
    outline:none;
    border-color:var(--accent-gold);
  }
  .booking-details {
    border-bottom:0;
    padding-bottom:30px;
  }
  .booking-fields {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:18px 14px;
    padding-left:40px;
  }
  .booking-fields .form-field:last-child {
    grid-column:1 / -1;
  }
  .booking-fields textarea {
    min-height:84px;
  }
  /* Cloudflare Turnstile widget (SECURITY_AUDIT_2026-08-20.md finding 3) --
     sits below the .booking-fields grid, still indented to line up with
     it under the "03" step number. The widget renders its own fixed-size
     iframe, so this rule only handles the surrounding spacing. */
  .booking-turnstile {
    padding-left:40px;
    margin-top:4px;
  }
  .booking-submit {
    width:100%;
    border:0;
    padding:17px 24px;
    font-size:.75rem;
  }
  .wizard-actions {
    display:flex;
    gap:12px;
    padding-top:26px;
  }
  .wizard-actions .booking-submit { flex:1; }
  .wizard-back {
    border:1px solid var(--line);
    background:transparent;
    color:var(--ink);
  }
  .booking-submit span {
    display:inline-block;
    margin-left:6px;
    transition:transform .25s ease;
  }
  .booking-submit:hover span {
    transform:translateX(4px);
  }
  .booking-submit:disabled,
  .booking-submit[aria-disabled="true"] {
    cursor:not-allowed;
    pointer-events:none;
    opacity:.58;
    filter:saturate(.45);
    box-shadow:none;
    transform:none;
  }
  .booking-submit:disabled span,
  .booking-submit[aria-disabled="true"] span {
    transform:none;
  }
  .booking-submit.is-confirmed {
    opacity:.68;
  }
  #booking-status {
    min-height:1.4em;
    margin:15px 0 0;
    font-family:'JetBrains Mono', monospace;
    font-size:.72rem;
    letter-spacing:.02em;
  }
  .booking-fineprint {
    margin:15px auto 0;
    max-width:54ch;
    text-align:center;
    color:#6c7a75;
    font-size:.75rem;
  }
  .booking-response-frame {
    position:absolute;
    width:1px;
    height:1px;
    border:0;
    opacity:0;
    pointer-events:none;
  }
  .confirmation-modal {
    position:fixed;
    inset:0;
    z-index:2000;
    display:grid;
    place-items:center;
    padding:24px;
    background:rgba(18,34,36,.72);
    -webkit-backdrop-filter:blur(7px);
    backdrop-filter:blur(7px);
  }
  .confirmation-modal[hidden] { display:none; }
  body.confirmation-open { overflow:hidden; }
  .confirmation-card {
    width:min(100%, 560px);
    max-height:calc(100vh - 48px);
    max-height:calc(100dvh - 48px);
    overflow:auto;
    padding:38px;
    border:1px solid rgba(192,160,98,.42);
    border-radius:6px;
    background:var(--paper);
    box-shadow:0 28px 80px rgba(0,0,0,.28);
    animation:confirmation-reveal .85s var(--ease-luxury) both;
  }
  @keyframes confirmation-reveal {
    from { opacity:0; transform:translateY(22px) scale(.985); }
    to { opacity:1; transform:translateY(0) scale(1); }
  }
  .confirmation-mark {
    display:grid;
    place-items:center;
    width:46px;
    height:46px;
    margin-bottom:20px;
    border-radius:50%;
    background:var(--deep);
    color:var(--paper);
    font-size:1.3rem;
  }
  .confirmation-card h2 { font-size:clamp(2rem, 5vw, 2.8rem); }
  .confirmation-delivery-note {
    margin:10px 0 0;
    color:#53625e;
    font-size:.86rem;
    line-height:1.5;
  }
  .confirmation-details { margin:28px 0; border-top:1px solid var(--line); }
  .confirmation-details > div {
    display:grid;
    grid-template-columns:1fr;
    gap:5px;
    padding:14px 0;
    border-bottom:1px solid var(--line);
  }
  .confirmation-details dt {
    font-family:'JetBrains Mono', monospace;
    color:var(--sage);
    font-size:.68rem;
    letter-spacing:.08em;
    text-transform:uppercase;
  }
  .confirmation-details dd {
    margin:0;
    color:var(--ink);
    font-size:.96rem;
    line-height:1.45;
    overflow-wrap:anywhere;
  }
  .confirmation-change-note {
    margin:0 0 24px;
    padding:16px 18px;
    border-left:3px solid var(--accent-gold);
    background:rgba(192,160,98,.1);
    color:#53625e;
    font-size:.82rem;
    line-height:1.6;
  }
  .confirmation-change-note strong { display:block; color:var(--ink); }
  .confirmation-change-note a { color:var(--deep); font-weight:600; }
  #confirmation-done {
    width:100%;
    border:0;
    touch-action:manipulation;
    -webkit-tap-highlight-color:transparent;
  }
  .availability-status {
    display:block;
    min-height:1.35em;
    margin-top:8px;
    color:#62706c;
    font-size:.72rem;
    line-height:1.45;
  }
  .availability-status.is-checking { color:var(--sage); }
  .availability-status.is-error { color:#9b3f35; }
  .availability-status.is-ready { color:#476c54; }
  @media (hover:none) {
    #confirmation-done:hover {
      background:var(--deep);
      transform:none;
      box-shadow:0 2px 5px rgba(31,46,43,.08);
    }
  }
  .flatpickr-calendar {
    width:288px;
    overflow:hidden;
    border-radius:0;
    border:1px solid rgba(192,160,98,.5);
    background:var(--paper);
    box-shadow:0 22px 54px rgba(18,36,39,.22), 0 4px 12px rgba(18,36,39,.09);
    font-family:'Inter', sans-serif;
    padding-bottom:7px;
    contain:layout paint;
    transform-origin:top center;
    backface-visibility:hidden;
    -webkit-font-smoothing:antialiased;
  }
  .flatpickr-calendar.animate.open,
  .flatpickr-calendar.open {
    animation:datepicker-reveal .42s var(--ease-luxury) both;
    will-change:transform, opacity;
  }
  @keyframes datepicker-reveal {
    from { opacity:0; transform:translate3d(0,-7px,0) scale(.985); }
    to { opacity:1; transform:translate3d(0,0,0) scale(1); }
  }
  .flatpickr-calendar::before,
  .flatpickr-calendar::after {
    border-bottom-color:rgba(192,160,98,.5);
  }
  .flatpickr-calendar.arrowTop::after {
    border-bottom-color:var(--deep);
  }
  .flatpickr-months {
    background:var(--deep);
    border-radius:0;
    padding:5px 8px;
    min-height:44px;
    border-bottom:1px solid rgba(192,160,98,.55);
  }
  .flatpickr-current-month,
  .flatpickr-months .flatpickr-month {
    color:var(--paper);
  }
  .flatpickr-current-month {
    display:flex;
    align-items:center;
    justify-content:center;
    gap:2px;
    height:34px;
    padding-top:0;
    font-family:'Instrument Serif', serif;
    font-size:1.2rem;
    letter-spacing:.02em;
  }
  .flatpickr-current-month .flatpickr-monthDropdown-months {
    background:var(--deep);
    color:var(--paper);
    font-family:'Instrument Serif', serif;
    font-size:1.2rem;
    font-weight:400;
    padding:0 4px;
    border-radius:0;
    cursor:pointer;
    transition:color .25s ease, background-color .25s ease;
  }
  .flatpickr-current-month .flatpickr-monthDropdown-months:hover,
  .flatpickr-current-month .flatpickr-monthDropdown-months:focus {
    color:var(--accent-gold);
    background:rgba(247,244,236,.06);
    outline:none;
  }
  .flatpickr-current-month .flatpickr-monthDropdown-months option {
    background:var(--paper);
    color:var(--ink);
    font-family:'Inter', sans-serif;
    font-size:.85rem;
  }
  .flatpickr-current-month .flatpickr-monthDropdown-months option:checked {
    background:var(--accent-gold);
    color:var(--deep);
  }
  .flatpickr-current-month input.cur-year {
    color:rgba(247,244,236,.82);
    font-family:'JetBrains Mono', monospace;
    font-size:.66rem;
    font-weight:400;
    letter-spacing:.08em;
    border-bottom:1px solid transparent;
    transition:color .25s ease, border-color .25s ease;
  }
  .flatpickr-current-month input.cur-year:hover,
  .flatpickr-current-month input.cur-year:focus {
    color:var(--accent-gold);
    border-bottom-color:rgba(192,160,98,.65);
  }
  .flatpickr-months .flatpickr-prev-month,
  .flatpickr-months .flatpickr-next-month {
    fill:var(--paper);
    color:var(--paper);
    top:5px;
    width:34px;
    height:34px;
    padding:10px;
    border:0;
    border-radius:0;
    opacity:.82;
    transition:opacity .25s ease, fill .25s ease, transform .32s var(--ease-luxury);
  }
  .flatpickr-months .flatpickr-prev-month { left:9px; }
  .flatpickr-months .flatpickr-next-month { right:9px; }
  .flatpickr-months .flatpickr-prev-month:hover,
  .flatpickr-months .flatpickr-next-month:hover {
    background:transparent;
    fill:var(--accent-gold);
    opacity:1;
    transform:translateX(2px);
  }
  .flatpickr-months .flatpickr-prev-month:hover {
    transform:translateX(-2px);
  }
  .flatpickr-innerContainer {
    width:100%;
    border:0;
  }
  .flatpickr-rContainer,
  .flatpickr-days,
  .dayContainer {
    width:100%;
    min-width:100%;
    max-width:100%;
  }
  .flatpickr-weekdays {
    height:36px;
    padding:6px 8px 0;
    background:rgba(237,230,214,.5);
    border-bottom:1px solid rgba(31,46,43,.1);
  }
  .flatpickr-weekday {
    color:var(--sage);
    font-family:'JetBrains Mono', monospace;
    font-size:.58rem;
    font-weight:500;
    letter-spacing:.12em;
    text-transform:uppercase;
  }
  .flatpickr-days {
    padding:5px 8px 1px;
    border:0;
    background:#fff;
  }
  .dayContainer {
    padding:0;
    background:#fff;
  }
  .flatpickr-day {
    flex:0 0 calc(100% / 7);
    width:calc(100% / 7);
    max-width:calc(100% / 7);
    height:34px;
    line-height:34px;
    color:var(--ink);
    border-radius:0;
    border-color:rgba(31,46,43,.13);
    font-size:.74rem;
    font-weight:500;
    transition:color .2s ease, background-color .25s var(--ease-soft), border-color .25s ease, transform .28s var(--ease-luxury), box-shadow .25s ease;
  }
  .flatpickr-day.selected,
  .flatpickr-day.selected:hover,
  .flatpickr-day.startRange,
  .flatpickr-day.endRange {
    background:var(--accent-gold);
    border-color:var(--accent-gold);
    color:var(--deep);
    box-shadow:inset 0 0 0 1px rgba(28,52,56,.14), 0 4px 11px rgba(192,160,98,.25);
    font-weight:600;
  }
  .flatpickr-day:hover {
    border-color:var(--sage);
    background:rgba(124,143,110,.13);
    transform:translateY(-1px);
    box-shadow:0 3px 8px rgba(28,52,56,.09);
  }
  .flatpickr-day.today {
    border-color:var(--accent-gold);
    color:var(--deep);
    font-weight:600;
    box-shadow:inset 0 0 0 1px rgba(192,160,98,.25);
  }
  .flatpickr-day.today:hover {
    background:rgba(192,160,98,.15);
  }
  .flatpickr-day.flatpickr-disabled,
  .flatpickr-day.flatpickr-disabled:hover,
  .flatpickr-day.prevMonthDay,
  .flatpickr-day.nextMonthDay {
    color:rgba(31,46,43,.25);
    background:transparent;
    border-color:rgba(31,46,43,.055);
    box-shadow:none;
    transform:none;
  }
  .flatpickr-day:focus-visible,
  .flatpickr-months .flatpickr-prev-month:focus-visible,
  .flatpickr-months .flatpickr-next-month:focus-visible {
    outline:2px solid var(--accent-gold);
    outline-offset:-2px;
  }
  .flatpickr-input[readonly] {
    cursor:pointer;
  }
  .flatpickr-input.active,
  .flatpickr-input:focus {
    border-color:var(--accent-gold);
    box-shadow:0 0 0 3px rgba(192,160,98,.14);
  }
  @media (prefers-reduced-motion:reduce) {
    .flatpickr-calendar.animate.open,
    .flatpickr-calendar.open {
      animation:none;
    }
    .flatpickr-day,
    .flatpickr-months .flatpickr-prev-month,
    .flatpickr-months .flatpickr-next-month {
      transition:none;
    }
  }
  .duration-field {
    margin-top:18px;
    display:block;
    transition:.3s ease;
}
.duration-field.hidden {
    display:none;
}

  @media (max-width:900px) {
    .booking-hero {
      padding-top:96px;
    }
    .booking-hero .wrap {
      grid-template-columns:1fr;
      max-width:700px;
    }
    .booking-heading {
      position:static;
      padding-top:18px;
    }
    .booking-back {
      margin-bottom:36px;
    }
  }

  @media (max-width:600px) {
    .booking-hero {
      padding-bottom:56px;
      background-position:center center, center center, 20% top, center center;
      isolation:isolate;
      transform:translateZ(0);
    }
    .booking-form-card {
      width:calc(100% + 8px);
      max-width:calc(100% + 8px);
      min-width:0;
      padding:25px 20px;
      margin:0 -4px;
      box-sizing:border-box;
    }
    .booking-form-card form,
    .booking-section,
    .booking-section-title,
    .booking-section-title > div {
      width:100%;
      max-width:100%;
      min-width:0;
    }
    .booking-section-title {
      grid-template-columns:28px minmax(0, 1fr);
    }
    .booking-section-title p {
      overflow-wrap:anywhere;
    }
    .booking-datetime,
    .booking-fields {
      grid-template-columns:1fr;
    }
    .treatment-options {
      display:flex;
      width:100%;
      max-width:100%;
      min-width:0;
      box-sizing:border-box;
      gap:10px;
      overflow-x:auto;
      overflow-y:hidden;
      padding:2px 0 12px;
      scroll-snap-type:x mandatory;
      scroll-padding-inline:0;
      overscroll-behavior-inline:contain;
      -webkit-overflow-scrolling:touch;
      scrollbar-width:none;
    }
    .treatment-options::-webkit-scrollbar {
      display:none;
    }
    .treatment-choice {
      flex:0 0 calc(100% - 42px);
      width:calc(100% - 42px);
      max-width:calc(100% - 42px);
      min-width:0;
      scroll-snap-align:center;
      scroll-snap-stop:always;
      touch-action:pan-x;
    }
    .treatment-choice:first-child { scroll-snap-align:start; }
    .treatment-choice:last-child { scroll-snap-align:end; }
    .treatment-choice input {
      touch-action:pan-x;
    }
    .treatment-choice > span {
      width:100%;
      max-width:100%;
      box-sizing:border-box;
      min-height:78px;
      padding:14px 38px 14px 14px;
    }
    .treatment-choice strong {
      font-size:clamp(1.05rem, 5.2vw, 1.25rem);
      overflow-wrap:anywhere;
    }
    .treatment-choice:hover > span {
      transform:none;
      box-shadow:none;
    }
    .booking-datetime,
    .booking-fields,
    .booking-turnstile {
      padding-left:0;
    }
    .booking-section {
      padding:28px 0;
    }
  }
