/* ============================================================
   BOOKING WIZARD — Ferrarini & Bonetti
   Mobile-first, full 5-step booking flow
   ============================================================ */

/* ── CSS Variables ── */
:root {
    --fb-gold: #c8a84b;
    --fb-gold-dk: #a8893a;
    --fb-cream: #fdf8ee;
    --fb-brown: #2a1f0e;
    --fb-brown-l: #6b5230;
    --fb-white: #ffffff;
    --fb-radius: 14px;
    --fb-shadow: 0 4px 24px rgba(0, 0, 0, .10);
    --fb-border: #e0d8c8;
}

/* ── Booking Shell ── */
.fb-book {
    /*max-width: 1180px;*/
    margin: -28px auto 48px;
    padding: 0 16px;
    position: relative;
    z-index: 2;
}

.fb-book__card {
    background: var(--fb-white);
    border-radius: var(--fb-radius);
    box-shadow: var(--fb-shadow);
    overflow: hidden;
}

/* ── Step Indicator ── */
.fb-steps {
    display: flex;
    align-items: stretch;
    padding: 18px 16px 0;
    border-bottom: 1px solid #f0ece2;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}

.fb-steps::-webkit-scrollbar {
    display: none;
}

.fb-step {
    display: flex;
    align-items: center;
    gap: 6px;
    flex: 0 0 auto;
    font-size: .72rem;
    font-weight: 700;
    color: #b0a090;
    cursor: pointer;
    padding: 0 4px 16px;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    text-transform: uppercase;
    letter-spacing: .05em;
    white-space: nowrap;
    transition: color .2s, border-color .2s;
    user-select: none;
    -webkit-user-select: none;
}

.fb-step:hover:not(.active) {
    color: var(--fb-brown-l);
}

.fb-step.active {
    color: var(--fb-brown);
    border-bottom-color: var(--fb-gold);
}

.fb-step.done {
    color: var(--fb-gold-dk);
    cursor: pointer;
}

.fb-step.done .fb-step__num {
    background: var(--fb-gold);
    color: #fff;
}

.fb-step__num {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #ede8de;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: .68rem;
    font-weight: 800;
    flex-shrink: 0;
    transition: background .2s, color .2s;
}

.fb-step.active .fb-step__num {
    background: var(--fb-gold);
    color: #fff;
}

.fb-step__sep {
    flex: 0 0 12px;
    text-align: center;
    color: #d0c8b8;
    font-size: .75rem;
    padding-bottom: 16px;
    margin-bottom: -1px;
}

/* Step label hidden on very small screens */
.fb-step__label {
    display: none;
}

@media (min-width: 400px) {
    .fb-step__label {
        display: inline;
    }
}

/* ── Step Body ── */
.fb-step-body {
    padding: 28px 24px 24px;
    display: none;
}

.fb-step-body.active {
    display: block;
}

.fb-step-title {
    font-size: 1.15rem;
    font-weight: 800;
    color: var(--fb-brown);
    margin-bottom: 4px;
    letter-spacing: -.01em;
}

.fb-step-sub {
    font-size: .85rem;
    color: var(--fb-brown-l);
    margin-bottom: 22px;
    line-height: 1.45;
}

/* ── Tipologia Cards ── */
.fb-tipo-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 16px;
    margin-bottom: 20px;
}

@media (min-width: 560px) {
    .fb-tipo-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 18px;
    }
}

@media (min-width: 860px) {
    .fb-tipo-grid {
        grid-template-columns: repeat(3, 1fr);
    }
}

.fb-tipo-card {
    border: 2px solid var(--fb-border);
    border-radius: 16px;
    padding: 0;
    cursor: pointer;
    transition: border-color .25s, box-shadow .25s, transform .25s;
    position: relative;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    background: var(--fb-white);
}

.fb-tipo-card:hover {
    border-color: var(--fb-gold);
    box-shadow: 0 8px 28px rgba(200, 168, 75, .18);
    transform: translateY(-3px);
}

.fb-tipo-card.selected {
    border-color: var(--fb-gold);
    box-shadow: 0 0 0 3px rgba(200, 168, 75, .22), 0 8px 28px rgba(200, 168, 75, .12);
}

.fb-tipo-card.selected .fb-tipo-card__body {
    background: var(--fb-cream);
}

/* Tour card image */
.fb-tipo-card__img-wrap {
    position: relative;
    overflow: hidden;
    flex-shrink: 0;
}

.fb-tipo-card__img {
    width: 100%;
    height: 200px;
    object-fit: cover;
    display: block;
    transition: transform .4s ease;
}

.fb-tipo-card:hover .fb-tipo-card__img {
    transform: scale(1.16);
}

/* Gradient overlay on image for readability */
.fb-tipo-card__img-wrap::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 50%;
    background: linear-gradient(to top, rgba(42, 31, 14, .35), transparent);
    pointer-events: none;
}

.fb-tipo-card__body {
    padding: 16px 16px 18px;
    display: flex;
    flex-direction: column;
    flex: 1;
    transition: background .2s;
}

.fb-tipo-card__badge {
    position: absolute;
    top: 12px;
    right: 12px;
    background: var(--fb-gold);
    color: #fff;
    font-size: .6rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
    padding: 4px 10px;
    border-radius: 20px;
    z-index: 2;
    box-shadow: 0 2px 8px rgba(0, 0, 0, .18);
}

.fb-tipo-card__icon {
    font-size: 1.5rem;
    margin-bottom: 8px;
}

.fb-tipo-card__name {
    font-weight: 800;
    font-size: .97rem;
    margin-bottom: 6px;
    color: var(--fb-brown);
    letter-spacing: -.01em;
}

.fb-tipo-card__price {
    color: var(--fb-gold-dk);
    font-weight: 800;
    font-size: 1.15rem;
    margin-bottom: 8px;
}

.fb-tipo-card__descr {
    font-size: .78rem;
    color: var(--fb-brown-l);
    line-height: 1.4;
    margin-bottom: 8px;
}

.fb-tipo-card__price span {
    font-size: .76rem;
    font-weight: 400;
    color: var(--fb-brown-l);
}

.fb-tipo-card__from {
    font-size: .72rem;
    font-weight: 400;
    color: var(--fb-brown-l);
    display: block;
    margin-bottom: 1px;
}

.fb-tipo-card__min-note {
    font-size: .72rem;
    font-weight: 500;
    color: var(--fb-brown-l);
    margin-top: 3px;
    opacity: .85;
}

.fb-tipo-card__meta {
    font-size: .74rem;
    color: var(--fb-brown-l);
    margin-bottom: 10px;
    display: flex;
    align-items: center;
    gap: 4px;
}

.fb-tipo-card__sep {
    height: 1px;
    background: var(--fb-border);
    margin: 0 0 10px;
}

.fb-tipo-card__incl {
    list-style: none;
    padding: 0;
    margin: 0;
    flex: 1;
}

.fb-tipo-card__incl li {
    font-size: .74rem;
    color: #5a4020;
    display: flex;
    gap: 6px;
    align-items: flex-start;
    margin-bottom: 4px;
    line-height: 1.4;
}

.fb-tipo-card__incl li::before {
    content: "✓";
    color: var(--fb-gold);
    font-weight: 700;
    flex-shrink: 0;
}

/* Selection check indicator */
.fb-tipo-card__check {
    display: none;
    position: absolute;
    top: 12px;
    left: 12px;
    width: 26px;
    height: 26px;
    background: var(--fb-gold);
    border-radius: 50%;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-size: .8rem;
    font-weight: 700;
    z-index: 2;
    box-shadow: 0 2px 8px rgba(0, 0, 0, .18);
}

.fb-tipo-card.selected .fb-tipo-card__check {
    display: flex;
}

/* ── Calendario ── */
.fb-cal {
    user-select: none;
    -webkit-user-select: none;
    max-width: 360px;
    margin: 0 auto;
}

.fb-cal__nav {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 12px;
}

.fb-cal__nav-btn {
    background: none;
    border: 1px solid var(--fb-border);
    border-radius: 8px;
    width: 34px;
    height: 34px;
    cursor: pointer;
    font-size: 1rem;
    color: var(--fb-brown-l);
    transition: background .15s;
    line-height: 1;
}

