/* TB - Quotation and Booking — premium customer experience */
.tb-booking-app{--tb-ink:#101828;--tb-muted:#667085;--tb-line:#e4e7ec;--tb-soft:#f8fafc;--tb-brand:#1d4ed8;--tb-brand-dark:#173ea5;--tb-success:#087443;width:100%;max-width:1180px;margin:clamp(20px,4vw,56px) auto;padding:0 clamp(14px,3vw,28px);color:var(--tb-ink);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;-webkit-font-smoothing:antialiased}
.tb-booking-app,.tb-booking-app *, .tb-booking-app *::before,.tb-booking-app *::after{box-sizing:border-box}
.tb-booking-header{text-align:left;margin:0 auto 18px;max-width:960px}
.tb-booking-eyebrow{display:inline-flex;align-items:center;gap:7px;color:var(--tb-brand);font-size:11px;font-weight:800;letter-spacing:.16em;line-height:1.2;text-transform:uppercase}
.tb-booking-eyebrow:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 0 5px rgba(29,78,216,.08)}
.tb-booking-header h1{margin:8px 0 6px;font-size:clamp(30px,5vw,44px);line-height:1.06;letter-spacing:-.035em;font-weight:800}
.tb-booking-header p{max-width:680px;margin:0;color:var(--tb-muted);font-size:15px;line-height:1.65}
.tb-booking-trustbar{max-width:960px;margin:0 auto 18px;padding:11px 14px;border:1px solid var(--tb-line);border-radius:12px;background:rgba(255,255,255,.82);display:flex;gap:18px;align-items:center;flex-wrap:wrap;color:#475467;font-size:11px;font-weight:700}
.tb-booking-trustbar span{display:inline-flex;align-items:center;gap:6px}.tb-booking-trustbar span:before{content:"";width:6px;height:6px;border-radius:50%;background:#12b76a}
.tb-booking-progress{max-width:960px;margin:0 auto 20px;background:#fff;border:1px solid var(--tb-line);border-radius:16px;padding:14px 16px;box-shadow:0 10px 35px rgba(16,24,40,.05)}
.tb-booking-progress-list{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:5px;list-style:none;margin:0;padding:0}
.tb-booking-progress-list li{min-width:0;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;color:#98a2b3;font-size:10px;font-weight:700;line-height:1.2}
.tb-booking-progress-list li span{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#f2f4f7;color:#667085;font-weight:800;font-size:11px;border:1px solid #eaecf0;transition:.2s ease}
.tb-booking-progress-list li strong{display:block;max-width:100%;overflow-wrap:anywhere;font-size:10px;font-weight:700}
.tb-booking-progress-list li.is-active,.tb-booking-progress-list li.is-complete{color:var(--tb-ink)}
.tb-booking-progress-list li.is-active span{background:var(--tb-ink);border-color:var(--tb-ink);color:#fff;box-shadow:0 0 0 5px rgba(16,24,40,.07)}
.tb-booking-progress-list li.is-complete span{background:#ecfdf3;border-color:#abefc6;color:#067647}
.tb-booking-progress-list li.is-clickable{cursor:pointer}.tb-booking-progress-list li.is-clickable:focus-visible{outline:2px solid var(--tb-brand);outline-offset:3px;border-radius:8px}
.tb-booking-progress-bar{height:5px;background:#f2f4f7;border-radius:99px;overflow:hidden;margin:13px 0 6px}.tb-booking-progress-bar span{display:block;height:100%;width:16.6667%;background:linear-gradient(90deg,var(--tb-brand),#4f80e8);border-radius:99px;transition:width .25s ease}.tb-booking-step-count{text-align:center;margin:0;color:#98a2b3;font-size:10px;font-weight:600}
.tb-booking-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:22px;align-items:start;max-width:960px;margin:0 auto}
.tb-booking-step[hidden]{display:none!important}.tb-booking-alert{display:none;max-width:960px;margin:0 auto 14px;background:#fef3f2;color:#b42318;border:1px solid #fecdca;border-radius:12px;padding:12px 14px;font-size:13px;line-height:1.5}
.tb-booking-card{background:#fff;border:1px solid var(--tb-line);border-radius:18px;padding:clamp(20px,3vw,30px);box-shadow:0 12px 40px rgba(16,24,40,.055)}
.tb-booking-section-title{display:flex;gap:13px;align-items:flex-start;margin-bottom:25px}.tb-booking-section-title>span{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;background:#eef4ff;color:var(--tb-brand);font-weight:800;font-size:12px;flex:0 0 34px}.tb-booking-section-title h2{font-size:clamp(20px,2.5vw,24px);line-height:1.2;letter-spacing:-.02em;margin:0;font-weight:800}.tb-booking-section-title p{font-size:12px;color:var(--tb-muted);line-height:1.55;margin:5px 0 0}
.tb-booking-card label{display:block;font-size:12px;font-weight:750;line-height:1.4;margin:0 0 15px;color:#344054}.tb-booking-card input,.tb-booking-card select,.tb-booking-card textarea{display:block;width:100%;max-width:100%;margin-top:7px;border:1px solid #d0d5dd;border-radius:11px;background:#fff;color:var(--tb-ink);padding:12px 13px;font:inherit;font-size:14px;min-height:48px;line-height:1.35;box-shadow:0 1px 2px rgba(16,24,40,.03);transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}.tb-booking-card input::placeholder,.tb-booking-card textarea::placeholder{color:#98a2b3}.tb-booking-card input:focus,.tb-booking-card select:focus,.tb-booking-card textarea:focus{outline:none;border-color:#84adff;box-shadow:0 0 0 4px rgba(29,78,216,.10);background:#fff}.tb-booking-card input:disabled,.tb-booking-card select:disabled{background:#f8fafc;color:#98a2b3;cursor:not-allowed}.tb-booking-card input[readonly]{background:#f8fafc;color:#475467}.tb-booking-card textarea{resize:vertical;min-height:120px}.tb-two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px}.tb-booking-season{font-size:12px;color:#475467;line-height:1.5;margin:4px 0 0;padding:10px 12px;border-radius:10px;background:#f8fafc;border:1px solid #eef2f6}
.tb-package-grid{border:0;padding:0;margin:0 0 24px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.tb-package-grid legend{grid-column:1/-1;font-size:12px;font-weight:750;line-height:1.4;padding:0;margin:0 0 1px;color:#344054}.tb-package-option{margin:0!important;min-width:0}.tb-package-option input,.tb-payment-options input{position:absolute;opacity:0;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.tb-package-option span,.tb-payment-options label span{position:relative;display:flex;flex-direction:column;justify-content:center;gap:6px;min-height:90px;border:1px solid #d0d5dd;border-radius:14px;padding:14px;cursor:pointer;overflow-wrap:anywhere;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease,transform .18s ease}.tb-package-option span:hover,.tb-payment-options label span:hover{border-color:#98a2b3;background:#fcfcfd;transform:translateY(-1px)}.tb-package-option input:checked+span,.tb-payment-options input:checked+span{border-color:var(--tb-brand);box-shadow:0 0 0 3px rgba(29,78,216,.09);background:#f8fbff}.tb-package-option input:checked+span:after,.tb-payment-options input:checked+span:after{content:"✓";position:absolute;right:11px;top:10px;width:19px;height:19px;border-radius:50%;display:grid;place-items:center;background:var(--tb-brand);color:#fff;font-size:10px;font-weight:800}.tb-package-option input:focus-visible+span,.tb-payment-options input:focus-visible+span{outline:2px solid var(--tb-brand);outline-offset:2px}.tb-package-option strong,.tb-payment-options strong{font-size:14px;line-height:1.3}.tb-package-option em,.tb-payment-options em{font-style:normal;color:#667085;font-size:11px;font-weight:600;line-height:1.35}
.tb-counter-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.tb-counter-grid>div{padding:13px;border:1px solid #eaecf0;border-radius:13px;background:#fcfcfd}.tb-counter-grid>div>label{margin-bottom:8px}.tb-counter{display:grid;grid-template-columns:42px minmax(0,1fr) 42px;align-items:stretch}.tb-counter button{height:46px;border:1px solid #d0d5dd;background:#fff;color:var(--tb-ink);font-size:21px;line-height:1;cursor:pointer;padding:0;touch-action:manipulation;transition:.15s ease}.tb-counter button:first-child{border-radius:10px 0 0 10px}.tb-counter button:last-child{border-radius:0 10px 10px 0}.tb-counter button:hover{background:#f2f4f7}.tb-counter input{border-radius:0!important;text-align:center;margin:0!important;border-left:0!important;border-right:0!important;padding-left:7px!important;padding-right:7px!important}.tb-field-help{display:block;color:#667085;font-size:11px;font-weight:550;line-height:1.45;margin-top:7px}.tb-booking-traveller{border:1px solid #eaecf0;border-radius:14px;padding:16px;margin-bottom:12px;background:#fff;box-shadow:0 2px 8px rgba(16,24,40,.025)}.tb-booking-traveller:last-child{margin-bottom:0}.tb-booking-traveller h3{font-size:13px;line-height:1.4;margin:0 0 12px;font-weight:800}.tb-booking-traveller p{font-size:11px;color:#667085;line-height:1.5;margin:0 0 10px}.tb-booking-traveller .tb-two-col{gap:10px}.tb-booking-traveller label{margin:0;font-size:12px}.tb-trav-classification{display:block;padding:12px;border:1px solid #eaecf0;border-radius:10px;background:#f8fafc;color:#475467;font-size:12px;font-weight:700}.tb-lead-choice{display:flex!important;align-items:center;gap:9px;margin-top:11px!important;padding:11px 12px;border-radius:10px;background:#f8fbff;border:1px solid #dbeafe;color:#1d4ed8!important}.tb-lead-choice input{width:17px!important;min-height:17px!important;margin:0!important;flex:0 0 17px}.tb-booking-lead-contact{margin-top:18px;padding-top:18px;border-top:1px solid #eaecf0}
.tb-booking-addon-list{margin-top:20px;padding:16px;border:1px solid #eaecf0;border-radius:14px;background:#fcfcfd}.tb-booking-addon-list legend{font-weight:800;padding:0 6px;color:#344054}.tb-booking-addon-row{cursor:pointer;transition:box-shadow .15s ease,border-color .15s ease,background .15s ease}.tb-booking-addon-row:hover{box-shadow:0 4px 14px rgba(16,24,40,.06);border-color:#d0d5dd!important;background:#fff!important}
.tb-booking-step-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px}.tb-booking-step-actions-end{justify-content:flex-end}.tb-booking-back,.tb-booking-next,.tb-booking-submit{font:inherit;touch-action:manipulation}.tb-booking-back,.tb-booking-next{min-height:48px;border-radius:11px;padding:11px 17px;font-weight:800;font-size:13px;cursor:pointer;border:1px solid #d0d5dd;background:#fff;color:#344054;transition:.15s ease}.tb-booking-next{margin-left:auto;background:var(--tb-ink);border-color:var(--tb-ink);color:#fff;box-shadow:0 5px 14px rgba(16,24,40,.12)}.tb-booking-next:hover:not(:disabled){background:#1d2939;transform:translateY(-1px)}.tb-booking-back:hover:not(:disabled){background:#f8fafc}.tb-booking-next:disabled,.tb-booking-back:disabled{opacity:.45;cursor:not-allowed}
.tb-booking-final-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(250px,.9fr);gap:16px;align-items:start}.tb-payment-options{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}.tb-payment-options label{margin:0!important;min-width:0}.tb-payment-options label span{min-height:86px}.tb-payment-breakdown,.tb-booking-summary,.tb-booking-review{background:#f8fafc;border:1px solid #eaecf0;border-radius:13px;padding:15px;font-size:13px;line-height:1.5}.tb-booking-review{background:#fff}.tb-booking-review h3{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#667085;margin:0 0 10px}.tb-booking-review p{font-size:12px;margin:0 0 7px;color:#475467;overflow-wrap:anywhere}.tb-booking-review p:last-child{margin-bottom:0}.tb-price-line{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:6px 0}.tb-price-line span{min-width:0;overflow-wrap:anywhere;color:#475467}.tb-price-line strong{white-space:nowrap;color:#101828}.tb-price-total{border-top:1px solid #d0d5dd;margin-top:8px;padding-top:12px;font-weight:800;font-size:17px}.tb-terms{margin-top:17px;padding:12px 13px;border:1px solid #eaecf0;border-radius:11px;background:#fcfcfd}.tb-terms label{display:flex;gap:9px;align-items:flex-start;font-weight:550;font-size:12px;line-height:1.55;margin:0}.tb-terms input[type=checkbox]{width:18px;min-height:18px;flex:0 0 18px;margin:1px 0 0;padding:0}.tb-terms a{font-weight:750;color:var(--tb-brand)}.tb-booking-submit{width:100%;min-height:56px;border:0;border-radius:12px;background:var(--tb-brand);color:#fff;font-weight:850;font-size:15px;margin-top:16px;padding:13px 16px;cursor:pointer;box-shadow:0 8px 20px rgba(29,78,216,.22);transition:.18s ease}.tb-booking-submit:hover:not(:disabled){background:var(--tb-brand-dark);transform:translateY(-1px)}.tb-booking-submit:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.tb-booking-secure{text-align:center;color:#98a2b3;font-size:10px;line-height:1.4;margin:9px 0 0}
.tb-booking-sidebar{position:sticky;top:24px}.tb-live-summary{background:#101828;color:#fff;border-radius:18px;padding:21px;box-shadow:0 18px 45px rgba(16,24,40,.18);overflow:hidden;position:relative}.tb-live-summary:before{content:"";position:absolute;inset:0 0 auto;height:4px;background:linear-gradient(90deg,#60a5fa,#a78bfa,#34d399)}.tb-live-summary-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.tb-live-kicker{font-size:9px;letter-spacing:.15em;font-weight:800;color:#98a2b3}.tb-live-lock{font-size:9px;font-weight:750;color:#d1fadf;background:rgba(18,183,106,.12);border:1px solid rgba(52,211,153,.22);padding:4px 7px;border-radius:999px}.tb-live-summary h2{margin:0 0 5px;font-size:21px;letter-spacing:-.02em}.tb-live-placeholder{margin:0 0 15px;color:#98a2b3;font-size:11px;line-height:1.55}.tb-live-summary-details{border-top:1px solid rgba(255,255,255,.10);border-bottom:1px solid rgba(255,255,255,.10);padding:5px 0;margin:0 0 13px}.tb-live-detail{display:flex;justify-content:space-between;gap:14px;padding:9px 0}.tb-live-detail span{color:#98a2b3;font-size:10px}.tb-live-detail strong{font-size:11px;text-align:right;max-width:62%;overflow-wrap:anywhere}.tb-live-summary .tb-booking-summary{background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.08);color:#fff;padding:12px}.tb-live-summary .tb-price-line{padding:5px 0}.tb-live-summary .tb-price-line span{color:#98a2b3}.tb-live-summary .tb-price-line strong{color:#fff}.tb-live-summary .tb-price-total{border-color:rgba(255,255,255,.12);font-size:16px}.tb-summary-empty{font-size:11px;color:#98a2b3;padding:2px 0}.tb-live-secure-note{display:flex;gap:9px;align-items:flex-start;margin-top:13px;padding-top:13px;border-top:1px solid rgba(255,255,255,.10)}.tb-live-secure-note span{font-size:13px}.tb-live-secure-note strong{display:block;font-size:10px}.tb-live-secure-note small{display:block;color:#98a2b3;font-size:9px;line-height:1.45;margin-top:2px}
.tb-booking-success{max-width:960px;margin:22px auto 0;background:#fff;border:1px solid #d0d5dd;border-radius:20px;padding:clamp(22px,4vw,34px);box-shadow:0 18px 50px rgba(16,24,40,.08)}.tb-booking-success h2{margin:0 0 8px;font-size:28px;line-height:1.15;letter-spacing:-.03em}.tb-confirm-box{background:#ecfdf3;border:1px solid #abefc6;color:#067647;border-radius:13px;padding:14px;margin:16px 0;line-height:1.5}.tb-booking-success table{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}.tb-booking-success td{padding:9px 0;border-bottom:1px solid #f2f4f7;vertical-align:top;overflow-wrap:anywhere}.tb-booking-success td:first-child{width:42%;padding-right:10px;color:#667085}.tb-booking-success td:last-child{font-weight:700;color:#101828}.tb-receipt-btn{display:inline-block;text-decoration:none;background:var(--tb-brand);color:#fff!important;border-radius:11px;padding:12px 17px;font-weight:800;line-height:1.2}
@media(max-width:900px){.tb-booking-layout{grid-template-columns:1fr}.tb-booking-sidebar{position:static;order:2}.tb-live-summary{margin-top:2px}.tb-booking-final-grid{grid-template-columns:1fr}.tb-booking-layout>#tb-qe-booking-form{min-width:0}}
@media(max-width:700px){.tb-booking-app{margin-top:16px}.tb-booking-header{text-align:left}.tb-booking-header h1{font-size:31px}.tb-booking-trustbar{gap:9px}.tb-booking-trustbar span{font-size:10px}.tb-booking-progress{padding:12px 9px;border-radius:14px}.tb-booking-progress-list{gap:2px}.tb-booking-progress-list li strong{font-size:9px}.tb-booking-progress-list li span{width:29px;height:29px}.tb-booking-card{border-radius:15px;padding:18px}.tb-two-col,.tb-counter-grid{grid-template-columns:1fr}.tb-package-grid,.tb-payment-options{grid-template-columns:1fr}.tb-child-age-grid{grid-template-columns:1fr 1fr}.tb-booking-step-actions{flex-wrap:wrap}.tb-booking-back,.tb-booking-next{flex:1 1 0;min-width:0}.tb-booking-step-actions-end .tb-booking-next{flex:0 1 auto;width:100%}.tb-live-summary{padding:18px}.tb-live-summary-details{margin-bottom:9px}}
@media(max-width:380px){.tb-booking-progress-list li strong{font-size:8px}.tb-child-age-grid{grid-template-columns:1fr}.tb-booking-back,.tb-booking-next{width:100%;flex-basis:100%}}
.tb-booking-brand{display:flex;align-items:center;margin-bottom:15px}.tb-booking-brand img{display:block;max-width:170px;max-height:52px;width:auto;height:auto;object-fit:contain}

/* ========================================================================
   PHASE 1 — Customer booking micro-interactions & premium polish
   Visual-only layer: no pricing/payment rules are changed here.
   ======================================================================== */
.tb-booking-app{--tb-brand:#155eef;--tb-brand-dark:#004eeb;--tb-brand-soft:#eff6ff;--tb-ink:#0b1220;--tb-muted:#667085;--tb-line:#e4e7ec;--tb-focus:rgba(21,94,239,.16);background:linear-gradient(180deg,#fbfcff 0,#fff 28%,#fff 100%);border-radius:28px;padding-top:clamp(22px,4vw,42px);padding-bottom:clamp(28px,5vw,56px);isolation:isolate}
.tb-booking-app:before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,rgba(21,94,239,.18),transparent);pointer-events:none}
.tb-booking-header{position:relative;padding:0 4px}.tb-booking-brand{margin-bottom:22px}.tb-booking-brand img{max-width:190px;max-height:56px}
.tb-booking-eyebrow{padding:6px 10px;border:1px solid #dbe7ff;border-radius:999px;background:#f7faff;letter-spacing:.12em}
.tb-booking-eyebrow:before{width:6px;height:6px;box-shadow:0 0 0 4px rgba(21,94,239,.09)}
.tb-booking-header h1{max-width:780px;font-size:clamp(34px,5.2vw,52px);letter-spacing:-.045em;margin-top:13px}.tb-booking-header p{font-size:16px;max-width:700px}
.tb-booking-trustbar{background:#fff;box-shadow:0 6px 24px rgba(16,24,40,.035);padding:10px 13px}.tb-booking-trustbar span{gap:7px}.tb-booking-trustbar span b{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:#ecfdf3;color:#067647;font-size:10px}
.tb-booking-progress{position:relative;overflow:hidden;box-shadow:0 12px 34px rgba(16,24,40,.045);padding:15px 17px}.tb-booking-progress-list li{position:relative}.tb-booking-progress-list li span{box-shadow:0 1px 2px rgba(16,24,40,.04)}.tb-booking-progress-list li.is-active span{box-shadow:0 0 0 5px rgba(21,94,239,.09),0 5px 12px rgba(16,24,40,.12);background:var(--tb-brand);border-color:var(--tb-brand)}.tb-booking-progress-list li.is-complete span{font-size:0}.tb-booking-progress-list li.is-complete span:after{content:"✓";font-size:11px}.tb-booking-progress-bar{height:4px}.tb-booking-progress-bar span{background:linear-gradient(90deg,#155eef,#7c3aed,#12b76a)}
.tb-booking-layout{max-width:1080px;grid-template-columns:minmax(0,1fr) 350px;gap:24px}.tb-booking-sidebar{top:18px}
.tb-booking-card{border-color:#e7eaf0;box-shadow:0 14px 45px rgba(16,24,40,.05);transition:box-shadow .2s ease,border-color .2s ease}.tb-booking-card:hover{border-color:#dfe4ec;box-shadow:0 18px 52px rgba(16,24,40,.065)}
.tb-booking-section-title{margin-bottom:27px}.tb-booking-section-title>span{background:linear-gradient(135deg,#eff6ff,#eef2ff);border:1px solid #dbe7ff;box-shadow:inset 0 1px 0 #fff}.tb-booking-section-title h2{font-size:clamp(21px,2.5vw,26px)}
.tb-booking-card label{color:#344054}.tb-booking-card input,.tb-booking-card select,.tb-booking-card textarea{border-color:#cfd6e2;min-height:50px;border-radius:12px;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease,background .16s ease}.tb-booking-card input:hover,.tb-booking-card select:hover,.tb-booking-card textarea:hover{border-color:#b7c0cf}.tb-booking-card input:focus,.tb-booking-card select:focus,.tb-booking-card textarea:focus{border-color:var(--tb-brand);box-shadow:0 0 0 4px var(--tb-focus),0 2px 4px rgba(16,24,40,.04);transform:translateY(-1px)}
.tb-booking-season{display:flex;align-items:center;gap:9px;min-height:44px;background:linear-gradient(90deg,#f8fbff,#f8fafc);border-color:#e1e9f7}.tb-season-icon{display:grid;place-items:center;width:23px;height:23px;border-radius:7px;background:#eaf2ff;color:var(--tb-brand);font-size:8px;flex:0 0 23px}
.tb-package-option span{min-height:108px;padding:17px;border-color:#d6dce6;background:linear-gradient(180deg,#fff,#fbfcfe)}.tb-package-option span:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(21,94,239,.035),transparent 55%);opacity:0;transition:opacity .18s ease}.tb-package-option span:hover:before,.tb-package-option input:checked+span:before{opacity:1}.tb-package-option input:checked+span{border-color:var(--tb-brand);box-shadow:0 0 0 3px rgba(21,94,239,.09),0 10px 24px rgba(21,94,239,.08)}
.tb-package-option strong,.tb-payment-options strong{font-size:15px}.tb-package-option em,.tb-payment-options em{font-size:12px}
.tb-counter-grid>div{padding:15px;background:#fff;border-color:#e1e6ee;box-shadow:0 2px 8px rgba(16,24,40,.025)}.tb-counter{box-shadow:0 2px 6px rgba(16,24,40,.035);border-radius:11px}.tb-counter button{height:48px;border-color:#cfd6e2;font-weight:700}.tb-counter button:hover{background:#f5f8fc;color:var(--tb-brand);border-color:#aeb9c9}.tb-counter input{font-weight:800;font-size:15px;background:#fff}
.tb-booking-traveller{position:relative;padding:18px;border-color:#e2e7ee;transition:box-shadow .18s ease,border-color .18s ease,transform .18s ease}.tb-booking-traveller:focus-within{border-color:#c7d7f8;box-shadow:0 10px 28px rgba(16,24,40,.055);transform:translateY(-1px)}.tb-booking-traveller h3{display:flex;align-items:center;gap:8px}.tb-booking-traveller h3:before{content:"";width:7px;height:7px;border-radius:50%;background:#98a2b3}.tb-booking-traveller:has(.tb-lead-choice input:checked) h3:before{background:#12b76a;box-shadow:0 0 0 4px #ecfdf3}
.tb-trav-classification{min-height:50px;display:flex;align-items:center;background:#f8fafc;border-color:#e1e6ee}.tb-lead-choice{cursor:pointer;transition:.16s ease}.tb-lead-choice:hover{background:#eff6ff;border-color:#bfd4ff}.tb-lead-choice:has(input:checked){background:#ecfdf3;border-color:#abefc6;color:#067647!important}
.tb-booking-addon-list{background:linear-gradient(180deg,#fbfcfe,#fff);border-color:#e1e6ee}.tb-booking-addon-row{position:relative!important;min-height:64px;align-items:center!important;padding:13px 14px!important;border-radius:13px!important;background:#fff!important}.tb-booking-addon-row input{width:19px!important;height:19px!important;min-height:19px!important;margin:0!important;accent-color:var(--tb-brand)}.tb-booking-addon-row:has(input:checked){border-color:#bcd1fb!important;background:#f7faff!important;box-shadow:0 7px 18px rgba(21,94,239,.08)}.tb-booking-addon-row:has(input:checked):after{content:"Selected";margin-left:auto;padding:4px 7px;border-radius:999px;background:#eaf2ff;color:#155eef;font-size:9px;font-weight:800;letter-spacing:.02em}
.tb-booking-step-actions{margin-top:17px}.tb-booking-back,.tb-booking-next{min-height:50px;border-radius:12px;padding-inline:18px}.tb-booking-next{background:linear-gradient(180deg,#182230,#0b1220);box-shadow:0 9px 20px rgba(16,24,40,.15)}.tb-booking-next:hover:not(:disabled){background:linear-gradient(180deg,#253348,#101828);box-shadow:0 12px 25px rgba(16,24,40,.18)}.tb-booking-next:focus-visible,.tb-booking-back:focus-visible,.tb-booking-submit:focus-visible{outline:3px solid rgba(21,94,239,.22);outline-offset:3px}
.tb-payment-options label span{min-height:102px;padding:17px;border-color:#d6dce6}.tb-payment-options label span:before{content:"";position:absolute;right:14px;bottom:14px;width:7px;height:7px;border-radius:50%;background:#d0d5dd}.tb-payment-options input:checked+span:before{background:#12b76a;box-shadow:0 0 0 4px #ecfdf3}.tb-payment-options input:checked+span{border-color:var(--tb-brand);box-shadow:0 0 0 3px rgba(21,94,239,.09),0 10px 24px rgba(21,94,239,.07)}
.tb-payment-breakdown,.tb-booking-summary,.tb-booking-review{border-color:#e1e6ee}.tb-price-line{padding:8px 0}.tb-price-total{font-size:18px;padding-top:14px}.tb-booking-summary{box-shadow:inset 0 1px 0 #fff}.tb-booking-submit{min-height:58px;border-radius:13px;background:linear-gradient(135deg,#155eef,#004eeb);box-shadow:0 12px 26px rgba(21,94,239,.22);letter-spacing:-.01em}.tb-booking-submit:hover:not(:disabled){background:linear-gradient(135deg,#175cd3,#003bb8);box-shadow:0 15px 30px rgba(21,94,239,.25)}
.tb-terms{background:#fbfcfe;border-color:#e1e6ee}.tb-terms label{cursor:pointer}.tb-terms input[type=checkbox]{accent-color:var(--tb-brand)}
.tb-live-summary{background:radial-gradient(circle at 100% 0,rgba(124,58,237,.24),transparent 35%),linear-gradient(145deg,#111a2b,#0b1220 70%);border:1px solid rgba(255,255,255,.08);box-shadow:0 22px 55px rgba(16,24,40,.22);padding:23px}.tb-live-summary:before{height:3px;background:linear-gradient(90deg,#60a5fa,#a78bfa,#34d399)}.tb-live-summary h2{font-size:22px}.tb-live-lock{padding:5px 8px}.tb-live-detail{padding:10px 0}.tb-live-summary .tb-booking-summary{background:rgba(255,255,255,.065);border-color:rgba(255,255,255,.09);backdrop-filter:blur(8px)}
.tb-live-total-emphasis{display:flex;align-items:end;justify-content:space-between;gap:10px;margin-top:12px;padding-top:13px;border-top:1px solid rgba(255,255,255,.1)}.tb-live-total-emphasis span{font-size:10px;color:#98a2b3}.tb-live-total-emphasis strong{font-size:21px;letter-spacing:-.03em}
.tb-booking-step{animation:tbStepIn .28s ease both}.tb-booking-step[hidden]{display:none!important}@keyframes tbStepIn{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
.tb-booking-app.is-busy{cursor:progress}.tb-booking-app.is-busy .tb-booking-card{transition:none}.tb-booking-submit.is-processing{position:relative}.tb-booking-submit.is-processing:before{content:"";display:inline-block;width:15px;height:15px;margin-right:9px;vertical-align:-2px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:tbSpin .7s linear infinite}@keyframes tbSpin{to{transform:rotate(360deg)}}
.tb-field-error{border-color:#f04438!important;box-shadow:0 0 0 4px rgba(240,68,56,.10)!important}.tb-inline-error{display:block;margin-top:6px;color:#b42318;font-size:11px;font-weight:650}.tb-field-success{border-color:#12b76a!important;box-shadow:0 0 0 3px rgba(18,183,106,.08)!important}
.tb-booking-alert{box-shadow:0 8px 22px rgba(180,35,24,.07);position:relative}.tb-booking-alert:before{content:"!";display:inline-grid;place-items:center;width:20px;height:20px;margin-right:7px;border-radius:50%;background:#fee4e2;color:#b42318;font-weight:900;font-size:11px;vertical-align:-4px}
.tb-booking-success{border-color:#d7e8dd;box-shadow:0 22px 60px rgba(16,24,40,.10)}.tb-confirm-box{box-shadow:inset 0 1px 0 rgba(255,255,255,.8)}
@media(max-width:900px){.tb-booking-app{border-radius:20px}.tb-booking-layout{grid-template-columns:1fr}.tb-booking-sidebar{order:2;top:auto}.tb-live-summary{position:relative}.tb-booking-layout{gap:16px}}
@media(max-width:700px){.tb-booking-app{padding-left:12px;padding-right:12px}.tb-booking-header h1{font-size:clamp(31px,9vw,40px)}.tb-booking-header p{font-size:14px}.tb-booking-trustbar{padding:10px}.tb-booking-trustbar span{font-size:10px}.tb-booking-progress-list li strong{font-size:9px}.tb-booking-card{padding:18px}.tb-package-option span{min-height:92px}.tb-payment-options label span{min-height:92px}.tb-live-summary{padding:18px}.tb-booking-step-actions{gap:8px}}
@media(max-width:480px){.tb-booking-brand img{max-width:150px;max-height:46px}.tb-booking-trustbar{display:grid;grid-template-columns:1fr 1fr}.tb-booking-progress-list li strong{display:none}.tb-booking-progress-list li span{width:31px;height:31px}.tb-booking-progress{padding:11px 8px}.tb-booking-progress-bar{margin-top:10px}.tb-booking-card{border-radius:14px}.tb-booking-section-title{gap:10px}.tb-booking-section-title>span{width:31px;height:31px;flex-basis:31px;border-radius:9px}.tb-booking-step-actions .tb-booking-back,.tb-booking-step-actions .tb-booking-next{flex:1;width:auto}.tb-live-detail strong{max-width:58%}}
@media(prefers-reduced-motion:reduce){.tb-booking-step,.tb-booking-submit.is-processing:before{animation:none!important}.tb-booking-card,.tb-booking-next,.tb-package-option span,.tb-booking-traveller{transition:none!important}.tb-booking-progress-bar span{transition:none!important}}

/* Phase 2 — premium visual choice system */
.tb-visually-hidden{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}
.tb-choice-heading{display:flex;align-items:baseline;justify-content:space-between;gap:14px;margin:0 0 10px}.tb-choice-label{font-size:13px;font-weight:850;letter-spacing:-.01em;color:#101828}.tb-choice-hint{font-size:11px;color:#98a2b3;font-weight:600;line-height:1.4}.tb-departure-heading{margin-top:22px}
.tb-trip-card-grid,.tb-departure-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.tb-trip-card,.tb-departure-card,.tb-route-card{appearance:none;width:100%;border:1px solid #e4e7ec;background:#fff;color:#101828;text-align:left;border-radius:15px;padding:14px;display:flex;align-items:center;gap:12px;cursor:pointer;box-shadow:0 1px 2px rgba(16,24,40,.025);transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease,background .18s ease}.tb-trip-card:hover,.tb-departure-card:hover,.tb-route-card:hover{transform:translateY(-1px);border-color:#b8c3d6;box-shadow:0 8px 22px rgba(16,24,40,.07)}.tb-trip-card:focus-visible,.tb-departure-card:focus-visible,.tb-route-card:focus-visible{outline:3px solid rgba(29,78,216,.18);outline-offset:2px}.tb-trip-card.is-selected,.tb-departure-card.is-selected,.tb-route-card.is-selected{border-color:#1d4ed8;background:#f7faff;box-shadow:0 0 0 3px rgba(29,78,216,.08)}.tb-card-icon{width:38px;height:38px;display:grid;place-items:center;flex:0 0 38px;border-radius:11px;background:#eef4ff;color:#1d4ed8;font-size:16px}.tb-trip-card-copy,.tb-departure-copy{min-width:0;display:flex;flex-direction:column;gap:4px}.tb-trip-card-copy strong,.tb-departure-copy strong{font-size:13px;line-height:1.35;font-weight:800;overflow-wrap:anywhere}.tb-trip-card-copy small,.tb-departure-copy small{font-size:10px;color:#667085;line-height:1.35}.tb-card-arrow{margin-left:auto;color:#98a2b3;font-size:17px;transition:transform .18s ease,color .18s ease}.tb-trip-card.is-selected .tb-card-arrow,.tb-departure-card.is-selected .tb-card-arrow{color:#1d4ed8;transform:translateX(2px)}.tb-departure-calendar{width:44px;height:46px;flex:0 0 44px;border-radius:11px;background:#f8fafc;border:1px solid #eaecf0;display:flex;flex-direction:column;align-items:center;justify-content:center}.tb-departure-calendar b{font-size:11px;line-height:1.1}.tb-departure-calendar small{font-size:8px;color:#667085;font-weight:800;margin-top:3px}.tb-departure-card.is-disabled{cursor:not-allowed;background:#f8fafc;border-color:#eaecf0}
.tb-departure-card.is-disabled .tb-departure-calendar{background:#eef1f5;border-color:#e4e7ec}
.tb-departure-card.is-disabled .tb-departure-calendar b,.tb-departure-card.is-disabled .tb-departure-copy strong{color:#94a3b8;text-decoration:line-through;text-decoration-color:#c3cad6}
.tb-departure-card.is-disabled .tb-departure-calendar small,.tb-departure-card.is-disabled .tb-departure-copy small{color:#98a2b3}
.tb-departure-card.is-disabled .tb-card-arrow{color:#c3cad6}.tb-choice-empty{grid-column:1/-1;border:1px dashed #d0d5dd;border-radius:14px;padding:20px;text-align:center;background:#fcfcfd;color:#667085;display:flex;flex-direction:column;gap:4px}.tb-choice-empty strong{font-size:13px;color:#344054}.tb-choice-empty span{font-size:11px}
.tb-package-grid{margin-top:0}.tb-package-option span{min-height:108px;padding:17px}.tb-package-option em{font-size:11px}
.tb-counter-grid>div{padding:15px;background:linear-gradient(180deg,#fff,#fbfcfe)}.tb-counter-grid>div:nth-child(1){border-color:#dbeafe}.tb-counter-grid>div:nth-child(2){border-color:#e8eaf0}.tb-counter-grid>div:nth-child(3){border-color:#e7e9ee}.tb-counter button{font-weight:500}.tb-counter button:focus-visible{outline:3px solid rgba(29,78,216,.18);outline-offset:-3px;position:relative;z-index:1}.tb-counter input{font-weight:850;font-size:16px}
.tb-route-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.tb-route-choice{min-width:0}.tb-route-cards{display:grid;gap:8px}.tb-route-card{padding:11px 12px;border-radius:12px}.tb-route-card>span:nth-child(2){min-width:0;display:flex;flex-direction:column;gap:3px}.tb-route-card strong{font-size:12px;overflow-wrap:anywhere}.tb-route-card small{font-size:9px;color:#98a2b3}.tb-route-dot{width:10px;height:10px;border:3px solid #dbeafe;background:#1d4ed8;border-radius:50%;flex:0 0 10px}.tb-route-check{margin-left:auto;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:#ecfdf3;color:#067647;font-size:10px;opacity:0;transform:scale(.8);transition:.18s ease}.tb-route-card.is-selected .tb-route-check{opacity:1;transform:scale(1)}
.tb-booking-addon-list{padding:17px}.tb-addon-row{position:relative!important;display:grid!important;grid-template-columns:20px 1fr auto;align-items:center!important;gap:10px!important;margin:8px 0!important;padding:13px!important;border:1px solid #e4e7ec!important;border-radius:13px!important;background:#fff!important;cursor:pointer;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease,transform .18s ease}.tb-addon-row:hover{transform:translateY(-1px);box-shadow:0 7px 18px rgba(16,24,40,.06)}.tb-addon-row input{position:absolute!important;opacity:0!important;width:1px!important;height:1px!important;pointer-events:none}.tb-addon-checkmark{width:20px;height:20px;border:1.5px solid #cfd5df;border-radius:6px;display:grid;place-items:center;color:transparent;font-size:11px;font-weight:900;transition:.18s ease}.tb-addon-row:has(input:checked){border-color:#1d4ed8!important;background:#f7faff!important;box-shadow:0 0 0 3px rgba(29,78,216,.07)}.tb-addon-row:has(input:checked) .tb-addon-checkmark{border-color:#1d4ed8;background:#1d4ed8;color:#fff}.tb-addon-copy{min-width:0;display:flex;flex-direction:column;gap:3px}.tb-addon-copy strong{font-size:12px}.tb-addon-copy small{font-size:9px;color:#667085;line-height:1.35}.tb-addon-price{text-align:right;font-size:11px;font-weight:850;white-space:nowrap}.tb-addon-price small{display:block;font-size:8px;color:#98a2b3;font-weight:600;margin-top:2px}
.tb-booking-card fieldset>legend{font-size:13px;font-weight:850}.tb-booking-season{display:flex;align-items:center;gap:9px}.tb-season-icon{width:24px;height:24px;border-radius:8px;background:#eef4ff;color:#1d4ed8;display:grid;place-items:center;font-size:9px;flex:0 0 24px}
@media(max-width:760px){.tb-trip-card-grid,.tb-departure-grid{grid-template-columns:1fr}.tb-choice-heading{align-items:flex-start;flex-direction:column;gap:3px}.tb-route-grid{grid-template-columns:1fr}.tb-route-choice+ .tb-route-choice{margin-top:10px}.tb-departure-card{padding:12px}.tb-trip-card{padding:13px}}
@media(prefers-reduced-motion:reduce){.tb-trip-card,.tb-departure-card,.tb-route-card,.tb-card-arrow,.tb-route-check{transition:none!important}}


/* Phase 5 — secure quotation booking */
.tb-quotation-lock-banner{margin-top:18px;padding:14px 16px;border:1px solid #c7d7fe;background:#f5f8ff;border-radius:14px;display:flex;gap:10px;flex-direction:column}.tb-quotation-lock-banner strong{font-size:13px;color:#172033}.tb-quotation-lock-banner span{font-size:12px;color:#52607a}.tb-is-quotation-booking .tb-package-option,.tb-is-quotation-booking .tb-counter,.tb-is-quotation-booking .tb-payment-options label{opacity:.86}.tb-is-quotation-booking .tb-package-option{cursor:not-allowed}.tb-is-quotation-booking .tb-trip-card,.tb-is-quotation-booking .tb-departure-card,.tb-is-quotation-booking .tb-route-card{cursor:not-allowed}.tb-is-quotation-booking .tb-addon-row{cursor:not-allowed}.tb-is-quotation-booking .tb-counter button:disabled{opacity:.45}

/* v3.8.5 — explicit package availability */
.tb-package-option.is-unavailable{display:none!important}
.tb-package-child-unavailable{font-size:11px;color:#8a2c2c;font-weight:650}

.tb-traveller-start-card{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px;border:1px solid #dbeafe;border-radius:14px;background:linear-gradient(135deg,#f8fbff,#fff)}.tb-traveller-start-copy{display:flex;flex-direction:column;gap:5px}.tb-traveller-start-copy strong{font-size:13px;color:#172033}.tb-traveller-start-copy span{font-size:11px;color:#667085;line-height:1.5}.tb-traveller-count-badge{min-width:82px;padding:10px 12px;border-radius:12px;background:#fff;border:1px solid #dbeafe;text-align:center;display:flex;flex-direction:column;line-height:1.1}.tb-traveller-count-badge strong{font-size:20px;color:#1d4ed8}.tb-traveller-count-badge span{font-size:10px;color:#667085;margin-top:4px}.tb-traveller-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}.tb-traveller-head h3{margin:0}.tb-remove-traveller{border:0;background:transparent;color:#b42318;font-size:11px;font-weight:700;cursor:pointer;padding:5px 2px}.tb-add-traveller-wrap{display:flex;align-items:center;gap:12px;margin-top:12px;flex-wrap:wrap}.tb-add-traveller{border:1px solid #c7d7fe;background:#f5f8ff;color:#1d4ed8;border-radius:10px;padding:10px 14px;font-size:12px;font-weight:800;cursor:pointer}.tb-add-traveller:hover{background:#eef4ff}.tb-add-traveller:disabled{opacity:.45;cursor:not-allowed}.tb-booking-traveller .tb-trav-classification{min-height:42px;display:flex;align-items:center}.tb-booking-app .tb-counter-grid{display:none!important}
@media(max-width:700px){.tb-traveller-start-card{align-items:flex-start}.tb-traveller-count-badge{min-width:72px}.tb-add-traveller-wrap{align-items:flex-start;flex-direction:column}}


/* v3.8.23 — Premium customer booking UI overhaul */
.tb-booking-app{
  --tb-ink:#0f172a;--tb-muted:#64748b;--tb-line:#e2e8f0;--tb-soft:#f8fafc;
  --tb-brand:#0f6b4f;--tb-brand-dark:#094f3a;--tb-accent:#d8f3e6;--tb-gold:#b8872c;
  max-width:1240px;margin:0 auto;padding:clamp(24px,4vw,56px) clamp(14px,3vw,28px) 70px;
  background:radial-gradient(circle at 12% 2%,rgba(216,243,230,.55),transparent 30%),radial-gradient(circle at 92% 5%,rgba(224,231,255,.45),transparent 28%);
}
.tb-booking-header{max-width:1120px;margin:0 auto 24px;padding:clamp(20px,3vw,34px) clamp(18px,3vw,30px);border:1px solid rgba(226,232,240,.9);border-radius:26px;background:linear-gradient(135deg,rgba(255,255,255,.98),rgba(248,250,252,.94));box-shadow:0 18px 60px rgba(15,23,42,.07);position:relative;overflow:hidden}
.tb-booking-header:after{content:"";position:absolute;right:-70px;top:-80px;width:220px;height:220px;border-radius:50%;background:radial-gradient(circle,rgba(15,107,79,.13),rgba(15,107,79,0) 68%);pointer-events:none}
.tb-booking-brand img{max-height:54px;width:auto;display:block;margin:0 0 16px}
.tb-booking-eyebrow{color:var(--tb-brand);font-size:10px;letter-spacing:.18em;font-weight:900;padding:7px 10px;border:1px solid #cde9db;border-radius:999px;background:#f3fbf6}
.tb-booking-eyebrow:before{width:6px;height:6px;box-shadow:0 0 0 5px rgba(15,107,79,.08)}
.tb-booking-header h1{font-size:clamp(34px,5vw,56px);line-height:1.01;letter-spacing:-.048em;margin:14px 0 10px;max-width:760px;color:#123a2d}
.tb-booking-header p{font-size:15px;line-height:1.7;max-width:700px;color:#64748b}
.tb-quotation-lock-banner{border-color:#bfe3cf;background:linear-gradient(135deg,#f3fbf6,#f8fcfa);box-shadow:inset 3px 0 0 #0f6b4f}
.tb-booking-progress{max-width:1120px;margin:0 auto 24px;padding:18px 18px 15px;border-radius:20px;background:rgba(255,255,255,.94);border-color:#e2e8f0;box-shadow:0 14px 42px rgba(15,23,42,.06);position:sticky;top:12px;z-index:15;backdrop-filter:blur(14px)}
.tb-booking-progress-list{gap:8px}
.tb-booking-progress-list li{gap:7px;color:#94a3b8}
.tb-booking-progress-list li span{width:36px;height:36px;background:#f8fafc;border-color:#e2e8f0;color:#64748b;font-size:12px}
.tb-booking-progress-list li.is-active span{background:var(--tb-brand);border-color:var(--tb-brand);box-shadow:0 0 0 6px rgba(15,107,79,.10)}
.tb-booking-progress-list li.is-complete span{background:#ecfdf3;border-color:#a7f3d0;color:#047857}
.tb-booking-progress-bar{height:4px;background:#edf2f7;margin:16px 2px 7px}.tb-booking-progress-bar span{background:linear-gradient(90deg,#0f6b4f,#33a274,#8ac7aa)}
.tb-booking-step-count{font-size:10px;letter-spacing:.02em;color:#94a3b8}
.tb-booking-layout{max-width:1120px;grid-template-columns:minmax(0,1fr) 350px;gap:24px}
.tb-booking-card{border-radius:22px;padding:clamp(20px,3vw,32px);border-color:#e2e8f0;box-shadow:0 18px 50px rgba(15,23,42,.055)}
.tb-booking-section-title{margin-bottom:28px;gap:14px}.tb-booking-section-title>span{width:38px;height:38px;flex-basis:38px;border-radius:12px;background:#e9f7ef;color:#0f6b4f;border:1px solid #cde9db}.tb-booking-section-title h2{font-size:clamp(22px,2.5vw,28px);letter-spacing:-.03em;color:#132c23}.tb-booking-section-title p{font-size:12px;color:#708090}
.tb-choice-heading{margin:0 0 12px;padding:0 2px}.tb-choice-label{font-size:13px;color:#132c23}.tb-choice-hint{color:#94a3b8}
.tb-trip-card-grid,.tb-departure-grid{gap:12px}.tb-trip-card,.tb-departure-card{border-radius:17px;padding:15px;border-color:#e2e8f0;min-height:78px}.tb-trip-card:hover,.tb-departure-card:hover{border-color:#b9d9c8;box-shadow:0 12px 30px rgba(15,23,42,.08);background:#fcfffd}.tb-trip-card.is-selected,.tb-departure-card.is-selected{border-color:#0f6b4f;background:#f4fbf7;box-shadow:0 0 0 3px rgba(15,107,79,.09),0 12px 30px rgba(15,23,42,.06)}
.tb-card-icon{width:42px;height:42px;flex-basis:42px;border-radius:13px;background:#eef8f2;color:#0f6b4f}.tb-departure-calendar{width:48px;height:50px;flex-basis:48px;border-radius:13px;background:#f8fafc}
.tb-package-grid{gap:14px}.tb-package-option span{min-height:124px;border-radius:18px;padding:18px;border-color:#dce5e0;background:linear-gradient(180deg,#fff,#fbfefc)}.tb-package-option span:before{color:#94a3b8;letter-spacing:.16em}.tb-package-option input:checked+span{border-color:#0f6b4f;background:linear-gradient(180deg,#f7fcf9,#eef9f3);box-shadow:0 0 0 3px rgba(15,107,79,.08),0 14px 28px rgba(15,23,42,.05)}.tb-package-option input:checked+span:before{color:#0f6b4f}.tb-package-option strong{font-size:15px}.tb-package-option em{font-size:11px;color:#667085}
.tb-traveller-start-card{padding:18px 19px;border-radius:17px;border-color:#cde9db;background:linear-gradient(135deg,#f3fbf6,#fff);box-shadow:0 8px 20px rgba(15,23,42,.03)}.tb-traveller-count-badge{border-color:#cde9db;border-radius:13px}.tb-traveller-count-badge strong{color:#0f6b4f}
.tb-booking-traveller{padding:18px;border-radius:18px;border-color:#e2e8f0;box-shadow:0 8px 24px rgba(15,23,42,.035)}.tb-booking-traveller:focus-within{border-color:#afd3c0;box-shadow:0 14px 34px rgba(15,23,42,.07),0 0 0 3px rgba(15,107,79,.05);transform:translateY(-1px)}.tb-booking-traveller h3{font-size:14px;color:#17362a}.tb-trav-classification{border-color:#dce8e1;background:#f8fbf9;color:#365447}.tb-lead-choice{background:#f3fbf6;border-color:#cde9db;color:#0f6b4f!important}
.tb-add-traveller{border-color:#abd6bc;background:#f0faf4;color:#0f6b4f;border-radius:12px;padding:12px 16px;box-shadow:0 5px 14px rgba(15,107,79,.06)}.tb-add-traveller:hover{background:#e6f7ed;transform:translateY(-1px)}
.tb-booking-card input,.tb-booking-card select,.tb-booking-card textarea{min-height:50px;border-radius:12px;border-color:#d7dee7;padding:13px 14px}.tb-booking-card input:focus,.tb-booking-card select:focus,.tb-booking-card textarea:focus{border-color:#7fb79b;box-shadow:0 0 0 4px rgba(15,107,79,.10)}
.tb-route-grid{gap:16px}.tb-route-card{border-radius:14px;padding:13px 14px}.tb-route-card.is-selected{border-color:#0f6b4f;background:#f5fbf7}.tb-route-dot{border-color:#d5ede0;background:#0f6b4f}.tb-route-card.is-selected .tb-route-check{background:#e9f8ef;color:#067647}
.tb-booking-addon-list{padding:18px;border-radius:17px;border-color:#e2e8f0;background:#fbfcfd}.tb-addon-row{padding:14px 15px!important;border-radius:14px!important}.tb-addon-row:has(input:checked){border-color:#0f6b4f!important;background:#f5fbf7!important;box-shadow:0 0 0 3px rgba(15,107,79,.06)}.tb-addon-row:has(input:checked) .tb-addon-checkmark{background:#0f6b4f;border-color:#0f6b4f}
.tb-booking-step-actions{margin-top:18px}.tb-booking-next,.tb-booking-submit{border:0;border-radius:13px!important;background:linear-gradient(135deg,#0f6b4f,#0b5b43)!important;box-shadow:0 12px 24px rgba(15,107,79,.18)!important;color:#fff!important;min-height:50px;padding:0 20px;font-weight:850}.tb-booking-next:hover,.tb-booking-submit:hover{transform:translateY(-1px);box-shadow:0 16px 28px rgba(15,107,79,.22)!important}.tb-booking-back{border-radius:12px!important;min-height:48px;padding:0 16px;background:#fff!important;color:#475569!important;border:1px solid #d8e0e8!important}
.tb-booking-sidebar{position:sticky;top:108px}.tb-live-summary{border-radius:22px;background:linear-gradient(180deg,#102b20,#0f3b2b);color:#fff;box-shadow:0 18px 48px rgba(15,23,42,.18);overflow:hidden;border:1px solid rgba(255,255,255,.08)}.tb-live-summary:before{content:"";display:block;height:5px;background:linear-gradient(90deg,#79c69c,#d6b35e,#79c69c)}.tb-live-summary-top{padding:22px 22px 0}.tb-live-kicker{color:#9fe0bc;font-size:9px;letter-spacing:.17em}.tb-live-lock{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.12);color:#d7f5e4}.tb-live-summary h2{padding:0 22px;margin:8px 0 4px;color:#fff;font-size:23px;letter-spacing:-.02em}.tb-live-placeholder{padding:0 22px;color:#bfd2c9}.tb-live-summary-details,.tb-booking-summary{margin:0 22px}.tb-live-detail{padding:12px 0;border-bottom:1px solid rgba(255,255,255,.10)}.tb-live-detail span{color:#9eb7aa}.tb-live-detail strong{color:#fff}.tb-summary-empty{padding:14px;border:1px dashed rgba(255,255,255,.18);border-radius:12px;color:#bdd0c6;background:rgba(255,255,255,.04)}.tb-live-secure-note{margin:18px 22px 22px;padding:12px 13px;border-radius:13px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.08)}.tb-live-secure-note strong{color:#fff}.tb-live-secure-note small{color:#b8cdc2}
.tb-booking-success{max-width:1120px;margin:24px auto 0;border-radius:22px}
@media(max-width:980px){.tb-booking-layout{grid-template-columns:1fr}.tb-booking-sidebar{position:static;order:-1}.tb-live-summary{margin-bottom:4px}}
@media(max-width:700px){.tb-booking-app{padding-top:14px}.tb-booking-header{border-radius:20px}.tb-booking-progress{position:static;padding:13px 10px}.tb-booking-progress-list li strong{display:none}.tb-booking-progress-list li span{width:32px;height:32px}.tb-booking-layout{gap:14px}.tb-booking-card{border-radius:18px}.tb-trip-card-grid,.tb-departure-grid,.tb-package-grid{grid-template-columns:1fr}.tb-two-col{grid-template-columns:1fr}.tb-booking-header h1{font-size:36px}.tb-booking-step-actions{position:sticky;bottom:10px;z-index:10;padding:8px;border-radius:16px;background:rgba(255,255,255,.92);backdrop-filter:blur(12px);box-shadow:0 10px 30px rgba(15,23,42,.10)} }
@media(prefers-reduced-motion:reduce){.tb-trip-card,.tb-departure-card,.tb-booking-traveller,.tb-add-traveller,.tb-booking-next,.tb-booking-submit{transform:none!important;transition:none!important}}


/* v3.8.24 — Phase 12 responsive premium booking layout
 * Mobile order is intentionally: booking flow first, Booking Summary second.
 * Desktop retains the two-column form + live summary composition.
 */
.tb-booking-app{overflow:visible}
.tb-booking-layout{align-items:start}
.tb-booking-sidebar{min-width:0}
.tb-live-summary{position:relative}
.tb-live-summary h2{font-weight:850}
.tb-live-detail{display:grid;grid-template-columns:92px minmax(0,1fr);gap:12px;align-items:start}
.tb-live-detail strong{overflow-wrap:anywhere}
.tb-booking-summary{margin-top:4px}
.tb-summary-empty{line-height:1.5}

@media(max-width:980px){
  .tb-booking-layout{grid-template-columns:1fr;display:flex;flex-direction:column;}
  .tb-booking-layout > form{order:1;min-width:0;width:100%;}
  .tb-booking-layout > .tb-booking-sidebar{order:2;width:100%;}
  .tb-booking-sidebar{position:static;}
  .tb-live-summary{width:100%;}
}

@media(max-width:700px){
  .tb-booking-app{width:100%;padding-left:10px;padding-right:10px;padding-bottom:36px;}
  .tb-booking-header{margin-bottom:14px;padding:18px 16px;border-radius:18px;}
  .tb-booking-brand img{max-width:180px;max-height:46px;margin-bottom:12px}
  .tb-booking-header h1{font-size:clamp(30px,9vw,38px);max-width:100%;}
  .tb-booking-header p{font-size:13px;line-height:1.55}
  .tb-booking-progress{margin-bottom:14px;border-radius:16px;padding:11px 8px;box-shadow:0 8px 24px rgba(15,23,42,.05)}
  .tb-booking-progress-list{grid-template-columns:repeat(6,1fr);gap:2px}
  .tb-booking-progress-list li span{width:30px;height:30px;font-size:11px}
  .tb-booking-progress-bar{margin-top:11px}
  .tb-booking-card{padding:17px 14px;border-radius:17px;box-shadow:0 10px 28px rgba(15,23,42,.045)}
  .tb-booking-section-title{gap:10px;margin-bottom:20px}
  .tb-booking-section-title>span{width:34px;height:34px;flex-basis:34px}
  .tb-booking-section-title h2{font-size:21px}
  .tb-booking-section-title p{font-size:11px}
  .tb-trip-card,.tb-departure-card{padding:13px;min-height:70px}
  .tb-package-option span{min-height:104px;padding:15px}
  .tb-booking-traveller{padding:15px;margin-bottom:10px}
  .tb-booking-traveller .tb-two-col{grid-template-columns:1fr}
  .tb-booking-step-actions{position:sticky;bottom:8px;z-index:20;margin:12px -4px 0;padding:8px;border:1px solid rgba(226,232,240,.9);border-radius:15px;background:rgba(255,255,255,.94);backdrop-filter:blur(14px);box-shadow:0 10px 28px rgba(15,23,42,.12)}
  .tb-booking-step-actions button{min-height:46px}
  /* iOS Safari auto-zooms the whole page on focus for any input under
     16px, which feels like the page is "broken" every time a field is
     tapped. Every text field, select and textarea gets bumped to 16px
     on mobile only - desktop keeps its original 14px. */
  .tb-booking-card input,.tb-booking-card select,.tb-booking-card textarea,.tb-balance-amount-label input{font-size:16px}
  /* The sticky Back/Continue bar works well for short, fixed-height
     steps, but Traveller Details (unbounded travellers) and Pickup/
     Drop & Add-ons (unbounded add-ons) can both grow arbitrarily long -
     on those two, a permanently-floating bar ends up covering whatever
     field the user is currently scrolling past. Falling back to normal
     (static) flow for just these two steps means the buttons simply
     sit at the true end of the content, like every other step does
     once its content ends anyway. */
  .tb-booking-step[data-step="3"] .tb-booking-step-actions,
  .tb-booking-step[data-step="4"] .tb-booking-step-actions{position:static;bottom:auto;backdrop-filter:none}
  .tb-booking-sidebar{margin-top:4px}
  .tb-live-summary{border-radius:18px;box-shadow:0 14px 34px rgba(15,23,42,.14)}
  .tb-live-summary-top{padding:18px 17px 0}
  .tb-live-summary h2{font-size:21px;padding:0 17px}
  .tb-live-placeholder{padding:0 17px;font-size:12px;line-height:1.55}
  .tb-live-summary-details,.tb-booking-summary{margin-left:17px;margin-right:17px}
  .tb-live-detail{grid-template-columns:78px minmax(0,1fr);gap:8px;padding:11px 0;font-size:12px}
  .tb-live-secure-note{margin:14px 17px 17px}
}

@media(min-width:981px){
  .tb-booking-sidebar{position:sticky;top:108px;align-self:start}
  /* If the summary's own content is taller than the space remaining
     below its sticky offset, it scrolls within itself instead of
     silently running out of the viewport. Without this, a sticky item
     taller than its available scroll range can end up with a bottom
     portion that never becomes reachable - it and its grid row scroll
     out of view together before the page has scrolled far enough to
     reveal it. This keeps every price line reachable regardless of
     how many travellers, add-ons, or tax lines are in the summary. */
  .tb-live-summary{max-height:calc(100vh - 132px);overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
  .tb-live-summary::-webkit-scrollbar{width:6px}
  .tb-live-summary::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);border-radius:99px}
  .tb-live-summary::-webkit-scrollbar-track{background:transparent}
}

/* ========================================================================
   Balance Payment page (#tb-qe-balance-app) — premium standalone card
   ======================================================================== */
.tb-balance-app-wrap{max-width:640px}
.tb-balance-card{background:#fff;border:1px solid var(--tb-line,#e4e7ec);border-radius:22px;padding:clamp(24px,4vw,40px);box-shadow:0 18px 50px rgba(16,24,40,.08);position:relative}
.tb-balance-card .tb-booking-eyebrow{margin-bottom:14px}
.tb-balance-card h1{margin:0 0 10px;font-size:clamp(24px,4vw,32px);line-height:1.15;letter-spacing:-.03em;font-weight:800;color:#0b1220}
.tb-balance-lead{margin:0 0 22px;color:#667085;font-size:14px;line-height:1.6}
.tb-balance-summary-table{width:100%;border-collapse:collapse;margin:0 0 24px;font-size:13px}
.tb-balance-summary-table td{padding:10px 0;border-bottom:1px solid #f2f4f7;vertical-align:top}
.tb-balance-summary-table td:first-child{color:#667085;width:46%}
.tb-balance-summary-table td:last-child{font-weight:750;color:#101828;text-align:right}
.tb-balance-summary-table tr.tb-balance-row-emphasis td{font-size:16px;font-weight:850;color:#155eef;border-bottom-color:#dbe7ff}
.tb-balance-amount-label{display:block;font-size:12px;font-weight:750;color:#344054;margin:4px 0 0}
.tb-balance-amount-label input{display:block;width:100%;margin-top:7px;border:1.5px solid #cfd6e2;border-radius:12px;background:#fff;color:#0b1220;padding:13px 14px;font:inherit;font-size:17px;font-weight:800;min-height:52px;transition:border-color .16s ease,box-shadow .16s ease}
.tb-balance-amount-label input:focus{outline:none;border-color:#155eef;box-shadow:0 0 0 4px rgba(21,94,239,.14)}
.tb-balance-card .tb-field-help{margin:8px 0 22px}
.tb-balance-card .tb-booking-submit{margin-top:0}
.tb-balance-card .tb-booking-alert{margin:0 0 18px}
.tb-balance-card-error{text-align:center;padding:clamp(32px,6vw,52px) clamp(24px,4vw,40px)}
.tb-balance-icon{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;margin:0 auto 18px;font-size:24px;font-weight:900}
.tb-balance-icon-error{background:#fef3f2;color:#b42318;border:1px solid #fecdca}
.tb-balance-card-error h1{font-size:22px}
.tb-balance-card-error p{color:#667085;font-size:14px;line-height:1.6;max-width:420px;margin:0 auto}
@media(max-width:600px){.tb-balance-card{border-radius:16px}.tb-balance-summary-table td:first-child,.tb-balance-summary-table td:last-child{font-size:12px}}

/* ========================================================================
   Selected-state colour (Trip / Date / Package) + accordion collapse.
   A dedicated --tb-select variable is used here rather than --tb-brand so
   this change is scoped to "this option is chosen" state only, and never
   touches buttons, links, or focus rings, which keep their own colour.
   Placed last in the file so it wins over the earlier blue/green rules
   without needing !important anywhere.
   ======================================================================== */
.tb-booking-app{--tb-select:#ea580c;--tb-select-dark:#c2410c;--tb-select-soft:#fff2e9;--tb-select-line:#fdd8b8}

.tb-trip-card.is-selected,.tb-departure-card.is-selected{
  border-color:var(--tb-select)!important;
  background:var(--tb-select-soft)!important;
  box-shadow:0 0 0 3px var(--tb-select-line),0 10px 24px rgba(234,88,12,.10)!important;
}
.tb-trip-card.is-selected .tb-card-icon{background:var(--tb-select-soft);color:var(--tb-select)}
.tb-trip-card.is-selected .tb-trip-card-copy strong,.tb-departure-card.is-selected .tb-departure-copy strong{color:#7c2d12}
.tb-trip-card.is-selected .tb-card-arrow,.tb-departure-card.is-selected .tb-card-arrow{color:var(--tb-select)!important}
.tb-departure-card.is-selected .tb-departure-calendar{background:var(--tb-select-soft);border-color:var(--tb-select-line)}
.tb-departure-card.is-selected .tb-departure-calendar b{color:#7c2d12}

.tb-package-option input:checked+span{
  border-color:var(--tb-select)!important;
  background:var(--tb-select-soft)!important;
  box-shadow:0 0 0 3px var(--tb-select-line),0 10px 24px rgba(234,88,12,.09)!important;
}
.tb-package-option input:checked+span:before{background:linear-gradient(135deg,rgba(234,88,12,.06),transparent 55%)!important;opacity:1!important}
.tb-package-option input:checked+span:after{background:var(--tb-select)!important}

/* Accordion collapse: once a choice is made, the grid hides every card
   except the selected one and a "Change" button appears. Nothing here
   touches the JS selection logic - it only reacts to the same
   .is-selected / .is-collapsed classes the JS already toggles, so if
   the collapsed state is ever removed, every card simply reappears. */
.tb-choice-change-btn{display:none;appearance:none;border:1px solid var(--tb-select-line);background:var(--tb-select-soft);color:var(--tb-select-dark);font-size:11px;font-weight:800;border-radius:999px;padding:6px 13px;cursor:pointer;white-space:nowrap}
.tb-choice-change-btn:hover{background:var(--tb-select-line)}
.tb-trip-card-grid.is-collapsed .tb-trip-card:not(.is-selected),
.tb-departure-grid.is-collapsed .tb-departure-card:not(.is-selected){display:none}
.tb-trip-card-grid.is-collapsed,.tb-departure-grid.is-collapsed{grid-template-columns:1fr}
.tb-trip-card-grid.is-collapsed .tb-trip-card.is-selected,
.tb-departure-grid.is-collapsed .tb-departure-card.is-selected{cursor:default}
.is-collapsed ~ .tb-choice-change-btn,.tb-choice-heading .tb-choice-change-btn.is-visible{display:inline-flex;align-items:center}
