/* ================================================================
   Boho Stay Availability — v0.37.1 responsive architecture
   One source of truth for search controls / five templates.
   Theme independent: reset only inside this component.
   ================================================================ */

.bshms-booking-search,
.bshms-booking-search *,
.bshms-booking-search *::before,
.bshms-booking-search *::after {
    box-sizing: border-box !important;
}

.bshms-booking-search {
    --bshms-search-purple: #68146f;
    --bshms-search-purple-deep: #4e0f55;
    --bshms-search-gold: #c89524;
    --bshms-search-ink: #29242a;
    --bshms-search-muted: #777078;
    --bshms-search-border: #e4dce5;
    --bshms-search-surface: #fff;
    position: relative !important;
    z-index: 30 !important;
    width: 100% !important;
    max-width: 1240px !important;
    margin: 0 auto !important;
    padding: 0 !important;
    font-family: Arial, Helvetica, sans-serif !important;
    color: var(--bshms-search-ink) !important;
    isolation: isolate !important;
}

.bshms-booking-search.is-full-width {
    width: min(1240px, calc(100vw - 48px)) !important;
    max-width: min(1240px, calc(100vw - 48px)) !important;
    left: 50% !important;
    margin-left: 0 !important;
    transform: translateX(-50%) !important;
}

.bshms-booking-search.has-open-popover {
    z-index: 2147481000 !important;
}

.bshms-booking-search button,
.bshms-booking-search input,
.bshms-booking-search select {
    font: inherit !important;
    text-transform: none !important;
    letter-spacing: normal !important;
}

.bshms-booking-search button {
    appearance: none !important;
    -webkit-appearance: none !important;
}

.bshms-booking-search__form {
    position: relative !important;
    z-index: 1 !important;
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
}

.bshms-booking-search__control {
    position: relative !important;
    z-index: 2 !important;
    min-width: 0 !important;
    margin: 0 !important;
    overflow: visible !important;
    background: var(--bshms-search-surface) !important;
}

.bshms-booking-search__control.is-open {
    z-index: 2147482000 !important;
}

.bshms-booking-search__label {
    display: block !important;
    margin: 0 0 4px !important;
    padding: 0 !important;
    color: var(--bshms-search-muted) !important;
    font-size: 10px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
}

.bshms-booking-search__value-button,
.bshms-booking-search button.bshms-booking-search__value-button {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
    width: 100% !important;
    min-width: 0 !important;
    height: 28px !important;
    min-height: 28px !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    color: var(--bshms-search-ink) !important;
    font-size: 15px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    text-align: left !important;
    cursor: pointer !important;
}

.bshms-booking-search__value-button > span:first-child {
    min-width: 0 !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
}

.bshms-booking-search__calendar-icon {
    position: relative !important;
    width: 18px !important;
    height: 18px !important;
    flex: 0 0 18px !important;
    border: 1.7px solid var(--bshms-search-purple) !important;
    border-radius: 5px !important;
}

.bshms-booking-search__calendar-icon::before {
    content: "" !important;
    position: absolute !important;
    left: 3px !important;
    right: 3px !important;
    top: 4px !important;
    height: 1.5px !important;
    background: var(--bshms-search-purple) !important;
}

.bshms-booking-search__calendar-icon::after {
    content: "" !important;
    position: absolute !important;
    top: -3px !important;
    left: 4px !important;
    width: 7px !important;
    height: 5px !important;
    border-left: 1.7px solid var(--bshms-search-purple) !important;
    border-right: 1.7px solid var(--bshms-search-purple) !important;
}

.bshms-booking-search__chevron {
    width: 9px !important;
    height: 9px !important;
    flex: 0 0 9px !important;
    margin-right: 2px !important;
    border-right: 1.6px solid currentColor !important;
    border-bottom: 1.6px solid currentColor !important;
    transform: rotate(45deg) translateY(-2px) !important;
}

.bshms-booking-search__submit,
.bshms-booking-search button.bshms-booking-search__submit {
    position: relative !important;
    z-index: 2 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: 180px !important;
    margin: 0 !important;
    padding: 0 20px !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: var(--bshms-search-purple) !important;
    box-shadow: none !important;
    color: #fff !important;
    font-size: 13px !important;
    font-weight: 800 !important;
    line-height: 1 !important;
    white-space: nowrap !important;
    cursor: pointer !important;
}

.bshms-booking-search__submit:hover,
.bshms-booking-search button.bshms-booking-search__submit:hover {
    background: var(--bshms-search-purple-deep) !important;
}

.bshms-booking-search__submit:disabled {
    opacity: .7 !important;
    cursor: progress !important;
}

/* Dropdowns */
.bshms-booking-search__menu {
    position: absolute !important;
    z-index: 2147483000 !important;
    top: calc(100% + 6px) !important;
    left: 0 !important;
    width: max(100%, 210px) !important;
    max-height: 260px !important;
    margin: 0 !important;
    padding: 5px !important;
    overflow-y: auto !important;
    overscroll-behavior: contain !important;
    border: 1px solid var(--bshms-search-border) !important;
    border-radius: 10px !important;
    background: #fff !important;
    box-shadow: 0 16px 38px rgba(32, 20, 34, .18) !important;
}

.bshms-booking-search__menu[hidden] {
    display: none !important;
}

