:root {
    --ka-booking-ink: #292929;
    --ka-booking-muted: #77716a;
    --ka-booking-gold: #b5915e;
    --ka-booking-line: rgba(41, 41, 41, 0.2);
    --ka-booking-paper: #fff;
}

.ka-booking {
    position: relative;
    width: 100%;
    color: var(--ka-booking-ink);
    font-family: inherit;
}

.ka-booking--full {
    left: 50%;
    width: 100vw;
    margin-left: -50vw;
}

.ka-booking__inner {
    width: min(100%, 1600px);
    margin: 0 auto;
}

.ka-booking--full .ka-booking__inner {
    padding-inline: clamp(20px, 5vw, 90px);
}

.ka-booking .eviivo-booking-form,
.ka-booking .eviivo-booking-form-wrapper,
.ka-booking .eviivo-booking-form-no-style {
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    color: inherit !important;
    font-size: inherit !important;
}

.ka-booking form {
    display: grid !important;
    grid-template-columns: minmax(170px, 1.25fr) minmax(170px, 1.25fr) minmax(95px, .62fr) minmax(95px, .62fr) minmax(95px, .62fr) minmax(210px, 1.25fr);
    align-items: end;
    gap: 0;
    width: 100%;
    padding: clamp(22px, 2.2vw, 34px) !important;
    background: var(--ka-booking-paper) !important;
    border: 1px solid rgba(181, 145, 94, 0.55) !important;
    box-shadow: 0 16px 38px rgba(25, 22, 18, 0.08) !important;
}

.ka-booking .eviivo-input-row,
.ka-booking .eviivo-rooms-selector,
.ka-booking .eviivo-rooms,
.ka-booking .eviivo-room,
.ka-booking .eviivo-adults,
.ka-booking .eviivo-children {
    float: none !important;
    width: auto !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
    color: inherit !important;
}

.ka-booking .eviivo-input-checkin { grid-column: 1; }
.ka-booking .eviivo-input-checkout { grid-column: 2; }
.ka-booking .eviivo-rooms-selector { display: contents !important; }
.ka-booking .eviivo-input-rooms { grid-column: 3; }
.ka-booking .eviivo-rooms { display: contents !important; }
.ka-booking .eviivo-room { display: contents !important; }
.ka-booking .eviivo-adults { grid-column: 4; }
.ka-booking .eviivo-children { grid-column: 5; }
.ka-booking .eviivo-button-primary { grid-column: 6; }

.ka-booking .eviivo-room-label {
    display: none !important;
}

.ka-booking .eviivo-input-checkin,
.ka-booking .eviivo-input-checkout,
.ka-booking .eviivo-input-rooms,
.ka-booking .eviivo-adults,
.ka-booking .eviivo-children {
    position: relative;
    padding: 0 clamp(14px, 1.35vw, 24px) !important;
    border-right: 1px solid var(--ka-booking-line) !important;
}

.ka-booking .eviivo-input-checkin {
    padding-left: 0 !important;
}

.ka-booking .eviivo-input-label {
    display: block !important;
    margin: 0 0 10px !important;
    color: var(--ka-booking-muted) !important;
    font-family: inherit !important;
    font-size: 11px !important;
    font-weight: 600 !important;
    line-height: 1.2 !important;
    letter-spacing: .16em !important;
    text-transform: uppercase !important;
}

.ka-booking input.eviivo-input-date,
.ka-booking select.eviivo-input-select {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    height: 44px !important;
    margin: 0 !important;
    padding: 0 30px 0 0 !important;
    color: var(--ka-booking-ink) !important;
    background-color: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    outline: 0 !important;
    font-family: Georgia, 'Times New Roman', serif !important;
    font-size: clamp(16px, 1.15vw, 19px) !important;
    font-weight: 400 !important;
    line-height: 44px !important;
    appearance: none !important;
    -webkit-appearance: none !important;
}

.ka-booking select.eviivo-input-select {
    cursor: pointer;
    background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%) !important;
    background-position: calc(100% - 11px) 20px, calc(100% - 6px) 20px !important;
    background-size: 5px 5px, 5px 5px !important;
    background-repeat: no-repeat !important;
}

.ka-booking input.eviivo-input-date {
    cursor: pointer;
}

.ka-booking input:focus,
.ka-booking select:focus {
    box-shadow: inset 0 -1px 0 var(--ka-booking-gold) !important;
}

