.tla-booking-section {
    --tla-navy:#0b3158;
    --tla-dark:#071e33;
    --tla-blue:#0b6fae;
    --tla-text:#40566d;
    --tla-yellow:#fff34f;
    --tla-soft:#f4f8fb;
    --tla-border:#d9e2ea;
    --tla-green:#18a565;
    width:100%;
    padding:68px 24px;
    background:#fff;
    color:var(--tla-dark);
}
.tla-booking-section *, .tla-booking-section *::before, .tla-booking-section *::after { box-sizing:border-box; }
.tla-booking-shell {
    max-width:1240px;
    margin:0 auto;
    padding:30px;
    border:1px solid rgba(11,49,88,.10);
    border-radius:26px;
    background:linear-gradient(145deg,#fff 0%,#fbfdff 62%,#f3f8fb 100%);
    box-shadow:0 28px 70px rgba(7,30,51,.10);
}
.tla-booking-heading { display:block; margin-bottom:26px; }
.tla-booking-kicker { display:inline-block; margin-bottom:9px; color:var(--tla-blue); font-size:11px; line-height:1; font-weight:800; letter-spacing:.09em; }
.tla-booking-heading h2 { margin:0; color:var(--tla-navy); font-size:clamp(28px,3.2vw,42px); line-height:1.05; letter-spacing:-.035em; }
.tla-booking-heading p { max-width:720px; margin:10px 0 0; color:var(--tla-text); font-size:15px; line-height:1.6; }
.tla-trip-toggle { display:inline-grid; grid-template-columns:1fr 1fr; gap:4px; padding:4px; margin-bottom:20px; border-radius:12px; background:#eaf0f4; }
.tla-trip-toggle label { margin:0; cursor:pointer; }
.tla-trip-toggle input { position:absolute; opacity:0; pointer-events:none; }
.tla-trip-toggle span { display:block; min-width:110px; padding:11px 17px; border-radius:9px; color:var(--tla-text); text-align:center; font-size:12px; font-weight:800; transition:.18s ease; }
.tla-trip-toggle input:checked + span { background:var(--tla-navy); color:#fff; box-shadow:0 6px 15px rgba(11,49,88,.18); }
.tla-route-grid { display:grid; grid-template-columns:minmax(0,1fr) 44px minmax(0,1fr); gap:12px; align-items:end; }
.tla-details-grid { display:grid; grid-template-columns:1.2fr 1fr .8fr; gap:12px; margin-top:12px; }
.tla-field label { display:block; margin:0 0 7px; color:var(--tla-navy); font-size:10px; line-height:1; font-weight:800; letter-spacing:.07em; }
.tla-field select,
.tla-field input,
.tla-field textarea {
    width:100%;
    margin:0;
    padding:0 14px;
    border:1px solid var(--tla-border) !important;
    border-radius:11px !important;
    outline:0;
    background:#fff;
    color:var(--tla-dark);
    font:600 14px/1.35 inherit;
    box-shadow:none !important;
    transition:border-color .18s, box-shadow .18s;
}
.tla-field select, .tla-field input { height:52px; }
.tla-field textarea { min-height:72px; padding-top:12px; padding-bottom:12px; resize:vertical; }
.tla-field select:focus, .tla-field input:focus, .tla-field textarea:focus { border-color:var(--tla-blue) !important; box-shadow:0 0 0 3px rgba(11,111,174,.10) !important; }
.tla-field small { display:block; margin-top:6px; color:#6c7e8f; font-size:10px; line-height:1.4; }
.tla-swap { width:44px; height:52px; padding:0; border:1px solid var(--tla-border) !important; border-radius:11px !important; background:#fff !important; color:var(--tla-navy) !important; font-size:20px; font-weight:800; cursor:pointer; transition:.18s ease; }
.tla-swap:hover, .tla-swap:focus { transform:translateY(-1px); border-color:#afc3d2 !important; background:var(--tla-soft) !important; color:var(--tla-navy) !important; }
.tla-return-fields { margin-top:16px; padding:18px; border:1px solid rgba(11,111,174,.16); border-radius:15px; background:rgba(11,111,174,.045); }
.tla-return-fields[hidden] { display:none !important; }
.tla-return-heading { display:flex; justify-content:space-between; gap:20px; margin-bottom:14px; }
.tla-return-heading strong { color:var(--tla-navy); font-size:13px; }
.tla-return-heading span { color:var(--tla-text); font-size:11px; }
.tla-return-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.tla-booking-action-row { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-top:20px; padding-top:20px; border-top:1px solid rgba(11,49,88,.09); }
.tla-booking-help { color:var(--tla-text); font-size:11px; line-height:1.45; }
.tla-booking-section .tla-check-price,
.tla-booking-section .tla-review-button {
    min-width:245px;
    min-height:54px;
    display:inline-flex;
    align-items:center;
    justify-content:space-between;
    gap:18px;
    padding:0 20px;
    border:0 !important;
    border-radius:11px !important;
    background:#fff34f !important;
    background-color:#fff34f !important;
    background-image:none !important;
    color:#0b3158 !important;
    font-size:13px;
    font-weight:900;
    cursor:pointer;
    box-shadow:0 12px 26px rgba(255,243,79,.24);
    transition:transform .18s, box-shadow .18s, opacity .18s;
}
.tla-booking-section .tla-check-price:hover,
.tla-booking-section .tla-check-price:focus,
.tla-booking-section .tla-check-price:active,
.tla-booking-section .tla-review-button:hover,
.tla-booking-section .tla-review-button:focus,
.tla-booking-section .tla-review-button:active {
    background:#fff34f !important;
    background-color:#fff34f !important;
    background-image:none !important;
    color:#0b3158 !important;
    border-color:transparent !important;
    transform:translateY(-2px);
    box-shadow:0 16px 30px rgba(7,30,51,.10);
}
.tla-booking-section .tla-check-price span,
.tla-booking-section .tla-review-button span { color:#0b3158 !important; }
.tla-check-price:disabled, .tla-review-button:disabled { opacity:.65; cursor:wait; transform:none; }
.tla-check-price.is-loading span:last-child, .tla-review-button.is-loading span:last-child { animation:tlaPulse 1s ease-in-out infinite alternate; }
@keyframes tlaPulse { from{opacity:.3} to{opacity:1} }
.tla-form-error { margin-top:15px; padding:12px 14px; border:1px solid #f0b8b8; border-radius:10px; background:#fff4f4; color:#8d2424; font-size:12px; font-weight:650; }

/* Quote */
.tla-quote-result { display:grid; grid-template-columns:minmax(250px,.85fr) minmax(300px,1.15fr); gap:22px; margin-top:24px; padding:22px; border-radius:18px; background:var(--tla-navy); color:#fff; box-shadow:0 20px 45px rgba(7,30,51,.17); }
.tla-quote-result[hidden] { display:none !important; }
.tla-quote-main { display:flex; flex-direction:column; justify-content:center; padding:5px 10px; }
.tla-quote-label { color:#c9d9e8; font-size:11px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
.tla-quote-main > strong { margin:7px 0; color:var(--tla-yellow); font-size:clamp(34px,4vw,52px); line-height:1; letter-spacing:-.04em; }
.tla-quote-main > span:last-child { color:#fff; font-size:12px; line-height:1.45; }
.tla-quote-breakdown { padding:16px; border:1px solid rgba(255,255,255,.13); border-radius:13px; background:rgba(255,255,255,.06); }
.tla-quote-breakdown > div:not(.tla-quote-meta) { display:flex; align-items:center; justify-content:space-between; gap:15px; padding:8px 0; border-bottom:1px solid rgba(255,255,255,.09); color:#d8e4ed; font-size:12px; }
.tla-quote-breakdown > div:last-of-type { border-bottom:0; }
.tla-quote-breakdown strong { color:#fff; white-space:nowrap; }
.tla-quote-meta { padding-top:10px; color:#a9c0d3; font-size:10px; }
.tla-quote-continue { grid-column:1/-1; display:flex; justify-content:flex-end; padding-top:2px; }
.tla-booking-section .tla-continue-booking { min-height:48px; min-width:230px; display:inline-flex; align-items:center; justify-content:space-between; gap:18px; padding:0 18px; border:1px solid rgba(255,255,255,.24) !important; border-radius:10px !important; background:#fff !important; color:var(--tla-navy) !important; font-size:12px; font-weight:900; cursor:pointer; transition:.18s ease; }
.tla-booking-section .tla-continue-booking:hover, .tla-booking-section .tla-continue-booking:focus { background:var(--tla-yellow) !important; color:var(--tla-navy) !important; border-color:var(--tla-yellow) !important; transform:translateY(-1px); }
.tla-booking-section .tla-continue-booking span { color:inherit !important; }

/* Step 2 */
.tla-booking-step-two { margin-top:26px; padding-top:26px; border-top:1px solid rgba(11,49,88,.10); }
.tla-booking-step-two[hidden] { display:none !important; }
.tla-step-heading { display:flex; align-items:flex-start; gap:13px; margin-bottom:18px; }
.tla-step-heading > span { width:30px; height:30px; flex:0 0 30px; display:grid; place-items:center; border-radius:9px; background:var(--tla-navy); color:#fff; font-size:12px; font-weight:900; }
.tla-step-heading h3 { margin:0; color:var(--tla-navy); font-size:22px; line-height:1.15; letter-spacing:-.02em; }
.tla-step-heading p { margin:5px 0 0; color:var(--tla-text); font-size:12px; line-height:1.5; }
.tla-step-columns { display:grid; grid-template-columns:.85fr 1.15fr; gap:16px; align-items:start; }
.tla-subcard { padding:20px; border:1px solid var(--tla-border); border-radius:16px; background:#fff; }
.tla-subcard h4 { margin:0 0 5px; color:var(--tla-navy); font-size:15px; }
.tla-subcard-note { margin:0 0 14px; color:#718293; font-size:10px; line-height:1.45; }
.tla-extra-list { border-top:1px solid #edf1f4; }
.tla-extra-row { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 0; border-bottom:1px solid #edf1f4; }
.tla-extra-row > div { display:flex; flex-direction:column; gap:2px; }
.tla-extra-row strong { color:var(--tla-navy); font-size:12px; }
.tla-extra-row small { color:#718293; font-size:10px; }
.tla-extra-row select { width:82px; height:40px; padding:0 10px; border:1px solid var(--tla-border) !important; border-radius:9px !important; background:#fff; color:var(--tla-dark); font-weight:800; box-shadow:none !important; }
.tla-special-luggage-box { margin-top:14px; padding:13px; border:1px solid #e4eaf0; border-radius:12px; background:#f8fafc; }
.tla-special-toggle { display:flex; align-items:center; gap:10px; margin:0; cursor:pointer; }
.tla-special-toggle input { width:17px; height:17px; margin:0; }
.tla-special-toggle > span { display:flex; flex-direction:column; gap:2px; }
.tla-special-toggle strong { color:var(--tla-navy); font-size:12px; }
.tla-special-toggle small { color:#718293; font-size:10px; }
.tla-special-fields { display:grid; grid-template-columns:1.4fr .6fr; gap:10px; margin-top:13px; }
.tla-special-fields[hidden], .tla-special-other[hidden] { display:none !important; }
.tla-special-other { grid-column:1/-1; }
.tla-customer-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.tla-customer-wide { grid-column:1/-1; }
.tla-step-footer { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-top:18px; padding:16px 18px; border-radius:14px; background:#eef4f8; }
.tla-step-total { display:flex; flex-direction:column; gap:2px; }
.tla-step-total span { color:var(--tla-text); font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; }
.tla-step-total strong { color:var(--tla-navy); font-size:24px; line-height:1; }

/* Review preview */
.tla-review-result { margin-top:16px; padding:18px; border:1px solid rgba(11,111,174,.16); border-radius:14px; background:#f7fbfe; }
.tla-review-result[hidden] { display:none !important; }
.tla-review-title { display:flex; align-items:flex-start; gap:11px; padding-bottom:13px; border-bottom:1px solid #dfe8ef; }
.tla-review-title > span { width:28px; height:28px; flex:0 0 28px; display:grid; place-items:center; border-radius:50%; background:var(--tla-navy); color:#fff; font-size:13px; font-weight:900; }
.tla-review-title div { display:flex; flex-direction:column; gap:3px; }
.tla-review-title strong { color:var(--tla-navy); font-size:13px; }
.tla-review-title small { color:#6f8090; font-size:10px; line-height:1.45; }
.tla-review-grid { display:grid; grid-template-columns:1fr 1fr; gap:0 22px; margin-top:11px; }
.tla-review-grid > div { display:flex; justify-content:space-between; gap:14px; padding:8px 0; border-bottom:1px solid #e6edf2; font-size:11px; }
.tla-review-grid span { color:#657789; }
.tla-review-grid strong { color:var(--tla-navy); text-align:right; word-break:break-word; }

.tla-special-request { display:flex; align-items:center; justify-content:space-between; gap:25px; margin-top:18px; padding:17px 18px; border:1px solid var(--tla-border); border-radius:14px; background:#fff; }
.tla-special-request > div { display:flex; flex-direction:column; gap:3px; }
.tla-special-request strong { color:var(--tla-navy); font-size:12px; }
.tla-special-request span { color:var(--tla-text); font-size:11px; }
.tla-special-request a { flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; min-height:42px; padding:0 16px; border-radius:9px; background:#1faf5d; color:#fff !important; text-decoration:none !important; font-size:10px; font-weight:900; letter-spacing:.02em; }
.tla-booking-empty { padding:15px; border:1px solid #efd58a; border-radius:10px; background:#fff9e8; }

@media (max-width:900px) {
    .tla-booking-section { padding:48px 18px; }
    .tla-booking-shell { padding:24px; }
    .tla-details-grid { grid-template-columns:1fr 1fr; }
    .tla-details-grid .tla-field:last-child { grid-column:1/-1; }
    .tla-quote-result { grid-template-columns:1fr; }
    .tla-quote-continue { grid-column:auto; }
    .tla-step-columns { grid-template-columns:1fr; }
}
@media (max-width:620px) {
    .tla-booking-section { padding:34px 12px; }
    .tla-booking-shell { padding:18px; border-radius:19px; }
    .tla-route-grid { grid-template-columns:1fr 42px; }
    .tla-route-grid .tla-field-route:first-child { grid-column:1/-1; }
    .tla-route-grid .tla-swap { grid-column:2; grid-row:2; width:42px; height:50px; }
    .tla-route-grid .tla-field-route:last-child { grid-column:1; grid-row:2; }
    .tla-details-grid, .tla-return-grid, .tla-customer-grid { grid-template-columns:1fr; }
    .tla-details-grid .tla-field:last-child, .tla-customer-wide { grid-column:auto; }
    .tla-return-heading { display:block; }
    .tla-return-heading span { display:block; margin-top:4px; }
    .tla-booking-action-row, .tla-step-footer { display:block; }
    .tla-check-price, .tla-review-button { width:100%; min-width:0 !important; margin-top:14px; }
    .tla-trip-toggle { width:100%; }
    .tla-trip-toggle span { min-width:0; }
    .tla-special-request { display:block; }
    .tla-special-request a { width:100%; margin-top:12px; }
    .tla-quote-continue { display:block; }
    .tla-booking-section .tla-continue-booking { width:100%; min-width:0; }
    .tla-special-fields { grid-template-columns:1fr; }
    .tla-special-other { grid-column:auto; }
    .tla-review-grid { grid-template-columns:1fr; }
}

/* v0.3.1: price refresh feedback. Both visible totals are refreshed from the server
   whenever extras change. Keep the cue subtle and avoid adding distracting UI. */
.tla-booking-section.tla-price-updating [data-tla-total],
.tla-booking-section.tla-price-updating [data-tla-step-total] { opacity:.48; }
.tla-booking-section [data-tla-total],
.tla-booking-section [data-tla-step-total] { transition:opacity .15s ease; }

/* v0.4.0: WooCommerce checkout handoff */
.tla-checkout-row {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:20px;
    margin-top:16px;
    padding-top:16px;
    border-top:1px solid #dfe8ef;
}
.tla-checkout-row > span {
    max-width:620px;
    color:#657789;
    font-size:10px;
    line-height:1.5;
}
.tla-booking-section .tla-book-pay-button {
    min-width:245px;
    min-height:54px;
    display:inline-flex;
    align-items:center;
    justify-content:space-between;
    gap:18px;
    padding:0 20px;
    border:0 !important;
    border-radius:11px !important;
    background:#0b3158 !important;
    background-color:#0b3158 !important;
    background-image:none !important;
    color:#fff !important;
    font-size:13px;
    font-weight:900;
    cursor:pointer;
    box-shadow:0 12px 26px rgba(11,49,88,.18);
    transition:transform .18s, box-shadow .18s, opacity .18s, background-color .18s;
}
.tla-booking-section .tla-book-pay-button:hover,
.tla-booking-section .tla-book-pay-button:focus,
.tla-booking-section .tla-book-pay-button:active {
    background:#164d7d !important;
    background-color:#164d7d !important;
    background-image:none !important;
    color:#fff !important;
    border-color:transparent !important;
    transform:translateY(-2px);
    box-shadow:0 16px 30px rgba(7,30,51,.16);
}
.tla-booking-section .tla-book-pay-button span { color:#fff !important; }
.tla-book-pay-button:disabled { opacity:.65; cursor:wait; transform:none; }
.tla-book-pay-button.is-loading span:last-child { animation:tlaPulse 1s ease-in-out infinite alternate; }

@media (max-width:620px) {
    .tla-checkout-row { display:block; }
    .tla-booking-section .tla-book-pay-button { width:100%; min-width:0; margin-top:14px; }
}
