:root {
    --cbw-dark: #232323;
    --cbw-green: #75b900;
    --cbw-green-bright: #8bd000;
    --cbw-text: #202124;
    --cbw-muted: #687078;
    --cbw-line: #e4e8eb;
    --cbw-soft: #f6f8f8;
    --cbw-white: #ffffff;
    --cbw-danger: #c53232;
    --cbw-radius: 18px;
    --cbw-shadow: 0 18px 50px rgba(20, 28, 32, 0.08);
}

.cbw-wizard,
.cbw-wizard * {
    box-sizing: border-box;
}

.cbw-wizard {
    width: min(1180px, calc(100% - 32px));
    margin: 34px auto 70px;
    color: var(--cbw-text);
    font-family: inherit;
}

.cbw-wizard button,
.cbw-wizard input,
.cbw-wizard select {
    font: inherit;
}

.cbw-hero-strip {
    position: relative;
    overflow: hidden;
    padding: 34px 38px;
    border-radius: 22px;
    background: var(--cbw-dark);
    color: var(--cbw-white);
    margin-bottom: 26px;
}

.cbw-hero-strip::after {
    content: '';
    position: absolute;
    right: -70px;
    top: -100px;
    width: 280px;
    height: 280px;
    border: 1px solid rgba(139, 208, 0, .28);
    border-radius: 50%;
    box-shadow: 0 0 80px rgba(117, 185, 0, .11);
}

.cbw-eyebrow {
    display: inline-block;
    margin-bottom: 9px;
    color: var(--cbw-green-bright);
    font-size: 12px;
    font-weight: 800;
    letter-spacing: .13em;
}

.cbw-hero-strip h2 {
    margin: 0 0 9px;
    color: #fff;
    font-size: clamp(30px, 4vw, 48px);
    line-height: 1.02;
    letter-spacing: -.03em;
}

.cbw-hero-strip p {
    position: relative;
    z-index: 1;
    max-width: 760px;
    margin: 0;
    color: rgba(255,255,255,.76);
    font-size: 15px;
    line-height: 1.7;
}

.cbw-progress {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 8px;
    margin: 0 0 24px;
}

.cbw-progress-item {
    position: relative;
    display: flex;
    align-items: center;
    gap: 9px;
    min-width: 0;
    color: #8a9197;
    font-size: 12px;
    font-weight: 700;
}

.cbw-progress-item::after {
    content: '';
    position: absolute;
    left: 36px;
    right: 0;
    top: 15px;
    height: 2px;
    background: #e4e8eb;
    z-index: -1;
}

.cbw-progress-item:last-child::after { display: none; }

.cbw-progress-dot {
    display: inline-grid;
    place-items: center;
    flex: 0 0 30px;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: #eef1f2;
    color: #7c848a;
    border: 2px solid #eef1f2;
}

.cbw-progress-item.is-active,
.cbw-progress-item.is-complete { color: var(--cbw-dark); }
.cbw-progress-item.is-active .cbw-progress-dot,
.cbw-progress-item.is-complete .cbw-progress-dot {
    background: var(--cbw-green);
    border-color: var(--cbw-green);
    color: #fff;
}
.cbw-progress-item.is-complete::after { background: var(--cbw-green); }

.cbw-card {
    background: var(--cbw-white);
    border: 1px solid var(--cbw-line);
    border-radius: var(--cbw-radius);
    box-shadow: var(--cbw-shadow);
}

.cbw-step-card { padding: 30px; }

.cbw-section-head {
    display: flex;
    align-items: flex-start;
    gap: 15px;
    margin-bottom: 22px;
}

.cbw-section-head-spaced { margin-top: 32px; }

.cbw-step-number {
    display: inline-grid;
    place-items: center;
    flex: 0 0 38px;
    width: 38px;
    height: 38px;
    border-radius: 11px;
    background: rgba(117,185,0,.1);
    color: #5d9300;
    font-size: 13px;
    font-weight: 900;
}

.cbw-section-head h3 {
    margin: 0 0 4px;
    font-size: 23px;
    line-height: 1.2;
    color: var(--cbw-dark);
}

.cbw-section-head p {
    margin: 0;
    color: var(--cbw-muted);
    font-size: 14px;
    line-height: 1.55;
}

