.core-play-page {
	--core-gap: 10px;
	--core-radius: 10px;
	--core-grey: #686868;
	--core-bg: #f1f1f1;
	--core-card: #ffffff;
	--core-text: #111111;
	--core-body-size: 21px;
	--core-hero-parallax: 0px;
	box-sizing: border-box;

	/*
	 * Full-bleed real: rompe cualquier contenedor de 1200/1440 px del tema
	 * y ocupa el ancho completo del viewport.
	 */
	position: relative;
	left: 50%;
	width: 100vw;
	max-width: 100vw !important;
	margin-left: -50vw;
	margin-right: -50vw;
	padding: 0 15px;

	color: var(--core-text);
	background: var(--core-bg);
	font-family: "Inter Tight", Arial, sans-serif;
	font-size: var(--core-body-size);
	line-height: 1.5;
}

.core-play-page *,
.core-play-page *::before,
.core-play-page *::after {
	box-sizing: inherit;
}

.core-play-hero {
	--core-trailer-width: 420px;
	display: grid;
	grid-template-columns: minmax(0, 1fr) var(--core-trailer-width);
	gap: var(--core-gap);
	align-items: stretch;
	margin-bottom: var(--core-gap);
}

.core-play-hero.no-trailer {
	grid-template-columns: minmax(0, 1fr);
}

.core-play-hero-title {
	position: relative;
	display: flex;
	min-height: 178px;
	align-items: center;
	padding: clamp(26px, 3vw, 44px) clamp(40px, 4.5vw, 68px);
	border-radius: var(--core-radius);
	overflow: hidden;
	isolation: isolate;
	background: #666;
}

.core-play-hero-title::before {
	content: "";
	position: absolute;
	inset: -70px -42px;
	z-index: -2;
	background-image: var(--core-poster-image);
	background-position: center;
	background-size: cover;
	filter: blur(40px) saturate(1.12);
	transform: translate3d(0, var(--core-hero-parallax), 0) scale(1.18);
	will-change: transform;
}

.core-play-hero-title::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		linear-gradient(90deg, rgba(0, 0, 0, .30), rgba(0, 0, 0, .08)),
		rgba(0, 0, 0, .06);
}

.core-play-hero-copy {
	position: relative;
	z-index: 1;
	color: #fff;
	text-shadow: 0 1px 12px rgba(0,0,0,.18);
}

.core-play-hero-title h1 {
	margin: 0 0 10px;
	color: #fff;
	font-family: "Inter Tight", Arial, sans-serif;
	font-size: clamp(3rem, 5vw, 5rem);
	font-weight: 500;
	line-height: .98;
	letter-spacing: -.045em;
	text-transform: none !important;
}

.core-play-hero-title p {
	margin: 0;
	color: #fff;
	font-size: clamp(1.8rem, 3vw, 2.8rem);
	font-weight: 400;
	line-height: 1.05;
	text-transform: none !important;
}


.core-play-special-info {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 5px;
	margin-top: 12px;
}

.core-play-special-info span {
	display: block;
	color: rgba(255,255,255,.90);
	font-family: "Roboto Mono", monospace;
	font-size: 12px;
	font-weight: 600;
	line-height: 1.25;
	letter-spacing: .015em;
}

/* Trailer thumbnail / inline player */
.core-play-trailer {
	position: relative;
	display: flex;
	width: 100%;
	height: 100%;
	min-height: 0;
	aspect-ratio: 16 / 9;
	align-items: center;
	justify-content: center;
	padding: 0;
	border: 0;
	border-radius: var(--core-radius);
	background-color: #111;
	background-position: center;
	background-size: cover;
	overflow: hidden;
}

.core-play-trailer::before {
	content: "";
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, .2);
	transition: background .2s ease;
}

.core-play-trailer:has(.core-play-trailer-launch:hover)::before,
.core-play-trailer:has(.core-play-trailer-launch:focus-visible)::before {
	background: rgba(0, 0, 0, .1);
}

.core-play-trailer-launch {
	position: absolute;
	inset: 0;
	z-index: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	padding: 0;
	border: 0;
	background: transparent;
	cursor: pointer;
	font: inherit;
}

.core-play-trailer-button {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	padding: 12px 20px;
	border: 1px solid rgba(255,255,255,.82);
	border-radius: 999px;
	background: rgba(73, 31, 42, .72);
	color: #fff;
	font-family: "Roboto Mono", monospace;
	font-size: 15px;
	font-weight: 700;
	letter-spacing: .06em;
}

.core-play-trailer-icon {
	font-size: 13px;
}

.core-play-trailer.is-playing::before {
	display: none;
}

.core-play-trailer-frame {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
	background: #000;
}

/* Meta information */
.core-play-facts {
	display: grid;
	gap: var(--core-gap);
	margin-bottom: var(--core-gap);
}

.core-play-facts.cols-3 {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.core-play-facts.cols-4 {
	grid-template-columns: repeat(4, minmax(0, 1fr));
}

.core-play-fact {
	display: flex;
	min-height: 104px;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	padding: 17px 20px;
	border-radius: var(--core-radius);
	background: var(--core-grey);
	color: #fff;
	text-align: center;
}

.core-play-fact span {
	margin-bottom: 9px;
	font-family: "Roboto Mono", monospace;
	font-size: 16px;
	font-weight: 700;
	letter-spacing: .045em;
	text-transform: uppercase;
}

.core-play-fact strong {
	color: #fff;
	font-family: "Inter Tight", Arial, sans-serif;
	font-size: var(--core-body-size);
	font-weight: 400;
	line-height: 1.25;
	text-transform: none !important;
}

/*
 * Grid principal: ambas columnas tienen la altura de la columna más alta.
 * El módulo del cartel ocupa toda esa altura hasta el final.
 */
.core-play-body-grid {
	display: grid;
	grid-template-columns: minmax(320px, 30%) minmax(0, 1fr);
	gap: var(--core-gap);
	align-items: stretch;
}

.core-play-poster-column {
	display: flex;
	min-width: 0;
	height: 100%;
}

.core-play-poster-module {
	position: relative;
	display: flex;
	width: 100%;
	min-height: 100%;
	height: 100%;
	align-items: flex-start;
	justify-content: center;
	padding: clamp(34px, 4vw, 66px);
	border-radius: var(--core-radius);
	overflow: hidden;
	isolation: isolate;
	background: #f1e8e8;
}

.core-play-poster-module::before {
	content: "";
	position: absolute;
	inset: -42px;
	z-index: -3;
	background-image: var(--core-poster-image);
	background-position: center;
	background-size: cover;
	filter: blur(30px) brightness(1.38) saturate(.68);
	transform: scale(1.16);
}

.core-play-poster-module::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -2;
	background:
		radial-gradient(circle at 35% 12%, rgba(255,255,255,.98), rgba(255,255,255,.56) 44%, rgba(255,255,255,.38)),
		rgba(255,255,255,.52);
	backdrop-filter: blur(2px);
}

.core-play-poster-inner {
	position: relative;
	z-index: 1;
	display: flex;
	width: 100%;
	align-items: flex-start;
	justify-content: center;
}

.core-play-poster {
	display: block;
	width: min(100%, 420px);
	max-height: 720px;
	height: auto;
	object-fit: contain;
	border-radius: 7px;
	box-shadow: 0 18px 50px rgba(0,0,0,.09);
}

.core-play-poster-placeholder {
	position: relative;
	z-index: 1;
	display: flex;
	width: 100%;
	min-height: 430px;
	align-items: center;
	justify-content: center;
	color: #666;
}

.core-play-content-column {
	display: grid;
	gap: var(--core-gap);
	align-content: start;
}

.core-play-card {
	padding: clamp(34px, 4vw, 60px);
	border-radius: var(--core-radius);
	background: var(--core-card);
}

.core-play-card h2 {
	margin: 0 0 22px;
	font-family: "Inter Tight", Arial, sans-serif;
	font-size: clamp(1.95rem, 2.55vw, 3rem);
	font-weight: 500;
	line-height: 1.1;
	letter-spacing: .014em;
	text-transform: none !important;
	font-variant-caps: normal !important;
}

.core-play-synopsis,
.core-play-cast,
.core-play-tech {
	font-size: var(--core-body-size);
	line-height: 1.55;
	text-transform: none !important;
}

.core-play-synopsis p {
	margin-top: 0;
}

.core-play-synopsis p:last-child {
	margin-bottom: 0;
}

.core-play-cast {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 8px 48px;
}

.core-play-cast-item,
.core-play-tech p,
.core-play-cast-item span,
.core-play-tech span,
.core-play-cast-item em,
.core-play-tech em {
	text-transform: none !important;
}

.core-play-cast-item em,
.core-play-tech em {
	color: #555;
	font-style: italic;
}

.core-play-tech p {
	margin: 0 0 8px;
}

.core-play-tech p:last-child {
	margin-bottom: 0;
}

.core-play-video-card a {
	display: inline-flex;
	padding: 12px 20px;
	border-radius: 999px;
	background: #111;
	color: #fff;
	font-family: "Roboto Mono", monospace;
	font-size: 15px;
	font-weight: 700;
	letter-spacing: .03em;
	text-decoration: none;
}

.core-play-gallery {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--core-gap);
	margin: var(--core-gap) 0 0;
	padding: 0;
}

.core-play-gallery-image {
	display: block;
	width: 100%;
	aspect-ratio: 5 / 3;
	border-radius: var(--core-radius);
	object-fit: cover;
}

@media (prefers-reduced-motion: reduce) {
	.core-play-hero-title::before {
		transform: scale(1.18);
	}
}

@media (max-width: 980px) {
	.core-play-hero,
	.core-play-body-grid {
		grid-template-columns: 1fr;
	}

	.core-play-hero {
		--core-trailer-width: auto;
	}

	.core-play-trailer {
		width: 100%;
		height: auto;
		aspect-ratio: 16 / 9;
	}

	.core-play-facts.cols-3,
	.core-play-facts.cols-4 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.core-play-poster-column,
	.core-play-poster-module {
		height: auto;
		min-height: 0;
	}
}

@media (max-width: 700px) {
	.core-play-facts.cols-3,
	.core-play-facts.cols-4 {
		grid-template-columns: 1fr;
	}

	.core-play-fact {
		width: 100%;
	}
}

@media (max-width: 620px) {
	.core-play-page {
		--core-body-size: 18px;
		padding: 0 15px;
	}

	.core-play-hero {
		grid-template-columns: 1fr;
	}

	.core-play-hero-title {
		min-height: 155px;
		padding: 22px 28px;
	}

	.core-play-facts,
	.core-play-cast,
	.core-play-gallery {
		grid-template-columns: 1fr;
	}

	.core-play-gallery {
		grid-template-columns: 1fr;
		gap: var(--core-gap);
	}

	.core-play-gallery-image {
		width: 100%;
		aspect-ratio: 5 / 3;
	}

	.core-play-card {
		padding: 28px 22px;
	}
}

/* =========================================================
 * 4.5.0 — Actuaciones de la obra
 * ========================================================= */

.core-play-performances {
	margin-top: var(--core-gap);
}

