/* Healing Session Manager frontend styles.
 * Scoped aggressively to avoid theme/Elementor/WooCommerce form overrides.
 */
.hsm-booking-box,
.hsm-pass-card,
.hsm-verify {
    box-sizing: border-box !important;
    width: 100% !important;
    margin: 24px 0 !important;
    padding: 24px !important;
    border: 1px solid rgba(10, 49, 67, .18) !important;
    border-radius: 10px !important;
    background: #fff !important;
}

.hsm-booking-box * { box-sizing: border-box !important; }

.hsm-booking-box h4,
.hsm-pass-card h3 {
    display: block !important;
    margin: 0 0 20px !important;
}

.hsm-booking-box .form-row {
    display: block !important;
    width: 100% !important;
    max-width: 520px !important;
    margin: 0 0 18px !important;
    padding: 0 !important;
    float: none !important;
    clear: both !important;
}

.hsm-booking-box label,
.hsm-rebook label {
    display: block !important;
    width: 100% !important;
    margin: 0 0 7px !important;
    padding: 0 !important;
    font-weight: 600 !important;
    line-height: 1.4 !important;
}

.hsm-booking-box select,
.hsm-booking-box input[type="date"],
.hsm-booking-box input[type="text"],
.hsm-rebook select,
.hsm-rebook input {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    position: static !important;
    float: none !important;
    width: 100% !important;
    max-width: 520px !important;
    min-height: 48px !important;
    height: auto !important;
    margin: 0 !important;
    padding: 10px 14px !important;
    border: 1px solid #c9c9c9 !important;
    border-radius: 6px !important;
    background: #fff !important;
    color: #102f3e !important;
    font: inherit !important;
    line-height: 1.4 !important;
    text-indent: 0 !important;
    clip: auto !important;
    clip-path: none !important;
    transform: none !important;
    appearance: auto !important;
    -webkit-appearance: menulist !important;
}

.hsm-booking-box input[type="date"] {
    -webkit-appearance: auto !important;
}

.hsm-booking-box select option,
.hsm-rebook select option {
    display: block !important;
    color: #102f3e !important;
    background: #fff !important;
}

.hsm-booking-box small {
    display: block !important;
    max-width: 520px !important;
    margin-top: 2px !important;
    line-height: 1.55 !important;
}

/* Keep the surrounding WooCommerce add-to-cart controls usable even when
 * the active theme applies unusually aggressive global form styles. */
form.cart .quantity {
    display: inline-flex !important;
    align-items: center !important;
    float: none !important;
    width: auto !important;
    margin: 8px 10px 8px 0 !important;
}

form.cart .quantity input.qty {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    position: static !important;
    width: 72px !important;
    min-height: 44px !important;
    padding: 8px !important;
    border: 1px solid #c9c9c9 !important;
    border-radius: 5px !important;
    background: #fff !important;
    color: #102f3e !important;
}

form.cart button.single_add_to_cart_button,
form.cart .single_add_to_cart_button {
    display: inline-flex !important;
    visibility: visible !important;
    opacity: 1 !important;
    align-items: center !important;
    justify-content: center !important;
    position: static !important;
    min-height: 44px !important;
    padding: 10px 22px !important;
    border: 1px solid #102f3e !important;
    border-radius: 5px !important;
    background: #102f3e !important;
    color: #fff !important;
    text-decoration: none !important;
    cursor: pointer !important;
}

