/*
Theme Name: Circuito Paulista
Theme URI: https://github.com/jpfalves/circuito_paulista
Author: JP Tech Lab
Author URI: https://github.com/jpfalves
Description: Tema oficial do Jornal Digital Regional e da TV Circuito Paulista.
Version: 0.9.0
Update URI: https://github.com/jpfalves/circuito_paulista
Requires at least: 6.1
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: circuito-paulista
*/

/*
 * A ordem dos itens do menu principal segue a estrutura salva no WordPress.
 * A única exceção é a TV Circuito Paulista, que permanece no fim do menu,
 * preservando o bloco visual destacado definido pelo tema.
 */
.primary-menu > .menu-item {
	order: 0;
}

.primary-menu > .menu-item--tv {
	order: 999;
	margin-left: auto;
}

/*
 * O rodapé deve preservar as cores originais do arquivo oficial da JP Tech Lab.
 */
.site-footer .site-footer__developer-logo img {
	filter: none !important;
}

/*
 * Usa a arte validada enviada para a página da TV. A imagem antiga do tema fica
 * escondida apenas neste círculo para não afetar nenhum outro logotipo do portal.
 */
.tv-page .tv-page-hero__logo {
	background-color: var(--cp-white);
	background-image: url("https://portalcircuitopaulista.com.br/wp-content/uploads/2026/09/ChatGPT-Image-1-de-set.-de-2026-14_35_27-e1788657366664.png");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 86% auto;
}

.tv-page .tv-page-hero__logo img {
	visibility: hidden;
}

/*
 * O anúncio abaixo das notícias por cidade ocupa toda a largura disponível e
 * preserva a proporção natural do arquivo enviado, sem crop nem deformação.
 */
.cp-home-cities-slot,
.cp-home-cities-slot .cp-media-card--full,
.cp-home-cities-slot .cp-media-card--full > a,
.cp-slot-area--after-cities,
.cp-slot-area--after-cities a {
	width: 100%;
	max-width: none;
}

.cp-home-cities-slot .cp-media-card__image,
.cp-slot-area--after-cities img {
	display: block;
	width: 100% !important;
	max-width: 100% !important;
	height: auto !important;
	aspect-ratio: auto !important;
	object-fit: contain;
	object-position: center;
}

/* Notícias das cidades — composição fiel ao mockup. */
.cities-section .section-heading {
	margin-bottom: 0.65rem;
}

.cities-section .section-kicker {
	display: none;
}

.cities-section #cities-title {
	margin: 0;
	color: var(--cp-navy);
	font-family: var(--cp-font-heading);
	font-size: clamp(1.35rem, 2vw, 1.65rem);
	font-weight: 700;
	line-height: 1.05;
	text-transform: uppercase;
}

.cities-section #cities-title {
	font-size: 0;
}

.cities-section #cities-title::after {
	content: "Notícias das cidades";
	font-family: var(--cp-font-heading);
	font-size: clamp(1.35rem, 2vw, 1.65rem);
	font-weight: 700;
	line-height: 1.05;
	text-transform: uppercase;
}

.cities-grid {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 0.7rem;
}

.city-card {
	position: relative;
	display: flex;
	aspect-ratio: 7 / 5;
	align-items: flex-end;
	min-width: 0;
	overflow: hidden;
	border: 1px solid rgba(3, 20, 39, 0.12);
	border-radius: 0.28rem;
	background-color: #dfe5eb;
	/*
	 * main.css é carregado depois e possui um shorthand `background` legado.
	 * Os assets locais são gerados em 7:5 para preencher o card sem faixas.
	 */
	background-repeat: no-repeat !important;
	background-position: center center !important;
	background-size: cover !important;
	box-shadow: 0 0.15rem 0.45rem rgba(3, 20, 39, 0.12);
	isolation: isolate;
	transition: transform 0.18s ease, box-shadow 0.18s ease;
}

