/* Content View Pro - Front-end styles */

.cvp-view {
	--cvp-cols-desktop: 4;
	--cvp-cols-tablet: 2;
	--cvp-cols-mobile: 1;
	--cvp-gap-h: 20px;
	--cvp-gap-v: 20px;
	--cvp-card-bg: transparent;
	--cvp-card-border: 1px solid #eaeaea;
	--cvp-card-radius: 8px;
	--cvp-card-padding: 16px;
	--cvp-card-gap: 8px;
	--cvp-card-shadow: none;
	--cvp-list-cols-desktop: 1;
	--cvp-list-cols-tablet: 1;
	--cvp-list-cols-mobile: 1;
	box-sizing: border-box;
	max-width: var(--cvp-view-width, 100%);
}

.cvp-view * {
	box-sizing: border-box;
}

/* ---------- Card ---------- */
.cvp-card {
	display: flex;
	flex-direction: column;
	gap: var(--cvp-card-gap);
	background: var(--cvp-card-bg);
	border: var(--cvp-card-border);
	border-radius: var(--cvp-card-radius);
	padding: var(--cvp-card-padding);
	box-shadow: var(--cvp-card-shadow);
	overflow: hidden;
}

.cvp-card > * {
	margin: 0;
}

/*
 * Agrupa todos os elementos que NÃO são a imagem (título, excerpt, data,
 * etc). Nos layouts em grade (Grid/Masonry/Pinterest/Featured/Overlay) o
 * wrapper vira "display: contents" para que os filhos se comportem como se
 * fossem diretamente filhos do card (preservando a ordem customizada pelo
 * admin). Nos layouts em linha (List/Timeline/Accordion) o wrapper vira uma
 * coluna de texto ao lado da imagem - sem isso, cada elemento de texto virava
 * uma coluna própria lado a lado, causando sobreposição/desalinhamento.
 */
.cvp-card__content {
	display: contents;
}

.cvp-card__content > * {
	margin: 0;
}

.cvp-card__stretched-link {
	position: absolute;
	inset: 0;
	z-index: 1;
}

.cvp-card__image {
	display: block;
	position: relative;
	width: calc(100% + var(--cvp-card-padding) * 2);
	aspect-ratio: var(--cvp-ratio, 16 / 9);
	overflow: hidden;
	border-radius: var(--cvp-image-radius, var(--cvp-card-radius, 0px));
	margin: calc(var(--cvp-card-padding) * -1) calc(var(--cvp-card-padding) * -1) 0;
}

/* Tamanho customizado: largura/altura fixas mas sempre fluidas
   (max-width: 100% garante responsividade em telas menores). */
.cvp-card__image--custom {
	width: 100%;
	max-width: var(--cvp-image-width, 100%);
	height: var(--cvp-image-height, auto);
	aspect-ratio: var(--cvp-ratio, auto);
	/* Quando altura é definida explicitamente, ela tem prioridade sobre o
	   aspect-ratio herdado; a largura permanece fluida (responsiva). */
}

.cvp-card__image-tag {
	width: 100%;
	height: 100%;
	object-fit: var(--cvp-fit, cover);
	object-position: var(--cvp-object-position, center center);
	border-radius: var(--cvp-image-radius, var(--cvp-card-radius, 0px));
	display: block;
}

/* Efeito de zoom suave ao passar o mouse sobre o card (não apenas sobre a
   imagem, para que o hover funcione em qualquer parte do card). */
.cvp-card__image--zoom .cvp-card__image-tag {
	transition: transform 0.45s ease;
}

.cvp-card:hover .cvp-card__image--zoom .cvp-card__image-tag {
	transform: scale(1.08);
}

@media (prefers-reduced-motion: reduce) {
	.cvp-card__image--zoom .cvp-card__image-tag {
		transition: none;
	}
	.cvp-card:hover .cvp-card__image--zoom .cvp-card__image-tag {
		transform: none;
	}
}

.cvp-card__title {
	font-size: 1.1em;
	line-height: 1.35;
}

