.sbe-booking,
.sbe-booking *{
    box-sizing:border-box;
}
.sbe-booking button,
.sbe-booking input,
.sbe-booking textarea,
.sbe-booking select{
    font-family:Arial,Helvetica,sans-serif;
    line-height:1.35;
    text-transform:none;
    letter-spacing:normal;
}
.sbe-booking button{
    min-height:0;
}
.sbe-booking h1,
.sbe-booking h2,
.sbe-booking h3,
.sbe-booking h4,
.sbe-booking p,
.sbe-booking dl,
.sbe-booking dd{
    margin-top:0;
}

.sbe-booking{--navy:#202f59;--navy2:#0b1b3a;--blue:#0c5bd2;--soft:#f5f8fc;--line:#dde5ef;--text:#172033;--muted:#6b7280;font-family:Arial,Helvetica,sans-serif;color:var(--text);background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden}.sbe-progress{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-bottom:1px solid var(--line);background:#fff}.sbe-progress>div{padding:18px 22px;font-weight:700;color:#6b7280}.sbe-progress span{display:inline-grid;place-items:center;width:30px;height:30px;border:1px solid #b9c4d4;border-radius:50%;margin-right:8px}.sbe-progress .active{color:var(--navy)}.sbe-progress .active span{background:var(--navy);color:#fff;border-color:var(--navy)}.sbe-booking-grid{display:grid;grid-template-columns:1.05fr 1.25fr .9fr;gap:18px;padding:22px}.sbe-panel{border:1px solid var(--line);border-radius:14px;padding:18px;background:#fff}.sbe-panel h3,.sbe-details h3{margin:0 0 16px;color:var(--navy);font-size:16px}.sbe-date-wrap{border:1px solid var(--line);border-radius:10px;padding:8px 10px}.sbe-date{width:100%;border:0;background:transparent;font:inherit;outline:none}.sbe-date-help{font-size:12px;color:var(--muted);margin:8px 0 18px}.sbe-times-front{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.sbe-time{border:1px solid #c9d3df;background:#fff;border-radius:10px;padding:13px;cursor:pointer;color:var(--navy)}.sbe-time small{display:block;margin-top:3px;color:var(--muted)}.sbe-time.active{background:var(--navy);color:#fff}.sbe-time.active small{color:#d7e1ef}.sbe-info{margin-top:14px;padding:12px;border-radius:10px;background:#f1f5fb;color:var(--navy);font-size:13px}.sbe-unit-list{display:flex;flex-direction:column;gap:10px}.sbe-unit{display:flex;justify-content:space-between;align-items:center;gap:15px;border:1px solid var(--line);border-radius:12px;padding:13px}.sbe-unit-info{display:flex;flex-direction:column;gap:3px}.sbe-unit-info span{font-size:12px;color:var(--muted)}.sbe-unit-info b{color:var(--navy)}.sbe-stepper{display:flex;align-items:center;border:1px solid #ccd5e0;border-radius:9px;overflow:hidden}.sbe-stepper button{width:35px;height:35px;border:0;background:#fff;cursor:pointer;font-size:18px}.sbe-qty{min-width:32px;text-align:center;font-weight:700}.sbe-capacity-box{margin-top:14px;border-radius:12px;background:var(--soft);padding:12px 14px;transition:.2s}.sbe-capacity-box>div{display:flex;justify-content:space-between;padding:6px 0}.sbe-capacity-box.warning{background:#fff1f0;outline:2px solid #ef4444}.sbe-summary{padding:0;overflow:hidden}.sbe-summary-head{background:var(--navy);color:#fff;padding:16px;font-weight:700}.sbe-summary dl,.sbe-summary-items,.sbe-summary-line{padding:0 16px}.sbe-summary dl>div{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:12px 0}.sbe-summary dt{color:var(--muted)}.sbe-summary dd{margin:0;font-weight:700}.sbe-summary-items{min-height:110px;padding-top:12px;padding-bottom:12px}.sbe-summary-items>div{display:flex;justify-content:space-between;gap:10px;padding:6px 0}.sbe-summary-items p{color:var(--muted)}.sbe-summary-line{display:flex;justify-content:space-between;padding-top:12px;padding-bottom:12px;border-top:1px solid var(--line)}.sbe-total{font-size:18px;color:var(--navy);padding-bottom:18px}.sbe-details{border-top:1px solid var(--line);padding:22px}.sbe-details-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.sbe-details-grid label{display:flex;flex-direction:column;gap:7px;font-weight:700;font-size:13px}.sbe-details-grid em{color:#dc2626}.sbe-details input,.sbe-details textarea{border:1px solid #ccd5e0;border-radius:9px;padding:11px 12px;font:inherit}.sbe-comments-label{grid-column:span 2}.sbe-transport-note{margin:16px 0;color:var(--navy);font-weight:700}.sbe-continue{display:flex;flex-direction:column;align-items:center;justify-content:center;max-width:420px;width:100%;margin:18px auto 0;background:var(--navy);color:#fff;border:0;border-radius:10px;padding:13px;cursor:pointer;font-weight:700}.sbe-continue small{font-weight:400;opacity:.8;margin-top:3px}.sbe-continue:disabled{opacity:.45;cursor:not-allowed}.sbe-prototype-note{margin-top:12px;text-align:center;color:var(--muted);font-size:12px}@media(max-width:900px){.sbe-booking-grid{grid-template-columns:1fr}.sbe-details-grid{grid-template-columns:1fr 1fr}.sbe-comments-label{grid-column:span 2}}@media(max-width:600px){.sbe-progress{grid-template-columns:1fr}.sbe-progress>div{padding:12px 16px}.sbe-details-grid{grid-template-columns:1fr}.sbe-comments-label{grid-column:auto}.sbe-booking-grid{padding:12px}.sbe-details{padding:16px}.sbe-unit{align-items:flex-start}.sbe-stepper{flex-shrink:0}}

/* =========================================================
   v0.1.2 — STRONG THEME / ELEMENTOR ISOLATION
   Prevent global WordPress/Elementor button styles from
   altering the SBE controls.
========================================================= */

.sbe-booking .sbe-time {
    appearance: none !important;
    -webkit-appearance: none !important;
    background: #ffffff !important;
    background-image: none !important;
    color: var(--navy) !important;
    border: 1px solid #c9d3df !important;
    border-radius: 10px !important;
    box-shadow: none !important;
    text-shadow: none !important;
    padding: 13px !important;
    min-height: 0 !important;
    line-height: 1.25 !important;
}

.sbe-booking .sbe-time strong {
    color: inherit !important;
}

.sbe-booking .sbe-time small {
    display: block !important;
    margin-top: 4px !important;
    color: var(--muted) !important;
    font-size: 12px !important;
}

.sbe-booking .sbe-time:hover {
    background: #f5f8fc !important;
    color: var(--navy) !important;
}

.sbe-booking .sbe-time.active,
.sbe-booking .sbe-time.active:hover {
    background: var(--navy) !important;
    color: #ffffff !important;
    border-color: var(--navy) !important;
}

.sbe-booking .sbe-time.active small {
    color: #dbe5f1 !important;
}

.sbe-booking .sbe-stepper {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: auto !important;
    min-width: 108px !important;
    height: 38px !important;
    overflow: hidden !important;
    border: 1px solid #ccd5e0 !important;
    border-radius: 9px !important;
    background: #ffffff !important;
    box-shadow: none !important;
}

.sbe-booking .sbe-stepper button,
.sbe-booking .sbe-stepper .sbe-minus,
.sbe-booking .sbe-stepper .sbe-plus {
    appearance: none !important;
    -webkit-appearance: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex: 0 0 36px !important;
    width: 36px !important;
    min-width: 36px !important;
    max-width: 36px !important;
    height: 36px !important;
    min-height: 36px !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: #ffffff !important;
    background-image: none !important;
    color: var(--navy) !important;
    box-shadow: none !important;
    text-shadow: none !important;
    font-size: 20px !important;
    font-weight: 500 !important;
    line-height: 1 !important;
    cursor: pointer !important;
}

.sbe-booking .sbe-stepper button:hover {
    background: #f2f6fb !important;
    color: var(--navy) !important;
}

.sbe-booking .sbe-qty {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex: 0 0 36px !important;
    width: 36px !important;
    min-width: 36px !important;
    height: 36px !important;
    color: var(--text) !important;
    background: #ffffff !important;
    font-size: 15px !important;
    font-weight: 700 !important;
    line-height: 1 !important;
}

.sbe-booking .sbe-stepper .sbe-minus {
    border-right: 1px solid #e2e8f0 !important;
}

.sbe-booking .sbe-stepper .sbe-plus {
    border-left: 1px solid #e2e8f0 !important;
}

/* Prevent generic Elementor button rules from affecting the main SBE CTA. */
.sbe-booking .sbe-continue {
    appearance: none !important;
    -webkit-appearance: none !important;
    background: var(--navy) !important;
    background-image: none !important;
    color: #ffffff !important;
    border: 0 !important;
    box-shadow: none !important;
    text-shadow: none !important;
}

.sbe-booking .sbe-continue:disabled {
    background: var(--navy) !important;
    color: #ffffff !important;
    opacity: .45 !important;
}


/* =========================================================
   v0.1.4 — SAFE PROGRESSIVE VISUAL CALENDAR
   The original native date input remains the fallback.
========================================================= */

.sbe-booking .sbe-native-date-hidden {
    position: absolute !important;
    left: -99999px !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
}

.sbe-booking .sbe-native-date-help-hidden {
    display: none !important;
}

.sbe-booking .sbe-visual-calendar {
    width: 100%;
    border: 1px solid var(--line);
    border-radius: 12px;
    padding: 14px;
    background: #ffffff;
    transition:
        outline-color .2s ease,
        box-shadow .2s ease;
}

.sbe-booking .sbe-visual-calendar.warning {
    outline: 2px solid #d97706;
    outline-offset: 2px;
}

.sbe-booking .sbe-calendar-head {
    display: grid;
    grid-template-columns: 36px 1fr 36px;
    align-items: center;
    gap: 8px;
    margin-bottom: 12px;
}

.sbe-booking .sbe-cal-title {
    display: block;
    text-align: center;
    color: var(--navy);
    font-size: 15px;
    font-weight: 700;
}

.sbe-booking .sbe-cal-prev,
.sbe-booking .sbe-cal-next {
    appearance: none !important;
    -webkit-appearance: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    width: 36px !important;
    min-width: 36px !important;
    max-width: 36px !important;
    height: 36px !important;
    min-height: 36px !important;
    max-height: 36px !important;

    margin: 0 !important;
    padding: 0 !important;

    border: 1px solid #d6dee9 !important;
    border-radius: 50% !important;

    background: #ffffff !important;
    background-image: none !important;

    color: var(--navy) !important;
    box-shadow: none !important;
    text-shadow: none !important;

    font-size: 22px !important;
    font-weight: 400 !important;
    line-height: 1 !important;

    cursor: pointer !important;
}

.sbe-booking .sbe-cal-prev:hover,
.sbe-booking .sbe-cal-next:hover {
    background: var(--soft) !important;
}

.sbe-booking .sbe-cal-prev:disabled,
.sbe-booking .sbe-cal-next:disabled {
    opacity: .3 !important;
    cursor: not-allowed !important;
}

.sbe-booking .sbe-cal-weekdays,
.sbe-booking .sbe-cal-grid {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 4px;
}

.sbe-booking .sbe-cal-weekdays {
    margin-bottom: 6px;
}

.sbe-booking .sbe-cal-weekdays span {
    display: block;
    text-align: center;
    color: var(--muted);
    font-size: 9px;
    font-weight: 700;
    padding: 3px 0;
}

.sbe-booking .sbe-cal-day {
    position: relative;

    appearance: none !important;
    -webkit-appearance: none !important;

    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    height: auto !important;
    min-height: 0 !important;

    aspect-ratio: 1 / 1;

    margin: 0 !important;
    padding: 0 !important;

    border: 0 !important;
    border-radius: 50% !important;

    background: transparent !important;
    background-image: none !important;

    color: var(--text) !important;
    box-shadow: none !important;
    text-shadow: none !important;

    font-size: 12px !important;
    font-weight: 500 !important;
    line-height: 1 !important;
}

.sbe-booking button.sbe-cal-day.available {
    cursor: pointer !important;
}

.sbe-booking button.sbe-cal-day.available:hover {
    background: #eef3f9 !important;
    color: var(--navy) !important;
}

.sbe-booking button.sbe-cal-day.available::after {
    content: "";
    position: absolute;
    left: 50%;
    bottom: 2px;
    width: 4px;
    height: 4px;
    margin-left: -2px;
    border-radius: 50%;
    background: #23864b;
}

.sbe-booking button.sbe-cal-day.selected,
.sbe-booking button.sbe-cal-day.selected:hover {
    background: var(--navy) !important;
    color: #ffffff !important;
    font-weight: 700 !important;
}

.sbe-booking button.sbe-cal-day.selected::after {
    background: #ffffff;
}

.sbe-booking button.sbe-cal-day.unavailable,
.sbe-booking button.sbe-cal-day:disabled {
    background: transparent !important;
    color: #c6ccd5 !important;
    cursor: not-allowed !important;
}

.sbe-booking .sbe-cal-day.outside {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    width: 100%;
    min-width: 0;
    aspect-ratio: 1 / 1;

    color: #d7dce3;
    font-size: 12px;
}

.sbe-booking .sbe-calendar-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 12px;
    margin-top: 12px;
    color: var(--muted);
    font-size: 10px;
}