.city-card::before {
	position: absolute;
	z-index: 1;
	inset: 0;
	background: linear-gradient(
		to top,
		rgba(0, 0, 0, 0.58) 0%,
		rgba(0, 0, 0, 0.20) 34%,
		rgba(0, 0, 0, 0) 62%
	);
	content: "";
	pointer-events: none;
}

.city-card::after {
	position: absolute;
	z-index: 2;
	right: 0;
	bottom: 0;
	left: 0;
	width: 100%;
	min-height: 2.35rem;
	border-radius: 0;
	background: rgba(0, 0, 0, 0.68);
	content: "";
	pointer-events: none;
}

.city-card span {
	position: absolute;
	z-index: 3;
	right: 0;
	bottom: 0;
	left: 0;
	display: flex;
	width: 100%;
	min-height: 2.35rem;
	align-items: center;
	justify-content: center;
	margin: 0;
	padding: 0.28rem 0.45rem;
	color: #fff;
	font-family: var(--cp-font-heading);
	font-size: clamp(0.76rem, 1vw, 1rem);
	font-weight: 700;
	line-height: 1.02;
	letter-spacing: 0.015em;
	text-align: center;
	text-shadow: 0 1px 3px rgba(0, 0, 0, 0.85);
	text-transform: uppercase;
	overflow-wrap: anywhere;
}

.city-card:nth-child(6) span,
.city-card:nth-child(8) span {
	font-size: clamp(0.7rem, 0.9vw, 0.9rem);
}

.city-card:hover,
.city-card:focus-visible {
	color: #fff;
	transform: translateY(-2px);
	box-shadow: 0 0.45rem 1rem rgba(3, 20, 39, 0.2);
}

/* Imagens locais, padronizadas no build em WebP 1400 × 1000 (7:5), qualidade 83. */
.city-card:nth-child(1) {
	background-image: url("assets/images/cidades/aguas-de-lindoia.webp") !important;
}

.city-card:nth-child(2) {
	background-image: url("assets/images/cidades/amparo.webp") !important;
}

.city-card:nth-child(3) {
	background-image: url("assets/images/cidades/holambra.webp") !important;
}

.city-card:nth-child(4) {
	background-image: url("assets/images/cidades/jaguariuna.webp") !important;
}

.city-card:nth-child(5) {
	background-image: url("assets/images/cidades/lindoia.webp") !important;
}

.city-card:nth-child(6) {
	background-image: url("assets/images/cidades/monte-alegre-do-sul.webp") !important;
}

.city-card:nth-child(7) {
	background-image: url("assets/images/cidades/pedreira.webp") !important;
}

.city-card:nth-child(8) {
	background-image: url("assets/images/cidades/santo-antonio-de-posse.webp") !important;
}

.city-card:nth-child(9) {
	background-image: url("assets/images/cidades/serra-negra.webp") !important;
}

.city-card:nth-child(10) {
	background-image: url("assets/images/cidades/socorro.webp") !important;
}

/* Cartão do autor exibido ao final das notícias individuais. */
.single-news-author {
	display: grid;
	grid-template-columns: 7rem minmax(0, 1fr);
	gap: 1.25rem;
	align-items: start;
	margin-top: 2rem;
	padding: 1.4rem;
	border: 1px solid rgba(3, 20, 39, 0.12);
	border-radius: 0.35rem;
	background: #fff;
}

.single-news-author__avatar {
	display: block;
	width: 7rem;
	height: 7rem;
	border-radius: 50%;
	object-fit: cover;
}

.single-news-author__name {
	margin: 0 0 0.45rem;
	color: var(--cp-navy);
	font-family: var(--cp-font-heading);
	font-size: clamp(1.15rem, 2vw, 1.45rem);
	font-weight: 700;
	line-height: 1.15;
}

.single-news-author__name a {
	color: inherit;
	text-decoration: none;
}

.single-news-author__name a:hover,
.single-news-author__name a:focus-visible {
	text-decoration: underline;
}

