/*!
 * CG Marquesina — estilos públicos.
 * Breakpoints alineados con Flatsome: tablet ≤ 849px, móvil ≤ 549px.
 */

/* ------------------------------------------------------------------ */
/* Marquesina                                                           */
/* ------------------------------------------------------------------ */

.cgm-marquee {
	--cgm-color: #fff;
	--cgm-bg: transparent;
	--cgm-icon: currentColor;
	--cgm-gap: 40px;
	--cgm-py: 14px;
	--cgm-fs: 15px;
	--cgm-duration: 30s;
	position: relative;
	display: block;
	width: 100%;
	max-width: 100%;
	overflow: hidden;
	box-sizing: border-box;
	padding: var(--cgm-py) 0;
	background: var(--cgm-bg);
	color: var(--cgm-color);
	border-radius: var(--cgm-radius, 0);
	font-family: var(--cgm-ff, inherit);
	font-size: var(--cgm-fs);
	font-weight: var(--cgm-fw, inherit);
	font-style: var(--cgm-fst, normal);
	letter-spacing: var(--cgm-ls, normal);
	text-transform: var(--cgm-tt, none);
	line-height: 1.3;
	contain: layout paint;
	-webkit-font-smoothing: antialiased;
}

.cgm-marquee *,
.cgm-marquee *::before,
.cgm-marquee *::after {
	box-sizing: border-box;
}

/* Ancho completo: sale del contenedor/columna hasta los bordes de la ventana. */
.cgm-w-full.cgm-pos-static {
	width: var(--cgm-vw, 100vw);
	max-width: none;
	margin-left: calc(50% - var(--cgm-vw, 100vw) / 2);
	margin-right: calc(50% - var(--cgm-vw, 100vw) / 2);
	border-radius: 0;
}

/* Posiciones */
.cgm-pos-overlay-bottom,
.cgm-pos-overlay-top {
	position: absolute;
	left: 0;
	right: 0;
	width: auto;
	max-width: none;
	z-index: 5;
	border-radius: 0;
}
.cgm-pos-overlay-bottom { bottom: 0; }
.cgm-pos-overlay-top { top: 0; }

.cgm-pos-fixed-bottom {
	position: fixed;
	left: 0;
	right: 0;
	width: auto;
	max-width: none;
	bottom: 0;
	z-index: 990;
	border-radius: 0;
	padding-bottom: calc(var(--cgm-py) + env(safe-area-inset-bottom, 0px));
}

/* Bordes */
.cgm-border-top,
.cgm-border-both { border-top: 1px solid var(--cgm-border, rgba(255, 255, 255, .15)); }
.cgm-border-bottom,
.cgm-border-both { border-bottom: 1px solid var(--cgm-border, rgba(255, 255, 255, .15)); }

.cgm-viewport {
	overflow: hidden;
	width: 100%;
}

.cgm-fade .cgm-viewport {
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 var(--cgm-fade), #000 calc(100% - var(--cgm-fade)), transparent);
	mask-image: linear-gradient(90deg, transparent, #000 var(--cgm-fade), #000 calc(100% - var(--cgm-fade)), transparent);
}

.cgm-track {
	display: flex;
	flex-wrap: nowrap;
	width: max-content;
	will-change: transform;
	animation: cgm-scroll var(--cgm-duration) linear infinite;
}

.cgm-dir-right .cgm-track {
	animation-direction: reverse;
}

@keyframes cgm-scroll {
	from { transform: translate3d(0, 0, 0); }
	to   { transform: translate3d(-50%, 0, 0); }
}

.cgm-group {
	display: flex;
	flex: 0 0 auto;
	align-items: center;
	margin: 0 !important;
	padding: 0 !important;
	list-style: none !important;
}

.cgm-item {
	display: inline-flex;
	align-items: center;
	flex: 0 0 auto;
	gap: .55em;
	margin: 0 var(--cgm-gap) 0 0 !important;
	padding: 0 !important;
	list-style: none !important;
	white-space: nowrap;
}

.cgm-item::before { content: none !important; } /* evita viñetas de Flatsome */

.cgm-text,
.cgm-marquee a.cgm-link {
	color: inherit;
	font: inherit;
	letter-spacing: inherit;
	text-transform: inherit;
}

.cgm-marquee a.cgm-link {
	text-decoration: none;
	text-underline-offset: .2em;
	transition: color .2s ease;
}
.cgm-ul-always a.cgm-link { text-decoration: underline; }
.cgm-ul-hover a.cgm-link:hover,
.cgm-ul-hover a.cgm-link:focus-visible { text-decoration: underline; }
.cgm-marquee a.cgm-link:hover,
.cgm-marquee a.cgm-link:focus-visible { color: var(--cgm-hover, inherit); }
.cgm-marquee a.cgm-link:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 3px;
	border-radius: 2px;
}