.bshms-booking-search__menu-item,
.bshms-booking-search button.bshms-booking-search__menu-item {
    display: flex !important;
    align-items: center !important;
    width: 100% !important;
    min-height: 40px !important;
    margin: 0 !important;
    padding: 9px 10px !important;
    border: 0 !important;
    border-radius: 7px !important;
    background: transparent !important;
    color: #312b32 !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    text-align: left !important;
    cursor: pointer !important;
}

.bshms-booking-search__menu-item:hover,
.bshms-booking-search__menu-item.is-selected {
    background: #f7f2f7 !important;
    color: var(--bshms-search-purple) !important;
}

/* Calendar */
.bshms-booking-calendar {
    position: absolute !important;
    z-index: 2147483000 !important;
    top: calc(100% + 6px) !important;
    left: 0 !important;
    width: 310px !important;
    max-width: calc(100vw - 24px) !important;
    margin: 0 !important;
    padding: 12px !important;
    border: 1px solid var(--bshms-search-border) !important;
    border-radius: 12px !important;
    background: #fff !important;
    box-shadow: 0 18px 44px rgba(32, 20, 34, .20) !important;
    color: #2e2830 !important;
}

.bshms-booking-calendar[hidden] {
    display: none !important;
}

.bshms-booking-calendar__head {
    display: grid !important;
    grid-template-columns: 34px 1fr 34px !important;
    align-items: center !important;
    gap: 6px !important;
    margin-bottom: 10px !important;
}

.bshms-booking-calendar__head strong {
    color: #2e2830 !important;
    font-size: 13px !important;
    text-align: center !important;
}

.bshms-booking-calendar__nav,
.bshms-booking-calendar button.bshms-booking-calendar__nav,
.bshms-booking-calendar__today,
.bshms-booking-calendar button.bshms-booking-calendar__today {
    display: grid !important;
    place-items: center !important;
    min-height: 32px !important;
    margin: 0 !important;
    padding: 0 8px !important;
    border: 1px solid #e4dce5 !important;
    border-radius: 7px !important;
    background: #fff !important;
    color: var(--bshms-search-purple) !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    cursor: pointer !important;
}

.bshms-booking-calendar__weekdays,
.bshms-booking-calendar__days {
    display: grid !important;
    grid-template-columns: repeat(7, 1fr) !important;
    gap: 3px !important;
}

.bshms-booking-calendar__weekdays {
    margin-bottom: 4px !important;
}

.bshms-booking-calendar__weekdays span {
    color: #8b838c !important;
    font-size: 8px !important;
    font-weight: 800 !important;
    text-align: center !important;
    text-transform: uppercase !important;
}

.bshms-booking-calendar__day,
.bshms-booking-calendar button.bshms-booking-calendar__day {
    display: grid !important;
    place-items: center !important;
    aspect-ratio: 1 / 1 !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 7px !important;
    background: transparent !important;
    color: #342e35 !important;
    font-size: 10px !important;
    cursor: pointer !important;
}

.bshms-booking-calendar__day:hover:not(:disabled) {
    background: #f5eff6 !important;
}

.bshms-booking-calendar__day.is-selected {
    background: var(--bshms-search-purple) !important;
    color: #fff !important;
}

.bshms-booking-calendar__day:disabled,
.bshms-booking-calendar__day.is-disabled {
    opacity: .32 !important;
    cursor: default !important;
}

.bshms-booking-calendar__foot {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
    margin-top: 10px !important;
}

.bshms-booking-calendar__hint {
    color: #918993 !important;
    font-size: 8px !important;
    text-align: right !important;
}

/* ------------------------------------------------
   Template 1 — Floating Hotel Search
   ------------------------------------------------ */
.bshms-search-layout--floating {
    display: grid !important;
    grid-template-columns:
        minmax(155px, 1fr) 1px
        minmax(155px, 1fr) 1px
        minmax(120px, .7fr) 1px
        minmax(180px, 1.1fr)
        minmax(190px, .9fr) !important;
    align-items: stretch !important;
    width: 100% !important;
    min-height: 76px !important;
    border: 1px solid var(--bshms-search-border) !important;
    border-radius: 14px !important;
    background: #fff !important;
    box-shadow: 0 14px 34px rgba(52, 30, 54, .10) !important;
}

.bshms-search-layout--floating .bshms-booking-search__control {
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    min-height: 76px !important;
    padding: 11px 16px !important;
    border: 0 !important;
}

.bshms-search-layout--floating .bshms-booking-search__divider {
    align-self: center !important;
    width: 1px !important;
    height: 36px !important;
    background: #e5dde6 !important;
}

.bshms-search-layout--floating .bshms-booking-search__submit {
    min-height: 76px !important;
    border-radius: 0 13px 13px 0 !important;
}

/* ------------------------------------------------
   Template 2 — Underlined
   ------------------------------------------------ */
.bshms-search-layout--underlined {
    display: grid !important;
    grid-template-columns: 1fr 1fr 210px !important;
    gap: 26px !important;
    align-items: end !important;
    padding: 8px 0 !important;
    background: transparent !important;
}

.bshms-search-layout__eyebrow {
    display: block !important;
    margin-bottom: 8px !important;
    color: var(--bshms-search-gold) !important;
    font-size: 8px !important;
    font-weight: 800 !important;
    letter-spacing: .1em !important;
    text-transform: uppercase !important;
}

.bshms-search-layout__pair {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 18px !important;
}

.bshms-search-layout--underlined .bshms-booking-search__control {
    min-height: 58px !important;
    padding: 6px 0 9px !important;
    border-bottom: 1px solid #d7ced8 !important;
    background: transparent !important;
}

