﻿/* modal-booking.css - #bookingModal: booking form modal with calendar, address fields,
   file upload, booking status, BOOK button, and success/error result views */

/* --- Initial opacity override (was at top of styles.css) --- */
/* Booking modal opens immediately without fade/scale animation. */
#bookingModal {
    opacity: 1;
    transform: none;
    pointer-events: auto;
    transition: none;
}

#bookingModal.modal--active {
    opacity: 1;
    /* Keep active modal untransformed so fixed CTA bar is anchored to viewport */
    transform: none;
    pointer-events: auto;
}

/* --- Main #bookingModal styles --- */

.modal__body {
    font-size: 1rem;
    font-weight: 400;
    color: rgba(var(--modal-design-text-rgb), 0.95);
    line-height: 1.7;
    text-align: left;
    letter-spacing: 0.01em;
    margin-bottom: 1.3rem;
    padding: 0 0.3rem;
}

/*
.modal-sticky-actions {
    display: none !important;
}

#bookingModal[data-state="form"] .modal-sticky-actions {
    display: none !important;
}

#bookingModal[data-state="form"] .modal-sticky-actions::before {
    content: "";
    position: absolute;
    left: 50%;
    bottom: clamp(0.24rem, 1.2vh, 0.8rem);
    width: min(92%, 35rem);
    height: clamp(6rem, 15vh, 9.2rem);
    transform: translateX(-50%);
    pointer-events: none;
    z-index: 1;
    border-radius: 999px;
    background: transparent;
    filter: blur(15px);
    opacity: 0.82;
}

#bookingModal[data-state="form"] .modal-sticky-actions::after {
    content: none;
}

#bookingModal[data-state="form"] .modal-sticky-actions {
    pointer-events: none;
}

#bookingModal[data-state="form"] .modal-sticky-actions > * {
    position: relative;
    z-index: 3;
    pointer-events: auto;
}

#bookingModal .modal-sticky-actions .contact-form__submit-button {
    margin: 0 !important;
}



#bookingModal .modal-sticky-actions .booking-status-slot {
    order: 3;
}

#bookingModal .modal-sticky-actions #confirmBookingBtn {
    order: 4;
}

#bookingModal .modal-sticky-actions .contact-form__checkbox-wrapper {
    order: 5;
    justify-content: center;
    align-items: center;
    margin-top: 1.3rem !important;
    margin-bottom: 0 !important;
    padding-bottom: 0.2rem;
}

#bookingModal[data-state="form"] #bookingForm .modal-sticky-actions {
    --booking-sticky-inline-size: min(calc(100% - 1.2rem), 37.5rem);
    position: sticky;
    bottom: 0;
    width: 100%;
    box-sizing: border-box;
    display: grid;
    justify-items: center;
    place-items: center;
    align-content: end;
    gap: 0.18rem;
    padding-bottom: 0.32rem;
    overflow: visible;
    overscroll-behavior: none;
}

#bookingModal[data-state="form"] #bookingForm .modal-sticky-actions > * {
    width: var(--booking-sticky-inline-size);
    max-width: 100%;
    margin-left: auto !important;
    margin-right: auto !important;
    justify-self: center !important;
    align-self: center !important;
}
*/

#bookingModal[data-state="form"] #bookingForm>.contact-form__group:last-of-type {
    margin-bottom: 0;
}

#bookingModal[data-state="form"] #bookingForm .booking-status-slot {
    width: var(--booking-sticky-inline-size);
    min-height: clamp(3.3rem, 6.2vh, 4.2rem);
    margin: 0.5rem auto 0.78rem;
    display: flex;
    /* keep message pinned at bottom of slot so it hugs the BOOK button */
    align-items: flex-end;
    justify-content: center;
    justify-self: center;
}

#bookingModal[data-state="form"] #bookingForm .modal-sticky-actions #confirmBookingBtn {
    display: block !important;
    width: auto !important;
    min-width: 14rem !important;
    max-width: 96% !important;
    margin-left: auto !important;
    margin-right: auto !important;
    /* TODO-DELETE if stable after test: background: #ffffff !important */
    /* TODO-DELETE if stable after test: border-color: #ffffff !important */
    /* TODO-DELETE if stable after test: color: rgb(var(--modal-design-tone-rgb)) !important */
}

.modal__section-title {
    font-size: 1.2rem;
    font-weight: 800;
    margin-top: 1.3rem;
    margin-bottom: 0.6rem;
    text-transform: uppercase;
    color: rgb(var(--modal-design-text-rgb));
}