.cgm-icon {
	display: inline-flex;
	flex: 0 0 auto;
	color: var(--cgm-icon);
	line-height: 1;
}
.cgm-icon svg {
	display: block;
	width: 1.2em;
	height: 1.2em;
}
.cgm-icon-text { font-size: 1.1em; }

/* Con separador, el espacio entre mensajes se reparte a ambos lados de él. */
.cgm-has-sep .cgm-item { margin-right: 0 !important; }
.cgm-sep {
	margin-left: calc(var(--cgm-gap) / 2 - .55em);
	margin-right: calc(var(--cgm-gap) / 2);
	opacity: .6;
}

/* Pausa: hover / foco / botón / fuera de pantalla / pestaña oculta */
.cgm-pause-hover:hover .cgm-track,
.cgm-pause-hover:focus-within .cgm-track,
.cgm-marquee.is-paused .cgm-track,
.cgm-marquee.is-offscreen .cgm-track {
	animation-play-state: paused;
}

.cgm-toggle {
	position: absolute;
	top: 50%;
	right: 8px;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	min-height: 0;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(0, 0, 0, .55);
	color: #fff;
	line-height: 1;
	cursor: pointer;
	opacity: 0;
	transform: translateY(-50%);
	transition: opacity .2s ease;
	box-shadow: none;
}
.cgm-toggle svg { width: 14px; height: 14px; }
.cgm-toggle .cgm-i-play { display: none; }
.cgm-marquee.is-paused .cgm-toggle .cgm-i-play { display: block; }
.cgm-marquee.is-paused .cgm-toggle .cgm-i-pause { display: none; }

.cgm-marquee:hover .cgm-toggle,
.cgm-marquee:focus-within .cgm-toggle,
.cgm-marquee.is-paused .cgm-toggle,
.cgm-toggle:focus-visible {
	opacity: 1;
}
.cgm-toggle:focus-visible {
	outline: 2px solid #fff;
	outline-offset: 2px;
}
@media (hover: none) {
	.cgm-toggle { opacity: .85; }
}

/* Texto solo para lectores de pantalla */
.cgm-sr {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	padding: 0 !important;
	margin: -1px !important;
	overflow: hidden !important;
	clip: rect(0, 0, 0, 0) !important;
	white-space: nowrap !important;
	border: 0 !important;
}

.cgm-empty {
	padding: 12px 16px;
	border: 1px dashed #c3c4c7;
	color: #646970;
	font-size: 13px;
}

/* Tamaños responsivos (Flatsome) */
@media (max-width: 849px) {
	.cgm-marquee { font-size: var(--cgm-fs-md, var(--cgm-fs)); }
}
@media (max-width: 549px) {
	.cgm-marquee { font-size: var(--cgm-fs-sm, var(--cgm-fs-md, var(--cgm-fs))); }
}

