/**
 * JCT Dashboard — unified dark design system.
 *
 * One theme for everything inside the member area: the shell (sidebar/topbar),
 * dashboard widgets, Tutor LMS frontend (archive, single course, lesson
 * spotlight), the MemberPress account area, and the auth (login) page.
 *
 * Everything is scoped under .jct-ds-body so public/marketing pages are
 * untouched. Design tokens live on the body class; components only consume
 * tokens — change the palette in one place.
 *
 * REBRANDING: every color/radius/spacing value below the "Color roles" and
 * "Shape & type" blocks is a var(--jct-ds-*) reference, never a literal. To
 * reskin the whole dashboard (new brand colors, rounder/squarer corners,
 * different font), edit ONLY the ~20 custom properties in the .jct-ds-body
 * rule immediately below — no component rule needs to change.
 */

.jct-ds-body {
	/* Color roles */
	--jct-ds-bg: #0b0f14;
	--jct-ds-panel: #141a22;
	--jct-ds-panel-2: #1a222c;
	--jct-ds-border: #232d39;
	--jct-ds-border-strong: #2e3a48;
	--jct-ds-text: #e8edf2;
	--jct-ds-text-muted: #8b98a5;
	--jct-ds-green: #16c784;
	--jct-ds-green-dark: #10a56c;
	--jct-ds-green-ink: #06130d;
	--jct-ds-red: #ea3943;
	--jct-ds-blue: #3b82f6;
	--jct-ds-amber: #f5a623;
	--jct-ds-discord: #5865f2;

	/* Shape & type */
	--jct-ds-radius: 12px;
	--jct-ds-radius-sm: 8px;
	--jct-ds-sidebar-w: 260px;
	--jct-ds-topbar-h: 64px;
	--jct-ds-focus: 0 0 0 3px rgba(22, 199, 132, 0.35);
	--jct-ds-font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;

	margin: 0;
	background: var(--jct-ds-bg);
	color: var(--jct-ds-text);
	font-family: var(--jct-ds-font);
	font-size: 16px;
	line-height: 1.55;
	-webkit-font-smoothing: antialiased;
}

.jct-ds-body *,
.jct-ds-body *::before,
.jct-ds-body *::after {
	box-sizing: border-box;
}

.jct-ds-body a {
	color: var(--jct-ds-green);
	text-decoration: none;
}

.jct-ds-body a:hover {
	color: #3fe0a5;
}

.jct-ds-body :focus-visible {
	outline: none;
	box-shadow: var(--jct-ds-focus);
	border-radius: 4px;
}

@media (prefers-reduced-motion: reduce) {
	.jct-ds-body *,
	.jct-ds-body *::before,
	.jct-ds-body *::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
	}
}

/* ---------------------------------------------------------------------
 * Layout skeleton
 * ------------------------------------------------------------------ */

.jct-ds-layout {
	display: flex;
	min-height: 100vh;
}

.jct-ds-sidebar {
	position: fixed;
	inset: 0 auto 0 0;
	width: var(--jct-ds-sidebar-w);
	display: flex;
	flex-direction: column;
	background: #0e1319;
	border-right: 1px solid var(--jct-ds-border);
	z-index: 1000;
}

.jct-ds-canvas {
	flex: 1;
	min-width: 0;
	margin-left: var(--jct-ds-sidebar-w);
	display: flex;
	flex-direction: column;
	min-height: 100vh;
}

.jct-ds-main {
	flex: 1;
}

.jct-ds-main__inner {
	max-width: 1280px;
	margin: 0 auto;
	padding: 28px 32px 64px;
}

.jct-ds-body.admin-bar .jct-ds-sidebar,
.jct-ds-body.admin-bar .jct-ds-topbar {
	top: 32px;
}

@media (max-width: 782px) {
	.jct-ds-body.admin-bar .jct-ds-sidebar,
	.jct-ds-body.admin-bar .jct-ds-topbar {
		top: 46px;
	}
}

/* ---------------------------------------------------------------------
 * Sidebar
 * ------------------------------------------------------------------ */

.jct-ds-sidebar__brand {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	padding: 18px 20px;
	border-bottom: 1px solid var(--jct-ds-border);
	min-height: var(--jct-ds-topbar-h);
}

.jct-ds-brand {
	display: flex;
	align-items: center;
	gap: 10px;
	color: var(--jct-ds-text);
	font-weight: 700;
	letter-spacing: 0.01em;
}

.jct-ds-brand:hover {
	color: var(--jct-ds-text);
}

.jct-ds-brand img,
.jct-ds-brand__logo {
	max-height: 36px;
	width: auto;
}

.jct-ds-brand__mark {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	border-radius: 9px;
	background: linear-gradient(135deg, var(--jct-ds-green), #0e8f60);
	color: var(--jct-ds-green-ink);
	font-size: 13px;
	font-weight: 800;
}

.jct-ds-brand__name {
	font-size: 15px;
}

.jct-ds-sidebar__close {
	display: none;
	background: none;
	border: 0;
	color: var(--jct-ds-text-muted);
	font-size: 26px;
	line-height: 1;
	cursor: pointer;
	padding: 4px 8px;
}

.jct-ds-nav {
	flex: 1;
	overflow-y: auto;
	padding: 14px 12px;
}

.jct-ds-nav__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 4px;
}

.jct-ds-nav__item a {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 11px 14px;
	border-radius: 10px;
	color: var(--jct-ds-text-muted);
	font-size: 14.5px;
	font-weight: 500;
	transition: background 0.15s ease, color 0.15s ease;
}

.jct-ds-nav__item a:hover {
	background: var(--jct-ds-panel);
	color: var(--jct-ds-text);
}

.jct-ds-nav__item.is-active a {
	background: rgba(22, 199, 132, 0.12);
	color: var(--jct-ds-green);
}

.jct-ds-icon {
	width: 20px;
	height: 20px;
	flex: 0 0 auto;
}

.jct-ds-sidebar__user {
	display: flex;
	align-items: center;
	gap: 6px;
	padding: 14px 16px;
	border-top: 1px solid var(--jct-ds-border);
}

.jct-ds-userchip {
	display: flex;
	align-items: center;
	gap: 10px;
	flex: 1;
	min-width: 0;
	color: var(--jct-ds-text);
}