.fb-cal__nav-btn:hover {
    background: var(--fb-cream);
}

.fb-cal__nav-btn:disabled {
    color: #ccc;
    cursor: not-allowed;
}

.fb-cal__month {
    font-weight: 700;
    font-size: .97rem;
    color: var(--fb-brown);
}

.fb-cal__grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
    text-align: center;
}

.fb-cal__wd {
    font-size: .6rem;
    font-weight: 700;
    color: var(--fb-brown-l);
    padding: 3px 0;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.fb-cal__day {
    aspect-ratio: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 5px;
    font-size: .72rem;
    cursor: pointer;
    font-weight: 500;
    transition: background .15s, color .15s;
    position: relative;
}

.fb-cal__day:hover:not(.past):not(.sold-out):not(.closed):not(.empty) {
    background: #fdf0cc;
}

.fb-cal__day.empty {
    cursor: default;
}

.fb-cal__day.past {
    color: #d0c8b8;
    cursor: default;
}

.fb-cal__day.sold-out {
    color: #fff;
    background: #e05555;
    cursor: not-allowed;
    text-decoration: none;
    opacity: .85;
}

.fb-cal__day.closed {
    color: #d0c8b8;
    cursor: not-allowed;
    background: #f5f5f5;
}

.fb-cal__day.few {
    background: #ff8c00;
    color: #fff;
    font-weight: 700;
}

.fb-cal__day.available {
    background: #d4edda;
    color: #276237;
    font-weight: 600;
}

.fb-cal__day.selected {
    background: var(--fb-gold) !important;
    color: #fff !important;
    font-weight: 700;
}

.fb-cal__day.today {
    outline: 2px solid var(--fb-gold);
    outline-offset: -2px;
}

.fb-cal__day.today.past {
    outline: none;
    color: #d0c8b8;
    cursor: default;
}

.fb-cal__day.few::after {
    display: none;
}

.fb-cal__legend {
    display: flex;
    gap: 12px;
    margin-top: 10px;
    font-size: .72rem;
    color: var(--fb-brown-l);
    flex-wrap: wrap;
}

.fb-cal__legend-dot {
    display: inline-block;
    width: 9px;
    height: 9px;
    border-radius: 50%;
    margin-right: 4px;
    vertical-align: middle;
}

/* Loading state */
.fb-cal__loading {
    text-align: center;
    padding: 40px 0;
    color: var(--fb-brown-l);
    font-size: .88rem;
}

/* ── Data & Ora merged step — two-column layout ── */
.fb-date-ora-layout {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 24px;
    align-items: start;
    margin-top: 6px;
}

.fb-date-col {
    /* contains the 300px calendar */
}

.fb-ora-col__placeholder {
    color: var(--fb-brown-l);
    font-size: 1 rem;
    padding: 16px 8px;
    opacity: .7;
    font-style: italic;
    margin-top: -55px;
    font-weight: 700;
}

.fb-ora-col #step2-slots-section {
    /* revealed by JS after date selected */
}

@media (max-width: 620px) {
    .fb-date-ora-layout {
        grid-template-columns: 1fr;
    }

    .fb-date-col {
        display: flex;
        justify-content: center;
    }

    .fb-ora-col__placeholder {
        margin-top: 0;
    }
}

/* ── Orario + Persone ── */
.fb-slots-label {
    font-size: .75rem;
    font-weight: 700;
    color: var(--fb-brown-l);
    text-transform: uppercase;
    letter-spacing: .05em;
    margin-bottom: 10px;
}

.fb-slots {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 18px;
}

.fb-slot-wrap {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
}

.fb-slot-btn {
    border: 2px solid var(--fb-border);
    border-radius: 10px;
    padding: 10px 22px;
    font-weight: 700;
    font-size: .9rem;
    cursor: pointer;
    background: var(--fb-white);
    transition: border-color .15s, background .15s;
    color: var(--fb-brown);
    font-family: inherit;
}

.fb-slot-btn:hover {
    border-color: var(--fb-gold);
    background: var(--fb-cream);
}

.fb-slot-btn.selected {
    border-color: var(--fb-gold);
    background: var(--fb-cream);
    color: var(--fb-gold-dk);
}

.fb-slot-btn.full {
    color: #d0c8b8;
    border-color: #e8e4dc;
    cursor: not-allowed;
    text-decoration: line-through;
}

.fb-slot-btn.gift-blocked {
    text-decoration: none;
    border-style: dashed;
    color: #b0a898;
    border-color: #ddd8ce;
}

.fb-slot-posti {
    font-size: .72rem;
    font-weight: 500;
    text-align: center;
}

.fb-slot-posti.few {
    color: #b07020;
}

.fb-slot-posti.avail {
    color: #4a7c40;
}

.fb-slot-posti.full {
    color: #d0c8b8;
}

.fb-sep {
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(200, 168, 75, .25), transparent);
    margin: 20px 0;
    border: none;
}

.fb-persone-row {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: nowrap;
    justify-content: space-between;
}

.fb-persone-label {
    font-size: .88rem;
    font-weight: 600;
    color: var(--fb-brown);
    flex: 1;
    min-width: 0;
}

.fb-persone-ctrl {
    display: flex;
    align-items: center;
}

.fb-persone-btn {
    width: 36px;
    height: 36px;
    border: 1px solid #d0c8b8;
    background: var(--fb-white);
    font-size: 1.2rem;
    cursor: pointer;
    color: var(--fb-brown-l);
    transition: background .15s;
    font-family: inherit;
}

.fb-persone-btn:first-child {
    border-radius: 8px 0 0 8px;
}

.fb-persone-btn:last-child {
    border-radius: 0 8px 8px 0;
}

.fb-persone-btn:hover {
    background: var(--fb-cream);
}

.fb-persone-btn:disabled {
    color: #ccc;
    cursor: not-allowed;
}

.fb-persone-val {
    width: 44px;
    text-align: center;
    font-weight: 700;
    font-size: 1rem;
    border-top: 1px solid #d0c8b8;
    border-bottom: 1px solid #d0c8b8;
    padding: 7px 0;
    color: var(--fb-brown);
    line-height: 1.2;
}

.fb-persone-note {
    font-size: .78rem;
    color: #9a7020;
}

.fb-totale-preview {
    margin-top: 14px;
    background: var(--fb-cream);
    border: 1px solid rgba(200, 168, 75, .3);
    border-radius: 10px;
    padding: 11px 14px;
    font-size: .88rem;
    color: var(--fb-brown);
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
}

.fb-totale-preview strong {
    font-size: 1.1rem;
    color: var(--fb-gold-dk);
}

.fb-totale-breakdown {
    font-size: .74rem;
    color: var(--fb-brown-l);
    padding: 4px 14px 6px;
    margin-top: -4px;
    opacity: .85;
}

/* Gift-voucher variant — site-consistent success green */
.fb-totale-gift {
    background: #e6f7f0;
    border-color: #34d399;
    color: #065f46;
}

.fb-totale-gift-left {
    display: inline-flex;
    align-items: center;
    gap: 9px;
}

.fb-totale-gift-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #059669;
    color: #fff;
    font-size: .72rem;
    font-weight: 700;
    flex-shrink: 0;
}

.fb-gift-code-lbl {
    font-family: 'Courier New', monospace;
    font-weight: 700;
    font-size: .85rem;
    letter-spacing: .06em;
    color: #065f46;
}

.fb-totale-gift-val {
    font-size: 1.05rem;
    font-weight: 700;
    color: #059669;
}

/* ── Form Step 3 — V2 Modern ── */

/* Numbered section dividers */
.fb-section-label {
    font-size: .72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .1em;
    color: var(--fb-brown, #3D2B10);
    margin: 22px 0 10px;
    display: flex;
    align-items: center;
    gap: 10px;
    padding-bottom: 0;
    counter-increment: fb-section;
}

.fb-section-label::before {
    content: counter(fb-section);
    display: flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: var(--fb-brown, #3D2B10);
    color: #fff;
    font-size: .65rem;
    font-weight: 700;
    flex-shrink: 0;
    line-height: 1;
}

.fb-section-label::after {
    content: '';
    flex: 1;
    height: 1px;
    background: #e5ddd0;
}

.fb-section-label:first-child {
    margin-top: 0;
}

/* Reset counter on the step body */
.fb-step-body {
    counter-reset: fb-section;
}

/* Gift tour label (dynamically generated): no counter badge */
#fb-gift-step1-lbl::before,
#lbl-gift-tour::before {
    display: none;
}

.fb-form-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px 14px;
}

