.cmlf-booking {
    --c-bg: #f0f2f5;
    --c-card: #e9edf2;
    --c-ink: #000000;
    --c-muted: #4b5563;
    --c-brand: #1f4b89;
    --c-brand-2: #244f96;
    --c-ring: rgba(31, 75, 137, 0.25);
    --c-white: #fff;
    --c-border: #cfd8e3;
    --shadow: 0 10px 30px rgba(0, 0, 0, .08);
}

.cmlf-booking * {
    box-sizing: border-box;
}

.cmlf-booking__inner {
    background: rgba(254, 254, 254, 0.70);
    border-radius: 22px;
    box-shadow: var(--shadow);
    padding: 20px 28px;
    display: flex;
    gap: 20px;
    justify-content: center;
    max-width: 1100px;
    margin:auto;
}

@media (max-width: 680px) {
    .cmlf-booking__inner {
        flex-direction: column;
        padding: 10px;
    }
}

.cmlf-booking__rail {
    display: flex;
    flex-direction: column;
    min-width: 150px;
    gap: 10px;
    align-items: flex-start;
}

.cmlf-booking__ship {
    width: 60px;
    height: 20px;
}

.cmlf-booking__trip {
    display: grid;
    gap: 10px;
    padding-top: 4px;
}

.trip-type {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    cursor: pointer;
    user-select: none;
    font-weight: 700;
    color: var(--c-brand);
    font-size: 16px;
}

.trip-type input {
    display: none;
}

.trip-type .dot {
    width: 28px;
    height: 28px;
    border-radius: 999px;
    border: 3px solid var(--c-brand);
    display: inline-grid;
    place-items: center;
    position: relative;
}

.trip-type .dot::after {
    content: "";
    width: 14px;
    height: 14px;
    border-radius: 999px;
    background: var(--c-brand);
    transform: scale(0);
    transition: transform .15s ease;
}

.trip-type input:checked + .dot::after {
    transform: scale(1);
}

.trip-type .txt {
    color: var(--c-brand);
}

.cmlf-booking__fields {
    display: flex;
    flex-direction: column;
    gap: 15px;
    align-items: flex-start;
    justify-content: center;
}

@media (max-width: 1320px) {
    .cmlf-booking__fields {
        grid-template-columns:1fr 1fr;
    }
}

@media (max-width: 680px) {
    .cmlf-booking__fields {
        grid-template-columns:1fr;
    }
}

.bf-group {
    display: flex;
    align-items: flex-end;
    gap: 15px;
    width: 100%;
}

@media (max-width: 980px) {
    .bf-group {
        flex-direction: column;
    }
}

.bf-field {
    display: flex;
    flex-direction: column;
    gap: 8px;
    width: 100%;
    position: relative;
}

.bf-label {
    font-weight: 400;
    color: var(--c-ink);
    font-size: 16px;
}

.bf-input {
    position: relative;
    background: var(--c-white);
    border-radius: 16px;
    box-shadow: inset 0 0 0 1px var(--c-border);
    display: flex;
    align-items: center;
    padding: 0 18px;
    min-width: 130px;
    max-width: 210px;
}

.bf-value {
    white-space: nowrap; /* Prevents text from wrapping */
    overflow: hidden;    /* Hides overflowing content */
    text-overflow: ellipsis; /* Displays an ellipsis (...) for truncated text */
    width: 150px;
}

@media (max-width: 680px) {
    .bf-input {
        min-width: 170px;
        max-width: 100%;
    }
}

.bf-input:focus-within {
    box-shadow: inset 0 0 0 2px var(--c-brand), 0 0 0 8px var(--c-ring);
}

.bf-native-input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    pointer-events: none;
    border: 0;
    padding: 0;
    margin: 0;
}

.bf-trigger {
    appearance: none;
    background: transparent;
    border: 0;
    outline: 0;
    font-size: 14px;
    color: var(--c-muted);
    display: grid;
    grid-template-columns:1fr auto;
    align-items: center;
    width: 100%;
    text-align: left;
    padding: 12px 0;
}

.bf-value[data-placeholder] {
    color: #9aa4b2;
}