.jct-ds-userchip:hover {
	color: var(--jct-ds-text);
}

.jct-ds-userchip__avatar,
.jct-ds-userchip img {
	border-radius: 50%;
	width: 36px;
	height: 36px;
}

.jct-ds-userchip__body {
	display: grid;
	min-width: 0;
}

.jct-ds-userchip__name {
	font-size: 14px;
	font-weight: 600;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.jct-ds-userchip__hint {
	font-size: 12px;
	color: var(--jct-ds-text-muted);
}

.jct-ds-userchip__logout {
	color: var(--jct-ds-text-muted);
	padding: 6px;
	border-radius: 8px;
}

.jct-ds-userchip__logout:hover {
	color: var(--jct-ds-red);
	background: var(--jct-ds-panel);
}

/* ---------------------------------------------------------------------
 * Topbar
 * ------------------------------------------------------------------ */

.jct-ds-topbar {
	position: sticky;
	top: 0;
	z-index: 900;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	min-height: var(--jct-ds-topbar-h);
	padding: 10px 32px;
	background: rgba(11, 15, 20, 0.92);
	backdrop-filter: blur(8px);
	border-bottom: 1px solid var(--jct-ds-border);
}

.jct-ds-topbar__left {
	display: flex;
	align-items: center;
	gap: 14px;
	min-width: 0;
}

.jct-ds-topbar__title {
	margin: 0;
	font-size: 18px;
	font-weight: 700;
	color: var(--jct-ds-text);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.jct-ds-topbar__actions {
	display: flex;
	align-items: center;
	gap: 10px;
}

.jct-ds-topbar__avatar img {
	border-radius: 50%;
	display: block;
	width: 36px;
	height: 36px;
	border: 2px solid var(--jct-ds-border);
}

.jct-ds-burger {
	display: none;
	flex-direction: column;
	justify-content: center;
	gap: 4px;
	width: 40px;
	height: 40px;
	padding: 8px;
	background: var(--jct-ds-panel);
	border: 1px solid var(--jct-ds-border);
	border-radius: 10px;
	cursor: pointer;
}

.jct-ds-burger span {
	display: block;
	height: 2px;
	background: var(--jct-ds-text);
	border-radius: 2px;
}

/* ---------------------------------------------------------------------
 * Buttons, links, statuses
 * ------------------------------------------------------------------ */

.jct-ds-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 9px 18px;
	border: 1px solid transparent;
	border-radius: 10px;
	font-family: var(--jct-ds-font);
	font-size: 14px;
	font-weight: 600;
	cursor: pointer;
	white-space: nowrap;
	transition: filter 0.15s ease, background 0.15s ease;
}

.jct-ds-button--primary {
	background: var(--jct-ds-green);
	color: var(--jct-ds-green-ink);
}

.jct-ds-button--primary:hover {
	background: var(--jct-ds-green-dark);
	color: var(--jct-ds-green-ink);
}

.jct-ds-button--ghost {
	background: transparent;
	color: var(--jct-ds-text);
	border-color: var(--jct-ds-border-strong);
}

.jct-ds-button--ghost:hover {
	background: var(--jct-ds-panel-2);
	color: var(--jct-ds-text);
}

.jct-ds-button--danger {
	background: var(--jct-ds-red);
	color: #fff;
}

.jct-ds-button--danger:hover {
	filter: brightness(1.1);
	color: #fff;
}

.jct-ds-button--discord {
	background: var(--jct-ds-discord);
	color: #ffffff;
}

.jct-ds-button--discord:hover {
	filter: brightness(1.1);
	color: #ffffff;
}

.jct-ds-button--block {
	display: flex;
	width: 100%;
	margin: 10px 0;
}

.jct-ds-button[disabled],
.jct-ds-button.is-disabled {
	opacity: 0.55;
	cursor: not-allowed;
	filter: none;
}

.jct-ds-button.is-loading {
	position: relative;
	color: transparent !important;
	pointer-events: none;
}

.jct-ds-button.is-loading::after {
	content: "";
	position: absolute;
	width: 16px;
	height: 16px;
	border: 2px solid rgba(255, 255, 255, 0.4);
	border-top-color: #fff;
	border-radius: 50%;
	animation: jct-ds-spin 0.7s linear infinite;
}

@keyframes jct-ds-spin {
	to {
		transform: rotate(360deg);
	}
}

.jct-ds-link {
	display: inline-block;
	margin-top: 10px;
	font-size: 14px;
	font-weight: 600;
}

.jct-ds-status {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 10px;
	font-size: 14px;
	font-weight: 700;
}

.jct-ds-status__dot {
	width: 9px;
	height: 9px;
	border-radius: 50%;
	background: currentColor;
}

.jct-ds-status--active {
	color: var(--jct-ds-green);
}

.jct-ds-status--inactive {
	color: var(--jct-ds-text-muted);
}

/* Generic dark form controls (used by studio & any custom forms) */

.jct-ds-body .jct-ds-input,
.jct-ds-body .jct-ds-select,
.jct-ds-body .jct-ds-textarea {
	width: 100%;
	padding: 10px 14px;
	background: var(--jct-ds-panel-2);
	border: 1px solid var(--jct-ds-border-strong);
	border-radius: var(--jct-ds-radius-sm);
	color: var(--jct-ds-text);
	font-family: var(--jct-ds-font);
	font-size: 14.5px;
}

.jct-ds-body .jct-ds-input:focus,
.jct-ds-body .jct-ds-select:focus,
.jct-ds-body .jct-ds-textarea:focus {
	outline: none;
	border-color: var(--jct-ds-green);
	box-shadow: var(--jct-ds-focus);
}

.jct-ds-field {
	display: grid;
	gap: 6px;
	margin-bottom: 16px;
}

.jct-ds-field > label {
	font-size: 13.5px;
	font-weight: 600;
	color: var(--jct-ds-text-muted);
}

/* ---------------------------------------------------------------------
 * Cards & page scaffolding
 * ------------------------------------------------------------------ */

.jct-ds-page {
	display: grid;
	gap: 20px;
}

.jct-ds-card {
	background: var(--jct-ds-panel);
	border: 1px solid var(--jct-ds-border);
	border-radius: var(--jct-ds-radius);
	padding: 22px 24px;
}

.jct-ds-card__head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
	flex-wrap: wrap;
}

