/* Scoped styles deliberately avoid changing WordPress, Blocksy, article or sidebar styles. */
.ttt-tbc {
    --ttt-tbc-ink: #1b3440;
    --ttt-tbc-muted: #5d7078;
    --ttt-tbc-accent: var(--theme-palette-color-1, #197d82);
    --ttt-tbc-accent-dark: #14676d;
    --ttt-tbc-border: #dce5e6;
    --ttt-tbc-soft: #f3f7f7;
    --ttt-tbc-warm: #fff7e8;
    color: var(--ttt-tbc-ink);
    font-size: 16px;
    line-height: 1.6;
    width: 100%;
    max-width: 1200px;
    margin: 1.5rem auto 2.5rem;
    isolation: isolate;
}
.ttt-tbc *, .ttt-tbc *::before, .ttt-tbc *::after { box-sizing: border-box; }
.ttt-tbc [hidden] { display: none !important; }
.ttt-tbc h2, .ttt-tbc h3, .ttt-tbc p { margin: 0; }
.ttt-tbc h2 { color: inherit; font-size: clamp(1.7rem, 3vw, 2.45rem); line-height: 1.18; letter-spacing: -.025em; }
.ttt-tbc h3 { color: inherit; font-size: 1.12rem; line-height: 1.35; }
.ttt-tbc__hero {
    display: flex; align-items: center; justify-content: space-between; gap: 26px;
    color: #fff; background: linear-gradient(126deg, #172f3d, #28626a);
    border-radius: 22px 22px 0 0; padding: clamp(23px, 4vw, 39px);
}
.ttt-tbc__hero h2 { color: white; margin-bottom: 10px; }
.ttt-tbc__eyebrow { color: #bde0dc; font-size: .72rem; text-transform: uppercase; letter-spacing: .13em; font-weight: 800; margin-bottom: 11px !important; }
.ttt-tbc__hero-copy { max-width: 670px; color: #e4f0ed; font-size: 1rem; }
.ttt-tbc__hero-chip {
    flex: 0 0 125px; width: 125px; height: 125px; border: 1px solid rgba(255,255,255,.43); border-radius: 50%;
    display: grid; place-content: center; text-align: center; font-size: .92rem; background: rgba(255,255,255,.07);
}
.ttt-tbc__hero-chip strong { font-size: 1.2rem; color: #fff; }
.ttt-tbc__layout { display: grid; grid-template-columns: minmax(0, 1.16fr) minmax(320px, .84fr); border: 1px solid var(--ttt-tbc-border); border-top: 0; background: #fff; }
.ttt-tbc__controls { min-width: 0; padding: clamp(20px, 3vw, 34px); }
.ttt-tbc__section-head { display: flex; gap: 13px; align-items: flex-start; margin-bottom: 22px; }
.ttt-tbc__section-head h3 { margin: 1px 0 3px; font-size: 1.25rem; }
.ttt-tbc__section-head p { font-size: .88rem; color: var(--ttt-tbc-muted); }
.ttt-tbc__section-head--secondary { margin-top: 36px; }
.ttt-tbc__step { display: inline-grid; place-content: center; height: 32px; min-width: 32px; border-radius: 50%; background: #e3f1ef; color: #1a676b; font-weight: 800; font-size: .78rem; }
.ttt-tbc__fields-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 15px; row-gap: 15px; }
.ttt-tbc__field { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.ttt-tbc__field--full { margin-bottom: 16px; }
.ttt-tbc label { display: block; color: var(--ttt-tbc-ink); font-weight: 730; font-size: .88rem; line-height: 1.45; margin: 0; }
.ttt-tbc input[type="number"], .ttt-tbc select {
    border: 1px solid #bdcbd0; border-radius: 10px; background-color: #fff; color: #172f3d;
    font: inherit; font-size: .96rem; height: 45px; padding: 0 11px; width: 100%; margin: 0;
    box-shadow: none; appearance: auto;
}
.ttt-tbc input:focus-visible, .ttt-tbc select:focus-visible, .ttt-tbc button:focus-visible, .ttt-tbc a:focus-visible {
    outline: 3px solid #e3aa60; outline-offset: 2px;
}
.ttt-tbc__hint { display: block; font-size: .76rem; line-height: 1.42; font-weight: 400; color: var(--ttt-tbc-muted); }
.ttt-tbc__sample-notice { border-left: 4px solid #c78c33; border-radius: 0 9px 9px 0; padding: 11px 13px; background: var(--ttt-tbc-warm); font-size: .82rem; line-height: 1.55; color: #6e4e1e; margin: 0 0 19px; }
.ttt-tbc__rate-fields { border-top: 1px solid var(--ttt-tbc-border); }
.ttt-tbc__rate-field { display: flex; align-items: center; justify-content: space-between; gap: 15px; padding: 11px 0; border-bottom: 1px solid var(--ttt-tbc-border); }
.ttt-tbc__rate-field > div:first-child { flex: 1 1 auto; min-width: 0; }
.ttt-tbc__rate-field label { margin-bottom: 4px; }
.ttt-tbc__money-input { display: inline-flex; align-items: center; border: 1px solid #bdcbd0; border-radius: 10px; overflow: hidden; background: #fff; min-width: 135px; max-width: 190px; flex: 0 0 145px; height: 44px; }
.ttt-tbc__money-input:focus-within { outline: 3px solid #e3aa60; outline-offset: 2px; }
.ttt-tbc__money-input span { font-size: .75rem; font-weight: 800; color: #5d7078; padding: 0 9px; }
.ttt-tbc .ttt-tbc__money-input input[type="number"] { width: 100%; min-width: 0; height: 100%; border: 0; padding: 0 9px 0 2px; border-radius: 0; outline: 0; box-shadow: none; }
.ttt-tbc__contingency-row { display: flex; align-items: center; justify-content: space-between; gap: 15px; margin-top: 24px; padding: 15px; border-radius: 11px; background: var(--ttt-tbc-soft); }
.ttt-tbc__contingency-row > div:first-child { flex: 1; min-width: 0; }
.ttt-tbc__contingency-row label { margin-bottom: 4px; }
.ttt-tbc__contingency-row .ttt-tbc__money-input { flex-basis: 115px; min-width: 115px; }
.ttt-tbc__actions { display: flex; flex-wrap: wrap; gap: 9px; }
.ttt-tbc__actions--controls { margin-top: 19px; }
.ttt-tbc button.ttt-tbc__button { border: 1px solid transparent; border-radius: 9px; padding: 11px 15px; font: inherit; font-size: .83rem; line-height: 1.3; font-weight: 750; cursor: pointer; text-align: center; height: auto; min-height: 41px; text-transform: none; letter-spacing: normal; }
.ttt-tbc button.ttt-tbc__button:hover { filter: brightness(.96); transform: none; }
.ttt-tbc button.ttt-tbc__button--primary { color: #fff; background: var(--ttt-tbc-accent-dark); border-color: var(--ttt-tbc-accent-dark); }
.ttt-tbc button.ttt-tbc__button--secondary { color: #145e64; background: #eaf5f2; border-color: #bbd9d7; }
.ttt-tbc button.ttt-tbc__button--ghost { color: #4d636c; background: #fff; border-color: #cad9db; }
.ttt-tbc__results { align-self: stretch; min-width: 0; background: #f5f9f9; border-left: 1px solid var(--ttt-tbc-border); padding: clamp(20px, 3vw, 32px); }
.ttt-tbc__results-heading { display: flex; align-items: center; gap: 9px; color: #48666c; text-transform: uppercase; font-size: .7rem; font-weight: 800; letter-spacing: .1em; }
.ttt-tbc__dot { height: 9px; width: 9px; border-radius: 50%; background: #218b87; }
.ttt-tbc__headline { color: #173b45; font-size: clamp(2.15rem, 4vw, 3rem); font-weight: 850; letter-spacing: -.055em; line-height: 1.18; margin: 9px 0 6px; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
.ttt-tbc__results-subline { color: #526a72; font-size: .78rem; line-height: 1.55; }
.ttt-tbc__stat-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 11px; margin-top: 23px; }
.ttt-tbc__stat-grid > div { padding: 13px; border-radius: 10px; background: white; border: 1px solid #dfe8e7; min-width: 0; }
.ttt-tbc__stat-grid span { display: block; color: #5b7277; font-size: .69rem; line-height: 1.4; margin-bottom: 5px; }
.ttt-tbc__stat-grid strong { color: #1b444c; font-size: clamp(1rem, 2vw, 1.25rem); letter-spacing: -.025em; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.ttt-tbc__breakdown-heading { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-top: 31px; margin-bottom: 15px; }
.ttt-tbc__breakdown-heading h3 { font-size: 1.08rem; }
.ttt-tbc__breakdown-heading span { color: #708087; font-size: .69rem; }
.ttt-tbc__breakdown { display: grid; gap: 12px; }
.ttt-tbc__breakdown-copy { display: flex; justify-content: space-between; gap: 13px; font-size: .78rem; }
.ttt-tbc__breakdown-copy span { color: #435d63; }
.ttt-tbc__breakdown-copy strong { color: #1c3b46; font-size: .81rem; font-weight: 770; font-variant-numeric: tabular-nums; }
.ttt-tbc__bar-track { height: 5px; overflow: hidden; border-radius: 99px; background: #dfebeb; margin-top: 5px; }
.ttt-tbc__bar { display: block; background: #4d9d94; height: 100%; border-radius: 99px; transition: width .16s ease-out; }
.ttt-tbc__totals { display: grid; gap: 9px; margin: 23px 0 0; padding-top: 16px; border-top: 1px solid #d7e4e5; font-size: .86rem; }
.ttt-tbc__totals div { display: flex; justify-content: space-between; gap: 10px; }
.ttt-tbc__totals dt { font-weight: 500; color: #446168; }
.ttt-tbc__totals dd { margin: 0; font-weight: 700; font-variant-numeric: tabular-nums; }
.ttt-tbc__totals .ttt-tbc__total-row { padding-top: 12px; margin-top: 4px; border-top: 1px solid #d1dddd; }
.ttt-tbc__totals .ttt-tbc__total-row dt, .ttt-tbc__totals .ttt-tbc__total-row dd { font-size: 1.07rem; color: #173b45; font-weight: 850; }
.ttt-tbc__results-note { color: #596c73; font-size: .76rem; margin-top: 17px !important; }
.ttt-tbc__field-error { color: #a31c1c; font-weight: 700; font-size: .8rem; margin-top: 10px !important; }
.ttt-tbc__actions--results { margin-top: 17px; }
.ttt-tbc__country-guides, .ttt-tbc__booking-links, .ttt-tbc__planner-link { margin-top: 23px; padding-top: 16px; border-top: 1px solid #d6e3e3; }
.ttt-tbc__country-guides p { font-size: .8rem; color: #526c71; margin-bottom: 4px; }
.ttt-tbc__country-guides a, .ttt-tbc__booking-links a { color: #0f6971; font-size: .87rem; font-weight: 800; text-decoration: underline; text-underline-offset: 3px; }
.ttt-tbc__booking-links h3 { font-size: 1.01rem; margin-bottom: 9px; }
.ttt-tbc__booking-links .ttt-tbc__affiliate-disclosure { font-size: .75rem; color: #536971; margin-bottom: 12px; }
.ttt-tbc__booking-links a { display: block; margin-top: 10px; }
.ttt-tbc__footnote { padding: 22px clamp(20px, 3vw, 34px); background: #fff; border: 1px solid var(--ttt-tbc-border); border-top: 0; border-radius: 0 0 22px 22px; font-size: .79rem; line-height: 1.75; color: #586e72; }
.ttt-tbc__footnote strong { color: #264953; }
.ttt-tbc__notice { border-left: 4px solid #ac7d2b; padding: 11px; margin: 10px 0 !important; }
@media (max-width: 900px) {
    .ttt-tbc__layout { grid-template-columns: minmax(0, 1fr); }
    .ttt-tbc__results { border-left: 0; border-top: 1px solid var(--ttt-tbc-border); }
}
@media (max-width: 540px) {
    .ttt-tbc__hero { padding: 23px 19px; border-radius: 14px 14px 0 0; }
    .ttt-tbc__hero-chip { display: none; }
    .ttt-tbc__controls, .ttt-tbc__results { padding: 19px; }
    .ttt-tbc__fields-grid { gap: 12px; }
    .ttt-tbc__rate-field { gap: 10px; }
    .ttt-tbc__money-input { flex: 0 0 117px; min-width: 112px; }
    .ttt-tbc__rate-field label { font-size: .81rem; }
    .ttt-tbc__rate-field .ttt-tbc__hint { font-size: .7rem; }
    .ttt-tbc__contingency-row { padding: 12px; }
    .ttt-tbc__footnote { border-radius: 0 0 14px 14px; }
    .ttt-tbc__actions--results .ttt-tbc__button { flex: 1 1 135px; }
}
@media (max-width: 370px) {
    .ttt-tbc__fields-grid { grid-template-columns: minmax(0, 1fr); }
    .ttt-tbc__money-input { flex-basis: 99px; min-width: 95px; }
    .ttt-tbc__money-input span { font-size: .7rem; padding: 0 5px; }
}
@media (prefers-reduced-motion: reduce) {
    .ttt-tbc__bar { transition: none; }
}
@media print {
    body * { visibility: hidden !important; }
    .ttt-tbc, .ttt-tbc * { visibility: visible !important; }
    .ttt-tbc { position: absolute !important; top: 0 !important; left: 0 !important; width: 100% !important; max-width: 100% !important; margin: 0 !important; color: #000 !important; font-size: 12px !important; }
    .ttt-tbc__hero { display: block !important; padding: 0 0 15px !important; background: transparent !important; color: #000 !important; }
    .ttt-tbc__hero h2 { color: #000 !important; }
    .ttt-tbc__eyebrow, .ttt-tbc__hero-copy, .ttt-tbc__hero-chip, .ttt-tbc__controls,
    .ttt-tbc__actions, .ttt-tbc__country-guides, .ttt-tbc__booking-links, .ttt-tbc__planner-link { display: none !important; }
    .ttt-tbc__layout { display: block !important; border: 0 !important; }
    .ttt-tbc__results { border: 0 !important; padding: 0 !important; background: white !important; }
    .ttt-tbc__stat-grid > div { border: 1px solid #777 !important; }
    .ttt-tbc__footnote { border: 0 !important; padding: 12px 0 0 !important; }
    .ttt-tbc__bar { background: #666 !important; print-color-adjust: exact; }
    .ttt-tbc__headline { font-size: 28px !important; }
    .ttt-tbc__results-note { display: block !important; }
    .ttt-tbc__breakdown-row { break-inside: avoid; }
}

.ttt-tbc__planner-link p { margin: 0; color: #526c71; font-size: .79rem; }
.ttt-tbc__planner-link a { font-size: .82rem; color: #0f6971; font-weight: 780; text-decoration: underline; }

/* v1.1 affiliate disclosure and destination-aware link visibility. */
.ttt-tbc [hidden] { display: none !important; }
.ttt-tbc__affiliate-disclosure-top { margin: 0 !important; padding: 12px 20px; border: 1px solid #d5e6e3; border-top: 0; background: #f3faf8; color: #385b60; font-size: .79rem; line-height: 1.6; }
.ttt-tbc__booking-links p { font-size: .76rem; color: #526c71; line-height: 1.5; margin: 0 0 9px; }
@media print { .ttt-tbc__affiliate-disclosure-top { display: none !important; } }

/* v1.2 researched budget sources and clearly visible, grouped affiliate options. */
.ttt-tbc__source-detail { padding: 13px 15px; margin: 0 0 18px; border: 1px solid #cfe2df; background: #eff8f6; border-radius: 11px; font-size: .81rem; line-height: 1.5; }
.ttt-tbc__source-detail strong { color: #185b62; }
.ttt-tbc__source-detail p { color: #415f65; margin: 5px 0 0; font-size: .76rem; }
.ttt-tbc__source-detail a { color: #125e67; font-weight: 800; text-underline-offset: 3px; }
.ttt-tbc__booking-links { border: 1px solid #bcd9d5; border-radius: 13px; background: #fff; padding: 18px; margin: 23px 0 0; box-shadow: 0 5px 22px rgba(20,72,80,.05); }
.ttt-tbc__booking-head { border-bottom: 1px solid #e0e9e8; padding-bottom: 12px; }
.ttt-tbc__booking-kicker { display: block; color: #277877; text-transform: uppercase; font-size: .65rem; font-weight: 850; letter-spacing: .11em; margin-bottom: 6px; }
.ttt-tbc__booking-head h3 { font-size: 1.13rem; color: #193e46; }
.ttt-tbc__booking-links .ttt-tbc__booking-head p { margin: 6px 0 0; font-size: .78rem; }
.ttt-tbc__booking-group { padding-top: 15px; }
.ttt-tbc__booking-group h4 { font-size: .84rem; color: #254b53; margin: 0 0 2px; font-weight: 830; }
.ttt-tbc__booking-links .ttt-tbc__booking-group p { font-size: .72rem; margin: 0 0 10px; }
.ttt-tbc__booking-buttons { display: grid; gap: 8px; }
.ttt-tbc .ttt-tbc__booking-button { display: flex; align-items: center; justify-content: space-between; gap: 12px; background: #156d73; color: #fff; text-decoration: none; font-weight: 780; font-size: .82rem; border-radius: 8px; padding: 12px 13px; margin: 0; border: 1px solid #135c62; box-shadow: none; line-height: 1.35; }
.ttt-tbc .ttt-tbc__booking-button:hover, .ttt-tbc .ttt-tbc__booking-button:focus { background: #0b535a; color: #fff; }
.ttt-tbc .ttt-tbc__booking-button span:last-child { font-size: 1.15rem; font-weight: 900; flex-shrink: 0; }
.ttt-tbc__booking-links .ttt-tbc__booking-fineprint { font-size: .7rem; color: #5c6f72; border-top: 1px solid #e0e9e8; padding-top: 12px; margin: 15px 0 0; }
@media print { .ttt-tbc__booking-links, .ttt-tbc__source-detail { display: none !important; } }


/* v1.3.1: Compact optional booking recommendations FOLLOW the complete cost breakdown.
   These rules are scoped to the calculator; they do not alter WordPress/Blocksy controls. */
.ttt-tbc__booking-links {
    margin: 18px 0 0;
    padding: 12px;
    border-radius: 11px;
    box-shadow: none;
}
.ttt-tbc__booking-head { padding-bottom: 8px; }
.ttt-tbc__booking-kicker { margin-bottom: 2px; font-size: .61rem; }
.ttt-tbc__booking-head h3 { font-size: .96rem; line-height: 1.35; margin: 0; }
.ttt-tbc__booking-links .ttt-tbc__booking-head p { margin: 3px 0 0; font-size: .7rem; line-height: 1.45; }
.ttt-tbc__booking-group { padding-top: 10px; }
.ttt-tbc__booking-group h4 { margin: 0 0 5px; font-size: .78rem; line-height: 1.4; }
/* Remove repetitive group explanations from the visual flow but keep headings and buttons. */
.ttt-tbc__booking-links .ttt-tbc__booking-group p { display: none; }
.ttt-tbc__booking-buttons { gap: 5px; }
.ttt-tbc .ttt-tbc__booking-button {
    padding: 8px 10px;
    border-radius: 6px;
    font-size: .75rem;
    font-weight: 730;
    line-height: 1.3;
    min-height: 36px;
    margin: 0;
    text-decoration: none;
}
.ttt-tbc .ttt-tbc__booking-button span:last-child { font-size: .95rem; }
.ttt-tbc__booking-links .ttt-tbc__booking-fineprint {
    margin: 10px 0 0;
    padding-top: 8px;
    font-size: .65rem;
    line-height: 1.5;
}