.modal__text {
    margin-bottom: 0.72rem;
    color: rgba(var(--modal-design-text-rgb), 0.95);
    font-size: 1rem;
    font-weight: 400;
    line-height: 1.7;
    text-align: left;
    letter-spacing: 0.01em;
}

/* Booking modal typography aligned with FAQ first Q/A style */
#bookingModal,
#bookingModal * {
    font-family: 'Lato', sans-serif !important;
}

#bookingModal .modal__title,
#bookingModal .modal__title span {
    font-family: 'Lato', sans-serif !important;
    font-size: clamp(1rem, 3vw, 1.2rem) !important;
    font-weight: 800 !important;
    text-transform: uppercase;
    letter-spacing: 0.7px;
    line-height: 1.4 !important;
    color: #ffffff;
}

#bookingModal {
    --modal-design-surface-rgb: var(--modal-dark-brown-rgb);
    --modal-design-overlay-rgb: var(--modal-dark-brown-rgb);
    --modal-design-tone-rgb: var(--modal-dark-brown-rgb);
    --booking-form-rgb: var(--modal-design-surface-rgb);
    --booking-sticky-gradient-rgb: var(--booking-form-rgb);
    --booking-form-font-size: 1.2rem;
    --booking-modal-vpad: clamp(0.55rem, 1.8vh, 0.95rem);
    --booking-modal-max-height: calc(100vh - (var(--booking-modal-vpad) * 2));
    --booking-modal-max-height: calc(100dvh - (var(--booking-modal-vpad) * 2));
    overflow-y: hidden;
    overflow-x: hidden;
}

#bookingModal.modal--active {
    align-items: center !important;
    padding-top: var(--booking-modal-vpad);
    padding-bottom: var(--booking-modal-vpad);
    overscroll-behavior: none;
}

#bookingModal[data-state="form"].modal--active {
    padding-top: var(--booking-modal-vpad) !important;
    padding-bottom: var(--booking-modal-vpad) !important;
}

#bookingModal .modal__content {
    /* Allow dropdown menus to escape the modal card */
    overflow: visible;
    max-height: var(--booking-modal-max-height);
    height: auto;
    min-height: 0;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    padding: 2.3rem 2rem 1.6rem;
    max-width: 37.5rem;
    border: 1px solid rgba(var(--modal-design-border-rgb), var(--intake-shell-border-alpha));
    border-radius: 1.5rem;
    background: var(--intake-shell-surface);
    box-shadow: var(--intake-shell-shadow);
    backdrop-filter: var(--intake-shell-backdrop);
    -webkit-backdrop-filter: var(--intake-shell-backdrop);
    position: relative;
    isolation: isolate;
}

/* Booking modal uses the same visual shell as Form Notice. */
#bookingModal {
    background: var(--intake-shell-overlay) !important;
    backdrop-filter: var(--intake-shell-overlay-backdrop) !important;
    -webkit-backdrop-filter: var(--intake-shell-overlay-backdrop) !important;
    isolation: isolate;
}

#bookingModal::before,
#bookingModal::after,
#bookingModal .modal__content::before,
#bookingModal .modal__content::after {
    content: none !important;
}

#bookingModal .modal__body {
    flex: 1 1 auto;
    min-height: 0;
    overflow: visible;
    overscroll-behavior: none;
    -ms-overflow-style: auto;
    scrollbar-width: auto;
    scrollbar-color: auto;
    padding-bottom: 0;
}

#bookingModal .modal__body::-webkit-scrollbar {
    width: auto;
    height: auto;
    display: block;
}

#bookingModal[data-state="form"] .modal__body {
    --booking-top-fade-height: clamp(2rem, 5.2vh, 3.15rem);
    position: relative;
    display: block;
    /* Keep dropdowns visible even when the body scrolls */
    overflow: visible !important;
    padding-top: 0 !important;
    padding-bottom: 0;
}

#bookingModal[data-state="form"] .modal__body::before {
    content: "";
    position: sticky;
    top: 0;
    display: block;
    height: var(--booking-top-fade-height);
    margin-bottom: 0;
    z-index: 24;
    pointer-events: none;
    background:
        linear-gradient(180deg,
            rgba(var(--modal-design-tone-rgb), 0.14) 0%,
            rgba(var(--modal-design-tone-rgb), 0.118) 24%,
            rgba(var(--modal-design-tone-rgb), 0.078) 50%,
            rgba(var(--modal-design-tone-rgb), 0.036) 74%,
            rgba(var(--modal-design-tone-rgb), 0) 100%),
        linear-gradient(180deg,
            rgba(var(--modal-design-surface-rgb), 1) 0%,
            rgba(var(--modal-design-surface-rgb), 0.84) 24%,
            rgba(var(--modal-design-surface-rgb), 0.56) 50%,
            rgba(var(--modal-design-surface-rgb), 0.26) 74%,
            rgba(var(--modal-design-surface-rgb), 0) 100%);
    transition: background 340ms ease;
}