.ka-booking .eviivo-button-primary {
    align-self: stretch !important;
    width: 100% !important;
    min-height: 76px !important;
    margin: 0 !important;
    padding: 14px 24px !important;
    color: #fff !important;
    background: var(--ka-booking-ink) !important;
    border: 1px solid var(--ka-booking-ink) !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    font-family: inherit !important;
    font-size: 11px !important;
    font-weight: 600 !important;
    line-height: 1.3 !important;
    letter-spacing: .18em !important;
    text-transform: uppercase !important;
    cursor: pointer !important;
    transition: background-color .2s ease, border-color .2s ease, color .2s ease;
}

.ka-booking .eviivo-button-primary:hover,
.ka-booking .eviivo-button-primary:focus {
    color: #fff !important;
    background: var(--ka-booking-gold) !important;
    border-color: var(--ka-booking-gold) !important;
}

.ka-booking--overlay form {
    background: rgba(255, 255, 255, 0.96) !important;
    backdrop-filter: blur(10px);
}

/* Eviivo adds more room blocks dynamically. Keep those readable beneath the main row. */
.ka-booking .eviivo-room:not(:first-child) {
    grid-column: 1 / -1;
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-top: 20px !important;
    padding-top: 20px !important;
    border-top: 1px solid var(--ka-booking-line) !important;
}

.ka-booking .eviivo-room:not(:first-child) .eviivo-room-label {
    display: block !important;
    grid-column: 1 / -1;
    color: var(--ka-booking-muted);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .16em;
    text-transform: uppercase;
}

.ka-booking .eviivo-room:not(:first-child) .eviivo-adults,
.ka-booking .eviivo-room:not(:first-child) .eviivo-children {
    grid-column: auto;
    padding: 0 !important;
    border: 0 !important;
}

@media (max-width: 1150px) {
    .ka-booking form {
        grid-template-columns: repeat(6, 1fr);
        row-gap: 24px;
    }

    .ka-booking .eviivo-input-checkin { grid-column: 1 / 4; }
    .ka-booking .eviivo-input-checkout { grid-column: 4 / 7; }
    .ka-booking .eviivo-input-rooms { grid-column: 1 / 3; }
    .ka-booking .eviivo-adults { grid-column: 3 / 5; }
    .ka-booking .eviivo-children { grid-column: 5 / 7; border-right: 0 !important; }
    .ka-booking .eviivo-button-primary { grid-column: 1 / 7; min-height: 58px !important; }

    .ka-booking .eviivo-input-checkout {
        border-right: 0 !important;
    }
}

@media (max-width: 680px) {
    .ka-booking--full {
        left: auto;
        width: 100%;
        margin-left: 0;
    }

    .ka-booking--full .ka-booking__inner {
        padding-inline: 0;
    }

    .ka-booking form {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        padding: 22px 18px !important;
        row-gap: 22px;
    }

    .ka-booking .eviivo-input-checkin { grid-column: 1; }
    .ka-booking .eviivo-input-checkout { grid-column: 2; }
    .ka-booking .eviivo-input-rooms { grid-column: 1; }
    .ka-booking .eviivo-adults { grid-column: 2; }
    .ka-booking .eviivo-children { grid-column: 1 / 3; }
    .ka-booking .eviivo-button-primary { grid-column: 1 / 3; }

    .ka-booking .eviivo-input-checkout,
    .ka-booking .eviivo-adults,
    .ka-booking .eviivo-children {
        border-right: 0 !important;
    }

    .ka-booking .eviivo-input-rooms {
        padding-left: 0 !important;
    }

    .ka-booking .eviivo-children {
        padding-left: 0 !important;
    }
}

@media (max-width: 430px) {
    .ka-booking form {
        display: block !important;
    }

    .ka-booking .eviivo-input-checkin,
    .ka-booking .eviivo-input-checkout,
    .ka-booking .eviivo-input-rooms,
    .ka-booking .eviivo-adults,
    .ka-booking .eviivo-children {
        margin-bottom: 18px !important;
        padding: 0 0 14px !important;
        border-right: 0 !important;
        border-bottom: 1px solid var(--ka-booking-line) !important;
    }

    .ka-booking .eviivo-button-primary {
        min-height: 56px !important;
    }
}

