@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=Playfair+Display:ital,wght@0,400;0,600;0,700;1,400&display=swap');

/* ==========================================================================
   TBTB Shows Frontend Design System
   ========================================================================== */

/* Variables */
:root {
	--tbtb-primary: #7240c9;
	--tbtb-primary-hover: #5d31ab;
	--tbtb-gold: #d9a836;
	--tbtb-gold-hover: #cca338;
	--tbtb-gold-light: #fbf5e6;
	--tbtb-dark: #141414;
	--tbtb-dark-gray: #1e1e1e;
	--tbtb-light-gray: #f4f4f4;
	--tbtb-text: #333333;
	--tbtb-text-light: #e0e0e0;
	--tbtb-text-muted: #666666;
	--tbtb-text-muted-light: #b0b0b0;
	--tbtb-border: #e5e5e5;
	--tbtb-border-dark: #333333;
	--tbtb-font-serif: 'Playfair Display', Georgia, serif;
	--tbtb-font-sans: 'Outfit', 'Inter', system-ui, -apple-system, sans-serif;
	scroll-behavior: smooth;
}

/* Base resets & helper styles */
html, body {
	overflow-x: hidden;
}

.tbtb-archive-wrapper, .tbtb-single {
	font-family: var(--tbtb-font-sans);
	color: var(--tbtb-text);
	line-height: 1.6;
	background: #fff;
	overflow-x: hidden;
}

.tbtb-archive-wrapper {
	width: 100vw;
	position: relative;
	left: 50%;
	right: 50%;
	margin-left: -50vw;
	margin-right: -50vw;
	box-sizing: border-box;
}

.tbtb-archive-wrapper * {
	box-sizing: border-box;
}

/* ==========================================================================
   Archive Page Featured Banner & Nav Bar
   ========================================================================== */

/* Top Featured Banner */
.tbtb-archive-featured-banner {
	position: relative;
	background-size: cover;
	background-position: center;
	height: 480px;
	display: flex;
	align-items: center;
	justify-content: center;
	color: #fff;
	text-align: center;
	margin-bottom: 20px;
	border-radius: 0 0 50% 50% / 0 0 30px 30px;
	overflow: hidden;
	box-shadow: 0 10px 30px rgba(0,0,0,0.15);
}

.tbtb-featured-banner-overlay {
	position: absolute;
	inset: 0;
	background: radial-gradient(circle, rgba(0,0,0,0.4) 0%, rgba(0,0,0,0.85) 100%);
	z-index: 1;
}

.tbtb-featured-banner-content {
	position: relative;
	z-index: 2;
	max-width: 800px;
	padding: 0 20px;
}

.tbtb-featured-badge {
	display: inline-block;
	background: var(--tbtb-gold);
	color: #141414;
	font-weight: 700;
	text-transform: uppercase;
	font-size: 0.75rem;
	padding: 6px 18px;
	border-radius: 20px;
	margin-bottom: 15px;
	letter-spacing: 1px;
	box-shadow: 0 4px 10px rgba(217, 168, 54, 0.3);
}

.tbtb-featured-title {
	font-family: var(--tbtb-font-serif);
	font-size: 3.5rem;
	margin: 0;
	color: #fff;
	text-shadow: 0 4px 15px rgba(0,0,0,0.6);
	line-height: 1.2;
}

.tbtb-featured-subtitle {
	font-size: 1.3rem;
	margin: 12px 0 0;
	color: #e0e0e0;
	text-shadow: 0 2px 5px rgba(0,0,0,0.5);
}

.tbtb-featured-dates {
	font-size: 1.1rem;
	color: var(--tbtb-gold);
	margin: 15px 0 0;
	font-weight: 700;
	letter-spacing: 0.5px;
}

/* Sticky/Scrollable Navigation Bar - Frosted Glass Console */
.tbtb-archive-nav-bar {
	position: sticky;
	top: 0;
	z-index: 999;
	background: rgba(10, 10, 10, 0.75);
	backdrop-filter: blur(20px) saturate(180%);
	-webkit-backdrop-filter: blur(20px) saturate(180%);
	padding: 16px 0;
	border-bottom: 1px solid rgba(255, 255, 255, 0.08);
	box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
	width: 100vw;
	margin-left: calc(-50vw + 50%);
	margin-right: calc(-50vw + 50%);
}