.sbe-booking .sbe-calendar-legend span {
    display: inline-flex;
    align-items: center;
    gap: 5px;
}

.sbe-booking .sbe-calendar-legend i {
    display: inline-block;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    flex: 0 0 7px;
}

.sbe-booking .sbe-calendar-legend i.available {
    background: #23864b;
}

.sbe-booking .sbe-calendar-legend i.few {
    background: #d98b16;
}

.sbe-booking .sbe-calendar-legend i.sold {
    background: #c62828;
}

.sbe-booking .sbe-calendar-legend i.unavailable {
    background: #c6ccd5;
}

/* Fallback: if JS initialization failed, restore native control. */
.sbe-booking.sbe-js-fallback .sbe-native-date-hidden {
    position: static !important;
    left: auto !important;
    width: auto !important;
    height: auto !important;
    overflow: visible !important;
    opacity: 1 !important;
    pointer-events: auto !important;
}

.sbe-booking.sbe-js-fallback .sbe-native-date-help-hidden {
    display: block !important;
}

@media(max-width: 600px) {
    .sbe-booking .sbe-visual-calendar {
        padding: 10px;
    }

    .sbe-booking .sbe-cal-day,
    .sbe-booking .sbe-cal-day.outside {
        font-size: 11px !important;
    }

    .sbe-booking .sbe-cal-weekdays span {
        font-size: 8px;
    }
}