.jct-ds-card__title {
	margin: 0 0 8px;
	font-size: 17px;
	font-weight: 700;
	color: var(--jct-ds-text);
}

.jct-ds-card__text {
	margin: 0;
	color: var(--jct-ds-text-muted);
	font-size: 14.5px;
}

.jct-ds-card--upgrade {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	flex-wrap: wrap;
	border-color: rgba(22, 199, 132, 0.35);
	background: linear-gradient(120deg, rgba(22, 199, 132, 0.10), var(--jct-ds-panel) 55%);
}

.jct-ds-columns {
	display: grid;
	grid-template-columns: minmax(0, 2fr) minmax(260px, 1fr);
	gap: 20px;
	align-items: start;
}

.jct-ds-columns__main,
.jct-ds-columns__side {
	display: grid;
	gap: 20px;
}

.jct-ds-card-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
	gap: 20px;
}

.jct-ds-plain-list {
	margin: 0;
	padding: 0;
	list-style: none;
	display: grid;
	gap: 6px;
	font-size: 14.5px;
}

.jct-ds-quicklinks {
	margin: 0;
	padding: 0;
	list-style: none;
	display: grid;
}

.jct-ds-quicklinks li + li {
	border-top: 1px solid var(--jct-ds-border);
}

.jct-ds-quicklinks a {
	display: block;
	padding: 10px 2px;
	font-size: 14.5px;
	font-weight: 500;
	color: var(--jct-ds-text);
}

.jct-ds-quicklinks a:hover {
	color: var(--jct-ds-green);
}

.jct-ds-empty {
	display: grid;
	justify-items: center;
	gap: 8px;
	padding: 36px 24px;
	border: 1px dashed var(--jct-ds-border-strong);
	border-radius: var(--jct-ds-radius);
	color: var(--jct-ds-text-muted);
	text-align: center;
}

/* ---------------------------------------------------------------------
 * Hero banner (live / next stream)
 * ------------------------------------------------------------------ */

.jct-ds-hero {
	display: flex;
	align-items: center;
	gap: 14px;
	flex-wrap: wrap;
	padding: 18px 24px;
	border-radius: var(--jct-ds-radius);
	border: 1px solid var(--jct-ds-border);
	color: var(--jct-ds-text);
	font-size: 15px;
}

.jct-ds-hero:hover {
	color: var(--jct-ds-text);
	filter: brightness(1.06);
}

.jct-ds-hero--live {
	background: linear-gradient(120deg, rgba(234, 57, 67, 0.22), var(--jct-ds-panel) 65%);
	border-color: rgba(234, 57, 67, 0.5);
}

.jct-ds-hero--upcoming {
	background: linear-gradient(120deg, rgba(59, 130, 246, 0.16), var(--jct-ds-panel) 65%);
	border-color: rgba(59, 130, 246, 0.4);
}

.jct-ds-hero__label {
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.08em;
	color: var(--jct-ds-text-muted);
}

.jct-ds-hero--live .jct-ds-hero__label {
	color: var(--jct-ds-red);
}

.jct-ds-hero__title {
	font-weight: 700;
	flex: 1;
	min-width: 200px;
}

.jct-ds-hero__meta {
	color: var(--jct-ds-text-muted);
	font-size: 14px;
}

.jct-ds-hero__cta {
	font-weight: 700;
	color: var(--jct-ds-green);
}

.jct-ds-live-dot {
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: var(--jct-ds-red);
	animation: jct-ds-pulse 1.6s ease-in-out infinite;
}

@keyframes jct-ds-pulse {
	0%,
	100% {
		box-shadow: 0 0 0 0 rgba(234, 57, 67, 0.55);
	}
	50% {
		box-shadow: 0 0 0 7px rgba(234, 57, 67, 0);
	}
}

/* ---------------------------------------------------------------------
 * Progress list (dashboard home)
 * ------------------------------------------------------------------ */

.jct-ds-progress-list {
	margin: 12px 0 0;
	padding: 0;
	list-style: none;
	display: grid;
	gap: 12px;
}

.jct-ds-progress-item__link {
	display: flex;
	align-items: center;
	gap: 16px;
	padding: 12px;
	border: 1px solid var(--jct-ds-border);
	border-radius: 10px;
	background: var(--jct-ds-panel-2);
	color: var(--jct-ds-text);
	transition: border-color 0.15s ease;
}

.jct-ds-progress-item__link:hover {
	border-color: var(--jct-ds-green);
	color: var(--jct-ds-text);
}

.jct-ds-progress-item__thumb {
	width: 88px;
	height: 50px;
	object-fit: cover;
	border-radius: 8px;
	flex: 0 0 auto;
}