@media (min-width: 500px) {
    .fb-form-grid {
        grid-template-columns: 1fr 1fr;
    }

    /* 3-column grid: nazione citta (row1), indirizzo+cap (row2) */
    .fb-form-grid.col3-naz {
        grid-template-columns: 1fr 1fr 140px;
    }

    /* Indirizzo: force to row2 cols 1-2 (not full-span) */
    .fb-form-grid.col3-naz .fb-field.span2 {
        grid-column: 1 / 3 !important;
        grid-row: 2;
    }

    /* CAP: force to row2 col3 (alongside indirizzo) */
    .fb-form-grid.col3-naz .fb-field:last-child {
        grid-column: 3 !important;
        grid-row: 2;
    }

    /* azienda row: ragione_sociale piva — balanced */
    .fb-form-grid.col2-az1 {
        grid-template-columns: 1fr 1fr;
    }

    /* azienda row2: pec(1fr) sdi(120px) */
    .fb-form-grid.col2-az2 {
        grid-template-columns: 1fr 120px;
    }
}

.fb-form-grid.col1 {
    grid-template-columns: 1fr !important;
}

/* CF half-width override — needs higher specificity than col1 */
@media (min-width: 500px) {
    #fs-privato>.fb-form-grid.col1 {
        grid-template-columns: 1fr 1fr !important;
    }
}

.fb-field {
    display: flex;
    flex-direction: column;
    gap: 3px;
    position: relative;
}

/* Floating labels inside inputs */
.fb-field label {
    position: absolute;
    top: 7px;
    left: 14px;
    font-size: .62rem;
    font-weight: 700;
    color: #8a7e6e;
    text-transform: uppercase;
    letter-spacing: .08em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    pointer-events: none;
    z-index: 1;
    transition: all .15s;
    margin-bottom: 0;
}

.fb-field input,
.fb-field select,
.fb-field textarea {
    border: 1.5px solid #ddd5c8;
    border-radius: 12px;
    padding: 22px 14px 8px;
    font-size: .88rem;
    color: var(--fb-brown);
    background: #faf8f4;
    transition: border-color .2s, box-shadow .2s, background .2s;
    font-family: inherit;
    width: 100%;
    box-sizing: border-box;
    -webkit-appearance: none;
    appearance: none;
    height: 52px;
}

/* Custom select arrow */
.fb-field select {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%236b5230' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
    padding-right: 34px;
}


.fb-field input:focus,
.fb-field select:focus,
.fb-field textarea:focus {
    outline: none;
    border-color: var(--fb-gold);
    box-shadow: 0 0 0 3px rgba(200, 168, 75, .12);
    background: #fff;
}

.fb-field input:hover,
.fb-field select:hover,
.fb-field textarea:hover {
    border-color: rgba(200, 168, 75, .45);
    background: #fefcf5;
}

.fb-field input::placeholder,
.fb-field textarea::placeholder {
    color: #c0ad8a;
    font-style: italic;
}

.fb-field textarea {
    resize: vertical;
    min-height: 56px;
    max-height: 120px;
    height: 64px !important;
    padding-top: 24px;
}

.fb-field .req {
    color: var(--fb-gold);
}

.fb-field-note {
    font-size: .72rem;
    color: #a09080;
    font-style: italic;
    margin-top: 1px;
}

.fb-field-error {
    font-size: .72rem;
    color: #c0392b;
    display: none;
    margin-top: 2px;
    font-weight: 500;
    letter-spacing: .01em;
}

.fb-field.has-error input,
.fb-field.has-error select,
.fb-field.has-error textarea {
    border-color: #c0392b;
}

.fb-field.has-error .fb-field-error {
    display: block;
}

/* Dati Fiscali Toggle — Segmented control */
.fb-fiscale-toggle {
    display: inline-flex;
    gap: 0;
    margin-bottom: 10px;
    border: none;
    border-radius: 12px;
    overflow: hidden;
    width: fit-content;
    background: #f0ebe3;
    padding: 3px;
}

.fb-fiscale-tab {
    background: transparent;
    border: none;
    padding: 7px 20px;
    font-size: .78rem;
    font-weight: 700;
    color: #8a7e6e;
    cursor: pointer;
    font-family: inherit;
    border-radius: 9px;
    transition: background .2s, color .2s, box-shadow .2s;
}

