/* ==========================================================================
   Voyagio — skin for "Tour Booking & Driver Management System" views.
   Loaded after the plugin stylesheet. Plugin colours are mapped to theme
   colours through --tbm-* variables (see inc/dynamic-css.php).
   ========================================================================== */

.tbm { font-family: var(--v-font-body); color: var(--v-ink); }
.tbm h1, .tbm h2, .tbm h3, .tbm .h4 { font-family: var(--v-font-head); font-weight: var(--v-head-weight); }

/* ---------- Single tour ---------- */
.tbm.tbm-tour.v-tour { width: 100%; max-width: none; margin: 0; }
.v-tour-banner { height: clamp(260px, 42vw, 520px); overflow: hidden; background: var(--v-surface); }
.v-tour-banner img { width: 100%; height: 100%; object-fit: cover; }

.tbm .v-tour__gallery { margin: 0 0 2rem; }
.tbm .v-tour__gallery .tbm-tour-gallery__grid { height: clamp(300px, 44vw, 560px); gap: 8px; border-radius: calc(var(--v-radius) * 1.2); }
.tbm .v-tour__gallery .tbm-tour-gallery__item { border-radius: 0; background: var(--v-surface); }
.tbm .v-tour__gallery .tbm-tour-gallery__more { right: 14px; bottom: 14px; padding: .55rem 1rem; font-weight: 700; font-size: .85rem; border-radius: 999px; box-shadow: 0 4px 14px rgba(0,0,0,.15); }
.tbm .tbm-tour-gallery__item:first-child { position: relative; }
.tbm .tbm-tour-gallery__lightbox { background: rgba(var(--v-ink-rgb), .97); }

.v-tour__head { margin-bottom: 2rem; max-width: 900px; }
.v-tour__eyebrow { margin: .9rem 0 0; color: var(--v-primary-2); font-weight: 700; }
.v-tour__title { margin: .7rem 0 .9rem; font-size: calc(clamp(2.2rem, 4.6vw, 3.7rem) * var(--v-head-scale)); line-height: 1.04; letter-spacing: -.02em; }
.v-tour__sub { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .6rem; }
.v-tour__rating { display: inline-flex; align-items: center; gap: .35rem; margin-right: .5rem; text-decoration: none; }

.v-tour__layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(300px, 380px); gap: clamp(2rem, 4vw, 4rem); align-items: start; }
.v-tour__main { min-width: 0; }
.v-tour__aside { position: sticky; top: 110px; display: grid; gap: 1rem; }
.admin-bar .v-tour__aside { top: 142px; }
@media (max-width: 980px) { .v-tour__layout { grid-template-columns: 1fr; } .v-tour__aside { position: static; order: -1; } }

.v-facts { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 0; margin: 0 0 2.5rem; border: 1px solid var(--v-line); border-radius: var(--v-radius); overflow: hidden; }
.v-fact { display: grid; grid-template-columns: 40px 1fr; grid-template-rows: auto auto; column-gap: .8rem; align-items: center; padding: 1.05rem 1.2rem; border-right: 1px solid var(--v-line); border-bottom: 1px solid var(--v-line); margin: 0 -1px -1px 0; }
.v-fact__icon { grid-row: span 2; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: var(--v-surface); color: var(--v-primary); }
.v-fact dt { font-size: .78rem; font-weight: 700; color: var(--v-muted); }
.v-fact dd { margin: 0; font-weight: 700; line-height: 1.3; }

.v-tour__block { margin: 0 0 2.75rem; padding-top: 2.5rem; border-top: 1px solid var(--v-line); }
.v-facts + .v-tour__block { padding-top: 0; border-top: 0; }
.v-tour__block > h2, .tbm .v-tour__block .tbm-faqs__header h2 { font-size: calc(clamp(1.6rem, 2.6vw, 2.1rem) * var(--v-head-scale)); margin: 0 0 1.25rem; color: var(--v-ink); }
.tbm .tbm-tour__content p { font-size: 1.04rem; color: var(--v-ink); }