.core-play-performances-titlebar {
	display: flex;
	align-items: center;
	min-height: 70px;
	padding: 14px clamp(24px, 3.5vw, 52px);
	border-radius: var(--core-radius);
	background: #fff;
}

.core-play-performances-titlebar h2 {
	margin: 0;
	color: #1f1f1f;
	font-family: "Inter Tight", Arial, sans-serif;
	font-size: clamp(2rem, 2.9vw, 3.35rem);
	font-weight: 600;
	letter-spacing: 0;
	line-height: 1.05;
	text-transform: none !important;
}

.core-play-events-section {
	margin-top: var(--core-gap);
	overflow: hidden;
	border-radius: var(--core-radius);
	background: #fff;
}

.core-play-events-section-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 18px;
	min-height: 58px;
	padding: 12px clamp(20px, 2.8vw, 40px);
	border-bottom: 1px solid rgba(0,0,0,.10);
}

.core-play-events-section-head h3 {
	margin: 0;
	color: #222;
	font-family: "Roboto Mono", monospace;
	font-size: 15px;
	font-weight: 600;
	letter-spacing: .07em;
	line-height: 1.2;
	text-transform: uppercase;
}

.core-play-events-section-head > span {
	color: #686868;
	font-family: "Roboto Mono", monospace;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .05em;
	text-transform: uppercase;
	white-space: nowrap;
}

.core-play-upcoming-events,
.core-play-past-events {
	display: grid;
}

.core-play-upcoming-event,
.core-play-past-event {
	color: inherit;
	text-decoration: none;
}

.core-play-upcoming-event:hover,
.core-play-upcoming-event:focus-visible,
.core-play-past-event:hover,
.core-play-past-event:focus-visible {
	color: inherit;
	text-decoration: none;
	outline: 0;
}

.core-play-upcoming-event {
	display: grid;
	grid-template-columns: auto auto minmax(0, 1fr) auto auto;
	gap: 14px;
	align-items: center;
	min-height: 74px;
	padding: 10px clamp(20px, 2.8vw, 40px);
	border-top: 1px solid rgba(0,0,0,.08);
	background: #fff;
	transition: background-color .18s ease;
}

.core-play-upcoming-event:first-child {
	border-top: 0;
}

.core-play-upcoming-event:hover,
.core-play-upcoming-event:focus-visible {
	background: #f7f7f7;
}

.core-play-event-date-chip,
.core-play-event-time-chip {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 34px;
	border: 1px solid rgba(0,0,0,.14);
	border-radius: 999px;
	background: #fff;
	font-family: "Roboto Mono", monospace;
	font-weight: 600;
	white-space: nowrap;
}

.core-play-event-date-chip {
	gap: 6px;
	padding: 0 11px;
	color: #272727;
}

.core-play-event-date-chip strong {
	font-size: 16px;
	font-weight: 700;
	line-height: 1;
}

.core-play-event-date-chip > span {
	font-size: 10px;
	letter-spacing: .045em;
	text-transform: uppercase;
}

.core-play-event-weekday {
	color: #6a6a6a;
}

.core-play-event-time-chip {
	gap: 6px;
	padding: 0 10px;
	color: #343434;
	font-size: 12px;
}

.core-play-event-time-chip svg {
	width: 12px;
	height: 12px;
	fill: currentColor;
}

.core-play-event-location,
.core-play-past-event-location {
	display: flex;
	min-width: 0;
	flex-direction: column;
}

