.booking-bar {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.2fr) minmax(10rem, .9fr);
    overflow: visible !important;
    position: relative;
}

.booking-bar__field {
    background: #fff;
    border-right: 1px solid #e4e4e7;
    min-width: 0;
}

.booking-bar button.booking-bar__trigger {
    align-items: center;
    background: #fff;
    border: 0;
    color: #171717;
    cursor: pointer;
    display: flex;
    gap: 1rem;
    min-height: 6rem;
    padding: 1.1rem 1.5rem;
    text-align: left;
    width: 100%;
}

.booking-bar__trigger:focus-visible,
.booking-picker button:focus-visible {
    outline: 3px solid color-mix(in srgb, var(--hotel-primary) 55%, #fff);
    outline-offset: -3px;
}

.booking-bar__trigger svg {
    fill: none;
    flex: 0 0 1.55rem;
    height: 1.55rem;
    stroke: var(--hotel-primary);
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-width: 1.7;
    width: 1.55rem;
}

.booking-bar__trigger span {
    display: grid;
    line-height: 1.2;
    min-width: 0;
}

.booking-bar__trigger strong {
    font-size: .88rem;
    letter-spacing: 0;
    text-transform: none;
}

.booking-bar__trigger small {
    color: #52525b;
    display: block;
    font-size: .76rem;
    font-weight: 500;
    margin-top: .2rem;
    overflow: hidden;
    text-overflow: ellipsis;
    text-transform: none;
    white-space: nowrap;
}

.booking-bar button.booking-bar__submit {
    background: var(--hotel-primary);
    border: 0;
    color: #fff;
    cursor: pointer;
    font-size: 1rem;
    font-weight: 900;
    letter-spacing: .02em;
    min-height: 6rem;
    padding: 1rem 1.5rem;
    text-transform: none;
}

.booking-bar button.booking-bar__submit:hover {
    filter: brightness(.94);
}

.booking-picker {
    background: #fff;
    border: 1px solid color-mix(in srgb, var(--hotel-primary) 75%, #d4d4d8);
    box-shadow: 0 26px 70px #1118272e;
    color: #18181b;
    position: absolute;
    top: 100%;
    z-index: 60;
}

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

.booking-picker--dates {
    left: 0;
    padding: .75rem 1rem 1rem;
    width: min(42rem, 76vw);
}

.booking-picker--guests {
    padding: 1.5rem;
    right: min(10rem, 18%);
    width: min(27rem, 92vw);
}

.booking-picker__toolbar {
    align-items: center;
    display: flex;
    inset: .45rem .65rem auto;
    justify-content: space-between;
    pointer-events: none;
    position: absolute;
    z-index: 2;
}

.booking-picker button.booking-picker__nav {
    align-items: center;
    background: transparent;
    border: 0;
    color: #18181b;
    cursor: pointer;
    display: flex;
    font-size: 1.45rem;
    height: 2rem;
    justify-content: center;
    padding: 0;
    pointer-events: auto;
    width: 2rem;
}

.booking-calendars {
    display: grid;
    gap: 1.15rem;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.booking-calendar__title {
    font-size: .85rem;
    font-weight: 900;
    line-height: 2rem;
    margin: 0 0 .25rem;
    text-align: center;
}

.booking-calendar__week,
.booking-calendar__days {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
}

.booking-calendar__week span {
    color: #71717a;
    font-size: .59rem;
    padding: .2rem 0 .45rem;
    text-align: center;
}

.booking-calendar__blank {
    aspect-ratio: 1;
}

.booking-picker button.booking-calendar__day {
    aspect-ratio: 1;
    background: #fff;
    border: 1px solid #ededf0;
    color: #18181b;
    cursor: pointer;
    font-size: .7rem;
    margin: -1px 0 0 -1px;
    min-height: 1.85rem;
    padding: 0;
    position: relative;
}

.booking-picker button.booking-calendar__day:hover:not(:disabled) {
    border-color: var(--hotel-primary);
    color: var(--hotel-primary);
    z-index: 1;
}

.booking-picker button.booking-calendar__day:disabled {
    color: #c4c4cc;
    cursor: not-allowed;
}

.booking-picker button.booking-calendar__day.is-in-range {
    background: color-mix(in srgb, var(--hotel-primary) 18%, #fff);
    border-color: color-mix(in srgb, var(--hotel-primary) 30%, #fff);
}

.booking-picker button.booking-calendar__day.is-start,
.booking-picker button.booking-calendar__day.is-end {
    background: var(--hotel-primary);
    border-color: var(--hotel-primary);
    color: #fff;
    font-weight: 900;
    z-index: 2;
}

.booking-picker button.booking-calendar__day.is-today:not(.is-start):not(.is-end)::after {
    background: var(--hotel-primary);
    border-radius: 50%;
    bottom: .2rem;
    content: "";
    height: 3px;
    left: calc(50% - 1.5px);
    position: absolute;
    width: 3px;
}

.guest-picker__heading,
.guest-picker__row {
    align-items: center;
    display: flex;
    justify-content: space-between;
}

.guest-picker__heading {
    border-bottom: 1px solid #e4e4e7;
    padding-bottom: 1rem;
}

.guest-picker__heading > div:first-child,
.guest-picker__row > div:first-child {
    display: grid;
}

.guest-picker__heading strong,
.guest-picker__row strong {
    font-size: .9rem;
}

.guest-picker__heading small,
.guest-picker__row small {
    color: #71717a;
    font-size: .72rem;
}

.guest-stepper {
    align-items: center;
    display: flex;
    gap: .75rem;
}

.booking-picker .guest-stepper button {
    align-items: center;
    background: #fff;
    border: 1px solid #dedee3;
    border-radius: 50%;
    color: #18181b;
    cursor: pointer;
    display: flex;
    font-size: 1rem;
    height: 2.2rem;
    justify-content: center;
    padding: 0;
    width: 2.2rem;
}

.booking-picker .guest-stepper button:disabled {
    color: #c4c4cc;
    cursor: not-allowed;
}

.guest-stepper output {
    font-size: .88rem;
    min-width: 1rem;
    text-align: center;
}

.guest-room {
    border: 1px solid #dedee3;
    margin-top: 1rem;
    padding: 0 1rem;
}

.guest-room__title {
    color: var(--hotel-primary);
    display: block;
    font-size: .78rem;
    font-weight: 900;
    padding: .9rem 0 .3rem;
}

.guest-picker__row {
    border-bottom: 1px solid #e4e4e7;
    padding: .8rem 0;
}

.guest-picker__row:last-child {
    border-bottom: 0;
}

.booking-picker button.guest-picker__done {
    background: var(--hotel-primary);
    border: 0;
    color: #fff;
    cursor: pointer;
    font-weight: 900;
    margin-top: 1rem;
    min-height: 3.3rem;
    width: 100%;
}

.booking-bar__error {
    background: #fff1f2;
    border: 1px solid #fda4af;
    color: #9f1239;
    font-size: .75rem;
    left: 0;
    margin: .5rem 0 0;
    padding: .6rem .8rem;
    position: absolute;
    top: 100%;
    z-index: 65;
}

@media (max-width: 850px) {
    .booking-bar {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .booking-bar__field--guests,
    .booking-bar__submit {
        grid-column: span 1;
    }

    .booking-picker--dates {
        width: 100%;
    }

    .booking-picker--guests {
        right: 0;
    }
}

@media (max-width: 560px) {
    .booking-bar {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .booking-bar__field {
        border-bottom: 1px solid #e4e4e7;
    }

    .booking-bar__field--guests,
    .booking-bar__submit {
        grid-column: 1 / -1;
    }

    .booking-bar button.booking-bar__trigger {
        gap: .65rem;
        min-height: 4.8rem;
        padding: .8rem;
    }

    .booking-bar__trigger svg {
        flex-basis: 1.25rem;
        height: 1.25rem;
        width: 1.25rem;
    }

    .booking-bar button.booking-bar__submit {
        min-height: 4.2rem;
    }

    .booking-picker--dates,
    .booking-picker--guests {
        left: 0;
        padding: 1rem;
        right: auto;
        width: 100%;
    }

    .booking-picker .guest-stepper button {
        line-height: 1;
        min-height: 0;
        padding: 0;
        transform: none;
    }

    .booking-calendars {
        display: block;
    }

    .booking-calendar:nth-child(2) {
        display: none;
    }
}