.bshms-search-layout--underlined .bshms-booking-search__submit {
    width: 100% !important;
    min-height: 48px !important;
    border-radius: 8px !important;
}

/* ------------------------------------------------
   Template 3 — Split
   ------------------------------------------------ */
.bshms-search-layout--split {
    display: grid !important;
    grid-template-columns: 1fr 1fr 220px !important;
    overflow: visible !important;
    border: 1px solid var(--bshms-search-border) !important;
    border-radius: 12px !important;
    background: #fff !important;
}

.bshms-search-layout__split-block {
    padding: 13px 16px !important;
    border-right: 1px solid var(--bshms-search-border) !important;
}

.bshms-search-layout__section-label {
    display: block !important;
    margin-bottom: 5px !important;
    color: var(--bshms-search-gold) !important;
    font-size: 8px !important;
    font-weight: 800 !important;
    letter-spacing: .08em !important;
    text-transform: uppercase !important;
}

.bshms-search-layout__split-fields {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 10px !important;
}

.bshms-search-layout--split .bshms-booking-search__control {
    min-height: 54px !important;
    padding: 6px 8px !important;
    border-radius: 7px !important;
    background: #faf8fa !important;
}

.bshms-search-layout__split-action {
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    gap: 7px !important;
    padding: 12px !important;
}

.bshms-search-layout__split-action > span {
    color: #827a83 !important;
    font-size: 9px !important;
    text-align: center !important;
}

.bshms-search-layout--split .bshms-booking-search__submit {
    width: 100% !important;
    min-height: 44px !important;
    border-radius: 8px !important;
}

/* ------------------------------------------------
   Template 4 — Minimal
   ------------------------------------------------ */
.bshms-search-layout--minimal {
    display: grid !important;
    grid-template-columns: 170px 1fr 210px !important;
    gap: 24px !important;
    align-items: center !important;
    padding: 6px 0 !important;
    background: transparent !important;
}

.bshms-search-layout__minimal-intro > span {
    display: block !important;
    color: var(--bshms-search-gold) !important;
    font-size: 8px !important;
    font-weight: 800 !important;
    letter-spacing: .08em !important;
    text-transform: uppercase !important;
}

.bshms-search-layout__minimal-intro > strong {
    display: block !important;
    margin-top: 4px !important;
    color: #302a31 !important;
    font-size: 17px !important;
}

.bshms-search-layout__minimal-fields {
    display: grid !important;
    grid-template-columns: 1fr 1fr .7fr 1.15fr !important;
    gap: 18px !important;
}

.bshms-search-layout--minimal .bshms-booking-search__control {
    min-height: 56px !important;
    padding: 6px 0 8px !important;
    border-bottom: 1px solid #d8d0d9 !important;
    background: transparent !important;
}

.bshms-search-layout--minimal .bshms-booking-search__submit {
    width: 100% !important;
    min-height: 46px !important;
    border-radius: 7px !important;
}

/* ------------------------------------------------
   Template 5 — Compact
   ------------------------------------------------ */
.bshms-booking-search--compact {
    --bshms-search-ink: #fff;
    --bshms-search-muted: #c6bec7;
    --bshms-search-border: #504753;
}

.bshms-search-layout--compact {
    display: grid !important;
    grid-template-columns: 135px 1fr 205px !important;
    align-items: stretch !important;
    min-height: 64px !important;
    border-radius: 7px !important;
    background: #211c25 !important;
    overflow: visible !important;
}

.bshms-search-layout__compact-brand {
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    padding: 9px 14px !important;
    border-right: 1px solid #504753 !important;
    color: #fff !important;
}

.bshms-search-layout__compact-brand span {
    color: var(--bshms-search-gold) !important;
    font-size: 7px !important;
    font-weight: 800 !important;
    letter-spacing: .1em !important;
}

.bshms-search-layout__compact-brand strong {
    margin-top: 3px !important;
    font-size: 12px !important;
}

.bshms-search-layout__compact-fields {
    display: grid !important;
    grid-template-columns: 1fr 1fr .7fr 1.15fr !important;
}

.bshms-search-layout--compact .bshms-booking-search__control {
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    min-height: 64px !important;
    padding: 7px 12px !important;
    border-right: 1px solid #504753 !important;
    background: #211c25 !important;
}

.bshms-search-layout--compact .bshms-booking-search__value-button {
    color: #fff !important;
    font-size: 12px !important;
}

.bshms-search-layout--compact .bshms-booking-search__chevron {
    color: #fff !important;
}

.bshms-search-layout--compact .bshms-booking-search__calendar-icon,
.bshms-search-layout--compact .bshms-booking-search__calendar-icon::after {
    border-color: var(--bshms-search-gold) !important;
}

.bshms-search-layout--compact .bshms-booking-search__calendar-icon::before {
    background: var(--bshms-search-gold) !important;
}

.bshms-search-layout--compact .bshms-booking-search__submit {
    min-height: 64px !important;
    border-radius: 0 7px 7px 0 !important;
    background: var(--bshms-search-gold) !important;
    color: #241c25 !important;
}

.bshms-booking-search--compact .bshms-booking-search__menu,
.bshms-booking-search--compact .bshms-booking-calendar {
    --bshms-search-ink: #29242a;
    --bshms-search-muted: #777078;
    color: #29242a !important;
}

/* ================================================================
   Tablet — one deliberate breakpoint.
   ================================================================ */
