/* =========================================
   1. Geral e Reset
   ========================================= */
.timeline {
	position: relative;
	width: 90%;
	max-width: 1200px;
	margin: 50px auto;
	font-family: var(--e-global-typography-primary-font-family, sans-serif);
	box-sizing: border-box;
}

.timeline * {
	box-sizing: border-box;
}

.timeline ol {
	list-style-type: none;
	padding: 0;
	margin: 0;
	/* Removemos o reset global aqui para controlar por layout */
}

.timeline img {
	max-width: 100%;
	height: auto;
	display: block;
}

/* =========================================
   2. Componentes do Card (Padrão)
   ========================================= */

/* Wrapper principal do conteúdo dentro do LI (Grid/Flex/Horizontal) */
.tl-standard-wrapper {
	position: relative;
	padding: 20px;
	background: var(--e-global-color-e34dd54, #fff);
	border-radius: 10px;
	color: var(--e-global-color-text, #333);
	font-weight: 300;
	display: flex;
	flex-direction: column; /* Padrão coluna para Grid */
	align-items: center;
	justify-content: flex-start;
	height: 100%; /* Garante altura igual no Flex/Grid */
	border: 1px solid var(--e-global-color-primary, #ccc); /* Borda padrão do Grid */
	z-index: 2; /* Fica acima das linhas conectoras */
}

/* Área de Mídia (Ícone, Imagem, Carrossel) */
.tl-extra-box {
	margin-bottom: 15px;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	width: 100%;
}

.tl-extra-icon {
	font-size: 2.5rem;
	color: var(--e-global-color-secondary, #000);
}

.tl-extra-image img {
	border-radius: 4px;
	object-fit: cover;
}

/* Área de Texto */
.tl-content-box {
	flex: 1;
	display: flex;
	flex-direction: column;
	text-align: center; /* Centralizado para Grid */
	width: 100%;
}

.tl-title {
	display: block;
	font-size: 1.4rem;
	margin-bottom: 8px;
	font-family: var(--e-global-typography-primary-font-family, sans-serif);
	font-weight: var(--e-global-typography-primary-font-weight, 700);
	color: var(--e-global-color-ca8a4a2, #000);
}

.tl-desc p {
	margin: 0;
	line-height: 1.5;
	font-family: var(--e-global-typography-text-font-family, sans-serif);
	font-weight: var(--e-global-typography-text-font-weight, 400);
	font-size: 15px;
}

/* Swiper Ajustes Básicos */
.tl-extra-carousel {
	width: 100%;
	overflow: hidden;
}

/* =========================================
   3. Timeline Grid (Foco Principal)
   ========================================= */
.timeline-grid {
	--h-gap: 40px;
	--v-gap: 50px;
	counter-reset: timeline-counter;
}

/* Linhas e Colunas */
.timeline-grid__row ol {
	display: flex;
	gap: var(--h-gap);
	list-style: none;
	padding: 0;
	margin: 0;
	counter-reset: none;
}

.timeline-grid__row--reversed ol {
	flex-direction: row-reverse;
}

.timeline-grid__row:not(:last-child) {
	margin-bottom: var(--v-gap);
}

.timeline-grid ol li {
	position: relative;
	flex: 1;
	list-style: none;
}

/* Numeração (Counter) - Aplicado ao Wrapper */
.timeline-grid .tl-standard-wrapper::before {
	content: counter(timeline-counter);
	counter-increment: timeline-counter;
	position: absolute;
	top: -20px;
	left: 50%;
	transform: translateX(-50%);
	width: 40px;
	height: 40px;
	border-radius: 50%;
	background: var(--e-global-color-primary, #333);
	color: var(--e-global-color-e34dd54, #fff);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 1.2rem;
	font-weight: bold;
	border: 3px solid var(--e-global-color-secondary, #eee);
	z-index: 10;
}

/* Linhas Conectoras (Pseudo-elementos no LI) */
.timeline-grid li::after,
.timeline-grid li::before {
	content: "";
	position: absolute;
	background-color: var(--e-global-color-accent, #888);
	z-index: 1;
}

/* Linha Horizontal */
.timeline-grid__row ol li:not(:last-child)::after {
	height: 4px;
	width: var(--h-gap);
	top: calc(50% - 2px); /* Centraliza verticalmente no LI */
	left: 100%;
}

/* Linha Horizontal (Reverso) */
.timeline-grid__row--reversed ol li:first-child::after {
	height: 4px;
	width: var(--h-gap);
	top: calc(50% - 2px);
	left: 0;
	transform: translateX(-100%);
}

.timeline-grid__row--reversed ol li:not(:first-child)::after {
	left: auto;
	right: 100%;
}

/* Linha Vertical (Conector entre linhas) */
.timeline-grid__row:not(:last-child) ol li:last-child::before {
	width: 4px;
	height: calc(var(--v-gap) + 40px); /* Altura do gap + compensação */
	top: 50%;
	left: calc(50% - 2px);
}

.timeline-grid__row--reversed:not(:last-child) ol li:last-child::before {
	/* No reverso, a linha desce do primeiro elemento visual (último no DOM) */
	display: block;
}
/* Correção específica para grid reverso onde a linha deve descer do lado esquerdo */
.timeline-grid__row--reversed:not(:last-child) ol li:first-child::before {
	display: none;
}

/* =========================================
   4. Timeline Flex (Variação do Grid)
   ========================================= */
.timeline-flex {
	--h-gap: 40px;
	--v-gap: 50px;
	counter-reset: timeline-counter;
}

.timeline-flex .timeline-row ol {
	display: flex;
	gap: var(--h-gap);
	align-items: stretch;
}

.timeline-flex .timeline-row--reversed ol {
	flex-direction: row-reverse;
}

.timeline-flex .timeline-row:not(:last-child) {
	margin-bottom: var(--v-gap);
}

.timeline-flex .tl-standard-wrapper {
	background: var(--e-global-color-0f0b21b, #f9f9f9);
	color: #3a3030;
}

/* Counter do Flex (Lateral Esquerda Topo) */
.timeline-flex .tl-standard-wrapper::before {
	content: counter(timeline-counter);
	counter-increment: timeline-counter;
	position: absolute;
	top: -15px;
	left: -15px;
	transform: none; /* Reset do grid */
	width: 32px;
	height: 32px;
	border-radius: 50%;
	background: var(--e-global-color-primary);
	color: var(--e-global-color-e34dd54);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 1rem;
	font-weight: 700;
	box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.2);
	border: none;
}

/* Linhas Flex (Gradiente) */
.timeline-flex ol li:not(:last-child)::after {
	content: "";
	position: absolute;
	background-image: linear-gradient(
		to right,
		var(--e-global-color-primary) 50%,
		transparent 50%
	);
	background-size: 10px 100%;
	height: 1px;
	width: var(--h-gap);
	top: 50%;
	left: 100%;
	z-index: 1;
}

.timeline-flex .timeline-row--reversed ol li:first-child::after {
	left: 0;
	transform: translateX(-100%);
}

.timeline-flex .timeline-row--reversed ol li:not(:first-child)::after {
	left: auto;
	right: 100%;
}

.timeline-flex .timeline-row:not(:last-child) ol li:last-child::after {
	content: "";
	position: absolute;
	background-image: linear-gradient(
		to bottom,
		var(--e-global-color-primary) 50%,
		transparent 50%
	);
	background-size: 100% 10px;
	width: 1px;
	left: 50%;
	height: calc(var(--v-gap) + 100%); /* Estender para a próxima linha */
	top: 50%;
	z-index: 1;
}

/* =========================================
   5. Timeline Vertical (Novo HTML)
   ========================================= */
.timeline-vertical {
	padding: 20px 0;
}

.timeline-vertical ol {
	position: relative;
	/* A linha central agora é controlada pelo container ou pseudo-elemento principal */
}

/* Linha Central Vertical */
.timeline-vertical ol::before {
	content: "";
	position: absolute;
	top: 0;
	bottom: 0;
	left: 50%;
	width: 4px;
	background: #dedede;
	transform: translateX(-50%);
}

.timeline-vertical .timeline-item {
	margin-bottom: 0;
}

.timeline-vertical .tl-row-wrapper {
	display: flex;
	align-items: anchor-center;
	position: relative;
	width: 100%;
}

.tl-side {
	width: 50%;
	padding: 0 40px 40px 40px;
	position: relative;
}

.tl-side-left {
	text-align: right;
	display: flex;
	justify-content: flex-end;
}

.tl-side-right {
	text-align: left;
	display: flex;
	justify-content: flex-start;
}

/* Marcador Central (Dot ou Número) */
.tl-marker-col {
	width: 0;
	position: relative;
	display: flex;
	justify-content: center;
}

.tl-marker {
	width: 40px;
	height: 40px;
	background: var(--e-global-color-ca8a4a2);
	border-radius: 50%;
	position: absolute;
	top: 0;
	left: 50%;
	transform: translateX(-50%);
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	color: #fff;
	font-weight: bold;
	border: 3px solid #fff;
	box-shadow: 0 0 0 2px #dedede;
}
.tl-marker.is-dot {
	width: 20px;
	height: 20px;
}

/* Box de Conteúdo no Vertical */
.timeline-vertical .tl-content-box,
.timeline-vertical .tl-extra-box {
	background: var(
		--e-global-color-e34dd54,
		#fff
	); /* Fundo branco ou cor definida */
	padding: 20px;
	border-radius: 10px;
	position: relative;
	/*box-shadow: 0 4px 12px rgba(0,0,0,0.1);*/
	width: 100%;
}

.timeline-vertical .tl-extra-box {
	background: transparent;
	padding: 0;
	justify-content: flex-end; /* Ícone alinhado ao centro */
}
.timeline-vertical .tl-side-right .tl-extra-box {
	justify-content: flex-start;
}

/* Setinhas (Triângulos) */
.timeline-vertical .tl-content-box::before {
	content: "";
	position: absolute;
	top: 10px;
	width: 0;
	height: 0;
	border-style: solid;
}

.timeline-vertical .tl-side-left .tl-content-box::before {
	right: -10px;
	border-width: 10px 0 10px 10px;
	border-color: transparent transparent transparent
		var(--e-global-color-e34dd54, #fff);
}

.timeline-vertical .tl-side-right .tl-content-box::before {
	left: -10px;
	border-width: 10px 10px 10px 0;
	border-color: transparent var(--e-global-color-e34dd54, #fff) transparent
		transparent;
}

/* =========================================
   6. Responsivo
   ========================================= */

@media screen and (max-width: 768px) {
	/* Reset Grid/Flex para Coluna Única */
	.timeline-grid__row ol,
	.timeline-grid__row--reversed ol,
	.timeline-flex .timeline-row ol,
	.timeline-flex .timeline-row--reversed ol {
		flex-direction: column;
		gap: 0;
	}

	.timeline-grid ol li,
	.timeline-flex ol li {
		width: 100% !important;
		flex-basis: auto !important;
		margin-bottom: 40px;
	}

	/* Ajuste das linhas verticais no mobile */
	.timeline-grid ol li:not(:last-child)::after {
		display: block;
		width: 4px;
		height: 40px; /* Altura do espaço entre itens */
		top: 100%;
		left: 50%;
		transform: translateX(-50%);
	}

	.timeline-grid__row:not(:last-child) ol li:last-child::before,
	.timeline-grid__row--reversed:not(:last-child) ol li:last-child::before {
		/* Conector entre rows no mobile */
		width: 4px;
		height: 40px;
		top: 100%;
		left: 50%;
	}

	/* Timeline Vertical vira empilhada */
	.timeline-vertical ol::before {
		left: 20px;
	}

	.timeline-vertical .tl-row-wrapper {
		flex-direction: column;
		padding-left: 50px;
	}

	.tl-side {
		width: 100%;
		padding: 0 0 20px 0;
		text-align: left;
		justify-content: flex-start;
	}

	.tl-marker {
		left: 20px;
	}

	.timeline-vertical .tl-side-left .tl-content-box::before,
	.timeline-vertical .tl-side-right .tl-content-box::before {
		display: block;
		left: -10px;
		right: auto;
		border-width: 10px 10px 10px 0;
		border-color: transparent var(--e-global-color-e34dd54, #fff)
			transparent transparent;
	}

	.timeline-vertical .tl-extra-box,
	.timeline-vertical .tl-side-left .tl-extra-box {
		justify-content: flex-start;
		padding-bottom: 10px;
	}
}

/* =========================================
   7. Modo Lista (Override Opcional)
   ========================================= */
/* Caso use classe .list no body ou container pai */
.list .timeline-grid .tl-standard-wrapper {
	flex-direction: row;
	align-items: center;
	text-align: left;
	gap: 15px;
	border-style: dashed;
	border-color: #777;
	background: #ffffffdd;
	padding: 12px;
}

.list .timeline-grid .tl-extra-box {
	width: auto;
	margin-bottom: 0;
}

.list .timeline-grid .tl-title {
	font-size: 1rem;
	margin-bottom: 0;
}

.list .timeline-grid .tl-standard-wrapper::before {
	display: none; /* Esconde contador no modo lista */
}

.timeline-item .swiper-button-next:after,
.timeline-item .swiper-button-prev:after {
	font-size: 18px;
	font-weight: 800;
}

.timeline-item .swiper-slide img {
	cursor: grab;
}

.timeline-item .swiper-pagination-bullet {
	width: 12px;
	height: 12px;
	display: inline-block;
	border-radius: 50px;
	background: var(--e-global-color-5ac1b65);
	opacity: 0.3;
	transition: all 0.3s ease;
}
.timeline-item .swiper-pagination-bullet-active {
	width: 24px;
	background: var(--e-global-color-5ac1b65);
	opacity: 1;
	border-radius: 50px;
}

.timeline-item .swiper-slide {
	aspect-ratio: 1/1;
	overflow: hidden;
	width: 100% !important;
	display: block;
	justify-content: center;
	align-items: center;
	object-position: center center;
	object-fit: cover;
	border-radius: 6px;
}
.timeline-item .swiper-slide img {
	min-width: 100%;
	min-height: 100%;
	object-fit: cover;
}