/* Movimiento reducido: lista estática que se puede desplazar con el dedo. */
@media (prefers-reduced-motion: reduce) {
	.cgm-track { animation: none !important; width: auto; }
	.cgm-clone { display: none !important; }
	.cgm-viewport { overflow-x: auto; scrollbar-width: none; }
	.cgm-viewport::-webkit-scrollbar { display: none; }
	.cgm-group { padding: 0 16px !important; }
	.cgm-toggle { display: none !important; }
}

/* ------------------------------------------------------------------ */
/* Texto animado                                                        */
/* ------------------------------------------------------------------ */

.cgt {
	position: relative;
	font-family: var(--cgt-ff, inherit);
	font-weight: var(--cgt-fw, inherit);
}
.cgt .cgt-anim { color: var(--cgt-color, inherit); }

/* Máquina de escribir */
.cgt-fx-typewriter .cgt-type { white-space: pre-wrap; }
.cgt-cursor {
	display: inline-block;
	width: .08em;
	min-width: 2px;
	height: 1em;
	margin-left: .06em;
	vertical-align: -0.1em;
	background: currentColor;
	animation: cgt-blink 1s steps(1) infinite;
}
@keyframes cgt-blink { 50% { opacity: 0; } }

/* Rotar palabras: todas apiladas en la misma celda → el ancho no "brinca". */
.cgt-stack {
	display: inline-grid;
	vertical-align: bottom;
	overflow: hidden;
	padding-bottom: .08em;
}
.cgt-w {
	grid-area: 1 / 1;
	opacity: 0;
	white-space: nowrap;
	transition: opacity .45s ease, transform .55s cubic-bezier(.2, .7, .2, 1), filter .45s ease;
}
.cgt-stack .cgt-w.is-in { opacity: 1; transform: none; filter: none; }

.cgt-tr-slide .cgt-w { transform: translateY(100%); }
.cgt-tr-slide .cgt-w.is-out { transform: translateY(-100%); }
.cgt-tr-flip .cgt-stack { perspective: 600px; }
.cgt-tr-flip .cgt-w { transform: rotateX(90deg); transform-origin: 50% 50% -.5em; }
.cgt-tr-flip .cgt-w.is-out { transform: rotateX(-90deg); }
.cgt-tr-blur .cgt-w { filter: blur(8px); transform: scale(1.04); }
.cgt-tr-blur .cgt-w.is-out { filter: blur(8px); transform: scale(.96); }

/* Aparecer palabra por palabra */
.cgt-rw {
	display: inline-block;
	transition: opacity var(--cgt-duration) ease, transform var(--cgt-duration) cubic-bezier(.2, .7, .2, 1);
	transition-delay: calc(var(--i, 0) * var(--cgt-stagger));
}
@media (scripting: enabled) {
	.cgt-fx-reveal:not(.is-visible) .cgt-rw {
		opacity: 0;
		transform: translateY(.45em);
		/* Respaldo: si el script no carga, el texto aparece igual. */
		animation: cgt-failsafe 0s 3s forwards;
	}
	.cgt-fx-reveal.cgt-armed:not(.is-visible) .cgt-rw { animation: none; }
}
@keyframes cgt-failsafe { to { opacity: 1; transform: none; } }

/* Resaltado que se dibuja */
.cgt-fx-highlight .cgt-mark {
	background-image: linear-gradient(var(--cgt-color2, rgba(55, 196, 140, .35)), var(--cgt-color2, rgba(55, 196, 140, .35)));
	background-repeat: no-repeat;
	background-position: 0 88%;
	background-size: 100% .38em;
	transition: background-size var(--cgt-duration) cubic-bezier(.2, .7, .2, 1);
	-webkit-box-decoration-break: clone;
	box-decoration-break: clone;
}
@media (scripting: enabled) {
	.cgt-fx-highlight.cgt-armed:not(.is-visible) .cgt-mark { background-size: 0 .38em; }
}