@media (max-width: 960px) {
    .bshms-booking-search.is-full-width {
        width: calc(100vw - 32px) !important;
        max-width: calc(100vw - 32px) !important;
    }

    .bshms-search-layout--floating {
        grid-template-columns: 1fr 1fr !important;
        min-height: 0 !important;
    }

    .bshms-search-layout--floating .bshms-booking-search__divider {
        display: none !important;
    }

    .bshms-search-layout--floating .bshms-booking-search__control {
        min-height: 68px !important;
        border-bottom: 1px solid var(--bshms-search-border) !important;
    }

    .bshms-search-layout--floating .bshms-booking-search__control:nth-child(1),
    .bshms-search-layout--floating .bshms-booking-search__control:nth-child(5) {
        border-right: 1px solid var(--bshms-search-border) !important;
    }

    .bshms-search-layout--floating .bshms-booking-search__submit {
        grid-column: 1 / -1 !important;
        min-height: 50px !important;
        border-radius: 0 0 13px 13px !important;
    }

    .bshms-search-layout--underlined {
        grid-template-columns: 1fr 1fr !important;
    }

    .bshms-search-layout--underlined .bshms-search-layout__action {
        grid-column: 1 / -1 !important;
    }

    .bshms-search-layout--underlined .bshms-booking-search__submit {
        max-width: 320px !important;
    }

    .bshms-search-layout--split {
        grid-template-columns: 1fr 1fr !important;
    }

    .bshms-search-layout__split-action {
        grid-column: 1 / -1 !important;
        flex-direction: row !important;
        align-items: center !important;
    }

    .bshms-search-layout__split-action > span {
        flex: 1 !important;
        text-align: left !important;
    }

    .bshms-search-layout--split .bshms-booking-search__submit {
        width: auto !important;
    }

    .bshms-search-layout--minimal {
        grid-template-columns: 1fr !important;
        gap: 12px !important;
    }

    .bshms-search-layout__minimal-intro {
        display: none !important;
    }

    .bshms-search-layout--minimal .bshms-booking-search__submit {
        max-width: 320px !important;
    }

    .bshms-search-layout--compact {
        grid-template-columns: 120px 1fr !important;
    }

    .bshms-search-layout--compact .bshms-booking-search__submit {
        grid-column: 1 / -1 !important;
        min-height: 48px !important;
        border-radius: 0 0 7px 7px !important;
    }
}

/* ================================================================
   Mobile — exactly one responsive architecture.
   Floating = 2x2 fields + CTA.
   No viewport breakout, no vertical four-field stack.
   ================================================================ */
@media (max-width: 560px) {
    .bshms-booking-search,
    .bshms-booking-search.is-full-width {
        left: auto !important;
        width: 100% !important;
        max-width: 100% !important;
        margin: 0 !important;
        padding: 0 12px !important;
        transform: none !important;
    }

    .bshms-search-layout--floating {
        display: grid !important;
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important;
        width: 100% !important;
        min-height: 0 !important;
        border-radius: 13px !important;
        overflow: visible !important;
    }

    .bshms-search-layout--floating .bshms-booking-search__divider {
        display: none !important;
    }

    .bshms-search-layout--floating .bshms-booking-search__control {
        min-width: 0 !important;
        min-height: 66px !important;
        height: 66px !important;
        padding: 9px 11px !important;
        border: 0 !important;
        border-bottom: 1px solid var(--bshms-search-border) !important;
    }

    /* Markup children: 1=check-in, 3=check-out, 5=guests, 7=room type */
    .bshms-search-layout--floating .bshms-booking-search__control:nth-child(1),
    .bshms-search-layout--floating .bshms-booking-search__control:nth-child(5) {
        border-right: 1px solid var(--bshms-search-border) !important;
    }

    .bshms-search-layout--floating .bshms-booking-search__control:nth-child(1) {
        border-radius: 12px 0 0 0 !important;
    }

    .bshms-search-layout--floating .bshms-booking-search__control:nth-child(3) {
        border-radius: 0 12px 0 0 !important;
    }

    .bshms-search-layout--floating .bshms-booking-search__label {
        margin-bottom: 3px !important;
        font-size: 9px !important;
    }

    .bshms-search-layout--floating .bshms-booking-search__value-button {
        height: 25px !important;
        min-height: 25px !important;
        font-size: 12px !important;
    }

    .bshms-search-layout--floating .bshms-booking-search__calendar-icon {
        width: 16px !important;
        height: 16px !important;
        flex-basis: 16px !important;
    }

    .bshms-search-layout--floating .bshms-booking-search__submit {
        grid-column: 1 / -1 !important;
        width: 100% !important;
        min-width: 0 !important;
        min-height: 48px !important;
        height: 48px !important;
        border-radius: 0 0 12px 12px !important;
        font-size: 12px !important;
    }

    /* Full-width dropdown overlay across the compact two-column card. */
    .bshms-booking-search--floating .bshms-booking-search__control--dropdown .bshms-booking-search__menu {
        width: calc(200% + 1px) !important;
        min-width: 0 !important;
        max-width: none !important;
    }

    .bshms-booking-search--floating [data-bshms-dropdown="guests"] .bshms-booking-search__menu {
        left: 0 !important;
        right: auto !important;
    }

    .bshms-booking-search--floating [data-bshms-dropdown="room_type"] .bshms-booking-search__menu {
        left: auto !important;
        right: 0 !important;
    }

    .bshms-booking-search__menu {
        top: calc(100% + 5px) !important;
        max-height: min(250px, 42vh) !important;
    }

    .bshms-booking-search__menu-item,
    .bshms-booking-search button.bshms-booking-search__menu-item {
        min-height: 44px !important;
        padding: 11px 10px !important;
        font-size: 13px !important;
    }

    .bshms-booking-calendar {
        position: fixed !important;
        z-index: 2147483000 !important;
        top: 50% !important;
        left: 50% !important;
        width: min(330px, calc(100vw - 28px)) !important;
        max-width: calc(100vw - 28px) !important;
        transform: translate(-50%, -50%) !important;
        box-shadow: 0 22px 60px rgba(28, 18, 30, .28) !important;
    }

    /* Underlined */
    .bshms-search-layout--underlined {
        display: block !important;
        padding: 0 12px !important;
    }

    .bshms-search-layout--underlined .bshms-search-layout__group {
        margin-bottom: 14px !important;
    }

    .bshms-search-layout--underlined .bshms-search-layout__pair {
        gap: 10px !important;
    }

    .bshms-search-layout--underlined .bshms-booking-search__submit {
        width: 100% !important;
        max-width: none !important;
    }

    /* Split */
    .bshms-search-layout--split {
        display: block !important;
        margin: 0 12px !important;
    }

    .bshms-search-layout__split-block {
        padding: 10px !important;
        border-right: 0 !important;
        border-bottom: 1px solid var(--bshms-search-border) !important;
    }

    .bshms-search-layout__split-action {
        display: block !important;
        padding: 10px !important;
    }

    .bshms-search-layout__split-action > span {
        display: none !important;
    }

    .bshms-search-layout--split .bshms-booking-search__submit {
        width: 100% !important;
    }

    /* Minimal */
    .bshms-search-layout--minimal {
        display: block !important;
        padding: 0 12px !important;
    }

    .bshms-search-layout__minimal-fields {
        grid-template-columns: 1fr 1fr !important;
        gap: 10px 12px !important;
    }

    .bshms-search-layout--minimal .bshms-booking-search__submit {
        width: 100% !important;
        max-width: none !important;
        margin-top: 12px !important;
    }

    /* Compact */
    .bshms-search-layout--compact {
        display: block !important;
        margin: 0 12px !important;
        overflow: visible !important;
    }

    .bshms-search-layout__compact-brand {
        min-height: 42px !important;
        padding: 7px 10px !important;
        border-right: 0 !important;
        border-bottom: 1px solid #504753 !important;
    }

    .bshms-search-layout__compact-fields {
        grid-template-columns: 1fr 1fr !important;
    }

    .bshms-search-layout--compact .bshms-booking-search__control {
        min-height: 58px !important;
        border-bottom: 1px solid #504753 !important;
    }

    .bshms-search-layout--compact .bshms-booking-search__submit {
        width: 100% !important;
        min-height: 48px !important;
        border-radius: 0 0 7px 7px !important;
    }
}


