/**
 * Conference Platform — Programme UI
 * Version 1.1.0
 *
 * Production programme presentation.
 * - Multi-day filtering
 * - Continuous desktop programme scrubber
 * - Four-pathway desktop grid
 * - Light / Reading / Dark modes
 * - Refined multi-select filter controls
 * - No mobile scrubber; native touch scrolling on mobile
 */


/* ==========================================================================
   FOUNDATION
   ========================================================================== */

.cp-programme {
	--cp-orange: #ff5a2f;
	--cp-blue: #5499d5;

	--cp-head: #13c66b;
	--cp-hands: #ad45c4;
	--cp-heart: #339dd0;
	--cp-voice: #64686c;
	--cp-plenary: #ff5a2f;

	--cp-page: #f5f6f7;
	--cp-surface: #ffffff;
	--cp-surface-raised: #ffffff;
	--cp-surface-soft: #f0f2f3;
	--cp-slot-header: #e9edef;

	--cp-text: #25282a;
	--cp-muted: #6d7479;
	--cp-line: #dce1e4;
	--cp-line-strong: #cbd2d6;

	--cp-shadow: 0 3px 12px rgba(20, 30, 35, 0.06);
	--cp-shadow-raised: 0 8px 24px rgba(20, 30, 35, 0.10);

	--cp-radius: 14px;
	--cp-card-radius: 11px;

	width: 100%;
	max-width: 1500px;
	margin: 0 auto;
	color: var(--cp-text);
	font-family: Avenir, "Avenir Next", Arial, sans-serif;
	line-height: 1.45;
}

.cp-programme *,
.cp-programme *::before,
.cp-programme *::after {
	box-sizing: border-box;
}

.cp-programme [hidden] {
	display: none !important;
}


/* ==========================================================================
   THEMES
   ========================================================================== */

.cp-programme[data-theme="reading"] {
	--cp-page: #f1eadb;
	--cp-surface: #fbf6eb;
	--cp-surface-raised: #fffaf0;
	--cp-surface-soft: #eee4d1;
	--cp-slot-header: #e9dec7;

	--cp-text: #342f28;
	--cp-muted: #746b5d;
	--cp-line: #dfd2ba;
	--cp-line-strong: #cdbd9e;

	--cp-shadow: 0 3px 12px rgba(73, 55, 31, 0.055);
	--cp-shadow-raised: 0 8px 24px rgba(73, 55, 31, 0.10);
}

.cp-programme[data-theme="dark"] {
	--cp-page: #20272c;
	--cp-surface: #283137;
	--cp-surface-raised: #2c363d;
	--cp-surface-soft: #252d32;
	--cp-slot-header: #323c42;

	--cp-text: #f1f4f5;
	--cp-muted: #b6c0c5;
	--cp-line: #3d494f;
	--cp-line-strong: #526068;

	--cp-voice: #899197;

	--cp-shadow: 0 4px 14px rgba(0, 0, 0, 0.14);
	--cp-shadow-raised: 0 10px 28px rgba(0, 0, 0, 0.22);
}


/* ==========================================================================
   PAGE THEME
   ========================================================================== */

body.cp-programme-page-light,
body.cp-programme-page-reading,
body.cp-programme-page-dark {
	transition:
		background-color .22s ease,
		color .22s ease;
}

body.cp-programme-page-light,
body.cp-programme-page-light #page-container,
body.cp-programme-page-light #main-content,
body.cp-programme-page-light .et_pb_section {
	background-color: #f5f6f7 !important;
}

body.cp-programme-page-reading,
body.cp-programme-page-reading #page-container,
body.cp-programme-page-reading #main-content,
body.cp-programme-page-reading .et_pb_section {
	background-color: #f1eadb !important;
}

body.cp-programme-page-dark,
body.cp-programme-page-dark #page-container,
body.cp-programme-page-dark .cp-programme-host-section {
	background-color: #20272c !important;
}


/* ==========================================================================
   TOOLBAR
   ========================================================================== */

.cp-programme__toolbar {
	margin-bottom: 22px;
	padding: 9px;
	border: 1px solid var(--cp-line);
	border-radius: var(--cp-radius);
	background: var(--cp-surface);
	box-shadow: var(--cp-shadow);
}

.cp-programme__days {
	display: flex;
	gap: 5px;
	padding: 4px;
	overflow-x: auto;
	border-radius: 9px;
	background: var(--cp-surface-soft);
	-webkit-overflow-scrolling: touch;
}

.cp-programme__days button {
	display: inline-flex;
	flex: 1 0 auto;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-height: 40px;
	padding: 7px 12px;
	border: 1px solid transparent;
	border-radius: 7px;
	background: transparent;
	color: var(--cp-text);
	font: inherit;
	font-size: 13px;
	font-weight: 700;
	cursor: pointer;
	white-space: nowrap;
	transition:
		background-color .15s ease,
		border-color .15s ease,
		color .15s ease;
}

.cp-programme__days button:hover {
	background: color-mix(in srgb, var(--cp-blue) 12%, transparent);
}

.cp-programme__days button.is-active {
	border-color: var(--cp-blue);
	background: var(--cp-blue);
	color: #fff;
}

.cp-programme__day-compact {
	display: none;
}

.cp-programme__today {
	padding: 2px 5px;
	border-radius: 4px;
	background: var(--cp-orange);
	color: #fff;
	font-size: 8px;
	font-weight: 900;
	text-transform: uppercase;
}


/* ==========================================================================
   TOOLBAR SECOND ROW
   ========================================================================== */

.cp-programme__toolbar-row {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 10px;
	margin-top: 8px;
}

.cp-programme__appearance {
	display: inline-flex;
	gap: 2px;
	padding: 3px;
	border: 1px solid var(--cp-line);
	border-radius: 8px;
	background: var(--cp-surface-soft);
}

.cp-programme__appearance button {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	min-height: 34px;
	padding: 5px 9px;
	border: 0;
	border-radius: 6px;
	background: transparent;
	color: var(--cp-muted);
	font: inherit;
	font-size: 11px;
	font-weight: 700;
	cursor: pointer;
}