.bf-select[data-open="true"] .bf-trigger .bf-caret {
    transform: rotate(180deg);
}

.bf-caret {
    transition: transform .15s ease;
    opacity: .85;
}

.bf-menu {
    position: absolute;
    top: calc(100% + 8px);
    left: 0;
    right: 0;
    background: var(--c-white);
    border-radius: 16px;
    box-shadow: var(--shadow);
    border: 1px solid var(--c-border);
    padding: 8px 0;
    display: none;
    max-height: 360px;
    overflow: auto;
    z-index: 50;
}

.bf-select[data-open="true"] .bf-menu {
    display: block;
}

.bf-option {
    padding: 10px 18px;
    font-size: 14px;
    color: var(--c-ink);
    background: linear-gradient(#f4f7fb, #edf2f8);
    border-top: 1px solid #e6edf6;
}

.bf-option:first-child {
    border-top: 0;
}

.bf-option:hover, .bf-option[aria-selected="true"] {
    background: #dfe9f6;
}

.bf-dates {
    display: grid;
    grid-template-columns:1fr 1fr;
    gap: 15px;
}

@media (max-width: 680px) {
    .bf-dates {
        grid-template-columns: repeat(1, 2fr);
    }
}

.bf-date input {
    width: 100%;
    font-size: 16px;
    border: 0;
    outline: 0;
    padding: 12px;
    background: transparent;
    color: var(--c-ink);
    font-family: Poppins, sans-serif!important;
    font-size: 14px!important;
}

.bf-date input[type="date"] {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    background-color: transparent;
}

.bf-date input[type="date"]::-webkit-calendar-picker-indicator,
.bf-date input[type="date"]::-webkit-inner-spin-button,
.bf-date input[type="date"]::-webkit-clear-button {
    display: none;
}

.bf-date input::placeholder {
    color: #9aa4b2!important;
}

.bf-date .bf-icon {
    position: absolute;
    right: 14px;
    opacity: .7;
}

/* set the placeholder color to grey */
.bf-date input.flatpickr-input::placeholder {
    color: #9aa4b2!important;
}

.bf-panel.passengers {
    position: absolute;
    top: calc(100% + 8px);
    left: 0;
    width: min(600px, 92vw);
    background: #e9f2ff;
    border: 1px solid var(--c-border);
    border-radius: 16px;
    box-shadow: var(--shadow);
    display: none;
    z-index: 60;
    padding: 16px;
}

.bf-select[data-open="true"] .bf-panel.passengers {
    display: block;
}

.passenger-grid {
    display: grid;
    grid-template-columns:1fr 1fr;
    gap: 22px;
}

.passenger-grid .col {
    background: #f4f8ff;
    border-radius: 12px;
    padding: 16px;
}

.col-title {
    font-weight: 800;
    color: var(--c-brand);
    margin-bottom: 12px;
    font-size: 16px;
}

.passenger-row {
    display: grid;
    grid-template-columns:35px 30px 35px 1fr;
    gap: 5px;
    align-items: center;
    padding: 8px 0;
    border-top: 1px solid #d8e4f5;
}

.passenger-row:first-child {
    border-top: 0;
}

.qty {
    width: 35px;
    height: 35px;
    border-radius: 12px;
    background: var(--c-brand);
    color: #fff;
    font-size: 16px;
    font-weight: 700;
    border: 0;
    cursor: pointer;
    display: grid;
    place-items: center;
}

.qty:hover {
    background: var(--c-brand-2);
}

.qty-display {
    font-size: 16px;
    font-weight: 800;
    color: var(--c-ink);
    text-align: center;
}

.passenger-row .label {
    font-size: 14px;
    color: var(--c-ink);
}

@media (max-width: 640px) {
    .passenger-grid {
        grid-template-columns: 1fr;
    }

    .passenger-row {
        grid-template-columns: 48px 48px 48px 1fr;
        grid-template-rows: auto;
        gap: 8px;
    }

    .passenger-row .label {
        grid-row: 1;
        grid-column: 4;
    }

    .passenger-row .qty.minus {
        grid-column: 1;
        justify-self: flex-start;
    }

    .passenger-row .qty-display {
        grid-column: 2;
        justify-self: center;
    }

    .passenger-row .qty.plus {
        grid-column: 3;
        justify-self: flex-end;
    }
}

.bf-cta .bf-button {
    background: #22477F;
    color: #fff;
    border: 0;
    border-radius: 70px;
    padding: 14px 20px;
    font-size: 16px;
    font-weight: 500;
    cursor: pointer;
    line-height: 1;
    box-shadow: 0 6px 18px rgba(19, 57, 105, .25);
    width: 100%;
}

.bf-cta .bf-button:hover {
    filter: brightness(1.05);
}

.cmlf-booking[data-oneway="true"] .bf-dates [data-field="return"] {
    opacity: .45;
    pointer-events: none;
}

/* Toggle passengers columns by flow */
.cmlf-booking[data-oneway="true"] .passenger-grid {
    grid-template-columns: 1fr; /* collapse to one column */
}
.cmlf-booking[data-oneway="true"] .pax-col--return {
    display: none; /* hide Return column entirely */
}

/* Optional: narrower panel when 1 col */
.cmlf-booking[data-oneway="true"] .bf-panel.passengers {
    width: min(560px, 92vw);
}

/* ————————————————————————————————————————————————
   Vehicle length field (shown only for LV/RV)
   ———————————————————————————————————————————————— */

.cmlf-booking .bf-field.bf-vehicle-length {
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px solid rgba(0,0,0,.08);
}

/* Make sure [hidden] truly hides it (some themes override this) */
.cmlf-booking .bf-field[hidden] {
    display: none !important;
}

.cmlf-booking .bf-vehicle-length .bf-label {
    display: inline-block;
    margin-bottom: 6px;
    font-weight: 600;
}

.cmlf-booking .bf-vehicle-length .bf-input {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Numeric input sizing/appearance */
.cmlf-booking .bf-vehicle-length input[type="number"] {
    width: 120px;              /* adjust if you want wider */
    max-width: 100%;
    padding: 10px 12px;
    border: 1px solid rgba(0,0,0,.2);
    border-radius: 8px;
    font: inherit;
    line-height: 1.2;
    background: #fff;
}

/* Focus to match other inputs */
.cmlf-booking .bf-vehicle-length input[type="number"]:focus {
    outline: none;
    border-color: #1F4B89;
    box-shadow: 0 0 0 3px rgba(31, 75, 137, .15);
}

/* Help text */
.cmlf-booking .bf-vehicle-length .bf-help {
    margin-top: 8px;
    font-size: 12px;
    line-height: 1.5;
    color: rgba(0,0,0,.65);
}

/* Optional: unify number spinners across browsers */
.cmlf-booking .bf-vehicle-length input[type="number"]::-webkit-outer-spin-button,
.cmlf-booking .bf-vehicle-length input[type="number"]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
.cmlf-booking .bf-vehicle-length input[type="number"] {
    -moz-appearance: textfield;
}

/* Inline vehicle length panel inside the Vehicle dropdown */
.cmlf-booking .bf-select[data-field="vehicle"] .bf-menu .bf-vehlen-inline {
    padding: 12px;
    margin-top: 6px;
    border-top: 1px solid rgba(0,0,0,.08);
    background: rgba(31,75,137,.06); /* subtle blue tint */
    border-bottom-left-radius: 10px;
    border-bottom-right-radius: 10px;
}

.cmlf-booking .bf-vehlen-inline .bf-vehlen-row {
    margin-bottom: 8px;
}

.cmlf-booking .bf-vehlen-inline input[type="number"] {
    width: 140px;
    max-width: 100%;
    padding: 10px 12px;
    border: 1px solid rgba(0,0,0,.2);
    border-radius: 8px;
    font: inherit;
    background: #fff;
}

.cmlf-booking .bf-vehlen-inline input[type="number"]:focus {
    outline: none;
    border-color: #1F4B89;
    box-shadow: 0 0 0 3px rgba(31,75,137,.15);
}

.cmlf-booking .bf-vehlen-inline .bf-vehlen-help {
    font-size: 12px;
    line-height: 1.45;
    color: rgba(0,0,0,.7);
}