/* ================================================================
   v0.35.0 — Availability Results Modal / Mobile Booking Drawer
   Results no longer expand the page beneath the search shortcode.
   ================================================================ */
html.bshms-availability-modal-open,
body.bshms-availability-modal-open {
    overflow: hidden !important;
}

.bshms-availability-overlay {
    position: fixed !important;
    z-index: 2147483500 !important;
    inset: 0 !important;
    display: grid !important;
    place-items: center !important;
    padding: 24px !important;
    font-family: Arial, Helvetica, sans-serif !important;
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
    transition: opacity .18s ease, visibility .18s ease !important;
}

.bshms-availability-overlay[hidden] {
    display: none !important;
}

.bshms-availability-overlay.is-open {
    opacity: 1 !important;
    visibility: visible !important;
    pointer-events: auto !important;
}

.bshms-availability-overlay,
.bshms-availability-overlay *,
.bshms-availability-overlay *::before,
.bshms-availability-overlay *::after {
    box-sizing: border-box !important;
}

.bshms-availability-overlay__backdrop {
    position: absolute !important;
    inset: 0 !important;
    background: rgba(26, 18, 27, .54) !important;
    backdrop-filter: blur(6px) !important;
    -webkit-backdrop-filter: blur(6px) !important;
}

.bshms-availability-overlay__panel {
    position: relative !important;
    z-index: 1 !important;
    display: flex !important;
    width: min(1080px, calc(100vw - 48px)) !important;
    max-height: min(82vh, 820px) !important;
    flex-direction: column !important;
    overflow: hidden !important;
    border: 1px solid #e8dfe9 !important;
    border-radius: 20px !important;
    background: #fff !important;
    box-shadow: 0 28px 90px rgba(30, 16, 31, .28) !important;
    outline: 0 !important;
    transform: translateY(14px) scale(.985) !important;
    transition: transform .18s ease !important;
}

.bshms-availability-overlay.is-open .bshms-availability-overlay__panel {
    transform: translateY(0) scale(1) !important;
}

.bshms-availability-overlay__header {
    display: flex !important;
    align-items: flex-start !important;
    justify-content: space-between !important;
    gap: 18px !important;
    padding: 23px 25px 18px !important;
    border-bottom: 1px solid #eee7ef !important;
    background: #fff !important;
}

.bshms-availability-overlay__eyebrow {
    display: block !important;
    margin-bottom: 4px !important;
    color: #c19127 !important;
    font-size: 9px !important;
    font-weight: 800 !important;
    letter-spacing: .12em !important;
    text-transform: uppercase !important;
}