#bookingModal #bookingForm {
    overflow-x: hidden;
    min-height: 100%;
    display: flex;
    flex-direction: column;
}

#bookingModal[data-state="form"] #bookingForm>.contact-form__group:first-child>div {
    margin-top: 0 !important;
}

#bookingModal[data-state="form"] #bookingForm {
    flex: 1 1 auto;
    min-height: 100%;
    overflow: visible;
    padding-bottom: 0;
}

#bookingModal #bookingForm .modal-sticky-actions {
    margin-top: auto;
    bottom: 0;
}

#bookingModal[data-state="success"] .modal__content {
    height: auto;
    max-height: none;
}

#bookingModal[data-state="success"] .modal__body {
    flex: 0 1 auto;
    overflow: visible;
    padding-bottom: 0.45rem;
}

/* Booking modal refactor: one continuous canvas, no inner scroll, no sticky slabs. */
#bookingModal.booking-modal--flat {
    overflow-y: auto;
    overflow-x: hidden;
    overscroll-behavior: contain;
}

#bookingModal.booking-modal--flat.modal--active,
#bookingModal.booking-modal--flat[data-state="form"].modal--active {
    align-items: flex-start !important;
    padding-top: clamp(1rem, 4vh, 2.4rem) !important;
    padding-bottom: clamp(1rem, 4vh, 2.4rem) !important;
}

#bookingModal.booking-modal--flat .modal__content,
#bookingModal.booking-modal--flat[data-state="form"] .modal__content {
    height: auto;
    max-height: none;
    overflow: visible;
}

#bookingModal.booking-modal--flat .modal__body,
#bookingModal.booking-modal--flat[data-state="form"] .modal__body {
    flex: 0 1 auto;
    overflow: visible;
    padding-top: 0 !important;
    padding-bottom: 0;
    margin-bottom: 0;
    -ms-overflow-style: auto;
    scrollbar-width: auto;
}

#bookingModal.booking-modal--flat .modal__body::-webkit-scrollbar {
    width: 0;
    height: 0;
    display: none;
}

#bookingModal.booking-modal--flat[data-state="form"] .modal__body::before {
    content: none;
}

#bookingModal.booking-modal--flat #bookingForm,
#bookingModal.booking-modal--flat[data-state="form"] #bookingForm {
    min-height: 0;
    display: block;
    overflow: visible;
    padding-bottom: 0;
}

#bookingModal.booking-modal--flat[data-state="form"] #bookingForm>.contact-form__group:last-of-type {
    margin-bottom: 1rem;
}

#bookingModal.booking-modal--flat #bookingForm .modal-sticky-actions,
#bookingModal.booking-modal--flat .modal-sticky-actions,
#bookingModal.booking-modal--flat[data-state="form"] .modal-sticky-actions,
#bookingModal.booking-modal--flat[data-state="form"] #bookingForm .modal-sticky-actions {
    position: static;
    bottom: auto;
    left: auto;
    right: auto;
    width: 100%;
    display: grid;
    justify-items: center;
    align-content: start;
    gap: 0.7rem;
    margin-top: 1.2rem;
    padding: 0;
    background: transparent;
    border: 0;
    box-shadow: none;
    overflow: visible;
    pointer-events: auto;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

#bookingModal.booking-modal--flat[data-state="form"] .modal-sticky-actions::before,
#bookingModal.booking-modal--flat[data-state="form"] .modal-sticky-actions::after {
    content: none;
}

#bookingModal.booking-modal--flat[data-state="form"] .modal-sticky-actions>* {
    position: static;
    z-index: auto;
    pointer-events: auto;
}

#bookingModal.booking-modal--flat .modal-sticky-actions .contact-form__checkbox-wrapper,
#bookingModal.booking-modal--flat .modal-sticky-actions .contact-form__submit-button,
#bookingModal.booking-modal--flat[data-state="form"] #bookingForm .modal-sticky-actions .contact-form__checkbox-wrapper,
#bookingModal.booking-modal--flat[data-state="form"] #bookingForm .modal-sticky-actions .contact-form__submit-button {
    width: min(calc(100% - 1.2rem), 37.5rem);
    margin-left: auto !important;
    margin-right: auto !important;
    justify-self: center !important;
}