.admin-bar .tbtb-archive-nav-bar {
	top: 32px;
}
@media screen and (max-width: 782px) {
	.admin-bar .tbtb-archive-nav-bar {
		top: 46px;
	}
}

.tbtb-archive-nav-bar-inner {
	max-width: 1200px;
	margin: 0 auto;
	padding: 0 24px;
	display: flex;
	gap: 14px;
	overflow-x: auto;
	scrollbar-width: none;
}

@media (min-width: 768px) {
	.tbtb-archive-nav-bar-inner {
		justify-content: center;
	}
}

.tbtb-archive-nav-bar-inner::-webkit-scrollbar {
	display: none;
}

.tbtb-nav-pill {
	display: inline-block;
	padding: 10px 26px;
	background: rgba(255, 255, 255, 0.04);
	color: #e0e0e0;
	text-decoration: none;
	border-radius: 30px;
	font-size: 0.85rem;
	font-weight: 600;
	white-space: nowrap;
	transition: all 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);
	border: 1px solid rgba(255, 255, 255, 0.08);
	box-shadow: 0 4px 10px rgba(0,0,0,0.1);
}

.tbtb-nav-pill:hover {
	background: rgba(255, 255, 255, 0.1);
	color: #ffffff;
	border-color: rgba(255, 255, 255, 0.3);
	transform: translateY(-2px);
	box-shadow: 0 6px 15px rgba(0, 0, 0, 0.2);
}

/* ==========================================================================
   Archive Hero & Intro Header
   ========================================================================== */
.tbtb-archive-hero {
	max-width: 1000px;
	margin: 50px auto 80px;
	padding: 0 20px;
	position: relative;
}

.tbtb-archive-hero-inner {
	display: flex;
	flex-wrap: wrap;
	background: var(--tbtb-dark-gray);
	border: 1px solid rgba(255,255,255,0.06);
	border-radius: 20px;
	overflow: hidden;
	box-shadow: 0 20px 40px rgba(0,0,0,0.25);
}

.tbtb-archive-hero-video-col {
	flex: 1 1 500px;
	min-height: 280px;
	position: relative;
	background: #000;
	overflow: hidden;
}

.tbtb-video-aspect-wrapper {
	position: relative;
	width: 100%;
	height: 0;
	padding-bottom: 56.25%; /* 16:9 Aspect Ratio */
}

@supports (aspect-ratio: 16/9) {
	.tbtb-video-aspect-wrapper {
		aspect-ratio: 16/9;
		height: auto;
		padding-bottom: 0;
	}
}

