/* CRANKiT Events public styles
 *
 * SCOPING RULE (1.1.45)
 * ---------------------
 * This stylesheet is enqueued only on CRANKiT-owned front-end views, and
 * every rule that could touch content the plugin does not own is additionally
 * scoped beneath the body class ".crankit-events" that CE_Template_Loader
 * adds to exactly those views. Rules that must apply site-wide live in the
 * separate, deliberately narrow site-chrome.css.
 *
 * Do not add an unscoped element selector (body, h1, a, button, input) to
 * this file. Scope it to .crankit-events or to a .ce-* wrapper instead.
 */

/* Screen-reader-only text, used for the "opens in a new tab" announcement
 * and for headings that are structural rather than decorative. */
.screen-reader-text,
.ce-sr-only {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

.screen-reader-text:focus,
.ce-sr-only:focus {
	position: static !important;
	width: auto;
	height: auto;
	margin: 0;
	overflow: visible;
	clip: auto;
	clip-path: none;
	white-space: normal;
}

/* Visible indicator on links that open a new tab. The accessible name is
 * supplied in the markup by CE_Helpers::new_tab_notice(). */
.ce-external-link::after {
	content: " \2197";
	font-size: .85em;
	line-height: 1;
	speak: never;
}

/* CRANKiT heading/wordmark system — 1.1.23, rescoped in 1.1.45.
 * The wordmark colours themselves live in site-chrome.css because the
 * branded footer appears on every page. */
.crankit-events h1,
.crankit-events h2,
.crankit-events h3,
.crankit-events h4,
.crankit-events h5,
.crankit-events h6 {
	font-family: 'Cambria Math', Cambria, Georgia, serif !important;
}
.ce-brand-context {
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
}
.ce-brand-phrase {
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
}

/* Shared reading typography and contrast — 1.1.27, rescoped in 1.1.45 */
.crankit-events {
	/* Approved visual clearance between the shared site header and the first
	 * CRANKiT panel. Page-specific rules below consume this single value. */
	--ce-page-top-clearance: 40px;
}

.crankit-events .entry-content p,
.crankit-events .entry-content li,
.crankit-events .tb_text_wrap p,
.crankit-events .tb_text_wrap li,
.ce-artist,
.ce-concert,
.ce-festival,
.ce-venue,
.ce-artists-directory,
.ce-concerts-directory,
.ce-festivals-directory,
.ce-venues-directory {
	font-family: 'Lora', Georgia, serif;
}

.ce-artists-directory__intro p,
.ce-festivals-directory__intro p,
.ce-festival-card__location,
.ce-festival-card__bio,
.ce-venue-card__location,
.ce-venue-card__shows,
.ce-concert-card__artists,
.ce-concert-card__venue,
.ce-concert-card__meta,
.ce-directory-header__description,
.ce-global-footer__intro {
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
}

.crankit-events .tb_text_wrap section[style*="background:rgba(0,0,0"] p:not([class*="label"]):not([style*="#ff4444"]),
.crankit-events .tb_text_wrap section[style*="background: rgba(0, 0, 0"] p:not([class*="label"]):not([style*="#ff4444"]) {
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
}

/* High-contrast reading copy on the hand-built company pages — 1.1.30. */
.ce-page-about-us .entry-content p:not([class*="label"]):not([style*="#ff4444"]),
.ce-page-about-us .entry-content blockquote,
.ce-page-about-us .entry-content .ca-card p,
.ce-page-work-with-us .entry-content p:not([class*="label"]):not([style*="#ff4444"]),
.ce-page-work-with-us .entry-content .ckww-card p,
.ce-page-work-with-us .entry-content .ckws-item span,
.ce-page-contact-us .entry-content p:not([class*="label"]):not([style*="#ff4444"]),
.ce-page-social .entry-content p:not([class*="label"]):not([style*="#ff4444"]) {
	color: #ffffff !important;
	-webkit-text-fill-color: #ffffff !important;
}

/* Authoritative homepage presentation — 1.1.47. The saved homepage is
 * deliberately portable HTML, so the plugin supplies the established
 * centered black-panel/red-trim CRANKiT treatment instead of relying on a
 * stale Themify Builder snapshot. */
.ce-authoritative-home {
	width: 100%;
	max-width: 1060px;
	margin: 0 auto;
	padding: var(--ce-page-top-clearance) 16px 0;
	box-sizing: border-box;
}

/* Guides begins directly beneath the theme header, unlike the four dynamic
 * directories. Give its authoritative first panel the full approved gap. */
.ce-page-guides .ce-authoritative-directory > section:first-child {
	margin-top: var(--ce-page-top-clearance) !important;
}

.ce-authoritative-home > section,
.ce-authoritative-home > article,
.ce-page-guides .ce-authoritative-directory > section,
.ce-page-guides .ce-authoritative-directory > article {
	width: 100%;
	max-width: 960px;
	margin: 0 auto 2rem;
	padding: clamp(1.5rem, 4vw, 2.75rem);
	box-sizing: border-box;
	color: #fff;
	background: rgba(0, 0, 0, .82);
	border: 2px solid #ff4444;
	border-radius: 8px;
	box-shadow: 0 8px 30px rgba(0, 0, 0, .4);
}

.ce-authoritative-home > section > img,
.ce-authoritative-home > article > img,
.ce-page-guides .ce-authoritative-directory > section > img,
.ce-page-guides .ce-authoritative-directory > article > img {
	display: block;
	width: 100%;
	height: auto;
	margin: 0 auto 1.5rem;
	border-radius: 6px;
}

.ce-authoritative-home > section p,
.ce-authoritative-home > article p,
.ce-authoritative-home > section li,
.ce-authoritative-home > article li,
.ce-page-guides .ce-authoritative-directory > section p,
.ce-page-guides .ce-authoritative-directory > article p,
.ce-page-guides .ce-authoritative-directory > section li,
.ce-page-guides .ce-authoritative-directory > article li {
	color: #fff;
	line-height: 1.75;
}

.ce-authoritative-home > section > p:first-child,
.ce-authoritative-home > article > p:first-child,
.ce-page-guides .ce-authoritative-directory > section > p:first-child,
.ce-page-guides .ce-authoritative-directory > article > p:first-child {
	color: #ff6b6b;
	font-weight: 900;
	letter-spacing: .12em;
	text-transform: uppercase;
}

.ce-authoritative-home > section a,
.ce-authoritative-home > article a,
.ce-page-guides .ce-authoritative-directory > section a,
.ce-page-guides .ce-authoritative-directory > article a {
	display: inline-block;
	margin: .35rem .35rem .35rem 0;
	padding: 10px 16px;
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
	background: #000 !important;
	border: 2px solid #ff4444 !important;
	border-radius: 5px;
	font-weight: 800;
	text-decoration: none;
}

.ce-authoritative-home > section a:hover,
.ce-authoritative-home > section a:focus-visible,
.ce-authoritative-home > article a:hover,
.ce-authoritative-home > article a:focus-visible,
.ce-page-guides .ce-authoritative-directory > section a:hover,
.ce-page-guides .ce-authoritative-directory > section a:focus-visible,
.ce-page-guides .ce-authoritative-directory > article a:hover,
.ce-page-guides .ce-authoritative-directory > article a:focus-visible {
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
	background: #ff4444 !important;
	border-color: #ff4444 !important;
}

/* Runtime hooks added to the portable homepage festival calendar. Desktop
 * keeps the approved inline rhythm; phones receive a deliberate three-line
 * date, festival and location layout. */
.ce-home-festival-calendar__location::before {
	content: ' \00b7  ';
}

@media (max-width: 559px) {
	.ce-home-festival-calendar__row {
		margin: 0 0 1.35rem !important;
		text-align: center;
	}

	.ce-home-festival-calendar__date,
	.ce-home-festival-calendar__location {
		display: block;
	}

	.ce-home-festival-calendar__separator {
		display: none;
	}

	.ce-authoritative-home .ce-home-festival-calendar__festival {
		display: table !important;
		width: auto;
		max-width: 100%;
		margin: .55rem auto !important;
		box-sizing: border-box;
	}

	.ce-home-festival-calendar__location::before {
		content: '';
	}
}

/* Portable CTA class applied at render time to arrow-labelled calls to
 * action in CRANKiT-authored page content. Saved page-builder inline colours
 * are removed before this rule runs, keeping every CTA aligned with the
 * approved black/white/red button system without touching ordinary links. */
.crankit-events .entry-content a.ce-page-cta {
	display: inline-block;
	padding: 10px 16px;
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
	background: #000 !important;
	border: 2px solid #ff4444 !important;
	border-radius: 5px;
	font-weight: 800;
	text-decoration: none !important;
	cursor: pointer;
	overflow-wrap: anywhere;
	transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease;
}

@media (hover: hover) and (pointer: fine) {
	.crankit-events .entry-content a.ce-page-cta:hover {
		color: #fff !important;
		-webkit-text-fill-color: #fff !important;
		background: #ff4444 !important;
		border-color: #ff4444 !important;
	}
}

.crankit-events .entry-content a.ce-page-cta:focus-visible {
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
	background: #ff4444 !important;
	border-color: #ff4444 !important;
	outline: 3px solid #fff;
	outline-offset: 3px;
}

.crankit-events .entry-content a.ce-page-cta:active {
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
	background: #cc0000 !important;
	border-color: #cc0000 !important;
}

/* Shared directory header — 1.1.20 */
.ce-directory-header {
	max-width: 1060px;
	/* The directory template already receives 20px from the theme content
	 * frame. This remaining 20px produces the same 40px visual clearance as
	 * News, Verified, Guides, the homepage and the company pages without
	 * adding space between the directory hero and its listings. */
	margin: calc(var(--ce-page-top-clearance) - 20px) auto 1.5rem;
	padding: 2.75rem 1.5rem;
	text-align: center;
	font-family: 'Lora', Georgia, serif;
	color: #fff;
	background: rgba(0,0,0,.82);
	border: 2px solid #ff4444;
	border-radius: 8px;
	box-shadow: 0 8px 30px rgba(0,0,0,.4);
	box-sizing: border-box;
}
.ce-directory-header__brand {
	margin: 0 0 .6rem !important;
	color: #ff4444 !important;
	font-size: .82rem !important;
	font-weight: 900;
	letter-spacing: .18em;
	text-transform: uppercase;
	font-family: 'Cambria Math', Cambria, Georgia, serif;
}
.ce-directory-header h1 {
	margin: 0 0 .8rem !important;
	color: #fff !important;
	font-size: clamp(2.8rem,7vw,5rem) !important;
	line-height: 1 !important;
	font-weight: 900 !important;
	letter-spacing: .04em;
	text-transform: uppercase;
	text-shadow: 0 3px 10px rgba(0,0,0,.9);
	font-family: 'Cambria Math', Cambria, Georgia, serif !important;
}
.ce-directory-header__description {
	max-width: 760px;
	margin: 0 auto !important;
	color: #eee !important;
	font-size: 1.05rem !important;
	line-height: 1.75;
	font-family: 'Lora', Georgia, serif;
}

.ce-artists-directory,
.ce-concerts-directory,
.ce-festivals-directory,
.ce-venues-directory {
	font-family: 'Lora', Georgia, serif;
}

/* Shared public-directory search — 1.1.63. This panel sits immediately below
 * each directory header and filters only cards already rendered publicly. */
.ce-directory-search {
	box-sizing: border-box;
	width: calc(100% - 32px);
	max-width: 430px;
	margin: 0 auto 1.5rem;
	padding: .9rem 1rem;
	text-align: center;
	color: #fff;
	background: rgba(0, 0, 0, .84);
	border: 2px solid #ff4444;
	border-radius: 8px;
	box-shadow: 0 8px 30px rgba(0, 0, 0, .4);
}

.ce-directory-search__heading {
	margin: 0 0 .5rem;
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
	font-size: clamp(1.2rem, 2.5vw, 1.5rem);
	line-height: 1.2;
}

.ce-directory-search__input {
	display: block;
	box-sizing: border-box;
	width: 100% !important;
	max-width: 100% !important;
	min-height: 46px;
	margin: 0 auto;
	padding: 10px 12px;
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
	background: #090909 !important;
	border: 2px solid rgba(255, 68, 68, .85) !important;
	border-radius: 5px !important;
	box-shadow: none !important;
	font-family: 'Lora', Georgia, serif;
	font-size: .9rem;
	line-height: 1.35;
}

.ce-directory-search__input::placeholder {
	color: #cfcfcf;
	-webkit-text-fill-color: #cfcfcf;
	opacity: 1;
}

.ce-directory-search__input:focus {
	border-color: #ff4444 !important;
	outline: 3px solid rgba(255, 255, 255, .9) !important;
	outline-offset: 3px;
}

.ce-directory-search__status {
	min-height: 0;
	margin: .45rem 0 0 !important;
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
	font-size: .9rem;
	font-weight: 800;
}

.ce-directory-search__empty {
	margin: .55rem auto 0;
	padding: .8rem;
	background: rgba(255, 68, 68, .08);
	border: 1px solid rgba(255, 68, 68, .7);
	border-radius: 6px;
}

.ce-directory-search__empty p {
	margin: 0 0 .8rem !important;
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
}

.ce-directory-search__suggest {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: 10px 16px;
	border-radius: 5px;
}

.ce-directory-search__empty[hidden],
.ce-directory-search__status[hidden],
.ce-artist-card[hidden],
.ce-artists-directory__section[hidden],
.ce-festival-card[hidden],
.ce-festivals-directory__section[hidden],
.ce-concert-card[hidden],
.ce-venue-card[hidden] {
	display: none !important;
}

@media (max-width: 559px) {
	.ce-directory-search {
		width: 100%;
		padding: .85rem .75rem;
	}

	.ce-directory-search__suggest {
		width: 100%;
	}
}

/* The branded global footer now lives in site-chrome.css, because
 * CE_Page_Chrome appends it to every page and it must therefore be styled
 * on views where public.css is not loaded. */

/* The hand-built Festivals page currently contains this block twice. */
.crankit-events .crankit-festival-info ~ .crankit-festival-info { display: none !important; }

@media (max-width: 600px) {
	.ce-directory-header { padding: 2.1rem 1rem; }
}

.ce-single-wrap {
	position: relative;
	isolation: isolate;
}

/*
 * Keep the theme/site concert artwork visible while creating enough contrast
 * for event information to remain readable over bright stage photography.
 * The sticky site header is intentionally untouched.
 */
.ce-single-wrap::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	background: linear-gradient(
		90deg,
		rgba(0, 0, 0, 0.52) 0%,
		rgba(0, 0, 0, 0.34) 48%,
		rgba(0, 0, 0, 0.16) 100%
	);
}