#bookingModal.booking-modal--flat[data-state="form"] #bookingForm .modal-sticky-actions {
    --booking-sticky-inline-size: min(calc(100% - 1.2rem), 37.5rem);
}

#bookingModal.booking-modal--flat .modal-sticky-actions .booking-status-slot,
#bookingModal.booking-modal--flat[data-state="form"] #bookingForm .booking-status-slot {
    width: var(--booking-sticky-inline-size);
    min-height: 0;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
}

#bookingModal.booking-modal--flat .modal-sticky-actions .contact-form__checkbox-wrapper {
    justify-content: center;
    align-items: center;
    margin-top: 0.2rem !important;
    margin-bottom: 0 !important;
    padding-bottom: 0;
}

#bookingModal.booking-modal--flat[data-state="form"] #bookingForm .modal-sticky-actions #confirmBookingBtn {
    width: auto !important;
    min-width: 14rem !important;
    max-width: 100% !important;
}

#bookingModal .modal__body,
#bookingModal .modal__body p,
#bookingModal .contact-form__label,
#bookingModal .contact-form__terms-link,
#bookingModal .file-attach__name,
#bookingModal .file-attach__remove {
    font-family: 'Lato', sans-serif !important;
    font-size: var(--booking-form-font-size) !important;
    font-weight: 400 !important;
    color: rgba(255, 255, 255, 0.92) !important;
    line-height: 1.6 !important;
    letter-spacing: 0.01em !important;
}

/* Default booking placeholders: match Name placeholder style */
#bookingModal .contact-form__input::placeholder,
#bookingModal .contact-form__textarea::placeholder {
    font-family: 'Lato', sans-serif !important;
    font-size: var(--booking-form-font-size) !important;
    font-weight: 400 !important;
    /* TODO-DELETE if stable after test: color: rgba(255, 255, 255, 0.92) !important */
    /* TODO-DELETE if stable after test: opacity: 0.7 !important */
    line-height: 1.6 !important;
    letter-spacing: 0.01em !important;
}



#bookingModal .booking-row--address-city {
    width: 100%;
    align-items: center;
    justify-content: flex-start;
}

#bookingModal .booking-row--address-city .custom-select-wrapper--city {
    flex: 1 1 auto !important;
    width: auto !important;
    min-width: 0 !important;
}

#bookingModal .booking-row--address-city .custom-select-wrapper--province {
    margin-left: auto;
}

#bookingModal .booking-row--address-city #cityCustomSelect .custom-select__trigger {
    width: 100% !important;
    min-width: 0 !important;
}

#bookingModal .booking-row--address-secondary {
    justify-content: flex-start !important;
    align-items: center !important;
    flex-wrap: nowrap !important;
    gap: 0.55rem !important;
}

#bookingModal .booking-row--address-secondary.booking-row--province-zip {
    justify-content: flex-start !important;
    width: 100% !important;
}

#bookingModal .booking-row--deadline {
    display: grid !important;
    grid-template-columns: max-content 180px max-content;
    align-items: center;
    justify-content: center;
    column-gap: 0.5rem;
    row-gap: 0.35rem;
}

#bookingModal .contact-form__group--deadline {
    margin-top: 0.75rem !important;
    margin-bottom: 0.55rem !important;
}

#bookingModal .booking-row--deadline .booking-row__deadline-label,
#bookingModal .booking-row--deadline .booking-row__deadline-optional {
    margin: 0 !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
    white-space: nowrap;
    text-align: center !important;
}

#bookingModal #deadlineInputMain {
    width: 180px !important;
    min-width: 180px !important;
    max-width: 180px !important;
    justify-self: center;
    /* TODO-DELETE if stable after test: text-align: center !important */
}

#bookingModal .custom-select-wrapper--province {
    flex: 1 1 auto !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    margin-bottom: 0 !important;
}

#bookingModal #provinceCustomSelect,
#bookingModal #provinceCustomSelect .custom-select__trigger {
    width: 100% !important;
    min-width: 0 !important;
}

#bookingModal .booking-row--province-zip input[name="address_zip"] {
    flex: 0 0 180px !important;
    width: 180px !important;
    min-width: 180px !important;
    max-width: 180px !important;
    margin-left: 0 !important;
    text-align: center !important;
}

#bookingModal .booking-row--province-zip input[name="address_zip"]::placeholder {
    text-align: center !important;
}