.cp-programme__appearance button.is-active {
	background: var(--cp-surface-raised);
	color: var(--cp-text);
	box-shadow: 0 1px 4px rgba(0, 0, 0, .09);
}

.cp-programme__filters-toggle {
	display: none;
	min-height: 40px;
	padding: 7px 12px;
	border: 1px solid var(--cp-line);
	border-radius: 7px;
	background: var(--cp-surface-raised);
	color: var(--cp-text);
	font: inherit;
	font-weight: 700;
	cursor: pointer;
}


/* ==========================================================================
   FILTERS — MULTI-SELECT
   ========================================================================== */

.cp-programme__filters {
	display: grid;
	grid-template-columns: 1fr auto;
	gap: 14px 18px;
	align-items: end;
	margin-top: 9px;
	padding: 14px 2px 2px;
	border-top: 1px solid var(--cp-line);
}

.cp-programme__multi-filter,
.cp-programme__topic-filter {
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
}

.cp-programme__multi-filter {
	grid-column: 1 / -1;
}

.cp-programme__multi-filter legend,
.cp-programme__topic-filter legend {
	width: 100%;
	margin: 0 0 7px;
	color: var(--cp-muted);
	font-size: 10px;
	font-weight: 900;
	letter-spacing: .045em;
	text-transform: uppercase;
}

.cp-programme__multi-filter legend span,
.cp-programme__topic-filter legend span {
	margin-left: 6px;
	font-size: 9px;
	font-weight: 600;
	letter-spacing: 0;
	text-transform: none;
}

.cp-programme__multi-options,
.cp-programme__topic-options {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.cp-programme__multi-option,
.cp-programme__topic-option {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-height: 38px;
	padding: 7px 14px;
	border: 1px solid var(--cp-line-strong);
	border-radius: 999px;
	background: var(--cp-surface-raised);
	color: var(--cp-text);
	box-shadow: 0 2px 7px rgba(20, 30, 35, .055);
	font: inherit;
	font-size: 11px;
	font-weight: 750;
	line-height: 1.2;
	cursor: pointer;
	transition:
		background-color .14s ease,
		border-color .14s ease,
		color .14s ease,
		box-shadow .14s ease,
		transform .14s ease;
}

.cp-programme__multi-option:hover,
.cp-programme__topic-option:hover {
	border-color: var(--cp-blue);
	box-shadow: 0 4px 11px rgba(20, 30, 35, .10);
	transform: translateY(-1px);
}

.cp-programme__multi-option:focus-visible,
.cp-programme__topic-option:focus-visible {
	outline: 3px solid color-mix(in srgb, var(--cp-blue) 36%, transparent);
	outline-offset: 2px;
}

.cp-programme__multi-option.is-active,
.cp-programme__topic-option.is-active {
	border-color: var(--cp-blue);
	background: var(--cp-blue);
	color: #fff;
	box-shadow: 0 4px 11px color-mix(in srgb, var(--cp-blue) 24%, transparent);
}

.cp-programme__multi-option.is-active::before,
.cp-programme__topic-option.is-active::before {
	content: "✓";
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 14px;
	height: 14px;
	font-size: 10px;
	font-weight: 950;
	line-height: 1;
	animation: cp-filter-tick-in .16s ease both;
}

.cp-programme__multi-option:active,
.cp-programme__topic-option:active {
	transform: scale(.97);
}

.cp-programme__multi-option[data-filter-value="head"].is-active {
	border-color: var(--cp-head);
	background: var(--cp-head);
	box-shadow: 0 4px 11px color-mix(in srgb, var(--cp-head) 24%, transparent);
}

.cp-programme__multi-option[data-filter-value="hands"].is-active {
	border-color: var(--cp-hands);
	background: var(--cp-hands);
	box-shadow: 0 4px 11px color-mix(in srgb, var(--cp-hands) 24%, transparent);
}

.cp-programme__multi-option[data-filter-value="heart"].is-active {
	border-color: var(--cp-heart);
	background: var(--cp-heart);
	box-shadow: 0 4px 11px color-mix(in srgb, var(--cp-heart) 24%, transparent);
}

.cp-programme__multi-option[data-filter-value="voice"].is-active {
	border-color: var(--cp-voice);
	background: var(--cp-voice);
	box-shadow: 0 4px 11px color-mix(in srgb, var(--cp-voice) 24%, transparent);
}

.cp-programme__multi-option[data-filter-value="plenary"].is-active {
	border-color: var(--cp-plenary);
	background: var(--cp-plenary);
	box-shadow: 0 4px 11px color-mix(in srgb, var(--cp-plenary) 24%, transparent);
}

@keyframes cp-filter-tick-in {
	from {
		opacity: 0;
		transform: scale(.65);
	}

	to {
		opacity: 1;
		transform: scale(1);
	}
}


/* Original selects remain accessible until JS enhancement succeeds. */

.cp-programme__filter-source {
	display: block;
}

.cp-programme__filter-source.is-enhanced {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	margin: -1px !important;
	padding: 0 !important;
	overflow: hidden !important;
	border: 0 !important;
	clip: rect(0 0 0 0) !important;
	clip-path: inset(50%) !important;
	white-space: nowrap !important;
}


/* Clear filters becomes prominent only when something can be cleared. */

.cp-programme__clear {
	justify-self: start;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 7px;
	min-height: 38px;
	padding: 7px 14px;
	border: 1px solid var(--cp-line-strong);
	border-radius: 999px;
	background: var(--cp-surface-raised);
	color: var(--cp-muted);
	box-shadow: 0 2px 7px rgba(20, 30, 35, .045);
	font: inherit;
	font-size: 11px;
	font-weight: 850;
	cursor: default;
	opacity: .52;
	transition:
		background-color .14s ease,
		border-color .14s ease,
		color .14s ease,
		box-shadow .14s ease,
		opacity .14s ease,
		transform .14s ease;
}

.cp-programme__clear::before {
	content: "↻";
	display: inline-block;
	font-size: 15px;
	font-weight: 800;
	line-height: 1;
}

.cp-programme__clear.is-active {
	border-color: color-mix(in srgb, var(--cp-orange) 52%, var(--cp-line));
	background: color-mix(in srgb, var(--cp-orange) 8%, var(--cp-surface-raised));
	color: var(--cp-orange);
	box-shadow: 0 3px 9px color-mix(in srgb, var(--cp-orange) 10%, transparent);
	cursor: pointer;
	opacity: 1;
}

.cp-programme__clear.is-active:hover {
	border-color: var(--cp-orange);
	background: var(--cp-orange);
	color: #fff;
	box-shadow: 0 5px 13px color-mix(in srgb, var(--cp-orange) 23%, transparent);
	transform: translateY(-1px);
}

.cp-programme__clear.is-active:active {
	transform: scale(.97);
}

.cp-programme__topic-filter {
	grid-column: 1 / -1;
	padding-top: 11px;
	border-top: 1px solid var(--cp-line);
}


/* ==========================================================================
   DAY
   ========================================================================== */

.cp-programme-day {
	margin-bottom: 30px;
	overflow: hidden;
	border-radius: var(--cp-radius);
	background: var(--cp-surface-soft);
	box-shadow: var(--cp-shadow);
}

.cp-programme-day__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 13px 17px;
	background: var(--cp-orange);
	color: #fff;
}