/* Keep all plugin-owned page content above the contrast gradient. Without this
 * stacking level, the gradient paints over otherwise-white text and makes it
 * look gray, even though its computed color remains #ffffff. */
.ce-single-wrap > .crankit-verified-page,
.ce-single-wrap > .ce-global-footer {
	position: relative;
	z-index: 1;
}

.ce-concert,
.ce-artist,
.ce-venue,
.ce-festival {
	position: relative;
	z-index: 1;
	max-width: 760px;
	margin: 0 auto;
	padding: 24px 18px 32px;
	box-sizing: border-box;
	color: #fff;
}

.ce-concert a,
.ce-festival a,
.ce-artist a,
.ce-venue a {
	color: #3da8ff;
}

.ce-concert-title {
	margin: 0;
	font-size: clamp(2.25rem, 5vw, 3.4rem);
	line-height: 1.08;
	letter-spacing: -0.02em;
	color: #fff;
	text-wrap: balance;
}

.ce-concert-header,
.ce-festival-header {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
}

.ce-verified-wrap {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-weight: 600;
}

/* The 1.0.1 max-height of 40px made the portrait-shaped badge tiny. */
.ce-verified-badge {
	display: block;
	width: clamp(132px, 18vw, 180px);
	max-width: 100%;
	height: auto;
	max-height: none;
}

.ce-verified-block {
	margin: 22px 0 18px;
}

.ce-verified-meta {
	margin: 10px 0 0;
	font-size: 0.92em;
	line-height: 1.4;
	color: #d9d9d9;
	text-shadow: 0 1px 2px rgba(0, 0, 0, 0.75);
}

.ce-tour-name {
	margin: 0 0 14px;
	color: #fff;
	line-height: 1.45;
	text-shadow: 0 1px 2px rgba(0, 0, 0, 0.75);
}

.ce-ticket-info {
	margin: 18px 0 14px;
}

.ce-ticket-status {
	margin: 0 0 9px;
	color: #fff;
}

.ce-status-badge {
	display: inline-block;
	padding: 4px 11px;
	border-radius: 4px;
	font-weight: 700;
	background: #eee;
	color: #222;
}

.ce-status-on_sale {
	background: #1e7e34;
	color: #fff;
}

.ce-status-presale {
	background: #b8860b;
	color: #fff;
}

.ce-status-sold_out,
.ce-status-cancelled {
	background: #c8102e;
	color: #fff;
}

.ce-status-postponed,
.ce-status-rescheduled {
	background: #555;
	color: #fff;
}

.ce-ticket-provider {
	margin: 0;
	color: #d9d9d9;
	font-size: 0.92em;
	line-height: 1.4;
	text-shadow: 0 1px 2px rgba(0, 0, 0, 0.75);
}

.ce-concert-meta,
.ce-festival-meta,
.ce-artist-meta {
	list-style: none;
	padding: 0;
	margin: 14px 0;
}

.ce-concert-meta li,
.ce-festival-meta li,
.ce-artist-meta li {
	margin: 0;
	padding: 7px 0;
	line-height: 1.45;
	color: #fff;
	text-shadow: 0 1px 2px rgba(0, 0, 0, 0.75);
}

.ce-concert-meta strong,
.ce-artists > strong,
.ce-ticket-status > strong {
	color: #fff;
}

.ce-artists {
	margin: 14px 0 0;
	color: #fff;
	text-shadow: 0 1px 2px rgba(0, 0, 0, 0.75);
}

.ce-artists ul {
	margin: 7px 0 0 1.25rem;
	padding: 0;
}

.ce-artists li {
	margin: 0;
	padding: 4px 0;
	line-height: 1.4;
}

.ce-concert-links {
	margin: 16px 0 0;
}

.ce-btn {
	display: inline-block;
	box-sizing: border-box;
	padding: 11px 18px;
	margin: 4px 8px 4px 0;
	border-radius: 4px;
	background: #222;
	color: #fff !important;
	text-decoration: none;
	text-align: center;
	line-height: 1.25;
}

.ce-btn:hover,
.ce-btn:focus {
	color: #fff !important;
	text-decoration: none;
}

.ce-btn-primary {
	background: #c8102e;
}

.ce-btn-tickets {
	font-weight: 700;
	letter-spacing: 0.02em;
}

.ce-btn-social {
	background: #555;
}

.ce-artist-image img {
	max-width: 100%;
	height: auto;
	border-radius: 6px;
}

.ce-featured {
	border-left: 4px solid #c8102e;
	padding-left: 16px;
}

@media (max-width: 782px) {
	.ce-single-wrap::before {
		background: linear-gradient(
			180deg,
			rgba(0, 0, 0, 0.30) 0%,
			rgba(0, 0, 0, 0.40) 42%,
			rgba(0, 0, 0, 0.62) 100%
		);
	}

	.ce-concert,
	.ce-artist,
	.ce-venue,
	.ce-festival {
		width: 100%;
		max-width: none;
		padding: 22px 16px 30px;
	}

	.ce-concert-title {
		font-size: clamp(2.15rem, 8.3vw, 2.75rem);
		line-height: 1.08;
	}

	.ce-verified-block {
		margin: 14px 0 12px;
	}

	.ce-verified-badge {
		width: clamp(106px, 27vw, 128px);
	}

	.ce-verified-meta {
		margin-top: 6px;
	}

	.ce-concert-meta {
		margin: 12px 0;
	}

	.ce-concert-meta li {
		padding: 6px 0;
	}

	.ce-artists {
		margin-top: 12px;
	}

	.ce-ticket-info {
		margin: 16px 0 12px;
	}

	.ce-concert-links {
		margin-top: 14px;
	}

	.ce-concert-links .ce-btn {
		display: block;
		width: 100%;
		max-width: 520px;
		min-height: 50px;
		margin: 9px 0 0;
		padding: 14px 16px;
	}
}