.bshms-availability-overlay__header h2 {
    margin: 0 !important;
    color: #5e1668 !important;
    font-family: Arial, Helvetica, sans-serif !important;
    font-size: 25px !important;
    font-weight: 800 !important;
    line-height: 1.15 !important;
}

.bshms-availability-overlay__header p {
    margin: 6px 0 0 !important;
    color: #756d76 !important;
    font-size: 12px !important;
    line-height: 1.4 !important;
}

.bshms-availability-overlay__close,
.bshms-availability-overlay button.bshms-availability-overlay__close {
    all: unset !important;
    display: grid !important;
    place-items: center !important;
    flex: 0 0 38px !important;
    width: 38px !important;
    height: 38px !important;
    border-radius: 50% !important;
    background: #f5f0f6 !important;
    color: #5e1668 !important;
    font-size: 26px !important;
    font-weight: 400 !important;
    line-height: 1 !important;
    cursor: pointer !important;
}

.bshms-availability-overlay__content {
    min-height: 180px !important;
    padding: 20px 24px 24px !important;
    overflow-y: auto !important;
    overscroll-behavior: contain !important;
    -webkit-overflow-scrolling: touch !important;
    background: #faf8fa !important;
}

.bshms-availability-overlay .bshms-booking-search__message {
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 28px 18px !important;
    border-radius: 12px !important;
    background: #fff !important;
    color: #756d76 !important;
    font-size: 13px !important;
    text-align: center !important;
}

.bshms-availability-overlay .bshms-booking-search__message:empty {
    display: none !important;
}

.bshms-availability-overlay .bshms-booking-search__message.is-error {
    border: 1px solid #f0d1d5 !important;
    background: #fff5f6 !important;
    color: #913744 !important;
}

.bshms-availability-overlay .bshms-booking-results {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0,1fr)) !important;
    gap: 16px !important;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
}

.bshms-availability-overlay .bshms-booking-results[hidden] {
    display: none !important;
}

.bshms-availability-overlay .bshms-room-result {
    min-height: 190px !important;
    border-radius: 14px !important;
    box-shadow: none !important;
}

.bshms-availability-overlay .bshms-room-result__image,
.bshms-availability-overlay .bshms-room-result__image img {
    min-height: 190px !important;
}

.bshms-availability-loading {
    display: grid !important;
    place-items: center !important;
    min-height: 230px !important;
    padding: 28px !important;
    text-align: center !important;
}

.bshms-availability-loading[hidden] {
    display: none !important;
}

.bshms-availability-loading__spinner {
    display: block !important;
    width: 34px !important;
    height: 34px !important;
    margin-bottom: 13px !important;
    border: 3px solid #eadfeb !important;
    border-top-color: #5e1668 !important;
    border-radius: 50% !important;
    animation: bshms-availability-spin .72s linear infinite !important;
}

.bshms-availability-loading strong {
    display: block !important;
    color: #3a303b !important;
    font-size: 15px !important;
}

.bshms-availability-loading small {
    display: block !important;
    margin-top: 6px !important;
    color: #817783 !important;
    font-size: 11px !important;
}

@keyframes bshms-availability-spin {
    to { transform: rotate(360deg); }
}

.bshms-booking-search__submit.is-loading,
.bshms-booking-search button.bshms-booking-search__submit.is-loading {
    cursor: progress !important;
    opacity: .82 !important;
}