#bookingModal .booking-static-province {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100% !important;
    min-width: 0 !important;
    /* TODO-DELETE if stable after test: padding-left: 0.65rem !important */
    /* TODO-DELETE if stable after test: padding-right: 0.65rem !important */
    text-transform: uppercase;
    text-align: center;
    cursor: pointer;
    user-select: none;
}

/* Occupation-like style for every editable control in booking modal */
#bookingModal .contact-form__input,
#bookingModal .contact-form__textarea,
#bookingModal .custom-select__trigger {
    font-family: 'Lato', sans-serif !important;
    font-size: var(--booking-form-font-size) !important;
    font-weight: 800 !important;
    line-height: 1.3 !important;
    letter-spacing: 0.01em !important;
}

#bookingModal .contact-form__input,
#bookingModal .contact-form__textarea {
    background-clip: padding-box;
    -webkit-background-clip: padding-box;
    /* TODO-DELETE if stable after test: border: 1px solid rgba(255, 255, 255, 0.34) !important */
    /* TODO-DELETE if stable after test: box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.18), 0 0 0 0 rgba(255, 255, 255, 0) !important */
    transition:
        border-color 220ms ease,
        box-shadow 220ms ease,
        background-color 220ms ease,
        color 220ms ease;
}

#bookingModal .contact-form__input,
#bookingModal .custom-select__trigger {
    min-height: 3.3rem !important;
    height: 3.3rem !important;
}

#bookingModal .file-attach__btn {
    min-height: 5.25rem !important;
    height: 5.25rem !important;
}

#bookingModal .custom-select__trigger {
    /* TODO-DELETE if stable after test: border: 1px solid rgba(255, 255, 255, 0.34) !important */
    /* TODO-DELETE if stable after test: box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 4px 0 rgba(var(--modal-design-tone-rgb), 0.35) !important */
    transition:
        border-color 220ms ease,
        box-shadow 220ms ease,
        background-color 220ms ease,
        color 220ms ease;
}


#bookingModal textarea[name="notes"] {
    min-height: 14rem !important;
}

/* Dropdown text must stay brown on white background */
#bookingModal .custom-option {
    font-size: var(--booking-form-font-size) !important;
    font-weight: 800 !important;
    /* TODO-DELETE if stable after test: color: rgba(var(--modal-design-tone-rgb), 0.9) !important */
}

#bookingModal .file-attach__title {
    font-family: 'Lato', sans-serif !important;
    font-size: var(--booking-form-font-size) !important;
    font-weight: 400 !important;
    line-height: 1.6 !important;
    letter-spacing: 0.01em !important;
    /* TODO-DELETE if stable after test: color: rgba(var(--modal-design-tone-rgb), 0.92) !important */
    text-transform: none !important;
}



#bookingModal .contact-form__submit-button {
    font-size: var(--booking-form-font-size) !important;
}

#bookingModal #confirmBookingBtn {
    font-size: clamp(1.2rem, 4vw, 2rem) !important;
    font-weight: 900 !important;
    letter-spacing: 0.06em !important;
    line-height: 1 !important;
    text-transform: uppercase !important;
    /* TODO-DELETE if stable after test: background: rgb(var(--modal-design-tone-rgb)) !important */
    /* TODO-DELETE if stable after test: color: #ffffff !important */
    /* TODO-DELETE if stable after test: border: 1px solid rgba(var(--modal-design-tone-rgb), 0.98) !important */
    /* TODO-DELETE if stable after test: box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.18), 0 0 0 1px rgba(var(--modal-design-tone-rgb), 0.2) !important */
    /* TODO-DELETE if stable after test: transition: border-color 220ms ease, box-shadow 220ms ease, background-color 220ms ease, color 220ms ease !important */
}

/* ensure BOOK button text remains light regardless of context */
#confirmBookingBtn {
    color: #ffffff !important;
}

#bookingModal #confirmBookingBtn:hover,
#bookingModal #confirmBookingBtn:active,
#bookingModal #confirmBookingBtn:focus-visible {
    /* TODO-DELETE if stable after test: background: rgba(var(--modal-design-tone-rgb), 0.9) !important */
    /* TODO-DELETE if stable after test: color: #ffffff !important */
    border-color: rgba(var(--modal-design-tone-rgb), 0.98) !important;
    /* TODO-DELETE if stable after test: box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.22), 0 0 0 2px rgba(255, 255, 255, 0.28), 0 0 0 4px rgba(var(--modal-design-tone-rgb), 0.28), 0 0.45rem 1rem rgba(var(--modal-design-tone-rgb), 0.24) !important */
}

#bookingModal #confirmBookingBtn:focus-visible {
    outline: none !important;
}