@media (max-width: 420px) {
	.ce-concert,
	.ce-artist,
	.ce-venue,
	.ce-festival {
		padding-left: 14px;
		padding-right: 14px;
	}

	.ce-concert-title {
		font-size: clamp(2rem, 8.8vw, 2.35rem);
	}
}


/* 1.1.0: native CRANKiT desktop concert experience.
 * This rail is owned by CRANKiT Events rather than a generic theme widget area.
 * Mobile remains the locked 1.0.3 single-column presentation.
 */
.ce-concert-layout {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: minmax(0, 760px) minmax(280px, 340px);
	gap: clamp(28px, 4vw, 56px);
	width: min(1180px, calc(100% - 48px));
	margin: 0 auto;
	padding: 24px 0 40px;
	box-sizing: border-box;
	align-items: start;
}

.ce-concert-layout > .ce-concert {
	z-index: auto;
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 0;
}

.ce-concert-rail {
	display: grid;
	gap: 16px;
	padding-top: 4px;
}

.ce-rail-card {
	padding: 18px 20px;
	border: 1px solid rgba(255, 255, 255, 0.16);
	border-radius: 10px;
	background: rgba(10, 10, 10, 0.58);
	box-shadow: 0 12px 30px rgba(0, 0, 0, 0.18);
	backdrop-filter: blur(7px);
	-webkit-backdrop-filter: blur(7px);
	color: #fff;
}

.ce-rail-card h2 {
	margin: 0 0 8px;
	font-size: 1rem;
	line-height: 1.2;
	letter-spacing: 0.045em;
	color: #fff;
}

.ce-rail-card p {
	margin: 0;
	line-height: 1.5;
	color: #d9d9d9;
}

.ce-rail-card p + p {
	margin-top: 8px;
}

.ce-rail-note {
	font-size: 0.86rem;
}

.ce-rail-link {
	display: inline-block;
	margin-top: 12px;
	font-weight: 700;
	font-size: 0.88rem;
	letter-spacing: 0.03em;
	text-decoration: none;
}

.ce-rail-shows {
	list-style: none;
	margin: 0;
	padding: 0;
}

.ce-rail-shows li {
	padding: 10px 0;
	border-top: 1px solid rgba(255, 255, 255, 0.12);
}

.ce-rail-shows li:first-child {
	padding-top: 0;
	border-top: 0;
}

.ce-rail-shows a,
.ce-rail-shows span {
	display: block;
}

.ce-rail-shows a {
	font-weight: 700;
	line-height: 1.35;
	text-decoration: none;
}

.ce-rail-shows span {
	margin-top: 3px;
	font-size: 0.84rem;
	color: #d9d9d9;
}

.ce-rail-verified {
	border-top: 3px solid #c8102e;
}

@media (max-width: 1023px) {
	.ce-concert-layout {
		display: block;
		width: 100%;
		margin: 0;
		padding: 0;
	}

	.ce-concert-layout > .ce-concert {
		padding: 24px 18px 32px;
	}

	/* 1.1.45: the rail used to be display:none below 1024px, so phone and
	 * tablet visitors lost More Shows, the giveaway link and the CRANKiT
	 * Verified explainer entirely. It now reflows below the main content
	 * instead of being hidden, in the same source order. */
	.ce-concert-rail {
		display: grid;
		grid-template-columns: 1fr;
		gap: 16px;
		width: 100%;
		margin: 0;
		padding: 0 18px 32px;
		box-sizing: border-box;
	}
}

@media (min-width: 700px) and (max-width: 1023px) {
	.ce-concert-rail {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 600px) {
	.ce-concert-rail {
		padding-left: 16px;
		padding-right: 16px;
	}
}


/* ===============================================================
 * ARTISTS DIRECTORY SHORTCODE — 1.1.5
 * Scoped to .ce-artists-directory so existing ARTISTS page styling
 * and locked Concert layouts remain untouched.
 * ============================================================= */
.ce-artists-directory,
.ce-artists-directory *,
.ce-artists-directory *::before,
.ce-artists-directory *::after { box-sizing: border-box; }

.ce-artists-directory {
	max-width: 1060px;
	margin: 0 auto;
	padding: 0 1rem 3rem;
	font-family: 'Lora', Georgia, serif;
	color: #fff;
}

.ce-artists-directory__header {
	text-align: center;
	padding: 1.5rem 1.25rem 1.35rem;
	margin: 0 0 1.5rem;
	position: relative;
	background: rgba(0,0,0,.68);
	border: 1px solid rgba(255,255,255,.08);
	border-radius: 8px;
	box-shadow: 0 8px 28px rgba(0,0,0,.28);
	backdrop-filter: blur(5px);
	-webkit-backdrop-filter: blur(5px);
}
.ce-artists-directory__header::after {
	content: '';
	display: block;
	height: 2px;
	background: linear-gradient(90deg, transparent, #cc0000, #ff2200, #cc0000, transparent);
	margin-top: 1.5rem;
}
.ce-artists-directory__header h1 {
	font-family: 'Cambria Math', Cambria, Georgia, serif;
	font-size: clamp(1.6rem, 5vw, 2.6rem);
	font-weight: 700;
	color: #fff;
	letter-spacing: 3px;
	text-transform: uppercase;
	margin: 0 0 .6rem;
}
.ce-artists-directory__header h1 span { color: #ff4444; }
.ce-artists-directory__header p {
	font-style: italic;
	font-size: clamp(.9rem, 2vw, 1.05rem);
	color: rgba(255,255,255,.65);
	max-width: 650px;
	margin: 0 auto;
	line-height: 1.7;
}

.ce-artists-directory__intro {
	background: rgba(0,0,0,.72);
	border-left: 4px solid #cc0000;
	border-radius: 0 8px 8px 0;
	padding: 1.2rem 1.4rem;
	margin-bottom: 1.8rem;
	backdrop-filter: blur(4px);
	-webkit-backdrop-filter: blur(4px);
}
.ce-artists-directory__intro p {
	font-family: 'Lora', Georgia, serif;
	font-size: .95rem;
	color: #ddd;
	line-height: 1.8;
	margin: 0;
}

.ce-artists-directory__section-head {
	display: flex;
	align-items: center;
	gap: .8rem;
	margin: 2.5rem 0 1.4rem;
	padding: .65rem .9rem;
	background: rgba(0,0,0,.68);
	border-radius: 6px;
	backdrop-filter: blur(4px);
	-webkit-backdrop-filter: blur(4px);
}
.ce-artists-directory__section-head::before,
.ce-artists-directory__section-head::after {
	content: '';
	flex: 1;
	height: 1px;
	background: rgba(255,68,68,.4);
	min-width: 0;
}
/* 1.1.45: this label is now a real <h2> so the directory has a heading
 * outline, its colour meets 4.5:1 against the black panel, and long
 * section names wrap instead of overflowing at 200% zoom. */
.ce-artists-directory__section-head span,
.ce-artists-directory__section-title {
	margin: 0;
	font-family: 'Cambria Math', Cambria, Georgia, serif;
	font-size: .78rem;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: 3px;
	text-transform: uppercase;
	color: #ff4444 !important;
	-webkit-text-fill-color: #ff4444 !important;
	white-space: normal;
	overflow-wrap: anywhere;
	min-width: 0;
	text-align: center;
}

.ce-artists-directory__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0,1fr));
	gap: 1.2rem;
}
@media (min-width: 560px) {
	.ce-artists-directory__grid { grid-template-columns: repeat(3, minmax(0,1fr)); }
}
@media (min-width: 820px) {
	.ce-artists-directory__grid { grid-template-columns: repeat(4, minmax(0,1fr)); }
}

.ce-artist-card {
	background: rgba(0,0,0,.65);
	border: 1px solid rgba(255,255,255,.07);
	border-radius: 8px;
	overflow: hidden;
	transition: transform .25s, border-color .25s, box-shadow .25s;
	display: flex;
	flex-direction: column;
	text-decoration: none !important;
	color: inherit !important;
}
.ce-artist-card:hover,
.ce-artist-card:focus-visible {
	transform: translateY(-4px);
	border-color: rgba(204,0,0,.5);
	box-shadow: 0 10px 35px rgba(0,0,0,.5), 0 0 0 1px rgba(204,0,0,.2);
	color: inherit !important;
}
.ce-artist-card:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }

.ce-artist-card__photo {
	position: relative;
	width: 100%;
	aspect-ratio: 400 / 266;
	overflow: hidden;
	background: rgba(20,0,0,.8);
	flex-shrink: 0;
}
.ce-artist-card__photo img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center top;
	display: block;
	transition: transform .4s;
}
.ce-artist-card:hover .ce-artist-card__photo img { transform: scale(1.04); }
.ce-artist-card__placeholder {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	background: linear-gradient(160deg,rgba(30,0,0,.9),rgba(0,0,0,.95));
	color: rgba(255,255,255,.3);
	font-family: 'Cambria Math', Cambria, Georgia, serif;
	font-size: .6rem;
	letter-spacing: 2px;
	text-transform: uppercase;
	gap: .4rem;
}
.ce-artist-card__placeholder span { font-size: 1.8rem; color: rgba(204,0,0,.4); }