.cp-programme-day__header > div {
	display: flex;
	align-items: center;
	gap: 8px;
}

.cp-programme-day__header h2 {
	margin: 0 !important;
	padding: 0 !important;
	color: #fff !important;
	font-size: 20px !important;
	font-weight: 900 !important;
	line-height: 1.2 !important;
}

.cp-programme-day__header > span {
	font-size: 12px;
	font-weight: 800;
}

.cp-programme-day__today {
	padding: 3px 7px;
	border-radius: 999px;
	background: #fff;
	color: var(--cp-orange);
	font-size: 9px;
	font-weight: 900;
	text-transform: uppercase;
}

.cp-programme-day__slots {
	padding: 12px;
}


/* ==========================================================================
   SLOT
   ========================================================================== */

.cp-programme-slot {
	margin-bottom: 14px;
	overflow: hidden;
	border-radius: 10px;
	background: var(--cp-surface);
}

.cp-programme-slot:last-child {
	margin-bottom: 0;
}

.cp-programme-slot__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	min-height: 38px;
	padding: 6px 11px;
	background: var(--cp-slot-header);
}

.cp-programme-slot__time {
	display: flex;
	align-items: center;
	gap: 4px;
}

.cp-programme-slot__time strong {
	color: var(--cp-text);
	font-size: 15px;
	font-weight: 850;
}

.cp-programme-slot__time > span:not(.cp-programme-slot__now) {
	color: var(--cp-muted);
	font-size: 13px;
	font-weight: 600;
}

.cp-programme-slot__now {
	margin-left: 7px;
	padding: 3px 7px;
	border-radius: 999px;
	background: var(--cp-orange);
	color: #fff;
	font-size: 9px;
	font-weight: 900;
	letter-spacing: .06em;
}

.cp-programme-slot__block {
	color: var(--cp-muted);
	font-size: 10px;
	font-weight: 850;
	letter-spacing: .05em;
	text-transform: uppercase;
}


/* ==========================================================================
   SESSION GRID
   ========================================================================== */

.cp-programme-slot__sessions {
	display: grid;
	gap: 10px;
	padding: 10px;
}

.cp-programme-slot__sessions.is-count-1 {
	grid-template-columns: minmax(0, 560px);
	justify-content: start;
}

.cp-programme-slot__sessions.is-count-1:has(.cp-session-card--plenary:not([hidden])) {
	grid-template-columns: minmax(0, 1fr);
}