.core-play-event-location strong,
.core-play-past-event-location strong {
	overflow: hidden;
	color: #252525;
	font-family: "Inter Tight", Arial, sans-serif;
	font-size: 17px;
	font-weight: 600;
	line-height: 1.18;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.core-play-event-location > span,
.core-play-past-event-location > span {
	margin-top: 3px;
	overflow: hidden;
	color: #666;
	font-family: "Inter Tight", Arial, sans-serif;
	font-size: 14px;
	font-weight: 400;
	line-height: 1.2;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.core-play-event-status {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 26px;
	padding: 0 8px;
	border: 1px solid #b7b7b7;
	border-radius: 999px;
	color: #555;
	font-family: "Roboto Mono", monospace;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: .05em;
	white-space: nowrap;
}

.core-play-past-event {
	display: grid;
	grid-template-columns: 132px 62px minmax(0, 1fr) auto auto;
	gap: 14px;
	align-items: center;
	min-height: 58px;
	padding: 8px clamp(20px, 2.8vw, 40px);
	border-top: 1px solid rgba(0,0,0,.08);
	background: #fff;
	transition: background-color .18s ease;
}

.core-play-past-event:first-child {
	border-top: 0;
}

.core-play-past-event:hover,
.core-play-past-event:focus-visible {
	background: #f7f7f7;
}

.core-play-past-event-date,
.core-play-past-event-time {
	font-family: "Roboto Mono", monospace;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .025em;
	white-space: nowrap;
}

.core-play-past-event-date {
	color: #363636;
	text-transform: uppercase;
}

.core-play-past-event-time {
	color: #5d5d5d;
}

.core-play-event-open {
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	justify-content: flex-end;
	margin-left: auto;
	color: #1f1f1f;
	font-family: "Roboto Mono", monospace;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .015em;
	line-height: 1;
	text-transform: uppercase;
	white-space: nowrap;
}

.core-play-event-open > span {
	position: relative;
	display: inline-block;
	padding-bottom: 2px;
	line-height: 1.2;
	transition: transform 200ms ease;
}

.core-play-event-open > span::after {
	content: "";
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	height: 1px;
	background: currentColor;
	transform: scaleX(0);
	transform-origin: right center;
	transition: transform 220ms ease;
}

.core-play-event-open svg {
	width: 0;
	height: 14px;
	margin-left: 0;
	fill: currentColor;
	opacity: 0;
	transform: translateX(-5px);
	transition:
		width 200ms ease,
		margin-left 200ms ease,
		opacity 160ms ease,
		transform 200ms ease;
}

.core-play-upcoming-event:hover .core-play-event-open > span,
.core-play-upcoming-event:focus-visible .core-play-event-open > span,
.core-play-past-event:hover .core-play-event-open > span,
.core-play-past-event:focus-visible .core-play-event-open > span {
	transform: translateX(-4px);
}

.core-play-upcoming-event:hover .core-play-event-open > span::after,
.core-play-upcoming-event:focus-visible .core-play-event-open > span::after,
.core-play-past-event:hover .core-play-event-open > span::after,
.core-play-past-event:focus-visible .core-play-event-open > span::after {
	transform: scaleX(1);
	transform-origin: left center;
}

.core-play-upcoming-event:hover .core-play-event-open svg,
.core-play-upcoming-event:focus-visible .core-play-event-open svg,
.core-play-past-event:hover .core-play-event-open svg,
.core-play-past-event:focus-visible .core-play-event-open svg {
	width: 14px;
	margin-left: 4px;
	opacity: 1;
	transform: translateX(0);
}

.core-play-events-empty {
	padding: 24px clamp(20px, 2.8vw, 40px);
	color: #666;
	font-family: "Inter Tight", Arial, sans-serif;
	font-size: 16px;
	line-height: 1.4;
}

.core-play-past-events-actions {
	display: flex;
	flex-direction: column;
	align-items: center;
	padding: 12px 20px 16px;
	border-top: 1px solid rgba(0,0,0,.08);
}

.core-play-past-load {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 38px;
	padding: 0 16px;
	border: 1px solid #222;
	border-radius: 999px;
	background: #fff;
	color: #222;
	font-family: "Roboto Mono", monospace;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .055em;
	cursor: pointer;
	transition: background-color .18s ease, color .18s ease;
}

.core-play-past-load:hover,
.core-play-past-load:focus-visible {
	background: #222;
	color: #fff;
	outline: 0;
}

.core-play-past-load:disabled {
	opacity: .45;
	cursor: wait;
}

.core-play-past-feedback {
	margin: 8px 0 0;
	color: #666;
	font-size: 14px;
	text-align: center;
}

@media (max-width: 980px) {
	.core-play-upcoming-event {
		grid-template-columns: auto auto minmax(0, 1fr) auto;
	}

	.core-play-upcoming-event .core-play-event-status {
		grid-column: 3;
		justify-self: start;
	}

	.core-play-upcoming-event .core-play-event-open {
		grid-column: 4;
		grid-row: 1 / span 2;
	}

	.core-play-past-event {
		grid-template-columns: 116px 56px minmax(0, 1fr) auto;
	}

	.core-play-past-event .core-play-event-status {
		grid-column: 3;
		justify-self: start;
	}

	.core-play-past-event .core-play-event-open {
		grid-column: 4;
		grid-row: 1 / span 2;
	}
}

@media (max-width: 700px) {
	.core-play-events-section-head {
		align-items: flex-start;
		flex-direction: column;
		gap: 4px;
	}

	.core-play-upcoming-event {
		grid-template-columns: auto auto minmax(0, 1fr);
		gap: 10px;
		padding: 12px 18px;
	}

	.core-play-upcoming-event .core-play-event-location {
		grid-column: 1 / -1;
	}

	.core-play-upcoming-event .core-play-event-status {
		grid-column: 1 / span 2;
	}

	.core-play-upcoming-event .core-play-event-open {
		grid-column: 3;
		grid-row: auto;
	}

	.core-play-past-event {
		grid-template-columns: 1fr auto;
		gap: 5px 12px;
		padding: 12px 18px;
	}

	.core-play-past-event-date {
		grid-column: 1;
	}

	.core-play-past-event-time {
		grid-column: 2;
		text-align: right;
	}

	.core-play-past-event-location {
		grid-column: 1 / -1;
	}

	.core-play-past-event .core-play-event-status {
		grid-column: 1;
		justify-self: start;
	}

	.core-play-past-event .core-play-event-open {
		grid-column: 2;
		grid-row: auto;
	}
}

@media (max-width: 520px) {
	.core-play-upcoming-event {
		grid-template-columns: 1fr 1fr;
	}

	.core-play-event-date-chip,
	.core-play-event-time-chip {
		width: 100%;
	}

	.core-play-upcoming-event .core-play-event-location {
		grid-column: 1 / -1;
	}

	.core-play-upcoming-event .core-play-event-status {
		grid-column: 1;
	}

	.core-play-upcoming-event .core-play-event-open {
		grid-column: 2;
		justify-self: end;
		font-size: 11px;
	}

	.core-play-past-event .core-play-event-open {
		font-size: 11px;
	}
}

/* =========================================================
 * 4.5.1 — tablas unificadas de actuaciones
 * ========================================================= */

.core-play-performances {
	margin-top: var(--core-gap);
}

.core-play-events-section:first-child {
	margin-top: 0;
}

.core-play-events-section-head {
	justify-content: flex-start;
	min-height: 54px;
}

.core-play-events-section-head h3 {
	font-size: 15px;
	font-weight: 600;
}

/* Las tablas de actuaciones programadas y pasadas comparten formato. */
.core-play-upcoming-events,
.core-play-past-events {
	display: grid;
}

.core-play-event-row {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto auto auto;
	gap: 14px;
	align-items: center;
	min-height: 58px;
	padding: 8px clamp(20px, 2.8vw, 40px);
	border-top: 1px solid rgba(0,0,0,.08);
	background: #fff;
	color: inherit;
	text-decoration: none;
	transition: background-color .18s ease;
}

.core-play-event-row:first-child {
	border-top: 0;
}

.core-play-event-row:hover,
.core-play-event-row:focus-visible {
	background: #f7f7f7;
	color: inherit;
	text-decoration: none;
	outline: 0;
}

/* Fecha y hora compactas y próximas entre sí. */
.core-play-event-when {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	min-width: 0;
	white-space: nowrap;
}

.core-play-event-date,
.core-play-event-time {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	color: #3b3b3b;
	font-family: "Roboto Mono", monospace;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .02em;
	line-height: 1;
	white-space: nowrap;
}

.core-play-event-date svg,
.core-play-event-time svg {
	display: block;
	flex: 0 0 auto;
	width: 13px;
	height: 13px;
	fill: currentColor;
}

.core-play-event-calendar-icon {
	width: 14px !important;
	height: 14px !important;
}

/* Espacio, dirección y localidad en una sola línea. */
.core-play-event-location {
	display: block;
	min-width: 0;
	overflow: hidden;
	color: #666;
	font-family: "Inter Tight", Arial, sans-serif;
	font-size: 15px;
	font-weight: 400;
	line-height: 1.2;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.core-play-event-location strong {
	color: #252525;
	font-size: 16px;
	font-weight: 600;
}

.core-play-event-location > span {
	color: #666;
	font-size: 15px;
	font-weight: 400;
}

/* Programa a la derecha con su color característico. */
.core-play-event-program {
	display: inline-flex;
	align-items: center;
	justify-content: flex-end;
	gap: 7px;
	max-width: 260px;
	color: #555;
	font-family: "Roboto Mono", monospace;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .035em;
	line-height: 1.15;
	text-align: right;
	text-transform: uppercase;
	white-space: nowrap;
}

.core-play-event-program.has-color {
	color: var(--core-play-program-color);
}

.core-play-event-program > span:last-child {
	overflow: hidden;
	text-overflow: ellipsis;
}

.core-play-event-program-dot {
	display: block;
	width: 9px;
	height: 9px;
	flex: 0 0 9px;
	border-radius: 50%;
	background: var(--core-play-program-color, #777);
}

/* Estado editorial. */
.core-play-event-status {
	justify-self: end;
}

/* Solo flechas: no hay texto de CTA. */
.core-play-event-open {
	display: inline-flex;
	flex: 0 0 0;
	align-items: center;
	justify-content: flex-end;
	width: 0;
	margin-left: 0;
	overflow: visible;
	color: #1f1f1f;
}

.core-play-event-open svg {
	display: block;
	width: 0;
	height: 14px;
	margin-left: 0;
	fill: currentColor;
	opacity: 0;
	transform: translateX(-5px);
	transition:
		width 200ms ease,
		opacity 160ms ease,
		transform 200ms ease;
}

.core-play-event-row:hover .core-play-event-open svg,
.core-play-event-row:focus-visible .core-play-event-open svg {
	width: 14px;
	opacity: 1;
	transform: translateX(0);
}

/* Reorganización progresiva manteniendo el mismo formato en ambas tablas. */
@media (max-width: 1080px) {
	.core-play-event-row {
		grid-template-columns: auto minmax(0, 1fr) auto auto;
	}

	.core-play-event-status {
		grid-column: 2;
		justify-self: start;
	}

	.core-play-event-program {
		grid-column: 3;
		grid-row: 1 / span 2;
	}

	.core-play-event-open {
		grid-column: 4;
		grid-row: 1 / span 2;
	}
}

@media (max-width: 760px) {
	.core-play-event-row {
		grid-template-columns: minmax(0, 1fr) auto;
		gap: 8px 12px;
		padding: 12px 18px;
	}

	.core-play-event-when {
		grid-column: 1 / -1;
		justify-self: start;
	}

	.core-play-event-location {
		grid-column: 1 / -1;
	}

	.core-play-event-status {
		grid-column: 1;
		justify-self: start;
	}

	.core-play-event-program {
		grid-column: 1;
		justify-self: start;
		max-width: 100%;
		text-align: left;
	}

	.core-play-event-open {
		grid-column: 2;
		grid-row: 3 / span 2;
		align-self: center;
	}
}

@media (max-width: 520px) {
	.core-play-event-when {
		gap: 8px;
	}

	.core-play-event-date,
	.core-play-event-time {
		font-size: 11px;
	}

	.core-play-event-location strong {
		font-size: 15px;
	}

	.core-play-event-location,
	.core-play-event-location > span {
		font-size: 14px;
	}

	.core-play-event-program {
		font-size: 10px;
	}
}

/* =========================================================
 * 4.5.2 — filas de actuaciones con columnas estables
 * ========================================================= */

/* Solo existe el módulo cuando hay datos; sin estado vacío visual. */
.core-play-performances {
	margin-top: var(--core-gap);
}

/*
 * Columnas base:
 * 1 fecha
 * 2 hora
 * 3 espacio + dirección + localidad
 * 4 estado opcional
 * 5 flecha
 */
.core-play-event-row {
	display: grid;
	grid-template-columns: 158px 78px minmax(0, 1fr) auto 14px;
	gap: 12px;
	align-items: center;
	min-height: 60px;
	padding: 8px clamp(20px, 2.8vw, 40px);
}

.core-play-event-row.has-program {
	grid-template-columns:
		158px
		78px
		minmax(0, 1fr)
		auto
		minmax(230px, 360px)
		14px;
}

.core-play-event-date {
	grid-column: 1;
}

.core-play-event-time {
	grid-column: 2;
}

.core-play-event-location {
	grid-column: 3;
}

.core-play-event-status {
	grid-column: 4;
	justify-self: end;
}

.core-play-event-program {
	grid-column: 5;
	justify-self: end;
}

.core-play-event-open {
	grid-column: 5;
}

.core-play-event-row.has-program .core-play-event-open {
	grid-column: 6;
}

/* Fecha y hora: columnas fijas, 13px, fecha en mayúsculas. */
.core-play-event-date,
.core-play-event-time {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-width: 0;
	color: #3b3b3b;
	font-family: "Roboto Mono", monospace;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .015em;
	line-height: 1;
	white-space: nowrap;
}

.core-play-event-date {
	text-transform: uppercase;
}

.core-play-event-date svg,
.core-play-event-time svg {
	display: block;
	width: 13px;
	height: 13px;
	flex: 0 0 13px;
	fill: currentColor;
}

.core-play-event-calendar-icon {
	width: 14px !important;
	height: 14px !important;
	flex-basis: 14px !important;
}

/* Ubicación completa en una línea en escritorio. */
.core-play-event-location {
	display: block;
	min-width: 0;
	overflow: hidden;
	color: #666;
	font-family: "Inter Tight", Arial, sans-serif;
	font-size: 15px;
	font-weight: 400;
	line-height: 1.25;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.core-play-event-location strong {
	color: #252525;
	font-size: 16px;
	font-weight: 600;
}

.core-play-event-location > span {
	color: #666;
	font-size: 15px;
	font-weight: 400;
}

/*
 * Programa completo:
 * - mayúsculas
 * - 13px
 * - sin elipsis
 * - sin recorte
 */
.core-play-event-program {
	display: inline-flex;
	align-items: center;
	justify-content: flex-end;
	gap: 8px;
	max-width: none;
	overflow: visible;
	color: #555;
	font-family: "Roboto Mono", monospace;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .025em;
	line-height: 1.2;
	text-align: right;
	text-transform: uppercase;
	white-space: normal;
}

.core-play-event-program > span:last-child {
	overflow: visible;
	text-overflow: clip;
	white-space: normal;
}

.core-play-event-program.has-color {
	color: var(--core-play-program-color);
}

.core-play-event-program-dot {
	width: 10px;
	height: 10px;
	flex: 0 0 10px;
}

/*
 * Flecha: se reservan 14px reales.
 * Antes el contenedor tenía width:0 y podía quedar recortado.
 */
.core-play-event-open,
.core-play-event-row.has-program .core-play-event-open {
	display: inline-flex;
	width: 14px;
	height: 14px;
	flex: 0 0 14px;
	align-items: center;
	justify-content: flex-end;
	margin-left: 0;
	overflow: visible;
	justify-self: end;
}

.core-play-event-open svg {
	display: block;
	width: 14px;
	height: 14px;
	margin: 0;
	fill: currentColor;
	opacity: 0;
	transform: translateX(-5px);
	transition:
		opacity 160ms ease,
		transform 200ms ease;
}

.core-play-event-row:hover .core-play-event-open svg,
.core-play-event-row:focus-visible .core-play-event-open svg {
	width: 14px;
	opacity: 1;
	transform: translateX(0);
}

/* Tablet: mantiene columnas de fecha/hora antes de ubicación. */
@media (max-width: 1180px) {
	.core-play-event-row,
	.core-play-event-row.has-program {
		grid-template-columns:
			150px
			74px
			minmax(0, 1fr)
			14px;
		gap: 10px;
	}

	.core-play-event-date {
		grid-column: 1;
	}

	.core-play-event-time {
		grid-column: 2;
	}

	.core-play-event-location {
		grid-column: 3;
	}

	.core-play-event-status {
		grid-column: 3;
		justify-self: start;
		margin-top: 4px;
	}

	.core-play-event-program {
		grid-column: 1 / 4;
		grid-row: 2;
		justify-self: end;
		max-width: 100%;
		text-align: right;
	}

	.core-play-event-open,
	.core-play-event-row.has-program .core-play-event-open {
		grid-column: 4;
		grid-row: 1 / span 2;
		align-self: center;
	}
}

/* Móvil: columnas lógicas preservadas, pero con saltos controlados. */
@media (max-width: 760px) {
	.core-play-event-row,
	.core-play-event-row.has-program {
		grid-template-columns: minmax(0, 1fr) 14px;
		gap: 8px 12px;
		padding: 12px 18px;
	}

	.core-play-event-date {
		grid-column: 1;
		grid-row: 1;
	}

	.core-play-event-time {
		grid-column: 1;
		grid-row: 2;
	}

	.core-play-event-location {
		grid-column: 1;
		grid-row: 3;
		white-space: normal;
		overflow: visible;
		text-overflow: clip;
	}

	.core-play-event-status {
		grid-column: 1;
		grid-row: 4;
		justify-self: start;
	}

	.core-play-event-program {
		grid-column: 1;
		grid-row: 5;
		justify-self: start;
		text-align: left;
	}

	.core-play-event-open,
	.core-play-event-row.has-program .core-play-event-open {
		grid-column: 2;
		grid-row: 1 / span 5;
		align-self: center;
	}
}

@media (max-width: 520px) {
	.core-play-event-date,
	.core-play-event-time {
		font-size: 12px;
	}

	.core-play-event-program {
		font-size: 12px;
	}
}

/* =========================================================
 * 4.5.3 — ajuste de columnas y composición de ficha
 * ========================================================= */

/* Fecha y hora más próximas. */
.core-play-event-row {
	grid-template-columns: 132px 72px minmax(0, 1fr) auto 14px;
	gap: 10px;
}

.core-play-event-row.has-program {
	grid-template-columns:
		132px
		72px
		minmax(0, 1fr)
		auto
		minmax(230px, 360px)
		14px;
	gap: 10px;
}

/*
 * La ficha pasa a dos columnas reales:
 * izquierda: cartel + fotografías
 * derecha: sinopsis + elenco + equipo + actuaciones
 */
.core-play-body-grid {
	align-items: start;
}

.core-play-poster-column {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--core-gap);
	align-content: start;
	min-width: 0;
	height: auto;
}

.core-play-poster-module {
	width: 100%;
	height: auto;
	min-height: 0;
}

.core-play-poster-gallery {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--core-gap);
	margin: 0;
	padding: 0;
}

.core-play-poster-gallery .core-play-gallery-image {
	width: 100%;
	margin: 0;
}

.core-play-content-column > .core-play-performances {
	display: grid;
	gap: var(--core-gap);
	margin: 0;
}

.core-play-content-column > .core-play-performances .core-play-events-section {
	margin: 0;
}

/* En tablet, la galería aprovecha el ancho bajo el cartel. */
@media (max-width: 980px) {
	.core-play-poster-gallery {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

/* Ajuste equivalente de fecha/hora en el breakpoint intermedio. */
@media (max-width: 1180px) and (min-width: 761px) {
	.core-play-event-row,
	.core-play-event-row.has-program {
		grid-template-columns:
			132px
			72px
			minmax(0, 1fr)
			14px;
		gap: 10px;
	}
}

@media (max-width: 620px) {
	.core-play-poster-gallery {
		grid-template-columns: 1fr;
	}
}

/* =========================================================
 * 4.5.4 — columna de cartel vertical + actuaciones 100% ancho
 * ========================================================= */

/*
 * Columna izquierda:
 * cartel
 * foto 1
 * foto 2
 * foto 3
 *
 * Siempre una debajo de otra, también en tablet.
 */
.core-play-poster-column {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--core-gap);
	align-content: start;
	min-width: 0;
	height: auto;
}

.core-play-poster-gallery {
	display: grid;
	grid-template-columns: minmax(0, 1fr) !important;
	gap: var(--core-gap);
	margin: 0;
	padding: 0;
}

.core-play-poster-gallery .core-play-gallery-image {
	display: block;
	width: 100%;
	height: auto;
	margin: 0;
}

/*
 * Actuaciones fuera de la columna derecha:
 * ocupan todo el ancho disponible bajo el bloque principal.
 */
.core-play-performances {
	width: 100%;
	max-width: none;
	margin-top: var(--core-gap);
}

.core-play-content-column > .core-play-performances {
	display: none;
}

/*
 * Columna de fecha reducida a 120px.
 * Se mantiene hora a 72px.
 */
.core-play-event-row {
	grid-template-columns: 120px 72px minmax(0, 1fr) auto 14px;
	gap: 10px;
}

.core-play-event-row.has-program {
	grid-template-columns:
		120px
		72px
		minmax(0, 1fr)
		auto
		minmax(230px, 360px)
		14px;
	gap: 10px;
}

@media (max-width: 1180px) and (min-width: 761px) {
	.core-play-event-row,
	.core-play-event-row.has-program {
		grid-template-columns:
			120px
			72px
			minmax(0, 1fr)
			14px;
		gap: 10px;
	}
}

/* Anula expresamente la disposición horizontal de fotos heredada. */
@media (max-width: 980px) {
	.core-play-poster-gallery {
		grid-template-columns: minmax(0, 1fr) !important;
	}
}

@media (max-width: 620px) {
	.core-play-poster-gallery {
		grid-template-columns: minmax(0, 1fr) !important;
	}
}

/* =========================================================
 * 4.5.5 — actuaciones unificadas + galería inferior
 * ========================================================= */

/* Cartel vuelve a quedar solo en la columna izquierda. */
.core-play-poster-column {
	display: block;
}

/* Galería final: tres fotos horizontales bajo actuaciones. */
.core-play-gallery-bottom {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--core-gap);
	margin-top: var(--core-gap);
	padding: 0;
}

.core-play-gallery-bottom .core-play-gallery-image {
	display: block;
	width: 100%;
	height: 100%;
	min-height: 0;
	margin: 0;
	object-fit: cover;
}

/* Neutraliza la prueba anterior de galería dentro del cartel. */
.core-play-poster-gallery {
	display: none !important;
}

/* Un único bloque visual para todas las actuaciones. */
.core-play-performances {
	width: 100%;
	max-width: none;
	margin-top: var(--core-gap);
}

.core-play-events-unified {
	overflow: hidden;
	border-radius: var(--core-radius);
	background: #fff;
}

/*
 * Cada tramo usa una columna lateral izquierda:
 * PROGRAMADAS | filas
 * PASADAS     | filas
 */
.core-play-events-group {
	display: grid;
	grid-template-columns: 150px minmax(0, 1fr);
	align-items: stretch;
}

.core-play-events-group + .core-play-events-group {
	border-top: 1px solid rgba(0,0,0,.12);
}

.core-play-events-group-label {
	display: flex;
	align-items: flex-start;
	justify-content: flex-start;
	padding: 20px 18px;
	border-right: 1px solid rgba(0,0,0,.10);
	background: #f5f5f5;
}

.core-play-events-group-label span {
	color: #292929;
	font-family: "Roboto Mono", monospace;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .045em;
	line-height: 1.2;
	text-transform: uppercase;
	white-space: nowrap;
}

.core-play-events-group-content {
	min-width: 0;
}

/* Dentro del bloque unificado no hay tarjetas/headers independientes. */
.core-play-events-section {
	margin: 0;
	border-radius: 0;
	background: transparent;
}

.core-play-events-section-head {
	display: none;
}

.core-play-upcoming-events,
.core-play-past-events {
	display: grid;
}

/*
 * Fecha mantiene 120px, tal como solicitado.
 * Hora 72px.
 */
.core-play-event-row {
	grid-template-columns: 120px 72px minmax(0, 1fr) auto 14px;
	gap: 10px;
}

.core-play-event-row.has-program {
	grid-template-columns:
		120px
		72px
		minmax(0, 1fr)
		auto
		minmax(230px, 360px)
		14px;
	gap: 10px;
}

/* El primer evento de cada tramo no necesita borde superior. */
.core-play-events-group-content .core-play-event-row:first-child {
	border-top: 0;
}

/* Cargar más pertenece visualmente a la columna de contenido. */
.core-play-events-group-content .core-play-past-events-actions {
	margin: 0;
	border-top: 1px solid rgba(0,0,0,.08);
	background: #fff;
}

/* Tablet: mantiene la columna lateral, más compacta. */
@media (max-width: 1180px) and (min-width: 761px) {
	.core-play-events-group {
		grid-template-columns: 126px minmax(0, 1fr);
	}

	.core-play-event-row,
	.core-play-event-row.has-program {
		grid-template-columns:
			120px
			72px
			minmax(0, 1fr)
			14px;
		gap: 10px;
	}
}

/* En móvil el rótulo pasa a cabecera del tramo. */
@media (max-width: 760px) {
	.core-play-events-group {
		grid-template-columns: minmax(0, 1fr);
	}

	.core-play-events-group-label {
		padding: 12px 18px;
		border-right: 0;
		border-bottom: 1px solid rgba(0,0,0,.10);
	}

	.core-play-gallery-bottom {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* Entre 761 y 980, la galería sigue horizontal en tres columnas. */
@media (min-width: 761px) and (max-width: 980px) {
	.core-play-gallery-bottom {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

/* =========================================================
 * 4.5.6 — altura de cartel + rótulos + separador HOY
 * ========================================================= */

/*
 * Recupera el comportamiento original:
 * la columna del cartel se estira hasta el final de la columna
 * de contenido, incluyendo Equipo técnico y artístico.
 */
.core-play-body-grid {
	align-items: stretch;
}

.core-play-poster-column {
	display: flex;
	min-width: 0;
	height: 100%;
}

.core-play-poster-module {
	width: 100%;
	height: 100%;
	min-height: 100%;
}

/* Columna lateral más ancha para el rótulo completo. */
.core-play-events-group {
	grid-template-columns: 240px minmax(0, 1fr);
}

.core-play-events-group-label {
	padding: 20px 22px;
}

.core-play-events-group-label span {
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .04em;
	white-space: normal;
}

/*
 * Separador temporal entre futuras y pasadas.
 * Solo existe cuando ambos tramos contienen datos.
 */
.core-play-events-today-separator {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
	gap: 14px;
	align-items: center;
	min-height: 54px;
	padding: 0 22px;
	border-top: 2px solid #222;
	border-bottom: 2px solid #222;
	background: #ededed;
}

.core-play-events-today-separator > span {
	display: block;
	height: 1px;
	background: #222;
}

.core-play-events-today-separator strong {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 30px;
	padding: 0 14px;
	border-radius: 999px;
	background: #222;
	color: #fff;
	font-family: "Roboto Mono", monospace;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .08em;
	line-height: 1;
	text-transform: uppercase;
	white-space: nowrap;
}

/* Tablet: sigue siendo más ancha que antes. */
@media (max-width: 1180px) and (min-width: 761px) {
	.core-play-events-group {
		grid-template-columns: 220px minmax(0, 1fr);
	}
}

/* Al apilarse la ficha deja de tener sentido forzar alturas iguales. */
@media (max-width: 980px) {
	.core-play-poster-column,
	.core-play-poster-module {
		height: auto;
		min-height: 0;
	}
}

/* Móvil: el rótulo vuelve a cabecera, como ya estaba previsto. */
@media (max-width: 760px) {
	.core-play-events-group {
		grid-template-columns: minmax(0, 1fr);
	}

	.core-play-events-today-separator {
		min-height: 48px;
		padding: 0 18px;
	}
}

/* =========================================================
 * 4.5.7 — línea superior derivada del cartel
 * ========================================================= */

/*
 * Mismo grosor que el border-top de PROGRAMACIÓN en Programas:
 * 4px exactos.
 *
 * La línea toma una banda cromática del propio cartel,
 * aproximadamente a media altura, con blur muy ligero.
 */
.core-play-events-unified {
	position: relative;
	padding-top: 4px;
	overflow: hidden;
}

.core-play-events-unified::before {
	content: "";
	position: absolute;
	z-index: 2;
	top: 0;
	right: 0;
	left: 0;
	height: 4px;
	background-image: var(--core-poster-image);
	background-repeat: no-repeat;
	background-position: center 50%;
	background-size: cover;
	filter: blur(1px) saturate(1.12);
	transform: scale(1.03);
	transform-origin: center center;
	pointer-events: none;
}



/* =========================================================
 * 4.5.8 — actuaciones editoriales, sin columna lateral
 * ========================================================= */

.core-play-events-group,
.core-play-events-group.is-upcoming,
.core-play-events-group.is-past {
	display: block;
}

.core-play-events-group + .core-play-events-group {
	border-top: 1px solid rgba(0,0,0,.12);
}

.core-play-events-group-label {
	display: flex;
	align-items: center;
	width: 100%;
	min-height: 50px;
	padding: 12px 22px;
	border-right: 0;
	border-bottom: 1px solid rgba(0,0,0,.10);
	background: #f2f2f2;
}

.core-play-events-group-label span {
	color: #242424;
	font-family: "Roboto Mono", monospace;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .05em;
	line-height: 1.2;
	text-transform: uppercase;
	white-space: normal;
}

.core-play-events-group.is-past .core-play-events-group-label {
	border-top: 2px solid #2a2a2a;
	background: #ececec;
}

.core-play-events-today-separator {
	display: none !important;
}

.core-play-events-unified {
	position: relative;
	padding-top: 4px;
	overflow: hidden;
}

.core-play-events-unified::before {
	content: "";
	position: absolute;
	z-index: 3;
	top: -4px;
	right: -10px;
	left: -10px;
	height: 12px;
	background-image: var(--core-poster-image);
	background-repeat: no-repeat;
	background-position: center 50%;
	background-size: cover;
	filter: blur(3px) saturate(1.10);
	transform: scale(1.04);
	transform-origin: center center;
	pointer-events: none;
}

.core-play-events-unified > * {
	position: relative;
	z-index: 1;
}

@media (max-width: 1180px) and (min-width: 761px) {
	.core-play-events-group {
		display: block;
	}
}

@media (max-width: 760px) {
	.core-play-events-group {
		display: block;
	}

	.core-play-events-group-label {
		padding: 12px 18px;
	}
}


/* =========================================================
 * 4.5.9 — navegador de actuaciones
 * ========================================================= */

.core-play-events-browser-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 18px;
	min-height: 66px;
	padding: 14px 22px;
	border-bottom: 1px solid rgba(0,0,0,.10);
	background: #fff;
}

.core-play-events-browser-head h3 {
	margin: 0;
	color: #202020;
	font-family: "Inter Tight", Arial, sans-serif;
	font-size: clamp(21px, 1.7vw, 27px);
	font-weight: 600;
	letter-spacing: 0;
	line-height: 1.05;
	text-transform: none;
}

.core-play-events-browser-controls {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 14px;
	min-width: 0;
}

.core-play-events-mode-selector {
	display: inline-flex;
	align-items: center;
	padding: 3px;
	border: 1px solid rgba(0,0,0,.14);
	border-radius: 8px;
	background: #f2f2f2;
}

.core-play-events-mode {
	min-height: 30px;
	padding: 0 11px;
	border: 0;
	border-radius: 6px;
	background: transparent;
	color: #666;
	font-family: "Roboto Mono", monospace;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .045em;
	cursor: pointer;
	transition:
		background-color 160ms ease,
		color 160ms ease;
}

.core-play-events-mode:hover,
.core-play-events-mode:focus-visible {
	color: #222;
	outline: 0;
}

.core-play-events-mode.is-active {
	background: #222;
	color: #fff;
}

.core-play-events-year-selector {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	min-width: 0;
}

.core-play-events-year {
	position: relative;
	padding: 4px 0 5px;
	border: 0;
	background: transparent;
	color: #777;
	font-family: "Roboto Mono", monospace;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .02em;
	cursor: pointer;
	white-space: nowrap;
}

.core-play-events-year::after {
	content: "";
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	height: 1px;
	background: currentColor;
	transform: scaleX(0);
	transform-origin: right center;
	transition: transform 180ms ease;
}

.core-play-events-year:hover,
.core-play-events-year:focus-visible,
.core-play-events-year.is-active {
	color: #222;
	outline: 0;
}

.core-play-events-year.is-active::after,
.core-play-events-year:hover::after,
.core-play-events-year:focus-visible::after {
	transform: scaleX(1);
	transform-origin: left center;
}

.core-play-events-panel {
	min-width: 0;
	background: #fff;
}

.core-play-events-panel[hidden],
.core-play-events-year-selector[hidden] {
	display: none !important;
}

/* Neutraliza la antigua estructura programadas/pasadas por tramos. */
.core-play-events-group,
.core-play-events-group.is-upcoming,
.core-play-events-group.is-past,
.core-play-events-group-label,
.core-play-events-today-separator {
	display: none !important;
}

.core-play-past-feedback {
	padding: 10px 22px 14px;
}

@media (max-width: 900px) {
	.core-play-events-browser-head {
		align-items: flex-start;
		flex-direction: column;
	}

	.core-play-events-browser-controls {
		width: 100%;
		justify-content: space-between;
		flex-wrap: wrap;
	}
}

@media (max-width: 560px) {
	.core-play-events-browser-head {
		padding: 14px 18px;
	}

	.core-play-events-browser-controls {
		align-items: flex-start;
		flex-direction: column;
		gap: 10px;
	}

	.core-play-events-year-selector {
		flex-wrap: wrap;
	}
}

/* =========================================================
 * 4.5.10 — cabecera de actuaciones y selector editorial
 * ========================================================= */

/* Calendario ligeramente mayor que reloj, para ganar legibilidad. */
.core-play-event-calendar-icon {
	width: 17px !important;
	height: 17px !important;
	flex-basis: 17px !important;
}

/*
 * Cabecera sin borde:
 * fondo derivado del cartel, difuminado y suavizado.
 * Se mantiene el contenido por encima mediante z-index.
 */
.core-play-events-browser-head {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	border-bottom: 0;
	background: rgba(255,255,255,.90);
}

.core-play-events-browser-head::before {
	content: "";
	position: absolute;
	z-index: -2;
	top: -24px;
	right: -24px;
	bottom: -24px;
	left: -24px;
	background-image: var(--core-poster-image);
	background-repeat: no-repeat;
	background-position: center 50%;
	background-size: cover;
	filter: blur(18px) saturate(.92);
	transform: scale(1.06);
	opacity: .24;
	pointer-events: none;
}

.core-play-events-browser-head::after {
	content: "";
	position: absolute;
	z-index: -1;
	inset: 0;
	background: rgba(255,255,255,.72);
	pointer-events: none;
}

.core-play-events-browser-head h3 {
	position: relative;
	z-index: 1;
}

/*
 * PROGRAMADAS / ANTERIORES:
 * abandona la píldora segmentada y adopta el lenguaje
 * de enlaces monoespaciados/subrayados de la web.
 */
.core-play-events-mode-selector {
	display: inline-flex;
	align-items: center;
	gap: 16px;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: transparent;
}

.core-play-events-mode {
	position: relative;
	min-height: 0;
	padding: 4px 0 5px;
	border: 0;
	border-radius: 0;
	background: transparent;
	color: #6a6a6a;
	font-family: "Roboto Mono", monospace;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .035em;
	line-height: 1.2;
	cursor: pointer;
	white-space: nowrap;
	transition: color 160ms ease;
}

.core-play-events-mode::after {
	content: "";
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	height: 1px;
	background: currentColor;
	transform: scaleX(0);
	transform-origin: right center;
	transition: transform 180ms ease;
}

.core-play-events-mode:hover,
.core-play-events-mode:focus-visible,
.core-play-events-mode.is-active {
	background: transparent;
	color: #222;
	outline: 0;
}

.core-play-events-mode:hover::after,
.core-play-events-mode:focus-visible::after,
.core-play-events-mode.is-active::after {
	transform: scaleX(1);
	transform-origin: left center;
}

/* Años siguen el mismo lenguaje y quedan visualmente ligados al selector. */
.core-play-events-year-selector {
	gap: 10px;
	padding-left: 14px;
	border-left: 1px solid rgba(0,0,0,.14);
}

/* Evita cualquier borde heredado en la cabecera. */
.core-play-events-browser-head,
.core-play-events-browser-controls,
.core-play-events-mode-selector {
	box-shadow: none;
}

@media (max-width: 560px) {
	.core-play-events-year-selector {
		padding-left: 0;
		border-left: 0;
	}
}

/* =========================================================
 * 4.5.11 — cabecera de actuaciones integrada con el cartel
 * ========================================================= */

/* Se elimina definitivamente la antigua franja superior de 4px. */
.core-play-events-unified {
	padding-top: 0;
}

.core-play-events-unified::before {
	content: none !important;
	display: none !important;
}

/*
 * La cabecera replica el tratamiento cromático del módulo del cartel:
 * capa de cartel difuminada + overlay equivalente a
 * .core-play-poster-module::after.
 */
.core-play-events-browser-head {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	border: 0;
	background: #f1e8e8;
}

.core-play-events-browser-head::before {
	content: "";
	position: absolute;
	inset: -42px;
	z-index: -3;
	background-image: var(--core-poster-image);
	background-position: center;
	background-size: cover;
	filter: blur(30px) brightness(1.38) saturate(.68);
	transform: scale(1.16);
	pointer-events: none;
}

.core-play-events-browser-head::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -2;
	background:
		radial-gradient(
			circle at 35% 12%,
			rgba(255,255,255,.98),
			rgba(255,255,255,.56) 44%,
			rgba(255,255,255,.38)
		),
		rgba(255,255,255,.52);
	backdrop-filter: blur(2px);
	pointer-events: none;
}

.core-play-events-browser-head > * {
	position: relative;
	z-index: 1;
}

/* Título editorial, sin imposición de mayúsculas. */
.core-play-events-browser-head h3 {
	text-transform: none;
}

/*
 * PROGRAMADAS | HISTÓRICO DE ACTUACIONES: 2026 2025...
 * El histórico es una etiqueta fija; solo los años son interactivos.
 */
.core-play-events-browser-controls {
	gap: 0;
}

.core-play-events-history {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	min-width: 0;
}

.core-play-events-history.has-separator {
	margin-left: 16px;
	padding-left: 16px;
	border-left: 1px solid rgba(0,0,0,.18);
}

.core-play-events-history-label {
	color: #4f4f4f;
	font-family: "Roboto Mono", monospace;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .035em;
	line-height: 1.2;
	white-space: nowrap;
}

.core-play-events-year-selector {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	min-width: 0;
	padding-left: 0;
	border-left: 0;
}

.core-play-events-year-selector[hidden] {
	display: inline-flex !important;
}

/* PROGRAMADAS mantiene el lenguaje editorial subrayado de la web. */
.core-play-events-mode-selector {
	gap: 0;
}

@media (max-width: 1080px) {
	.core-play-events-browser-controls {
		align-items: flex-start;
		flex-wrap: wrap;
		gap: 10px 0;
	}

	.core-play-events-history {
		flex-wrap: wrap;
	}
}

@media (max-width: 700px) {
	.core-play-events-history.has-separator {
		width: 100%;
		margin-left: 0;
		padding-top: 10px;
		padding-left: 0;
		border-top: 1px solid rgba(0,0,0,.16);
		border-left: 0;
	}

	.core-play-events-history {
		align-items: flex-start;
		flex-direction: column;
		gap: 8px;
	}

	.core-play-events-history-label {
		white-space: normal;
	}
}

/* =========================================================
 * 4.5.12 — tabla de actuaciones y carga por año
 * ========================================================= */

/*
 * Cabecera alineada exactamente con las filas:
 * - título con el icono de calendario
 * - control derecho con el Programa
 */
.core-play-events-browser-head {
	padding: 14px clamp(20px, 2.8vw, 40px);
	border-top: 4px solid #515151;
}

/* Menú algo mayor, manteniendo el lenguaje editorial. */
.core-play-events-mode {
	font-size: 14px;
}

.core-play-events-history-label {
	font-size: 13px;
}

.core-play-events-year {
	font-size: 14px;
}

/*
 * Grid de filas:
 * la flecha deja de ocupar una columna derecha.
 * Vive dentro de la fecha y aparece a su izquierda.
 */
.core-play-event-row {
	grid-template-columns:
		160px
		92px
		minmax(0, 1fr)
		auto;
	gap: 12px;
	min-height: 64px;
	padding: 9px clamp(20px, 2.8vw, 40px);
}

.core-play-event-row.has-program {
	grid-template-columns:
		160px
		92px
		minmax(0, 1fr)
		auto
		minmax(250px, 380px);
}

.core-play-event-date {
	grid-column: 1;
}

.core-play-event-time {
	grid-column: 2;
}

.core-play-event-location {
	grid-column: 3;
}

.core-play-event-status {
	grid-column: 4;
}

.core-play-event-program {
	grid-column: 5;
	justify-self: end;
}

/* Fecha, hora y Programa en la misma escala visual. */
.core-play-event-date,
.core-play-event-time {
	gap: 7px;
	font-size: 15px;
}

.core-play-event-date svg:not(.core-play-event-open svg),
.core-play-event-time svg {
	width: 18px;
	height: 18px;
	flex: 0 0 18px;
}

.core-play-event-calendar-icon {
	width: 18px !important;
	height: 18px !important;
	flex-basis: 18px !important;
}

.core-play-event-program {
	font-size: 15px;
	line-height: 1.22;
}

/* Ubicación ligeramente mayor. */
.core-play-event-location {
	font-size: 16px;
	line-height: 1.28;
}

.core-play-event-location strong {
	font-size: 17px;
}

.core-play-event-location > span {
	font-size: 16px;
}

/*
 * Flecha a la izquierda de la fecha:
 * en reposo no reserva espacio visible.
 * Al hover crece desde 0 a 14px y desplaza calendario/fecha
 * unos píxeles hacia la derecha.
 */
.core-play-event-date .core-play-event-open {
	display: inline-flex;
	width: 0;
	height: 18px;
	flex: 0 0 0;
	align-items: center;
	justify-content: flex-start;
	margin: 0;
	overflow: hidden;
	opacity: 0;
	transition:
		width 200ms ease,
		flex-basis 200ms ease,
		margin-right 200ms ease,
		opacity 160ms ease;
}

.core-play-event-date .core-play-event-open svg {
	display: block;
	width: 14px;
	min-width: 14px;
	height: 14px;
	margin: 0;
	fill: currentColor;
	opacity: 1;
	transform: translateX(-6px);
	transition: transform 200ms ease;
}

.core-play-event-row:hover .core-play-event-date .core-play-event-open,
.core-play-event-row:focus-visible .core-play-event-date .core-play-event-open {
	width: 14px;
	flex-basis: 14px;
	margin-right: 2px;
	opacity: 1;
}

.core-play-event-row:hover .core-play-event-date .core-play-event-open svg,
.core-play-event-row:focus-visible .core-play-event-date .core-play-event-open svg {
	transform: translateX(0);
}

/* Neutraliza todas las antiguas posiciones de flecha a la derecha. */
.core-play-event-row > .core-play-event-open {
	display: none !important;
}

/*
 * Carga por año:
 * mismo patrón visual que el cambio de edición en Programas.
 */
.core-play-events-panel.is-past {
	position: relative;
}

.core-play-events-loading {
	position: absolute;
	z-index: 5;
	inset: 0;
	display: flex;
	align-items: flex-start;
	justify-content: center;
	padding-top: 28px;
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity .18s ease, visibility .18s ease;
}

.core-play-events-panel.is-past.is-loading .core-play-events-loading {
	opacity: 1;
	visibility: visible;
}

.core-play-events-panel.is-past.is-loading .core-play-past-events {
	opacity: .38;
	filter: saturate(.88);
	pointer-events: none;
}

.core-play-events-spinner {
	width: 34px;
	height: 34px;
	border: 3px solid rgba(255,255,255,.65);
	border-top-color: #515151;
	border-radius: 50%;
	background: rgba(255,255,255,.85);
	animation: core-play-events-spin .8s linear infinite;
}

@keyframes core-play-events-spin {
	to { transform: rotate(360deg); }
}

/* Tablet: columnas fecha/hora se conservan y Programa baja a segunda línea. */
@media (max-width: 1180px) and (min-width: 761px) {
	.core-play-event-row,
	.core-play-event-row.has-program {
		grid-template-columns:
			160px
			92px
			minmax(0, 1fr);
		gap: 10px 12px;
	}

	.core-play-event-date {
		grid-column: 1;
	}

	.core-play-event-time {
		grid-column: 2;
	}

	.core-play-event-location {
		grid-column: 3;
	}

	.core-play-event-status {
		grid-column: 3;
		justify-self: start;
		margin-top: 4px;
	}

	.core-play-event-program {
		grid-column: 1 / 4;
		grid-row: 2;
		justify-self: end;
		max-width: 100%;
		text-align: right;
	}
}

/* Móvil: cabecera y filas comparten 18px laterales. */
@media (max-width: 760px) {
	.core-play-events-browser-head {
		padding-right: 18px;
		padding-left: 18px;
	}

	.core-play-event-row,
	.core-play-event-row.has-program {
		grid-template-columns: minmax(0, 1fr);
		gap: 8px;
		padding: 12px 18px;
	}

	.core-play-event-date {
		grid-column: 1;
		grid-row: 1;
	}

	.core-play-event-time {
		grid-column: 1;
		grid-row: 2;
	}

	.core-play-event-location {
		grid-column: 1;
		grid-row: 3;
		white-space: normal;
		overflow: visible;
		text-overflow: clip;
	}

	.core-play-event-status {
		grid-column: 1;
		grid-row: 4;
		justify-self: start;
	}

	.core-play-event-program {
		grid-column: 1;
		grid-row: 5;
		justify-self: start;
		text-align: left;
	}

	.core-play-event-date,
	.core-play-event-time,
	.core-play-event-program {
		font-size: 14px;
	}

	.core-play-event-location,
	.core-play-event-location > span {
		font-size: 15px;
	}

	.core-play-event-location strong {
		font-size: 16px;
	}
}



/* =========================================================
 * 4.5.13 — ajustes catálogo / actuaciones
 * ========================================================= */
.core-play-hero-title-row {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 18px;
}

.core-play-hero-title-row h1 {
	flex: 1 1 auto;
	min-width: 0;
}

.core-play-discontinued-pill {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 6px 12px;
	border-radius: 999px;
	background: rgba(255,255,255,.18);
	border: 1px solid rgba(255,255,255,.26);
	color: #fff;
	font-family: "Roboto Mono", monospace;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .02em;
	line-height: 1.2;
	white-space: nowrap;
	backdrop-filter: blur(10px);
}

.core-play-events-browser-head::before {
	filter: blur(32px) brightness(1.18) saturate(.86);
	opacity: .72;
}

.core-play-events-browser-head::after {
	background:
		radial-gradient(circle at 32% 14%, rgba(255,255,255,.90), rgba(255,255,255,.48) 42%, rgba(255,255,255,.26)),
		rgba(255,255,255,.34);
}

.core-play-event-row,
.core-play-event-row.has-program {
	align-items: center;
}

.core-play-event-date,
.core-play-event-time,
.core-play-event-location,
.core-play-event-location strong,
.core-play-event-location > span,
.core-play-event-program,
.core-play-event-program span {
	white-space: nowrap;
}

.core-play-event-date,
.core-play-event-time,
.core-play-event-program {
	line-height: 1;
}

.core-play-event-location {
	overflow: hidden;
	text-overflow: ellipsis;
}

.core-play-event-location strong,
.core-play-event-location > span {
	display: inline;
}

.core-play-event-row.has-program {
	grid-template-columns: 160px 84px minmax(0, 1fr) minmax(290px, 360px);
}

.core-play-event-row.has-status.has-program {
	grid-template-columns: 160px 84px minmax(0, 1fr) auto minmax(290px, 360px);
}

.core-play-event-row:not(.has-program) {
	grid-template-columns: 160px 84px minmax(0, 1fr) auto;
}


.core-play-event-row.has-program:not(.has-status) .core-play-event-program {
	grid-column: 4;
}

.core-play-event-row.has-status.has-program .core-play-event-program {
	grid-column: 5;
}

.core-play-event-program {
	gap: 9px;
	justify-self: end;
	overflow: hidden;
}

.core-play-event-program span:last-child {
	overflow: hidden;
	text-overflow: ellipsis;
}

.core-play-event-location strong {
	position: relative;
	text-decoration: none;
}

.core-play-event-location strong::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -2px;
	height: 1px;
	background: currentColor;
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform 220ms ease;
}

.core-play-event-row:hover .core-play-event-location strong::after,
.core-play-event-row:focus-visible .core-play-event-location strong::after {
	transform: scaleX(1);
}

@media (max-width: 900px) {
	.core-play-hero-title-row {
		flex-direction: column;
		align-items: flex-start;
		gap: 10px;
	}

	.core-play-discontinued-pill {
		white-space: normal;
	}

	.core-play-events-browser-head {
		padding-right: 18px;
		padding-left: 18px;
	}

	.core-play-events-browser-controls {
		align-items: flex-start;
		flex-wrap: wrap;
		gap: 10px 0;
	}

	.core-play-events-history.has-separator {
		margin-left: 14px;
		padding-left: 14px;
	}

	.core-play-event-row,
	.core-play-event-row.has-program,
	.core-play-event-row.has-status.has-program {
		grid-template-columns: minmax(0, 1fr);
		gap: 8px;
		padding: 12px 18px;
	}

	.core-play-event-date,
	.core-play-event-time,
	.core-play-event-location,
	.core-play-event-status,
	.core-play-event-program {
		grid-column: 1;
	}

	.core-play-event-date { grid-row: 1; }
	.core-play-event-time { grid-row: 2; }
	.core-play-event-location { 
		grid-row: 3;
		white-space: normal;
		overflow: visible;
		text-overflow: clip;
	}
	.core-play-event-status { grid-row: 4; justify-self: start; }
	.core-play-event-program {
		grid-row: 5;
		justify-self: start;
		text-align: left;
		white-space: normal;
	}
	.core-play-event-program span:last-child {
		overflow: visible;
		text-overflow: clip;
	}
	.core-play-event-location strong::after {
		bottom: -1px;
	}
	 .core-play-events-history {
		align-items: flex-start;
		flex-direction: column;
		gap: 8px;
	}
	 .core-play-events-history-label { white-space: normal; }
}


/* =========================================================
 * 4.5.14 — ajuste visual del reloj en actuaciones
 * ========================================================= */

/*
 * El reloj tiene mayor peso visual interno que el calendario.
 * Se reduce a 16px para equilibrar ambos pictogramas.
 */
.core-play-event-time svg {
	width: 16px !important;
	height: 16px !important;
	flex: 0 0 16px !important;
}

/* =========================================================
 * 4.5.15 — descatalogación y consistencia de filas
 * ========================================================= */

/* Aviso de obra descatalogada a ancho completo, antes de los metadatos. */
.core-play-discontinued-notice {
	display: flex;
	align-items: center;
	width: 100%;
	min-height: 52px;
	padding: 13px clamp(20px, 2.8vw, 40px);
	border-left: 4px solid #515151;
	border-radius: var(--core-radius);
	background: #ededed;
	color: #292929;
	font-family: "Roboto Mono", monospace;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .015em;
	line-height: 1.35;
}

/* La pill anterior desaparece definitivamente. */
.core-play-discontinued-pill {
	display: none !important;
}

/*
 * Programa siempre completo y en una sola línea.
 * El espacio disponible se toma de la columna de ubicación,
 * que es la única columna flexible.
 */
.core-play-event-row.has-program:not(.has-status) {
	grid-template-columns: 160px 84px minmax(0, 1fr) max-content;
}

.core-play-event-row.has-status.has-program {
	grid-template-columns: 160px 84px minmax(0, 1fr) auto max-content;
}

.core-play-event-row:not(.has-program) {
	grid-template-columns: 160px 84px minmax(0, 1fr) auto;
}

.core-play-event-row.has-program:not(.has-status) .core-play-event-program {
	grid-column: 4;
}

.core-play-event-row.has-status.has-program .core-play-event-program {
	grid-column: 5;
}

.core-play-event-program,
.core-play-event-program > span,
.core-play-event-program span:last-child {
	max-width: none !important;
	overflow: visible !important;
	text-overflow: clip !important;
	white-space: nowrap !important;
}

/*
 * Alineación estricta de todos los calendarios.
 * Corrige la regla antigua más específica de filas con Programa,
 * que dejaba 14px reservados para la flecha incluso en reposo.
 */
.core-play-event-date {
	gap: 0 !important;
}

.core-play-event-date .core-play-event-calendar-icon {
	margin-right: 7px;
}

.core-play-event-row .core-play-event-date .core-play-event-open,
.core-play-event-row.has-program .core-play-event-date .core-play-event-open,
.core-play-event-row.has-status.has-program .core-play-event-date .core-play-event-open {
	width: 0 !important;
	min-width: 0 !important;
	max-width: 0 !important;
	flex: 0 0 0 !important;
	margin: 0 !important;
	overflow: hidden !important;
	opacity: 0 !important;
}

.core-play-event-row:hover .core-play-event-date .core-play-event-open,
.core-play-event-row:focus-visible .core-play-event-date .core-play-event-open,
.core-play-event-row.has-program:hover .core-play-event-date .core-play-event-open,
.core-play-event-row.has-program:focus-visible .core-play-event-date .core-play-event-open {
	width: 14px !important;
	min-width: 14px !important;
	max-width: 14px !important;
	flex-basis: 14px !important;
	margin-right: 2px !important;
	opacity: 1 !important;
}

/* El espacio escénico gana un subrayado animado de izquierda a derecha. */
.core-play-event-location strong {
	position: relative;text-decoration: none;
	white-space: nowrap;
}

.core-play-event-location strong::after {
	content: "";
	position: absolute;
	right: 0;
	bottom: -2px;
	left: 0;
	height: 1px;
	background: currentColor;
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform 220ms ease;
}

.core-play-event-row:hover .core-play-event-location strong::after,
.core-play-event-row:focus-visible .core-play-event-location strong::after {
	transform: scaleX(1);
}

/* Cada dato individual permanece en una sola línea. */
.core-play-event-date,
.core-play-event-time,
.core-play-event-location,
.core-play-event-location > span,
.core-play-event-program {
	white-space: nowrap !important;
}

@media (max-width: 900px) {
	.core-play-discontinued-notice {
		padding-right: 18px;
		padding-left: 18px;
	}

	.core-play-event-program,
	.core-play-event-program > span,
	.core-play-event-program span:last-child {
		white-space: nowrap !important;
	}

	.core-play-event-location {
		max-width: 100%;
		overflow: hidden !important;
		text-overflow: ellipsis !important;
		white-space: nowrap !important;
	}

	.core-play-event-location strong,
	.core-play-event-location > span {
		white-space: nowrap !important;
	}
}

/* =========================================================
 * 4.5.16 — refinado de actuaciones y descatalogación
 * ========================================================= */

/* Mismo formato visual que .core-event-program-banner. */
.core-play-discontinued-notice {
	display: block;
	width: 100%;
	min-height: 0;
	margin-top: var(--core-gap);
	padding: 28px 24px;
	border: 0;
	border-radius: var(--core-radius);
	background: #cfcfcc;
	color: #111;
	font-family: "Inter Tight", Arial, sans-serif;
	text-align: center;
}

.core-play-discontinued-notice p {
	margin: 0;
	font-size: 2.15rem;
	font-weight: 400;
	line-height: 1.2;
	letter-spacing: .012em;
}

/*
 * Blur de cabecera algo más blanco que en 4.5.15,
 * sin volver al aspecto excesivamente lavado anterior.
 */
.core-play-events-browser-head::before {
	filter: blur(32px) brightness(1.24) saturate(.82);
	opacity: .68;
}

.core-play-events-browser-head::after {
	background:
		radial-gradient(
			circle at 32% 14%,
			rgba(255,255,255,.94),
			rgba(255,255,255,.56) 44%,
			rgba(255,255,255,.34)
		),
		rgba(255,255,255,.44);
}

/* Flecha a la izquierda: aparición más suave y menos brusca. */
.core-play-event-row .core-play-event-date .core-play-event-open,
.core-play-event-row.has-program .core-play-event-date .core-play-event-open,
.core-play-event-row.has-status.has-program .core-play-event-date .core-play-event-open {
	transition:
		width 320ms cubic-bezier(.22,1,.36,1),
		min-width 320ms cubic-bezier(.22,1,.36,1),
		max-width 320ms cubic-bezier(.22,1,.36,1),
		flex-basis 320ms cubic-bezier(.22,1,.36,1),
		margin-right 320ms cubic-bezier(.22,1,.36,1),
		opacity 220ms ease !important;
}

.core-play-event-date .core-play-event-open svg {
	transform: translateX(-7px);
	transition:
		transform 300ms cubic-bezier(.22,1,.36,1),
		opacity 220ms ease !important;
}

.core-play-event-row:hover .core-play-event-date .core-play-event-open svg,
.core-play-event-row:focus-visible .core-play-event-date .core-play-event-open svg {
	transform: translateX(0);
}

/* Retirado el subrayado del espacio escénico. */
.core-play-event-location strong::after {
	content: none !important;
	display: none !important;
}

@media (max-width: 900px) {
	.core-play-discontinued-notice {
		padding: 24px 18px;
	}

	.core-play-discontinued-notice p {
		font-size: clamp(1.45rem, 6vw, 2rem);
	}
}

/* =========================================================
 * 4.5.17 — descatalogación y alineación de ubicación
 * ========================================================= */

.core-play-discontinued-notice {
	margin-bottom: 10px;
}

.core-play-discontinued-notice p {
	font-size: 1.35rem;
	line-height: 1.25;
}

/*
 * El antiguo subrayado dejó el <strong> posicionado de forma
 * relativa. Se restaura la línea base original.
 */
.core-play-event-location {
	line-height: 1.28;
}

.core-play-event-location strong,
.core-play-event-location > span {
	position: static !important;
	top: auto !important;
	bottom: auto !important;
	transform: none !important;
	vertical-align: baseline;}

.core-play-event-location strong::after {
	content: none !important;
	display: none !important;
}

@media (max-width: 900px) {
	.core-play-discontinued-notice p {
		font-size: 1.15rem;
	}
}

/* =========================================================
 * 4.5.18 — ajuste fino de tabla de actuaciones
 * ========================================================= */

.core-play-event-row {
	min-height: 54px;
}

/* Subrayado de años algo más próximo al texto. */
.core-play-events-year {
	padding-bottom: 3px;
}

/* =========================================================
 * 4.5.19 — créditos secundarios y consistencia de actuaciones
 * ========================================================= */

/* Adaptación / ayudantes bajo la persona principal. */
.core-play-fact-secondary {
	display: block;
	margin-top: 5px;
	color: rgba(255,255,255,.82);
	font-family: "Inter Tight", Arial, sans-serif;
	font-size: .82rem;
	font-style: italic;
	font-weight: 400;
	letter-spacing: 0;
	line-height: 1.2;
	text-transform: none;
}

/* Histórico y años comparten exactamente la misma línea base. */
.core-play-events-history,
.core-play-events-year-selector {
	align-items: baseline;
}

.core-play-events-history-label,
.core-play-events-year {
	line-height: 1;
}

.core-play-events-year {
	padding-top: 0;
	padding-bottom: 3px;
}

/*
 * Un único grid de escritorio para TODAS las filas.
 * Fecha, hora y ubicación parten siempre de las mismas verticales,
 * exista o no Programa / estado.
 */
@media (min-width: 901px) {
	.core-play-event-row,
	.core-play-event-row.has-program,
	.core-play-event-row.has-status,
	.core-play-event-row.has-status.has-program,
	.core-play-event-row:not(.has-program) {
		grid-template-columns:
			160px
			84px
			minmax(0, 1fr)
			auto
			max-content;
		gap: 12px;
	}

	.core-play-event-date {
		grid-column: 1;
	}

	.core-play-event-time {
		grid-column: 2;
	}

	.core-play-event-location {
		grid-column: 3;
	}

	.core-play-event-status {
		grid-column: 4;
	}

	.core-play-event-program,
	.core-play-event-row.has-program:not(.has-status) .core-play-event-program,
	.core-play-event-row.has-status.has-program .core-play-event-program {
		grid-column: 5;
		justify-self: end;
	}
}

/* =========================================================
 * 4.6.0 — ajuste final cabecera actuaciones
 * ========================================================= */

.core-play-events-browser-head {
	padding: 14px clamp(20px, 2.8vw, 40px) 12px;
}

/* =========================================================
 * 5.0.3 — actuaciones móvil en tres subfilas
 * ========================================================= */

.core-play-events-history-label-mobile {
	display: none;
}

@media (max-width: 900px) {
	/*
	 * Selector móvil en una sola línea:
	 * PROGRAMADAS | HISTÓRICO 2026 2025...
	 */
	.core-play-events-browser-controls {
		display: flex;
		width: 100%;
		flex-direction: row !important;
		flex-wrap: nowrap !important;
		align-items: baseline !important;
		justify-content: flex-start;
		gap: 0 !important;
		overflow-x: auto;
		overflow-y: hidden;
		scrollbar-width: none;
		white-space: nowrap;
	}

	.core-play-events-browser-controls::-webkit-scrollbar {
		display: none;
	}

	.core-play-events-mode-selector {
		flex: 0 0 auto;
	}

	.core-play-events-history,
	.core-play-events-history.has-separator {
		display: inline-flex;
		width: auto !important;
		min-width: max-content;
		flex: 0 0 auto;
		flex-direction: row !important;
		flex-wrap: nowrap !important;
		align-items: baseline !important;
		gap: 8px !important;
		margin: 0 0 0 12px !important;
		padding: 0 0 0 12px !important;
		border-top: 0 !important;
		border-left: 1px solid rgba(0,0,0,.20) !important;
	}

	.core-play-events-history-label-desktop {
		display: none;
	}

	.core-play-events-history-label-mobile {
		display: inline;
	}

	.core-play-events-history-label {
		flex: 0 0 auto;
		white-space: nowrap !important;
	}

	.core-play-events-year-selector {
		display: inline-flex !important;
		min-width: max-content;
		flex: 0 0 auto;
		flex-direction: row;
		flex-wrap: nowrap !important;
		align-items: baseline;
		gap: 8px;
		padding: 0;
		border: 0;
	}

	/*
	 * Fila:
	 * 1) fecha + hora
	 * 2) espacio + localidad (sin dirección)
	 * 3) Programa, si existe
	 */
	.core-play-event-row,
	.core-play-event-row.has-program,
	.core-play-event-row.has-status,
	.core-play-event-row.has-status.has-program,
	.core-play-event-row:not(.has-program) {
		display: grid;
		grid-template-columns: minmax(0, 1fr) auto;
		grid-template-rows: auto auto auto;
		gap: 7px 12px;
		min-height: 0;
		padding: 12px 18px;
		align-items: center;
	}

	.core-play-event-date {
		grid-column: 1;
		grid-row: 1;
		min-width: 0;
		justify-self: start;
	}

	.core-play-event-time {
		grid-column: 2;
		grid-row: 1;
		justify-self: end;
	}

	.core-play-event-location {
		display: block;
		grid-column: 1 / -1;
		grid-row: 2;
		width: 100%;
		max-width: 100%;
		min-width: 0;
		overflow: hidden !important;
		text-overflow: ellipsis;
		white-space: nowrap !important;
	}

	.core-play-event-location strong,
	.core-play-event-location > span {
		white-space: nowrap !important;
	}

	/* Dirección fuera en móvil; se conserva localidad/provincia. */
	.core-play-event-address {
		display: none !important;
	}

	.core-play-event-locality {
		display: inline !important;
	}

	.core-play-event-status {
		grid-column: 1 / -1;
		grid-row: 3;
		justify-self: start;
	}

	.core-play-event-program,
	.core-play-event-row.has-program:not(.has-status) .core-play-event-program,
	.core-play-event-row.has-status.has-program .core-play-event-program {
		grid-column: 1 / -1;
		grid-row: 3;
		justify-self: start;
		justify-content: flex-start;
		max-width: 100% !important;
		min-width: 0;
		overflow: hidden !important;
		text-align: left;
	}

	.core-play-event-program > span:last-child {
		min-width: 0;
		overflow: hidden !important;
		text-overflow: ellipsis !important;
		white-space: nowrap !important;
	}

	.core-play-event-row.has-status.has-program .core-play-event-status {
		grid-column: 1;
		grid-row: 3;
	}

	.core-play-event-row.has-status.has-program .core-play-event-program {
		grid-column: 2;
		grid-row: 3;
		justify-self: end;
		justify-content: flex-end;
	}

	/* En móvil táctil no reservamos ni animamos la flecha lateral. */
	.core-play-event-row .core-play-event-date .core-play-event-open,
	.core-play-event-row.has-program .core-play-event-date .core-play-event-open,
	.core-play-event-row.has-status.has-program .core-play-event-date .core-play-event-open,
	.core-play-event-row:hover .core-play-event-date .core-play-event-open,
	.core-play-event-row:focus-visible .core-play-event-date .core-play-event-open {
		display: none !important;
		width: 0 !important;
		min-width: 0 !important;
		max-width: 0 !important;
		margin: 0 !important;
		flex-basis: 0 !important;
		opacity: 0 !important;
	}

	.core-play-event-date,
	.core-play-event-time {
		font-size: 14px;
	}

	.core-play-event-location strong {
		font-size: 15px;
	}

	.core-play-event-location > span {
		font-size: 14px;
	}
}

/* =========================================================
 * 5.0.4 — cabecera compacta de fila de actuaciones móvil
 * ========================================================= */

@media (max-width: 900px) {
	.core-play-event-row,
	.core-play-event-row.has-program,
	.core-play-event-row.has-status,
	.core-play-event-row.has-status.has-program,
	.core-play-event-row:not(.has-program) {
		grid-template-columns: max-content max-content minmax(0, 1fr);
		column-gap: 10px;
	}

	.core-play-event-date {
		grid-column: 1;
		grid-row: 1;
		justify-self: start;
	}

	.core-play-event-time {
		grid-column: 2;
		grid-row: 1;
		justify-self: start;
	}

	.core-play-event-location {
		grid-column: 1 / -1;
		grid-row: 2;
	}

	.core-play-event-status {
		grid-column: 1 / -1;
		grid-row: 3;
	}

	.core-play-event-program,
	.core-play-event-row.has-program:not(.has-status) .core-play-event-program,
	.core-play-event-row.has-status.has-program .core-play-event-program {
		grid-column: 1 / -1;
		grid-row: 3;
	}

	.core-play-event-row.has-status.has-program .core-play-event-status {
		grid-column: 1;
		grid-row: 3;
	}

	.core-play-event-row.has-status.has-program .core-play-event-program {
		grid-column: 2 / -1;
		grid-row: 3;
	}
}

/* =========================================================
 * 5.0.4 — separador móvil condicionado a Programadas
 * ========================================================= */

@media (max-width: 900px) {
	.core-play-events-history {
		margin-left: 0 !important;
		padding-left: 0 !important;
		border-left: 0 !important;
	}

	.core-play-events-history.has-separator {
		margin-left: 12px !important;
		padding-left: 12px !important;
		border-left: 1px solid rgba(0,0,0,.20) !important;
	}
}

/* =========================================================
 * 5.0.5 — alineación móvil de fecha/hora y separador histórico
 * ========================================================= */

@media (max-width: 900px) {
	/*
	 * La primera columna deja de ser max-content por fila.
	 * Todas las fechas ocupan exactamente 136px y, por tanto,
	 * todos los relojes parten de la misma vertical aunque la fila
	 * tenga Programa o no.
	 */
	.core-play-event-row,
	.core-play-event-row.has-program,
	.core-play-event-row.has-status,
	.core-play-event-row.has-status.has-program,
	.core-play-event-row:not(.has-program) {
		grid-template-columns: 136px max-content minmax(0, 1fr);
		column-gap: 8px;
	}

	.core-play-event-date {
		width: 136px;
		min-width: 136px;
		max-width: 136px;
	}

	.core-play-event-time {
		justify-self: start;
	}

	/* 16px -> 12px: reducción del 25%. */
	.core-play-event-time svg {
		width: 12px !important;
		height: 12px !important;
		flex: 0 0 12px !important;
	}

	.core-play-event-time {
		gap: 5px;
	}

	/*
	 * Separador explícito como pseudo-elemento.
	 * Es más robusto que depender del border-left del contenedor
	 * ante las reglas responsive históricas.
	 */
	.core-play-events-history {
		margin-left: 0 !important;
		padding-left: 0 !important;
		border-left: 0 !important;
	}

	.core-play-events-history.has-separator {
		margin-left: 10px !important;
		padding-left: 0 !important;
		border-left: 0 !important;
	}

	.core-play-events-history.has-separator::before {
		content: "";
		display: block;
		width: 1px;
		height: 18px;
		flex: 0 0 1px;
		align-self: center;
		margin-right: 10px;
		background: rgba(0,0,0,.34);
	}
}

/* =========================================================
 * 5.0.6 — grid móvil único y separador corregido
 * ========================================================= */

@media (max-width: 900px) {
	/*
	 * Misma distribución exacta para TODAS las variantes.
	 * Se incluyen deliberadamente los selectores más específicos
	 * usados por reglas históricas para que ninguna fila con Programa
	 * pueda heredar una primera columna distinta.
	 */
	.core-play-event-row,
	.core-play-event-row.has-program,
	.core-play-event-row.has-status,
	.core-play-event-row.has-status.has-program,
	.core-play-event-row:not(.has-program),
	.core-play-event-row.has-program:not(.has-status) {
		grid-template-columns: 132px 72px minmax(0, 1fr) !important;
		grid-template-rows: auto auto auto !important;
		column-gap: 8px !important;
		row-gap: 7px !important;
	}

	.core-play-event-date,
	.core-play-event-row.has-program .core-play-event-date,
	.core-play-event-row.has-program:not(.has-status) .core-play-event-date,
	.core-play-event-row.has-status.has-program .core-play-event-date {
		grid-column: 1 !important;
		grid-row: 1 !important;
		width: 132px !important;
		min-width: 132px !important;
		max-width: 132px !important;
		justify-self: start !important;
	}

	.core-play-event-time,
	.core-play-event-row.has-program .core-play-event-time,
	.core-play-event-row.has-program:not(.has-status) .core-play-event-time,
	.core-play-event-row.has-status.has-program .core-play-event-time {
		grid-column: 2 !important;
		grid-row: 1 !important;
		width: 72px !important;
		min-width: 72px !important;
		max-width: 72px !important;
		justify-self: start !important;
	}

	.core-play-event-location,
	.core-play-event-row.has-program .core-play-event-location,
	.core-play-event-row.has-program:not(.has-status) .core-play-event-location,
	.core-play-event-row.has-status.has-program .core-play-event-location {
		grid-column: 1 / -1 !important;
		grid-row: 2 !important;
	}

	.core-play-event-program,
	.core-play-event-row.has-program:not(.has-status) .core-play-event-program,
	.core-play-event-row.has-status.has-program .core-play-event-program {
		grid-row: 3 !important;
	}

	/* Reloj móvil reducido y homogéneo. */
	.core-play-event-time svg {
		width: 12px !important;
		height: 12px !important;
		flex: 0 0 12px !important;
	}

	/*
	 * Separador: ahora la clase has-separator sí se genera en PHP.
	 * Mantenemos un pseudo-elemento explícito, visible y estable.
	 */
	.core-play-events-history.has-separator::before {
		content: "" !important;
		display: block !important;
		width: 1px !important;
		min-width: 1px !important;
		height: 18px !important;
		flex: 0 0 1px !important;
		align-self: center !important;
		margin: 0 10px 0 0 !important;
		background: rgba(0,0,0,.42) !important;
	}

	.core-play-events-history.has-separator {
		margin-left: 10px !important;
		padding-left: 0 !important;
		border-left: 0 !important;
	}
}

/* =========================================================
 * 5.0.7 — reloj de actuaciones en escritorio
 * ========================================================= */

@media (min-width: 901px) {
	/* 16px -> 13px: reducción del 18,75%. */
	.core-play-event-time svg {
		width: 13px !important;
		height: 13px !important;
		flex: 0 0 13px !important;
	}
}