.cbw-hire-toggle {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

.cbw-hire-type,
.cbw-skip-card,
.cbw-duration-card,
.cbw-primary-button,
.cbw-secondary-button,
.cbw-item-add,
.cbw-qty-controls button {
    -webkit-tap-highlight-color: transparent;
}

.cbw-hire-type {
    text-align: left;
    padding: 18px 20px;
    border: 1px solid var(--cbw-line);
    border-radius: 14px;
    background: #fff;
    cursor: pointer;
    transition: .2s ease;
}

.cbw-hire-type strong { display: block; color: var(--cbw-dark); font-size: 15px; }
.cbw-hire-type span { display: block; margin-top: 3px; color: var(--cbw-muted); font-size: 12px; }
.cbw-hire-type:hover { border-color: #b7c4ac; transform: translateY(-1px); }
.cbw-hire-type.is-active {
    border-color: var(--cbw-green);
    background: rgba(117,185,0,.055);
    box-shadow: 0 0 0 2px rgba(117,185,0,.08);
}

.cbw-skip-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
}

.cbw-skip-card {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-end;
    min-height: 230px;
    padding: 20px;
    border: 1px solid var(--cbw-line);
    border-radius: 16px;
    background: #fff;
    cursor: pointer;
    transition: .22s ease;
}

.cbw-skip-card:hover { transform: translateY(-2px); border-color: #cbd3d6; }
.cbw-skip-card.is-selected {
    border-color: var(--cbw-green);
    box-shadow: 0 0 0 2px rgba(117,185,0,.1), 0 16px 35px rgba(37,53,18,.08);
}

.cbw-skip-check {
    position: absolute;
    top: 13px;
    right: 13px;
    display: none;
    place-items: center;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--cbw-green);
    color: white;
    font-weight: 900;
    font-size: 13px;
}
.cbw-skip-card.is-selected .cbw-skip-check { display: grid; }

.cbw-skip-image {
    display: grid;
    place-items: center;
    width: 100%;
    height: 135px;
    margin-bottom: 6px;
}
.cbw-skip-image img { max-width: 100%; max-height: 132px; object-fit: contain; }
.cbw-skip-name { font-size: 18px; font-weight: 900; color: var(--cbw-dark); }
.cbw-skip-price { margin-top: 4px; color: #638f13; font-size: 13px; font-weight: 800; }

.cbw-duration-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 10px;
}

.cbw-duration-card {
    padding: 17px 12px;
    border: 1px solid var(--cbw-line);
    border-radius: 13px;
    background: #fff;
    cursor: pointer;
    text-align: center;
    transition: .2s ease;
}
.cbw-duration-card:hover { border-color: #c5d3bb; }
.cbw-duration-card.is-selected {
    border-color: var(--cbw-green);
    background: rgba(117,185,0,.055);
    box-shadow: 0 0 0 2px rgba(117,185,0,.08);
}
.cbw-duration-days { display: block; font-size: 14px; font-weight: 900; color: var(--cbw-dark); }
.cbw-duration-price { display: block; margin-top: 5px; color: #638f13; font-size: 12px; font-weight: 800; }

.cbw-wait-note,
.cbw-info-panel {
    border: 1px solid #dce7c9;
    background: #fbfdf7;
    border-radius: 13px;
    color: #50584b;
}
.cbw-wait-note {
    display: flex;
    gap: 12px;
    margin-top: 25px;
    padding: 16px 18px;
}
.cbw-wait-note[hidden] { display: none !important; }
.cbw-info-icon {
    display: grid;
    place-items: center;
    flex: 0 0 24px;
    width: 24px;
    height: 24px;
    border: 1px solid var(--cbw-green);
    border-radius: 50%;
    color: #5f9400;
    font-weight: 900;
}
.cbw-wait-note p { margin: 3px 0 0; font-size: 13px; line-height: 1.55; }

.cbw-step-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin-top: 28px;
    padding-top: 22px;
    border-top: 1px solid var(--cbw-line);
}

.cbw-selection-summary { color: var(--cbw-muted); font-size: 13px; font-weight: 700; }

.cbw-primary-button,
.cbw-secondary-button,
.cbw-checkout-button {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 48px;
    padding: 0 22px !important;
    border-radius: 11px !important;
    border: 1px solid transparent !important;
    text-decoration: none !important;
    font-size: 14px !important;
    font-weight: 900 !important;
    cursor: pointer;
    transition: .2s ease;
}
.cbw-primary-button,
.cbw-checkout-button {
    background: var(--cbw-green) !important;
    color: #fff !important;
}
.cbw-primary-button:hover,
.cbw-checkout-button:hover { background: #669f00 !important; transform: translateY(-1px); }
.cbw-primary-button:disabled,
.cbw-checkout-button:disabled {
    opacity: .45 !important;
    cursor: not-allowed !important;
    transform: none !important;
}
.cbw-secondary-button {
    background: #fff !important;
    color: var(--cbw-dark) !important;
    border-color: var(--cbw-line) !important;
}
.cbw-secondary-button:hover { border-color: #c8ced1 !important; background: #fafafa !important; }

.cbw-selected-strip {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 17px 20px;
    margin-bottom: 18px;
    border: 1px solid var(--cbw-line);
    border-left: 4px solid var(--cbw-green);
    border-radius: 13px;
    background: #fff;
}
.cbw-selected-strip > div { display: flex; align-items: baseline; flex-wrap: wrap; gap: 8px 13px; }
.cbw-selected-kicker { width: 100%; color: #6f777d; font-size: 10px; font-weight: 900; letter-spacing: .1em; }
.cbw-selected-strip strong { font-size: 16px; color: var(--cbw-dark); }
.cbw-selected-strip span:not(.cbw-selected-kicker) { color: var(--cbw-muted); font-size: 13px; }
.cbw-change-link { color: #5f9400; font-size: 13px; font-weight: 900; text-decoration: none; }

.cbw-native-form-wrap .cart { margin: 0 !important; }
.cbw-native-form-wrap form.cart { width: 100%; }
.cbw-native-form-wrap .cbw-native-hidden { display: none !important; }
.cbw-live-step { display: none; }
.cbw-live-step.is-active { display: block; animation: cbwFade .24s ease; }
@keyframes cbwFade { from { opacity: 0; transform: translateY(7px); } to { opacity: 1; transform: none; } }

.cbw-delivery-layout {
    display: grid;
    grid-template-columns: minmax(0, 1.12fr) minmax(290px, .88fr);
    gap: 22px;
    align-items: start;
}

.cbw-calendar-box {
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
}
.cbw-calendar-box fieldset { margin: 0 !important; padding: 0 !important; border: 0 !important; }
.cbw-calendar-box .wc-bookings-date-picker { margin: 0 !important; }
.cbw-calendar-box .picker.hasDatepicker { margin: 0 !important; }

.cbw-wizard .wc-bookings-date-picker .ui-datepicker {
    width: 100% !important;
    border: 1px solid var(--cbw-line) !important;
    border-radius: 14px !important;
    overflow: hidden;
    box-shadow: none !important;
}
.cbw-wizard .wc-bookings-date-picker .ui-datepicker-header {
    border: 0 !important;
    border-radius: 0 !important;
    background: var(--cbw-dark) !important;
    color: #fff !important;
    padding: 11px 8px !important;
}
.cbw-wizard .wc-bookings-date-picker .ui-datepicker-title { color: #fff !important; font-weight: 900 !important; }
.cbw-wizard .wc-bookings-date-picker .ui-datepicker-prev,
.cbw-wizard .wc-bookings-date-picker .ui-datepicker-next { background: rgba(255,255,255,.1) !important; border: 0 !important; top: 8px !important; }
.cbw-wizard .wc-bookings-date-picker .ui-datepicker th { background: #f5f6f7 !important; color: #7d858b !important; padding: 10px 4px !important; }
.cbw-wizard .wc-bookings-date-picker .ui-datepicker td { border: 1px solid #eef0f1 !important; background: #fff !important; }
.cbw-wizard .wc-bookings-date-picker .ui-datepicker td a,
.cbw-wizard .wc-bookings-date-picker .ui-datepicker td span { min-height: 42px; display: grid !important; place-items: center; border: 0 !important; }
.cbw-wizard .wc-bookings-date-picker .ui-datepicker td.bookable a { background: rgba(117,185,0,.14) !important; color: #30420e !important; }
.cbw-wizard .wc-bookings-date-picker .ui-datepicker td.bookable a:hover,
.cbw-wizard .wc-bookings-date-picker .ui-datepicker td.ui-datepicker-current-day a { background: var(--cbw-green) !important; color: #fff !important; }
.cbw-wizard .wc-bookings-date-picker .ui-datepicker td.ui-state-disabled { opacity: .28 !important; }

.cbw-calendar-box .wc-bookings-booking-cost {
    margin-top: 12px !important;
    padding: 13px 15px !important;
    border-radius: 10px !important;
    background: #f3f5f5 !important;
    color: var(--cbw-dark) !important;
    font-size: 13px !important;
}

.cbw-choice-addon {
    margin: 0 !important;
    padding: 18px !important;
    border: 1px solid var(--cbw-line);
    border-radius: 14px;
    background: #fafbfb;
}
.cbw-choice-addon > .wc-pao-addon-name {
    display: block !important;
    margin: 0 0 10px !important;
    color: var(--cbw-dark) !important;
    font-size: 15px !important;
    font-weight: 900 !important;
}
.cbw-choice-addon .wc-pao-addon-description { margin: 0 0 12px !important; font-size: 12px !important; line-height: 1.55 !important; color: var(--cbw-muted) !important; }
.cbw-choice-addon .wc-pao-addon-description p { margin: 0 !important; }
.cbw-choice-addon .wc-pao-addon-description a { color: #5f9400 !important; font-weight: 900; }

.cbw-radio-cards .wc-pao-addon-wrap {
    position: relative;
    margin: 8px 0 0 !important;
    padding: 0 !important;
}
.cbw-radio-cards .wc-pao-addon-wrap label {
    display: flex !important;
    align-items: center;
    min-height: 50px;
    padding: 13px 15px 13px 42px !important;
    margin: 0 !important;
    border: 1px solid var(--cbw-line);
    border-radius: 11px;
    background: #fff;
    color: var(--cbw-dark) !important;
    font-size: 13px !important;
    font-weight: 750 !important;
    cursor: pointer;
    transition: .18s ease;
}
.cbw-radio-cards .wc-pao-addon-wrap:hover label { border-color: #c8d4bd; }
.cbw-radio-cards .wc-pao-addon-wrap.is-selected label {
    border-color: var(--cbw-green);
    background: rgba(117,185,0,.055);
    box-shadow: 0 0 0 2px rgba(117,185,0,.07);
}
.cbw-radio-cards .cbw-choice-input {
    position: absolute !important;
    left: 15px !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    width: 16px !important;
    height: 16px !important;
    margin: 0 !important;
    accent-color: var(--cbw-green);
    z-index: 1;
}

.cbw-waste-addon .wc-pao-addon-wrap,
.cbw-placement-addon .wc-pao-addon-wrap {
    display: inline-block;
    width: calc(50% - 5px);
    vertical-align: top;
}
.cbw-waste-addon .wc-pao-addon-wrap:nth-of-type(even),
.cbw-placement-addon .wc-pao-addon-wrap:nth-of-type(even) { margin-left: 6px !important; }

.cbw-info-panel {
    padding: 12px 14px !important;
    margin: 10px 0 13px !important;
}

.cbw-declared-wrap {
    margin-top: 18px;
    padding: 16px;
    border: 1px solid var(--cbw-line);
    border-radius: 14px;
    background: #f7f8f8;
}
.cbw-declared-wrap[hidden] { display: none !important; }
.cbw-declared-title { display: flex; justify-content: space-between; gap: 15px; align-items: baseline; margin-bottom: 12px; }
.cbw-declared-title strong { font-size: 13px; color: var(--cbw-dark); }
.cbw-declared-title span { color: var(--cbw-muted); font-size: 11px; }
.cbw-declared-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
}

.cbw-item-addon { margin: 0 !important; padding: 0 !important; }
.cbw-item-native { display: none !important; }
.cbw-item-card {
    min-height: 67px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 11px;
    border: 1px solid #e0e4e5;
    border-radius: 10px;
    background: #fff;
    transition: .18s ease;
}
.cbw-item-card.is-added { border-color: var(--cbw-green); box-shadow: 0 0 0 1px rgba(117,185,0,.08); }
.cbw-item-copy { min-width: 0; }
.cbw-item-copy strong { display: block; color: var(--cbw-dark); font-size: 12px; line-height: 1.25; }
.cbw-item-copy span { display: block; margin-top: 4px; color: var(--cbw-muted); font-size: 10.5px; }
.cbw-item-add,
.cbw-qty-controls button {
    border: 0 !important;
    background: var(--cbw-dark) !important;
    color: #fff !important;
    font-weight: 900 !important;
    cursor: pointer;
}
.cbw-item-add {
    min-width: 48px;
    height: 30px;
    padding: 0 10px !important;
    border-radius: 999px !important;
    font-size: 11px !important;
}
.cbw-item-add.is-added { background: var(--cbw-green) !important; }
.cbw-qty-controls { display: inline-flex; align-items: center; gap: 8px; }
.cbw-qty-controls[hidden] { display: none !important; }
.cbw-qty-controls button {
    width: 30px;
    height: 30px;
    padding: 0 !important;
    border-radius: 50% !important;
    font-size: 16px !important;
    line-height: 30px !important;
}
.cbw-qty-minus { background: #e8ebed !important; color: #4c555b !important; }
.cbw-qty-count { min-width: 14px; text-align: center; color: var(--cbw-dark); font-size: 12px; font-weight: 900; }

.cbw-declared-total {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid #dde2e3;
    font-size: 12px;
}
.cbw-declared-total span { color: var(--cbw-muted); }
.cbw-declared-total strong { color: var(--cbw-dark); font-size: 14px; }

.cbw-review-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.3fr) minmax(260px, .7fr);
    gap: 16px;
}
.cbw-review-card,
.cbw-total-card {
    border: 1px solid var(--cbw-line);
    border-radius: 14px;
    background: #fff;
}
.cbw-review-card { padding: 8px 18px; }
.cbw-review-row {
    display: grid;
    grid-template-columns: 150px 1fr;
    gap: 14px;
    padding: 13px 0;
    border-bottom: 1px solid #edf0f1;
}
.cbw-review-row:last-child { border-bottom: 0; }
.cbw-review-row span { color: var(--cbw-muted); font-size: 12px; }
.cbw-review-row strong { color: var(--cbw-dark); font-size: 13px; font-weight: 800; }
.cbw-total-card {
    padding: 22px;
    background: var(--cbw-dark);
    color: #fff;
}
.cbw-review-breakdown-title {
    display: block;
    color: rgba(255,255,255,.65);
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .08em;
}
.cbw-review-breakdown-lines {
    display: grid;
    margin-top: 12px;
}
.cbw-review-breakdown-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px;
    align-items: center;
    padding: 9px 0;
    border-bottom: 1px solid rgba(255,255,255,.09);
}
.cbw-review-breakdown-row span {
    color: rgba(255,255,255,.76);
    font-size: 12px;
    line-height: 1.4;
}
.cbw-review-breakdown-row strong {
    color: #fff;
    font-size: 12px;
    font-weight: 850;
    white-space: nowrap;
}
.cbw-review-breakdown-row.cbw-review-breakdown-base {
    margin-top: 3px;
    border-bottom: 0;
}
.cbw-review-breakdown-row.cbw-review-breakdown-base span,
.cbw-review-breakdown-row.cbw-review-breakdown-base strong {
    color: #fff;
    font-weight: 850;
}
.cbw-review-final-total {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    margin-top: 14px;
    padding-top: 15px;
    border-top: 1px solid rgba(255,255,255,.18);
}
.cbw-review-final-total span {
    color: rgba(255,255,255,.78);
    font-size: 11px;
    font-weight: 850;
    text-transform: uppercase;
    letter-spacing: .07em;
}
.cbw-review-final-total strong {
    display: block;
    margin: 0;
    color: var(--cbw-green-bright);
    font-size: 31px;
    line-height: 1;
    font-weight: 900;
}
.cbw-total-card small { display: block; margin-top: 11px; color: rgba(255,255,255,.58); font-size: 10.5px; line-height: 1.45; }
.cbw-native-totals-mount { margin-top: 14px; }
.cbw-native-totals-mount .product-addon-totals,
.cbw-native-totals-mount .wc-pao-addon-totals { display: none !important; }

.cbw-inline-error {
    margin-top: 16px;
    padding: 11px 13px;
    border: 1px solid #efc6c6;
    border-radius: 10px;
    background: #fff7f7;
    color: #a72c2c;
    font-size: 12px;
    font-weight: 700;
}
.cbw-inline-error[hidden] { display: none !important; }

.cbw-final-actions { align-items: center; }
.cbw-submit-mount { margin-left: auto; }
.cbw-submit-mount .cbw-checkout-button { margin: 0 !important; }

.cbw-system-message {
    max-width: 900px;
    margin: 30px auto;
    padding: 18px;
    border: 1px solid #efc6c6;
    border-radius: 12px;
    background: #fff8f8;
    color: #8d2929;
}

.cbw-wizard.is-loading { opacity: .65; pointer-events: none; }

@media (max-width: 900px) {
    .cbw-duration-grid { grid-template-columns: repeat(3, 1fr); }
    .cbw-delivery-layout { grid-template-columns: 1fr; }
    .cbw-review-grid { grid-template-columns: 1fr; }
}

@media (max-width: 767px) {
    .cbw-wizard { width: min(100% - 20px, 1180px); margin: 18px auto 50px; }
    .cbw-hero-strip { padding: 25px 20px; border-radius: 17px; }
    .cbw-hero-strip h2 { font-size: 30px; }
    .cbw-progress { gap: 2px; overflow: hidden; }
    .cbw-progress-item { justify-content: center; }
    .cbw-progress-label { display: none; }
    .cbw-progress-item::after { left: calc(50% + 16px); right: calc(-50% + 16px); }
    .cbw-step-card { padding: 18px; }
    .cbw-section-head h3 { font-size: 19px; }
    .cbw-section-head p { font-size: 12.5px; }
    .cbw-hire-toggle { grid-template-columns: 1fr; }
    .cbw-skip-grid { grid-template-columns: repeat(3, 1fr); gap: 7px; }
    .cbw-skip-card { min-height: 150px; padding: 10px 7px; border-radius: 12px; }
    .cbw-skip-image { height: 83px; }
    .cbw-skip-image img { max-height: 80px; }
    .cbw-skip-name { font-size: 13px; }
    .cbw-skip-price { font-size: 9.5px; }
    .cbw-duration-grid { grid-template-columns: repeat(2, 1fr); }
    .cbw-duration-card:last-child { grid-column: 1 / -1; }
    .cbw-step-actions { align-items: stretch; flex-direction: column-reverse; }
    .cbw-step-one-actions { flex-direction: column; }
    .cbw-primary-button,
    .cbw-secondary-button,
    .cbw-checkout-button { width: 100% !important; }
    .cbw-selection-summary { text-align: center; }
    .cbw-selected-strip { align-items: flex-start; }
    .cbw-declared-grid { grid-template-columns: 1fr; }
    .cbw-declared-title { flex-direction: column; gap: 3px; }
    .cbw-waste-addon .wc-pao-addon-wrap,
    .cbw-placement-addon .wc-pao-addon-wrap { display: block; width: 100%; margin-left: 0 !important; }
    .cbw-review-row { grid-template-columns: 1fr; gap: 4px; }
    .cbw-submit-mount { width: 100%; margin-left: 0; }
    .cbw-wizard .wc-bookings-date-picker .ui-datepicker td a,
    .cbw-wizard .wc-bookings-date-picker .ui-datepicker td span { min-height: 38px; }
}

/* v1.1.0: delivery-date-first flow */
.cbw-delivery-sequence {
    display: grid;
    gap: 22px;
}

.cbw-delivery-subsection {
    display: grid;
    gap: 12px;
}

.cbw-mini-heading {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 14px;
    padding-bottom: 9px;
    border-bottom: 1px solid var(--cbw-line);
}

.cbw-mini-heading strong {
    color: var(--cbw-dark);
    font-size: 15px;
    font-weight: 900;
}

.cbw-mini-heading span {
    color: var(--cbw-muted);
    font-size: 12px;
    line-height: 1.45;
    text-align: right;
}

.cbw-hire-period-wrap[hidden],
.cbw-delivery-slot-wrap[hidden] {
    display: none !important;
}

@media (max-width: 680px) {
    .cbw-mini-heading {
        display: block;
    }
    .cbw-mini-heading span {
        display: block;
        margin-top: 3px;
        text-align: left;
    }
}


/* =========================================================
   v1.3.0 functional UI corrections
   - bespoke UK calendar driven by WooCommerce live availability
   - real radio inputs hidden behind deterministic option buttons
   - equal two-column declared-item layout
   ========================================================= */

.cbw-native-booking-box {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
    clip: rect(0 0 0 0) !important;
    clip-path: inset(50%) !important;
    white-space: nowrap !important;
    opacity: 0 !important;
    pointer-events: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
}

.cbw-custom-calendar {
    width: 100%;
    overflow: hidden;
    border: 1px solid var(--cbw-line);
    border-radius: 14px;
    background: #fff;
}

.cbw-calendar-toolbar {
    display: grid;
    grid-template-columns: 44px 1fr 44px;
    align-items: center;
    min-height: 54px;
    background: var(--cbw-dark);
    color: #fff;
}

.cbw-calendar-title {
    text-align: center;
    font-size: 15px;
    font-weight: 900;
    text-transform: none;
}

.cbw-calendar-nav {
    width: 38px;
    height: 38px;
    margin: 0 auto;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 9px !important;
    background: rgba(255,255,255,.08) !important;
    color: #fff !important;
    font-size: 25px !important;
    line-height: 1 !important;
    cursor: pointer;
}
.cbw-calendar-nav:disabled { opacity: .25; cursor: not-allowed; }

.cbw-calendar-weekdays,
.cbw-calendar-days {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
}

.cbw-calendar-weekdays {
    background: #f5f6f7;
    border-bottom: 1px solid var(--cbw-line);
}
.cbw-calendar-weekdays span {
    padding: 10px 4px;
    text-align: center;
    color: #727b81;
    font-size: 11px;
    font-weight: 800;
}

.cbw-calendar-day {
    position: relative;
    min-height: 50px;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-right: 1px solid #edf0f1 !important;
    border-bottom: 1px solid #edf0f1 !important;
    border-radius: 0 !important;
    background: #fff !important;
    color: #70777c !important;
    font-size: 13px !important;
    font-weight: 750 !important;
}
.cbw-calendar-day:nth-child(7n) { border-right: 0 !important; }
.cbw-calendar-day.is-outside { background: #fafafa !important; color: #c4c8ca !important; }
.cbw-calendar-day.is-bookable { cursor: pointer; color: var(--cbw-dark) !important; }
.cbw-calendar-day.is-bookable:hover { background: rgba(117,185,0,.10) !important; }
.cbw-calendar-day.is-unavailable,
.cbw-calendar-day:disabled { cursor: not-allowed; color: #c1c6c9 !important; background: #f6f7f7 !important; }
.cbw-calendar-day.is-in-range { background: rgba(117,185,0,.18) !important; color: #30420e !important; }
.cbw-calendar-day.is-selected,
.cbw-calendar-day.is-range-start,
.cbw-calendar-day.is-range-end { background: var(--cbw-green) !important; color: #fff !important; }

.cbw-calendar-loading,
.cbw-calendar-error {
    padding: 11px 14px;
    border-top: 1px solid var(--cbw-line);
    font-size: 12px;
}
.cbw-calendar-loading { color: var(--cbw-muted); }
.cbw-calendar-error { color: #9b2c2c; background: #fff6f6; }
.cbw-calendar-loading[hidden],
.cbw-calendar-error[hidden] { display: none !important; }

.cbw-calendar-selection {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 15px;
    padding: 12px 14px;
    background: #f8faf6;
    border-top: 1px solid #e3eadb;
    font-size: 12px;
}
.cbw-calendar-selection span { color: var(--cbw-muted); }
.cbw-calendar-selection strong { color: var(--cbw-dark); font-size: 12px; }

/* Product Add-Ons choice fields: keep the real inputs in the DOM but never show them. */
.cbw-choice-native-source,
.cbw-choice-input-native {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
    clip: rect(0 0 0 0) !important;
    clip-path: inset(50%) !important;
    opacity: 0 !important;
    pointer-events: none !important;
}

.cbw-choice-enhanced {
    margin: 0 !important;
    padding: 18px !important;
    border: 1px solid var(--cbw-line) !important;
    border-radius: 14px !important;
    background: #fafbfb !important;
}

.cbw-choice-grid {
    display: grid;
    gap: 10px;
    width: 100%;
    margin-top: 12px;
}
.cbw-choice-grid-delivery { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.cbw-choice-grid-waste,
.cbw-choice-grid-placement { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.cbw-choice-button {
    min-width: 0;
    min-height: 52px;
    margin: 0 !important;
    padding: 12px 14px !important;
    border: 1px solid var(--cbw-line) !important;
    border-radius: 11px !important;
    background: #fff !important;
    color: var(--cbw-dark) !important;
    text-align: center;
    font-size: 12.5px !important;
    font-weight: 850 !important;
    line-height: 1.3 !important;
    cursor: pointer;
    transition: .18s ease;
}
.cbw-choice-button:hover { border-color: #bacbaa !important; }
.cbw-choice-button.is-selected {
    border-color: var(--cbw-green) !important;
    background: rgba(117,185,0,.07) !important;
    box-shadow: 0 0 0 2px rgba(117,185,0,.07);
}

.cbw-declared-heading-source[hidden] { display: none !important; }
.cbw-declared-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    grid-auto-flow: row !important;
    align-items: stretch;
}
.cbw-declared-grid > .cbw-declared-addon,
.cbw-declared-grid > .cbw-item-addon {
    grid-column: auto !important;
    width: auto !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
}
.cbw-declared-grid .cbw-item-card { height: 100%; }

@media (max-width: 900px) {
    .cbw-choice-grid-delivery { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 680px) {
    .cbw-calendar-day { min-height: 43px; }
    .cbw-calendar-weekdays span { font-size: 10px; padding: 8px 2px; }
    .cbw-calendar-selection { align-items: flex-start; flex-direction: column; gap: 3px; }
    .cbw-choice-grid-delivery,
    .cbw-choice-grid-waste,
    .cbw-choice-grid-placement,
    .cbw-declared-grid { grid-template-columns: 1fr !important; }
}

/* Native Product Add-Ons headings are replaced by the wizard's own section headings. */
.cbw-booking-form > .wc-pao-addon-heading,
.cbw-native-form-wrap .wc-pao-addon-heading { display: none !important; }
.cbw-choice-delivery > .wc-pao-addon-name { display: none !important; }
\n\n/* =========================================================
   v1.3.1 availability + delivery-slot corrections
   ========================================================= */

/* Dates are disabled when the minimum configured hire period cannot be
   fulfilled from that start date. Keep the appearance identical to other
   unavailable dates. */
.cbw-calendar-day.is-minimum-hire-unavailable {
    cursor: not-allowed !important;
    color: #c1c6c9 !important;
    background: #f6f7f7 !important;
}

/* The wizard already provides its own "Delivery time" heading, so remove
   Product Add-Ons' native fieldset frame and duplicated legend/title. */
.cbw-choice-delivery .cbw-delivery-native-fieldset,
.cbw-choice-delivery fieldset {
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    outline: 0 !important;
    background: transparent !important;
}

.cbw-choice-delivery .cbw-delivery-native-legend,
.cbw-choice-delivery fieldset > legend,
.cbw-choice-delivery .wc-pao-addon-name,
.cbw-choice-delivery .wc-pao-addon-heading {
    display: none !important;
}

/* No extra vertical gap is required where the removed native legend lived. */
.cbw-choice-delivery .cbw-choice-grid {
    margin-top: 0 !important;
}

/* =========================================================
   LIVE QUOTE — v1.3.4
   Compact persistent price summary shown before navigation.
========================================================= */
.cbw-live-quote {
    margin-top: 22px;
    border: 1px solid rgba(35,35,35,.12);
    border-radius: 14px;
    overflow: hidden;
    background: var(--cbw-dark);
    color: #fff;
}

.cbw-live-quote-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 15px 18px;
    border-bottom: 1px solid rgba(255,255,255,.12);
}

.cbw-live-quote-head span {
    color: rgba(255,255,255,.72);
    font-size: 12px;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.cbw-live-quote-head strong {
    color: var(--cbw-green-bright);
    font-size: 23px;
    line-height: 1;
    font-weight: 900;
}

.cbw-live-quote-lines {
    display: grid;
    gap: 0;
    padding: 5px 18px 7px;
}

.cbw-live-quote-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 18px;
    align-items: center;
    padding: 9px 0;
    border-bottom: 1px solid rgba(255,255,255,.08);
}

.cbw-live-quote-row:last-child { border-bottom: 0; }

.cbw-live-quote-row span {
    color: rgba(255,255,255,.78);
    font-size: 13px;
}

.cbw-live-quote-row strong {
    color: #fff;
    font-size: 13px;
    font-weight: 850;
    white-space: nowrap;
}

.cbw-live-quote-empty {
    padding: 11px 0;
    color: rgba(255,255,255,.58);
    font-size: 12px;
}

@media (max-width: 767px) {
    .cbw-live-quote-head { padding: 14px 15px; }
    .cbw-live-quote-head strong { font-size: 20px; }
    .cbw-live-quote-lines { padding: 4px 15px 6px; }
    .cbw-live-quote-row { gap: 10px; }
}


/* =========================================================
   v3.1.6 — UNIFIED SELECTABLE OPTIONS + NATIVE TOTALS CLEANUP
   ========================================================= */

:root {
    --cbw-option-bg: #fbfdf8;
    --cbw-option-selected-bg: #f4f9e9;
    --cbw-option-selected-border: #315f18;
    --cbw-option-hover-border: #ff5a00;
}

/*
 * WooCommerce must continue calculating these values in the DOM because the
 * wizard reads them for its live quote/review. They are hidden visually so
 * customers only ever see Cubic's clean price summaries.
 */
.cbw-wizard form.cbw-booking-form #product-addons-total,
.cbw-wizard form.cbw-booking-form .product-addon-totals,
.cbw-wizard form.cbw-booking-form .wc-pao-addon-totals,
.cbw-wizard form.cbw-booking-form .wc-bookings-booking-cost,
.cbw-wizard .cbw-native-totals-mount #product-addons-total,
.cbw-wizard .cbw-native-totals-mount .product-addon-totals,
.cbw-wizard .cbw-native-totals-mount .wc-pao-addon-totals,
.cbw-wizard .cbw-calendar-box .wc-bookings-booking-cost {
    display: none !important;
}

/* Base appearance shared by every main selectable tab/card in the wizard. */
.cbw-wizard .cbw-hire-type,
.cbw-wizard .cbw-skip-card,
.cbw-wizard .cbw-duration-card,
.cbw-wizard .cbw-choice-button {
    border: 1px solid var(--cbw-line) !important;
    border-radius: var(--cbw-radius) !important;
    background: var(--cbw-option-bg) !important;
    color: var(--cbw-dark) !important;
    box-shadow: none !important;
    transform: none !important;
    transition: border-color .18s ease, background-color .18s ease, box-shadow .18s ease !important;
}

.cbw-wizard .cbw-hire-type strong,
.cbw-wizard .cbw-hire-type span,
.cbw-wizard .cbw-skip-card .cbw-skip-name,
.cbw-wizard .cbw-duration-card .cbw-duration-days,
.cbw-wizard .cbw-choice-button {
    color: var(--cbw-dark) !important;
}

.cbw-wizard .cbw-hire-type span,
.cbw-wizard .cbw-skip-card .cbw-skip-price,
.cbw-wizard .cbw-duration-card .cbw-duration-price {
    color: #638f13 !important;
}

/* Selected state: dark-green outline, light fill and a subtle depth cue. */
.cbw-wizard .cbw-hire-type.is-active,
.cbw-wizard .cbw-skip-card.is-selected,
.cbw-wizard .cbw-duration-card.is-selected,
.cbw-wizard .cbw-choice-button.is-selected {
    border-color: var(--cbw-option-selected-border) !important;
    background: var(--cbw-option-selected-bg) !important;
    box-shadow:
        0 0 0 2px rgba(49,95,24,.08),
        0 7px 18px rgba(35,35,35,.055) !important;
    transform: none !important;
}

/* Keep the skip tick as the additional selected cue, but match the new green. */
.cbw-wizard .cbw-skip-card.is-selected .cbw-skip-check {
    display: grid;
    background: var(--cbw-option-selected-border) !important;
}

/* Hover never fills the option orange — only its outline changes. */
.cbw-wizard .cbw-hire-type:hover,
.cbw-wizard .cbw-skip-card:hover,
.cbw-wizard .cbw-duration-card:hover,
.cbw-wizard .cbw-choice-button:hover,
.cbw-wizard .cbw-hire-type.is-active:hover,
.cbw-wizard .cbw-skip-card.is-selected:hover,
.cbw-wizard .cbw-duration-card.is-selected:hover,
.cbw-wizard .cbw-choice-button.is-selected:hover {
    border-color: var(--cbw-option-hover-border) !important;
    transform: none !important;
}

/* Product Add-Ons wrapper stays neutral so only the actual choices look active. */
.cbw-wizard .cbw-choice-enhanced,
.cbw-wizard .cbw-choice-addon {
    background: #fff !important;
}

/* Maintain the compact delivery-time card proportions while using the same skin. */
.cbw-wizard .cbw-choice-grid-delivery .cbw-choice-button {
    min-height: 52px;
    border-radius: var(--cbw-radius) !important;
}

@media (max-width: 767px) {
    .cbw-wizard .cbw-hire-type,
    .cbw-wizard .cbw-skip-card,
    .cbw-wizard .cbw-duration-card,
    .cbw-wizard .cbw-choice-button {
        border-radius: 14px !important;
    }
}

/* =========================================================
   v3.1.7 — HIDE NATIVE WOOCOMMERCE NOTICE BANNERS
   =========================================================

   WooCommerce can inject classic notice/info banners inside the native
   booking form while its AJAX pricing/validation runs. The wizard already
   presents its own validation and booking feedback, so those native banners
   are kept out of the customer-facing interface.
*/
.cbw-wizard .woocommerce-notices-wrapper,
.cbw-wizard .woocommerce-message,
.cbw-wizard .woocommerce-info,
.cbw-wizard .woocommerce-error,
.cbw-wizard .wc-block-components-notice-banner,
.cbw-wizard .wc-bookings-notice,
.cbw-wizard .wc-bookings-booking-form .woocommerce-message,
.cbw-wizard .wc-bookings-booking-form .woocommerce-info,
.cbw-wizard .wc-bookings-booking-form .woocommerce-error {
    display: none !important;
    visibility: hidden !important;
    height: 0 !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    overflow: hidden !important;
}

.cbw-wizard .woocommerce-message::before,
.cbw-wizard .woocommerce-info::before,
.cbw-wizard .woocommerce-error::before,
.cbw-wizard .wc-block-components-notice-banner::before {
    display: none !important;
    content: none !important;
}


/* =========================================================
   v3.1.8 — PROGRESS CONNECTOR LINES
   Keep the separator behind the label instead of running
   visually through the step text.
   ========================================================= */
.cbw-progress-item::after {
    z-index: 0;
}

.cbw-progress-dot,
.cbw-progress-label {
    position: relative;
    z-index: 2;
}

.cbw-progress-label {
    background: var(--cbw-white);
    padding-right: 12px;
}


/* =========================================================
   v3.1.9 — PROGRESS NAVIGATION, MOBILE SKIP GRID & NO FOUC
   ========================================================= */

/* Reached progress steps are clickable navigation. */
.cbw-progress-item {
    border: 0;
    background: transparent;
    padding: 0;
    font: inherit;
    text-align: left;
    appearance: none;
    -webkit-appearance: none;
}
.cbw-progress-item.is-available {
    cursor: pointer;
}
.cbw-progress-item.is-available .cbw-progress-label {
    transition: color .2s ease;
}
.cbw-progress-item.is-available:hover .cbw-progress-label,
.cbw-progress-item.is-available:focus-visible .cbw-progress-label {
    color: #5d9200;
}
.cbw-progress-item:focus-visible {
    outline: none;
}
.cbw-progress-item:focus-visible .cbw-progress-dot {
    box-shadow: 0 0 0 3px rgba(117,185,0,.18);
}

/* Hide the native WooCommerce form until the Cubic UI has mounted. */
.cbw-active-booking.cbw-preparing .cbw-native-form-wrap {
    position: absolute !important;
    left: -100000px !important;
    top: auto !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
}

.cbw-preparing-panel {
    display: flex;
    align-items: center;
    gap: 14px;
    min-height: 118px;
    padding: 24px;
    border: 1px solid var(--cbw-line);
    border-radius: var(--cbw-radius);
    background: var(--cbw-white);
    box-shadow: var(--cbw-shadow);
}
.cbw-preparing-panel > div {
    display: grid;
    gap: 3px;
}
.cbw-preparing-panel strong {
    color: var(--cbw-dark);
    font-size: 15px;
    font-weight: 900;
}
.cbw-preparing-panel span:not(.cbw-preparing-spinner) {
    color: var(--cbw-muted);
    font-size: 12.5px;
}
.cbw-preparing-spinner {
    flex: 0 0 28px;
    width: 28px;
    height: 28px;
    border: 3px solid #e8eddf;
    border-top-color: var(--cbw-green);
    border-radius: 50%;
    animation: cbwSpin .7s linear infinite;
}
@keyframes cbwSpin {
    to { transform: rotate(360deg); }
}

/* Make the transition between steps feel deliberate rather than abrupt. */
.cbw-live-step.is-active {
    animation: cbwStepIn .32s cubic-bezier(.2,.75,.3,1);
}
@keyframes cbwStepIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

@media (max-width: 767px) {
    /* Two-column mobile grid keeps every skip card fully inside the viewport.
       With the current three sizes, the final card is centred on its own row.
       If a fourth size is added later this naturally becomes a 2x2 grid. */
    .cbw-wizard .cbw-skip-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        gap: 8px !important;
        width: 100% !important;
        overflow: visible !important;
    }

    .cbw-wizard .cbw-skip-card {
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
        min-height: 158px !important;
        padding: 11px 7px !important;
        overflow: hidden !important;
    }

    .cbw-wizard .cbw-skip-card:last-child:nth-child(odd) {
        grid-column: 1 / -1;
        width: calc(50% - 4px) !important;
        justify-self: center;
    }

    .cbw-wizard .cbw-skip-image {
        width: 100% !important;
        height: 82px !important;
    }

    .cbw-wizard .cbw-skip-image img {
        max-width: 94% !important;
        max-height: 78px !important;
    }

    .cbw-wizard .cbw-skip-name {
        max-width: 100%;
        font-size: 12.5px !important;
        line-height: 1.2;
        text-align: center;
        white-space: normal;
    }

    .cbw-wizard .cbw-skip-price {
        max-width: 100%;
        font-size: 9px !important;
        line-height: 1.25;
        text-align: center;
        white-space: normal;
    }

    .cbw-preparing-panel {
        min-height: 105px;
        padding: 18px;
        border-radius: 14px;
    }
}


/* =========================================================
   v4.0.0 — EMBEDDED DETAILS + REVIEW & PAY CHECKOUT
   ========================================================= */

.cbw-native-booking-submit,
.cbw-native-booking-submit[hidden] {
    display: none !important;
}

.cbw-details-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 28px;
    margin-top: 4px;
}

.cbw-details-column {
    display: grid;
    gap: 17px;
    align-content: start;
}

.cbw-field {
    display: grid;
    gap: 7px;
    margin: 0;
    color: var(--cbw-dark);
    font-size: 13px;
    font-weight: 800;
}

.cbw-field > span {
    display: block;
}

.cbw-field em {
    color: #6fae00;
    font-style: normal;
}

.cbw-field small {
    color: var(--cbw-muted);
    font-weight: 500;
}

.cbw-field input,
.cbw-field textarea {
    width: 100%;
    min-width: 0;
    border: 1px solid #dce1e4 !important;
    border-radius: 12px !important;
    background: #fff !important;
    color: var(--cbw-dark) !important;
    box-shadow: none !important;
    outline: none !important;
    font: inherit !important;
    font-weight: 500 !important;
    transition: border-color .2s ease, box-shadow .2s ease;
}

.cbw-field input {
    height: 52px;
    padding: 0 15px !important;
}

.cbw-field textarea {
    min-height: 112px;
    padding: 14px 15px !important;
    resize: vertical;
}

.cbw-field input:focus,
.cbw-field textarea:focus {
    border-color: var(--cbw-green) !important;
    box-shadow: 0 0 0 3px rgba(117,185,0,.1) !important;
}

.cbw-v4-checkout-step[hidden] {
    display: none !important;
}

.cbw-v4-checkout-step {
    display: block;
    animation: cbwStepIn .32s cubic-bezier(.2,.75,.3,1);
}

.cbw-at-checkout .cbw-native-form-wrap {
    display: none !important;
}

.cbw-v4-review-layout {
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(300px, .75fr);
    gap: 20px;
    align-items: start;
}

.cbw-v4-review-sections {
    display: grid;
    gap: 14px;
}

.cbw-v4-review-section {
    padding: 19px 20px;
    border: 1px solid var(--cbw-line);
    border-radius: 14px;
    background: #fff;
}

.cbw-v4-review-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding-bottom: 12px;
    margin-bottom: 4px;
    border-bottom: 1px solid #edf0f1;
}

.cbw-v4-review-heading strong {
    color: var(--cbw-dark);
    font-size: 14px;
    font-weight: 900;
}

.cbw-v4-review-heading button {
    border: 0 !important;
    background: transparent !important;
    color: #608f0b !important;
    padding: 3px 0 !important;
    font-size: 12px !important;
    font-weight: 900 !important;
    cursor: pointer;
    box-shadow: none !important;
}

.cbw-v4-review-heading button:hover {
    color: #e86f18 !important;
}

.cbw-v4-summary-row {
    display: grid;
    grid-template-columns: minmax(110px, .45fr) minmax(0, 1fr);
    gap: 16px;
    align-items: start;
    padding: 10px 0;
    border-bottom: 1px solid #f0f2f3;
}

.cbw-v4-summary-row:last-child {
    border-bottom: 0;
}

.cbw-v4-summary-row span {
    color: var(--cbw-muted);
    font-size: 12.5px;
}

.cbw-v4-summary-row strong {
    color: var(--cbw-dark);
    font-size: 12.8px;
    line-height: 1.55;
    text-align: right;
    overflow-wrap: anywhere;
}

.cbw-v4-price-card {
    position: sticky;
    /* Keep the desktop summary card beneath the actual site header + ~15px gap. */
    top: var(--cbw-desktop-header-offset, 125px) !important;
}

.cbw-v4-payment-card {
    margin-top: 22px;
    padding: 22px;
    border: 1px solid var(--cbw-line);
    border-radius: 16px;
    background: #fff;
}

.cbw-v4-payment-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding-bottom: 17px;
    margin-bottom: 16px;
    border-bottom: 1px solid #edf0f1;
}

.cbw-v4-payment-head > div {
    display: grid;
    gap: 3px;
}

.cbw-v4-payment-head strong {
    color: var(--cbw-dark);
    font-size: 17px;
    font-weight: 900;
}

.cbw-v4-payment-head span:not(.cbw-secure-badge) {
    color: var(--cbw-muted);
    font-size: 12.5px;
}

.cbw-secure-badge {
    flex: 0 0 auto;
    padding: 7px 10px;
    border-radius: 999px;
    background: #f0f7e5;
    color: #5f9008;
    font-size: 10px;
    font-weight: 900;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.cbw-checkout-loader {
    display: flex;
    align-items: center;
    gap: 13px;
    min-height: 100px;
    padding: 18px;
    border-radius: 13px;
    background: #f7f9f5;
}

.cbw-checkout-loader > div {
    display: grid;
    gap: 3px;
}

.cbw-checkout-loader strong {
    color: var(--cbw-dark);
    font-size: 14px;
}

.cbw-checkout-loader span:not(.cbw-preparing-spinner) {
    color: var(--cbw-muted);
    font-size: 12px;
}

.cbw-express-pay-mount:empty {
    display: none;
}

.cbw-express-pay-mount:not(:empty) {
    margin-bottom: 18px;
}

/* Keep WooCommerce checkout itself as the processing engine, but visually remove
   the duplicate customer/order-review areas because V4 already presents them. */
.cbw-embedded-checkout .col2-set,
.cbw-embedded-checkout .woocommerce-billing-fields,
.cbw-embedded-checkout .woocommerce-shipping-fields,
.cbw-embedded-checkout .woocommerce-additional-fields,
.cbw-embedded-checkout #order_review_heading,
.cbw-embedded-checkout .woocommerce-checkout-review-order-table,
.cbw-embedded-checkout table.shop_table,
.cbw-embedded-checkout .woocommerce-checkout-review-order > .shop_table {
    display: none !important;
}

.cbw-embedded-checkout,
.cbw-embedded-checkout #order_review,
.cbw-embedded-checkout .woocommerce-checkout-review-order {
    width: 100% !important;
    max-width: none !important;
    float: none !important;
    margin: 0 !important;
}

.cbw-embedded-checkout #payment {
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
}

.cbw-embedded-checkout #payment ul.payment_methods,
.cbw-embedded-checkout .wc_payment_methods {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    padding: 0 !important;
    margin: 0 0 16px !important;
    border: 0 !important;
    list-style: none !important;
}

.cbw-embedded-checkout #payment ul.payment_methods > li,
.cbw-embedded-checkout li.wc_payment_method {
    position: relative;
    min-width: 0;
    margin: 0 !important;
    padding: 0 !important;
    border: 1px solid #dce1e4 !important;
    border-radius: 13px !important;
    background: #fff !important;
    overflow: hidden;
    transition: border-color .2s ease, box-shadow .2s ease, background .2s ease;
}

.cbw-embedded-checkout li.wc_payment_method:hover {
    border-color: #e86f18 !important;
}

.cbw-embedded-checkout li.wc_payment_method.is-selected,
.cbw-embedded-checkout li.wc_payment_method:has(input[type="radio"]:checked) {
    border-color: #5f9500 !important;
    background: #f8fbf3 !important;
    box-shadow: 0 0 0 2px rgba(117,185,0,.08) !important;
}

.cbw-embedded-checkout li.wc_payment_method > input[type="radio"] {
    position: absolute !important;
    opacity: 0 !important;
    pointer-events: none !important;
}

.cbw-embedded-checkout li.wc_payment_method > label {
    display: flex !important;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 66px;
    padding: 14px !important;
    margin: 0 !important;
    color: var(--cbw-dark) !important;
    font-size: 13px !important;
    font-weight: 900 !important;
    text-align: center;
    cursor: pointer;
}

.cbw-embedded-checkout li.wc_payment_method > label img {
    max-height: 24px !important;
    width: auto !important;
    margin: 0 0 0 5px !important;
}

.cbw-embedded-checkout .payment_box {
    grid-column: 1 / -1;
    margin: 0 !important;
    padding: 15px !important;
    border-top: 1px solid #edf0f1 !important;
    background: #f8f9f8 !important;
    color: var(--cbw-muted) !important;
}

.cbw-embedded-checkout .payment_box::before {
    display: none !important;
}

.cbw-embedded-checkout .payment_box input,
.cbw-embedded-checkout .payment_box select,
.cbw-embedded-checkout .payment_box .wc-stripe-elements-field,
.cbw-embedded-checkout .payment_box .StripeElement {
    border-radius: 9px !important;
}

.cbw-embedded-checkout .place-order {
    padding: 17px 0 0 !important;
    margin: 0 !important;
    border: 0 !important;
}

.cbw-embedded-checkout .woocommerce-terms-and-conditions-wrapper,
.cbw-embedded-checkout .woocommerce-privacy-policy-text {
    margin: 0 0 15px !important;
    color: var(--cbw-muted) !important;
    font-size: 12px !important;
    line-height: 1.6;
}

.cbw-embedded-checkout .woocommerce-terms-and-conditions-checkbox-text a,
.cbw-embedded-checkout .woocommerce-privacy-policy-text a {
    color: #5f9008 !important;
    text-decoration: underline !important;
}

.cbw-embedded-checkout #place_order.cbw-v4-place-order {
    width: 100% !important;
    min-height: 54px;
    float: none !important;
    margin: 0 !important;
    border: 0 !important;
    border-radius: 12px !important;
    background: var(--cbw-green) !important;
    color: #fff !important;
    font-size: 15px !important;
    font-weight: 900 !important;
    box-shadow: none !important;
    cursor: pointer;
}

.cbw-embedded-checkout #place_order.cbw-v4-place-order:hover {
    background: #659f00 !important;
}

.cbw-embedded-checkout #place_order.cbw-v4-place-order:disabled,
.cbw-embedded-checkout #place_order.cbw-v4-place-order.disabled {
    opacity: .5 !important;
    cursor: not-allowed !important;
}

/* v3.1.7 intentionally hid raw Woo notices during booking configuration. At the
   real payment step, gateway/checkout errors are important and must be visible. */
.cbw-v4-checkout-step .woocommerce-NoticeGroup-checkout,
.cbw-v4-checkout-step .woocommerce-error,
.cbw-v4-checkout-step .woocommerce-message,
.cbw-v4-checkout-step .woocommerce-info,
.cbw-v4-checkout-step .wc-block-components-notice-banner {
    display: block !important;
    visibility: visible !important;
    height: auto !important;
    min-height: 0 !important;
    margin: 0 0 14px !important;
    padding: 12px 14px !important;
    border: 1px solid #efb7b2 !important;
    border-radius: 10px !important;
    background: #fff6f5 !important;
    color: #a4231b !important;
    font-size: 12px !important;
    line-height: 1.5 !important;
}

.cbw-v4-final-actions {
    margin-top: 18px;
}

@media (max-width: 900px) {
    .cbw-v4-review-layout {
        grid-template-columns: 1fr;
    }
    .cbw-v4-price-card {
        position: static;
    }
}

@media (max-width: 767px) {
    .cbw-progress {
        grid-template-columns: repeat(6, 1fr) !important;
    }

    .cbw-details-grid {
        grid-template-columns: 1fr;
        gap: 17px;
    }

    .cbw-v4-summary-row {
        grid-template-columns: 1fr;
        gap: 3px;
    }

    .cbw-v4-summary-row strong {
        text-align: left;
    }

    .cbw-v4-payment-card,
    .cbw-v4-review-section {
        padding: 16px;
    }

    .cbw-v4-payment-head {
        align-items: flex-start;
    }

    .cbw-secure-badge {
        display: none;
    }

    .cbw-embedded-checkout #payment ul.payment_methods,
    .cbw-embedded-checkout .wc_payment_methods {
        grid-template-columns: 1fr;
    }
}

/* V4.0.3 — offset browser/native anchor scrolling below the desktop header too. */
@media (min-width: 901px) {
    #cubic-booking,
    .cbw-booking-root,
    .cbw-live-step,
    .cbw-checkout-host {
        scroll-margin-top: var(--cbw-desktop-header-offset, 125px);
    }
}

/* =========================================================
   V4.1.0 — dynamic payment selector + in-wizard confirmation
   WooCommerce remains the gateway/order engine. The custom
   selector simply drives WooCommerce's real payment radios.
   ========================================================= */

.cbw-payment-choice-mount {
    margin: 0 0 16px;
}

.cbw-payment-choice-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.cbw-payment-choice-grid.is-single {
    grid-template-columns: minmax(0, 1fr);
}

.cbw-payment-choice {
    appearance: none;
    -webkit-appearance: none;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 11px;
    width: 100%;
    min-height: 72px;
    padding: 13px 16px;
    margin: 0;
    border: 1px solid #dce1e4 !important;
    border-radius: 13px !important;
    background: #fff !important;
    color: var(--cbw-dark) !important;
    box-shadow: none !important;
    text-align: left;
    cursor: pointer;
    transition: border-color .2s ease, background .2s ease, box-shadow .2s ease, transform .2s ease;
}

.cbw-payment-choice:hover {
    border-color: #e86f18 !important;
    background: #fff !important;
    transform: translateY(-1px);
}

.cbw-payment-choice.is-selected {
    border-color: #5f9500 !important;
    background: #f8fbf3 !important;
    box-shadow: 0 0 0 2px rgba(117,185,0,.09) !important;
}

.cbw-payment-choice-icon {
    display: inline-grid;
    place-items: center;
    flex: 0 0 34px;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: #f0f3ed;
    color: #5f9008;
    font-size: 15px;
    font-weight: 900;
}

.cbw-payment-choice.is-selected .cbw-payment-choice-icon {
    background: #e9f5d6;
    color: #4f7e00;
}

.cbw-payment-choice-copy {
    display: grid;
    gap: 2px;
    min-width: 0;
}

.cbw-payment-choice-copy strong {
    color: var(--cbw-dark);
    font-size: 13.5px;
    line-height: 1.2;
    font-weight: 900;
}

.cbw-payment-choice-copy small {
    color: var(--cbw-muted);
    font-size: 10.5px;
    line-height: 1.35;
    font-weight: 600;
}

.cbw-payment-unavailable {
    padding: 14px 16px;
    border: 1px solid #efc6c6;
    border-radius: 12px;
    background: #fff7f7;
    color: #a72c2c;
    font-size: 12.5px;
    font-weight: 700;
}

/* The custom buttons above replace only the gateway-choice presentation.
   The native payment boxes remain in place because Stripe/WooCommerce mount
   secure card fields and authentication UI inside them. */
.cbw-embedded-checkout #payment ul.payment_methods,
.cbw-embedded-checkout .wc_payment_methods {
    display: block !important;
    padding: 0 !important;
    margin: 0 0 16px !important;
    border: 0 !important;
    list-style: none !important;
}

.cbw-embedded-checkout #payment ul.payment_methods > li,
.cbw-embedded-checkout li.wc_payment_method,
.cbw-embedded-checkout li.wc_payment_method:hover,
.cbw-embedded-checkout li.wc_payment_method.is-selected,
.cbw-embedded-checkout li.wc_payment_method:has(input[type="radio"]:checked) {
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    overflow: visible !important;
}

.cbw-embedded-checkout li.wc_payment_method > input[type="radio"],
.cbw-embedded-checkout li.wc_payment_method > label {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
    clip: rect(0 0 0 0) !important;
    clip-path: inset(50%) !important;
    opacity: 0 !important;
    pointer-events: none !important;
    margin: 0 !important;
    padding: 0 !important;
}

.cbw-embedded-checkout li.wc_payment_method:not(.is-selected) > .payment_box {
    display: none !important;
}

.cbw-embedded-checkout li.wc_payment_method.is-selected > .payment_box {
    position: relative !important;
    display: block;
    width: 100% !important;
    margin: 0 0 16px !important;
    padding: 18px !important;
    border: 1px solid #dce1e4 !important;
    border-radius: 13px !important;
    background: #f8f9f8 !important;
    color: var(--cbw-muted) !important;
    box-sizing: border-box !important;
}

.cbw-express-pay-mount:not(:empty) {
    margin: 0 0 16px;
    padding: 14px;
    border: 1px solid #e2e7e9;
    border-radius: 13px;
    background: #fbfcfb;
}

.cbw-v41-confirmation-step[hidden] {
    display: none !important;
}

.cbw-v41-confirmation-step {
    margin-top: 0;
}

.cbw-at-confirmation .cbw-selected-strip,
.cbw-at-confirmation .cbw-preparing-panel,
.cbw-at-confirmation .cbw-native-form-wrap,
.cbw-at-confirmation .cbw-live-shell,
.cbw-at-confirmation .cbw-v4-checkout-step {
    display: none !important;
}

.cbw-confirmation-card {
    position: relative;
    max-width: 880px;
    margin: 0 auto;
    padding: 42px;
    text-align: center;
}

.cbw-confirmation-check {
    display: inline-grid;
    place-items: center;
    width: 58px;
    height: 58px;
    margin: 0 auto 14px;
    border-radius: 50%;
    background: var(--cbw-green);
    color: #fff;
    font-size: 28px;
    font-weight: 900;
    box-shadow: 0 10px 28px rgba(117,185,0,.2);
}

.cbw-confirmation-kicker {
    display: block;
    margin-bottom: 7px;
    color: #638f13;
    font-size: 10.5px;
    font-weight: 900;
    letter-spacing: .12em;
}

.cbw-confirmation-card h3 {
    margin: 0;
    color: var(--cbw-dark);
    font-size: clamp(25px, 3vw, 36px);
    line-height: 1.12;
    font-weight: 900;
}

.cbw-confirmation-card > p {
    max-width: 650px;
    margin: 10px auto 0;
    color: var(--cbw-muted);
    font-size: 14px;
    line-height: 1.65;
}

.cbw-confirmation-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1px;
    margin-top: 28px;
    overflow: hidden;
    border: 1px solid var(--cbw-line);
    border-radius: 14px;
    background: var(--cbw-line);
    text-align: left;
}

.cbw-confirmation-grid > div {
    display: grid;
    gap: 5px;
    padding: 17px 18px;
    background: #fff;
}

.cbw-confirmation-grid span {
    color: var(--cbw-muted);
    font-size: 10.5px;
    font-weight: 700;
}

.cbw-confirmation-grid strong {
    color: var(--cbw-dark);
    font-size: 13.5px;
    font-weight: 900;
    overflow-wrap: anywhere;
}

.cbw-confirmation-note {
    margin-top: 18px;
    padding: 13px 15px;
    border-radius: 11px;
    background: #f7faf2;
    color: #52603f;
    font-size: 12px;
    line-height: 1.5;
}

.cbw-confirmation-actions {
    display: flex;
    justify-content: center;
    margin-top: 22px;
}

.cbw-confirmation-actions .cbw-primary-button {
    text-decoration: none !important;
}

.cbw-confirmation-screen .cbw-progress-item {
    pointer-events: none;
}

@media (max-width: 767px) {
    .cbw-payment-choice-grid,
    .cbw-payment-choice-grid.is-single {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
    }

    .cbw-payment-choice-grid.is-single .cbw-payment-choice {
        grid-column: 1 / -1;
    }

    .cbw-payment-choice {
        min-height: 66px;
        padding: 10px 8px;
        gap: 7px;
        text-align: center;
    }

    .cbw-payment-choice-icon {
        flex-basis: 28px;
        width: 28px;
        height: 28px;
        font-size: 12px;
    }

    .cbw-payment-choice-copy strong {
        font-size: 11.5px;
    }

    .cbw-payment-choice-copy small {
        display: none;
    }

    .cbw-confirmation-card {
        padding: 26px 18px;
    }

    .cbw-confirmation-grid {
        grid-template-columns: 1fr;
    }
}


/* =========================================================
   V4.1.4 — Payment Plugins for Stripe WooCommerce integration
   - one canonical card option
   - no customer-facing default selection
   - device-aware Apple Pay / Google Pay
   - embedded Stripe card fields below the selected card option
   ========================================================= */

.cbw-embedded-checkout li.wc_payment_method.cbw-gateway-suppressed {
    display: none !important;
}

.cbw-express-pay-mount {
    display: none !important;
}

.cbw-payment-choice-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.cbw-payment-choice-grid.is-single {
    grid-template-columns: minmax(0, 1fr);
}

.cbw-payment-choice.cbw-payment-applepay .cbw-payment-choice-icon {
    font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
    font-size: 20px;
}

.cbw-payment-choice.cbw-payment-googlepay .cbw-payment-choice-icon {
    font-size: 16px;
    letter-spacing: -.03em;
}

.cbw-embedded-checkout .cbw-card-gateway.is-selected > .payment_box {
    margin-top: 2px !important;
    padding: 20px !important;
    border: 1px solid #dce1e4 !important;
    border-radius: 13px !important;
    background: #fbfcfb !important;
}

.cbw-card-fields-head {
    display: grid;
    gap: 4px;
    margin: 0 0 16px;
    padding: 0 0 14px;
    border-bottom: 1px solid #e5e9e2;
}

.cbw-card-fields-head strong {
    color: var(--cbw-dark);
    font-size: 14px;
    font-weight: 900;
}

.cbw-card-fields-head span {
    color: var(--cbw-muted);
    font-size: 11.5px;
    line-height: 1.5;
}

.cbw-embedded-checkout #place_order.cbw-v4-place-order.cbw-payment-action-hidden {
    display: none !important;
}

/* Payment Plugins creates its secure Stripe fields inside the native gateway box.
   Keep those fields full width and visible inside our embedded payment panel. */
.cbw-embedded-checkout .payment_method_stripe_cc .wc-stripe-card-container,
.cbw-embedded-checkout .payment_method_stripe_cc .wc-stripe-elements-container,
.cbw-embedded-checkout .payment_method_stripe_cc .wc-stripe-payment-element,
.cbw-embedded-checkout .payment_method_stripe_cc [id*="stripe-card"],
.cbw-embedded-checkout .payment_method_stripe_cc [id*="payment-element"],
.cbw-embedded-checkout .payment_method_stripe_cc .StripeElement {
    width: 100% !important;
    max-width: none !important;
    box-sizing: border-box !important;
}

@media (max-width: 767px) {
    .cbw-payment-choice-grid {
        grid-template-columns: 1fr;
    }
}


/* =========================================================
   V4.1.4 — Embedded Stripe runtime reliability
   ========================================================= */

.cbw-card-runtime-loader {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 48px;
    margin-top: 8px;
    padding: 11px 13px;
    border: 1px solid #e3e7e0;
    border-radius: 10px;
    background: #fff;
    color: var(--cbw-muted);
    font-size: 11.5px;
    font-weight: 700;
}

.cbw-card-runtime-loader .cbw-preparing-spinner {
    flex: 0 0 auto;
    width: 18px;
    height: 18px;
}

.cbw-card-runtime-ready > .cbw-card-runtime-loader {
    display: none !important;
}

/* V4.1.4 — Stripe card runtime recovery state */
.cbw-card-runtime-loader.is-error {
    border-color: #f0c2bd;
    background: #fff7f6;
    color: #a62b1f;
}

.cbw-card-runtime-loader.is-error > span:first-child {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 20px;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #a62b1f;
    color: #fff;
    font-weight: 800;
    line-height: 1;
}


/* =========================================================
   V4.1.5 — Inline card readiness
   The JS now recognises Payment Plugins' inline card fields as a completed
   Stripe mount, preventing repeated update_checkout calls and blockUI loops.
   ========================================================= */


/* =========================================================
   V4.1.5 — stop stale WooCommerce checkout blocking overlays
   The JS only releases these once Stripe's secure card controls are mounted.
   ========================================================= */
.cbw-embedded-checkout:not(.processing) > .blockUI,
.cbw-embedded-checkout:not(.processing) > .blockOverlay {
    display: none !important;
}


/* ============================================================
   V4.1.6 — Detailed booking confirmation
   ============================================================ */
.cbw-confirmation-card {
    max-width: 1020px;
}

.cbw-confirmation-review-shell[hidden] {
    display: none !important;
}

.cbw-confirmation-review-shell {
    display: grid;
    grid-template-columns: minmax(0, 1.18fr) minmax(300px, .82fr);
    gap: 16px;
    margin-top: 20px;
    text-align: left;
}

.cbw-confirmation-review-panel,
.cbw-confirmation-price-panel {
    overflow: hidden;
    border: 1px solid var(--cbw-line);
    border-radius: 14px;
    background: #fff;
}

.cbw-confirmation-section-title {
    display: grid;
    gap: 3px;
    padding: 16px 18px;
    border-bottom: 1px solid var(--cbw-line);
    background: #f9fbf6;
}

.cbw-confirmation-section-title strong {
    color: var(--cbw-dark);
    font-size: 13px;
    font-weight: 900;
}

.cbw-confirmation-section-title span {
    color: var(--cbw-muted);
    font-size: 10.5px;
    line-height: 1.45;
}

.cbw-confirmation-review-rows,
.cbw-confirmation-price-lines {
    padding: 0 18px;
}

.cbw-confirmation-review-row,
.cbw-confirmation-price-row {
    display: grid;
    grid-template-columns: minmax(120px, .72fr) minmax(0, 1.28fr);
    gap: 16px;
    align-items: start;
    padding: 12px 0;
    border-bottom: 1px solid var(--cbw-line);
}

.cbw-confirmation-review-row:last-child,
.cbw-confirmation-price-row:last-child {
    border-bottom: 0;
}

.cbw-confirmation-review-row span,
.cbw-confirmation-price-row span {
    color: var(--cbw-muted);
    font-size: 11px;
    line-height: 1.5;
}

.cbw-confirmation-review-row strong,
.cbw-confirmation-price-row strong {
    color: var(--cbw-dark);
    font-size: 11.5px;
    line-height: 1.5;
    font-weight: 900;
    text-align: right;
    overflow-wrap: anywhere;
}

.cbw-confirmation-price-panel {
    background: var(--cbw-dark);
    border-color: var(--cbw-dark);
}

.cbw-confirmation-price-panel .cbw-confirmation-section-title {
    border-bottom-color: rgba(255,255,255,.12);
    background: rgba(255,255,255,.035);
}

.cbw-confirmation-price-panel .cbw-confirmation-section-title strong,
.cbw-confirmation-price-panel .cbw-confirmation-price-row span,
.cbw-confirmation-price-panel .cbw-confirmation-price-row strong {
    color: #fff;
}

.cbw-confirmation-price-panel .cbw-confirmation-section-title span {
    color: rgba(255,255,255,.62);
}

.cbw-confirmation-price-panel .cbw-confirmation-price-row {
    border-bottom-color: rgba(255,255,255,.12);
}

.cbw-confirmation-price-panel .cbw-confirmation-price-row span {
    color: rgba(255,255,255,.82);
}

.cbw-confirmation-price-total {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 18px;
    margin: 0 18px 18px;
    padding-top: 16px;
    border-top: 1px solid rgba(255,255,255,.18);
}

.cbw-confirmation-price-total span {
    color: #fff;
    font-size: 10.5px;
    font-weight: 900;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.cbw-confirmation-price-total strong {
    color: var(--cbw-green-bright, #8bd000);
    font-size: 24px;
    line-height: 1;
    font-weight: 900;
}

@media (max-width: 767px) {
    .cbw-confirmation-review-shell {
        grid-template-columns: 1fr;
    }

    .cbw-confirmation-review-row,
    .cbw-confirmation-price-row {
        grid-template-columns: minmax(100px, .7fr) minmax(0, 1.3fr);
        gap: 12px;
    }

    .cbw-confirmation-price-total strong {
        font-size: 22px;
    }
}


/* V4.1.7 — abandoned booking/cart hold management is behavioural; no visual overrides required. */


/* =========================================================
   V4.1.14 — Native top-level Review & Pay document
   ---------------------------------------------------------
   Stripe now initialises on a real page-load checkout form instead of a
   dynamically imported form. These rules keep that native checkout visually
   consistent with the Cubic wizard while leaving gateway markup untouched.
   ========================================================= */
body.cbw-native-checkout-page {
    margin: 0;
    background: #f7f8f8;
    color: var(--cbw-text);
}

.cbw-native-payment-document {
    padding-top: 24px;
}

.cbw-native-payment-document .cbw-v4-price-card {
    top: 24px !important;
}

.cbw-native-payment-panel form.checkout {
    display: block !important;
    width: 100% !important;
    margin: 0 !important;
}

/* Keep the real WooCommerce customer fields in the DOM for checkout validation,
   Stripe/Link and address-dependent gateways, but the customer has already entered
   these details in Step 5 so they do not need to see a second copy. */
.cbw-native-payment-panel form.checkout #customer_details {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

.cbw-native-payment-panel form.checkout #order_review_heading,
.cbw-native-payment-panel form.checkout .woocommerce-checkout-review-order-table {
    display: none !important;
}

.cbw-native-payment-panel form.checkout #order_review,
.cbw-native-payment-panel form.checkout .woocommerce-checkout-review-order {
    float: none !important;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
}

.cbw-native-payment-panel #payment,
.cbw-native-payment-panel .woocommerce-checkout-payment {
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
}

.cbw-native-payment-panel #payment ul.payment_methods,
.cbw-native-payment-panel .wc_payment_methods {
    display: grid !important;
    gap: 12px !important;
    margin: 0 0 18px !important;
    padding: 0 !important;
    border: 0 !important;
    list-style: none !important;
}

.cbw-native-payment-panel #payment ul.payment_methods > li,
.cbw-native-payment-panel li.wc_payment_method {
    margin: 0 !important;
    padding: 0 !important;
    border: 1px solid var(--cbw-line) !important;
    border-radius: 14px !important;
    background: #fff !important;
    overflow: hidden !important;
}

.cbw-native-payment-panel li.wc_payment_method > input[type="radio"] {
    position: absolute !important;
    opacity: 0 !important;
    pointer-events: none !important;
}

.cbw-native-payment-panel li.wc_payment_method > label {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    width: 100% !important;
    margin: 0 !important;
    padding: 17px 18px !important;
    color: var(--cbw-dark) !important;
    font-size: 14px !important;
    font-weight: 900 !important;
    cursor: pointer !important;
}

.cbw-native-payment-panel li.wc_payment_method:has(> input[type="radio"]:checked) {
    border-color: var(--cbw-green) !important;
    box-shadow: 0 0 0 1px var(--cbw-green) inset !important;
    background: #fbfff4 !important;
}

.cbw-native-payment-panel li.wc_payment_method > .payment_box {
    margin: 0 !important;
    padding: 18px !important;
    border-top: 1px solid #edf0f1 !important;
    border-radius: 0 !important;
    background: #fafbfb !important;
    color: var(--cbw-text) !important;
}

.cbw-native-payment-panel li.wc_payment_method > .payment_box::before {
    display: none !important;
}

.cbw-native-payment-panel .wc-stripe-elements-field,
.cbw-native-payment-panel .StripeElement,
.cbw-native-payment-panel [class*="wc-stripe"] input,
.cbw-native-payment-panel .payment_box input[type="text"],
.cbw-native-payment-panel .payment_box input[type="tel"] {
    min-height: 46px;
}

.cbw-native-payment-panel .form-row.place-order,
.cbw-native-payment-panel .place-order {
    margin: 20px 0 0 !important;
    padding: 0 !important;
}

.cbw-native-payment-panel #place_order {
    float: none !important;
    /* V4.3.12: do not force display:block. Stripe 4.x may hide the normal
       WooCommerce Place Order button while an Apple Pay / Google Pay checkout
       button owns the payment action. */
    width: 100% !important;
    min-height: 54px !important;
    margin: 18px 0 0 !important;
    border: 0 !important;
    border-radius: 12px !important;
    background: var(--cbw-green) !important;
    color: #fff !important;
    font-size: 15px !important;
    font-weight: 900 !important;
    box-shadow: none !important;
    cursor: pointer !important;
}

.cbw-native-payment-panel #place_order:hover {
    background: var(--cbw-green-bright) !important;
}

.cbw-native-payment-panel .woocommerce-privacy-policy-text,
.cbw-native-payment-panel .woocommerce-terms-and-conditions-wrapper {
    color: var(--cbw-muted);
    font-size: 12.5px;
    line-height: 1.6;
}

.cbw-native-checkout-actions {
    display: flex;
    justify-content: flex-start;
    margin-top: 20px;
    padding-top: 20px;
    border-top: 1px solid var(--cbw-line);
}

@media (max-width: 900px) {
    .cbw-native-payment-document {
        width: min(100% - 20px, 1180px);
        margin-top: 18px;
        padding-top: 0;
    }

    .cbw-native-payment-document .cbw-v4-review-layout {
        grid-template-columns: 1fr;
    }

    .cbw-native-payment-document .cbw-v4-price-card {
        position: static !important;
        top: auto !important;
    }

    .cbw-native-payment-panel {
        padding: 16px;
    }
}

/* =========================================================
   V4.4.0 — Reservation countdown + payment selection polish
   ========================================================= */
.cbw-reservation-timer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 22px;
    margin: 18px 0 22px;
    padding: 16px 18px;
    border: 1px solid rgba(113, 184, 0, .35);
    border-radius: 14px;
    background: #f8fcef;
    transition: border-color .2s ease, background .2s ease;
}

.cbw-reservation-timer-copy {
    display: grid;
    gap: 4px;
    min-width: 0;
}

.cbw-reservation-timer-copy strong {
    color: var(--cbw-dark);
    font-size: 14px;
    font-weight: 900;
}

.cbw-reservation-timer-copy span {
    color: var(--cbw-muted);
    font-size: 12.5px;
    line-height: 1.5;
}

.cbw-reservation-time {
    display: grid;
    justify-items: center;
    flex: 0 0 auto;
    min-width: 105px;
    padding: 9px 14px;
    border-radius: 11px;
    background: #fff;
    box-shadow: 0 0 0 1px rgba(113, 184, 0, .18) inset;
}

.cbw-reservation-time strong {
    color: var(--cbw-green);
    font-size: 22px;
    line-height: 1;
    font-weight: 900;
    font-variant-numeric: tabular-nums;
    letter-spacing: .02em;
}

.cbw-reservation-time small {
    margin-top: 4px;
    color: var(--cbw-muted);
    font-size: 9px;
    font-weight: 900;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.cbw-reservation-timer.is-warning {
    border-color: #d59b18;
    background: #fffaf0;
}

.cbw-reservation-timer.is-warning .cbw-reservation-time strong {
    color: #a96e00;
}

.cbw-reservation-timer.is-critical,
.cbw-reservation-timer.is-expired {
    border-color: #d84545;
    background: #fff5f5;
}

.cbw-reservation-timer.is-critical .cbw-reservation-time strong,
.cbw-reservation-timer.is-expired .cbw-reservation-time strong {
    color: #be2525;
}

/* Keep the green selected state around the WHOLE gateway, including the
   gateway's descriptor/payment_box, rather than visually ending after its title. */
.cbw-native-payment-panel li.wc_payment_method.cbw-payment-selected,
.cbw-native-payment-panel li.wc_payment_method:has(> input[type="radio"]:checked) {
    border-color: var(--cbw-green) !important;
    box-shadow: 0 0 0 1px var(--cbw-green) inset !important;
    background: #fbfff4 !important;
    overflow: hidden !important;
}

.cbw-native-payment-panel li.wc_payment_method.cbw-payment-selected > .payment_box,
.cbw-native-payment-panel li.wc_payment_method:has(> input[type="radio"]:checked) > .payment_box {
    width: 100% !important;
    box-sizing: border-box !important;
    border-top-color: rgba(113, 184, 0, .55) !important;
    background: #fbfff4 !important;
}

/* Cubic's final live setup uses UPM only for Apple Pay. Hide that gateway on
   Android and desktop so those customers see only Card + Cash on Delivery. */
.cbw-native-payment-panel li.wc_payment_method.cbw-platform-hidden {
    display: none !important;
}

@media (max-width: 767px) {
    .cbw-reservation-timer {
        align-items: stretch;
        gap: 12px;
        padding: 14px;
    }

    .cbw-reservation-time {
        min-width: 92px;
        align-content: center;
        padding: 9px 10px;
    }

    .cbw-reservation-time strong {
        font-size: 19px;
    }
}

/* =========================================================
   V4.3.12 — Stripe 4.x wallet ownership
   ---------------------------------------------------------
   Apple Pay / Google Pay visibility and button lifecycle are controlled solely
   by Payment Plugins for Stripe. Cubic applies no device-specific hiding here.
   ========================================================= */


/* =========================================================
   V4.1.16 — DESKTOP PROGRESS TRACKER VISUAL CENTRING
   The first five tracks share the flexible space and the final
   label sizes to its actual content. This makes the visible
   six-step row finish at the same outer edge it starts from,
   instead of leaving unused space after "Review & Pay".
   Mobile keeps the existing equal six-dot layout.
   ========================================================= */
@media (min-width: 768px) {
    .cbw-progress {
        grid-template-columns: repeat(5, minmax(0, 1fr)) max-content;
    }
}


/* =========================================================
   V4.2.0 — BILLING ADDRESS ON REVIEW & PAY
   Delivery remains the skip destination. Billing is only expanded when the
   card/account address differs, keeping the normal checkout as short as before.
   ========================================================= */
.cbw-v42-billing-card {
    margin-top: 20px;
    padding: 22px;
    border: 1px solid var(--cbw-line);
    border-radius: 16px;
    background: #fff;
}

.cbw-v42-billing-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 18px;
    margin-bottom: 16px;
}

.cbw-v42-billing-head > div {
    display: grid;
    gap: 4px;
}

.cbw-v42-billing-head strong {
    color: var(--cbw-dark);
    font-size: 17px;
    line-height: 1.25;
}

.cbw-v42-billing-head span {
    color: var(--cbw-muted);
    font-size: 13px;
    line-height: 1.5;
}

.cbw-v42-billing-same {
    position: relative;
    display: flex;
    align-items: center;
    gap: 11px;
    width: fit-content;
    margin: 0;
    color: var(--cbw-dark);
    font-size: 14px;
    font-weight: 800;
    cursor: pointer;
    user-select: none;
}

.cbw-v42-billing-same input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
}

.cbw-v42-checkmark {
    position: relative;
    flex: 0 0 22px;
    width: 22px;
    height: 22px;
    border: 1.5px solid #bdc5c9;
    border-radius: 6px;
    background: #fff;
    transition: .18s ease;
}

.cbw-v42-billing-same input:checked + .cbw-v42-checkmark {
    border-color: var(--cbw-green);
    background: var(--cbw-green);
}

.cbw-v42-billing-same input:checked + .cbw-v42-checkmark::after {
    content: '';
    position: absolute;
    left: 7px;
    top: 3px;
    width: 5px;
    height: 10px;
    border: solid #fff;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}

.cbw-v42-billing-same input:focus-visible + .cbw-v42-checkmark {
    outline: 3px solid rgba(112, 185, 0, .2);
    outline-offset: 2px;
}

.cbw-v42-billing-fields {
    margin-top: 20px;
    padding-top: 20px;
    border-top: 1px solid var(--cbw-line);
}

.cbw-v42-billing-fields[hidden] {
    display: none !important;
}

.cbw-v42-billing-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px 18px;
}

.cbw-v42-field {
    display: grid;
    gap: 7px;
    margin: 0;
}

.cbw-v42-field > span {
    color: var(--cbw-dark);
    font-size: 13px;
    font-weight: 800;
}

.cbw-v42-field em {
    color: var(--cbw-green);
    font-style: normal;
}

.cbw-v42-field input {
    width: 100%;
    min-height: 48px;
    padding: 10px 13px;
    border: 1px solid #d7dde0;
    border-radius: 10px;
    background: #fff;
    color: var(--cbw-dark);
    font: inherit;
    outline: none;
    transition: border-color .16s ease, box-shadow .16s ease;
    box-sizing: border-box;
}

.cbw-v42-field input:focus {
    border-color: var(--cbw-green);
    box-shadow: 0 0 0 3px rgba(112, 185, 0, .12);
}

.cbw-v42-field input[aria-invalid="true"] {
    border-color: #d93025;
    box-shadow: 0 0 0 3px rgba(217, 48, 37, .08);
}

.cbw-v42-billing-error {
    display: none;
    margin-top: 14px;
    padding: 11px 13px;
    border: 1px solid #f1b8b4;
    border-radius: 9px;
    background: #fff7f6;
    color: #b42318;
    font-size: 12.5px;
    font-weight: 800;
    line-height: 1.45;
}

.cbw-v42-billing-error:not(:empty) {
    display: block;
}

@media (max-width: 700px) {
    .cbw-v42-billing-card {
        padding: 17px;
    }

    .cbw-v42-billing-grid {
        grid-template-columns: 1fr;
        gap: 14px;
    }

    .cbw-v42-billing-same {
        align-items: flex-start;
    }
}