.cvp-card__title a {
	text-decoration: none;
	color: inherit;
}

.cvp-card__excerpt {
	font-size: 0.92em;
	color: #555;
}

.cvp-card__date,
.cvp-card__author,
.cvp-card__comments {
	font-size: 0.8em;
	color: #777;
	display: block;
}

.cvp-card__category a,
.cvp-card__tags a {
	font-size: 0.75em;
	text-decoration: none;
	color: #2271b1;
	margin-right: 6px;
}

.cvp-card__button {
	margin: var(--cvp-content-btn-mt, 0px) var(--cvp-content-btn-mr, 0px) var(--cvp-content-btn-mb, 0px) var(--cvp-content-btn-ml, 0px);
	display: inline-block;
	width: var(--cvp-content-btn-width, auto);
	height: var(--cvp-content-btn-height, auto);
	padding: var(--cvp-content-btn-pt, 8px) var(--cvp-content-btn-pr, 16px) var(--cvp-content-btn-pb, 8px) var(--cvp-content-btn-pl, 16px);
	background: var(--cvp-content-btn-bg, #1d2327);
	color: var(--cvp-content-btn-color, #fff);
	border: var(--cvp-content-btn-border-width, 0px) solid var(--cvp-content-btn-border-color, #1d2327);
	text-decoration: none;
	border-radius: var(--cvp-content-btn-radius, 4px);
	font-size: var(--cvp-content-btn-font-size, 14px);
	align-self: flex-start;
	position: relative;
	z-index: 2;
}

.cvp-card__button:hover,
.cvp-card__button:focus {
	background: var(--cvp-content-btn-hover-bg, #2271b1);
	color: var(--cvp-content-btn-hover-color, #fff);
}

.cvp-card__avatar {
	border-radius: 50%;
	vertical-align: middle;
	margin-right: 6px;
}

/* ---------- Grid / Overlay / Featured (colunas uniformes) ---------- */
.cvp-layout--grid,
.cvp-layout--overlay,
.cvp-layout--featured {
	display: grid;
	grid-template-columns: repeat(var(--cvp-cols-desktop), 1fr);
	column-gap: var(--cvp-gap-h);
	row-gap: var(--cvp-gap-v);
}

/*
 * ---------- Overlay: máscara em degradê com opacidade/altura configuráveis ----------
 * Aplica-se ao layout "Overlay" (todos os cards) e ao "Big Featured + Posts"
 * quando a opção "Aplicar overlay" está ativa (nesse caso, em TODOS os
 * itens do bloco, não apenas no destaque, para formar um bloco coeso).
 *
 * A imagem e o degradê usam deslocamento negativo igual ao padding do card
 * (em vez de "inset: 0", que fica restrito à caixa de conteúdo e deixa uma
 * borda sem cobertura) para realmente cobrir o card inteiro de ponta a
 * ponta - essa era a causa do efeito "não aparecer".
 */
.cvp-layout--overlay .cvp-card,
.cvp-layout--featured-overlay .cvp-card {
	position: relative;
	isolation: isolate;
	color: #fff;
	min-height: 260px;
	justify-content: flex-end;
}

.cvp-layout--overlay .cvp-card::before,
.cvp-layout--featured-overlay .cvp-card::before {
	content: "";
	position: absolute;
	top: calc(var(--cvp-card-padding) * -1);
	left: calc(var(--cvp-card-padding) * -1);
	right: calc(var(--cvp-card-padding) * -1);
	bottom: calc(var(--cvp-card-padding) * -1);
	background: linear-gradient(
		to top,
		rgba(var(--cvp-overlay-color, 0, 0, 0), var(--cvp-overlay-bottom, 0.75)) 0%,
		rgba(var(--cvp-overlay-color, 0, 0, 0), var(--cvp-overlay-top, 0)) var(--cvp-overlay-height, 60%),
		transparent var(--cvp-overlay-height, 60%)
	);
	z-index: 0;
	pointer-events: none;
}

.cvp-layout--overlay .cvp-card > *,
.cvp-layout--featured-overlay .cvp-card > * {
	position: relative;
	z-index: 2;
}

.cvp-layout--overlay .cvp-card__image,
.cvp-layout--featured-overlay .cvp-card__image {
	position: absolute;
	top: calc(var(--cvp-card-padding) * -1);
	left: calc(var(--cvp-card-padding) * -1);
	right: calc(var(--cvp-card-padding) * -1);
	bottom: calc(var(--cvp-card-padding) * -1);
	margin: 0;
	width: auto;
	height: auto;
	min-height: 0;
	aspect-ratio: auto;
	z-index: -1;
}

/* Em Overlay/Featured overlay a imagem é ancorada nos quatro lados do card;
   a altura/proporção geral não pode criar uma faixa abaixo dela. */
.cvp-layout--overlay .cvp-card__image-tag,
.cvp-layout--featured-overlay .cvp-card__image-tag { width:100%; height:100%; object-fit:var(--cvp-fit,cover); }
.cvp-layout--featured:not(.cvp-layout--featured-overlay) .cvp-card { min-height:0; }
.cvp-layout--featured:not(.cvp-layout--featured-overlay) .cvp-card__image { align-self:stretch; }
.cvp-card__image[style*="--cvp-sizing-mode:fixed-height"] { aspect-ratio:auto; }


/* Link "esticado": cobre o card inteiro (incluindo a área da imagem/
   degradê) para que o clique funcione em qualquer ponto, não somente no
   título. Fica abaixo do texto (z-index 2) e acima da imagem/degradê.
   IMPORTANTE: declara "position: absolute" explicitamente aqui - a regra
   genérica ".cvp-card > *" (2 classes) tem mais especificidade que a regra
   base ".cvp-card__stretched-link" (1 classe) e sobrescrevia o
   "position: absolute" para "position: relative", fazendo o link perder
   toda a área clicável (essa era a causa real do link só funcionar no
   título). Aqui a especificidade empata (2 classes) e, por vir depois no
   arquivo, esta regra vence. */
.cvp-layout--overlay .cvp-card__stretched-link,
.cvp-layout--featured-overlay .cvp-card__stretched-link {
	position: absolute;
	top: calc(var(--cvp-card-padding) * -1);
	left: calc(var(--cvp-card-padding) * -1);
	right: calc(var(--cvp-card-padding) * -1);
	bottom: calc(var(--cvp-card-padding) * -1);
	z-index: 1;
}

/* ---------- Overlay: arranjo "Mosaico" (reaproveita a grade do Featured) ---------- */
.cvp-layout--overlay-mosaic {
	grid-template-columns: repeat(4, 1fr);
}

.cvp-layout--overlay-mosaic .cvp-card:first-child {
	grid-column: span 2;
	grid-row: span 2;
	min-height: var(--cvp-featured-image-height, 360px);
}

.cvp-layout--overlay-mosaic .cvp-card:not(:first-child) {
	min-height: var(--cvp-featured-tile-height, 200px);
}

/* ---------- Big Featured + Posts ---------- */
.cvp-layout--featured .cvp-card:first-child {
	grid-column: span 2;
	grid-row: span 2;
}

.cvp-layout--featured .cvp-card:first-child .cvp-card__image {
	height: var(--cvp-featured-image-height, 360px);
	aspect-ratio: auto;
}

/* Equaliza a altura das imagens dos itens menores para formar um bloco
   visualmente coeso ao lado do item em destaque. */
.cvp-layout--featured .cvp-card:not(:first-child) .cvp-card__image {
	height: var(--cvp-featured-tile-height, 200px);
	aspect-ratio: auto;
}

.cvp-layout--featured-overlay .cvp-card:first-child .cvp-card__image {
	height: 100%;
}

.cvp-layout--featured-overlay .cvp-card:not(:first-child) .cvp-card__image {
	height: 100%;
}

/* ---------- Masonry / Pinterest (colunas fluidas, alturas variadas) ---------- */
.cvp-layout--masonry,
.cvp-layout--pinterest {
	column-count: var(--cvp-cols-desktop);
	column-gap: var(--cvp-gap-h);
}

.cvp-layout--masonry .cvp-card,
.cvp-layout--pinterest .cvp-card {
	break-inside: avoid;
	margin-bottom: var(--cvp-gap-v);
}

/* ---------- List (colunas responsivas, até 3) ---------- */
.cvp-layout--list {
	display: grid;
	grid-template-columns: repeat(var(--cvp-list-cols-desktop, 1), 1fr);
	column-gap: var(--cvp-gap-h);
	row-gap: var(--cvp-gap-v);
}

.cvp-layout--list .cvp-card {
	flex-direction: row;
	align-items: flex-start;
	gap: 16px;
}

.cvp-layout--list .cvp-card__image {
	width: 40%;
	flex: 0 0 40%;
	margin: 0;
}

.cvp-layout--list .cvp-card__content {
	display: flex;
	flex-direction: column;
	gap: var(--cvp-card-gap);
	flex: 1 1 auto;
	min-width: 0;
}

/* ---------- Timeline (coluna única, linha do tempo lateral) ---------- */
.cvp-layout--timeline {
	display: flex;
	flex-direction: column;
	gap: var(--cvp-gap-v);
	position: relative;
	padding-left: 24px;
	border-left: 2px solid #e0e0e0;
}

.cvp-layout--timeline .cvp-card {
	position: relative;
	flex-direction: row;
	align-items: flex-start;
	gap: 16px;
}

.cvp-layout--timeline .cvp-card__image {
	width: 220px;
	flex: 0 0 220px;
	margin: 0;
}

.cvp-layout--timeline .cvp-card__content {
	display: flex;
	flex-direction: column;
	gap: var(--cvp-card-gap);
	flex: 1 1 auto;
	min-width: 0;
}

.cvp-layout--timeline .cvp-card::before {
	content: "";
	position: absolute;
	left: -30px;
	top: 20px;
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: #2271b1;
}

/* ---------- Accordion (padrão "Collapse") ---------- */
.cvp-layout--accordion {
	display: flex;
	flex-direction: column;
	gap: var(--cvp-gap-v);
}

.cvp-layout--accordion .cvp-card {
	flex-direction: column;
	gap: 0;
	padding: 0;
}

.cvp-card__accordion-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: var(--cvp-card-padding);
	cursor: pointer;
}

.cvp-card__accordion-header .cvp-card__title {
	flex: 1 1 auto;
	min-width: 0;
}

.cvp-card__accordion-body {
	display: none;
	flex-direction: column;
	gap: var(--cvp-card-gap);
	padding: 0 var(--cvp-card-padding) var(--cvp-card-padding);
}

.cvp-layout--accordion .cvp-card.is-open .cvp-card__accordion-body {
	display: flex;
}

.cvp-layout--accordion .cvp-card__image {
	margin: 0 0 4px;
	width: 100%;
}

.cvp-layout--accordion .cvp-card__toggle {
	flex: 0 0 auto;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	border: 1px solid #ddd;
	background: #fff;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: transform 0.2s ease;
}

.cvp-layout--accordion .cvp-card.is-open .cvp-card__toggle {
	transform: rotate(180deg);
}

.cvp-layout--accordion .cvp-card__toggle:focus-visible {
	outline: 2px solid #2271b1;
	outline-offset: 2px;
}

/* ---------- Tags recolhíveis (usa <details>/<summary> nativo) ---------- */
.cvp-card__tags--collapsible {
	font-size: 0.75em;
}

.cvp-card__tags--collapsible summary {
	cursor: pointer;
	color: #2271b1;
	list-style: none;
}

.cvp-card__tags--collapsible summary::-webkit-details-marker {
	display: none;
}

.cvp-card__tags--collapsible summary::before {
	content: "▸ ";
}

.cvp-card__tags--collapsible[open] summary::before {
	content: "▾ ";
}

.cvp-card__tags--collapsible .cvp-card__tags-list {
	margin-top: 6px;
}

.cvp-card__tags--collapsible .cvp-card__tags-list a {
	font-size: 1em;
	text-decoration: none;
	color: #2271b1;
	margin-right: 6px;
}

/* ---------- Carousel ---------- */
.cvp-carousel {
	position: relative;
	display: flex;
	align-items: center;
	gap: 8px;
}

.cvp-carousel__viewport {
	overflow: hidden;
	flex: 1;
	width: 100%;
}

.cvp-carousel__track {
	display: flex;
	gap: var(--cvp-carousel-gap, 20px);
	transition: transform var(--cvp-transition-speed, 400ms) ease;
	will-change: transform;
}

.cvp-carousel__track.is-jumping {
	transition: none;
}

.cvp-carousel__track > .cvp-card {
	flex: 0 0 calc((100% - (var(--cvp-cols-desktop) - 1) * var(--cvp-carousel-gap, 20px)) / var(--cvp-cols-desktop));
}

.cvp-carousel__arrow {
	flex: 0 0 auto;
	width: var(--cvp-arrow-size, 40px);
	height: var(--cvp-arrow-size, 40px);
	border-radius: var(--cvp-arrow-radius, 50%);
	border: var(--cvp-arrow-border-width, 1px) solid var(--cvp-arrow-border, rgba(221,221,221,1));
	background: var(--cvp-arrow-bg, #fff);
	color: var(--cvp-arrow-color, #222);
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 2;
}

.cvp-carousel__arrow:hover {
	background: var(--cvp-arrow-hover-bg, #2271b1);
	color: var(--cvp-arrow-hover-color, #fff);
}

.cvp-carousel__arrow:focus-visible {
	outline: 2px solid #2271b1;
	outline-offset: 2px;
}

.cvp-carousel__dots {
	position: absolute;
	bottom: -28px;
	left: 0;
	right: 0;
	display: flex;
	justify-content: center;
	gap: 6px;
}

.cvp-carousel__dots button {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	border: none;
	background: var(--cvp-dot-inactive, #ccc);
	padding: 0;
	cursor: pointer;
}

.cvp-carousel__dots button.is-active {
	background: var(--cvp-dot-active, #2271b1);
}

@media (prefers-reduced-motion: reduce) {
	.cvp-carousel__track {
		transition: none;
	}
}

/* ---------- Filters ---------- */
.cvp-filters {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	align-items: flex-end;
	margin-bottom: 20px;
}

.cvp-filters__field {
	display: flex;
	flex-direction: column;
	font-size: 0.85em;
	gap: 4px;
}

.cvp-filters__field--checkbox,
.cvp-filters__field--radio,
.cvp-filters__field--buttons {
	border: none;
	padding: 0;
	margin: 0;
}

.cvp-filters__submit {
	padding: 8px 16px;
	border: none;
	background: #2271b1;
	color: #fff;
	border-radius: 4px;
	cursor: pointer;
}

/* ---------- Pagination ---------- */
.cvp-pagination {
	margin-top: 24px;
	text-align: center;
}

.cvp-pagination--traditional ul,
.cvp-pagination--ajax ul {
	list-style: none;
	display: inline-flex;
	gap: 6px;
	padding: 0;
	margin: 0;
}

.cvp-pagination--traditional a,
.cvp-pagination--traditional span,
.cvp-pagination--ajax a,
.cvp-pagination--ajax span {
	display: inline-block;
	padding: 6px 12px;
	border: var(--cvp-page-border-width, 1px) solid var(--cvp-page-border-color, #ddd);
	border-radius: var(--cvp-page-radius, 4px);
	text-decoration: none;
	color: var(--cvp-page-color, #555);
	background: var(--cvp-page-bg, #fff);
	position: relative;
	z-index: 9999;
	transition: color .2s ease, background-color .2s ease, border-color .2s ease;
}
.cvp-pagination--traditional a:hover,
.cvp-pagination--traditional a:focus-visible,
.cvp-pagination--ajax a:hover,
.cvp-pagination--ajax a:focus-visible {
	color: var(--cvp-page-hover-color, #fff);
	background: var(--cvp-page-hover-bg, #2271b1);
	border-color: var(--cvp-page-hover-bg, #2271b1);
}
.cvp-pagination--traditional span.current,
.cvp-pagination--ajax span.current,
.cvp-pagination--traditional .current,
.cvp-pagination--ajax .current {
	background: var(--cvp-page-active-bg, #2271b1);
	border-color: var(--cvp-page-active-bg, #2271b1);
	color: var(--cvp-page-active-color, #fff);
}

.cvp-load-more {
	width:var(--cvp-load-width,auto);
	height:var(--cvp-load-height,auto);
	padding:var(--cvp-load-pt,10px) var(--cvp-load-pr,24px) var(--cvp-load-pb,10px) var(--cvp-load-pl,24px);
	border:var(--cvp-load-border-width,1px) solid var(--cvp-load-border-color,#ddd);
	background:var(--cvp-load-bg,#fff);
	border-radius:var(--cvp-load-radius,4px);
	color:var(--cvp-load-color,#222);
	font-size:var(--cvp-load-font-size,16px);
	position: relative;
	z-index: 9999;
	cursor:pointer;
	transition:color .2s ease, background-color .2s ease, border-color .2s ease;
}
.cvp-load-more:hover:not([disabled]),
.cvp-load-more:focus-visible:not([disabled]) {
	color:var(--cvp-load-hover-color,#fff);
	background:var(--cvp-load-hover-bg,#2271b1);
}

.cvp-load-more[disabled] {
	opacity: 0.5;
	cursor: default;
}

.cvp-no-results {
	text-align: center;
	color: #777;
	padding: 40px 0;
}

/* ---------- Responsive ---------- */
@media (max-width: 1024px) {
	.cvp-layout--grid,
	.cvp-layout--pinterest,
	.cvp-layout--overlay,
	.cvp-layout--featured {
		grid-template-columns: repeat(var(--cvp-cols-tablet), 1fr);
	}

	.cvp-layout--masonry,
	.cvp-layout--pinterest {
		column-count: var(--cvp-cols-tablet);
	}

	.cvp-layout--list {
		grid-template-columns: repeat(var(--cvp-list-cols-tablet, 1), 1fr);
	}

	.cvp-carousel__track > .cvp-card {
		flex-basis: calc((100% - (var(--cvp-cols-tablet) - 1) * var(--cvp-carousel-gap, 20px)) / var(--cvp-cols-tablet));
	}

	.cvp-layout--featured .cvp-card:first-child {
		grid-column: span 2;
		grid-row: span 1;
	}

	.cvp-layout--featured .cvp-card:first-child .cvp-card__image,
	.cvp-layout--featured-overlay .cvp-card:first-child .cvp-card__image {
		height: var(--cvp-featured-tile-height, 200px);
	}
}

@media (max-width: 640px) {
	.cvp-layout--grid,
	.cvp-layout--pinterest,
	.cvp-layout--overlay,
	.cvp-layout--featured {
		grid-template-columns: repeat(var(--cvp-cols-mobile), 1fr);
	}

	.cvp-layout--masonry,
	.cvp-layout--pinterest {
		column-count: var(--cvp-cols-mobile);
	}

	.cvp-layout--list {
		grid-template-columns: repeat(var(--cvp-list-cols-mobile, 1), 1fr);
	}

	.cvp-layout--list .cvp-card,
	.cvp-layout--timeline .cvp-card {
		flex-direction: column;
	}

	.cvp-layout--list .cvp-card__image,
	.cvp-layout--timeline .cvp-card__image {
		width: 100%;
		flex-basis: auto;
	}

	.cvp-layout--featured .cvp-card:first-child .cvp-card__image,
	.cvp-layout--featured .cvp-card:not(:first-child) .cvp-card__image {
		height: auto;
		aspect-ratio: var(--cvp-ratio, 16 / 9);
	}

	.cvp-layout--featured-overlay .cvp-card .cvp-card__image {
		height: 100%;
		aspect-ratio: auto;
	}

	.cvp-carousel__track > .cvp-card {
		flex-basis: calc((100% - (var(--cvp-cols-mobile) - 1) * var(--cvp-carousel-gap, 20px)) / var(--cvp-cols-mobile));
	}

	.cvp-layout--featured .cvp-card:first-child {
		grid-column: span 1;
		grid-row: span 1;
	}
}

.cvp-layout--overlay .cvp-card__stretched-link::after, .cvp-layout--featured-overlay .cvp-card__stretched-link::after { content:''; position:absolute; inset:0; }
.cvp-layout--overlay .cvp-card__image, .cvp-layout--featured-overlay .cvp-card__image { pointer-events:none; }

.cvp-layout--featured[class*='cvp-featured-variant-']{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-flow:dense}.cvp-layout--featured[class*='cvp-featured-variant-'] .cvp-card{min-width:0}.cvp-layout--featured .cvp-card__image{margin-bottom:calc(var(--cvp-card-gap) * -1)}.cvp-featured-variant-big_post_2 .cvp-card:first-child,.cvp-featured-variant-overlay_2 .cvp-card:first-child{grid-column:span 2;grid-row:span 2}.cvp-featured-variant-overlay_3 .cvp-card:first-child{grid-column:span 2;grid-row:span 2}.cvp-featured-variant-overlay_3 .cvp-card:nth-child(2),.cvp-featured-variant-overlay_3 .cvp-card:nth-child(3){grid-column:span 2}.cvp-featured-variant-overlay_4 .cvp-card:first-child{grid-column:span 2}.cvp-featured-variant-overlay_4 .cvp-card:nth-child(2){grid-row:span 2}.cvp-featured-variant-overlay_5 .cvp-card:first-child{grid-column:span 4}.cvp-featured-variant-overlay_6 .cvp-card:first-child{grid-column:span 2;grid-row:span 2}.cvp-featured-variant-overlay_7 .cvp-card:nth-child(-n+2){grid-column:span 2;grid-row:span 2}.cvp-featured-variant-overlay_8 .cvp-card:first-child{grid-column:span 4;grid-row:span 2}.cvp-layout--featured[class*='cvp-featured-variant-'] .cvp-card__image{height:var(--cvp-featured-tile-height,200px);aspect-ratio:auto}.cvp-layout--featured[class*='cvp-featured-variant-'] .cvp-card:first-child .cvp-card__image{height:var(--cvp-featured-image-height,360px)}
.cvp-layout--featured:not(.cvp-layout--featured-overlay)[class*='cvp-featured-variant-'] .cvp-card__image-tag{height:100%;width:100%;object-fit:var(--cvp-fit,cover)}.cvp-layout--featured-overlay[class*='cvp-featured-variant-'] .cvp-card__image{height:100%}.cvp-layout--featured-overlay[class*='cvp-featured-variant-'] .cvp-card{min-height:var(--cvp-featured-tile-height,200px)}.cvp-layout--featured-overlay[class*='cvp-featured-variant-'] .cvp-card:first-child{min-height:var(--cvp-featured-image-height,360px)}@media(max-width:1024px){.cvp-layout--featured[class*='cvp-featured-variant-']{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.cvp-layout--featured[class*='cvp-featured-variant-']{grid-template-columns:1fr}.cvp-layout--featured[class*='cvp-featured-variant-'] .cvp-card:first-child,.cvp-layout--featured[class*='cvp-featured-variant-'] .cvp-card:nth-child(n){grid-column:span 1;grid-row:span 1}}

/* Overlay absoluto: top/right/bottom/left definem a caixa inteira; não combinar com height:100%. */
.cvp-layout--overlay .cvp-card__image,
.cvp-layout--featured-overlay .cvp-card__image,
.cvp-layout--overlay[class*='cvp-featured-variant-'] .cvp-card__image,
.cvp-layout--featured-overlay[class*='cvp-featured-variant-'] .cvp-card__image { height:auto!important; width:auto!important; max-width:none; aspect-ratio:auto!important; }

/* Overlay opcional para Carousel e Slider. A imagem permanece no fluxo
   normal para respeitar aspect-ratio, fixed-height e largura customizada. */
.cvp-layout--carousel-overlay .cvp-card {
	position:relative;
	isolation:isolate;
	color:#fff;
	justify-content:flex-end;
}
.cvp-layout--carousel-overlay .cvp-card::before {
	content:'';
	position:absolute;
	inset:0;
	background:linear-gradient(to top,
		rgba(var(--cvp-carousel-overlay-end,0,0,0), var(--cvp-carousel-overlay-end-alpha,.85)) 0%,
		rgba(var(--cvp-carousel-overlay-start,0,0,0), var(--cvp-carousel-overlay-start-alpha,0)) var(--cvp-carousel-overlay-height,45%),
	transparent var(--cvp-carousel-overlay-height,45%));
	pointer-events:none;
	z-index:1;
}
.cvp-layout--carousel-overlay .cvp-card__image {
	position:relative;
	z-index:0;
}
.cvp-layout--carousel-overlay .cvp-card__image-tag { position:relative; z-index:0; }
.cvp-layout--carousel-overlay .cvp-card__content,
.cvp-layout--carousel-overlay .cvp-card > *:not(.cvp-card__image):not(.cvp-card__stretched-link):not(.cvp-card__image-tag):not(.cvp-card__overlay-content) { position:relative; z-index:2; }
.cvp-layout--carousel-overlay .cvp-card__stretched-link { z-index:3; }

/* Composição do Carousel/Slider com overlay inferior: texto sobre a faixa
   escura na base, sem alterar a caixa dimensional da imagem. */
.cvp-layout--carousel-overlay .cvp-card > .cvp-card__overlay-content {
	position:absolute !important;
	left:0;
	right:0;
	bottom:0;
	z-index:2;
	width:100%;
	height:auto;
	min-height:0;
	padding:var(--cvp-card-padding,16px);
	padding-top:32px;
	color:#fff;
}
.cvp-layout--carousel-overlay .cvp-card__overlay-content > * { position:relative; z-index:2; }
.cvp-layout--carousel-overlay .cvp-card__overlay-content a { color:inherit; }
.cvp-layout--carousel-overlay .cvp-card__image {
	margin-bottom:calc(var(--cvp-card-padding,16px) * -1) !important;
}

/* Lista: composição editorial com divisor entre itens e fundo alternado opcional. */
.cvp-layout--list {
	row-gap:0;
}
.cvp-layout--list .cvp-card {
	gap:var(--cvp-list-image-gap,16px);
	padding-bottom:var(--cvp-list-row-gap,20px);
	border-bottom:var(--cvp-list-divider-width,1px) solid var(--cvp-list-divider-color,transparent);
	background:transparent;
}
.cvp-layout--list .cvp-card:nth-child(even) {
	background:var(--cvp-list-alt-bg,transparent);
}
.cvp-layout--list .cvp-card:last-child {
	border-bottom:0;
	padding-bottom:var(--cvp-list-row-gap,20px);
}
.cvp-layout--list .cvp-card__content {
	gap:var(--cvp-card-gap,8px);
	padding-top:0;
}
@media (max-width: 900px) {
	.cvp-layout--list { grid-template-columns:repeat(var(--cvp-list-cols-tablet,1),1fr); }
}
@media (max-width: 600px) {
	.cvp-layout--list { grid-template-columns:repeat(var(--cvp-list-cols-mobile,1),1fr); }
}

/* Excerpt linkado deve respeitar a cor e a tipografia configuradas no próprio Excerpt. */
.cvp-card__excerpt a,
.cvp-card__excerpt a:visited,
.cvp-card__excerpt a:hover,
.cvp-card__excerpt a:focus { color: inherit; text-decoration: inherit; }