.jct-ds-progress-item__thumb--placeholder {
	display: block;
	background: linear-gradient(135deg, #232d39, #0e1319);
}

.jct-ds-progress-item__body {
	flex: 1;
	min-width: 0;
	display: grid;
	gap: 6px;
}

.jct-ds-progress-item__title {
	font-size: 14.5px;
	font-weight: 600;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.jct-ds-progress-bar {
	display: block;
	height: 6px;
	border-radius: 999px;
	background: var(--jct-ds-border);
	overflow: hidden;
}

.jct-ds-progress-bar__fill {
	display: block;
	height: 100%;
	border-radius: 999px;
	background: linear-gradient(90deg, var(--jct-ds-green), #3fe0a5);
}

.jct-ds-progress-item__meta {
	font-size: 12.5px;
	color: var(--jct-ds-text-muted);
}

/* ---------------------------------------------------------------------
 * Livestreams page + jct-livestream widget re-skin
 * ------------------------------------------------------------------ */

.jct-ds-anchor-nav {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
}

.jct-ds-anchor-nav a {
	padding: 8px 18px;
	border: 1px solid var(--jct-ds-border);
	border-radius: 999px;
	background: var(--jct-ds-panel);
	color: var(--jct-ds-text);
	font-size: 14px;
	font-weight: 600;
}

.jct-ds-anchor-nav a:hover {
	border-color: var(--jct-ds-green);
	color: var(--jct-ds-green);
}

.jct-ds-section {
	scroll-margin-top: calc(var(--jct-ds-topbar-h) + 16px);
}

.jct-ds-section__title {
	margin: 8px 0 16px;
	font-size: 20px;
	font-weight: 800;
	color: var(--jct-ds-text);
}

.jct-ds-body .jct-ls .jct-ls-card,
.jct-ds-body .jct-ls .jct-ls-filter-bar,
.jct-ds-body .jct-ls .jct-ls-upgrade-card,
.jct-ds-body .jct-ls .jct-ls-empty,
.jct-ds-body .jct-ls .jct-ls-also-live__item {
	background: var(--jct-ds-panel);
	border-color: var(--jct-ds-border);
	color: var(--jct-ds-text);
}

/* Coach Studio inside the dark shell */

.jct-ds-body .jct-ls-studio .jct-ls-studio-card,
.jct-ds-body .jct-ls-studio .jct-ls-studio-item {
	background: var(--jct-ds-panel);
	border-color: var(--jct-ds-border);
	color: var(--jct-ds-text);
}

.jct-ds-body .jct-ls-studio .jct-ls-studio-card__title,
.jct-ds-body .jct-ls-studio label,
.jct-ds-body .jct-ls-studio .jct-ls-studio-label,
.jct-ds-body .jct-ls-studio .jct-ls-studio-item__title {
	color: var(--jct-ds-text);
}

.jct-ds-body .jct-ls-studio input[type="text"],
.jct-ds-body .jct-ls-studio input[type="number"],
.jct-ds-body .jct-ls-studio input[type="datetime-local"],
.jct-ds-body .jct-ls-studio select {
	background: var(--jct-ds-panel-2);
	border-color: var(--jct-ds-border-strong);
	color: var(--jct-ds-text);
}

.jct-ds-body .jct-ls-studio input:focus,
.jct-ds-body .jct-ls-studio select:focus {
	outline: none;
	border-color: var(--jct-ds-green);
	box-shadow: var(--jct-ds-focus);
}

.jct-ds-body .jct-ls-studio .jct-ls-studio-live-banner {
	background: rgba(234, 57, 67, 0.12);
	border-color: rgba(234, 57, 67, 0.5);
	color: var(--jct-ds-text);
}

/* Live chat panel inside the dark shell */

.jct-ds-body .jct-ls .jct-ls-live-chat {
	background: var(--jct-ds-panel);
	border-color: var(--jct-ds-border);
}

.jct-ds-body .jct-ls .jct-ls-live-chat--discord h3 {
	color: var(--jct-ds-text);
	margin: 0;
}

/* Headings inside livestream widgets inherit the theme's (light-page)
   heading color unless pinned to the token explicitly. */

.jct-ds-body .jct-ls .jct-ls-card__title,
.jct-ds-body .jct-ls .jct-ls-also-live__title,
.jct-ds-body .jct-ls .jct-ls-upgrade-card__headline,
.jct-ds-body .jct-ls .jct-ls-filter-bar__label {
	color: var(--jct-ds-text);
}

.jct-ds-body .jct-ls .jct-ls-category-badge,
.jct-ds-body .jct-ls .jct-ls-card__duration,
.jct-ds-body .jct-ls .jct-ls-muted,
.jct-ds-body .jct-ls .jct-ls-empty,
.jct-ds-body .jct-ls .jct-ls-upgrade-card__message,
.jct-ds-body .jct-ls .jct-ls-also-live__coach,
.jct-ds-body .jct-ls .jct-ls-time__local {
	color: var(--jct-ds-text-muted);
}

.jct-ds-body .jct-ls .jct-ls-filter-bar select {
	background: var(--jct-ds-panel-2);
	border-color: var(--jct-ds-border-strong);
	color: var(--jct-ds-text);
}

.jct-ds-body .jct-ls .jct-ls-button {
	background: var(--jct-ds-green);
	color: var(--jct-ds-green-ink);
}

.jct-ds-body .jct-ls .jct-ls-time__countdown {
	color: var(--jct-ds-green);
}

.jct-ds-body .jct-ls .jct-ls-pagination .page-numbers {
	border-color: var(--jct-ds-border);
	color: var(--jct-ds-text);
}

.jct-ds-body .jct-ls .jct-ls-pagination .page-numbers.current {
	background: var(--jct-ds-green);
	border-color: var(--jct-ds-green);
	color: var(--jct-ds-green-ink);
}

/* =====================================================================
 * TUTOR LMS — dark integration
 * Scoped overrides of Tutor's utility + component classes.
 * =================================================================== */

.jct-ds-body .tutor-frontend,
.jct-ds-body .tutor-wrap {
	color: var(--jct-ds-text);
}

/* Utility color/background classes */

.jct-ds-body .tutor-color-black,
.jct-ds-body .tutor-color-primary-dark {
	color: var(--jct-ds-text) !important;
}

.jct-ds-body .tutor-color-muted,
.jct-ds-body .tutor-color-secondary,
.jct-ds-body .tutor-color-subdued {
	color: var(--jct-ds-text-muted) !important;
}

.jct-ds-body .tutor-bg-white,
.jct-ds-body .tutor-bg-light,
.jct-ds-body .tutor-bg-gray-10,
.jct-ds-body .tutor-bg-gray-20 {
	background-color: var(--jct-ds-panel) !important;
}

/* Headings & generic text inside Tutor containers */

.jct-ds-body .tutor-frontend h1,
.jct-ds-body .tutor-frontend h2,
.jct-ds-body .tutor-frontend h3,
.jct-ds-body .tutor-frontend h4,
.jct-ds-body .tutor-frontend h5 {
	color: var(--jct-ds-text);
}

/* Tutor 4 paints its page wrapper, sidebar card body and curriculum rows near-white;
   inside the dark shell they take the panel colours instead (text is already light). */
.jct-ds-body .tutor-wrap.tutor-course-top-info,
.jct-ds-body .tutor-wrap.tutor-page-wrap {
	background: transparent !important;
}

.jct-ds-body .tutor-card-body {
	background: var(--jct-ds-panel) !important;
}

.jct-ds-body .tutor-course-content-list-item {
	background: var(--jct-ds-panel);
	border-color: var(--jct-ds-border);
}

/* Sticky course tab bar and the "Show more" fade: Tutor uses white; match the page background. */
.jct-ds-body .tutor-course-details-tab .tutor-is-sticky {
	background: var(--jct-ds-bg) !important;
}

.jct-ds-body .tutor-toggle-more-collapsed::before {
	background: linear-gradient(to bottom, transparent, var(--jct-ds-bg) 85%) !important;
}

/* Cards (course grid + sidebar boxes) */

.jct-ds-body .tutor-card {
	position: relative;
	background: var(--jct-ds-panel);
	border-color: var(--jct-ds-border);
	color: var(--jct-ds-text);
	border-radius: var(--jct-ds-radius);
	overflow: hidden;
}

/* "Already own this" badge — see jct-dashboard-theme/functions.php,
   hooked on the (otherwise unused) tutor_course/loop/badge action. */

.jct-ds-body .jct-ds-owned-badge {
	position: absolute;
	top: 12px;
	left: 12px;
	z-index: 3;
	padding: 4px 11px;
	border-radius: 999px;
	background: var(--jct-ds-green);
	color: var(--jct-ds-green-ink);
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.02em;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
}

.jct-ds-body .jct-ds-owned-badge--done {
	background: var(--jct-ds-blue);
	color: #fff;
}

/* Make the enrolled "Continue/Start Learning" button (loop.course-continue,
   rendered by Tutor core) solid instead of outline so owned courses read as
   actionable at a glance, distinct from the buy/price CTA. */

.jct-ds-body .tutor-course-list .tutor-card [data-course_id].tutor-btn-outline-primary {
	background: var(--jct-ds-green);
	border-color: var(--jct-ds-green);
	color: var(--jct-ds-green-ink);
}

.jct-ds-body .tutor-course-list .tutor-card [data-course_id].tutor-btn-outline-primary:hover {
	background: var(--jct-ds-green-dark);
	border-color: var(--jct-ds-green-dark);
}

.jct-ds-body .tutor-card-body {
	color: var(--jct-ds-text);
}

.jct-ds-body .tutor-card-footer {
	background: transparent;
	border-top-color: var(--jct-ds-border);
}

.jct-ds-body .tutor-course-card {
	transition: border-color 0.15s ease, transform 0.15s ease;
}

.jct-ds-body .tutor-course-card:hover {
	border-color: var(--jct-ds-green);
}

.jct-ds-body .tutor-course-name,
.jct-ds-body .tutor-course-name a {
	color: var(--jct-ds-text);
}

.jct-ds-body .tutor-course-name a:hover {
	color: var(--jct-ds-green);
}

/* Buttons */

.jct-ds-body .tutor-btn {
	border-radius: 10px;
	font-weight: 600;
}

.jct-ds-body .tutor-btn-primary {
	background: var(--jct-ds-green);
	border-color: var(--jct-ds-green);
	color: var(--jct-ds-green-ink);
}

.jct-ds-body .tutor-btn-primary:hover,
.jct-ds-body .tutor-btn-primary:focus {
	background: var(--jct-ds-green-dark);
	border-color: var(--jct-ds-green-dark);
	color: var(--jct-ds-green-ink);
}

.jct-ds-body .tutor-btn-outline-primary {
	background: transparent;
	border-color: var(--jct-ds-green);
	color: var(--jct-ds-green);
}

.jct-ds-body .tutor-btn-outline-primary:hover {
	background: rgba(22, 199, 132, 0.12);
	color: var(--jct-ds-green);
}

.jct-ds-body .tutor-btn-ghost,
.jct-ds-body .tutor-btn-link {
	color: var(--jct-ds-text-muted);
}

.jct-ds-body .tutor-btn-ghost:hover,
.jct-ds-body .tutor-btn-link:hover {
	color: var(--jct-ds-green);
}

/* Forms */

.jct-ds-body .tutor-form-control,
.jct-ds-body .tutor-form-select {
	background: var(--jct-ds-panel-2);
	border-color: var(--jct-ds-border-strong);
	color: var(--jct-ds-text);
}

.jct-ds-body .tutor-form-control:focus,
.jct-ds-body .tutor-form-select:focus {
	border-color: var(--jct-ds-green);
	box-shadow: var(--jct-ds-focus);
}

.jct-ds-body .tutor-form-control::placeholder {
	color: var(--jct-ds-text-muted);
}

.jct-ds-body .tutor-form-check-input {
	background-color: var(--jct-ds-panel-2);
	border-color: var(--jct-ds-border-strong);
}

.jct-ds-body .tutor-form-check-input:checked {
	background-color: var(--jct-ds-green);
	border-color: var(--jct-ds-green);
}

/* Tabs / nav (single course details) */

.jct-ds-body .tutor-nav {
	border-bottom-color: var(--jct-ds-border);
}

.jct-ds-body .tutor-nav-link {
	color: var(--jct-ds-text-muted);
}

.jct-ds-body .tutor-nav-link:hover {
	color: var(--jct-ds-text);
}

.jct-ds-body .tutor-nav-link.is-active,
.jct-ds-body .tutor-nav-item.is-active .tutor-nav-link {
	color: var(--jct-ds-green);
	border-color: var(--jct-ds-green);
}

.jct-ds-body .tutor-is-sticky {
	background: var(--jct-ds-bg);
}

/* Accordion (curriculum) & topic lists */

.jct-ds-body .tutor-accordion-item {
	background: var(--jct-ds-panel);
	border-color: var(--jct-ds-border);
	border-radius: var(--jct-ds-radius-sm);
}

.jct-ds-body .tutor-accordion-item-header {
	background: var(--jct-ds-panel-2);
	color: var(--jct-ds-text);
}

.jct-ds-body .tutor-accordion-item-header::after {
	filter: invert(1);
}

.jct-ds-body .tutor-accordion-item-body {
	background: var(--jct-ds-panel);
	border-top-color: var(--jct-ds-border);
}

.jct-ds-body .tutor-course-topic-item {
	border-color: var(--jct-ds-border);
	color: var(--jct-ds-text);
}

.jct-ds-body .tutor-course-topic-item:hover {
	background: var(--jct-ds-panel-2);
}

.jct-ds-body .tutor-course-topic-item a,
.jct-ds-body .tutor-course-topic-item-duration {
	color: var(--jct-ds-text-muted);
}

.jct-ds-body .tutor-course-topic-item a:hover {
	color: var(--jct-ds-green);
}

/* Tables & pagination */

.jct-ds-body .tutor-table {
	color: var(--jct-ds-text);
	border-color: var(--jct-ds-border);
}

.jct-ds-body .tutor-table th {
	background: var(--jct-ds-panel-2);
	color: var(--jct-ds-text-muted);
	border-color: var(--jct-ds-border);
}

.jct-ds-body .tutor-table td {
	border-color: var(--jct-ds-border);
}

.jct-ds-body .tutor-pagination a,
.jct-ds-body .tutor-pagination span {
	color: var(--jct-ds-text);
	border-color: var(--jct-ds-border);
	background: var(--jct-ds-panel);
}

.jct-ds-body .tutor-pagination .current {
	background: var(--jct-ds-green);
	color: var(--jct-ds-green-ink);
	border-color: var(--jct-ds-green);
}

/* Course details page: enroll box & sidebar */

.jct-ds-body .tutor-course-details-page {
	color: var(--jct-ds-text);
}

.jct-ds-body .tutor-course-sidebar-card,
.jct-ds-body .tutor-single-course-sidebar-more > div {
	background: var(--jct-ds-panel);
	border-color: var(--jct-ds-border);
	border-radius: var(--jct-ds-radius);
}

/* Progress bars */

.jct-ds-body .tutor-progress-bar {
	background: var(--jct-ds-border);
}

.jct-ds-body .tutor-progress-bar .tutor-progress-value,
.jct-ds-body .tutor-progress-percent {
	background: var(--jct-ds-green);
}

/* Spotlight (lesson/quiz/assignment player) */

.jct-ds-body .tutor-course-spotlight-wrapper,
.jct-ds-body .tutor-course-single-content-wrapper {
	background: var(--jct-ds-bg);
	color: var(--jct-ds-text);
}

.jct-ds-body .tutor-course-single-sidebar-wrapper {
	background: var(--jct-ds-panel);
	border-color: var(--jct-ds-border);
}

.jct-ds-body .tutor-course-single-sidebar-title {
	background: var(--jct-ds-panel-2);
	color: var(--jct-ds-text);
	border-color: var(--jct-ds-border);
}

.jct-ds-body .tutor-course-spotlight-nav {
	background: var(--jct-ds-panel);
	border-color: var(--jct-ds-border);
}

.jct-ds-body .tutor-course-spotlight-tab {
	background: var(--jct-ds-bg);
}

.jct-ds-body .tutor-course-spotlight-comments {
	color: var(--jct-ds-text);
}

.jct-ds-body .tutor-course-topic-item-icon {
	color: var(--jct-ds-text-muted);
}

/* Modals (Tutor uses these for login/enroll dialogs) */

.jct-ds-body .tutor-modal-content {
	background: var(--jct-ds-panel);
	color: var(--jct-ds-text);
	border: 1px solid var(--jct-ds-border);
}

/* =====================================================================
 * MEMBERPRESS — dark integration (account area + forms)
 * =================================================================== */

.jct-ds-mepr-wrap {
	padding: 0;
	overflow: hidden;
}

/* Account nav → segmented control.
   Markup is nav#mepr-account-nav > ul > li.mepr-nav-item > a — the flex
   container must be the UL (the li's are its children), not the nav. */

.jct-ds-body #mepr-account-nav,
.jct-ds-body .mepr-nav {
	padding: 14px 18px;
	margin: 0;
	background: var(--jct-ds-panel-2);
	border-bottom: 1px solid var(--jct-ds-border);
}

.jct-ds-body #mepr-account-nav ul,
.jct-ds-body .mepr-nav ul {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.jct-ds-body .mepr-nav-item {
	margin: 0;
	list-style: none;
}

/* MemberPress hides field-validation spans via its own assets; inside the
   shell they leak visible. Hide by default — MemberPress's validation JS
   shows real errors with inline styles, which override this rule. */

.jct-ds-body .cc-error {
	display: none;
	color: var(--jct-ds-red);
	font-size: 13px;
	font-weight: 600;
}

.jct-ds-body .mepr-nav-item a {
	display: inline-block;
	padding: 8px 16px;
	border-radius: 999px;
	border: 1px solid var(--jct-ds-border-strong);
	color: var(--jct-ds-text-muted);
	font-size: 14px;
	font-weight: 600;
}

.jct-ds-body .mepr-nav-item a:hover {
	color: var(--jct-ds-text);
	border-color: var(--jct-ds-green);
}

.jct-ds-body .mepr-nav-item.mepr-active-nav-tab a,
.jct-ds-body .mepr-nav-item a.mepr-active-nav-tab {
	background: rgba(22, 199, 132, 0.14);
	border-color: var(--jct-ds-green);
	color: var(--jct-ds-green);
}

/* Account body */

.jct-ds-body .mp_wrapper {
	color: var(--jct-ds-text);
	padding: 18px;
}

.jct-ds-body .mp_wrapper label,
.jct-ds-body .mp-form-label label {
	color: var(--jct-ds-text-muted);
	font-weight: 600;
	font-size: 13.5px;
}

.jct-ds-body .mp_wrapper input[type="text"],
.jct-ds-body .mp_wrapper input[type="email"],
.jct-ds-body .mp_wrapper input[type="password"],
.jct-ds-body .mp_wrapper input[type="tel"],
.jct-ds-body .mp_wrapper input[type="number"],
.jct-ds-body .mp_wrapper input[type="url"],
.jct-ds-body .mp_wrapper select,
.jct-ds-body .mp_wrapper textarea,
.jct-ds-body .mepr-form-input {
	width: 100%;
	max-width: 420px;
	padding: 10px 14px;
	background: var(--jct-ds-panel-2);
	border: 1px solid var(--jct-ds-border-strong);
	border-radius: var(--jct-ds-radius-sm);
	color: var(--jct-ds-text);
	font-family: var(--jct-ds-font);
	font-size: 14.5px;
}

.jct-ds-body .mp_wrapper input:focus,
.jct-ds-body .mp_wrapper select:focus,
.jct-ds-body .mp_wrapper textarea:focus {
	outline: none;
	border-color: var(--jct-ds-green);
	box-shadow: var(--jct-ds-focus);
}

.jct-ds-body .mp-form-row {
	margin-bottom: 16px;
}

/* Buttons (MemberPress renders .button-primary / .mepr-submit) */

.jct-ds-body .mp_wrapper .button,
.jct-ds-body .mp_wrapper .button-primary,
.jct-ds-body .mp_wrapper input[type="submit"],
.jct-ds-body .mepr-submit,
.jct-ds-body .mepr-share-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 10px 20px;
	background: var(--jct-ds-green);
	border: 1px solid var(--jct-ds-green);
	border-radius: 10px;
	color: var(--jct-ds-green-ink);
	font-family: var(--jct-ds-font);
	font-size: 14px;
	font-weight: 700;
	text-shadow: none;
	box-shadow: none;
	cursor: pointer;
	width: auto;
}

.jct-ds-body .mp_wrapper .button:hover,
.jct-ds-body .mp_wrapper .button-primary:hover,
.jct-ds-body .mp_wrapper input[type="submit"]:hover,
.jct-ds-body .mepr-submit:hover {
	background: var(--jct-ds-green-dark);
	border-color: var(--jct-ds-green-dark);
	color: var(--jct-ds-green-ink);
}

.jct-ds-body .mp_wrapper .mp-hide-pw {
	background: transparent;
	border: 0;
	color: var(--jct-ds-text-muted);
	box-shadow: none;
	padding: 0 10px;
}

/* Account tables (subscriptions, payments) */

.jct-ds-body .mepr-account-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 14px;
}

.jct-ds-body .mepr-account-table th {
	background: var(--jct-ds-panel-2);
	color: var(--jct-ds-text-muted);
	text-align: left;
	padding: 10px 12px;
	border: 1px solid var(--jct-ds-border);
	font-weight: 600;
}

.jct-ds-body .mepr-account-table td {
	padding: 10px 12px;
	border: 1px solid var(--jct-ds-border);
	color: var(--jct-ds-text);
	background: var(--jct-ds-panel);
}

.jct-ds-body .mepr-account-table .mepr-alt-row td {
	background: var(--jct-ds-panel-2);
}

.jct-ds-body .mepr-account-active {
	color: var(--jct-ds-green);
	font-weight: 700;
}

.jct-ds-body .mepr-account-row-action,
.jct-ds-body .mepr-account-table td a {
	display: inline-block;
	padding: 4px 12px;
	margin: 2px 4px 2px 0;
	border: 1px solid var(--jct-ds-border-strong);
	border-radius: 999px;
	color: var(--jct-ds-text);
	font-size: 13px;
	font-weight: 600;
	white-space: nowrap;
}

.jct-ds-body .mepr-account-row-action:hover,
.jct-ds-body .mepr-account-table td a:hover {
	border-color: var(--jct-ds-green);
	color: var(--jct-ds-green);
}

.jct-ds-body .mepr-no-active-subscriptions {
	color: var(--jct-ds-text-muted);
}

/* =====================================================================
 * AUTH PAGE (login / password reset via template-auth.php)
 * =================================================================== */

.jct-ds-body.jct-ds-auth {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	min-height: 100vh;
	padding: 24px;
	background:
		radial-gradient(900px 500px at 80% -10%, rgba(22, 199, 132, 0.08), transparent 60%),
		radial-gradient(700px 400px at 0% 110%, rgba(59, 130, 246, 0.07), transparent 60%),
		var(--jct-ds-bg);
}

.jct-ds-auth__brand {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 26px;
	color: var(--jct-ds-text);
	font-size: 18px;
	font-weight: 800;
}

.jct-ds-auth__brand img {
	max-height: 44px;
	width: auto;
}

.jct-ds-auth__card {
	width: 100%;
	max-width: 440px;
	background: var(--jct-ds-panel);
	border: 1px solid var(--jct-ds-border);
	border-radius: 16px;
	padding: 30px 32px;
	box-shadow: 0 24px 60px rgba(0, 0, 0, 0.45);
}

.jct-ds-auth__card h1,
.jct-ds-auth__card h2 {
	margin: 0 0 6px;
	font-size: 20px;
	color: var(--jct-ds-text);
}

.jct-ds-auth__intro {
	margin: 0 0 18px;
	font-size: 14px;
	color: var(--jct-ds-text-muted);
}

.jct-ds-auth__card .mp_wrapper {
	padding: 0;
}

.jct-ds-auth__card .mp_wrapper input[type="text"],
.jct-ds-auth__card .mp_wrapper input[type="email"],
.jct-ds-auth__card .mp_wrapper input[type="password"],
.jct-ds-auth__card .mepr-form-input {
	max-width: none;
}

.jct-ds-auth__card .mepr-submit,
.jct-ds-auth__card .mp_wrapper input[type="submit"] {
	width: 100%;
	margin-top: 4px;
}

.jct-ds-auth__card .mepr-login-actions {
	margin-top: 14px;
	font-size: 13.5px;
	display: flex;
	justify-content: space-between;
	gap: 10px;
	flex-wrap: wrap;
}

.jct-ds-auth__foot {
	margin-top: 22px;
	font-size: 13px;
	color: var(--jct-ds-text-muted);
}

.jct-ds-auth__foot a {
	color: var(--jct-ds-text-muted);
	text-decoration: underline;
}

.jct-ds-auth__foot a:hover {
	color: var(--jct-ds-green);
}

/* ---------------------------------------------------------------------
 * Responsive
 * ------------------------------------------------------------------ */

@media (max-width: 1023px) {
	.jct-ds-sidebar {
		transform: translateX(-100%);
		transition: transform 0.22s ease;
		box-shadow: 0 0 40px rgba(0, 0, 0, 0.6);
	}

	.jct-ds-body.jct-ds-nav-open .jct-ds-sidebar {
		transform: translateX(0);
	}

	.jct-ds-canvas {
		margin-left: 0;
	}

	.jct-ds-burger,
	.jct-ds-sidebar__close {
		display: flex;
	}

	.jct-ds-overlay {
		position: fixed;
		inset: 0;
		background: rgba(4, 7, 10, 0.6);
		z-index: 990;
	}

	.jct-ds-body:not(.jct-ds-nav-open) .jct-ds-overlay {
		display: none;
	}

	.jct-ds-columns {
		grid-template-columns: 1fr;
	}

	.jct-ds-main__inner {
		padding: 20px 18px 56px;
	}

	.jct-ds-topbar {
		padding: 10px 18px;
	}
}

@media (max-width: 600px) {
	.jct-ds-topbar__title {
		font-size: 16px;
	}

	.jct-ds-button--discord span {
		display: none;
	}

	.jct-ds-progress-item__thumb {
		display: none;
	}

	.jct-ds-body #mepr-account-nav,
	.jct-ds-body .mepr-nav {
		padding: 10px 12px;
	}

	.jct-ds-body .mepr-account-table {
		display: block;
		overflow-x: auto;
	}

	.jct-ds-auth__card {
		padding: 24px 20px;
	}
}


/* ---------------------------------------------------------------------
 * Livestream page (2026-10-24): live first, player + chat side by side,
 * readable titles in the dark shell, one "nothing live" panel.
 * ------------------------------------------------------------------ */

.jct-ds-page--livestreams { display: flex; flex-direction: column; gap: 28px; }
.jct-ds-page--livestreams .jct-ds-anchor-nav { margin: 0; }
.jct-ds-page--livestreams .jct-ds-section__title { margin-top: 0; }

.jct-ds-body .jct-ls .jct-ls-live-main {
	padding: 20px;
	border: 1px solid rgba(234, 57, 67, 0.45);
	border-radius: var(--jct-ds-radius);
	background: linear-gradient(180deg, rgba(234, 57, 67, 0.08), transparent 160px), var(--jct-ds-panel);
}
.jct-ds-body .jct-ls .jct-ls-live-main__header { margin-bottom: 14px; }
.jct-ds-body .jct-ls .jct-ls-live-main__title,
.jct-ds-body .jct-ls .jct-ls-section-title,
.jct-ds-body .jct-ls h2,
.jct-ds-body .jct-ls h3 {
	color: var(--jct-ds-text);
}
.jct-ds-body .jct-ls .jct-ls-live-main__title { font-size: 24px; font-weight: 800; line-height: 1.2; }
.jct-ds-body .jct-ls .jct-ls-live-main__description,
.jct-ds-body .jct-ls .jct-ls-meta-row { color: var(--jct-ds-text-muted); }

/* Player and chat side by side whenever the content area is wide enough. */
.jct-ds-body .jct-ls .jct-ls-live-main__stage { container-type: inline-size; }
@media (min-width: 1180px) {
	.jct-ds-body .jct-ls .jct-ls-live-main__stage { grid-template-columns: minmax(0, 1fr) 340px; align-items: stretch; }
}
.jct-ds-body .jct-ls .jct-ls-live-chat { min-height: 360px; border-radius: var(--jct-ds-radius-sm); }
.jct-ds-body .jct-ls .jct-ls-live-chat--embed { padding: 0; background: var(--jct-ds-panel-2); }
.jct-ds-body .jct-ls .jct-ls-live-chat--embed iframe { min-height: 360px; height: 100%; border-radius: 0; }
.jct-ds-body .jct-ls .jct-ls-live-chat__hint { color: var(--jct-ds-text-muted); border-top-color: var(--jct-ds-border); }
.jct-ds-body .jct-ls .jct-ls-live-chat--discord { background: var(--jct-ds-panel-2); }
.jct-ds-body .jct-ls .jct-ls-live-chat--discord p { color: var(--jct-ds-text-muted); }
.jct-ds-body .jct-ls .jct-ls-live-chat--discord .jct-ls-button { background: var(--jct-ds-discord); color: #fff; border-color: transparent; }

/* Nothing live: one calm panel with the next stream. */
.jct-ds-body .jct-ls .jct-ls-offline {
	padding: 22px;
	border: 1px solid var(--jct-ds-border);
	border-radius: var(--jct-ds-radius);
	background: var(--jct-ds-panel);
}
.jct-ds-body .jct-ls .jct-ls-offline__status { display: flex; align-items: center; gap: 10px; font-size: 18px; font-weight: 800; color: var(--jct-ds-text); }
.jct-ds-body .jct-ls .jct-ls-offline__dot { width: 10px; height: 10px; border-radius: 50%; background: var(--jct-ds-text-muted); }
.jct-ds-body .jct-ls .jct-ls-offline__next { margin: 12px 0 10px; color: var(--jct-ds-text-muted); }
.jct-ds-body .jct-ls .jct-ls-offline .jct-ls-card { background: var(--jct-ds-panel-2); }

.jct-ds-body .jct-ls .jct-ls-live-chat--discord { min-height: 0; }
.jct-ds-body .jct-ls .jct-ls-live-chat--discord h3 { font-size: 20px; font-weight: 800; }
@media (min-width: 1180px) { .jct-ds-body .jct-ls .jct-ls-live-chat--discord { min-height: 360px; } }

/* Link-styled buttons: the generic `.jct-ds-body a` colour must not win over the button's own text colour. */
.jct-ds-body a.jct-ds-button--discord,
.jct-ds-body a.jct-ds-button--discord:hover {
	color: #fff;
}

.jct-ds-body a.jct-ds-button--primary,
.jct-ds-body a.jct-ds-button--primary:hover {
	color: var(--jct-ds-green-ink);
}

/* 1.4.9 (audit 2026-10-31): the local-time and countdown text is added by script after the first
 * paint; keep it from moving the page (CLS 0.3 on the dashboard, 0.2 on livestreams). */
.jct-ds-hero__meta { flex: 1 1 auto; min-width: 0; }
.jct-ds-hero__cta { margin-left: auto; }
.jct-ds-body .jct-ls .jct-ls-card--stream .jct-ls-card__when { min-height: 2.9em; }
.jct-ds-body .jct-ls .jct-ls-card--stream .jct-ls-time__local,
.jct-ds-body .jct-ls .jct-ls-card--stream .jct-ls-time__countdown { display: block; margin-left: 0; }
.jct-ds-hero__meta .jct-ls-time__countdown { margin-left: 0.5rem; font-weight: 600; color: var(--jct-ds-green); }