.ce-artist-card__body {
	padding: .9rem 1rem 1rem;
	flex: 1;
	display: flex;
	flex-direction: column;
	gap: .4rem;
}
.ce-artist-card__name {
	font-family: 'Cambria Math', Cambria, Georgia, serif;
	font-size: clamp(.88rem,2vw,1rem);
	font-weight: 700;
	color: #fff;
	letter-spacing: .5px;
	line-height: 1.2;
	margin: 0;
}
.ce-artist-card__genre {
	font-style: italic;
	font-size: .75rem;
	color: rgba(255,255,255,.45);
	line-height: 1.3;
	margin: 0;
}
.ce-artist-card__bio {
	font-size: .8rem;
	color: #ffffff !important;
	-webkit-text-fill-color: #ffffff !important;
	line-height: 1.6;
	margin: .25rem 0 0;
	flex: 1;
}
.ce-artist-card__link {
	display: inline-flex;
	align-items: center;
	gap: .3rem;
	margin-top: .7rem;
	font-family: 'Cambria Math', Cambria, Georgia, serif;
	font-size: .7rem;
	font-weight: 600;
	letter-spacing: 1.5px;
	text-transform: uppercase;
	color: #ff4444;
	border-bottom: 1px solid rgba(255,68,68,.45);
	padding-bottom: 1px;
	align-self: flex-start;
}
.ce-artists-directory__empty {
	background: rgba(0,0,0,.6);
	border: 1px solid rgba(255,255,255,.08);
	border-radius: 8px;
	padding: 1rem;
	text-align: center;
	color: rgba(255,255,255,.72);
}

@media (max-width: 559px) {
	.ce-artists-directory { padding-left: .8rem; padding-right: .8rem; }
	.ce-artists-directory__section-head { gap: .55rem; }
	.ce-artists-directory__section-head span,
	.ce-artists-directory__section-title { font-size: .72rem; letter-spacing: 2px; }
	.ce-artists-directory__grid {
		grid-template-columns: 1fr;
		gap: 1rem;
	}
	.ce-artist-card__body { padding: .9rem 1rem 1rem; }
	/* Phone cards stay visually focused on the existing photo, name, genre and
	 * profile link. The complete biography remains on the Artist profile and
	 * remains visible in directory cards above this phone breakpoint. */
	.ce-artist-card__bio { display: none; }

	/* Match the established mobile Concert-card typography while retaining the
	 * Artist card's current photo, spacing and element order. */
	.ce-artist-card__name {
		font-size: 1.35rem;
		font-weight: 900;
		line-height: 1.2;
		letter-spacing: normal;
	}
	.ce-artist-card__genre {
		margin: .3rem 0;
		font-style: normal;
		font-size: 1rem;
		line-height: 1.5;
		color: #ddd;
	}
	.ce-artist-card__link {
		font-family: 'Lora', Georgia, serif;
		font-size: .86rem;
		font-weight: 800;
		line-height: 1.35;
		letter-spacing: normal;
	}
}


/* Festival profile media/content (1.1.5) */
.ce-festival-featured {
	margin: 18px 0 20px;
}

.ce-festival-featured img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 8px;
}

.ce-festival-description {
	margin: 18px 0;
	color: #fff;
	line-height: 1.7;
	text-shadow: 0 1px 2px rgba(0, 0, 0, 0.75);
}

.ce-festival-description > :first-child { margin-top: 0; }
.ce-festival-description > :last-child { margin-bottom: 0; }