/* =========================================================
   v0.1.5 — EXACT 24-HOUR CUTOFF BY DEPARTURE TIME
========================================================= */

.sbe-booking .sbe-time:disabled,
.sbe-booking .sbe-time.sbe-time-unavailable {
    background: #f7f8fa !important;
    color: #aab2bf !important;
    border-color: #e1e6ed !important;
    cursor: not-allowed !important;
    opacity: 1 !important;
}

.sbe-booking .sbe-time:disabled small,
.sbe-booking .sbe-time.sbe-time-unavailable small {
    color: #b6bdc8 !important;
}

.sbe-booking .sbe-time:disabled:hover,
.sbe-booking .sbe-time.sbe-time-unavailable:hover {
    background: #f7f8fa !important;
    color: #aab2bf !important;
}


/* =========================================================
   v0.2.0 — REAL INVENTORY STATES
========================================================= */

/* Override generic available dot when another inventory state applies. */
.sbe-booking button.sbe-cal-day.few::after {
    background: #d98b16 !important;
}

.sbe-booking button.sbe-cal-day.sold::after {
    content: "";
    position: absolute;
    left: 50%;
    bottom: 2px;
    width: 4px;
    height: 4px;
    margin-left: -2px;
    border-radius: 50%;
    background: #c62828 !important;
}