.single-news-author__bio {
	color: var(--cp-text);
	font-size: 0.98rem;
	line-height: 1.65;
}

.single-news-author__bio p {
	margin: 0;
}

@media (max-width: 900px) {
	.cities-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 520px) {
	.cities-grid {
		grid-template-columns: 1fr;
	}

	.city-card {
		aspect-ratio: 7 / 5;
	}

	.city-card::after {
		right: 0;
		bottom: 0;
		left: 0;
		width: 100%;
		min-height: 2.15rem;
	}

	.city-card span {
		right: 0;
		bottom: 0;
		left: 0;
		width: 100%;
		min-height: 2.15rem;
		padding: 0.25rem 0.4rem;
		font-size: 0.88rem;
	}

	.city-card:nth-child(6) span,
	.city-card:nth-child(8) span {
		font-size: 0.8rem;
	}

	.single-news-author {
		grid-template-columns: 4.75rem minmax(0, 1fr);
		gap: 0.9rem;
		padding: 1rem;
	}

	.single-news-author__avatar {
		width: 4.75rem;
		height: 4.75rem;
	}
}


/* Player da Rádio Notícia exibido acima da publicidade lateral. */
.cp-sidebar-radio {
	width: 100%;
	margin-bottom: 0.35rem;
	padding: 1rem;
	border: 1px solid var(--cp-border);
	background: var(--cp-white);
}

.cp-sidebar-radio__heading {
	display: flex;
	align-items: center;
	gap: 0.8rem;
	margin-bottom: 0.85rem;
}

.cp-sidebar-radio__title {
	margin: 0;
	color: var(--cp-navy);
	font-family: var(--cp-font-heading);
	font-size: 1.05rem;
	font-weight: 700;
	line-height: 1.1;
	text-transform: uppercase;
	white-space: nowrap;
}

.cp-sidebar-radio__heading::after {
	flex: 1 1 auto;
	height: 2px;
	background: var(--cp-red);
	content: "";
}

.cp-sidebar-radio__player {
	width: 100%;
	height: 58px;
	overflow: hidden;
	background: #1d2025;
}

.cp-sidebar-radio__player iframe {
	display: block;
	width: 100%;
	height: 600px;
	margin: 0;
	border: 0;
}


/* 0.8.1 — banners horizontais ocupam 100% do slot sem bordas internas. */
.cp-slot-area--top,
.cp-slot-area--after-latest,
.cp-slot-area--after-cities,
.cp-media-card--top,
.cp-media-card--wide,
.cp-media-card--full {
	overflow: hidden;
}

.cp-slot-area--top .cp-slot-item,
.cp-slot-area--after-latest .cp-slot-item,
.cp-slot-area--after-cities .cp-slot-item,
.cp-slot-area--top .cp-slot-item > *,
.cp-slot-area--after-latest .cp-slot-item > *,
.cp-slot-area--after-cities .cp-slot-item > *,
.cp-slot-area--top figure,
.cp-slot-area--after-latest figure,
.cp-slot-area--after-cities figure,
.cp-slot-area--top .wp-block-image,
.cp-slot-area--after-latest .wp-block-image,
.cp-slot-area--after-cities .wp-block-image,
.cp-slot-area--top .widget_media_image,
.cp-slot-area--after-latest .widget_media_image,
.cp-slot-area--after-cities .widget_media_image,
.cp-slot-area--top a,
.cp-slot-area--after-latest a,
.cp-slot-area--after-cities a,
.cp-media-card--top a,
.cp-media-card--wide a,
.cp-media-card--full a {
	width: 100% !important;
	max-width: 100% !important;
	margin: 0 !important;
	padding: 0 !important;
}

.cp-slot-area--top img,
.cp-slot-area--after-latest img,
.cp-slot-area--after-cities img,
.cp-media-card--top .cp-media-card__image,
.cp-media-card--wide .cp-media-card__image,
.cp-media-card--full .cp-media-card__image {
	display: block !important;
	width: 100% !important;
	max-width: 100% !important;
	height: auto !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	aspect-ratio: auto !important;
	object-fit: initial !important;
	object-position: initial !important;
}