.hsm-pass-card { margin-bottom: 20px !important; }
.hsm-qr { margin: 12px 0 !important; line-height: 0 !important; }
.hsm-qr svg { max-width: 100% !important; height: auto !important; }
.hsm-history { margin: 0 0 18px 18px !important; }
.hsm-rebook { margin-top: 18px !important; padding-top: 14px !important; border-top: 1px solid #eee !important; }
.hsm-verify { max-width: 720px !important; margin: 40px auto !important; }
.hsm-verify .button {
    display: inline-block !important;
    padding: 12px 20px !important;
    background: #222 !important;
    color: #fff !important;
    text-decoration: none !important;
    border-radius: 4px !important;
}

@media (max-width: 767px) {
    .hsm-booking-box,
    .hsm-pass-card,
    .hsm-verify { padding: 18px !important; }

    .hsm-booking-box .form-row,
    .hsm-booking-box select,
    .hsm-booking-box input[type="date"] { max-width: none !important; }
}
.hsm-price-preview{display:flex;justify-content:space-between;align-items:center;margin:0 0 18px;padding:12px 14px;border-radius:6px;background:rgba(16,47,62,.05)}
.hsm-price-preview strong{font-size:1.05em}


/* v0.11.15 — editable booking message + non-cancellable policy reminder */
.hsm-message-before-book-now{
    display:block;
    margin:12px 0 0!important;
    color:#66757d!important;
    font-size:12px!important;
    line-height:1.55!important;
}
.hsm-account-booking-note{
    display:block!important;
    width:100%!important;
    margin:14px 0 12px!important;
    padding:10px 12px!important;
    border-left:3px solid #AF7118!important;
    border-radius:4px!important;
    background:#FFF8EC!important;
    color:#17384b!important;
    font-size:13px!important;
    font-weight:500!important;
    line-height:1.55!important;
    box-sizing:border-box!important;
}


/* =========================================================
   v0.11.23 Availability-aware booking calendar
   ========================================================= */
.hsm-availability-date,
.hsm-account-pass-date{
    cursor:pointer!important;
    background-color:#fff!important;
    background-image:
        linear-gradient(45deg,transparent 50%,#17384b 50%),
        linear-gradient(135deg,#17384b 50%,transparent 50%)!important;
    background-position:
        calc(100% - 18px) 22px,
        calc(100% - 13px) 22px!important;
    background-size:5px 5px,5px 5px!important;
    background-repeat:no-repeat!important;
    padding-right:40px!important;
}
.hsm-date-loading{
    opacity:.72!important;
}
.hsm-no-available-dates{
    cursor:not-allowed!important;
    background-color:#f5f3ef!important;
    color:#7b8589!important;
}

.ui-datepicker.hsm-availability-datepicker{
    z-index:9999999!important;
    width:320px!important;
    max-width:calc(100vw - 28px)!important;
    padding:14px!important;
    border:1px solid #E4C99B!important;
    border-radius:10px!important;
    background:#fff!important;
    box-shadow:0 18px 45px rgba(23,56,75,.16)!important;
    color:#17384b!important;
    font-family:inherit!important;
}
.ui-datepicker.hsm-availability-datepicker .ui-datepicker-header{
    position:relative!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    min-height:38px!important;
    margin:0 0 8px!important;
    padding:0 38px!important;
    border:0!important;
    background:transparent!important;
    color:#17384b!important;
}
.ui-datepicker.hsm-availability-datepicker .ui-datepicker-title{
    margin:0!important;
    color:#17384b!important;
    font-family:Georgia,'Times New Roman',serif!important;
    font-size:17px!important;
    font-weight:400!important;
    line-height:1.2!important;
}
.ui-datepicker.hsm-availability-datepicker .ui-datepicker-prev,
.ui-datepicker.hsm-availability-datepicker .ui-datepicker-next{
    position:absolute!important;
    top:0!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    width:34px!important;
    height:34px!important;
    border:1px solid #E4C99B!important;
    border-radius:50%!important;
    background:#fffaf1!important;
    color:#AF7118!important;
    cursor:pointer!important;
    text-decoration:none!important;
}
.ui-datepicker.hsm-availability-datepicker .ui-datepicker-prev{
    left:0!important;
}
.ui-datepicker.hsm-availability-datepicker .ui-datepicker-next{
    right:0!important;
}
.ui-datepicker.hsm-availability-datepicker .ui-datepicker-prev span,
.ui-datepicker.hsm-availability-datepicker .ui-datepicker-next span{
    position:static!important;
    width:auto!important;
    height:auto!important;
    margin:0!important;
    background:none!important;
    text-indent:0!important;
    font-size:0!important;
}
.ui-datepicker.hsm-availability-datepicker .ui-datepicker-prev span:after{
    content:'‹';
    font-size:24px;
    line-height:1;
}
.ui-datepicker.hsm-availability-datepicker .ui-datepicker-next span:after{
    content:'›';
    font-size:24px;
    line-height:1;
}
.ui-datepicker.hsm-availability-datepicker table{
    width:100%!important;
    margin:0!important;
    border-collapse:separate!important;
    border-spacing:3px!important;
    background:transparent!important;
}
.ui-datepicker.hsm-availability-datepicker th{
    padding:6px 2px!important;
    border:0!important;
    background:transparent!important;
    color:#657983!important;
    font-size:11px!important;
    font-weight:600!important;
    text-align:center!important;
}
.ui-datepicker.hsm-availability-datepicker td{
    padding:0!important;
    border:0!important;
    background:transparent!important;
}
.ui-datepicker.hsm-availability-datepicker td a,
.ui-datepicker.hsm-availability-datepicker td span{
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    width:36px!important;
    height:36px!important;
    margin:auto!important;
    padding:0!important;
    border:1px solid transparent!important;
    border-radius:50%!important;
    background:transparent!important;
    color:#17384b!important;
    text-align:center!important;
    text-decoration:none!important;
    font-size:13px!important;
    line-height:1!important;
}
.ui-datepicker.hsm-availability-datepicker td.hsm-date-available a{
    border-color:#D6A65D!important;
    background:#FFF4DF!important;
    color:#17384b!important;
    font-weight:700!important;
}
.ui-datepicker.hsm-availability-datepicker td.hsm-date-available a:hover{
    border-color:#AF7118!important;
    background:#FBE8C5!important;
}
.ui-datepicker.hsm-availability-datepicker td.hsm-date-unavailable span,
.ui-datepicker.hsm-availability-datepicker td.ui-state-disabled span{
    border-color:transparent!important;
    background:#f3f3f1!important;
    color:#b0b4b5!important;
    opacity:.7!important;
}
.ui-datepicker.hsm-availability-datepicker td.ui-datepicker-current-day a{
    border-color:#17384b!important;
    background:#17384b!important;
    color:#fff!important;
}
.ui-datepicker.hsm-availability-datepicker .ui-datepicker-other-month span{
    background:transparent!important;
    color:#d0d2d2!important;
}
@media(max-width:480px){
    .ui-datepicker.hsm-availability-datepicker{
        width:calc(100vw - 24px)!important;
        padding:10px!important;
    }
    .ui-datepicker.hsm-availability-datepicker td a,
    .ui-datepicker.hsm-availability-datepicker td span{
        width:34px!important;
        height:34px!important;
    }
}


/* v0.11.32 — keep the availability datepicker hidden until opened */
#ui-datepicker-div.ui-datepicker{
    display:none;
}
#ui-datepicker-div.ui-datepicker[style*="display: block"],
#ui-datepicker-div.ui-datepicker[style*="display:block"]{
    display:block;
}
.ui-datepicker-inline{
    display:block!important;
}


/* v0.11.47 backend-controlled venue/location */
.hsm-backend-location-row .hsm-location-address{display:block;margin-top:7px;color:#536671;font-size:13px;line-height:1.45}.hsm-backend-location-row .hsm-location-select:disabled{opacity:.72;cursor:not-allowed}


/* v0.11.54: location must be invisible unless Session type = In Person */
.hsm-location-row.hsm-mode-hidden,
.hsm-backend-location-row.hsm-mode-hidden,
.hsm-legacy-location-row.hsm-mode-hidden{
    display:none !important;
    visibility:hidden !important;
}


/* v0.11.55: compact My Bookings icon safety override */
@media(min-width:801px){
    .kelais-account .kelais-booking-card-v2__image img{
        width:82px!important;
        height:82px!important;
        max-width:82px!important;
        max-height:82px!important;
        padding:0!important;
        object-fit:contain!important;
    }
}