.sbe-booking button.sbe-cal-day.sold {
    color: #8d96a4 !important;
    background: transparent !important;
    cursor: not-allowed !important;
}

.sbe-booking button.sbe-cal-day.unavailable::after {
    display: none !important;
}

.sbe-booking .sbe-time.sbe-time-few:not(:disabled) small {
    color: #b56f08 !important;
    font-weight: 700 !important;
}

.sbe-booking .sbe-time.sbe-time-sold,
.sbe-booking .sbe-time.sbe-time-sold:hover {
    background: #f8f8f9 !important;
    color: #aab2bf !important;
    border-color: #e1e6ed !important;
    cursor: not-allowed !important;
}

.sbe-booking .sbe-time.sbe-time-sold small {
    color: #c62828 !important;
    font-weight: 700 !important;
}


/* =========================================================
   v0.3.0 — CHECKOUT CONNECTION
========================================================= */

.sbe-booking .sbe-checkout-message {
    max-width: 620px;
    margin: 14px auto 0;
    padding: 0;
    border-radius: 9px;
    font-size: 13px;
    line-height: 1.45;
    text-align: center;
}

.sbe-booking .sbe-checkout-message.error,
.sbe-booking .sbe-checkout-message.success {
    padding: 11px 14px;
}

.sbe-booking .sbe-checkout-message.error {
    background: #fff1f0;
    border: 1px solid #f1c7c3;
    color: #9f2d24;
}

.sbe-booking .sbe-checkout-message.success {
    background: #eef8f2;
    border: 1px solid #cce7d5;
    color: #246b3a;
}

.sbe-booking .sbe-continue.loading {
    cursor: wait !important;
    opacity: .75 !important;
}

.sbe-booking .sbe-continue.loading:disabled {
    opacity: .75 !important;
}