/* Itinerary */
.v-itin { list-style: none; margin: 0; padding: 0; position: relative; }
.v-itin::before { content: ""; position: absolute; left: 21px; top: 22px; bottom: 22px; border-left: 1.5px dashed color-mix(in srgb, var(--v-primary) 35%, var(--v-line)); }
.v-itin__stop { position: relative; }
.v-itin__details summary { display: grid; grid-template-columns: 44px 1fr 34px; gap: 1rem; align-items: center; padding: .85rem 0; cursor: pointer; list-style: none; }
.v-itin__details summary::-webkit-details-marker { display: none; }
.v-itin__num { position: relative; z-index: 1; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: #fff; border: 1.5px solid var(--v-primary); color: var(--v-primary); font-family: var(--v-font-head); font-size: 1.15rem; transition: background-color .2s, color .2s; }
.v-itin__details[open] .v-itin__num { background: var(--v-primary); color: var(--v-accent); }
.v-itin__title { font-weight: 700; font-size: 1.06rem; }
.v-itin__chev { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: var(--v-surface); color: var(--v-primary); transition: transform .2s; }
.v-itin__details[open] .v-itin__chev { transform: rotate(45deg); }
.v-itin__body { padding: 0 0 1rem 60px; color: var(--v-muted); }
.v-itin__body p { margin: 0 0 .7em; }
.v-itin__body strong { color: var(--v-ink); }

/* Inclusions */
.v-inex { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1rem; }
.v-inex__col { padding: 1.4rem 1.5rem; border-radius: var(--v-radius); background: var(--v-surface); }
.v-inex__col--no { background: #fff; border: 1px solid var(--v-line); }
.v-inex__col h3 { font-size: 1.15rem; margin-bottom: .9rem; }
.v-inex__col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .55rem; }
.v-inex__col li { display: flex; gap: .6rem; align-items: flex-start; }
.v-inex__col .v-icon { margin-top: .22em; }
.v-inex__col--yes .v-icon { color: var(--v-primary-2); }
.v-inex__col--no .v-icon { color: #b3261e; }

.v-note { padding: 1.6rem 1.75rem !important; border: 0 !important; border-radius: var(--v-radius); background: rgba(var(--v-accent-rgb), .13); }
.v-note > h2 { font-size: 1.35rem !important; }
.v-note p:last-child { margin: 0; }

/* Plugin FAQ block inside the tour */
.tbm .v-tour__block.tbm-section--faqs .tbm-faq { border-color: var(--v-line); border-radius: var(--v-radius-sm); }
.tbm .tbm-section--faqs .tbm-faq[open] summary { color: var(--v-primary); }
.tbm .tbm-section--faqs .tbm-faqs__toggle[aria-pressed="true"] .tbm-faqs__switch { background: var(--v-primary); }

/* Reviews inside the tour (plugin wraps them in <hr><section>) */
.v-tour__reviews > hr { display: none; }
.v-tour__reviews > .tbm-section { padding-top: 2.5rem; border-top: 1px solid var(--v-line); }
.v-tour__reviews > .tbm-section > h2 { font-size: calc(clamp(1.6rem, 2.6vw, 2.1rem) * var(--v-head-scale)); }

/* Price box */
.v-pricebox { padding: 1.6rem; border-radius: calc(var(--v-radius) * 1.1); background: var(--v-primary); color: rgba(255,255,255,.85); box-shadow: 0 24px 50px rgba(var(--v-primary-rgb), .22); }
.v-pricebox__from { display: flex; flex-direction: column; margin: 0 0 1rem; line-height: 1.1; }
.v-pricebox__from span { font-size: .85rem; font-weight: 600; color: rgba(255,255,255,.7); }
.v-pricebox__from strong { font-family: var(--v-font-head); font-weight: var(--v-head-weight); font-size: 2.6rem; color: #fff; }
.v-pricebox__ask { font-size: 1.6rem !important; }
.v-pricebox__rows { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; margin: 0 0 1rem; }
.v-pricebox__rows div { padding: .7rem .85rem; border-radius: var(--v-radius-sm); background: rgba(255,255,255,.08); }
.v-pricebox__rows dt { font-size: .76rem; color: rgba(255,255,255,.65); }
.v-pricebox__rows dd { margin: 0; font-weight: 700; color: #fff; font-size: 1.05rem; }
.v-pricebox__note { font-size: .84rem; color: rgba(255,255,255,.7); margin-bottom: 1rem; }
.v-pricebox__addons { margin-bottom: 1.2rem; border-top: 1px solid rgba(255,255,255,.14); border-bottom: 1px solid rgba(255,255,255,.14); }
.v-pricebox__addons summary { padding: .75rem 0; cursor: pointer; font-weight: 700; color: #fff; font-size: .9rem; }
.v-pricebox__addons ul { list-style: none; margin: 0 0 .8rem; padding: 0; display: grid; gap: .35rem; font-size: .88rem; }
.v-pricebox__addons li { display: flex; justify-content: space-between; gap: 1rem; }
.tbm .v-pricebox .v-btn { max-height: none; min-height: 54px; font-size: 1rem; width: 100%; margin: 0; font-family: var(--v-font-body); }
.v-pricebox__hint { display: flex; gap: .45rem; align-items: flex-start; margin: .85rem 0 0; font-size: .82rem; color: rgba(255,255,255,.72); }
.v-pricebox__hint .v-icon { color: var(--v-accent); margin-top: .1em; }
.v-pricebox__closed { margin: 0; padding: .8rem 1rem; border-radius: var(--v-radius-sm); background: rgba(255,255,255,.1); }
.v-helpbox { padding: 1.25rem 1.4rem; border: 1px solid var(--v-line); border-radius: var(--v-radius); background: #fff; }
.v-helpbox p { margin: 0 0 .8rem; font-weight: 600; }
.v-helpbox__link { display: flex; align-items: center; gap: .55rem; padding: .45rem 0; color: var(--v-primary); font-weight: 700; text-decoration: none; }
.v-helpbox__link .v-social-icon { color: #25d366; }
.v-tour__widgets .widget { padding: 1.25rem; border: 1px solid var(--v-line); border-radius: var(--v-radius); background: #fff; }

/* Booking section */
.tbm .tbm-section--booking.v-booking { margin-top: clamp(2.5rem, 5vw, 4rem); padding: clamp(1.5rem, 4vw, 3rem); border-radius: calc(var(--v-radius) * 1.3); background: var(--v-surface); scroll-margin-top: 110px; }
.v-booking__head { margin-bottom: 2rem; max-width: 720px; }
.v-booking__head h2 { margin: 0 0 .4rem; font-size: calc(clamp(1.8rem, 3vw, 2.5rem) * var(--v-head-scale)); }
.v-booking__head p { margin: 0; color: var(--v-muted); }

/* Mobile book bar */
.v-bookbar { display: none; }
@media (max-width: 980px) {
	.v-bookbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 95; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .75rem 16px calc(.75rem + env(safe-area-inset-bottom)); background: #fff; border-top: 1px solid var(--v-line); box-shadow: 0 -8px 24px rgba(0,0,0,.08); transition: transform .25s ease; }
	.v-bookbar.is-hidden { transform: translateY(110%); }
	.v-bookbar__price { margin: 0; line-height: 1.1; }
	.v-bookbar__price span { display: block; font-size: .75rem; color: var(--v-muted); }
	.v-bookbar__price strong { font-family: var(--v-font-head); font-size: 1.45rem; color: var(--v-primary); }
	.single-tbm_tour .v-wa-float { bottom: 92px; }
	.single-tbm_tour .v-top { bottom: 164px; }
	.single-tbm_tour .v-footer { padding-bottom: 80px; }
}

/* ---------- Tours listing filters ---------- */
.v-tours { width: 100%; }
.v-filters { display: grid; grid-template-columns: 1.5fr repeat(4, minmax(0, 1fr)) auto; gap: .75rem; align-items: end; margin-bottom: 1.25rem; padding: 1.1rem; border: 1px solid var(--v-line); border-radius: var(--v-radius); background: #fff; box-shadow: 0 12px 34px rgba(var(--v-ink-rgb), .06); }
.v-filters__field { display: flex; flex-direction: column; gap: .3rem; min-width: 0; }
.v-filters__field > span { font-size: .78rem; font-weight: 700; color: var(--v-muted); }
.v-filters__submit { min-height: 48px; }
@media (max-width: 1100px) { .v-filters { grid-template-columns: repeat(3, minmax(0, 1fr)); } .v-filters__field--search { grid-column: 1 / -1; } .v-filters__submit { grid-column: span 1; } }
@media (max-width: 640px) { .v-filters { grid-template-columns: 1fr 1fr; } .v-filters__submit { grid-column: 1 / -1; } }
.v-results-bar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin: 0 0 1.5rem; }
.v-results-bar__count { margin: 0; font-weight: 700; color: var(--v-muted); }
.v-results-bar__reset { font-weight: 700; }

/* ---------- Generic plugin elements ---------- */
.tbm .tbm-btn { border-radius: var(--v-btn-radius); font-family: var(--v-font-body); }
.tbm .tbm-btn--primary, .tbm button.tbm-btn--primary, .tbm .tbm-booking__summary button[type="submit"] {
	display: inline-flex; align-items: center; justify-content: center; width: 100%; max-height: none; min-height: 50px; padding: .8em 1.5em;
	border: 0; border-radius: var(--v-btn-radius); background: var(--v-accent); color: var(--v-accent-ink);
	font-family: var(--v-font-body); font-weight: 700; font-size: .98rem; cursor: pointer; transition: background-color .18s;
}
.tbm .tbm-btn--primary:hover, .tbm button.tbm-btn--primary:hover { background: color-mix(in srgb, var(--v-accent) 86%, #000); color: var(--v-accent-ink); }
.tbm .tbm-btn--danger { border-radius: var(--v-btn-radius); min-height: 50px; }
.tbm .tbm-actions form { flex: 1 1 200px; }
.tbm .tbm-notice { border-radius: var(--v-radius-sm); background: #fff; border: 1px solid var(--v-line); border-left: 4px solid var(--v-primary-2); }
.tbm .tbm-notice--success { background: #eef8f2; }
.tbm .tbm-notice--error { background: #fdf0ef; border-left-color: #b3261e; }
.tbm .tbm-notice--info { background: rgba(var(--v-accent-rgb), .12); border-left-color: var(--v-accent); }
.tbm .tbm-empty { border-radius: var(--v-radius); background: #fff; border: 1px dashed var(--v-line); }
.tbm .tbm-eyebrow { text-transform: none; letter-spacing: 0; font-size: .85rem; font-weight: 700; color: var(--v-primary-2); }
.tbm .tbm-badge { padding: .35em 1em; font-size: .78rem; }

/* Fields */
.tbm .tbm-field label, .tbm .tbm-travelers legend, .tbm .tbm-addons legend, .tbm .tbm-rating-input legend { font-weight: 700; font-size: .88rem; color: var(--v-ink); }
.tbm .tbm-field input, .tbm .tbm-field select, .tbm .tbm-field textarea, .tbm .tbm-filters input, .tbm .tbm-filters select, .v-filters input, .v-filters select {
	min-height: 48px; padding: .65rem .95rem; border: 1px solid var(--v-line); border-radius: var(--v-radius-sm); background: #fff; font-size: .97rem; color: var(--v-ink);
}
.tbm .tbm-field textarea { min-height: 110px; }
.tbm .tbm-field select, .tbm .tbm-filters select, .v-filters select { appearance: none; -webkit-appearance: none; padding-right: 2.4rem; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%235d6b65' stroke-width='2.2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right .9rem center; }
.tbm .tbm-field input[type="file"] { min-height: 0; padding: .55rem; background: var(--v-surface); border-style: dashed; }
.tbm .tbm-field input:focus, .tbm .tbm-field select:focus, .tbm .tbm-field textarea:focus { border-color: var(--v-primary-2); box-shadow: 0 0 0 3px rgba(var(--v-primary-rgb), .14); }
.tbm .tbm-field input[type="checkbox"], .tbm .tbm-field--check input, .tbm .grid-checkbox input { min-height: 0; width: 18px; height: 18px; padding: 0; accent-color: var(--v-primary); }
.tbm .tbm-form__grid { gap: 1.1rem 1.25rem; }
.tbm .tbm-field--check label, .tbm .grid-checkbox label, .tbm .tbm-addon-option { font-weight: 500; font-size: .93rem; color: var(--v-ink); }
.tbm .tbm-addon-option input, .tbm .grid-checkbox input { margin-top: 1px; }
.tbm .tbm-form__hint { font-size: .84rem; }
.tbm .tbm-error { color: #b3261e; font-weight: 600; }

/* Travellers selector */
.tbm .tbm-travelers label span { min-width: 48px; min-height: 48px; border-radius: 999px; border-color: var(--v-line); font-weight: 700; transition: background-color .15s, border-color .15s; }
.tbm .tbm-travelers label:hover span { border-color: var(--v-primary); }
.tbm .tbm-travelers input:checked + span { background: var(--v-primary); border-color: var(--v-primary); color: #fff; }
.tbm-age-requirement { background: rgba(var(--v-accent-rgb), .16) !important; color: var(--v-ink) !important; border-radius: var(--v-radius-sm) !important; font-weight: 600; }
.tbm .tbm-field .tbm-addons { padding: 1rem 1.1rem; border: 1px solid var(--v-line); border-radius: var(--v-radius-sm); background: #fff; }
.tbm .tbm-policy { padding: .9rem 1.1rem; border: 1px solid var(--v-line); border-radius: var(--v-radius-sm); background: #fff; }
.tbm .tbm-policy summary { color: var(--v-primary); }

/* Booking summary (sticky aside) */
.tbm .tbm-booking__summary, .tbm .tbm-estimate { top: 110px; padding: 1.4rem; border: 0; border-radius: calc(var(--v-radius) * 1.1); background: var(--v-primary); box-shadow: 0 24px 50px rgba(var(--v-primary-rgb), .2); }
.tbm .tbm-booking__summary .tbm-tour-price__eyebrow { margin: 0 0 1rem; color: #fff; font-family: var(--v-font-head); font-size: 1.5rem; text-transform: none; letter-spacing: 0; font-weight: var(--v-head-weight); }
.tbm .tbm-summary-card { border: 0; border-radius: var(--v-radius-sm); background: #fff; }
.tbm .tbm-summary-card .h4 { font-family: var(--v-font-body); font-weight: 700; font-size: .82rem; color: var(--v-muted); margin-bottom: .4rem; }
.tbm .tbm-summary-list__row { border-bottom-color: var(--v-line); }
.tbm .tbm-summary-list__row dt { font-size: .86rem; color: var(--v-muted); font-weight: 600; }
.tbm .tbm-summary-list__row dd { font-weight: 700; }
.tbm .tbm-summary-list__row--total { background: var(--v-surface); border-radius: var(--v-radius-sm); }
.tbm .tbm-summary-list__row--total dt, .tbm .tbm-summary-list__row--total dd { color: var(--v-primary); font-size: 1rem; }
.tbm .tbm-booking__summary > .tbm-form__hint { background: rgba(255,255,255,.1); color: #fff; }
.tbm .tbm-booking__summary > .tbm-muted { color: rgba(255,255,255,.7); }

/* ---------- Portals (My booking / driver) ---------- */
.tbm.tbm-portal, .tbm.tbm-driver-register { max-width: 100%; }
.tbm .tbm-portal__head { align-items: center; padding: 1.5rem 1.75rem; border-radius: var(--v-radius); background: var(--v-primary) url("../img/contours.svg") right center / 700px auto no-repeat; color: #fff; }
.tbm .tbm-portal__head h2 { color: #fff; margin: .2rem 0 0; font-size: calc(clamp(1.6rem, 3vw, 2.2rem) * var(--v-head-scale)); }
.tbm .tbm-portal__head .tbm-eyebrow { color: var(--v-accent); }
.tbm .tbm-panel { border: 1px solid var(--v-line); border-radius: var(--v-radius); background: #fff; padding: 1.5rem 1.6rem; }
.tbm-portal h3, .tbm-portal.tbm-driver h3, .tbm-driver-register h3 { font-family: var(--v-font-head); font-weight: var(--v-head-weight); }
.tbm .tbm-quote { border: 2px solid var(--v-accent); }
.customer_portal .tbm-dl dt, .customer_portal .tbm-dl dd { padding: .55rem 0; border-bottom-color: var(--v-line); }
.customer_portal .tbm-dl dt { font-size: .9rem; color: var(--v-muted); font-weight: 600; }
.customer_portal .tbm-dl dd { font-weight: 600; color: var(--v-ink); }
.history .tbm-panel { background: var(--v-primary) !important; border: 0; }
.history .tbm-panel h3 { color: #fff; }
.tbm .tbm-timeline li { border-bottom-color: rgba(255,255,255,.14); flex-direction: column; gap: .1rem; }
.tbm .tbm-timeline time { font-size: .8rem; color: rgba(255,255,255,.6); }
.tbm .tbm-timeline span { font-size: .95rem; font-weight: 600; }
.tbm .tbm-tabs { gap: .25rem; padding: .35rem; border: 1px solid var(--v-line); border-radius: 999px; background: #fff; width: fit-content; max-width: 100%; overflow-x: auto; }
.tbm .tbm-tab { padding: .6rem 1.15rem; border: 0; border-radius: 999px; white-space: nowrap; color: var(--v-muted); }
.tbm .tbm-tab.is-active { background: var(--v-primary); color: #fff; }
.tbm .tbm-trip__money > div { border-radius: var(--v-radius-sm); background: var(--v-surface); }
.tbm .tbm-trip__money .is-key { background: rgba(var(--v-accent-rgb), .14); border-color: rgba(var(--v-accent-rgb), .45); }
.tbm .tbm-cal__day { border-radius: var(--v-radius-sm); background: #fff; }
.tbm .tbm-cal__day.is-today { border-color: var(--v-primary); box-shadow: inset 0 0 0 1px var(--v-primary); }
.tbm .tbm-table th { font-size: .82rem; color: var(--v-muted); }
.tbm-driver-register .heading { margin-top: .5rem; }
.tbm-driver-register .tbm-form { padding: clamp(1.25rem, 3vw, 2.25rem); border: 1px solid var(--v-line); border-radius: var(--v-radius); background: #fff; }
.tbm-portal .login-username, .tbm-portal .login-password, .tbm-portal .login-remember, .tbm-portal .login-submit { margin: 0 0 1rem; max-width: 420px; }
.tbm-portal .login-username label, .tbm-portal .login-password label { display: block; font-weight: 700; font-size: .88rem; margin-bottom: .3rem; }
.tbm-portal #wp-submit { min-height: 50px; padding: 0 2rem; border: 0; border-radius: var(--v-btn-radius); background: var(--v-primary); color: #fff; font-weight: 700; cursor: pointer; }
.tbm .tbm-booking-list li a { font-weight: 600; }
.add_new_vehicle { background: var(--v-surface) !important; border-radius: var(--v-radius) !important; }

/* Plugin headings that hard-code Playfair */
h1.entry-title { font-family: var(--v-font-head); }
.tbm-tours .tbm-card__title { font-family: var(--v-font-head); color: var(--v-ink); }
.view_uploaded { color: var(--v-primary-2) !important; }
.hoverable:hover { background: var(--v-accent) !important; }

/* Plugin utility hr rule is global; keep theme spacing */
.v-portal-body hr, .tbm hr { margin: 2rem 0; background: var(--v-line) !important; }

/* Stand-alone plugin notices (wrapper and notice on the same element) */
.tbm.tbm-notice { padding: 1rem 1.25rem; border: 1px solid var(--v-line); border-left: 4px solid var(--v-primary-2); border-radius: var(--v-radius-sm); background: #fff; }
.tbm.tbm-notice--error { background: #fdf0ef; border-left-color: #b3261e; }
