/**
 * Tourivo Demo — showcase layout and product mock-ups (templates/visuals/*).
 *
 * 1. Showcase (tabs + stage)   4. Payments       7. Documents
 * 2. Shared mock-up pieces     5. Admin screens  8. Traveler & builders
 * 3. Listings                  6. Messages
 */

/* --------------------------------------------------------- 1. Showcase */
.tvd-show {
	display: grid;
	grid-template-columns: minmax(250px, 0.78fr) minmax(0, 2fr);
	gap: 28px;
	align-items: start;
}

.tvd-show--right {
	grid-template-columns: minmax(0, 2fr) minmax(250px, 0.78fr);
}

.tvd-show--right .tvd-show__tabs {
	order: 2;
}

.tvd-show__tabs {
	position: sticky;
	top: calc(var(--tvd-head-h) + 24px);
	display: grid;
	gap: 8px;
}

.tvd-show__tab {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	gap: 12px;
	width: 100%;
	padding: 12px 14px;
	border-radius: 16px;
	border: 1.5px solid transparent;
	text-align: left;
	transition: background 0.2s, border-color 0.2s, transform 0.2s var(--tvd-ease);
}

.tvd-show__tab:hover {
	background: color-mix(in srgb, var(--tvd-surface) 70%, transparent);
}

.tvd-show__tab[aria-selected="true"] {
	background: var(--tvd-surface);
	border-color: color-mix(in srgb, var(--tvd-accent) 35%, transparent);
	box-shadow: var(--tvd-shadow);
}

.tvd-show__ic {
	display: grid;
	place-items: center;
	width: 40px;
	height: 40px;
	border-radius: 12px;
	color: var(--tvd-accent);
	background: color-mix(in srgb, var(--tvd-accent) 11%, transparent);
	transition: background 0.2s, color 0.2s;
}

.tvd-show__tab[aria-selected="true"] .tvd-show__ic {
	color: #fff;
	background: var(--tvd-grad);
}

.tvd-show__label b {
	display: block;
	font-size: 15px;
	line-height: 1.3;
}

.tvd-show__label small {
	display: block;
	font-size: 12.5px;
	color: var(--tvd-muted);
}

.tvd-show__stage {
	min-width: 0;
}

.tvd-show__panel {
	display: grid;
	grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
	gap: 26px;
	align-items: center;
	padding: 26px;
	border-radius: var(--tvd-r-lg);
	background:
		radial-gradient(80% 90% at 0% 0%, color-mix(in srgb, var(--tvd-accent) 10%, transparent), transparent 70%),
		var(--tvd-surface);
	border: 1px solid var(--tvd-line);
	box-shadow: var(--tvd-shadow);
	animation: tvd-panel-in 0.45s var(--tvd-ease);
}

@keyframes tvd-panel-in {
	from {
		opacity: 0;
		transform: translateY(10px);
	}
}

.tvd-show__visual {
	min-width: 0;
}

.tvd-show__title {
	font-size: clamp(1.3rem, 2vw, 1.6rem);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.02em;
}

.tvd-show__title em {
	font-style: normal;
	color: var(--tvd-accent);
}

.tvd-show__text {
	margin-top: 10px;
	font-size: 15.5px;
	color: var(--tvd-muted);
}

.tvd-show__copy .tvd-checks {
	margin-top: 16px;
}

.tvd-show__copy .tvd-btn {
	margin-top: 18px;
}

@media (max-width: 1080px) {
	.tvd-show__panel {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 860px) {
	.tvd-show,
	.tvd-show--right {
		grid-template-columns: 1fr;
	}

	.tvd-show--right .tvd-show__tabs {
		order: 0;
	}

	.tvd-show__tabs {
		position: relative;
		top: 0;
		display: flex;
		gap: 8px;
		overflow-x: auto;
		padding-bottom: 4px;
		scroll-snap-type: x proximity;
	}

	.tvd-show__tab {
		flex: none;
		width: auto;
		grid-template-columns: auto auto;
		scroll-snap-align: start;
		background: var(--tvd-surface);
		border-color: var(--tvd-line);
	}

	.tvd-show__tab .tvd-badge,
	.tvd-show__label small {
		display: none;
	}

	.tvd-show__panel {
		padding: 18px;
	}
}

/* ------------------------------------------------- 2. Shared pieces */
.tvd-v {
	--v-r: 16px;
	position: relative;
	font-size: 13px;
	line-height: 1.45;
	color: var(--tvd-ink);
}

.tvd-v small {
	display: block;
	font-size: 11.5px;
	color: var(--tvd-muted);
}

.tvd-v-win,
.tvd-v-card,
.tvd-v-ticket,
.tvd-v-pdf,
.tvd-v-search,
.tvd-v-codes {
	border-radius: var(--v-r);
	background: var(--tvd-surface);
	border: 1px solid var(--tvd-line);
	box-shadow: var(--tvd-shadow-lg);
	overflow: hidden;
}

.tvd-v-win__bar {
	display: flex;
	align-items: center;
	gap: 6px;
	padding: 9px 12px;
	background: var(--tvd-surface-2);
	border-bottom: 1px solid var(--tvd-line);
}

.tvd-v-win__bar i {
	width: 9px;
	height: 9px;
	border-radius: 50%;
	background: #f87171;
}

.tvd-v-win__bar i:nth-child(2) {
	background: #fbbf24;
}

.tvd-v-win__bar i:nth-child(3) {
	background: #34d399;
}

.tvd-v-win__bar span {
	margin-left: 8px;
	font-family: var(--tvd-mono);
	font-size: 11px;
	color: var(--tvd-muted);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.tvd-v-win__body {
	padding: 14px;
}

.tvd-v-card {
	padding: 16px;
}

.tvd-v-card__title {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-bottom: 12px;
	font-size: 14.5px;
	font-weight: 700;
}

.tvd-v-card__title .tvd-ic {
	color: var(--tvd-accent);
}

.tvd-v-title {
	font-size: 15px;
	font-weight: 700;
	line-height: 1.3;
}

.tvd-v-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 10px;
	margin-top: 4px;
	font-size: 11.5px;
	color: var(--tvd-muted);
}

.tvd-v-meta span {
	display: inline-flex;
	align-items: center;
	gap: 4px;
}

.tvd-v-meta .tvd-ic {
	width: 12px;
	height: 12px;
}

.tvd-v-label {
	margin: 10px 0 6px;
	font-size: 10.5px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--tvd-muted);
}