.fb-fiscale-tab.active {
    background: #fff;
    color: var(--fb-brown, #3D2B10);
    box-shadow: 0 1px 4px rgba(0, 0, 0, .08);
}

.fb-fiscale-tab:focus {
    outline: none;
}

.fb-fiscale-section {
    display: none;
}

.fb-fiscale-section.active {
    display: block;
}

/* Lingua toggle — modern chips */
.fb-lingua-row {
    display: flex;
    gap: 8px;
    margin-bottom: 0;
    flex-wrap: wrap;
}

.fb-lingua-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: #faf8f4;
    border: 1.5px solid #e0d8cb;
    border-radius: 12px;
    padding: 8px 18px;
    font-size: .82rem;
    font-weight: 600;
    color: var(--fb-brown, #3D2B10);
    cursor: pointer;
    font-family: inherit;
    transition: all .2s;
}

.fb-lingua-btn:hover {
    border-color: var(--fb-gold);
    background: #fdf9f0;
}

.fb-lingua-btn.active {
    background: var(--fb-brown, #3D2B10);
    border-color: var(--fb-brown, #3D2B10);
    color: #FBF7F0;
    box-shadow: 0 2px 6px rgba(61, 43, 16, .2);
}

/* Privacy */
.fb-privacy-row {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-size: .78rem;
    color: #8a7e6e;
    cursor: pointer;
    line-height: 1.5;
    margin-top: 18px;
    padding: 0;
    background: none;
    border: none;
    border-radius: 0;
    transition: color .15s;
}

.fb-privacy-row input[type=checkbox] {
    margin-top: 2px;
    accent-color: var(--fb-gold);
    width: 15px;
    height: 15px;
    flex-shrink: 0;
    cursor: pointer;
}

.fb-privacy-row a {
    color: var(--fb-gold-dk);
}

/* ── Riepilogo Step 4 ── */
/* Base styles are defined in the V2 section below */

.fb-summary-table {
    width: 100%;
    border-collapse: collapse;
}

.fb-summary-table td {
    padding: 5px 0;
    font-size: .84rem;
    vertical-align: top;
    line-height: 1.4;
}

.fb-summary-table td:first-child {
    color: #8a7e6e;
    font-weight: 600;
    width: 36%;
    padding-right: 10px;
    white-space: nowrap;
}

.fb-summary-table td:last-child {
    font-weight: 500;
    color: var(--fb-brown);
}

.fb-summary-table tr:not(:last-child) td {
    border-bottom: 1px solid #f0ebe3;
}

.fb-stripe-note {
    display: flex;
    align-items: center;
    gap: 10px;
    background: #faf8f4;
    border: 1.5px solid #e5ddd0;
    border-radius: 14px;
    padding: 14px 18px;
    font-size: .8rem;
    color: #8a7e6e;
    margin: 16px 0 12px;
    line-height: 1.5;
}

.fb-stripe-note svg {
    flex-shrink: 0;
}

/* ── CTA Row ── */
.fb-cta-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    margin-top: 22px;
    padding-top: 16px;
    border-top: 1px solid #ece6db;
    flex-wrap: wrap;
}

.fb-cta-row.no-back .fb-btn-back {
    background: transparent;
    color: var(--fb-brown-l);
    border: 1.5px solid var(--fb-border);
    border-radius: 12px;
    padding: 12px 24px;
    font-size: .88rem;
    font-weight: 600;
    cursor: pointer;
    font-family: inherit;
    transition: background .15s, border-color .15s, color .15s;
}

.fb-btn-back {
    background: none;
    border: 1.5px solid #ddd5c8;
    border-radius: 12px;
    padding: 11px 22px;
    font-weight: 600;
    font-size: .85rem;
    cursor: pointer;
    color: var(--fb-brown, #3D2B10);
    transition: border-color .2s, background .15s;
    font-family: inherit;
    white-space: nowrap;
}



.fb-btn-next {
    background: linear-gradient(135deg, #a0522d 0%, #8b4513 100%);
    color: #fff;
    border: none;
    border-radius: 12px;
    padding: 11px 30px;
    font-size: .9rem;
    font-weight: 700;
    cursor: pointer;
    font-family: inherit;
    letter-spacing: .02em;
    transition: transform .12s, box-shadow .2s, background .15s;
    box-shadow: 0 2px 8px rgba(160, 82, 45, .25);
}



.fb-btn-next:disabled {
    background: #d0c8b8;
    cursor: not-allowed;
}

.fb-btn-pay {
    background: linear-gradient(135deg, #c8a84b 0%, #a8893a 100%);
    color: #fff;
    border: none;
    border-radius: 12px;
    padding: 14px 36px;
    font-size: .95rem;
    font-weight: 700;
    cursor: pointer;
    font-family: inherit;
    letter-spacing: .02em;
    transition: background .15s, transform .1s, box-shadow .15s;
    box-shadow: 0 4px 16px rgba(200, 168, 75, .3);
    display: inline-flex;
    align-items: center;
    gap: 8px;
}



.fb-btn-pay:disabled {
    background: #aaa;
    cursor: not-allowed;
}

/* ── Success State ── */
.fb-success {
    text-align: center;
    padding: 44px 20px;
    display: none;
}

.fb-success.active {
    display: block;
}

.fb-success__icon {
    font-size: 3.2rem;
    margin-bottom: 14px;
}

.fb-success__title {
    font-size: 1.45rem;
    font-weight: 800;
    color: var(--fb-brown);
    margin-bottom: 7px;
}

.fb-success__sub {
    color: var(--fb-brown-l);
    font-size: .92rem;
    max-width: 420px;
    margin: 0 auto 18px;
    line-height: 1.5;
}

.fb-success__ref {
    display: inline-block;
    background: var(--fb-cream);
    border: 1px solid rgba(200, 168, 75, .4);
    border-radius: 8px;
    padding: 8px 20px;
    font-weight: 800;
    color: var(--fb-gold-dk);
    font-size: .97rem;
    letter-spacing: .06em;
}

/* ── Info Strip (bottom of card) ── */
.fb-info-strip {
    display: flex;
    flex-wrap: wrap;
    background: var(--fb-cream);
    border: 1px solid var(--fb-border);
    border-radius: 12px;
    margin-top: 18px;
    overflow: hidden;
}

@media (max-width: 600px) {
    .fb-info-strip {
        flex-direction: column;
    }

    .fb-info-item {
        border-right: none !important;
        border-bottom: 1px solid #f0ece2;
    }

    .fb-info-item:last-child {
        border-bottom: none;
    }
}

.fb-info {
    max-width: 1187px;
    margin: 0 auto;
    padding: 40px 29px 46px 35px;
}

.fb-info-item {
    flex: 1;
    min-width: 140px;
    display: flex;
    gap: 8px;
    align-items: center;
    padding: 12px 14px;
    font-size: .78rem;
    color: var(--fb-brown-l);
    border-right: 1px solid #f0ece2;
    line-height: 1.3;
}

.fb-info-item:last-child {
    border-right: none;
}

.fb-info-item .fas,
.fb-info-item .far,
.fb-info-item .fa {
    color: var(--fb-gold);
    font-size: 1rem;
    flex-shrink: 0;
    text-align: center;
}

.fb-info-item strong {
    color: var(--fb-brown);
}

/* ── Error/Alert ── */
.fb-alert {
    padding: 12px 14px;
    border-radius: 8px;
    font-size: .83rem;
    margin-bottom: 14px;
    display: none;
    line-height: 1.4;
}

.fb-alert.active {
    display: block;
}

.fb-alert--error {
    background: #fdf0ef;
    border: 1px solid #e8b4b0;
    color: #922b21;
}

.fb-alert--info {
    background: var(--fb-cream);
    border: 1px solid rgba(200, 168, 75, .4);
    color: #6b5230;
}

/* ── Spinner ── */
.fb-spinner {
    display: inline-block;
    width: 18px;
    height: 18px;
    border: 2px solid rgba(255, 255, 255, .4);
    border-top-color: #fff;
    border-radius: 50%;
    animation: fb-spin .7s linear infinite;
    vertical-align: middle;
    margin-right: 8px;
}

@keyframes fb-spin {
    to {
        transform: rotate(360deg);
    }
}

@keyframes fb-fade-down {
    from {
        opacity: 0;
        transform: translateY(-8px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Gift tour selector shown in step 1 when Regala mode */
.fb-gift-step1-section {
    margin-bottom: 14px;
    animation: fb-fade-down .22s ease;
}

.fb-gift-step1-sub {
    font-size: .8rem;
    color: #7a6040;
    margin: 0 0 12px 0;
    line-height: 1.4;
}

/* ── Utility ── */
.fb-mt {
    margin-top: 8px;
}

.fb-sep {
    height: 1px;
    background: #f0ece2;
    margin: 10px 0;
}

/* ── Responsive: medium screens ── */
@media (min-width: 640px) {
    .fb-book {
        padding: 0 24px;
        margin-top: -32px;
    }

    .fb-step-body {
        padding: 26px 28px 22px;
    }

    .fb-steps {
        padding: 20px 28px 0;
    }

    .fb-summary-table td:first-child {
        width: 38%;
    }
}

/* ── Responsive: large screens ── */
@media (min-width: 960px) {
    .fb-book {
        margin-bottom: 60px;
    }
}

/* ── Info / Presentation Section ─────────────────────────── */
.fb-info {
    max-width: 1180px;
    margin: 0 auto;
    padding: 44px 36px 32px;
}

.fb-info__eyebrow {
    font-size: .72rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .14em;
    color: var(--fb-gold);
    margin-bottom: 8px;
}

.fb-info__title {
    font-size: 2rem;
    font-weight: 800;
    color: var(--fb-brown);
    margin: 0 0 6px;
    line-height: 1.2;
    position: relative;
    padding-bottom: 16px;
}

.fb-info__title::after {
    content: '';
    display: block;
    width: 48px;
    height: 3px;
    background: var(--fb-gold);
    border-radius: 2px;
    margin-top: 14px;
}

.fb-info__title em {
    font-style: italic;
    color: var(--fb-gold-dk);
}

.fb-info__desc {
    font-size: 1.2rem;
    color: #5a4a38;
    line-height: 1.6;
    max-width: 980px;
    margin: 0 0 28px;
}

.fb-info__cta,
.fb-info__cta-btn {
    display: none;
}

.fb-info__title--cta {
    display: none;
}

@media (max-width: 720px) {
    .fb-info__title {
        font-size: 1.45rem;
    }

    .fb-info {
        padding: 32px 16px 28px;
    }
}

/* ── Bottom Details Section ──────────────────────────────── */
.fb-details {
    /* max-width: 1180px; */
    margin: 0 auto;
    padding: 0px 0 56px;
}

.fb-details__header {
    text-align: center;
    margin-bottom: 32px;
}

.fb-details__eyebrow {
    font-size: .68rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .16em;
    color: var(--fb-gold);
    margin-bottom: 8px;
}

.fb-details__title {
    font-size: 1.65rem;
    font-weight: 800;
    color: var(--fb-brown);
    margin: 0;
    line-height: 1.25;
}

.fb-details__title em {
    font-style: italic;
    color: var(--fb-gold-dk);
}

.fb-details__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 18px;
}

.fb-details__card {
    background: var(--fb-white);
    border: 1px solid var(--fb-border);
    border-radius: 16px;
    padding: 24px 20px;
    position: relative;
    overflow: hidden;
    transition: box-shadow .25s, transform .25s;
}

.fb-details__card:hover {
    box-shadow: 0 8px 24px rgba(0, 0, 0, .06);
    transform: translateY(-2px);
}

.fb-details__card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 4px;
}

.fb-details__card--incl::before {
    background: #276237;
}

.fb-details__card--req::before {
    background: var(--fb-gold);
}

.fb-details__card--note::before {
    background: #ff8c00;
}

.fb-details__card-head {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 16px;
}

.fb-details__card-icon {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1rem;
    flex-shrink: 0;
}

.fb-details__card--incl .fb-details__card-icon {
    background: #d1fae5;
    color: #276237;
}

.fb-details__card--req .fb-details__card-icon {
    background: #fdf0cc;
    color: var(--fb-gold-dk);
}

.fb-details__card--note .fb-details__card-icon {
    background: #fff3e0;
    color: #ff8c00;
}

.fb-details__card-title {
    font-size: .7rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .12em;
    color: var(--fb-brown);
}

.fb-details__card ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

.fb-details__card li {
    font-size: .88rem;
    color: #5a4a38;
    line-height: 1.55;
    padding: 8px 0 8px 24px;
    position: relative;
    border-bottom: 1px solid rgba(200, 168, 75, .1);
}

.fb-details__card li:last-child {
    border-bottom: none;
}

.fb-details__card--incl li::before {
    content: '✓';
    position: absolute;
    left: 0;
    color: #276237;
    font-weight: 700;
}

.fb-details__card--req li::before {
    content: '→';
    position: absolute;
    left: 0;
    color: var(--fb-gold-dk);
    font-weight: 700;
}

.fb-details__card--note li::before {
    content: '•';
    position: absolute;
    left: 2px;
    color: #ff8c00;
    font-weight: 700;
    font-size: 1.1rem;
}

/* Bottom trust strip */
.fb-trust {
    display: flex;
    justify-content: center;
    gap: 32px;
    flex-wrap: wrap;
    margin-top: 36px;
    padding-top: 28px;
    border-top: 1px solid var(--fb-border);
}

.fb-trust__item {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: .78rem;
    color: var(--fb-brown-l);
    font-weight: 600;
}

.fb-trust__icon {
    font-size: 1.1rem;
    color: var(--fb-gold);
}

@media (max-width: 720px) {
    .fb-details__grid {
        grid-template-columns: 1fr;
    }

    .fb-details {
        padding: 32px 16px 40px;
    }

    .fb-details__title {
        font-size: 1.3rem;
    }

    .fb-trust {
        gap: 18px;
    }
}

/* ══════════════════════════════════════════════════
   COUPON + GIFT VOUCHER — V2 Collapsible
══════════════════════════════════════════════════ */

/* Coupon section: no card, collapsible area with dashed divider */
.fb-coupon-section {
    margin-top: 16px;
    background: none;
    border: none;
    border-top: 1px dashed #e0d8cb;
    border-radius: 0;
    padding: 12px 0 0;
}

/* Hide separator inside coupon (replaced by border-top above) */
.fb-coupon-section .fb-sep {
    display: none;
}

/* Coupon section label becomes toggle trigger */
.fb-coupon-section .fb-section-label {
    margin-top: 0;
    margin-bottom: 0;
    cursor: pointer;
    user-select: none;
    counter-increment: none;
    font-size: .8rem;
    font-weight: 600;
    color: var(--fb-gold-dk, #9a7830);
    transition: color .2s;
}

.fb-coupon-section .fb-section-label:hover {
    color: var(--fb-brown, #3D2B10);
}

/* Override numbered badge — use + icon instead */
.fb-coupon-section .fb-section-label::before {
    content: '+';
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: rgba(200, 168, 75, .12);
    color: var(--fb-gold-dk, #9a7830);
    font-size: .75rem;
    font-weight: 700;
    transition: transform .25s;
}

/* Hide the trailing line on coupon label */
.fb-coupon-section .fb-section-label::after {
    display: none;
}

/* Hide HTML + icon (CSS ::before already provides it) */
.fb-coupon-icon {
    display: none;
}

/* Rotate icon when open */
.fb-coupon-section.open .fb-section-label::before {
    transform: rotate(45deg);
}

/* Coupon drawer — collapsed by default */
.fb-coupon-drawer {
    max-height: 0;
    overflow: hidden;
    opacity: 0;
    transition: max-height .3s ease, opacity .25s ease;
}

.fb-coupon-section.open .fb-coupon-drawer {
    max-height: 120px;
    opacity: 1;
}

.fb-coupon-row {
    display: flex;
    gap: 8px;
    align-items: stretch;
    max-width: 380px;
    margin-top: 10px;
}

.fb-coupon-row input {
    flex: 1;
    min-width: 0;
    border: 1.5px solid #ddd5c8;
    border-radius: 12px;
    padding: 10px 14px;
    font-size: .85rem;
    font-family: 'SF Mono', 'Courier New', monospace;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--fb-brown);
    background: #faf8f4;
    height: 42px;
    box-sizing: border-box;
    transition: border-color .2s;
}

.fb-coupon-row input:focus {
    outline: none;
    border-color: var(--fb-gold);
    box-shadow: 0 0 0 3px rgba(200, 168, 75, .1);
}

.fb-btn-coupon {
    padding: 0 18px;
    background: var(--fb-brown, #3D2B10);
    color: #FBF7F0;
    border: none;
    border-radius: 12px;
    font-weight: 700;
    font-size: .78rem;
    cursor: pointer;
    white-space: nowrap;
    height: 42px;
    transition: background .18s, transform .1s;
}

.fb-btn-coupon:hover {
    background: #50381a;
}

.fb-btn-coupon:active {
    transform: scale(.97);
}

.fb-btn-coupon:disabled {
    opacity: .55;
    cursor: not-allowed;
}

/* Feedback line */
.fb-coupon-feedback {
    font-size: .82rem;
    min-height: 1.3em;
    padding: 2px 0;
}

.fb-coupon-feedback.ok {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    background: #e6f7f0;
    border: 1px solid #34d399;
    border-radius: 6px;
    padding: 7px 14px;
    color: #065f46;
    font-weight: 700;
    font-size: .82rem;
}

.fb-coupon-feedback.ok::before {
    content: '✓';
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #059669;
    color: #fff;
    font-size: .7rem;
    font-weight: 900;
    flex-shrink: 0;
}

.fb-coupon-feedback.err {
    color: #c0392b;
}

.fb-coupon-feedback.loading {
    color: #888;
    font-style: italic;
}

/* ══════════════════════════════════════════════════
   NOTE COLLAPSIBLE — V2 Modern
══════════════════════════════════════════════════ */
.fb-note-expander {
    margin-top: 14px;
}

.fb-note-trigger {
    display: flex;
    align-items: center;
    gap: 6px;
    background: none;
    border: none;
    cursor: pointer;
    font-size: .8rem;
    font-weight: 600;
    color: #8a7e6e;
    padding: 0;
    font-family: inherit;
    transition: color .2s;
}

.fb-note-trigger:hover {
    color: var(--fb-brown, #3D2B10);
}

.fb-note-trigger .fb-note-icon {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: rgba(138, 126, 110, .08);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: .7rem;
    font-weight: 700;
    transition: transform .25s;
    flex-shrink: 0;
    line-height: 1;
}

.fb-note-expander.open .fb-note-trigger .fb-note-icon {
    transform: rotate(45deg);
}

.fb-note-drawer {
    max-height: 0;
    overflow: hidden;
    opacity: 0;
    transition: max-height .3s ease, opacity .25s ease;
}

.fb-note-expander.open .fb-note-drawer {
    max-height: 120px;
    opacity: 1;
}

.fb-note-drawer textarea {
    width: 100%;
    margin-top: 8px;
    border: 1.5px solid #ddd5c8;
    border-radius: 12px;
    padding: 24px 14px 8px;
    font-size: .85rem;
    color: var(--fb-brown);
    background: #faf8f4;
    font-family: inherit;
    min-height: 56px;
    height: 64px;
    resize: vertical;
    outline: none;
    box-sizing: border-box;
    transition: border-color .2s;
}

.fb-note-drawer textarea:focus {
    border-color: var(--fb-gold);
    box-shadow: 0 0 0 3px rgba(200, 168, 75, .1);
    background: #fff;
}

/* Gift section */
.fb-gift-section {
    margin-top: 0;
}

/* Gift voucher tipo-card variant — kept for backwards compat but hidden */
.fb-tipo-card--gift {
    display: none !important;
}

/* Gift badge inside card (legacy) */
.fb-tipo-card__gift-badge {
    display: inline-block;
    background: var(--fb-gold, #C8A84B);
    color: #1A1208;
    font-size: .68rem;
    font-weight: 800;
    letter-spacing: .06em;
    text-transform: uppercase;
    border-radius: 30px;
    padding: 2px 10px;
    margin-bottom: 6px;
}

/* Coupon discount row in summary table */
#s-coupon-row td:first-child {
    color: #065f46;
}

#s-coupon-row td:last-child {
    color: #065f46;
    font-weight: 700;
}

/* ── Gift tour selector (step 3) ── */
#fb-gift-tour-section {
    margin-bottom: 0;
}

.fb-gift-tour-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 12px;
    padding: 4px 0 8px;
}

.fb-gift-tour-card {
    position: relative;
    border: 2px solid #e0d6c2;
    border-radius: 10px;
    background: #fff;
    cursor: pointer;
    overflow: hidden;
    transition: border-color .18s, box-shadow .18s, transform .18s;
    display: flex;
    flex-direction: column;
}

.fb-gift-tour-card:hover {
    border-color: var(--fb-gold, #C8A84B);
    box-shadow: 0 4px 14px rgba(200, 168, 75, .18);
    transform: translateY(-2px);
}

.fb-gift-tour-card.selected {
    border-color: var(--fb-gold, #C8A84B);
    background: #fffdf4;
    box-shadow: 0 4px 18px rgba(200, 168, 75, .28);
}

.fb-gift-tour-card__check {
    display: none;
    position: absolute;
    top: 7px;
    right: 9px;
    background: var(--fb-gold, #C8A84B);
    color: #1A1208;
    font-size: .75rem;
    font-weight: 900;
    border-radius: 50%;
    width: 22px;
    height: 22px;
    line-height: 22px;
    text-align: center;
    z-index: 1;
}

.fb-gift-tour-card.selected .fb-gift-tour-card__check {
    display: block;
}

.fb-gift-tour-card__img {
    width: 100%;
    height: 110px;
    object-fit: cover;
    display: block;
}

.fb-gift-tour-card__body {
    padding: 10px 12px 12px;
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.fb-gift-tour-card__name {
    font-size: .9rem;
    font-weight: 700;
    color: #2d2200;
    line-height: 1.3;
}

.fb-gift-tour-card__price {
    font-size: .82rem;
    color: var(--fb-gold-dark, #8a6a10);
    font-weight: 600;
}

@media (max-width: 540px) {
    .fb-gift-tour-grid {
        grid-template-columns: 1fr 1fr;
        gap: 8px;
    }

    .fb-gift-tour-card__img {
        height: 80px;
    }
}

/* ── Gift persons stepper ── */
.fb-gift-pers-section {
    max-width: 280px;
    margin-top: 12px;
}

/* ═══════════════════════════════════════════════════════════
   MODE SWITCH (Acquista / Regala) — step 1 top, sliding pill
   ═══════════════════════════════════════════════════════════ */
.fb-mode-switch {
    display: inline-flex;
    background: rgba(200, 168, 75, .12);
    border: 1.5px solid rgba(200, 168, 75, .28);
    border-radius: 30px;
    padding: 4px;
    position: relative;
    margin: 0 auto 20px;
    width: fit-content;
    overflow: hidden;
}

/* Sliding gold pill */
.fb-mode-switch__pill {
    position: absolute;
    top: 4px;
    bottom: 4px;
    left: 4px;
    width: calc(50% - 4px);
    background: var(--fb-gold, #C8A84B);
    border-radius: 30px;
    transition: transform .3s cubic-bezier(.4, 0, .2, 1);
    pointer-events: none;
    box-shadow: 0 2px 10px rgba(200, 168, 75, .38);
}

.fb-mode-switch[data-mode="regala"] .fb-mode-switch__pill {
    transform: translateX(100%);
}

.fb-mode-switch__btn {
    position: relative;
    z-index: 1;
    flex: 1;
    min-width: 110px;
    padding: 9px 26px;
    border: none;
    background: transparent;
    border-radius: 30px;
    font-size: .875rem;
    font-weight: 600;
    color: #9a7830;
    cursor: pointer;
    outline: none;
    transition: color .25s;
    white-space: nowrap;
    line-height: 1.3;
}

.fb-mode-switch__btn:focus-visible {
    box-shadow: 0 0 0 3px rgba(200, 168, 75, .35);
}

/* Active button = white text over the sliding gold pill */
.fb-mode-switch[data-mode="acquista"] #fb-mode-btn-acquista,
.fb-mode-switch[data-mode="regala"] #fb-mode-btn-regala {
    color: #fff;
    font-weight: 700;
}

/* Hides the tour cards grid when in gift (Regala) mode */
.fb-tipo-grid--hidden {
    display: none !important;
}

/* ═══════════════════════════════════════════════════════════
   FORM LAYOUT HELPERS
   ═══════════════════════════════════════════════════════════ */
/* Full-width span inside any fb-form-grid */
.fb-field.span2 {
    grid-column: 1 / -1;
}

/* Compact sep */
.fb-sep-sm {
    height: 1px;
    background: #f0ece2;
    margin: 10px 0;
}

/* ═══════════════════════════════════════════════════════════
   INTL-TEL-INPUT — phone field (step 3)
   ═══════════════════════════════════════════════════════════ */

/* ITI wrapper fills the fb-field */
.fb-wizard .iti {
    display: block;
    width: 100%;
}

/* The input inside ITI matches our design tokens */
.fb-wizard .iti input[type=tel] {
    border: 1.5px solid var(--fb-border) !important;
    border-radius: 10px !important;
    height: 44px !important;
    padding-top: 9px !important;
    padding-bottom: 9px !important;
    padding-right: 14px !important;
    /* padding-left NOT set with !important — ITI sets it dynamically via inline style */
    padding-left: 90px;
    font-size: .9rem !important;
    color: var(--fb-brown) !important;
    background: var(--fb-white) !important;
    font-family: inherit !important;
    width: 100% !important;
    box-sizing: border-box !important;
    transition: border-color .2s, box-shadow .2s, background .2s !important;
    -webkit-appearance: none;
    appearance: none;
}

.fb-wizard .iti input[type=tel]:focus {
    outline: none !important;
    border-color: var(--fb-gold) !important;
    box-shadow: 0 0 0 4px rgba(200, 168, 75, .15) !important;
    background: #fffef8 !important;
}

.fb-wizard .iti input[type=tel]:hover {
    border-color: rgba(200, 168, 75, .5) !important;
    background: var(--fb-cream) !important;
}

.fb-wizard .iti input[type=tel]::placeholder {
    color: #c0ad8a;
    font-style: italic;
}

/* Flag button — cream left zone */
.fb-wizard .iti__selected-flag {
    background: #f5f0e8 !important;
    border-right: 1px solid var(--fb-border) !important;
    border-radius: 9px 0 0 9px !important;
    padding: 0 10px !important;
    height: 100% !important;
}

.fb-wizard .iti__selected-flag:hover,
.fb-wizard .iti__selected-flag:focus {
    background: #ede8de !important;
    outline: none;
}

/* Dial code next to flag */
.fb-wizard .iti.iti--separate-dial-code .iti__selected-dial-code {
    margin-left: 5px;
    font-size: .8rem;
    font-weight: 600;
    color: var(--fb-brown-l);
}

/* Chevron arrow */
.fb-wizard .iti__arrow {
    border-top-color: var(--fb-brown-l) !important;
    margin-left: 4px !important;
}

.fb-wizard .iti__arrow--up {
    border-bottom-color: var(--fb-brown-l) !important;
}

/* Country dropdown */
.fb-wizard .iti__country-list {
    border-radius: 10px !important;
    box-shadow: 0 8px 28px rgba(61, 43, 16, .14) !important;
    border: 1.5px solid var(--fb-border) !important;
    max-height: 220px !important;
    background: var(--fb-white) !important;
    padding: 4px 0 !important;
    z-index: 200 !important;
}

.fb-wizard .iti__search-input {
    margin: 6px 8px !important;
    width: calc(100% - 16px) !important;
    padding: 6px 10px !important;
    border: 1.5px solid var(--fb-border) !important;
    border-radius: 8px !important;
    font-size: .82rem !important;
    font-family: inherit !important;
    color: var(--fb-brown) !important;
}

.fb-wizard .iti__search-input:focus {
    border-color: var(--fb-gold) !important;
    outline: none !important;
    box-shadow: 0 0 0 3px rgba(200, 168, 75, .12) !important;
}

.fb-wizard .iti__country {
    padding: 7px 12px !important;
}

.fb-wizard .iti__country.iti__highlight,
.fb-wizard .iti__country:hover {
    background: var(--fb-cream) !important;
}

.fb-wizard .iti__country-name {
    color: var(--fb-brown) !important;
    font-size: .83rem !important;
}

.fb-wizard .iti__dial-code {
    color: var(--fb-gold-dk) !important;
    font-weight: 600 !important;
    font-size: .78rem !important;
}

.fb-wizard .iti__divider {
    border-bottom: 1px solid var(--fb-border) !important;
    margin: 3px 0 !important;
}

.fb-wizard .iti__preferred .iti__country-name {
    font-weight: 600;
}

/* Error/valid states on phone field */
.fb-field.has-error .iti input[type=tel] {
    border-color: #c0392b !important;
}

.fb-field--valid .iti input[type=tel] {
    border-color: #059669 !important;
}

/* ═══════════════════════════════════════════════════════════
   HONEYPOT — anti-bot hidden field
   ═══════════════════════════════════════════════════════════ */
.fb-hp {
    position: absolute;
    left: -9999px;
    top: auto;
    width: 1px;
    height: 1px;
    overflow: hidden;
    opacity: 0;
    pointer-events: none;
}

/* ═══════════════════════════════════════════════════════════
   REAL-TIME VALIDATION STATES (border-only approach)
   ═══════════════════════════════════════════════════════════ */
/* Green border for valid fields */
.fb-field--valid input,
.fb-field--valid select,
.fb-field--valid textarea {
    border-color: #059669 !important;
}

/* CF hint: hidden (we only use border color) */
.fb-cf-hint {
    display: none !important;
}

/* ═══════════════════════════════════════════════════════════
   STEP 4 SUMMARY — V2 Modern
   ═══════════════════════════════════════════════════════════ */
.fb-summary-box {
    background: #faf8f4;
    border: 1.5px solid #e5ddd0;
    border-radius: 14px;
    padding: 18px 20px;
    margin-bottom: 14px;
    box-shadow: none;
    transition: border-color .2s;
}

.fb-summary-box:hover {
    border-color: #d5cbb8;
}

.fb-summary-box__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 12px;
    gap: 8px;
}

.fb-summary-box h3 {
    font-size: .72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .1em;
    color: #8a7e6e;
    margin: 0 0 12px;
    padding-bottom: 8px;
    border-bottom: 1px solid #ece6db;
    display: flex;
    align-items: center;
    gap: 8px;
}

.fb-summary-box h3::before {
    content: '';
    display: inline-block;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: var(--fb-brown, #3D2B10);
    flex-shrink: 0;
}

/* Icon badges for each section */
.fb-summary-box h3.s-head-tour::before {
    content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23FBF7F0' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M12 2L2 7l10 5 10-5-10-5z'/%3E%3Cpath d='M2 17l10 5 10-5'/%3E%3C/svg%3E");
    padding: 4px;
}

.fb-summary-box h3.s-head-personal::before {
    content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23FBF7F0' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E");
    padding: 4px;
}

.fb-summary-box h3.s-head-fiscal::before {
    content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23FBF7F0' stroke-width='2.5' stroke-linecap='round'%3E%3Crect x='2' y='3' width='20' height='18' rx='2'/%3E%3Cpath d='M2 9h20'/%3E%3C/svg%3E");
    padding: 4px;
}

.fb-summary-box h4 {
    font-size: .62rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .14em;
    color: #8a7e6e;
    margin: 0;
    flex: 1;
    display: flex;
    align-items: center;
    gap: 6px;
}

.fb-summary-box h4::after {
    content: '';
    flex: 1;
    height: 1px;
    background: #ece6db;
}

.fb-summary-edit {
    font-size: .68rem;
    color: var(--fb-gold-dk, #9a7830);
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font-family: inherit;
    font-weight: 600;
    white-space: nowrap;
    transition: color .15s;
    text-decoration: underline;
    text-decoration-style: dotted;
    text-underline-offset: 2px;
}

.fb-summary-edit:hover {
    color: var(--fb-brown, #3D2B10);
    background: none;
    border: none;
    text-decoration-style: solid;
}

/* Summary total — V2 elevated card */
.fb-summary-total {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 16px 20px;
    background: linear-gradient(135deg, #3D2B10 0%, #5a3e1a 100%);
    border-radius: 14px;
    margin-top: 8px;
    margin-bottom: 14px;
    flex-wrap: wrap;
    gap: 4px;
    box-shadow: 0 4px 16px rgba(61, 43, 16, .15);
}

.fb-summary-total__label {
    font-weight: 700;
    color: rgba(255, 255, 255, .85);
    font-size: .88rem;
}

.fb-summary-total__val {
    font-size: 1.35rem;
    font-weight: 800;
    color: #fff;
    letter-spacing: -.01em;
}

/* Trust section — V2 Enhanced */
.fb-trust-section {
    background: #faf8f4;
    border: 1.5px solid #e5ddd0;
    border-radius: 14px;
    padding: 18px 20px 16px;
    margin: 16px 0 12px;
}

.fb-trust-main {
    display: flex;
    align-items: center;
    gap: 12px;
}

.fb-trust-shield {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: linear-gradient(135deg, #059669, #047857);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    box-shadow: 0 2px 8px rgba(5, 150, 105, .18);
}

.fb-trust-shield svg {
    width: 22px;
    height: 22px;
}

.fb-trust-title {
    font-size: .85rem;
    font-weight: 700;
    color: var(--fb-brown, #3D2B10);
    margin-bottom: 2px;
}

.fb-trust-sub {
    font-size: .72rem;
    color: #8a7e6e;
    line-height: 1.4;
}

.fb-trust-stripe {
    color: #635bff;
    font-weight: 700;
}

.fb-trust-sep {
    height: 1px;
    background: #ece6db;
    margin: 14px 0 12px;
}

.fb-trust-badges {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    justify-content: center;
}

.fb-trust-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    height: 28px;
    padding: 0 10px;
    border-radius: 6px;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .04em;
    border: 1px solid #e5ddd0;
    background: #fff;
    white-space: nowrap;
    transition: border-color .15s;
}

.fb-trust-badge:hover {
    border-color: #c8b99a;
}

.fb-trust-badge--visa {
    color: #1a1f71;
    font-style: italic;
    font-size: .78rem;
    letter-spacing: .02em;
}

.fb-trust-badge--mc {
    color: #eb001b;
}

.fb-trust-badge--amex {
    color: #006fcf;
    letter-spacing: .08em;
}

.fb-trust-badge--apple {
    color: #333;
}

.fb-trust-badge--gpay {
    color: #5f6368;
}

.fb-trust-badge--apple svg,
.fb-trust-badge--gpay svg {
    flex-shrink: 0;
}

/* Pay button — V2 sienna gradient (matching step-3 next) */
#step-4 .fb-btn-pay {
    background: linear-gradient(135deg, #a0522d 0%, #8b4513 100%);
    box-shadow: 0 3px 12px rgba(160, 82, 45, .3);
    border-radius: 14px;
    padding: 14px 34px;
    font-size: .92rem;
    letter-spacing: .01em;
}

/* Sub-footer note */
#step-4 .fb-step-footer {
    text-align: center;
    font-size: .72rem;
    color: #b0a090;
    margin-top: 14px;
}

/* Summary table — V2 cleaner */
#step-4 .fb-summary-table td {
    padding: 6px 0;
    font-size: .84rem;
    line-height: 1.4;
}

#step-4 .fb-summary-table td:first-child {
    color: #8a7e6e;
    font-weight: 600;
    width: 36%;
}

#step-4 .fb-summary-table td:last-child {
    color: var(--fb-brown, #3D2B10);
    font-weight: 500;
}

#step-4 .fb-summary-table tr:not(:last-child) td {
    border-bottom: 1px solid #f0ebe3;
}

/* Coupon discount row green styling */
#step-4 .fb-summary-table #s-coupon-row td:last-child {
    color: #059669;
    font-weight: 700;
}

/* Section label first-child reset */
.fb-section-label:first-child {
    margin-top: 0;
}

/* Button hover / active micro-interactions */
.fb-btn-next:hover {
    transform: translateY(-1px);
    box-shadow: 0 4px 14px rgba(160, 82, 45, .3);
}

.fb-btn-next:active {
    transform: translateY(0);
}

.fb-btn-pay:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 20px rgba(160, 82, 45, .35);
}

.fb-btn-pay:active {
    transform: translateY(0);
}

.fb-btn-back:hover {
    border-color: var(--fb-gold);
    color: var(--fb-gold-dk);
}

/* Summary box responsive */
@media (min-width: 600px) {
    .fb-step-body {
        padding: 32px 36px 28px;
    }

    .fb-summary-box {
        padding: 18px 22px;
    }

    .fb-cta-row {
        margin-top: 28px;
    }
}

/* ──────────────────────────────────────────────────
   MOBILE — 600px and below
────────────────────────────────────────────────── */
@media (max-width: 600px) {

    /* Trust section: tighter padding */
    .fb-trust-section {
        padding: 14px 14px 12px;
    }

    .fb-trust-shield {
        width: 34px;
        height: 34px;
    }

    .fb-trust-shield svg {
        width: 18px;
        height: 18px;
    }

    .fb-trust-title {
        font-size: .8rem;
    }

    .fb-trust-sub {
        font-size: .68rem;
    }

    .fb-trust-badges {
        gap: 6px;
    }

    .fb-trust-badge {
        height: 26px;
        padding: 0 8px;
        font-size: .62rem;
    }

    /* CTA row stack on mobile — step 4 only at this breakpoint */
    #step-4 .fb-cta-row {
        flex-direction: column-reverse;
        gap: 10px;
    }

    #step-4 .fb-btn-next,
    #step-4 .fb-btn-pay,
    #step-4 .fb-btn-back {
        width: 100%;
        text-align: center;
        justify-content: center;
    }

    /* Summary total: text sizes */
    .fb-summary-total {
        padding: 14px 16px;
    }

    .fb-summary-total__val {
        font-size: 1.15rem;
    }
}

/* ══════════════════════════════════════════════════
   MOBILE XS — 370px (Samsung Galaxy S10, small phones)
══════════════════════════════════════════════════ */
@media (max-width: 400px) {

    /* Reduce lateral padding to gain horizontal space */
    .fb-step-body {
        padding: 20px 14px 18px;
    }

    .fb-steps {
        padding: 14px 10px 0;
    }

    /* Section divider labels: keep flex for numbered badge, hide line */
    .fb-section-label {
        display: flex;
        white-space: normal;
        flex-wrap: wrap;
    }

    .fb-section-label::after {
        display: none;
    }

    /* Coupon row: shrink button padding on very narrow screens */
    .fb-coupon-row {
        max-width: 100%;
    }

    .fb-btn-coupon {
        padding: 10px 12px;
        font-size: .78rem;
    }

    /* CTA row: stack buttons vertically, full width */
    .fb-cta-row {
        flex-direction: column-reverse;
        gap: 10px;
    }

    .fb-btn-next,
    .fb-btn-pay,
    .fb-btn-back {
        width: 100%;
        text-align: center;
        justify-content: center;
    }

    /* Stripe note: switch to block layout, SVG inline */
    .fb-stripe-note {
        display: block;
        font-size: .8rem;
        padding: 12px 14px;
    }

    .fb-stripe-note svg {
        float: none;
        display: inline-block;
        vertical-align: middle;
        margin-right: 6px;
        margin-bottom: 2px;
    }

    /* Trust section XS */
    .fb-trust-section {
        padding: 12px 10px 10px;
    }

    .fb-trust-main {
        gap: 10px;
    }

    .fb-trust-shield {
        width: 30px;
        height: 30px;
    }

    .fb-trust-shield svg {
        width: 16px;
        height: 16px;
    }

    .fb-trust-title {
        font-size: .75rem;
    }

    .fb-trust-sub {
        font-size: .64rem;
    }

    .fb-trust-sep {
        margin: 10px 0 8px;
    }

    .fb-trust-badges {
        gap: 5px;
    }

    .fb-trust-badge {
        height: 24px;
        padding: 0 6px;
        font-size: .58rem;
        border-radius: 5px;
    }

    .fb-trust-badge--visa {
        font-size: .68rem;
    }

    /* Tipo cards: full width */
    .fb-tipo-grid {
        grid-template-columns: 1fr;
    }

    /* Summary table: tighter columns */
    .fb-summary-table td:first-child {
        width: 42%;
        font-size: .78rem;
    }

    .fb-summary-table td:last-child {
        font-size: .82rem;
    }

    /* Form input font size min 16px to prevent iOS/Android zoom on focus */
    .fb-form-grid input,
    .fb-form-grid select,
    .fb-form-grid textarea,
    .fb-coupon-row input,
    #f-nome,
    #f-cognome,
    #f-email,
    #f-citta,
    #f-indirizzo,
    #f-cap,
    #f-cf {
        font-size: 16px;
    }
}

/* ── Slot min-fatturato highlight ──────────────────────────────────────────── */

/* Calendar day: min already fully covered by existing bookings */
.fb-cal__day.has-pax {
    background: #8dbd96;
    color: #1a4a25;
    font-weight: 700;
}

.fb-cal__day.has-pax::after {
    content: '★';
    position: absolute;
    bottom: 1px;
    right: 3px;
    font-size: .52rem;
    color: #c8a84b;
    line-height: 1;
}

/* Calendar day: partial pax (some bookings but below min) */
.fb-cal__day.has-pax-partial::after {
    content: '●';
    position: absolute;
    bottom: 2px;
    right: 4px;
    font-size: .38rem;
    color: #8aab60;
    line-height: 1;
}

/* Slot posti: min already met — "migliore opzione" */
.fb-slot-posti.min-met {
    color: #c8a84b;
    font-weight: 700;
    font-size: .78rem;
}

/* Slot posti: pax count (X partecipanti già iscritti) */
.fb-slot-posti.pax-count {
    color: #2a6b38;
    font-weight: 600;
    font-size: .72rem;
}

/* Slot posti: partial pax note */
.fb-slot-posti.has-pax {
    color: #4a8a52;
    font-weight: 600;
    font-size: .72rem;
}

/* Slot button: best-slot (dark green — has enough existing bookings) */
.fb-slot-btn.best-slot {
    background: #2a5435;
    color: #fff;
    border-color: #1e3d27;
    box-shadow: 0 2px 10px rgba(42, 84, 53, .30);
}

.fb-slot-btn.best-slot:hover {
    background: #1e3d27;
    border-color: #142a1c;
}

.fb-slot-btn.best-slot.selected {
    background: var(--fb-gold) !important;
    border-color: var(--fb-gold) !important;
    color: #fff !important;
}

/* Totale breakdown: warning message */
.fb-totale-breakdown--warn {
    font-size: .82rem;
    color: #9a4a10;
    font-weight: 600;
    opacity: 1;
    padding-top: 2px;
}

/* Totale breakdown: explanatory sub-note */
.fb-totale-breakdown__note {
    font-size: .76rem;
    font-weight: 400;
    color: #7a5030;
    margin-top: 3px;
    line-height: 1.4;
    opacity: .9;
}

/* Step 1 topbar: mode-switch + continue button on same row */
.fb-step1-topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: .5rem;
    margin-bottom: .75rem;
}

.fb-step1-topbar .fb-mode-switch {
    margin-bottom: 0;
}

.fb-step1-topbar #btn1-next {
    flex-shrink: 0;
}

/* Card meta: min-fatturato footnote marker */
.fb-tipo-card__minfat {
    color: #7a6030;
    font-size: .78rem;
    font-weight: 400;
}

.fb-tipo-card__minfat sup {
    cursor: help;
    color: #9a4a10;
    font-size: .85em;
    text-decoration: underline dotted;
}

/* Footnote below tour cards */
.fb-tipo-footnote {
    font-size: .77rem;
    color: #888;
    line-height: 1.45;
    margin: .5rem .25rem .25rem;
    padding: .4rem .5rem;
    border-left: 3px solid #e0c87a;
    background: #fffef5;
    border-radius: 0 4px 4px 0;
}