/* Degradado en movimiento */
.cgt-fx-gradient .cgt-mark {
	background: linear-gradient(90deg, var(--cgt-color, currentColor), var(--cgt-color2, #37c48c), var(--cgt-color, currentColor));
	background-size: 200% auto;
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
	color: transparent;
	animation: cgt-gradient calc(var(--cgt-duration) * 4) linear infinite;
}
@keyframes cgt-gradient { to { background-position: -200% center; } }

@media (prefers-reduced-motion: reduce) {
	.cgt-cursor,
	.cgt-fx-gradient .cgt-mark { animation: none !important; }
	.cgt-w { transition: none !important; }
	.cgt-rw { opacity: 1 !important; transform: none !important; transition: none !important; animation: none !important; }
	.cgt-fx-highlight .cgt-mark { background-size: 100% .38em !important; transition: none !important; }
}

/* ------------------------------------------------------------------ */
/* Contador / tablero de aeropuerto ([cg_contador])                     */
/* Hereda tamaño, color, fuente y grosor del texto que lo rodea.        */
/* ------------------------------------------------------------------ */

.cgc {
	--cgc-page: #fff;
	--cgc-h: 1.22em;
	display: inline-block;
	color: var(--cgc-color, inherit);
	font-family: var(--cgc-ff, inherit);
	font-weight: var(--cgc-fw, inherit);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
	line-height: 1.15;
	max-width: 100%;
}
p.cgc, div.cgc, h1.cgc, h2.cgc, h3.cgc, h4.cgc, h5.cgc, h6.cgc { display: block; }
.cgc .cgc-anim { display: inline-block; }
.cgc.is-js .cgc-anim {
	display: inline-flex;
	align-items: center;
	gap: .07em;
	vertical-align: middle;
}

/* Tablero: cada paleta son 4 capas (mitades fijas + 2 que giran). */
.cgc-cell {
	position: relative;
	display: inline-block;
	width: .74em;
	height: var(--cgc-h);
	line-height: var(--cgc-h);
	text-align: center;
	border-radius: .11em;
	perspective: 3.5em;
	background: var(--cgc-tile, #f0eff3);
	background: var(--cgc-tile, color-mix(in srgb, currentColor 9%, var(--cgc-page)));
}
.cgc-cell.is-wide { width: .9em; }
.cgc-cell > span {
	position: absolute;
	inset: 0;
	border-radius: inherit;
	background: inherit;
	-webkit-backface-visibility: hidden;
	backface-visibility: hidden;
}
.cgc-top, .cgc-ft { clip-path: inset(0 0 50% 0); }
.cgc-bot, .cgc-fb { clip-path: inset(50% 0 0 0); }
.cgc-ft { transform-origin: 50% 50%; z-index: 2; }
.cgc-fb { transform-origin: 50% 50%; transform: rotateX(90deg); z-index: 2; }
.cgc-cell::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: 50%;
	height: 1px;
	margin-top: -.5px;
	z-index: 3;
	background: rgba(0, 0, 0, .14);
	background: color-mix(in srgb, currentColor 24%, var(--cgc-page));
}
.cgc-sep, .cgc-gap {
	display: inline-block;
	height: var(--cgc-h);
	line-height: var(--cgc-h);
}
.cgc-gap { width: .3em; }

/* Apariencias */
.cgc-skin-dark .cgc-cell {
	color: var(--cgc-color, #f5f5f0);
	background: var(--cgc-tile, #1c1c1f);
	box-shadow: inset 0 -.06em 0 rgba(0, 0, 0, .35), 0 .04em .12em rgba(0, 0, 0, .25);
}
.cgc-skin-dark .cgc-cell::after { background: rgba(0, 0, 0, .7); height: 2px; margin-top: -1px; }
.cgc-skin-outline .cgc-cell {
	background: var(--cgc-tile, var(--cgc-page));
	box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .15);
	box-shadow: inset 0 0 0 1px color-mix(in srgb, currentColor 28%, transparent);
}
.cgc-skin-none .cgc-cell { background: var(--cgc-tile, var(--cgc-page)); }
.cgc-skin-none .cgc-cell::after { display: none; }

/* Rodillo (odómetro) */
.cgc-col {
	display: inline-block;
	height: 1.15em;
	line-height: 1.15em;
	overflow: hidden;
	-webkit-mask-image: linear-gradient(transparent, #000 18%, #000 82%, transparent);
	mask-image: linear-gradient(transparent, #000 18%, #000 82%, transparent);
}
.cgc-roll .cgc-sep { height: 1.15em; line-height: 1.15em; }
.cgc-strip { display: block; will-change: transform; }
.cgc-strip > span { display: block; height: 1.15em; text-align: center; }

/* Conteo */
.cgc-count.is-js .cgc-anim { display: inline-block; }

@media (prefers-reduced-motion: reduce) {
	.cgc-strip { transition: none !important; }
}

/* ================================================================== */
/* Barras animadas — [cg_barras] (v1.2.0)                              */
/* Sin JS o con prefers-reduced-motion se ven llenas (estado final).   */
/* ================================================================== */

/* Una sola retícula para todas las filas (display: contents): las barras
   arrancan y terminan en la misma columna aunque una etiqueta sea más larga. */
.cgb { display: grid; grid-template-columns: max-content minmax(0, 1fr) max-content; gap: .6em .75em; align-items: center; font-size: .85em; }
.cgb-row { display: contents; }
.cgb-label { white-space: nowrap; }
.cgb-track { position: relative; height: 10px; overflow: hidden; border-radius: 999px; background: var(--cgb-track, rgba(0, 0, 0, .08)); }
.cgb-fill { display: block; width: var(--w); height: 100%; overflow: hidden; border-radius: inherit; background: var(--cgb-color, currentColor); transform-origin: left center; }
.cgb-val { min-width: 3.4em; font-weight: 700; text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.cgb-row--alert .cgb-fill { background: var(--cgb-alert, #b3261e); }
.cgb-row--alert .cgb-val { color: var(--cgb-alert, #b3261e); }

.cgb-armed .cgb-fill { transform: scaleX(0); }
.cgb-armed.cgb-run .cgb-fill {
	transform: scaleX(1);
	transition: transform var(--cgb-d, 1400ms) cubic-bezier(.2, .75, .2, 1) calc(var(--i) * var(--cgb-s, 180ms));
}
/* Brillo que recorre la barra mientras crece. */
.cgb-armed.cgb-run .cgb-fill::after {
	content: ""; display: block; width: 40%; height: 100%;
	background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .55), transparent);
	animation: cgb-shine var(--cgb-d, 1400ms) ease-out calc(var(--i) * var(--cgb-s, 180ms)) both;
}
/* El brillo queda dentro de la barra (overflow: hidden en .cgb-fill) y se apaga al final: sobre fondos oscuros no debe quedar visible. */
@keyframes cgb-shine { from { transform: translateX(-100%); opacity: 1; } 85% { opacity: 1; } to { transform: translateX(260%); opacity: 0; } }
/* La barra en alerta late dos veces al terminar de crecer. */
.cgb-armed.cgb-run .cgb-row--alert .cgb-track { animation: cgb-alert 1.1s ease-in-out calc(var(--cgb-d, 1400ms) + var(--i) * var(--cgb-s, 180ms)) 2; }
@keyframes cgb-alert { 0%, 100% { box-shadow: 0 0 0 0 transparent; } 50% { box-shadow: 0 0 0 4px color-mix(in srgb, var(--cgb-alert, #b3261e) 25%, transparent); } }

/* ================================================================== */
/* Retícula de puntos — [cg_puntos] (v1.2.0)                            */
/* ================================================================== */

.cgd { --cgd-gap: 5px; }
.cgd-grid { display: grid; grid-template-columns: repeat(var(--cgd-cols, 20), minmax(0, 1fr)); gap: var(--cgd-gap); max-width: calc(var(--cgd-cols, 20) * 16px); }
.cgd-dot { display: block; aspect-ratio: 1; border-radius: 50%; background: var(--cgd-base, color-mix(in srgb, currentColor 14%, transparent)); }
.cgd-dot.is-on { background: var(--cgd-on, #b3261e); }
.cgd-legend { display: flex; flex-wrap: wrap; gap: .4em 1.2em; margin-top: .85em; font-size: .78em; }
.cgd-legend > span { display: inline-flex; align-items: center; gap: .4em; }
.cgd-legend i { display: inline-block; width: .7em; height: .7em; border-radius: 50%; background: var(--cgd-base, color-mix(in srgb, currentColor 14%, transparent)); }
.cgd-legend i.is-on { background: var(--cgd-on, #b3261e); }
.cgd-dot.is-on2, .cgd-legend i.is-on2 { background: var(--cgd-on2, #e8a33d); }
.cgd-n.cgd-n2 { color: var(--cgd-on2, #e8a33d); }
.cgd-dot.is-on3, .cgd-legend i.is-on3 { background: var(--cgd-on3, #1e7f61); }
.cgd-n.cgd-n3 { color: var(--cgd-on3, #1e7f61); }
/* Personitas en vez de puntos (forma="persona", v1.5.0) */
.cgd--persona { --cgd-gap: 6px 5px; }
.cgd--persona .cgd-grid { max-width: calc(var(--cgd-cols, 20) * 30px); }
.cgd--persona .cgd-dot { aspect-ratio: 22 / 30; border-radius: 0; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 30'%3E%3Ccircle cx='11' cy='6' r='5.2'/%3E%3Cpath d='M2 29v-8.5a9 9 0 0 1 18 0V29z'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 30'%3E%3Ccircle cx='11' cy='6' r='5.2'/%3E%3Cpath d='M2 29v-8.5a9 9 0 0 1 18 0V29z'/%3E%3C/svg%3E") center / contain no-repeat; }
.cgd--persona.cgd-armed.cgd-run .cgd-dot.is-lit { animation-name: cgd-pop-persona; }
@keyframes cgd-pop-persona { 0% { transform: scale(1); } 45% { transform: scale(1.3) translateY(-2px); } 100% { transform: scale(1); } }
.cgd-n { min-width: 1.4em; font-variant-numeric: tabular-nums; color: var(--cgd-on, #b3261e); }

.cgd-armed .cgd-dot { opacity: 0; transform: scale(.2); }
.cgd-armed .cgd-dot.is-on { background: var(--cgd-base, color-mix(in srgb, currentColor 14%, transparent)); }
.cgd-armed.cgd-run .cgd-dot {
	opacity: 1; transform: none;
	transition: opacity .35s ease, transform .45s cubic-bezier(.3, 1.6, .5, 1);
	transition-delay: calc(var(--i) * var(--cgd-wave, 6ms));
}
.cgd-armed.cgd-run .cgd-dot.is-on2.is-lit { background: var(--cgd-on2, #e8a33d); }
.cgd-armed.cgd-run .cgd-dot.is-on3.is-lit { background: var(--cgd-on3, #1e7f61); }
.cgd-armed.cgd-run .cgd-dot.is-lit { background: var(--cgd-on, #b3261e); animation: cgd-pop .55s cubic-bezier(.3, 1.6, .5, 1) both; }
@keyframes cgd-pop {
	0% { transform: scale(1); box-shadow: 0 0 0 0 color-mix(in srgb, var(--cgd-on, #b3261e) 45%, transparent); }
	45% { transform: scale(1.55); }
	100% { transform: scale(1); box-shadow: 0 0 0 6px transparent; }
}

@media (prefers-reduced-motion: reduce) {
	.cgb-armed .cgb-fill, .cgd-armed .cgd-dot { transform: none; opacity: 1; transition: none; animation: none; }
}