.ce-festival-series-parent {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin: 16px 0;
	padding: 12px 14px;
	background: rgba(0,0,0,.72);
	border-left: 4px solid #cc0000;
	border-radius: 0 6px 6px 0;
}
.ce-festival-series-parent span { color: #ddd; }
.ce-festival-series-parent a { font-weight: 800; color: #fff !important; }

.ce-festival-series-stops {
	margin: 24px 0;
	padding: 20px;
	background: rgba(0,0,0,.72);
	border: 1px solid rgba(204,0,0,.55);
	border-radius: 8px;
}
.ce-festival-series-stops h2 { margin: 0 0 6px; color: #fff; }
.ce-festival-series-stops__intro { margin: 0 0 16px; color: #ddd; }
.ce-festival-series-stops__grid { display: grid; grid-template-columns: 1fr; gap: 12px; }
.ce-festival-series-stop {
	padding: 15px;
	background: rgba(20,20,20,.9);
	border: 1px solid rgba(255,255,255,.12);
	border-radius: 6px;
}
.ce-festival-series-stop h3 { margin: 0 0 7px; font-size: 1.05rem; }
.ce-festival-series-stop h3 a { color: #fff !important; }
.ce-festival-series-stop__date,
.ce-festival-series-stop__location { margin: 3px 0; color: #ddd; }
.ce-festival-series-stop__link { display: inline-block; margin-top: 10px; color: #ff4444 !important; font-weight: 800; }
@media (min-width: 640px) {
	.ce-festival-series-stops__grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
}

/* ===============================================================
 * FESTIVALS DIRECTORY SHORTCODE — 1.1.5
 * Mirrors the Artists directory visual language and keeps every
 * public card linked to an internal CRANKiT festival profile.
 * ============================================================= */
.ce-festivals-directory,
.ce-festivals-directory *,
.ce-festivals-directory *::before,
.ce-festivals-directory *::after { box-sizing: border-box; }

.ce-festivals-directory {
	max-width: 1060px;
	margin: 0 auto;
	padding: 0 1rem 3rem;
	font-family: 'Lora', Georgia, serif;
	color: #fff;
}

.ce-festivals-directory__header {
	text-align: center;
	padding: 1.5rem 1.25rem 1.35rem;
	margin: 0 0 1.5rem;
	position: relative;
	background: rgba(0,0,0,.68);
	border: 1px solid rgba(255,255,255,.08);
	border-radius: 8px;
	box-shadow: 0 8px 28px rgba(0,0,0,.28);
	backdrop-filter: blur(5px);
	-webkit-backdrop-filter: blur(5px);
}
.ce-festivals-directory__header::after {
	content: '';
	display: block;
	height: 2px;
	background: linear-gradient(90deg, transparent, #cc0000, #ff2200, #cc0000, transparent);
	margin-top: 1.5rem;
}
.ce-festivals-directory__header h1 {
	font-family: 'Cambria Math', Cambria, Georgia, serif;
	font-size: clamp(1.6rem, 5vw, 2.6rem);
	font-weight: 700;
	color: #fff;
	letter-spacing: 3px;
	text-transform: uppercase;
	margin: 0 0 .6rem;
}
.ce-festivals-directory__header h1 span { color: #ff4444; }
.ce-festivals-directory__header p {
	font-style: italic;
	font-size: clamp(.9rem, 2vw, 1.05rem);
	color: rgba(255,255,255,.65);
	max-width: 700px;
	margin: 0 auto;
	line-height: 1.7;
}

.ce-festivals-directory__intro {
	background: rgba(0,0,0,.72);
	border-left: 4px solid #cc0000;
	border-radius: 0 8px 8px 0;
	padding: 1.2rem 1.4rem;
	margin-bottom: 1.8rem;
	backdrop-filter: blur(4px);
	-webkit-backdrop-filter: blur(4px);
}
.ce-festivals-directory__intro p {
	font-size: .95rem;
	color: #ddd;
	line-height: 1.8;
	margin: 0;
}

.ce-festivals-directory__section-head {
	display: flex;
	align-items: center;
	gap: .8rem;
	margin: 2.5rem 0 1.4rem;
	padding: .65rem .9rem;
	background: rgba(0,0,0,.68);
	border-radius: 6px;
}
.ce-festivals-directory__section-head::before,
.ce-festivals-directory__section-head::after {
	content: '';
	flex: 1;
	height: 1px;
	background: rgba(255,68,68,.4);
	min-width: 0;
}
/* 1.1.45: real <h2>, 4.5:1 contrast, and wrapping long labels. */
.ce-festivals-directory__section-head span,
.ce-festivals-directory__section-title {
	margin: 0;
	font-family: 'Cambria Math', Cambria, Georgia, serif;
	font-size: .78rem;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: 3px;
	text-transform: uppercase;
	color: #ff4444 !important;
	-webkit-text-fill-color: #ff4444 !important;
	white-space: normal;
	overflow-wrap: anywhere;
	min-width: 0;
	text-align: center;
}

.ce-festivals-directory__grid {
	display: grid;
	grid-template-columns: repeat(1, minmax(0,1fr));
	gap: 1.2rem;
}
@media (min-width: 560px) {
	.ce-festivals-directory__grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (min-width: 900px) {
	.ce-festivals-directory__grid { grid-template-columns: repeat(3, minmax(0,1fr)); }
}

.ce-festival-card {
	background: rgba(0,0,0,.65);
	border: 1px solid rgba(255,255,255,.07);
	border-radius: 8px;
	overflow: hidden;
	transition: transform .25s, border-color .25s, box-shadow .25s;
	display: flex;
	flex-direction: column;
	text-decoration: none !important;
	color: inherit !important;
}
.ce-festival-card:hover,
.ce-festival-card:focus-visible {
	transform: translateY(-4px);
	border-color: rgba(204,0,0,.5);
	box-shadow: 0 10px 35px rgba(0,0,0,.5), 0 0 0 1px rgba(204,0,0,.2);
	color: inherit !important;
}
.ce-festival-card:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }

.ce-festival-card__photo {
	position: relative;
	width: 100%;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	background: rgba(20,0,0,.8);
	flex-shrink: 0;
}
.ce-festival-card__photo img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform .4s;
}
.ce-festival-card:hover .ce-festival-card__photo img { transform: scale(1.04); }
.ce-festival-card__placeholder {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	background: linear-gradient(160deg,rgba(30,0,0,.9),rgba(0,0,0,.95));
	color: rgba(255,255,255,.3);
	font-family: 'Cambria Math', Cambria, Georgia, serif;
	font-size: .6rem;
	letter-spacing: 2px;
	text-transform: uppercase;
	gap: .4rem;
}
.ce-festival-card__placeholder span { font-size: 1.8rem; color: rgba(204,0,0,.4); }

.ce-festival-card__body {
	padding: 1rem 1.05rem 1.1rem;
	flex: 1;
	display: flex;
	flex-direction: column;
	gap: .38rem;
}
.ce-festival-card__name {
	font-family: 'Cambria Math', Cambria, Georgia, serif;
	font-size: 1.05rem;
	font-weight: 700;
	color: #fff;
	letter-spacing: .4px;
	line-height: 1.25;
	margin: 0;
}
.ce-festival-card__date,
.ce-festival-card__location,
.ce-festival-card__series {
	font-size: .78rem;
	color: rgba(255,255,255,.52);
	line-height: 1.4;
	margin: 0;
}
.ce-festival-card__series { color: #ff4444; font-weight: 800; }
.ce-festival-card__bio {
	font-size: .82rem;
	color: rgba(255,255,255,.65);
	line-height: 1.6;
	margin: .25rem 0 0;
	flex: 1;
}
.ce-festival-card__link {
	display: inline-flex;
	align-items: center;
	gap: .3rem;
	margin-top: .75rem;
	font-family: 'Cambria Math', Cambria, Georgia, serif;
	font-size: .7rem;
	font-weight: 600;
	letter-spacing: 1.5px;
	text-transform: uppercase;
	color: #ff4444;
	border-bottom: 1px solid rgba(255,68,68,.45);
	padding-bottom: 1px;
	align-self: flex-start;
}
.ce-festivals-directory__empty {
	background: rgba(0,0,0,.6);
	border: 1px solid rgba(255,255,255,.08);
	border-radius: 8px;
	padding: 1rem;
	text-align: center;
	color: rgba(255,255,255,.72);
}

.ce-festival-resources { margin-top: 2.5rem; }
.ce-festival-resources__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 18px;
}
.ce-festival-resource-card,
.ce-festival-giveaway {
	padding: 2rem 1.5rem;
	background: rgba(0,0,0,.78);
	border: 2px solid #ff4444;
	border-radius: 8px;
	box-shadow: 0 8px 30px rgba(0,0,0,.35);
}
.ce-festival-resource-card h3,
.ce-festival-giveaway h3 {
	margin: 0 0 .8rem;
	color: #fff;
	font-size: 1.5rem;
}
.ce-festival-resource-card p,
.ce-festival-giveaway p { color: #ddd; line-height: 1.7; }
.ce-festival-resource-card__label {
	margin: 0 0 .5rem !important;
	color: #ff4444 !important;
	font-size: .76rem !important;
	font-weight: 900;
	letter-spacing: .16em;
	text-transform: uppercase;
}
.ce-festival-giveaway { margin-top: 18px; text-align: center; }
.ce-festival-giveaway > p:not(.ce-festival-resource-card__label) { max-width: 720px; margin-left: auto; margin-right: auto; }
@media (min-width: 760px) {
	.ce-festival-resources__grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
}

.ce-profile-nav { margin-top: 16px; }
.ce-btn-directory {
	background: transparent;
	border: 1px solid #cc0000;
	color: #fff !important;
}
.ce-btn-directory:hover,
.ce-btn-directory:focus { background: #cc0000; }

@media (max-width: 559px) {
	.ce-festivals-directory { padding-left: .8rem; padding-right: .8rem; }
	.ce-festivals-directory__section-head { gap: .55rem; }
	.ce-festivals-directory__section-head span,
	.ce-festivals-directory__section-title { font-size: .72rem; letter-spacing: 2px; }
	.ce-festivals-directory__grid { gap: .8rem; }
}



/* ===============================================================
 * CRANKiT CLICKABLE CTA FEEDBACK — 1.1.9
 * Make CRANKiT profile/action buttons unmistakably interactive.
 * Desktop: subtle lift/grow + brighter CRANKiT red on hover.
 * Touch: larger tap targets and a clear pressed state; no hover needed.
 * Concert event/ticket CTAs receive the strongest treatment and this
 * applies automatically to every current and future Concert profile.
 * ============================================================= */
.ce-btn {
	min-height: 46px;
	font-weight: 800;
	cursor: pointer;
	transition:
		transform 180ms ease,
		background-color 180ms ease,
		border-color 180ms ease,
		box-shadow 180ms ease,
		color 180ms ease;
	-webkit-tap-highlight-color: rgba(255, 68, 68, 0.22);
}

.ce-concert-links .ce-btn {
	min-width: 220px;
	min-height: 50px;
	padding: 13px 20px;
	border: 2px solid #ff4444;
	font-weight: 900;
	letter-spacing: .035em;
	box-shadow: 0 4px 12px rgba(0, 0, 0, .28);
}

.ce-concert-links .ce-btn:not(.ce-btn-primary) {
	background: #171717;
	border-color: #ff4444;
}

.ce-concert-links .ce-btn-primary {
	background: #c8102e;
	border-color: #c8102e;
}

@media (hover: hover) and (pointer: fine) {
	.ce-btn:hover {
		transform: translateY(-2px) scale(1.035);
		box-shadow: 0 9px 22px rgba(0, 0, 0, .38);
	}

	.ce-concert-links .ce-btn:hover {
		background: #ff4444;
		border-color: #ff4444;
		box-shadow: 0 10px 26px rgba(255, 68, 68, .24), 0 8px 18px rgba(0, 0, 0, .42);
	}
}

.ce-btn:focus-visible {
	outline: 3px solid #ffffff;
	outline-offset: 3px;
	transform: translateY(-2px) scale(1.025);
	box-shadow: 0 0 0 2px #ff4444, 0 9px 22px rgba(0, 0, 0, .38);
}

.ce-btn:active {
	transform: translateY(0) scale(.985);
}

/* Tablet: stack the two primary concert actions so neither becomes a
 * cramped target on medium-width/touch screens. */
@media (max-width: 900px) {
	.ce-concert-links .ce-btn {
		display: block;
		width: 100%;
		max-width: 540px;
		min-height: 54px;
		margin: 10px auto 0;
		padding: 15px 18px;
		font-size: 1rem;
	}
}

/* Phones/tablets do not need hover to communicate interactivity: larger
 * targets plus a visible pressed state provide the feedback. */
@media (hover: none), (pointer: coarse) {
	.ce-btn {
		min-height: 50px;
		padding-top: 13px;
		padding-bottom: 13px;
	}

	.ce-concert-links .ce-btn:active {
		background: #ff4444;
		border-color: #ff4444;
		box-shadow: 0 4px 12px rgba(255, 68, 68, .20);
	}
}

@media (prefers-reduced-motion: reduce) {
	.ce-btn {
		transition: none;
	}
	.ce-btn:hover,
	.ce-btn:focus-visible,
	.ce-btn:active {
		transform: none;
	}
}



/* ===============================================================
 * VENUES + CONCERTS DIRECTORIES — 1.1.11
 * Database-driven public pages that connect into Artist/Venue/Event
 * profiles without turning CRANKiT into an endless event feed.
 * ============================================================= */
.ce-venues-directory,
.ce-concerts-directory,
.ce-venues-directory *,
.ce-concerts-directory *,
.ce-venues-directory *::before,
.ce-venues-directory *::after,
.ce-concerts-directory *::before,
.ce-concerts-directory *::after { box-sizing: border-box; }

.ce-venues-directory,
.ce-concerts-directory {
	max-width: 1060px;
	margin: 0 auto 2rem;
	padding: 0 1rem 1rem;
	color: #fff;
}

.ce-venues-directory__header,
.ce-concerts-directory__header {
	margin: 0 auto 1.5rem;
	padding: 2.3rem 1.4rem;
	text-align: center;
	background: rgba(0,0,0,.84);
	border: 2px solid #ff4444;
	border-radius: 8px;
	box-shadow: 0 8px 30px rgba(0,0,0,.4);
}

.ce-venues-directory__header > p,
.ce-concerts-directory__header > p {
	margin: 0 0 .55rem;
	color: #ff4444;
	font-size: .82rem;
	font-weight: 900;
	letter-spacing: .18em;
	text-transform: uppercase;
}

.ce-venues-directory__header h1,
.ce-concerts-directory__header h1 {
	margin: 0;
	color: #fff;
	font-size: clamp(2.7rem,7vw,5rem);
	line-height: 1;
	font-weight: 900;
	letter-spacing: .04em;
	text-transform: uppercase;
}

.ce-venues-directory__intro,
.ce-concerts-directory__intro {
	max-width: 760px;
	margin: 1rem auto 0;
	color: #ddd;
	font-size: 1rem;
	line-height: 1.7;
}

.ce-venues-directory__grid,
.ce-concerts-directory__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1rem;
}

@media (min-width: 700px) {
	.ce-venues-directory__grid,
	.ce-concerts-directory__grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
}

.ce-venue-card,
.ce-concert-card {
	padding: 1.25rem;
	background: rgba(0,0,0,.84);
	border: 1px solid rgba(255,68,68,.78);
	border-radius: 8px;
	box-shadow: 0 7px 24px rgba(0,0,0,.3);
	transition: transform 160ms ease, border-color 160ms ease, box-shadow 160ms ease;
}

@media (hover: hover) and (pointer: fine) {
	.ce-venue-card:hover,
	.ce-concert-card:hover {
		transform: translateY(-3px);
		border-color: #ff4444;
		box-shadow: 0 11px 30px rgba(0,0,0,.4);
	}
}

.ce-venue-card__name,
.ce-concert-card__name {
	margin: 0 0 .55rem;
	font-size: 1.35rem;
	line-height: 1.2;
	font-weight: 900;
}

.ce-venue-card__name a,
.ce-concert-card__name a { color: #fff; text-decoration: none; }
.ce-venue-card__name a:hover,
.ce-concert-card__name a:hover { color: #ff4444; }

.ce-venue-card__location,
.ce-venue-card__shows,
.ce-concert-card__artists,
.ce-concert-card__venue,
.ce-concert-card__meta {
	margin: .3rem 0;
	color: #ddd;
	line-height: 1.5;
}

.ce-concert-card__date {
	margin: 0 0 .45rem;
	color: #ff4444;
	font-weight: 900;
	letter-spacing: .06em;
	text-transform: uppercase;
}

.ce-concert-card__status {
	display: flex;
	flex-wrap: wrap;
	gap: .45rem;
	margin: .85rem 0 0;
}

.ce-concert-card__status span,
.ce-concert-card__status .ce-ticket-status-link,
.ce-concert-card__status strong {
	display: inline-block;
	padding: .28rem .55rem;
	border: 1px solid #ff4444;
	border-radius: 999px;
	font-size: .76rem;
	font-weight: 900;
}

.ce-ticket-status-link {
	display: inline-block;
	border: 1px solid #ff4444;
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
	text-decoration: none !important;
	cursor: pointer;
	transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease;
}

.ce-ticket-status-link:hover,
.ce-ticket-status-link:focus-visible {
	background: #ff4444 !important;
	border-color: #ff4444 !important;
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
}

.ce-ticket-status-link:focus-visible {
	outline: 2px solid #fff;
	outline-offset: 2px;
}

.ce-concert-card__status strong { color: #fff; background: rgba(200,16,46,.25); }

.ce-first-announced-label {
	display: inline-block;
	margin: 0 0 .75rem;
	padding: .3rem .65rem;
	border: 1px solid #ff4444;
	border-radius: 999px;
	background: rgba(204,0,0,.2);
	color: #fff;
	font-size: .76rem;
	font-weight: 900;
	letter-spacing: .06em;
	text-transform: uppercase;
}

.ce-artist-concerts {
	clear: both;
	margin: 1.5rem 0;
	padding: 1.25rem;
	background: rgba(0,0,0,.78);
	border: 1px solid #ff4444;
	border-radius: 8px;
}
.ce-artist-concerts > h2 { margin: 0 0 1rem; color: #fff !important; }
.ce-artist-concerts__list { display: grid; gap: .85rem; }
.ce-artist-concert {
	position: relative;
	padding: 1rem;
	background: rgba(0,0,0,.82);
	border: 1px solid rgba(255,68,68,.58);
	border-radius: 7px;
}
.ce-artist-concert__date { margin: 0 0 .35rem !important; color: #ff4444 !important; font-weight: 900; text-transform: uppercase; }
.ce-artist-concert h3 { margin: 0 0 .4rem; }
.ce-artist-concert h3 a { color: #fff !important; text-decoration: none; }
.ce-artist-concert h3 a:hover { color: #ff4444 !important; }
.ce-artist-concert p { color: #ddd !important; }
.ce-artist-concerts__empty { margin: 0 !important; color: #ddd !important; }

@media (min-width: 700px) {
	.ce-artist-concerts__list { grid-template-columns: repeat(2, minmax(0,1fr)); }
}

.ce-venue-card__actions,
.ce-concert-card__actions {
	display: flex;
	flex-wrap: wrap;
	gap: .55rem;
	margin-top: 1rem;
}

/* Radio / DJ profile exception — 1.1.27 */
.ce-radio-profile {
	clear: both;
	margin: 1.2rem 0;
	padding: 1.25rem 1.35rem;
	background: rgba(0, 0, 0, .72);
	border: 1px solid #ff4444;
	border-radius: 7px;
	color: #fff;
}
.ce-radio-profile__label {
	margin: 0 0 .35rem !important;
	color: #ff4444 !important;
	font-size: .78rem;
	font-weight: 900;
	letter-spacing: .12em;
	text-transform: uppercase;
}
.ce-radio-profile h2 { margin: 0 0 .7rem; color: #fff !important; }
.ce-radio-profile ul { margin: 0 0 .75rem 1.2rem; color: #fff; }
.ce-radio-profile p,
.ce-radio-profile li { color: #fff !important; }

.ce-venue-card__actions .ce-btn,
.ce-concert-card__actions .ce-btn {
	min-height: 44px;
	padding: 10px 14px;
	font-size: .86rem;
}

.ce-venues-directory__empty,
.ce-concerts-directory__empty {
	margin: 1rem 0;
	padding: 1.4rem;
	text-align: center;
	background: rgba(0,0,0,.84);
	border: 1px solid #ff4444;
	border-radius: 8px;
	color: #ddd;
}

@media (max-width: 560px) {
	.ce-venues-directory,
	.ce-concerts-directory { padding-left: .65rem; padding-right: .65rem; }
	.ce-venue-card__actions .ce-btn,
	.ce-concert-card__actions .ce-btn { width: 100%; text-align: center; }
}

/* ===============================================================
 * UNIVERSAL CRANKiT EVENTS ACTION BUTTONS — 1.1.13
 * Scoped to plugin-generated .ce-btn links so ordinary site links,
 * navigation and editorial links are not changed.
 * ============================================================= */
.ce-btn,
.ce-btn-primary,
.ce-btn-social,
.ce-btn-directory,
.ce-concert-links .ce-btn,
.ce-concert-links .ce-btn-primary,
.ce-concert-links .ce-btn:not(.ce-btn-primary) {
	background: transparent !important;
	border: 2px solid #ff4444 !important;
	color: #ffffff !important;
	-webkit-text-fill-color: #ffffff !important;
	font-weight: 800;
	text-decoration: none !important;
}

@media (hover: hover) and (pointer: fine) {
	.ce-btn:hover,
	.ce-btn-primary:hover,
	.ce-btn-social:hover,
	.ce-btn-directory:hover,
	.ce-concert-links .ce-btn:hover {
		background: #ff4444 !important;
		border-color: #ff4444 !important;
		color: #ffffff !important;
		-webkit-text-fill-color: #ffffff !important;
	}
}

.ce-btn:focus-visible,
.ce-btn-primary:focus-visible,
.ce-btn-social:focus-visible,
.ce-btn-directory:focus-visible {
	background: #ff4444 !important;
	border-color: #ff4444 !important;
	color: #ffffff !important;
	-webkit-text-fill-color: #ffffff !important;
}

.ce-btn:active,
.ce-btn-primary:active,
.ce-btn-social:active,
.ce-btn-directory:active {
	background: #cc0000 !important;
	border-color: #cc0000 !important;
	color: #ffffff !important;
	-webkit-text-fill-color: #ffffff !important;
}

/* ===============================================================
 * CRANKiT PAGE-BUILDER CTA BUTTONS — 1.1.25, rescoped in 1.1.45
 *
 * Match page-builder call-to-action links inside CRANKiT content to the
 * CRANKiT button system. Three deliberate limits, added in 1.1.45:
 *
 * 1. Everything is scoped beneath .crankit-events, so an ordinary theme
 *    page is never restyled.
 * 2. Raw form controls (button, input[type=submit|button|reset]) are no
 *    longer selected. Contact forms, search widgets, cookie banners and
 *    other third-party controls keep their own appearance.
 * 3. Only anchor-based CTAs the page builder generates are matched.
 * ============================================================= */
.crankit-events :where(
	.entry-content a.button,
	.entry-content a.btn,
	.entry-content a[class*="-btn"],
	.entry-content a[class*="_btn"],
	.entry-content a[role="button"],
	.entry-content a[style*="background:"],
	.entry-content a[style*="background: "],
	.entry-content a[style*="background-color:"],
	.entry-content a[style*="background-color: "],
	.wp-block-button__link,
	.ui.builder_button,
	.themify_builder .module-buttons-item a,
	.themify_builder .module-buttons a
),
.ce-btn {
	background: transparent !important;
	border-color: #ff4444 !important;
	border-style: solid !important;
	border-width: 2px !important;
	color: #ffffff !important;
	-webkit-text-fill-color: #ffffff !important;
	text-decoration: none !important;
	cursor: pointer;
	/* Long CTA labels wrap instead of overflowing at 200% zoom. */
	overflow-wrap: anywhere;
	transition: background-color 180ms ease, border-color 180ms ease,
		color 180ms ease, box-shadow 180ms ease, transform 180ms ease;
}

@media (hover: hover) and (pointer: fine) {
	.crankit-events :where(
		.entry-content a.button, .entry-content a.btn,
		.entry-content a[class*="-btn"], .entry-content a[class*="_btn"],
		.entry-content a[role="button"],
		.entry-content a[style*="background:"], .entry-content a[style*="background: "],
		.entry-content a[style*="background-color:"], .entry-content a[style*="background-color: "],
		.wp-block-button__link, .ui.builder_button,
		.themify_builder .module-buttons-item a,
		.themify_builder .module-buttons a
	):hover,
	.ce-btn:hover {
		background: #ff4444 !important;
		border-color: #ff4444 !important;
		color: #ffffff !important;
		-webkit-text-fill-color: #ffffff !important;
	}
}

.crankit-events :where(
	.entry-content a.button, .entry-content a.btn,
	.entry-content a[class*="-btn"], .entry-content a[class*="_btn"],
	.entry-content a[role="button"],
	.entry-content a[style*="background:"], .entry-content a[style*="background: "],
	.entry-content a[style*="background-color:"], .entry-content a[style*="background-color: "],
	.wp-block-button__link, .ui.builder_button,
	.themify_builder .module-buttons-item a,
	.themify_builder .module-buttons a
):focus-visible,
.ce-btn:focus-visible {
	background: #ff4444 !important;
	border-color: #ff4444 !important;
	color: #ffffff !important;
	-webkit-text-fill-color: #ffffff !important;
	outline: 3px solid #ffffff;
	outline-offset: 3px;
}

.crankit-events :where(
	.entry-content a.button, .entry-content a.btn,
	.entry-content a[class*="-btn"], .entry-content a[class*="_btn"],
	.entry-content a[role="button"],
	.entry-content a[style*="background:"], .entry-content a[style*="background: "],
	.entry-content a[style*="background-color:"], .entry-content a[style*="background-color: "],
	.wp-block-button__link, .ui.builder_button,
	.themify_builder .module-buttons-item a,
	.themify_builder .module-buttons a
):active,
.ce-btn:active {
	background: #cc0000 !important;
	border-color: #cc0000 !important;
	color: #ffffff !important;
	-webkit-text-fill-color: #ffffff !important;
}

/* ===============================================================
 * READABLE CRANKiT CONTENT PANELS — 1.1.14
 * Keep the concert artwork visible while placing profile copy on a
 * consistent transparent-black surface with a restrained red edge.
 * ============================================================= */
.ce-concert,
.ce-artist,
.ce-venue,
.ce-festival {
	background: rgba(0, 0, 0, .76);
	border: 2px solid rgba(255, 68, 68, .92);
	border-radius: 10px;
	box-shadow: 0 14px 38px rgba(0, 0, 0, .42);
	padding: clamp(22px, 4vw, 38px);
}

.ce-concert p,
.ce-concert li,
.ce-artist p,
.ce-artist li,
.ce-venue p,
.ce-venue li,
.ce-festival p,
.ce-festival li {
	color: rgba(255, 255, 255, .94);
}

.ce-artist-bio,
.ce-artist-bio p,
.ce-artist-bio li {
	color: #ffffff !important;
	-webkit-text-fill-color: #ffffff !important;
}

@media (max-width: 600px) {
	.ce-concert,
	.ce-artist,
	.ce-venue,
	.ce-festival {
		border-left-width: 1px;
		border-right-width: 1px;
		border-radius: 7px;
		padding: 20px 16px 26px;
	}
}

/* The desktop concert grid previously applied padding:0 with greater
 * specificity than the shared profile panel. Keep the border comfortably
 * clear of the title, details, and final action buttons. */
.ce-concert-layout > .ce-concert {
	padding: clamp(28px, 3vw, 38px);
}

@media (max-width: 1023px) {
	.ce-concert-layout > .ce-concert {
		padding: 24px 18px 32px;
	}
}

@media (max-width: 600px) {
	.ce-concert-layout > .ce-concert {
		padding: 20px 16px 26px;
	}
}

/* ===============================================================
 * EDITORIAL / LISTING DISCLAIMER — 1.1.16
 * Quiet but readable legal context immediately above the site footer.
 * ============================================================= */
.ce-listing-disclaimer {
	clear: both;
	margin: clamp(24px, 4vw, 40px) auto 0;
	padding: 13px 16px;
	max-width: 980px;
	background: rgba(0, 0, 0, .58);
	border-top: 1px solid rgba(255, 68, 68, .55);
}

.ce-listing-disclaimer p {
	margin: 0;
	color: rgba(255, 255, 255, .74) !important;
	font-size: clamp(.76rem, 1.5vw, .86rem);
	line-height: 1.55;
	font-style: italic;
	text-align: center;
}

/* Artist directory rotation and clearly disclosed paid placement — 1.1.17. */
.ce-artist-card__photo {
	position: relative;
}

.ce-sponsored-label {
	position: absolute;
	top: 10px;
	left: 10px;
	z-index: 2;
	padding: 5px 9px;
	background: rgba(0, 0, 0, .88);
	border: 1px solid #ff4444;
	border-radius: 4px;
	color: #fff;
	font-size: .72rem;
	font-weight: 800;
	letter-spacing: .08em;
	line-height: 1;
	text-transform: uppercase;
}

.ce-artist-card--sponsored {
	box-shadow: 0 0 0 2px rgba(255, 68, 68, .8), 0 14px 32px rgba(0, 0, 0, .38);
}

.ce-listing-card--sponsored {
	position: relative;
	box-shadow: 0 0 0 2px rgba(255, 68, 68, .8), 0 14px 32px rgba(0, 0, 0, .38);
}

.ce-sponsored-label--card {
	display: inline-block;
	position: static;
	margin: 0 0 12px;
}
.ce-concert-card,
.ce-concert,
.ce-festival-card,
.ce-festival {
	position: relative;
}

.ce-event-status-stamp {
	position: absolute;
	left: 50%;
	top: 50%;
	width: 65%;
	z-index: 50;
	pointer-events: none;
	transform: translate(-50%, -50%) rotate(-45deg);
	filter: drop-shadow(0 5px 10px rgba(0,0,0,.8));
}

.ce-event-status-stamp img {
	display: block;
	width: 100%;
	height: auto;
}

.ce-lineup-tba {
	font-family: "Cambria Math", Cambria, Georgia, serif;
	font-size: 1.25rem;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
}

/* ===============================================================
 * CRANKiT PAGE READABILITY AND TYPOGRAPHY — 1.1.32, rescoped in 1.1.45
 * White copy on CRANKiT's dark panels; red remains the link/accent color.
 * Previously these selectors were unscoped and turned body text white on
 * every page of the site, including pages the plugin does not own.
 * ============================================================= */
.crankit-events,
.crankit-events #pagewrap,
.crankit-events #content,
.crankit-events .page-content,
.crankit-events .entry-content {
	color: #ffffff;
}

.crankit-events #content p,
.crankit-events #content li,
.crankit-events #content dd,
.crankit-events #content dt,
.crankit-events .entry-content p,
.crankit-events .entry-content li,
.ce-artist,
.ce-venue,
.ce-concert,
.ce-festival,
.ce-artists-directory,
.ce-venues-directory,
.ce-concerts-directory,
.ce-festivals-directory,
.ce-festival-resource-card p,
.ce-festival-giveaway p,
.ce-global-footer p,
.ce-global-footer__nav,
.ce-global-footer__signature p,
.ce-listing-disclaimer p {
	color: #ffffff !important;
	-webkit-text-fill-color: #ffffff !important;
}

.ce-artist,
.ce-venue,
.ce-concert,
.ce-festival,
.ce-artists-directory,
.ce-venues-directory,
.ce-concerts-directory,
.ce-festivals-directory,
.ce-global-footer,
.crankit-legal {
	font-family: 'Lora', Georgia, serif;
}

.ce-artist h1,
.ce-artist h2,
.ce-artist h3,
.ce-venue h1,
.ce-venue h2,
.ce-venue h3,
.ce-concert h1,
.ce-concert h2,
.ce-concert h3,
.ce-festival h1,
.ce-festival h2,
.ce-festival h3,
.ce-directory-header h1,
.ce-festival-resource-card h3,
.ce-festival-giveaway h3,
.ce-global-footer h2,
.crankit-legal h1,
.crankit-legal h2,
.crankit-legal h3,
.crankit-legal strong {
	font-family: 'Cambria Math', Cambria, Georgia, serif !important;
}

.ce-artist-description,
.ce-artist-bio,
.ce-profile-description {
	margin-bottom: 12px !important;
}


/* Canonical CRANKiT Verified page. The plugin owns this layout so a stale
 * Themify Builder canvas cannot duplicate the page body. */
.crankit-verified-page {
	max-width: 1060px;
	margin: 0 auto;
	padding-top: 40px;
	color: #fff;
	font-family: 'Lora', Georgia, serif;
}
.crankit-verified-page * { box-sizing: border-box; }
.crankit-verified-page h1,
.crankit-verified-page h2,
.crankit-verified-page h3,
.crankit-verified-page strong { font-family: 'Cambria Math', Cambria, Georgia, serif; }
.crankit-verified-hero,
.crankit-verified-panel {
	background: rgba(0,0,0,.84);
	border: 2px solid #ff4444;
	border-radius: 8px;
	box-shadow: 0 8px 30px rgba(0,0,0,.4);
}
.crankit-verified-hero { padding: 2.75rem 1.5rem; text-align: center; margin-bottom: 1.5rem; }
.crankit-verified-eyebrow {
	margin: 0 0 .6rem;
	color: #ffffff !important;
	-webkit-text-fill-color: #ffffff !important;
	font-family: 'Cambria Math', Cambria, Georgia, serif !important;
	font-size: .82rem;
	font-weight: 900;
	letter-spacing: .18em;
	text-transform: none !important;
}
.crankit-verified-page h1 { margin: 0; color: #fff; font-size: clamp(2.5rem,7vw,5rem); line-height: 1; }
.crankit-verified-subtitle { max-width: 760px; margin: 1rem auto 0 !important; color: #fff !important; font-size: 1.12rem; line-height: 1.7; }
.crankit-verified-panel { padding: clamp(1.4rem,4vw,2.5rem); margin-bottom: 1.5rem; }
.crankit-verified-page h2 { color: #fff; margin: 0 0 .8rem; font-size: clamp(1.5rem,3vw,2.15rem); }
.crankit-verified-page h3 { color: #fff; margin: 1.25rem 0 .45rem; }
.crankit-verified-page p,
.crankit-verified-page li {
	color: #ffffff !important;
	-webkit-text-fill-color: #ffffff !important;
	opacity: 1 !important;
	line-height: 1.75;
}
.crankit-verified-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1rem; }
.crankit-verified-card { padding: 1.25rem; background: rgba(0,0,0,.68); border: 1px solid rgba(255,68,68,.7); border-radius: 6px; }
.crankit-verified-card h3 { margin-top: 0; }
.crankit-verified-callout { border-left: 5px solid #ff4444; padding: 1rem 1.2rem; background: rgba(255,68,68,.1); }
.crankit-verified-btn { display: inline-block; padding: 12px 20px; border: 2px solid #ff4444; border-radius: 5px; color: #fff !important; -webkit-text-fill-color: #fff !important; text-decoration: none; background: #000; font-weight: 800; cursor: pointer; }
.crankit-verified-btn:hover,
.crankit-verified-btn:focus-visible { background: #ff4444 !important; border-color: #ff4444 !important; color: #fff !important; -webkit-text-fill-color: #fff !important; }
.crankit-verified-btn:focus-visible { outline: 3px solid #fff; outline-offset: 3px; }
.crankit-verified-btn:active { background: #cc0000 !important; border-color: #cc0000 !important; color: #fff !important; -webkit-text-fill-color: #fff !important; }
@media (max-width: 700px) { .crankit-verified-grid { grid-template-columns: 1fr; } }

/* Contact Us uses a third-party form, so raw form controls remain untouched
 * site-wide. Only its actual submit control receives the CRANKiT action
 * treatment; fields, CAPTCHA controls and buttons on other pages keep their
 * own plugin styling. */
.ce-page-contact-us .entry-content form :where(
	input[type="submit"],
	button[type="submit"],
	button:not([type])
) {
	-webkit-appearance: none !important;
	appearance: none !important;
	min-height: 44px;
	padding: 10px 18px !important;
	background: #000 !important;
	border: 2px solid #ff4444 !important;
	border-radius: 5px !important;
	box-shadow: none !important;
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
	font-weight: 800 !important;
	line-height: 1.35;
	cursor: pointer;
	transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease;
}

@media (hover: hover) and (pointer: fine) {
	.ce-page-contact-us .entry-content form :where(
		input[type="submit"],
		button[type="submit"],
		button:not([type])
	):hover {
		background: #ff4444 !important;
		border-color: #ff4444 !important;
		color: #fff !important;
		-webkit-text-fill-color: #fff !important;
	}
}

.ce-page-contact-us .entry-content form :where(
	input[type="submit"],
	button[type="submit"],
	button:not([type])
):focus-visible {
	background: #ff4444 !important;
	border-color: #ff4444 !important;
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
	outline: 3px solid #fff !important;
	outline-offset: 3px;
}

.ce-page-contact-us .entry-content form :where(
	input[type="submit"],
	button[type="submit"],
	button:not([type])
):active {
	background: #cc0000 !important;
	border-color: #cc0000 !important;
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
}

/* Phone-only contact refinements — 1.1.59. Keep the primary action easy to
 * tap and reserve a clear landing area beneath the form for the fixed Google
 * reCAPTCHA badge without styling or hiding the third-party control itself. */
@media (max-width: 559px) {
	.ce-page-contact-us .entry-content form {
		margin-bottom: 5.5rem !important;
	}

	.ce-page-contact-us .entry-content form :where(
		input[type="submit"],
		button[type="submit"],
		button:not([type])
	) {
		display: block !important;
		width: 100% !important;
		max-width: 100% !important;
		margin: 1rem auto 0 !important;
		text-align: center !important;
		box-sizing: border-box;
	}
}

/* CRANKiT ENTERTAINMENT News feed and individual stories. */
.ce-news-page,
.ce-news-single { max-width: 1060px; margin: 0 auto; padding: 40px 16px 0; position: relative; z-index: 1; color: #fff; font-family: 'Lora', Georgia, serif; }
.ce-news-hero,
.ce-news-single,
.ce-news-empty { background: rgba(0,0,0,.86); border: 2px solid #ff4444; border-radius: 8px; box-shadow: 0 8px 30px rgba(0,0,0,.4); }
.ce-news-hero { box-sizing: border-box; width: 100%; max-width: 860px; padding: clamp(1.35rem,3vw,1.85rem) clamp(1rem,2.5vw,1.3rem); margin: 0 auto 1.5rem; text-align: center; }
.ce-news-eyebrow { margin: 0 0 .6rem !important; color: #fff !important; -webkit-text-fill-color: #fff !important; font-family: 'Cambria Math', Cambria, Georgia, serif !important; font-weight: 900; letter-spacing: .14em; }
.ce-news-hero h1 { margin: 0 0 .7rem; color: #fff; font-size: clamp(2.6rem,7vw,5rem); }
.ce-news-hero > p:last-child { max-width: 760px; margin: 0 auto; color: #fff !important; -webkit-text-fill-color: #fff !important; font-size: 1.08rem; }
.ce-news-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.25rem; }
.ce-news-card { overflow: hidden; background: rgba(0,0,0,.86); border: 2px solid #ff4444; border-radius: 8px; box-shadow: 0 8px 26px rgba(0,0,0,.35); }
.ce-news-card__image { display: block; aspect-ratio: 4/3; overflow: hidden; }
.ce-news-card__image img { width: 100%; height: 100%; object-fit: cover; object-position: center top; display: block; }
.ce-news-card__body { padding: 1.4rem; }
.ce-news-card__date,
.ce-news-single__date { color: #ff4444 !important; -webkit-text-fill-color: #ff4444 !important; font-weight: 800; font-size: .9rem; }
.ce-news-card h2 { margin: .35rem 0 .7rem; font-size: clamp(1.35rem,3vw,1.8rem); line-height: 1.2; }
.ce-news-card h2 a { color: #fff !important; -webkit-text-fill-color: #fff !important; text-decoration: none; }
.ce-news-card__excerpt p,
.ce-news-single p,
.ce-news-single li { color: #fff !important; -webkit-text-fill-color: #fff !important; opacity: 1 !important; line-height: 1.75; }
.ce-news-btn { display: inline-block; padding: 11px 18px; color: #fff !important; -webkit-text-fill-color: #fff !important; background: #000; border: 2px solid #ff4444; border-radius: 5px; font-weight: 800; text-decoration: none; }
.ce-news-btn:hover,
.ce-news-btn:focus-visible { background: #ff4444; color: #fff !important; }
.ce-news-empty { padding: 2rem; text-align: center; }
.ce-news-single { padding: clamp(1.5rem,4vw,3rem); }
.ce-news-single h1 { margin: .25rem 0 .5rem; color: #fff; font-size: clamp(2rem,5vw,3.6rem); line-height: 1.08; }
.ce-news-single h2,
.ce-news-single h3 { color: #fff; margin-top: 1.6em; }
.ce-news-single__image { width: min(100%,530px); margin: 1.5rem auto; }
.ce-news-single__image img { display: block; width: 100%; height: auto; border: 2px solid #ff4444; border-radius: 8px; }
.ce-news-single__content a { color: #ff4444; font-weight: 800; }
@media (max-width: 700px) { .ce-news-grid { grid-template-columns: 1fr; } }

/* Shared directory/page hero width: aligns primary page headers with NEWS. */
.ce-directory-header,
.crankit-verified-hero {
	box-sizing: border-box;
	width: 100%;
	max-width: 860px;
	margin-left: auto;
	margin-right: auto;
}

/* Themify-owned page heroes that use an inline-styled first SECTION.
 * 1.1.45 replaced four hard-coded page IDs (1312, 939, 277, 98) with the
 * portable ce-page-* body classes CE_Template_Loader adds from the
 * filterable CRANKiT page-slug list. */
.ce-page-about-us .themify_builder_row.tb_first .module-plain-text:first-child .tb_text_wrap > section:first-child,
.ce-page-work-with-us .themify_builder_row.tb_first .module-plain-text:first-child .tb_text_wrap > section:first-child,
.ce-page-contact-us .themify_builder_row.tb_first .module-plain-text:first-child .tb_text_wrap > section:first-child,
.ce-page-social .themify_builder_row.tb_first .module-plain-text:first-child .tb_text_wrap > section:first-child {
	box-sizing: border-box !important;
	width: calc(100% - 32px) !important;
	max-width: 860px !important;
	margin-left: auto !important;
	margin-right: auto !important;
}

/* Work With Us mobile hero — 1.1.60. Its saved heading deliberately uses a
 * large desktop clamp whose 2.6rem minimum is wider than a phone panel.
 * Override only that first hero heading at phone widths; desktop is unchanged. */
@media (max-width: 559px) {
	.ce-page-work-with-us .themify_builder_row.tb_first .module-plain-text:first-child .tb_text_wrap > section:first-child h1 {
		max-width: 100%;
		font-size: clamp(1.7rem, 8vw, 2.15rem) !important;
		line-height: 1.04 !important;
		white-space: normal !important;
		overflow-wrap: normal;
		word-break: normal;
	}
}


/* ===============================================================
 * 1.1.45 — pagination, venue listings, and zoom/wrapping fixes
 * ============================================================= */

/* Accessible News pagination. */
.ce-news-pagination {
	max-width: 1060px;
	margin: 1.75rem auto 0;
	padding: 1.1rem 1rem;
	background: rgba(0,0,0,.86);
	border: 2px solid #ff4444;
	border-radius: 8px;
	text-align: center;
}
.ce-news-pagination ul.page-numbers {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: .5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
.ce-news-pagination li { margin: 0; }
.ce-news-pagination .page-numbers {
	display: inline-block;
	min-width: 44px;
	min-height: 44px;
	padding: 10px 14px;
	border: 2px solid #ff4444;
	border-radius: 5px;
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
	font-weight: 800;
	line-height: 1.4;
	text-decoration: none;
	overflow-wrap: anywhere;
}
.ce-news-pagination a.page-numbers:hover,
.ce-news-pagination a.page-numbers:focus-visible {
	background: #ff4444;
}
.ce-news-pagination a.page-numbers:focus-visible {
	outline: 3px solid #ffffff;
	outline-offset: 3px;
}
.ce-news-pagination .page-numbers.current {
	background: #c8102e;
	border-color: #c8102e;
}
.ce-news-pagination .page-numbers.dots {
	border-color: transparent;
}
.ce-news-pagination__status {
	margin: .75rem 0 0 !important;
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
	font-size: .9rem;
}

/* Venue profile: upcoming concert list. */
.ce-venue-concerts ul { list-style: none; margin: 0; padding: 0; }
.ce-venue-concerts li {
	padding: .6rem 0;
	border-top: 1px solid rgba(255,68,68,.35);
}
.ce-venue-concerts li:first-child { border-top: 0; padding-top: 0; }
.ce-venue-concerts a { font-weight: 700; }
.ce-venue-concerts__date {
	display: block;
	margin-top: .2rem;
	font-size: .88rem;
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
}
.ce-venue-concerts__empty { margin: 0 !important; }

/* Long labels must wrap rather than overflow at narrow widths and at
 * 200% zoom. Applies to every CRANKiT label, badge and card title. */
.ce-btn,
.ce-rail-card h2,
.ce-rail-link,
.ce-status-badge,
.ce-ticket-status-link,
.ce-sponsored-label,
.ce-first-announced-label,
.ce-concert-card__name,
.ce-venue-card__name,
.ce-artist-card__name,
.ce-festival-card__name,
.ce-artist-card__link,
.ce-festival-card__link,
.ce-directory-header h1,
.ce-directory-header__brand {
	overflow-wrap: anywhere;
	word-break: normal;
	white-space: normal;
}

/* Keep flex-based label rows from clipping their wrapped text. */
.ce-artists-directory__section-head,
.ce-festivals-directory__section-head,
.ce-concert-card__status,
.ce-venue-card__actions,
.ce-concert-card__actions {
	flex-wrap: wrap;
}