.cp-programme-slot__sessions.is-count-2 {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.cp-programme-slot__sessions.is-count-3 {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.cp-programme-slot__sessions.is-count-4 {
	grid-template-columns: repeat(4, minmax(0, 1fr));
}


/* ==========================================================================
   CARDS
   ========================================================================== */

.cp-session-card {
	--cp-pathway: var(--cp-blue);

	--cp-pathway-tint:
		color-mix(
			in srgb,
			var(--cp-pathway) 5%,
			var(--cp-surface-raised)
		);

	position: relative;
	display: flex;
	flex-direction: column;
	min-width: 0;
	min-height: 205px;
	overflow: hidden;
	border: 1px solid var(--cp-line);
	border-radius: var(--cp-card-radius);
	background: var(--cp-pathway-tint);
	box-shadow: var(--cp-shadow);

	transition:
		transform .16s ease,
		box-shadow .16s ease,
		border-color .16s ease;
}

.cp-session-card:hover {
	transform: translateY(-2px);
	box-shadow: var(--cp-shadow-raised);
}

.cp-session-card--head {
	--cp-pathway: var(--cp-head);
}

.cp-session-card--hands {
	--cp-pathway: var(--cp-hands);
}

.cp-session-card--heart {
	--cp-pathway: var(--cp-heart);
}

.cp-session-card--voice {
	--cp-pathway: var(--cp-voice);
}

.cp-session-card--plenary {
	--cp-pathway: var(--cp-plenary);
	min-height: 155px;
}

.cp-session-card__link {
	position: absolute;
	z-index: 1;
	inset: 0;
}

.cp-session-card__top,
.cp-session-card__pathway,
.cp-session-card__content {
	position: relative;
	z-index: 2;
	pointer-events: none;
}

.cp-session-card__speakers a,
.cp-session-card__title a,
.cp-session-card__topics button {
	pointer-events: auto;
}

.cp-session-card__top {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	min-height: 38px;
	padding: 7px 10px;
	background: var(--cp-pathway);
	color: #fff;
}

.cp-session-card__code {
	overflow: hidden;
	font-size: 10px;
	font-weight: 900;
	letter-spacing: .055em;
	text-overflow: ellipsis;
	text-transform: uppercase;
	white-space: nowrap;
}

.cp-session-card__level {
	flex: 0 0 auto;
	padding: 3px 7px;
	border: 1px solid rgba(255, 255, 255, .72);
	border-radius: 999px;
	color: #fff;
	font-size: 8px;
	font-weight: 900;
	text-transform: uppercase;
}

.cp-session-card__pathway {
	padding: 8px 10px;
	border-bottom: 1px solid var(--cp-line);
	color: var(--cp-pathway);
	font-size: 14px;
	font-weight: 900;
	letter-spacing: .05em;
	text-transform: uppercase;
}

.cp-session-card__content {
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: 12px;
}

.cp-session-card__title {
	margin: 8px 0 11px !important;
	padding: 0 !important;
	color: var(--cp-text) !important;
	font-size: 15px !important;
	font-weight: 800 !important;
	line-height: 1.3 !important;
}

.cp-session-card__title a {
	color: inherit !important;
	text-decoration: none !important;
}

.cp-session-card__title a:hover {
	color: var(--cp-pathway) !important;
}


/* ==========================================================================
   SPEAKERS
   ========================================================================== */

.cp-session-card__speakers {
	display: flex;
	flex-wrap: wrap;
	gap: 7px 10px;
}

.cp-speaker {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	color: var(--cp-text) !important;
	font-size: 11px;
	font-weight: 750;
	text-decoration: none !important;
}

.cp-speaker img {
	width: 36px !important;
	height: 36px !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 2px solid var(--cp-pathway);
	border-radius: 50%;
	object-fit: cover;
}


/* ==========================================================================
   CARD TOPICS
   ========================================================================== */

.cp-session-card__topics {
	display: flex;
	flex-wrap: wrap;
	gap: 5px;
	margin-top: auto;
	padding-top: 9px;
}

.cp-topic {
	min-height: 29px;
	padding: 5px 8px;
	border: 1px solid var(--cp-line);
	border-radius: 999px;

	background:
		color-mix(
			in srgb,
			var(--cp-surface-raised) 88%,
			var(--cp-pathway) 12%
		);

	color: var(--cp-text);
	font: inherit;
	font-size: 9px;
	font-weight: 650;
	cursor: pointer;
}

.cp-topic:hover,
.cp-topic.is-active {
	border-color: var(--cp-pathway);
	background: var(--cp-pathway);
	color: #fff;
}


/* ==========================================================================
   PLENARY
   ========================================================================== */

.cp-session-card--plenary .cp-session-card__content {
	padding: 14px 16px;
}

.cp-session-card--plenary .cp-session-card__title {
	font-size: 17px !important;
}


/* ==========================================================================
   DAY-SPECIFIC DESKTOP SCRUBBER
   ========================================================================== */

/*
 * One day occupies the full rail at a time.
 * The active day switches automatically as the page crosses the next
 * visible day.
 */

.cp-time-navigator {
	position: fixed;
	z-index: 50;
	top: 150px;
	left: var(--cp-nav-left, auto);
	right: auto;
	width: 138px;
	height: min(69vh, 640px);
	opacity: 0;
	pointer-events: none;

	transition:
		opacity .18s ease,
		transform .18s ease;
}

.cp-time-navigator.is-available {
	opacity: 1;
	pointer-events: auto;
}

.cp-time-navigator.is-switching-day {
	opacity: .38;
	transform: translateY(4px);
}

.cp-time-navigator__inner {
	display: flex;
	height: 100%;
	flex-direction: column;
	align-items: stretch;
}

.cp-time-navigator__heading {
	flex: 0 0 auto;
	min-height: 50px;
	margin: 0 0 8px;
	padding-left: 4px;
	color: var(--cp-muted);
}

.cp-time-navigator__heading > span {
	display: block;
	margin-bottom: 3px;
	font-size: 8px;
	font-weight: 900;
	letter-spacing: .11em;
	text-transform: uppercase;
	opacity: .72;
}

.cp-time-navigator__heading strong {
	display: block !important;
	max-width: 134px;
	color: var(--cp-text);
	font-size: 11px;
	font-weight: 900;
	line-height: 1.25;
	letter-spacing: .015em;
	text-transform: uppercase;
}

.cp-time-navigator__heading strong.is-day-change {
	animation: cp-day-change .36s ease;
}

@keyframes cp-day-change {
	from {
		opacity: 0;
		transform: translateY(-4px);
	}

	to {
		opacity: 1;
		transform: translateY(0);
	}
}

.cp-time-navigator__track {
	position: relative;
	flex: 1;
	width: 100%;
	min-height: 280px;
	cursor: ns-resize;
	touch-action: none;
	user-select: none;
}

.cp-time-navigator__rail {
	position: absolute;
	top: 10px;
	bottom: 10px;
	left: 18px;
	width: 4px;
	border-radius: 999px;
	background: var(--cp-line-strong);
	opacity: .95;
}

.cp-time-navigator__progress {
	position: absolute;
	top: 10px;
	left: 18px;
	width: 4px;
	height: 0;
	border-radius: 999px;
	background: var(--cp-blue);
	pointer-events: none;
}

.cp-time-navigator__day {
	position: absolute;
	inset: 10px 0;
	pointer-events: none;
}

.cp-time-navigator__day[hidden] {
	display: none !important;
}

.cp-time-navigator__dot {
	position: absolute;
	left: 10px;
	width: 20px;
	height: 20px;
	margin: -10px 0 0;
	padding: 0;
	border: 4px solid var(--cp-page);
	border-radius: 50%;
	background: var(--cp-line-strong);
	box-shadow: 0 0 0 1px var(--cp-line-strong);
	cursor: pointer;
	pointer-events: auto;

	transition:
		transform .13s ease,
		background-color .13s ease,
		box-shadow .13s ease;
}

.cp-time-navigator__dot:hover,
.cp-time-navigator__dot.is-active {
	background: var(--cp-blue);
	box-shadow: 0 0 0 2px var(--cp-blue);
	transform: scale(1.10);
}

.cp-time-navigator__dot small {
	position: absolute;
	left: 28px;
	top: 50%;
	padding: 3px 6px;
	border-radius: 5px;
	background: var(--cp-surface-raised);
	color: var(--cp-text);
	box-shadow: var(--cp-shadow);
	font-size: 9px;
	font-weight: 800;
	opacity: 0;
	transform: translateY(-50%);
	transition: opacity .12s ease;
	white-space: nowrap;
}

.cp-time-navigator__dot:hover small,
.cp-time-navigator__dot:focus-visible small {
	opacity: 1;
}

.cp-time-navigator__day-break,
.cp-time-navigator__magnet {
	display: none !important;
}

.cp-time-navigator__now {
	position: absolute;
	z-index: 6;
	left: 7px;
	display: flex;
	align-items: center;
	transform: translateY(-50%);
	pointer-events: none;
}

.cp-time-navigator__now span {
	width: 26px;
	height: 26px;
	border: 5px solid var(--cp-page);
	border-radius: 50%;
	background: var(--cp-orange);
	box-shadow: 0 0 0 2px var(--cp-orange);
}

.cp-time-navigator__now strong {
	position: absolute;
	left: 34px;
	padding: 3px 6px;
	border-radius: 4px;
	background: var(--cp-orange);
	color: #fff;
	font-size: 8px;
	font-weight: 900;
	white-space: nowrap;
}

.cp-time-navigator__handle {
	position: absolute;
	z-index: 12;
	left: 3px;
	display: flex;
	align-items: center;
	transform: translateY(-50%);
	pointer-events: none;
	transition: opacity .22s ease;
}

.cp-time-navigator__handle span {
	width: 34px;
	height: 34px;
	border: 6px solid var(--cp-page);
	border-radius: 50%;
	background: var(--cp-hands);
	box-shadow:
		0 0 0 2px var(--cp-hands),
		0 5px 15px rgba(0, 0, 0, .20);
}

.cp-time-navigator__handle output {
	position: absolute;
	left: 43px;
	padding: 4px 7px;
	border-radius: 5px;
	background: var(--cp-hands);
	color: #fff;
	font-size: 9px;
	font-weight: 900;
	white-space: nowrap;
}

.cp-time-navigator__handle.is-releasing {
	opacity: 0;
}

.cp-mobile-progress {
	display: none !important;
}


/* ==========================================================================
   EMPTY STATE
   ========================================================================== */

.cp-programme__none,
.cp-programme--empty {
	padding: 24px;
	border-radius: var(--cp-radius);
	background: var(--cp-surface);
	color: var(--cp-muted);
	text-align: center;
}


/* ==========================================================================
   ACCESSIBILITY
   ========================================================================== */

.cp-programme button:focus-visible,
.cp-programme select:focus-visible,
.cp-programme a:focus-visible,
.cp-time-navigator__track:focus-visible {
	outline: 3px solid rgba(84, 153, 213, .48);
	outline-offset: 3px;
}


/* ==========================================================================
   MEDIUM DESKTOP / TABLET
   ========================================================================== */

@media (max-width: 1250px) {

	.cp-time-navigator {
		display: none;
	}

	.cp-programme-slot__sessions.is-count-4,
	.cp-programme-slot__sessions.is-count-3 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.cp-programme__day-full {
		display: none;
	}

	.cp-programme__day-compact {
		display: inline;
	}
}


/* ==========================================================================
   MOBILE
   ========================================================================== */

@media (max-width: 767px) {

	.cp-programme__toolbar {
		margin-bottom: 16px;
		padding: 8px;
	}

	.cp-programme__days button {
		flex: 0 0 auto;
		min-height: 44px;
	}

	.cp-programme__toolbar-row {
		justify-content: space-between;
	}

	.cp-programme__filters-toggle {
		display: inline-flex;
		align-items: center;
		gap: 6px;
	}

	.cp-programme__appearance button {
		min-height: 40px;
	}

	.cp-programme__appearance button span:last-child {
		display: none;
	}

	.cp-programme__filters {
		display: none;
		grid-template-columns: 1fr;
	}

	.cp-programme__filters.is-open {
		display: grid;
	}

	.cp-programme__topic-filter {
		grid-column: auto;
	}

	.cp-programme__filters select,
	.cp-programme__clear {
		min-height: 46px;
	}

	.cp-programme-day {
		margin-bottom: 22px;
	}

	.cp-programme-day__header {
		padding: 11px 12px;
	}

	.cp-programme-day__header h2 {
		font-size: 16px !important;
	}

	.cp-programme-day__slots {
		padding: 8px;
	}

	.cp-programme-slot {
		margin-bottom: 10px;
	}

	.cp-programme-slot__header {
		align-items: flex-start;
		flex-direction: column;
		gap: 2px;
		padding: 8px 10px;
	}

	.cp-programme-slot__block {
		font-size: 9px;
	}

	.cp-programme-slot__sessions.is-count-1,
	.cp-programme-slot__sessions.is-count-2,
	.cp-programme-slot__sessions.is-count-3,
	.cp-programme-slot__sessions.is-count-4 {
		grid-template-columns: 1fr;
	}

	.cp-session-card {
		min-height: 0;
	}

	.cp-session-card:hover {
		transform: none;
	}

	.cp-speaker {
		font-size: 12px;
	}

	.cp-topic {
		min-height: 34px;
		padding: 6px 9px;
	}
}


/* ==========================================================================
   REDUCED MOTION
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {

	.cp-programme *,
	.cp-programme *::before,
	.cp-programme *::after {
		scroll-behavior: auto !important;
		transition: none !important;
		animation: none !important;
	}
}


/* ==========================================================================
   DIVI HOST SECTION THEME INTEGRATION
   ========================================================================== */

body.cp-programme-page-light .cp-programme-host-section {
	background: #f5f6f7 !important;
}

body.cp-programme-page-reading .cp-programme-host-section {
	background: #f3efe5 !important;
}

body.cp-programme-page-dark .cp-programme-host-section {
	background: #20272c !important;
}

body.cp-programme-page-light .cp-programme-host-section > .et_pb_row,
body.cp-programme-page-reading .cp-programme-host-section > .et_pb_row,
body.cp-programme-page-dark .cp-programme-host-section > .et_pb_row {
	background-color: transparent !important;
}
/* SEARCH & DISCOVERY: isolated controls; existing card/navigation rules unchanged. */
.cp-programme__search {
	grid-column: 1 / -1;
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 6px 10px;
	align-items: center;
	max-width: 640px;
	width: 100%;
}
.cp-programme__search label { grid-column: 1 / -1; color: var(--cp-muted); font-size: 11px; font-weight: 800; }
.cp-programme__search input[type="search"] {
	min-width: 0;
	width: 100%;
	min-height: 44px;
	padding: 10px 12px;
	border: 1px solid var(--cp-line-strong);
	border-radius: 10px;
	background: var(--cp-surface-raised);
	color: var(--cp-text);
	font: inherit;
	font-size: 14px;
}
.cp-programme__search button, .cp-programme__none button {
	min-height: 44px;
	padding: 8px 12px;
	border: 1px solid var(--cp-line-strong);
	border-radius: 10px;
	background: var(--cp-surface-raised);
	color: var(--cp-text);
	font: inherit;
	font-size: 12px;
	cursor: pointer;
}
.cp-programme__search button:disabled { opacity: .5; cursor: default; }
.cp-programme__search button:not(:disabled):hover, .cp-programme__none button:hover { background: var(--cp-surface-soft); }
.cp-programme__search input:focus-visible, .cp-programme__search button:focus-visible, .cp-programme__none button:focus-visible { outline: 3px solid var(--cp-blue); outline-offset: 2px; }
.cp-programme__search-status { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.cp-programme__none strong { display: block; color: var(--cp-text); }
.cp-programme__none p { margin: 6px 0 12px; }
.cp-programme__none button + button { margin-left: 6px; }
@media (max-width: 767px) {
	.cp-programme__search { max-width: none; }
	.cp-programme__search input[type="search"] { font-size: 16px; }
}

/* STAGE 4 VISUAL POLISH: compact controls and unobtrusive heart feedback only. */
.cp-programme__toolbar { padding: 8px; margin-bottom: 16px; }
.cp-programme__toolbar-row { margin-top: 6px; }
/* Three explicit rows: search, primary filters, topics. */
.cp-programme__filters {
	grid-template-columns: minmax(0, 1fr);
	grid-template-areas: none;
	gap: 6px;
	margin-top: 4px;
	padding-top: 6px;
	padding-bottom: 0;
}
.cp-programme__filters > .cp-programme__search,
.cp-programme__filters > .cp-programme__primary-filters,
.cp-programme__filters > .cp-programme__topic-filter { grid-column: 1 / -1; min-width: 0; }
.cp-programme__primary-filters {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	grid-template-areas: "room room" "level clear";
	gap: 6px 14px;
	align-items: end;
}
.cp-programme .cp-programme__primary-filters > .cp-programme__filter-cell { min-width: 0; }
.cp-programme .cp-programme__primary-filters > .cp-programme__filter-cell--room { grid-area: room; }
.cp-programme .cp-programme__primary-filters > .cp-programme__filter-cell--level { grid-area: level; }
.cp-programme .cp-programme__primary-filters > .cp-programme__clear { grid-area: clear; justify-self: end; white-space: nowrap; }
.cp-programme__filters > .cp-programme__topic-filter { padding-top: 5px; }
.cp-programme__multi-filter legend, .cp-programme__topic-filter legend { margin-bottom: 3px; }
.cp-programme__multi-options, .cp-programme__topic-options { row-gap: 6px; }
/* Future topic icons precede visible text, using the existing 6px flex gap.
   No icon or empty placeholder is rendered until topic artwork is supplied. */
.cp-programme__topic-option > .cp-programme__topic-icon {
	inline-size: 14px;
	block-size: 14px;
	flex: 0 0 14px;
}
.cp-programme__multi-option, .cp-programme__topic-option, .cp-programme__clear { min-height: 34px; padding-top: 5px; padding-bottom: 5px; }
.cp-programme__search { row-gap: 4px; }
.cp-programme__search input[type="search"] { min-height: 38px; padding-top: 7px; padding-bottom: 7px; }
.cp-programme__search button { min-height: 38px; padding-top: 6px; padding-bottom: 6px; }
@media (min-width: 768px) {
	.cp-programme__search { grid-template-columns: auto minmax(0, 1fr) auto; }
	.cp-programme__search label { grid-column: auto; }
}
@media (min-width: 1024px) {
	.cp-programme .cp-programme__primary-filters {
		display: grid;
		grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) max-content;
		grid-template-areas: "room level clear";
	}
}
/* The shared stylesheet overrides presentation only; Stage 3 assets stay intact. */
body .cp-my-conference-status {
	width: max-content;
	max-width: min(320px, calc(100vw - 32px));
	bottom: calc(12px + env(safe-area-inset-bottom, 0px));
	padding: 8px 12px;
	border-radius: 10px;
	box-shadow: 0 2px 8px #0002;
	font-size: 12px;
	line-height: 1.4;
	font-weight: 600;
	text-align: center;
	overflow-wrap: break-word;
	pointer-events: none;
}
@media (max-width: 767px) {
	.cp-programme__primary-filters { grid-template-areas: "room room" "level level"; column-gap: 8px; }
	/* Share the Level header with Clear Filters; retain full-width wrapping below. */
	.cp-programme .cp-programme__primary-filters > .cp-programme__clear { grid-area: level; align-self: start; }
	.cp-programme__filter-cell--level .cp-programme__multi-filter legend,
	.cp-programme__filter-cell--level > label > span {
	 display: flex;
	 align-items: center;
	 flex-wrap: wrap;
	 min-height: 44px;
	 padding-right: 140px;
	}
}
@media (max-width: 767px), (pointer: coarse) {
	.cp-programme__multi-option, .cp-programme__topic-option, .cp-programme__clear,
	.cp-programme__filters select, .cp-programme__search input[type="search"],
	.cp-programme__search button { min-height: 44px; }
}

/* STAGE 5 ARTWORK/DENSITY: presentation only; existing controls and layout logic retained. */
.cp-session-card__pathway { display: flex; align-items: center; gap: 6px; }
.cp-session-card__pathway-artwork { width: 20px; height: 20px; flex: 0 0 20px; object-fit: contain; }
.cp-session-card .cp-topic { display: inline-flex; align-items: center; justify-content: center; gap: 4px; max-width: 100%; overflow-wrap: anywhere; }
.cp-session-card__topic-artwork { width: 14px; height: 14px; flex: 0 0 14px; object-fit: contain; }
.cp-programme[data-theme="dark"] .cp-session-card__topic-artwork,
.cp-session-card .cp-topic:hover .cp-session-card__topic-artwork,
.cp-session-card .cp-topic.is-active .cp-session-card__topic-artwork { filter: brightness(0) invert(.95); }
@media (max-width: 767px) {
 .cp-session-card { border-radius: 10px; }
 .cp-session-card__top { padding: 5px 10px; }
 .cp-session-card__pathway { padding: 5px 10px; font-size: 12px; }
 .cp-programme:has(.cp-my-conference-heart) .cp-session-card__pathway { min-height: 44px; }
 .cp-session-card__content { padding: 9px 10px; }
 .cp-session-card__title { margin: 6px 0 7px !important; }
 .cp-session-card__speakers { gap: 5px 8px; }
 .cp-session-card__topics { gap: 6px; padding-top: 3px; }
 .cp-session-card .cp-topic { min-height: 28px; padding: 3px 6px; border-radius: 8px; font-size: 9px; line-height: 1.3; }
}
/* END STAGE 5 ARTWORK/DENSITY */

/* FILTER ARTWORK: existing resolver, existing controls and selected checkmark. */
.cp-programme__filter-room-art, .cp-programme__filter-topic-art { width: 16px; height: 16px; flex: 0 0 16px; object-fit: contain; }
.cp-programme[data-theme="dark"] .cp-programme__filter-topic-art,
.cp-programme__topic-option.is-active .cp-programme__filter-topic-art { filter: brightness(0) invert(.95); }
.cp-programme__filter-cell--room .cp-programme__multi-option[data-filter-value="plenary"] { --cp-filter-pathway: var(--cp-plenary); }
.cp-programme__filter-cell--room .cp-programme__multi-option[data-filter-value="head"] { --cp-filter-pathway: var(--cp-head); }
.cp-programme__filter-cell--room .cp-programme__multi-option[data-filter-value="hands"] { --cp-filter-pathway: var(--cp-hands); }
.cp-programme__filter-cell--room .cp-programme__multi-option[data-filter-value="heart"] { --cp-filter-pathway: var(--cp-heart); }
.cp-programme__filter-cell--room .cp-programme__multi-option[data-filter-value="voice"] { --cp-filter-pathway: var(--cp-voice); }
.cp-programme__filter-cell--room .cp-programme__multi-option.is-active { color: var(--cp-text); border-color: var(--cp-filter-pathway, var(--cp-blue)); background: color-mix(in srgb, var(--cp-filter-pathway, var(--cp-blue)) 12%, var(--cp-surface)); box-shadow: inset 0 -2px 0 var(--cp-filter-pathway, var(--cp-blue)); }

/* v1.4.36.3 — atmosphere is painted on the full page canvas, never the Programme box. */
.cp-programme[data-cp-programme][data-theme="dark"] {
	background: var(--cp-page);
	animation: none !important;
}


/* v1.4.36.3 — edge-free full-canvas fog for the public Programme. */
body.cp-programme-page-dark #main-content.cp-programme-page-surface {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	background: #20272c !important;
}
body.cp-programme-page-dark #main-content.cp-programme-page-surface::before {
	content: "";
	position: fixed;
	inset: -28vh -24vw;
	z-index: 0;
	pointer-events: none;
	background:
		radial-gradient(ellipse 34vw 30vh at 7% 24%, rgba(255,90,47,.095) 0%, rgba(255,90,47,.050) 24%, rgba(255,90,47,.018) 46%, transparent 72%),
		radial-gradient(ellipse 30vw 28vh at 93% 67%, rgba(255,90,47,.070) 0%, rgba(255,90,47,.030) 28%, rgba(255,90,47,.010) 49%, transparent 74%),
		radial-gradient(ellipse 24vw 20vh at 49% 104%, rgba(255,126,73,.045) 0%, rgba(255,126,73,.014) 45%, transparent 76%);
	filter: blur(78px);
	opacity: .72;
	transform: translate3d(0,0,0) scale(1.06);
	animation: cp-programme-fog-drift 36s ease-in-out infinite alternate;
}
body.cp-programme-page-dark #main-content.cp-programme-page-surface > * {
	position: relative;
	z-index: 1;
}
body.cp-programme-page-dark .cp-programme-host-section {
	background: transparent !important;
}
@keyframes cp-programme-fog-drift {
	from { transform: translate3d(-1.2vw,-.7vh,0) scale(1.06); }
	to   { transform: translate3d(1.4vw,.9vh,0) scale(1.09); }
}
@media (prefers-reduced-motion: reduce) {
	body.cp-programme-page-dark #main-content.cp-programme-page-surface::before { animation: none !important; }
}