.ka-eviivo-error {
    padding: 12px 16px;
    border-left: 4px solid #b32d2e;
    background: #fff;
}

/* v1.0.1 alignment and date-picker fixes */
.ka-booking .eviivo-button-primary {
    align-self: end !important;
    min-height: 44px !important;
    height: 44px !important;
    padding: 0 24px !important;
}

/* Remove Eviivo's small triangle, which otherwise sits over the date text. */
html body .ka-booking .eviivo-input-checkin::after,
html body .ka-booking .eviivo-input-checkout::after {
    content: none !important;
    display: none !important;
}

.ka-booking,
.ka-booking__inner,
.ka-booking form,
.ka-booking .eviivo-booking-form,
.ka-booking .eviivo-booking-form-wrapper,
.ka-booking .eviivo-booking-form-no-style {
    overflow: visible !important;
}

/* Pikaday is moved to a fixed viewport position by booking.js so Divi sections
   and overflow rules cannot hide it behind the following page section. */
html body .pika-single.ka-pika-active {
    position: fixed !important;
    z-index: 2147483000 !important;
    width: 272px !important;
    max-width: calc(100vw - 24px) !important;
    margin: 0 !important;
    border: 1px solid rgba(181, 145, 94, 0.55) !important;
    box-shadow: 0 18px 44px rgba(20, 18, 15, 0.22) !important;
}

html body .pika-single.ka-pika-active .pika-lendar {
    width: calc(100% - 16px) !important;
}

@media (max-width: 1150px) {
    .ka-booking .eviivo-button-primary {
        min-height: 52px !important;
        height: 52px !important;
    }
}

/* v1.0.2: lock the desktop CTA to the same visual row as the inputs. */
@media (min-width: 1151px) {
    .ka-booking form > .eviivo-button-primary {
        align-self: start !important;
        margin-top: 31px !important;
        min-height: 44px !important;
        height: 44px !important;
    }
}

/* Ensure the active calendar wins against any inline positioning Eviivo/Pikaday
   reapplies while moving between months. */
html body > .pika-single.ka-pika-active,
html body .pika-single.ka-pika-active {
    position: fixed !important;
    z-index: 2147483646 !important;
    transform: none !important;
}


/* v1.0.3: keep every desktop control in the same grid row. Explicit rows are
   needed because Eviivo nests the room controls inside a display:contents
   wrapper, and some theme/browser combinations otherwise auto-place the CTA
   into a second grid row. */
@media (min-width: 1151px) {
    .ka-booking .eviivo-input-checkin,
    .ka-booking .eviivo-input-checkout,
    .ka-booking .eviivo-input-rooms,
    .ka-booking .eviivo-adults,
    .ka-booking .eviivo-children,
    .ka-booking form > .eviivo-button-primary {
        grid-row: 1 !important;
    }

    .ka-booking form > .eviivo-button-primary {
        align-self: end !important;
        margin-top: 0 !important;
    }
}

/* Show a British date without changing Eviivo's underlying ISO value. The
   original value remains YYYY-MM-DD for Pikaday and the booking submission;
   this overlay is presentation-only. */
.ka-booking .eviivo-input-checkin,
.ka-booking .eviivo-input-checkout {
    isolation: isolate;
}

.ka-booking input.eviivo-input-date.ka-date-enhanced {
    color: transparent !important;
    -webkit-text-fill-color: transparent !important;
    caret-color: transparent !important;
}

.ka-booking .ka-date-display {
    position: absolute;
    z-index: 2;
    right: clamp(14px, 1.35vw, 24px);
    bottom: 0;
    left: clamp(14px, 1.35vw, 24px);
    height: 44px;
    color: var(--ka-booking-ink);
    font-family: Georgia, 'Times New Roman', serif;
    font-size: clamp(16px, 1.15vw, 19px);
    font-weight: 400;
    line-height: 44px;
    white-space: nowrap;
    pointer-events: none;
}

.ka-booking .eviivo-input-checkin .ka-date-display {
    left: 0;
}


/* v1.0.4: reliable dynamically-added room controls and extra breathing room
   between the main booking row/CTA and the additional-room divider. */