.tvd-v-chip {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	padding: 3px 9px;
	border-radius: 999px;
	font-size: 11.5px;
	font-weight: 600;
	background: var(--tvd-surface-2);
}

.tvd-v-chip .tvd-ic {
	width: 13px;
	height: 13px;
}

.tvd-v-chip--sun {
	color: #7c2d12;
	background: #fde68a;
}

.tvd-v-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	padding: 8px 14px;
	border-radius: 10px;
	font-size: 12.5px;
	font-weight: 700;
	color: #fff;
	background: var(--tvd-grad);
	white-space: nowrap;
}

.tvd-v-btn .tvd-ic {
	width: 14px;
	height: 14px;
}

.tvd-v-btn--sm {
	padding: 5px 10px;
	font-size: 11.5px;
}

.tvd-v-btn--block {
	display: flex;
	width: 100%;
	margin-top: 12px;
}

.tvd-v-btn--ghost {
	color: var(--tvd-ink);
	background: var(--tvd-surface-2);
}

.tvd-v-btn--danger {
	background: linear-gradient(120deg, #f43f5e, #e11d48);
}

.tvd-v-btn .tvd-badge {
	margin-left: 2px;
}

.tvd-v-input {
	display: flex;
	align-items: center;
	gap: 8px;
	min-height: 34px;
	padding: 6px 10px;
	border-radius: 9px;
	border: 1px solid var(--tvd-line-2);
	background: var(--tvd-surface);
	font-size: 12.5px;
}

.tvd-v-input .tvd-ic {
	width: 14px;
	height: 14px;
	color: var(--tvd-muted);
}

.tvd-v-input .tvd-v-caret {
	margin-left: auto;
}

.tvd-v-input--sm {
	min-height: 28px;
	font-size: 11.5px;
	color: var(--tvd-muted);
}

.tvd-v-input--area {
	min-height: 56px;
	align-items: flex-start;
}

.tvd-v-inputrow {
	display: flex;
	gap: 8px;
	margin-top: 12px;
}

.tvd-v-inputrow .tvd-v-input {
	flex: 1;
	color: var(--tvd-muted);
}

.tvd-v-field {
	margin-bottom: 10px;
}

.tvd-v-field small {
	margin-bottom: 4px;
}

.tvd-v-dl {
	display: grid;
	gap: 7px;
	margin: 0;
}

.tvd-v-dl div {
	display: flex;
	justify-content: space-between;
	gap: 12px;
	padding-bottom: 7px;
	border-bottom: 1px dashed var(--tvd-line);
}

.tvd-v-dl dt {
	color: var(--tvd-muted);
}

.tvd-v-dl dd {
	margin: 0;
	font-weight: 600;
	text-align: right;
}

.tvd-v-dl--grid {
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 10px 16px;
}

.tvd-v-dl--grid div {
	display: block;
	padding: 0;
	border: 0;
}

.tvd-v-dl--grid dt {
	font-size: 11px;
}

.tvd-v-dl--grid dd {
	text-align: left;
}

.tvd-v-note {
	display: flex;
	align-items: flex-start;
	gap: 6px;
	margin-top: 10px;
	font-size: 11.5px;
	color: var(--tvd-muted);
}

.tvd-v-note .tvd-ic {
	width: 14px;
	height: 14px;
	margin-top: 1px;
	color: var(--tvd-accent);
}

.tvd-v-row {
	display: flex;
	justify-content: space-between;
	gap: 10px;
	padding: 6px 0;
}

.tvd-v-row span {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}

.tvd-v-row.is-minus b {
	color: var(--tvd-free);
}

.tvd-v-row--total {
	margin-top: 4px;
	padding-top: 10px;
	border-top: 1.5px dashed var(--tvd-line-2);
	font-size: 15px;
}

.tvd-v-filters {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

.tvd-v-filters span {
	padding: 4px 10px;
	border-radius: 999px;
	font-size: 11.5px;
	font-weight: 600;
	background: var(--tvd-surface-2);
	color: var(--tvd-muted);
}

.tvd-v-filters span.is-on {
	color: #fff;
	background: var(--tvd-accent);
}

.tvd-v-avatar {
	display: grid;
	place-items: center;
	flex: none;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	font-weight: 700;
	color: #fff;
	background: var(--tvd-grad);
}

.tvd-v-avatar .tvd-ic {
	width: 16px;
	height: 16px;
}

.tvd-v-iconbtn {
	display: grid;
	place-items: center;
	width: 26px;
	height: 26px;
	border-radius: 8px;
	background: var(--tvd-surface-2);
}

.tvd-v-iconbtn .tvd-ic {
	width: 14px;
	height: 14px;
}

.tvd-v-status {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 2px 8px;
	border-radius: 999px;
	font-size: 11px;
	font-weight: 700;
	white-space: nowrap;
}

.tvd-v-status--confirmed {
	color: #065f46;
	background: #d1fae5;
}

.tvd-v-status--pending {
	color: #92400e;
	background: #fef3c7;
}

.tvd-v-status--on_hold {
	color: #5b21b6;
	background: #ede9fe;
}

.tvd-v-status--completed {
	color: #075985;
	background: #e0f2fe;
}

.tvd-v-status--cancelled {
	color: #991b1b;
	background: #fee2e2;
}

.tvd-v-tone--teal {
	background: linear-gradient(135deg, #2dd4bf, #0d9488);
}

.tvd-v-tone--blue {
	background: linear-gradient(135deg, #7dd3fc, #0369a1);
}

.tvd-v-tone--green {
	background: linear-gradient(135deg, #86efac, #15803d);
}

.tvd-v-tone--sun {
	background: linear-gradient(135deg, #fde68a, #f59e0b);
}

.tvd-qr {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 6px;
}

/* Rows that arrive one after another when a panel opens. */
.tvd-show__panel:not([hidden]) [style*="--d"] {
	animation: tvd-v-rise 0.45s var(--tvd-ease) both;
	animation-delay: calc(var(--d) * 70ms + 120ms);
}

@keyframes tvd-v-rise {
	from {
		opacity: 0;
		transform: translateY(6px);
	}
}

/* ------------------------------------------------------- 3. Listings */
.tvd-v-tour {
	padding: 0;
}

.tvd-v-tour__cover {
	position: relative;
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	height: 110px;
	padding: 12px;
	background:
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 110' preserveAspectRatio='none'%3E%3Cpath d='M0 80 L70 40 L120 66 L190 18 L260 60 L330 30 L400 56 L400 110 L0 110Z' fill='%23ffffff' fill-opacity='.25'/%3E%3C/svg%3E") bottom / 100% 70% no-repeat,
		linear-gradient(160deg, #5eead4 0%, #0d9488 45%, #0369a1 100%);
}

.tvd-v-tour__cover .tvd-v-chip {
	position: absolute;
	top: 10px;
	left: 10px;
}

.tvd-v-tour__place {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: 11.5px;
	font-weight: 600;
	color: #fff;
}

.tvd-v-tour__place .tvd-ic {
	width: 13px;
	height: 13px;
}

.tvd-v-tour__head {
	display: flex;
	justify-content: space-between;
	gap: 10px;
	padding: 12px 14px 4px;
}

.tvd-v-price {
	text-align: right;
	white-space: nowrap;
}

.tvd-v-price s {
	display: block;
	font-size: 11px;
	color: var(--tvd-muted);
}

.tvd-v-price b {
	font-size: 17px;
}

.tvd-v-price small {
	display: inline;
}

.tvd-v-steps {
	position: relative;
	display: grid;
	gap: 10px;
	padding: 8px 14px 4px;
}

.tvd-v-steps::before {
	content: "";
	position: absolute;
	left: 26px;
	top: 18px;
	bottom: 18px;
	width: 2px;
	background: linear-gradient(var(--tvd-accent), var(--tvd-accent-2));
	opacity: 0.35;
}

.tvd-v-steps li {
	position: relative;
	display: flex;
	gap: 10px;
}

.tvd-v-steps__dot {
	display: grid;
	place-items: center;
	flex: none;
	width: 26px;
	height: 26px;
	border-radius: 50%;
	font-size: 11px;
	font-weight: 700;
	color: #fff;
	background: var(--tvd-grad);
}

.tvd-v-steps b {
	display: block;
	font-size: 12.5px;
}

.tvd-v-steps em {
	display: block;
	font-size: 11px;
	font-style: normal;
	color: var(--tvd-muted);
}

.tvd-v-incl {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	padding: 10px 14px 14px;
}

.tvd-v-incl span {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 3px 8px;
	border-radius: 999px;
	font-size: 11px;
}

.tvd-v-incl .tvd-ic {
	width: 12px;
	height: 12px;
}

.tvd-v-incl .is-yes {
	color: #065f46;
	background: #d1fae5;
}

.tvd-v-incl .is-no {
	color: #991b1b;
	background: #fee2e2;
}

.tvd-v-hotel__head {
	display: flex;
	gap: 12px;
	margin-bottom: 12px;
}

.tvd-v-hotel__img {
	display: grid;
	place-items: center;
	flex: none;
	width: 74px;
	height: 74px;
	border-radius: 14px;
	color: #fff;
	background: linear-gradient(150deg, #7dd3fc, #0369a1);
}

.tvd-v-stars {
	color: #f59e0b;
	letter-spacing: 1px;
}

.tvd-v-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 5px;
	margin-top: 6px;
}

.tvd-v-tags span {
	padding: 2px 8px;
	border-radius: 999px;
	font-size: 10.5px;
	background: var(--tvd-surface-2);
}

.tvd-v-rooms {
	display: grid;
	gap: 8px;
}

.tvd-v-rooms li {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	gap: 10px;
	padding: 10px;
	border-radius: 12px;
	border: 1px solid var(--tvd-line);
}

.tvd-v-rooms__ic {
	display: grid;
	place-items: center;
	width: 34px;
	height: 34px;
	border-radius: 10px;
	color: var(--tvd-accent);
	background: color-mix(in srgb, var(--tvd-accent) 11%, transparent);
}

.tvd-v-rooms b {
	font-size: 13px;
}

.tvd-v-rooms__price {
	text-align: right;
}

.tvd-v-rooms__price small {
	display: inline;
}

.tvd-v-rooms__price em {
	display: block;
	font-size: 10.5px;
	font-style: normal;
	font-weight: 700;
	color: #e11d48;
}

.tvd-v-search {
	padding: 14px;
}

.tvd-v-search__bar {
	display: flex;
	align-items: stretch;
	gap: 4px;
	padding: 6px;
	border-radius: 16px;
	background: var(--tvd-surface-2);
}

.tvd-v-search__field {
	flex: 1;
	display: flex;
	align-items: center;
	gap: 6px;
	min-width: 0;
	padding: 6px 8px;
	border-radius: 11px;
	background: var(--tvd-surface);
}

.tvd-v-search__field .tvd-ic {
	width: 15px;
	height: 15px;
	color: var(--tvd-accent);
	flex: none;
}

.tvd-v-search__field b {
	display: block;
	font-size: 12px;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.tvd-v-search__go {
	display: grid;
	place-items: center;
	flex: none;
	width: 40px;
	border-radius: 11px;
	color: #fff;
	background: var(--tvd-grad);
}

.tvd-v-search .tvd-v-filters {
	margin: 12px 0;
}

.tvd-v-results {
	display: grid;
	gap: 8px;
}

.tvd-v-results__item {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	gap: 10px;
	padding: 8px;
	border-radius: 12px;
	border: 1px solid var(--tvd-line);
	background: var(--tvd-surface) !important;
}

.tvd-v-results__img {
	position: relative;
	display: block;
	width: 56px;
	height: 46px;
	border-radius: 10px;
}

.tvd-v-results__item.tvd-v-tone--teal .tvd-v-results__img {
	background: linear-gradient(135deg, #2dd4bf, #0d9488);
}

.tvd-v-results__item.tvd-v-tone--blue .tvd-v-results__img {
	background: linear-gradient(135deg, #7dd3fc, #0369a1);
}

.tvd-v-results__item.tvd-v-tone--sun .tvd-v-results__img {
	background: linear-gradient(135deg, #fde68a, #f59e0b);
}

.tvd-v-heart {
	position: absolute;
	right: 4px;
	top: 4px;
	display: grid;
	place-items: center;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	color: #e11d48;
	background: rgba(255, 255, 255, 0.92);
}

.tvd-v-heart .tvd-ic {
	width: 11px;
	height: 11px;
	fill: currentColor;
}

.tvd-v-results b {
	font-size: 12.5px;
}

.tvd-v-results p {
	text-align: right;
}

.tvd-v-results p small {
	display: inline;
}

/* ------------------------------------------------------- 4. Payments */
.tvd-v-phone {
	width: min(270px, 100%);
	margin-inline: auto;
	padding: 10px;
	border-radius: 34px;
	background: #0c1a24;
	box-shadow: var(--tvd-shadow-lg);
}

.tvd-v-phone__notch {
	position: absolute;
	top: 16px;
	left: 50%;
	z-index: 2;
	width: 70px;
	height: 18px;
	margin-left: -35px;
	border-radius: 999px;
	background: #0c1a24;
}

.tvd-v-phone__screen {
	position: relative;
	min-height: 420px;
	padding: 38px 14px 16px;
	border-radius: 26px;
	background: var(--tvd-surface);
	overflow: hidden;
}

.tvd-v-phone--bkash .tvd-v-phone__screen {
	background: linear-gradient(180deg, #e2136e 0 110px, var(--tvd-surface) 110px);
}

.tvd-v-bkash__brand {
	font-size: 22px;
	font-weight: 800;
	text-align: center;
	color: #fff;
	letter-spacing: -0.02em;
}

.tvd-v-bkash__bill {
	display: grid;
	gap: 2px;
	margin: 14px 0;
	padding: 12px;
	border-radius: 14px;
	text-align: center;
	background: var(--tvd-surface);
	box-shadow: var(--tvd-shadow);
}

.tvd-v-bkash__bill b {
	font-size: 22px;
	color: #e2136e;
}

.tvd-v-bkash__steps {
	display: grid;
	gap: 8px;
}

.tvd-v-bkash__steps li {
	display: flex;
	align-items: center;
	gap: 8px;
	color: var(--tvd-muted);
	transition: color 0.3s;
}

.tvd-v-bkash__steps li span {
	display: grid;
	place-items: center;
	width: 22px;
	height: 22px;
	border-radius: 50%;
	font-size: 11px;
	font-weight: 700;
	background: var(--tvd-surface-2);
	transition: background 0.3s, color 0.3s;
}

.tvd-v-bkash__steps li.is-on,
.tvd-v-bkash__steps li.is-done {
	color: var(--tvd-ink);
	font-weight: 600;
}

.tvd-v-bkash__steps li.is-on span {
	color: #fff;
	background: #e2136e;
}

.tvd-v-bkash__steps li.is-done span {
	color: #fff;
	background: var(--tvd-free);
}

.tvd-v-bkash__pin {
	display: flex;
	justify-content: center;
	gap: 8px;
	margin: 16px 0 8px;
}

.tvd-v-bkash__pin i {
	width: 12px;
	height: 12px;
	border-radius: 50%;
	border: 2px solid #e2136e;
}

[data-v-steps].is-pin .tvd-v-bkash__pin i {
	background: #e2136e;
}

.tvd-v-bkash__done {
	display: none;
	align-items: center;
	justify-content: center;
	gap: 8px;
	margin-top: 14px;
	padding: 10px;
	border-radius: 12px;
	font-weight: 700;
	color: var(--tvd-free);
	background: var(--tvd-free-soft);
}

[data-v-steps].is-paid .tvd-v-bkash__done {
	display: flex;
	animation: tvd-bump 0.4s var(--tvd-ease);
}

.tvd-v-ssl__amt {
	margin-left: auto;
	color: var(--tvd-accent);
}

.tvd-v-ssl__grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 6px;
}

.tvd-v-ssl__grid span {
	display: grid;
	place-items: center;
	min-height: 34px;
	padding: 4px;
	border-radius: 9px;
	border: 1.5px solid var(--tvd-line);
	font-size: 10.5px;
	font-weight: 700;
	text-align: center;
}

.tvd-v-ssl__grid span.is-on {
	border-color: #e2136e;
	color: #e2136e;
}

.tvd-v-woo {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: 14px;
}

.tvd-v-radio {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 9px 10px;
	margin-bottom: 6px;
	border-radius: 10px;
	border: 1.5px solid var(--tvd-line);
	font-size: 12px;
}

.tvd-v-radio.is-on {
	border-color: var(--tvd-accent);
}

.tvd-v-radio__dot {
	width: 14px;
	height: 14px;
	border-radius: 50%;
	border: 2px solid var(--tvd-line-2);
}

.tvd-v-radio.is-on .tvd-v-radio__dot {
	border: 4px solid var(--tvd-accent);
}

.tvd-v-deposit__total {
	margin-left: auto;
	font-size: 18px;
}

.tvd-v-deposit__bar {
	height: 12px;
	border-radius: 999px;
	background: var(--tvd-surface-2);
	overflow: hidden;
}

.tvd-v-deposit__bar span {
	display: block;
	height: 100%;
	border-radius: inherit;
	background: var(--tvd-grad);
	transition: width 0.25s var(--tvd-ease);
}

.tvd-v-deposit__range input {
	width: 100%;
	margin: 12px 0 4px;
	accent-color: var(--tvd-accent);
}

.tvd-v-deposit__split {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 10px;
}

.tvd-v-deposit__split div {
	padding: 10px 12px;
	border-radius: 12px;
	background: var(--tvd-surface-2);
}

.tvd-v-deposit__split b {
	font-size: 18px;
	font-variant-numeric: tabular-nums;
}

/* -------------------------------------------------- 5. Admin screens */
.tvd-v-admin .tvd-v-win__bar {
	background: #0c1a24;
	border-color: #0c1a24;
}

.tvd-v-admin .tvd-v-win__bar span {
	color: #a9bfbc;
}

.tvd-v-admin__tools {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	margin-bottom: 10px;
}

.tvd-v-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 12px;
}

.tvd-v-table th {
	padding: 6px 8px;
	font-size: 10.5px;
	font-weight: 700;
	text-align: left;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--tvd-muted);
	background: var(--tvd-surface-2);
}

.tvd-v-table td {
	padding: 9px 8px;
	border-bottom: 1px solid var(--tvd-line);
	vertical-align: top;
}

.tvd-v-table td b {
	display: block;
}

.tvd-v-cal__month {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 13px;
}

.tvd-v-cal {
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
	gap: 3px;
}

.tvd-v-cal__wd {
	padding: 3px;
	font-size: 10px;
	font-weight: 700;
	text-align: center;
	color: var(--tvd-muted);
}

.tvd-v-cal__day {
	display: grid;
	align-content: start;
	gap: 2px;
	min-height: 46px;
	padding: 3px;
	border-radius: 7px;
	border: 1px solid var(--tvd-line);
	font-size: 10px;
	text-align: left;
	color: inherit;
}

.tvd-v-cal__day i {
	font-style: normal;
	font-weight: 600;
}

.tvd-v-cal__day.is-empty {
	border: 0;
}

.tvd-v-chipline {
	display: block;
	padding: 1px 4px;
	border-radius: 4px;
	border-left: 2.5px solid currentColor;
	font-size: 9px;
	font-style: normal;
	line-height: 1.35;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.tvd-v-legend {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-top: 10px;
}

.tvd-v-legend .tvd-v-chipline {
	display: inline-block;
	font-size: 10.5px;
}

.tvd-v-add {
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
	gap: 14px;
}

.tvd-v-add__price {
	padding: 12px;
	border-radius: 12px;
	background: var(--tvd-surface-2);
}

.tvd-v-avail {
	display: grid;
	grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
	gap: 14px;
}

.tvd-v-cal--compact .tvd-v-cal__day {
	min-height: 30px;
	place-items: center;
	cursor: pointer;
	transition: background 0.15s, color 0.15s;
}

.tvd-v-cal--compact .tvd-v-cal__day.is-sel {
	color: #fff;
	border-color: var(--tvd-accent);
	background: var(--tvd-accent);
}

.tvd-v-cal--compact .tvd-v-cal__day.is-out {
	cursor: not-allowed;
	opacity: 0.5;
	background: repeating-linear-gradient(135deg, transparent 0 4px, var(--tvd-line) 4px 5px);
}

.tvd-v-avail__panel {
	padding: 12px;
	border-radius: 12px;
	background: var(--tvd-surface-2);
}

.tvd-v-avail__panel .tvd-v-chip {
	margin-bottom: 10px;
	color: var(--tvd-accent);
	background: var(--tvd-surface);
}

.tvd-v-inbox {
	display: grid;
	gap: 10px;
}

.tvd-v-inbox li {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding: 10px;
	border-radius: 12px;
	border: 1px solid var(--tvd-line);
}

.tvd-v-inbox__body {
	flex: 1;
	min-width: 0;
}

.tvd-v-inbox__body p {
	display: flex;
	align-items: center;
	gap: 8px;
}

.tvd-v-inbox q {
	display: block;
	margin-top: 6px;
	padding: 6px 8px;
	border-radius: 8px;
	font-size: 12px;
	background: var(--tvd-surface-2);
}

.tvd-v-kpis {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 8px;
}

.tvd-v-kpis--3 {
	grid-template-columns: repeat(3, minmax(0, 1fr));
	margin: 10px 0;
}

.tvd-v-kpis p {
	padding: 9px 10px;
	border-radius: 11px;
	background: var(--tvd-surface-2);
}

.tvd-v-kpis b {
	display: block;
	font-size: 15px;
	font-variant-numeric: tabular-nums;
}

.tvd-v-bars {
	display: flex;
	align-items: flex-end;
	gap: 5px;
	height: 110px;
	margin: 14px 0;
	padding-bottom: 4px;
	border-bottom: 1px solid var(--tvd-line);
}

.tvd-v-bars span {
	flex: 1;
	height: var(--h);
	border-radius: 5px 5px 2px 2px;
	background: linear-gradient(180deg, #2dd4bf, var(--tvd-accent));
	transform-origin: bottom;
}

.tvd-show__panel:not([hidden]) .tvd-v-bars span {
	animation: tvd-v-grow 0.6s var(--tvd-ease) both;
	animation-delay: calc(var(--d) * 40ms + 150ms);
}

@keyframes tvd-v-grow {
	from {
		transform: scaleY(0);
	}
}

.tvd-v-top {
	display: grid;
	gap: 8px;
}

.tvd-v-top li {
	display: grid;
	grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
	align-items: center;
	gap: 10px;
	font-size: 12px;
}

.tvd-v-top li span:first-child {
	display: flex;
	align-items: center;
	gap: 6px;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.tvd-v-top i {
	display: grid;
	place-items: center;
	flex: none;
	width: 18px;
	height: 18px;
	border-radius: 6px;
	font-size: 10px;
	font-style: normal;
	font-weight: 700;
	color: var(--tvd-accent);
	background: color-mix(in srgb, var(--tvd-accent) 12%, transparent);
}

.tvd-v-top__bar {
	height: 7px;
	border-radius: 999px;
	background: var(--tvd-surface-2);
	overflow: hidden;
}

.tvd-v-top__bar span {
	display: block;
	height: 100%;
	border-radius: inherit;
	background: var(--tvd-grad);
}

/* ------------------------------------------------------- 6. Messages */
.tvd-v-mail__from {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 12px;
}

.tvd-v-mail__from b {
	display: block;
	font-size: 13px;
}

.tvd-v-mail__card {
	padding: 16px;
	border-radius: 14px;
	text-align: center;
	background: var(--tvd-surface-2);
}

.tvd-v-mail__hero {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	font-size: 17px;
	font-weight: 800;
	color: var(--tvd-accent);
}

.tvd-v-mail__hello {
	margin: 6px 0 12px;
	color: var(--tvd-muted);
}

.tvd-v-mail__card .tvd-v-dl {
	margin-bottom: 14px;
	padding: 10px 12px;
	border-radius: 12px;
	text-align: left;
	background: var(--tvd-surface);
}

.tvd-v-chat__head {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: -4px -14px 10px;
	padding: 0 14px 10px;
	border-bottom: 1px solid var(--tvd-line);
}

.tvd-v-phone--whatsapp .tvd-v-phone__screen {
	background: #ece5dd;
}

.tvd-v-phone--whatsapp .tvd-v-chat__head {
	margin-top: -38px;
	padding-top: 40px;
	color: #fff;
	background: #075e54;
	border: 0;
}

.tvd-v-phone--whatsapp .tvd-v-avatar {
	background: #25d366;
}

.tvd-v-chat {
	display: grid;
	gap: 8px;
}

.tvd-v-chat li {
	max-width: 88%;
	padding: 8px 10px 6px;
	border-radius: 14px;
	font-size: 12.5px;
	line-height: 1.45;
	box-shadow: 0 1px 1px rgba(0, 0, 0, 0.06);
}

.tvd-v-chat li small {
	margin-top: 2px;
	text-align: right;
	font-size: 10px;
}

.tvd-v-chat li.is-in {
	justify-self: start;
	background: var(--tvd-surface-2);
	border-bottom-left-radius: 4px;
}

.tvd-v-chat li.is-out {
	justify-self: end;
	background: #d9fdd3;
	color: #0c1a24;
	border-bottom-right-radius: 4px;
}

.tvd-v-phone--whatsapp .tvd-v-chat li.is-in {
	background: #fff;
	color: #0c1a24;
}

/* ------------------------------------------------------ 7. Documents */
.tvd-v-ticket {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 128px;
}

.tvd-v-ticket__main {
	padding: 16px;
}

.tvd-v-ticket__brand {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-bottom: 10px;
	font-size: 12.5px;
}

.tvd-v-ticket__brand .tvd-logo__mark {
	width: 26px;
	height: 26px;
}

.tvd-v-ticket__brand .tvd-v-status {
	margin-left: auto;
}

.tvd-v-ticket .tvd-v-title {
	margin-bottom: 12px;
}

.tvd-v-ticket__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-top: 14px;
}

.tvd-v-ticket__stub {
	position: relative;
	display: grid;
	align-content: center;
	justify-items: center;
	gap: 8px;
	padding: 14px;
	border-left: 2px dashed var(--tvd-line-2);
	background: var(--tvd-surface-2);
	font-family: var(--tvd-mono);
	font-size: 11px;
}

.tvd-v-ticket__stub::before,
.tvd-v-ticket__stub::after {
	content: "";
	position: absolute;
	left: -10px;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: var(--tvd-bg);
}

.tvd-v-ticket__stub::before {
	top: -9px;
}

.tvd-v-ticket__stub::after {
	bottom: -9px;
}

.tvd-v-ticket__stub .tvd-qr {
	width: 96px;
}

.tvd-v-pdf {
	background: #525659;
	padding: 0 14px 14px;
}

.tvd-v-pdf__bar {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 10px 0;
	color: #e5e7eb;
	font-size: 12px;
}

.tvd-v-pdf__bar .tvd-v-btn {
	margin-left: auto;
}

.tvd-v-pdf__page {
	padding: 18px;
	border-radius: 4px;
	background: #fff;
	color: #0c1a24;
	box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
	font-family: "Tourivo Demo Bangla", var(--tvd-font);
}

.tvd-v-pdf__page small {
	color: #56656f;
}

.tvd-v-pdf__head {
	display: flex;
	justify-content: space-between;
	gap: 10px;
	padding-bottom: 12px;
	margin-bottom: 12px;
	border-bottom: 2px solid #0d9488;
}

.tvd-v-pdf__no {
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-align: right;
	color: #0d9488;
}

.tvd-v-pdf__no b {
	display: block;
	font-size: 12px;
	letter-spacing: 0;
	color: #0c1a24;
}

.tvd-v-pdf__to {
	margin-bottom: 8px;
}

.tvd-v-pdf__page .tvd-v-row {
	border-bottom: 1px solid #e5e7eb;
}

.tvd-v-scan {
	position: relative;
	width: 170px;
	margin: 14px auto;
	padding: 14px;
	border-radius: 16px;
	background: #0c1a24;
	overflow: hidden;
}

.tvd-v-scan__line {
	position: absolute;
	left: 10px;
	right: 10px;
	top: 14px;
	height: 3px;
	border-radius: 3px;
	background: #34d399;
	box-shadow: 0 0 12px 2px rgba(52, 211, 153, 0.8);
	animation: tvd-v-scan 2.2s ease-in-out infinite;
}

@keyframes tvd-v-scan {
	50% {
		top: calc(100% - 17px);
	}
}

.tvd-v-scan__corners {
	position: absolute;
	inset: 6px;
	border-radius: 12px;
	background:
		linear-gradient(#34d399, #34d399) top left / 18px 3px,
		linear-gradient(#34d399, #34d399) top left / 3px 18px,
		linear-gradient(#34d399, #34d399) top right / 18px 3px,
		linear-gradient(#34d399, #34d399) top right / 3px 18px,
		linear-gradient(#34d399, #34d399) bottom left / 18px 3px,
		linear-gradient(#34d399, #34d399) bottom left / 3px 18px,
		linear-gradient(#34d399, #34d399) bottom right / 18px 3px,
		linear-gradient(#34d399, #34d399) bottom right / 3px 18px;
	background-repeat: no-repeat;
}

.tvd-v-scan__result {
	display: grid;
	justify-items: center;
	gap: 6px;
	text-align: center;
}

.tvd-v-scan__ok {
	display: flex;
	align-items: center;
	gap: 6px;
	color: var(--tvd-free);
	font-size: 15px;
}

/* --------------------------------------------- 8. Traveler & builders */
.tvd-v-lookup__result {
	display: flex;
	gap: 10px;
	margin-top: 14px;
	padding: 10px;
	border-radius: 12px;
	border: 1px solid var(--tvd-line);
}

.tvd-v-lookup__result b {
	font-size: 13px;
}

.tvd-v-lookup__result p {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-top: 6px;
}

.tvd-v-lookup .tvd-v-results__img {
	flex: none;
	width: 52px;
	height: 52px;
	background: linear-gradient(135deg, #2dd4bf, #0d9488);
}

.tvd-v-portal .tvd-v-kpis p {
	text-align: center;
}

.tvd-v-portal .tvd-v-filters {
	margin-bottom: 10px;
}

.tvd-v-trips {
	display: grid;
	gap: 8px;
}

.tvd-v-trips li {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto auto;
	align-items: center;
	gap: 8px;
	padding: 10px;
	border-radius: 12px;
	border: 1px solid var(--tvd-line);
}

.tvd-v-trips b {
	font-size: 12.5px;
}

.tvd-v-inserter .tvd-v-input {
	margin-bottom: 12px;
}

.tvd-v-tiles {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 8px;
}

.tvd-v-tiles--2 {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.tvd-v-tiles span {
	display: grid;
	justify-items: center;
	gap: 6px;
	padding: 12px 6px;
	border-radius: 12px;
	border: 1px solid var(--tvd-line);
	text-align: center;
	transition: border-color 0.2s, transform 0.2s var(--tvd-ease);
}

.tvd-v-tiles span:hover {
	transform: translateY(-2px);
	border-color: var(--tvd-accent);
}

.tvd-v-tiles .tvd-ic {
	width: 20px;
	height: 20px;
	color: var(--tvd-accent);
}

.tvd-v-tiles small {
	font-size: 11px;
	color: var(--tvd-ink);
}

.tvd-v-elementor {
	display: grid;
	grid-template-columns: 170px minmax(0, 1fr);
	gap: 12px;
	padding: 0;
}

.tvd-v-elementor__panel {
	padding: 12px;
	background: var(--tvd-surface-2);
}

.tvd-v-elementor__canvas {
	display: grid;
	align-content: start;
	gap: 12px;
	padding: 14px 14px 14px 0;
}

.tvd-v-drop {
	display: grid;
	place-items: center;
	height: 60px;
	border-radius: 12px;
	border: 2px dashed color-mix(in srgb, var(--tvd-accent) 45%, transparent);
	color: var(--tvd-accent);
}

.tvd-v-minigrid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 8px;
}

.tvd-v-minigrid i {
	display: block;
	height: 74px;
	border-radius: 10px;
}

.tvd-v-codes {
	display: grid;
	gap: 0;
	max-height: 440px;
	overflow-y: auto;
	padding: 6px 12px;
}

.tvd-v-codes li {
	padding: 8px 0;
	border-bottom: 1px solid var(--tvd-line);
}

.tvd-v-codes li:last-child {
	border-bottom: 0;
}

.tvd-v-codes .tvd-code {
	margin-top: 4px;
}

.tvd-v-home__hero {
	display: grid;
	gap: 10px;
	padding: 18px 14px;
	border-radius: 14px;
	color: #fff;
	text-align: center;
	background:
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 110' preserveAspectRatio='none'%3E%3Cpath d='M0 80 L70 40 L120 66 L190 18 L260 60 L330 30 L400 56 L400 110 L0 110Z' fill='%23ffffff' fill-opacity='.2'/%3E%3C/svg%3E") bottom / 100% 60% no-repeat,
		linear-gradient(160deg, #5eead4, #0d9488 50%, #0369a1);
}

.tvd-v-home__hero b {
	font-size: 17px;
}

.tvd-v-search__bar--mini {
	display: flex;
	padding: 4px;
	border-radius: 12px;
	background: #fff;
}

.tvd-v-search__bar--mini .tvd-v-input {
	flex: 1;
	border: 0;
	color: #56656f;
}

.tvd-v-dests {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 8px;
	margin-bottom: 12px;
}

.tvd-v-dests span {
	display: grid;
	place-items: end start;
	height: 64px;
	padding: 6px 8px;
	border-radius: 11px;
	font-size: 11.5px;
	font-weight: 700;
	color: #fff;
	text-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
}

@media (max-width: 640px) {
	.tvd-v-woo,
	.tvd-v-add,
	.tvd-v-avail,
	.tvd-v-elementor {
		grid-template-columns: 1fr;
	}

	.tvd-v-elementor__canvas {
		padding: 0 14px 14px;
	}

	.tvd-v-kpis,
	.tvd-v-tiles {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.tvd-v-ticket {
		grid-template-columns: 1fr;
	}

	.tvd-v-ticket__stub {
		border-left: 0;
		border-top: 2px dashed var(--tvd-line-2);
	}

	.tvd-v-ticket__stub::before,
	.tvd-v-ticket__stub::after {
		display: none;
	}

	.tvd-v-search__field small {
		display: none;
	}

	.tvd-v-cal__day {
		min-height: 34px;
	}

	.tvd-v-chipline {
		font-size: 0;
		height: 4px;
		padding: 0;
	}

	.tvd-v-table th:nth-child(2),
	.tvd-v-table td:nth-child(2) {
		display: none;
	}
}