/* ========================================================================== */
/* v1.4.36.5 — public Programme uses the same edge-free page-level smoke      */
/* ========================================================================== */
body.cp-programme-page-dark {
 position: relative;
 isolation: isolate;
 background: #20272c !important;
}
body.cp-programme-page-dark::before,
body.cp-programme-page-dark::after {
 content: "";
 position: fixed;
 z-index: 0;
 pointer-events: none;
 border-radius: 46% 54% 61% 39% / 43% 39% 61% 57%;
 transform: translate3d(0,0,0);
}
body.cp-programme-page-dark::before {
 width: min(900px,72vw);
 height: min(760px,70vh);
 left: max(-430px,-31vw);
 top: 8vh;
 background:
	radial-gradient(ellipse 58% 48% at 31% 42%,rgba(255,90,47,.18) 0%,rgba(255,90,47,.085) 34%,rgba(255,90,47,.018) 62%,transparent 78%),
	radial-gradient(ellipse 48% 42% at 67% 35%,rgba(255,119,72,.13) 0%,rgba(255,90,47,.050) 38%,rgba(255,90,47,.010) 64%,transparent 80%),
	radial-gradient(ellipse 54% 46% at 56% 68%,rgba(255,90,47,.105) 0%,rgba(255,90,47,.032) 42%,transparent 77%);
 filter: blur(78px);
 opacity: .80;
 animation: cp-programme-page-smoke-left 32s ease-in-out infinite alternate;
}
body.cp-programme-page-dark::after {
 width: min(820px,66vw);
 height: min(700px,64vh);
 right: max(-390px,-28vw);
 top: 48vh;
 background:
	radial-gradient(ellipse 54% 46% at 34% 39%,rgba(255,112,62,.135) 0%,rgba(255,90,47,.058) 38%,rgba(255,90,47,.012) 63%,transparent 79%),
	radial-gradient(ellipse 47% 39% at 69% 47%,rgba(255,90,47,.105) 0%,rgba(255,90,47,.036) 41%,transparent 77%),
	radial-gradient(ellipse 51% 43% at 48% 71%,rgba(255,126,73,.085) 0%,rgba(255,90,47,.024) 45%,transparent 78%);
 filter: blur(92px);
 opacity: .72;
 animation: cp-programme-page-smoke-right 38s ease-in-out infinite alternate;
}
body.cp-programme-page-dark #page-container,
body.cp-programme-page-dark #et-main-area,
body.cp-programme-page-dark #main-content,
body.cp-programme-page-dark #main-content.cp-programme-page-surface {
 background: transparent !important;
}
body.cp-programme-page-dark #page-container { position:relative; z-index:1; }
body.cp-programme-page-dark #main-content.cp-programme-page-surface::before,
body.cp-programme-page-dark #main-content.cp-programme-page-surface::after { content:none !important; }
body.cp-programme-page-dark .cp-programme-host-section,
body.cp-programme-page-dark .cp-programme-host-section > .et_pb_row,
body.cp-programme-page-dark .cp-programme-host-section > .et_pb_row > .et_pb_column { background-color:transparent !important; }
.cp-programme[data-cp-programme][data-theme="dark"] { background:transparent !important; }
@keyframes cp-programme-page-smoke-left { from{transform:translate3d(-2vw,-1.2vh,0) scale(1)} to{transform:translate3d(4vw,2.2vh,0) scale(1.13)} }
@keyframes cp-programme-page-smoke-right { from{transform:translate3d(2vw,1.5vh,0) scale(1.03)} to{transform:translate3d(-4vw,-2vh,0) scale(1.15)} }
body.cp-programme-page-light::before,
body.cp-programme-page-light::after,
body.cp-programme-page-reading::before,
body.cp-programme-page-reading::after { content:none !important; }
@media(max-width:767px){
 body.cp-programme-page-dark::before{width:112vw;height:58vh;left:-74vw;top:14vh;filter:blur(66px);opacity:.72}
 body.cp-programme-page-dark::after{width:108vw;height:56vh;right:-72vw;top:60vh;filter:blur(72px);opacity:.58}
}
@media(prefers-reduced-motion:reduce){body.cp-programme-page-dark::before,body.cp-programme-page-dark::after{animation:none!important}}