.tbtb-video-aspect-wrapper iframe {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

.tbtb-archive-hero-text-col {
	flex: 1 1 400px;
	padding: 40px;
	display: flex;
	flex-direction: column;
	justify-content: center;
	color: #f5f5f5;
}

.tbtb-hero-video-title {
	font-family: var(--tbtb-font-serif);
	font-size: 2rem;
	color: var(--tbtb-gold);
	margin: 0 0 15px;
	line-height: 1.2;
}

.tbtb-hero-desc {
	color: var(--tbtb-text-muted-light);
	font-size: 0.95rem;
	margin: 0 0 20px;
	line-height: 1.6;
}

.tbtb-hero-gold-bullets {
	list-style: none;
	padding: 0;
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.tbtb-hero-gold-bullets li {
	position: relative;
	padding-left: 24px;
	color: #e0e0e0;
	font-size: 0.9rem;
	line-height: 1.4;
}

.tbtb-hero-gold-bullets li::before {
	content: "✦";
	position: absolute;
	left: 0;
	top: 0;
	color: var(--tbtb-gold);
	font-weight: bold;
	font-size: 1rem;
}

.tbtb-hero-gold-bullets li strong {
	color: #fff;
	font-weight: 700;
}

/* Overlapping White Season Card */
.tbtb-season-overview-card {
	display: flex;
	flex-wrap: wrap;
	background: #ffffff;
	border: 1px solid var(--tbtb-border);
	border-radius: 16px;
	padding: 30px 40px;
	box-shadow: 0 15px 40px rgba(0,0,0,0.08);
	margin: -40px auto 0;
	position: relative;
	z-index: 20;
	max-width: 900px;
	gap: 24px;
	align-items: center;
}

.tbtb-season-overview-logo-col {
	flex-shrink: 0;
	display: flex;
	align-items: center;
	justify-content: center;
}

.tbtb-overview-mini-logo {
	width: 80px;
	height: 80px;
	border-radius: 50%;
	background-size: cover;
	background-position: center;
	border: 3px solid var(--tbtb-gold);
	box-shadow: 0 4px 12px rgba(0,0,0,0.1);
}

.tbtb-overview-mini-logo.default-logo-icon {
	background-color: var(--tbtb-gold-light);
	position: relative;
}

.tbtb-overview-mini-logo.default-logo-icon::before {
	content: "🎭";
	font-size: 2rem;
	display: flex;
	align-items: center;
	justify-content: center;
	height: 100%;
}

.tbtb-season-overview-text-col {
	flex: 1 1 500px;
}

.tbtb-overview-title {
	font-family: var(--tbtb-font-serif);
	font-size: 1.8rem;
	color: var(--tbtb-dark-gray);
	margin: 0 0 6px;
	line-height: 1.2;
}

.tbtb-overview-desc {
	color: var(--tbtb-text-muted);
	font-size: 0.95rem;
	margin: 0 0 15px;
	line-height: 1.6;
}

.tbtb-gold-btn.tbtb-gold-btn--small {
	padding: 10px 24px;
	font-size: 0.75rem;
	letter-spacing: 1px;
}

.tbtb-archive-section-title {
	text-align: center;
	margin: 60px auto 40px;
	position: relative;
	scroll-margin-top: 100px; /* Offset for sticky nav bar */
}

.tbtb-archive-section-title h2 {
	font-family: var(--tbtb-font-serif);
	font-size: 2.5rem;
	color: var(--tbtb-dark-gray);
	display: inline-block;
	position: relative;
	margin: 0;
}

.tbtb-archive-section-title h2::after {
	content: "";
	position: absolute;
	bottom: -12px;
	left: 50%;
	transform: translateX(-50%);
	width: 80px;
	height: 3px;
	background: var(--tbtb-gold);
	border-radius: 2px;
}

/* ==========================================================================
   Program List Stack (Elementor Mimic Layout)
   ========================================================================== */
.tbtb-program-list {
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 0;
}

.tbtb-program-item {
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 0;
	position: relative;
	scroll-margin-top: 100px;
}

/* Themes for each section background */
.tbtb-program-item.tbtb-theme-1 { background-color: #f7f7f7; }
.tbtb-program-item.tbtb-theme-2 { background: linear-gradient(180deg, #261611 0%, #0d0705 100%); }
.tbtb-program-item.tbtb-theme-3 { background: linear-gradient(180deg, #ede6d8 0%, #d8caa7 100%); }
.tbtb-program-item.tbtb-theme-4 { background-color: #dfc58b; }
.tbtb-program-item.tbtb-theme-5 { background-color: #0b0b0b; }

/* Mimic Layout Wrapper */
.tbtb-elementor-mimic-layout {
	position: relative;
	width: 100%;
	padding-bottom: 60px;
}

/* Shape Divider Top */
.tbtb-shape-divider-top {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	overflow: hidden;
	line-height: 0;
	transform: translateY(-99%);
	z-index: 1;
}

.tbtb-shape-divider-top svg {
	display: block;
	width: calc(100% + 1.3px);
	height: 97px;
	position: relative;
	left: 50%;
	transform: translateX(-50%);
}

.tbtb-shape-divider-top .elementor-shape-fill {
	/* The fill color should match the background of THIS section */
	fill: currentColor; 
}

/* Fill Colors for Themes */
.tbtb-theme-1 .tbtb-shape-divider-top .elementor-shape-fill { fill: #f7f7f7; }
.tbtb-theme-2 .tbtb-shape-divider-top .elementor-shape-fill { fill: #261611; }
.tbtb-theme-3 .tbtb-shape-divider-top .elementor-shape-fill { fill: #ede6d8; }
.tbtb-theme-4 .tbtb-shape-divider-top .elementor-shape-fill { fill: #dfc58b; }
.tbtb-theme-5 .tbtb-shape-divider-top .elementor-shape-fill { fill: #0b0b0b; }


/* Content Wrap inside Mimic Layout */
.tbtb-elementor-mimic-content-wrap {
	max-width: 1140px;
	margin: 0 auto;
	padding: 40px 20px;
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
}

/* Image */
.tbtb-program-mimic-image {
	margin-bottom: 30px;
	width: 100%;
	max-width: 800px;
}

.tbtb-program-mimic-image img {
	max-width: 100%;
	height: auto;
	display: block;
	margin: 0 auto;
}

/* Headers */
.tbtb-program-mimic-header {
	margin-bottom: 30px;
	width: 100%;
	max-width: 800px;
}

.tbtb-mimic-title {
	font-family: var(--tbtb-font-sans);
	font-size: 28px;
	font-weight: 700;
	margin: 0 0 15px;
	line-height: 1.3;
}

.tbtb-card-light .tbtb-mimic-title { color: #111; }
.tbtb-card-dark .tbtb-mimic-title { color: #fff; }

.tbtb-mimic-meta-row {
	display: flex;
	flex-direction: column;
	gap: 5px;
}

.tbtb-mimic-meta-heading {
	font-family: var(--tbtb-font-sans);
	font-size: 18px;
	font-weight: 600;
	margin: 0;
	line-height: 1.4;
}

.tbtb-card-light .tbtb-mimic-meta-heading { color: #333; }
.tbtb-card-dark .tbtb-mimic-meta-heading { color: #e0e0e0; }

/* Description */
.tbtb-program-mimic-desc {
	width: 100%;
	max-width: 800px;
	font-size: 16px;
	line-height: 1.8;
	text-align: left;
}

.tbtb-card-light .tbtb-program-mimic-desc { color: #444; }
.tbtb-card-dark .tbtb-program-mimic-desc { color: #ccc; }

.tbtb-program-mimic-desc p {
	margin-bottom: 20px;
}

/* Button */
.tbtb-program-mimic-actions {
	margin-top: 30px;
	text-align: center;
}

.tbtb-mimic-btn {
	display: inline-block;
	background-color: var(--tbtb-primary);
	color: #fff;
	padding: 12px 24px;
	font-size: 14px;
	font-weight: 600;
	border-radius: 4px;
	text-decoration: none;
	transition: background-color 0.3s ease;
}

.tbtb-mimic-btn:hover {
	background-color: var(--tbtb-primary-hover);
	color: #fff;
}

/* Adjust subheadings inside Mimic Layout */
.tbtb-card-light .tbtb-sub-heading {
	color: var(--tbtb-dark-gray);
	border-bottom: 1px solid rgba(0,0,0,0.08);
}
.tbtb-card-dark .tbtb-sub-heading {
	color: #ffffff;
	border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.tbtb-card-dark .tbtb-person-name-small { color: #ffffff; }
.tbtb-card-dark .tbtb-person-role-small { color: var(--tbtb-gold); }

/* Card Section Subheadings */
.tbtb-sub-heading {
	font-family: var(--tbtb-font-serif);
	font-size: 1.4rem;
	margin: 45px 0 20px;
	padding-bottom: 10px;
	font-weight: 600;
	letter-spacing: 0.5px;
}

/* Description Text spacing */
.tbtb-program-desc {
	font-size: 1.05rem;
	line-height: 1.75;
}

.tbtb-program-desc p {
	margin-top: 0;
	margin-bottom: 1.5em;
}

.tbtb-program-desc p:last-child {
	margin-bottom: 0;
}

/* ==========================================================================
   Sponsors Inside Card - Grayscale to Color
   ========================================================================== */
.tbtb-program-sponsors-section {
	margin-top: 45px;
	border-top: 1px solid rgba(0,0,0,0.06);
	padding-top: 30px;
}

.tbtb-card-dark .tbtb-program-sponsors-section {
	border-top: 1px solid rgba(255,255,255,0.08);
}

.tbtb-program-sponsors-row {
	display: flex;
	flex-wrap: wrap;
	gap: 18px;
	align-items: center;
}

.tbtb-sponsor-logo-wrap {
	background: #ffffff;
	padding: 12px 24px;
	border-radius: 12px;
	display: flex;
	align-items: center;
	justify-content: center;
	border: 1px solid rgba(0,0,0,0.05);
	box-shadow: 0 4px 10px rgba(0,0,0,0.02);
	transition: all 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);
	filter: grayscale(100%) opacity(0.4);
}

.tbtb-sponsor-logo-wrap:hover {
	filter: grayscale(0%) opacity(1);
	transform: translateY(-4px) scale(1.05);
	box-shadow: 0 10px 25px rgba(0,0,0,0.08);
	border-color: rgba(0,0,0,0.1);
}

.tbtb-sponsor-logo-wrap img {
	max-height: 48px;
	width: auto;
	object-fit: contain;
}

/* ==========================================================================
   Creative Team / People Inside Card - Gradient Border Rings
   ========================================================================== */
.tbtb-program-people-section {
	margin-top: 45px;
}

.tbtb-program-people-row {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));
	gap: 24px;
}

.tbtb-program-person-col {
	text-align: center;
}

.tbtb-person-portrait-wrap {
	width: 86px;
	height: 86px;
	border-radius: 50%;
	position: relative;
	padding: 3px; /* Border spacing */
	margin: 0 auto 12px;
	background: linear-gradient(135deg, var(--tbtb-gold) 0%, var(--tbtb-primary) 100%);
	box-shadow: 0 8px 20px rgba(0,0,0,0.15);
	transition: transform 0.5s cubic-bezier(0.165, 0.84, 0.44, 1), box-shadow 0.5s cubic-bezier(0.165, 0.84, 0.44, 1);
}

.tbtb-person-portrait-wrap img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: 50%;
	display: block;
	background: #1e1e1e;
}

.tbtb-program-person-col:hover .tbtb-person-portrait-wrap {
	transform: scale(1.12) rotate(4deg);
	box-shadow: 0 12px 28px rgba(114, 64, 201, 0.3);
}

.tbtb-person-meta {
	font-size: 0.8rem;
	line-height: 1.35;
}

.tbtb-person-name-small {
	display: block;
	font-weight: 700;
	color: var(--tbtb-dark-gray);
}

.tbtb-person-role-small {
	display: inline-block;
	background: rgba(114, 64, 201, 0.08);
	color: var(--tbtb-primary);
	padding: 2px 8px;
	border-radius: 12px;
	font-size: 0.68rem;
	font-weight: 600;
	margin-top: 4px;
	border: 1px solid rgba(114, 64, 201, 0.08);
}

.tbtb-card-dark .tbtb-person-role-small {
	background: rgba(217, 168, 54, 0.12);
	color: var(--tbtb-gold);
	border: 1px solid rgba(217, 168, 54, 0.12);
}

/* ==========================================================================
   Schedule Grid Box Inside Card - Glowing Pods
   ========================================================================== */
.tbtb-program-highlights {
	border-radius: 16px;
	padding: 0;
	margin: 45px 0;
}

.tbtb-highlights-title {
	margin: 0 0 18px;
	font-weight: 700;
	text-transform: uppercase;
	font-size: 0.85rem;
	letter-spacing: 1.5px;
	color: var(--tbtb-gold);
}

.tbtb-venue-summary-box {
	font-size: 0.95rem;
	margin-bottom: 24px;
	line-height: 1.6;
}

.tbtb-schedule-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
	gap: 20px;
	margin-top: 20px;
}

.tbtb-schedule-box {
	border-radius: 14px;
	padding: 22px;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	align-items: center;
	text-align: center;
	transition: all 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);
	position: relative;
	box-shadow: 0 4px 15px rgba(0,0,0,0.02);
}

.tbtb-card-light .tbtb-schedule-box {
	background: rgba(255, 255, 255, 0.5);
	border: 1px solid rgba(0, 0, 0, 0.06);
	backdrop-filter: blur(5px);
}

.tbtb-card-light .tbtb-schedule-box:hover {
	background: #ffffff;
	border-color: var(--tbtb-gold);
	transform: translateY(-5px);
	box-shadow: 0 15px 30px rgba(217, 168, 54, 0.15);
}

.tbtb-card-dark .tbtb-schedule-box {
	background: rgba(255, 255, 255, 0.03);
	border: 1px solid rgba(255, 255, 255, 0.05);
	backdrop-filter: blur(5px);
}

.tbtb-card-dark .tbtb-schedule-box:hover {
	background: rgba(255, 255, 255, 0.06);
	border-color: var(--tbtb-gold);
	transform: translateY(-5px);
	box-shadow: 0 15px 35px rgba(217, 168, 54, 0.25);
}

.tbtb-schedule-date {
	font-weight: 700;
	font-size: 1rem;
	margin-bottom: 6px;
	display: block;
}

.tbtb-schedule-time {
	font-size: 0.85rem;
	font-weight: 600;
	margin-bottom: 6px;
	display: block;
	color: var(--tbtb-primary);
}

.tbtb-card-dark .tbtb-schedule-time {
	color: var(--tbtb-gold);
}

.tbtb-schedule-note {
	font-size: 0.78rem;
	opacity: 0.8;
	margin-bottom: 16px;
	display: block;
	line-height: 1.4;
}

.tbtb-schedule-ticket-btn {
	display: inline-block;
	background: linear-gradient(135deg, var(--tbtb-gold) 0%, #e2b34a 100%);
	color: #141414 !important;
	font-size: 0.75rem;
	padding: 8px 22px;
	border-radius: 20px;
	font-weight: 700;
	text-decoration: none;
	transition: all 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);
	margin-top: auto;
	box-shadow: 0 4px 12px rgba(217, 168, 54, 0.2);
	text-transform: uppercase;
	letter-spacing: 0.5px;
	border: none;
}

.tbtb-schedule-ticket-btn:hover {
	transform: scale(1.06);
	box-shadow: 0 8px 20px rgba(217, 168, 54, 0.4);
	filter: brightness(1.05);
}

/* Action Container */
.tbtb-program-card-actions {
	text-align: center;
	margin-top: 35px;
}

/* Gold Theme Button */
.tbtb-gold-btn {
	display: inline-block;
	background: linear-gradient(135deg, var(--tbtb-gold) 0%, #e2b34a 100%);
	color: #141414 !important;
	text-transform: uppercase;
	font-weight: 700;
	letter-spacing: 1.5px;
	font-size: 0.85rem;
	padding: 16px 42px;
	border-radius: 35px;
	text-decoration: none;
	transition: all 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);
	box-shadow: 0 8px 25px rgba(217, 168, 54, 0.25);
	border: 1px solid rgba(255,255,255,0.1);
}

.tbtb-gold-btn:hover {
	transform: translateY(-3px);
	box-shadow: 0 15px 35px rgba(217, 168, 54, 0.45);
	filter: brightness(1.08);
}

/* ==========================================================================
   Bottom Horizontal Portrait Strip (Master Class Section)
   ========================================================================== */
.tbtb-masterclass-section {
	background: #0a0a0a;
	color: #fff;
	padding: 100px 0 0;
	margin-top: 100px;
	width: 100%;
}

.tbtb-masterclass-header {
	padding: 0 24px;
	text-align: center;
}

.tbtb-masterclass-title {
	color: var(--tbtb-gold);
	font-family: var(--tbtb-font-serif);
	font-size: 2.8rem;
	margin: 0 0 15px;
	font-weight: 700;
	letter-spacing: 0.5px;
}

.tbtb-portrait-row {
	display: flex;
	flex-wrap: nowrap;
	margin-top: 50px;
	overflow-x: auto;
	scrollbar-width: none;
}

.tbtb-portrait-row::-webkit-scrollbar {
	display: none;
}

.tbtb-portrait-col {
	flex: 1 0 14.28%;
	min-width: 160px;
	position: relative;
	overflow: hidden;
	aspect-ratio: 2 / 3;
	border-right: 1px solid rgba(255,255,255,0.06);
}

.tbtb-portrait-col:last-child {
	border-right: none;
}

.tbtb-portrait-col img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: grayscale(100%);
	transition: filter 0.6s cubic-bezier(0.165, 0.84, 0.44, 1), transform 0.6s cubic-bezier(0.165, 0.84, 0.44, 1);
}

.tbtb-portrait-col:hover img {
	filter: grayscale(0%);
	transform: scale(1.08);
}

.tbtb-portrait-name {
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	background: linear-gradient(to top, rgba(0,0,0,0.95) 0%, rgba(0,0,0,0.4) 70%, transparent 100%);
	padding: 30px 15px 20px;
	font-size: 0.85rem;
	color: #fff;
	text-align: center;
	z-index: 2;
	transform: translateY(5px);
	transition: transform 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);
}

.tbtb-portrait-col:hover .tbtb-portrait-name {
	transform: translateY(0);
}

/* ==========================================================================
   Single Show Page Styles
   ========================================================================== */
.tbtb-show-header {
	position: relative;
	background-size: cover;
	background-position: center;
	min-height: 400px;
	display: flex;
	align-items: flex-end;
	color: #fff;
}

.tbtb-show-header::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient( to top, rgba( 0, 0, 0, 0.8 ), rgba( 0, 0, 0, 0.2 ) );
}

.tbtb-show-header-inner {
	position: relative;
	z-index: 1;
	padding: 40px;
	max-width: 1200px;
	margin: 0 auto;
	width: 100%;
}

.tbtb-show-title {
	font-family: var(--tbtb-font-serif);
	margin: 0;
	font-size: 3rem;
	line-height: 1.1;
	color: #fff;
}

.tbtb-show-subtitle {
	margin: 8px 0 0;
	font-size: 1.3rem;
	opacity: 0.95;
	font-weight: 400;
}

.tbtb-show-dates {
	margin: 12px 0 0;
	font-weight: 700;
	font-size: 1.05rem;
	color: var(--tbtb-gold);
}

.tbtb-sponsor-strip {
	display: flex;
	flex-wrap: wrap;
	gap: 20px;
	align-items: center;
}

.tbtb-sponsor-strip img {
	max-height: 60px;
	width: auto;
}

.tbtb-sponsor-strip--header {
	position: absolute;
	z-index: 1;
	top: 24px;
	right: 40px;
	gap: 12px;
}

.tbtb-sponsor-strip--header img {
	max-height: 44px;
	background: rgba( 255, 255, 255, 0.9 );
	padding: 6px 12px;
	border-radius: 6px;
	box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}

.tbtb-show-body {
	max-width: 800px;
	margin: 0 auto;
	padding: 50px 20px;
}

.tbtb-show-description {
	font-size: 1.05rem;
	line-height: 1.8;
	color: #2c3e50;
	margin-bottom: 40px;
}

.tbtb-section {
	margin-top: 50px;
	border-top: 1px solid var(--tbtb-border);
	padding-top: 40px;
}

.tbtb-section h2 {
	font-family: var(--tbtb-font-serif);
	font-size: 1.8rem;
	color: var(--tbtb-dark-gray);
	margin: 0 0 20px;
}

.tbtb-ticket-price {
	display: inline-block;
	margin-right: 20px;
	font-size: 1.4rem;
	font-weight: 800;
	color: var(--tbtb-dark-gray);
}

.tbtb-btn--tickets {
	display: inline-block;
	padding: 14px 32px;
	background: var(--tbtb-primary);
	color: #fff;
	text-decoration: none;
	border-radius: 30px;
	font-weight: 700;
	transition: background 0.2s ease, transform 0.15s ease;
	box-shadow: 0 4px 15px rgba(114, 64, 201, 0.25);
}

.tbtb-btn--tickets:hover {
	background: var(--tbtb-primary-hover);
	color: #fff;
	transform: translateY(-1px);
}

.tbtb-schedule ul {
	list-style: none;
	padding: 0;
	margin: 0;
}

.tbtb-schedule li {
	padding: 12px 0;
	border-bottom: 1px solid var(--tbtb-border);
	display: flex;
	justify-content: space-between;
	align-items: center;
	font-size: 0.95rem;
}

.tbtb-schedule li:last-child {
	border-bottom: none;
}

.tbtb-schedule .tbtb-times {
	color: var(--tbtb-primary);
	font-weight: 600;
}

.tbtb-map {
	height: 380px;
	margin-top: 20px;
	border-radius: 8px;
	border: 1px solid var(--tbtb-border);
	box-shadow: 0 4px 15px rgba(0,0,0,0.05);
}

.tbtb-people-grid {
	display: grid;
	grid-template-columns: repeat( auto-fill, minmax( 200px, 1fr ) );
	gap: 30px;
}

.tbtb-person {
	margin: 0;
	background: #fbfbfb;
	border-radius: 8px;
	overflow: hidden;
	border: 1px solid var(--tbtb-border);
}

.tbtb-person img {
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: cover;
}

.tbtb-person figcaption {
	padding: 15px;
}

.tbtb-person-name {
	display: block;
	font-weight: 700;
	font-size: 1.05rem;
	color: var(--tbtb-dark-gray);
}

.tbtb-person-role {
	display: block;
	color: var(--tbtb-primary);
	font-size: 0.85rem;
	font-weight: 600;
	margin-top: 2px;
}

.tbtb-person-bio {
	font-size: 0.85rem;
	margin-top: 10px;
	color: var(--tbtb-text-muted);
	line-height: 1.5;
}

.tbtb-no-shows {
	text-align: center;
	padding: 40px;
	font-size: 1.1rem;
	color: var(--tbtb-text-muted);
}

/* ==========================================================================
   Show Categories & Swiper Carousel Custom Styles
   ========================================================================== */

/* Active category pill */
.tbtb-nav-pill.active {
	background: linear-gradient(135deg, var(--tbtb-gold) 0%, #cca338 100%) !important;
	color: #141414 !important;
	border-color: var(--tbtb-gold) !important;
	box-shadow: 0 4px 15px rgba(217, 168, 54, 0.35) !important;
}

/* Category wrapper */
.tbtb-program-list-wrapper {
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 0;
}

/* Carousel outer wrapper to leave room for Swiper Navigation buttons */
.tbtb-carousel-outer-wrapper {
	position: relative;
	width: 100%;
	padding: 0 45px 50px; /* Leave space on left/right for arrows, and bottom for pagination */
	box-sizing: border-box;
}

.tbtb-swiper-container {
	width: 100%;
	height: auto;
	overflow: hidden;
	position: relative;
	padding-bottom: 20px;
}

.tbtb-swiper-container.has-single-slide {
	padding-bottom: 0;
}

.tbtb-swiper-container.has-single-slide .swiper-slide {
	cursor: default;
}

.tbtb-swiper-container .swiper-slide {
	height: auto;
	display: flex;
	justify-content: center;
	box-sizing: border-box;
	padding: 10px 0 30px; /* Offset shadows */
}

/* Custom Swiper Buttons styling */
.tbtb-carousel-outer-wrapper .swiper-button-prev,
.tbtb-carousel-outer-wrapper .swiper-button-next {
	color: var(--tbtb-gold) !important;
	width: 44px;
	height: 44px;
	background: var(--tbtb-dark-gray);
	border: 1px solid var(--tbtb-gold);
	border-radius: 50%;
	transition: background 0.3s, color 0.3s, transform 0.2s;
	box-shadow: 0 4px 10px rgba(0,0,0,0.25);
}

.tbtb-carousel-outer-wrapper .swiper-button-prev::after,
.tbtb-carousel-outer-wrapper .swiper-button-next::after {
	font-size: 18px !important;
	font-weight: bold;
}

.tbtb-carousel-outer-wrapper .swiper-button-prev:hover,
.tbtb-carousel-outer-wrapper .swiper-button-next:hover {
	background: var(--tbtb-gold);
	color: #141414 !important;
	transform: scale(1.1);
}

.tbtb-carousel-outer-wrapper .swiper-button-prev {
	left: 0 !important;
}

.tbtb-carousel-outer-wrapper .swiper-button-next {
	right: 0 !important;
}

/* Custom Swiper Pagination bullets styling */
.tbtb-swiper-container .swiper-pagination-bullet {
	background: #ccc;
	opacity: 0.6;
	width: 10px;
	height: 10px;
	transition: background 0.3s, opacity 0.3s, transform 0.3s;
}

.tbtb-swiper-container .swiper-pagination-bullet-active {
	background: var(--tbtb-gold) !important;
	opacity: 1 !important;
	transform: scale(1.2);
}

.tbtb-swiper-container .swiper-pagination {
	bottom: 0px !important;
}