/* Publicidade 728 × 90 acima de Últimas notícias. */
.cp-home-before-latest-slot {
	width: 100%;
	margin: 0.8rem 0 1.15rem;
}

.cp-home-before-latest-slot,
.cp-home-before-latest-slot .cp-slot-area--before-latest,
.cp-home-before-latest-slot .cp-slot-item,
.cp-home-before-latest-slot .cp-media-card--before-latest,
.cp-home-before-latest-slot a,
.cp-home-before-latest-slot figure,
.cp-home-before-latest-slot .wp-block-image,
.cp-home-before-latest-slot .widget_media_image {
	width: 100% !important;
	max-width: none !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
	padding-left: 0 !important;
	padding-right: 0 !important;
}

.cp-home-before-latest-slot img,
.cp-media-card--before-latest .cp-media-card__image {
	display: block;
	width: 100% !important;
	max-width: 100% !important;
	height: auto !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	aspect-ratio: auto !important;
	object-fit: contain;
	object-position: center;
}


/* 0.8.3 — publicidade acima de Últimas notícias ocupa 100% da coluna. */
.cp-home-before-latest-slot > .cp-placeholder-card,
.cp-home-before-latest-slot > .cp-placeholder-card--wide {
	width: 100% !important;
	max-width: none !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}


/* Publicidade abaixo da TV Circuito Paulista — largura total. */
.cp-home-after-tv-slot {
	width: 100%;
	max-width: none;
	margin: 1.1rem 0 1.45rem;
}

.cp-home-after-tv-slot,
.cp-home-after-tv-slot .cp-slot-area--after-tv,
.cp-home-after-tv-slot .cp-slot-item,
.cp-home-after-tv-slot .cp-media-card--after-tv,
.cp-home-after-tv-slot a,
.cp-home-after-tv-slot figure,
.cp-home-after-tv-slot .wp-block-image,
.cp-home-after-tv-slot .widget_media_image,
.cp-home-after-tv-slot .cp-placeholder-card--wide {
	width: 100% !important;
	max-width: none !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
	padding-left: 0 !important;
	padding-right: 0 !important;
}

.cp-home-after-tv-slot img,
.cp-media-card--after-tv .cp-media-card__image {
	display: block !important;
	width: 100% !important;
	max-width: 100% !important;
	height: auto !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	aspect-ratio: auto !important;
	object-fit: initial !important;
	object-position: initial !important;
}


/* 0.8.9 — publicidade abaixo da TV em formato 728 × 255.
 * A proporção iguala visualmente a altura da peça ao anúncio lateral
 * 300 × 300 na largura desktop atual, sem reposicionar a coluna lateral. */
.cp-home-after-tv-slot > .cp-placeholder-card,
.cp-home-after-tv-slot > .cp-placeholder-card--wide {
	width: 100% !important;
	max-width: none !important;
	height: auto !important;
	min-height: 0 !important;
	aspect-ratio: 728 / 255;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

.cp-home-after-tv-slot .cp-slot-area--after-tv,
.cp-home-after-tv-slot .cp-slot-item,
.cp-home-after-tv-slot .cp-media-card--after-tv,
.cp-home-after-tv-slot .cp-media-card--after-tv > a,
.cp-home-after-tv-slot figure,
.cp-home-after-tv-slot .wp-block-image,
.cp-home-after-tv-slot .widget_media_image {
	width: 100% !important;
	max-width: none !important;
}

.cp-home-after-tv-slot img,
.cp-media-card--after-tv .cp-media-card__image {
	display: block !important;
	width: 100% !important;
	max-width: 100% !important;
	height: auto !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	aspect-ratio: auto !important;
	object-fit: initial !important;
	object-position: initial !important;
}