/* 1.4.39.9 — compact live indicator on Programme cards. */
.cp-session-card__live-status {
 display:inline-flex;
 align-items:center;
 gap:6px;
 margin-left:auto;
 padding:4px 8px;
 border-radius:999px;
 background:#e23b35;
 color:#fff;
 font-size:10px;
 font-weight:900;
 letter-spacing:.07em;
 line-height:1;
}
.cp-session-card__live-status i {
 width:7px;
 height:7px;
 border-radius:50%;
 background:#fff;
 box-shadow:0 0 0 4px rgba(255,255,255,.14);
}
.cp-session-card--is-live { box-shadow:0 0 0 2px rgba(226,59,53,.22), var(--cp-shadow, 0 8px 26px rgba(0,0,0,.08)); }

/* 1.4.39.10 — protected Replay action on Programme cards. */
.cp-session-card:has(.cp-session-card__replay) .cp-session-card__content { padding-bottom:52px; }
.cp-session-card__replay {
 position:absolute;
 z-index:5;
 right:14px;
 bottom:13px;
 display:inline-flex;
 align-items:center;
 gap:6px;
 min-height:34px;
 padding:7px 10px;
 border:1px solid color-mix(in srgb,var(--cp-pathway) 48%,var(--cp-line));
 border-radius:9px;
 background:color-mix(in srgb,var(--cp-pathway) 9%,var(--cp-surface));
 color:var(--cp-text)!important;
 font-size:12px;
 font-weight:850;
 line-height:1;
 text-decoration:none!important;
 pointer-events:auto;
 transition:background-color .15s ease,border-color .15s ease,transform .15s ease;
}
.cp-session-card__replay:hover,.cp-session-card__replay:focus-visible {
 background:color-mix(in srgb,var(--cp-pathway) 18%,var(--cp-surface));
 border-color:var(--cp-pathway);
 transform:translateY(-1px);
}
.cp-session-card__replay:focus-visible { outline:3px solid var(--cp-pathway); outline-offset:2px; }
@media(max-width:767px){
 .cp-session-card__replay { right:11px; bottom:11px; min-height:32px; padding:6px 9px; }
 .cp-session-card:has(.cp-session-card__replay) .cp-session-card__content { padding-bottom:48px; }
}
@media(prefers-reduced-motion:reduce){.cp-session-card__replay{transition:none!important;transform:none!important}}

/* 1.4.39.10 — mobile/tablet replay/live action finishing pass. */
@media (min-width:768px) and (max-width:1024px) {
  .cp-session-card__replay { right:12px; bottom:12px; }
}
@media (max-width:767px) {
  .cp-session-card__live-status { font-size:9px; padding:4px 7px; }
  .cp-session-card__replay { max-width:calc(100% - 22px); justify-content:center; }
}