.ka-booking .eviivo-room.ka-extra-room,
.ka-booking .eviivo-room:not(:first-child) {
    position: relative !important;
    z-index: 3 !important;
    isolation: isolate;
    grid-column: 1 / -1 !important;
    grid-row: auto !important;
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important;
    column-gap: clamp(24px, 4vw, 56px) !important;
    row-gap: 12px !important;
    width: 100% !important;
    margin-top: 34px !important;
    padding-top: 28px !important;
    border-top: 1px solid var(--ka-booking-line) !important;
    overflow: visible !important;
    pointer-events: auto !important;
}

.ka-booking .eviivo-room.ka-extra-room .eviivo-room-label,
.ka-booking .eviivo-room:not(:first-child) .eviivo-room-label {
    display: block !important;
    grid-column: 1 / -1 !important;
    grid-row: auto !important;
    margin: 0 0 2px !important;
    padding: 0 !important;
}

.ka-booking .eviivo-room.ka-extra-room .eviivo-adults,
.ka-booking .eviivo-room.ka-extra-room .eviivo-children,
.ka-booking .eviivo-room:not(:first-child) .eviivo-adults,
.ka-booking .eviivo-room:not(:first-child) .eviivo-children {
    position: relative !important;
    z-index: 4 !important;
    grid-column: auto !important;
    grid-row: auto !important;
    width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    overflow: visible !important;
    pointer-events: auto !important;
}

.ka-booking .eviivo-room.ka-extra-room select.eviivo-input-select,
.ka-booking .eviivo-room:not(:first-child) select.eviivo-input-select {
    position: relative !important;
    z-index: 5 !important;
    display: block !important;
    width: 100% !important;
    height: 44px !important;
    pointer-events: auto !important;
    cursor: pointer !important;
    opacity: 1 !important;
}

/* Stop the desktop row-lock rules intended for room one leaking into clones. */
@media (min-width: 1151px) {
    .ka-booking .eviivo-room:not(:first-child) .eviivo-adults,
    .ka-booking .eviivo-room:not(:first-child) .eviivo-children {
        grid-row: auto !important;
    }
}

@media (max-width: 680px) {
    .ka-booking .eviivo-room.ka-extra-room,
    .ka-booking .eviivo-room:not(:first-child) {
        grid-template-columns: 1fr !important;
        margin-top: 28px !important;
        padding-top: 24px !important;
    }

    .ka-booking .eviivo-room.ka-extra-room .eviivo-room-label,
    .ka-booking .eviivo-room:not(:first-child) .eviivo-room-label {
        grid-column: 1 !important;
    }
}

/* v1.0.5: give the desktop CTA breathing room from the final field divider.
   The reduced width keeps the button inside its existing grid track rather than
   increasing the total form width. */
@media (min-width: 1151px) {
    .ka-booking form > .eviivo-button-primary {
        width: calc(100% - clamp(14px, 1.25vw, 22px)) !important;
        margin-left: clamp(14px, 1.25vw, 22px) !important;
    }
}

/* Tablet: the CTA occupies its own row, so it should return to full width. */
@media (max-width: 1150px) {
    .ka-booking form > .eviivo-button-primary {
        width: 100% !important;
        margin-left: 0 !important;
    }
}

/* Additional mobile safeguards for Eviivo's generated wrappers and controls. */
@media (max-width: 680px) {
    .ka-booking,
    .ka-booking__inner,
    .ka-booking form,
    .ka-booking .eviivo-booking-form,
    .ka-booking .eviivo-booking-form-wrapper,
    .ka-booking .eviivo-booking-form-no-style {
        max-width: 100% !important;
        min-width: 0 !important;
    }

    .ka-booking input.eviivo-input-date,
    .ka-booking select.eviivo-input-select,
    .ka-booking .eviivo-button-primary {
        max-width: 100% !important;
        box-sizing: border-box !important;
    }
}

@media (max-width: 430px) {
    .ka-booking .eviivo-room.ka-extra-room,
    .ka-booking .eviivo-room:not(:first-child) {
        display: block !important;
    }

    .ka-booking .eviivo-room.ka-extra-room .eviivo-adults,
    .ka-booking .eviivo-room.ka-extra-room .eviivo-children,
    .ka-booking .eviivo-room:not(:first-child) .eviivo-adults,
    .ka-booking .eviivo-room:not(:first-child) .eviivo-children {
        margin-top: 16px !important;
        padding-bottom: 12px !important;
        border-bottom: 1px solid var(--ka-booking-line) !important;
    }
}