/* Mobile becomes an intentional full-height booking drawer, not a tiny popup. */
@media (max-width: 700px) {
    .bshms-availability-overlay {
        place-items: end stretch !important;
        padding: 0 !important;
    }

    .bshms-availability-overlay__backdrop {
        background: rgba(28, 19, 29, .46) !important;
        backdrop-filter: blur(3px) !important;
        -webkit-backdrop-filter: blur(3px) !important;
    }

    .bshms-availability-overlay__panel {
        width: 100% !important;
        max-width: none !important;
        max-height: 92dvh !important;
        min-height: 68dvh !important;
        border-width: 1px 0 0 !important;
        border-radius: 22px 22px 0 0 !important;
        transform: translateY(100%) !important;
        box-shadow: 0 -16px 50px rgba(30,16,31,.22) !important;
    }

    .bshms-availability-overlay.is-open .bshms-availability-overlay__panel {
        transform: translateY(0) !important;
    }

    .bshms-availability-overlay__panel::before {
        content: "" !important;
        position: absolute !important;
        top: 8px !important;
        left: 50% !important;
        width: 42px !important;
        height: 4px !important;
        border-radius: 999px !important;
        background: #d9d0da !important;
        transform: translateX(-50%) !important;
    }

    .bshms-availability-overlay__header {
        position: sticky !important;
        z-index: 3 !important;
        top: 0 !important;
        padding: 24px 18px 14px !important;
    }

    .bshms-availability-overlay__header h2 {
        font-size: 21px !important;
    }

    .bshms-availability-overlay__header p {
        font-size: 11px !important;
    }

    .bshms-availability-overlay__close,
    .bshms-availability-overlay button.bshms-availability-overlay__close {
        width: 36px !important;
        height: 36px !important;
        flex-basis: 36px !important;
    }

    .bshms-availability-overlay__content {
        padding: 14px 14px max(20px, env(safe-area-inset-bottom)) !important;
    }

    .bshms-availability-overlay .bshms-booking-results {
        grid-template-columns: 1fr !important;
        gap: 12px !important;
    }

    .bshms-availability-overlay .bshms-room-result {
        grid-template-columns: 112px minmax(0,1fr) !important;
        min-height: 142px !important;
        border-radius: 12px !important;
    }

    .bshms-availability-overlay .bshms-room-result__image,
    .bshms-availability-overlay .bshms-room-result__image img {
        width: 112px !important;
        min-height: 142px !important;
        height: 100% !important;
        max-height: none !important;
    }

    .bshms-availability-overlay .bshms-room-result__body {
        padding: 13px !important;
    }

    .bshms-availability-overlay .bshms-room-result__eyebrow {
        margin-bottom: 3px !important;
        font-size: 9px !important;
    }

    .bshms-availability-overlay .bshms-room-result h3 {
        margin-bottom: 5px !important;
        font-size: 16px !important;
    }

    .bshms-availability-overlay .bshms-room-result p {
        display: none !important;
    }

    .bshms-availability-overlay .bshms-room-result__footer {
        gap: 8px !important;
    }

    .bshms-availability-overlay .bshms-room-result__price strong {
        font-size: 13px !important;
    }

    .bshms-availability-overlay .bshms-room-result__price span {
        font-size: 9px !important;
    }

    .bshms-availability-overlay .bshms-room-result__book {
        min-height: 34px !important;
        padding: 7px 10px !important;
        border-radius: 7px !important;
        font-size: 11px !important;
    }

    .bshms-availability-loading {
        min-height: 45dvh !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .bshms-availability-overlay,
    .bshms-availability-overlay__panel,
    .bshms-availability-loading__spinner {
        transition: none !important;
        animation-duration: .001ms !important;
    }
}


/* ================================================================
   v0.37.2 — Floating search outer-shell alignment correction
   One visible card surface, one shared height, one unified radius.
   ================================================================ */
.bshms-booking-search--floating {
    background: transparent !important;
    box-shadow: none !important;
    overflow: visible !important;
}

.bshms-booking-search--floating .bshms-search-layout--floating {
    position: relative !important;
    isolation: isolate !important;
    overflow: visible !important;
    border: 1px solid var(--bshms-search-border) !important;
    border-radius: 16px !important;
    background: #fff !important;
    box-shadow: 0 16px 38px rgba(52, 30, 54, .12) !important;
}

/* Remove any visual shell from the search wrapper itself. */
.bshms-booking-search--floating::before,
.bshms-booking-search--floating::after,
.bshms-booking-search--floating .bshms-search-layout--floating::before,
.bshms-booking-search--floating .bshms-search-layout--floating::after {
    content: none !important;
    display: none !important;
}

/* Desktop: controls and CTA share exactly the same outer height. */
@media (min-width: 961px) {
    .bshms-booking-search--floating .bshms-search-layout--floating {
        min-height: 78px !important;
    }

    .bshms-booking-search--floating .bshms-search-layout--floating .bshms-booking-search__control,
    .bshms-booking-search--floating .bshms-search-layout--floating .bshms-booking-search__submit {
        min-height: 78px !important;
        height: 78px !important;
    }

    .bshms-booking-search--floating .bshms-search-layout--floating .bshms-booking-search__control:first-child {
        border-radius: 15px 0 0 15px !important;
    }

    .bshms-booking-search--floating .bshms-search-layout--floating .bshms-booking-search__submit {
        align-self: stretch !important;
        border-radius: 0 15px 15px 0 !important;
        margin: -1px -1px -1px 0 !important;
        min-height: 80px !important;
        height: 80px !important;
    }
}

/* Tablet/mobile: keep one visible shell and matching outside corners. */
@media (max-width: 960px) {
    .bshms-booking-search--floating .bshms-search-layout--floating {
        overflow: visible !important;
        border-radius: 14px !important;
    }

    .bshms-booking-search--floating .bshms-search-layout--floating .bshms-booking-search__submit {
        margin: 0 -1px -1px -1px !important;
        width: calc(100% + 2px) !important;
        border-radius: 0 0 13px 13px !important;
    }
}


/* ================================================================
   v0.39.1 — Availability result-card architecture
   Complete plugin-owned card styling; no theme-dependent article/image layout.
   ================================================================ */
.bshms-availability-overlay .bshms-booking-results{
    align-items:start!important;
}

.bshms-availability-overlay .bshms-room-result{
    display:grid!important;
    grid-template-columns:1fr!important;
    grid-template-rows:auto 1fr!important;
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    min-height:0!important;
    margin:0!important;
    padding:0!important;
    overflow:hidden!important;
    border:1px solid #e7dfe8!important;
    border-radius:14px!important;
    background:#fff!important;
    box-shadow:0 8px 24px rgba(44,28,47,.06)!important;
}

.bshms-availability-overlay .bshms-room-result__image{
    position:relative!important;
    display:block!important;
    width:100%!important;
    min-width:0!important;
    max-width:none!important;
    min-height:0!important;
    height:auto!important;
    aspect-ratio:16 / 10!important;
    margin:0!important;
    padding:0!important;
    overflow:hidden!important;
    background:#eee8ef!important;
}

.bshms-availability-overlay .bshms-room-result__image img{
    position:absolute!important;
    inset:0!important;
    display:block!important;
    width:100%!important;
    height:100%!important;
    min-width:100%!important;
    max-width:none!important;
    min-height:0!important;
    max-height:none!important;
    margin:0!important;
    padding:0!important;
    border:0!important;
    border-radius:0!important;
    object-fit:cover!important;
    object-position:center!important;
}

.bshms-availability-overlay .bshms-room-result__image--placeholder{
    background:
        linear-gradient(135deg,rgba(94,22,104,.07),rgba(193,145,39,.08)),
        #f4f0f4!important;
}

.bshms-availability-overlay .bshms-room-result__body{
    display:flex!important;
    flex-direction:column!important;
    min-width:0!important;
    width:100%!important;
    margin:0!important;
    padding:16px!important;
    background:#fff!important;
}

.bshms-availability-overlay .bshms-room-result__eyebrow{
    display:block!important;
    margin:0 0 5px!important;
    color:#b27c18!important;
    font-size:9px!important;
    font-weight:800!important;
    line-height:1.3!important;
    letter-spacing:.08em!important;
    text-transform:uppercase!important;
}

.bshms-availability-overlay .bshms-room-result h3{
    margin:0 0 7px!important;
    padding:0!important;
    color:#4f1358!important;
    font-family:Arial,Helvetica,sans-serif!important;
    font-size:18px!important;
    font-weight:800!important;
    line-height:1.2!important;
}

.bshms-availability-overlay .bshms-room-result p{
    display:-webkit-box!important;
    margin:0 0 15px!important;
    padding:0!important;
    overflow:hidden!important;
    color:#746c75!important;
    font-size:11px!important;
    line-height:1.55!important;
    -webkit-box-orient:vertical!important;
    -webkit-line-clamp:2!important;
}

.bshms-availability-overlay .bshms-room-result__footer{
    display:flex!important;
    align-items:flex-end!important;
    justify-content:space-between!important;
    gap:12px!important;
    width:100%!important;
    margin:auto 0 0!important;
    padding:0!important;
}

.bshms-availability-overlay .bshms-room-result__price{
    display:flex!important;
    flex-direction:column!important;
    min-width:0!important;
}

.bshms-availability-overlay .bshms-room-result__price strong{
    color:#2f2930!important;
    font-size:14px!important;
    font-weight:800!important;
    line-height:1.2!important;
    white-space:nowrap!important;
}

.bshms-availability-overlay .bshms-room-result__price span{
    margin-top:2px!important;
    color:#8a818b!important;
    font-size:9px!important;
    line-height:1.2!important;
}

.bshms-availability-overlay .bshms-room-result__book{
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    flex:0 0 auto!important;
    min-height:38px!important;
    margin:0!important;
    padding:0 13px!important;
    border:0!important;
    border-radius:8px!important;
    background:#5e1668!important;
    color:#fff!important;
    font-size:11px!important;
    font-weight:800!important;
    line-height:1!important;
    text-decoration:none!important;
    white-space:nowrap!important;
    box-shadow:none!important;
}

.bshms-availability-overlay .bshms-room-result__book:hover,
.bshms-availability-overlay .bshms-room-result__book:focus{
    background:#46104e!important;
    color:#fff!important;
    text-decoration:none!important;
}

/* Mobile: a genuine full-width stacked hotel card.
   Explicitly overrides the former 112px left-column image architecture. */
@media(max-width:700px){
    .bshms-availability-overlay__content{
        padding:14px 12px max(20px,env(safe-area-inset-bottom))!important;
    }

    .bshms-availability-overlay .bshms-booking-results{
        display:grid!important;
        grid-template-columns:minmax(0,1fr)!important;
        gap:14px!important;
        width:100%!important;
        min-width:0!important;
    }

    .bshms-availability-overlay .bshms-room-result{
        display:grid!important;
        grid-template-columns:minmax(0,1fr)!important;
        grid-template-rows:auto auto!important;
        width:100%!important;
        min-width:0!important;
        max-width:100%!important;
        min-height:0!important;
        height:auto!important;
        overflow:hidden!important;
        border-radius:13px!important;
    }

    .bshms-availability-overlay .bshms-room-result__image{
        grid-column:1!important;
        grid-row:1!important;
        width:100%!important;
        min-width:0!important;
        max-width:100%!important;
        height:auto!important;
        min-height:0!important;
        max-height:none!important;
        aspect-ratio:16 / 9!important;
    }

    .bshms-availability-overlay .bshms-room-result__image img{
        width:100%!important;
        min-width:100%!important;
        max-width:none!important;
        height:100%!important;
        min-height:0!important;
        max-height:none!important;
        object-fit:cover!important;
        object-position:center!important;
    }

    .bshms-availability-overlay .bshms-room-result__body{
        grid-column:1!important;
        grid-row:2!important;
        width:100%!important;
        min-width:0!important;
        padding:14px!important;
    }

    .bshms-availability-overlay .bshms-room-result h3{
        font-size:17px!important;
    }

    .bshms-availability-overlay .bshms-room-result p{
        display:-webkit-box!important;
        margin-bottom:13px!important;
        font-size:11px!important;
        -webkit-line-clamp:2!important;
    }

    .bshms-availability-overlay .bshms-room-result__footer{
        align-items:center!important;
        gap:10px!important;
    }

    .bshms-availability-overlay .bshms-room-result__price strong{
        font-size:13px!important;
    }

    .bshms-availability-overlay .bshms-room-result__book{
        min-height:38px!important;
        padding:0 12px!important;
        border-radius:8px!important;
        font-size:10px!important;
    }
}

@media(max-width:390px){
    .bshms-availability-overlay .bshms-room-result__footer{
        align-items:stretch!important;
        flex-direction:column!important;
    }

    .bshms-availability-overlay .bshms-room-result__book{
        width:100%!important;
    }
}
