/* =========================================================================
   Portal Notícias — sistema de design
   Tudo é dirigido por custom properties. As três identidades visuais
   (.pn-ident--manchete / --tribuna / --pulso) redefinem essas properties e,
   quando necessário, reescrevem estrutura.
   ========================================================================= */

:root {
	--pn-brand: var(--wp--preset--color--primary, #c8102e);
	--pn-brand-dark: var(--wp--preset--color--primary-dark, #8f0b20);
	--pn-ink: var(--wp--preset--color--ink, #111418);
	--pn-ink-soft: var(--wp--preset--color--ink-soft, #5b6672);
	--pn-surface: var(--wp--preset--color--surface, #fff);
	--pn-surface-alt: var(--wp--preset--color--surface-alt, #f5f6f8);
	--pn-surface-dark: var(--wp--preset--color--surface-dark, #0e1216);
	--pn-line: var(--wp--preset--color--border, #e3e6ea);

	--pn-font-sans: var(--wp--preset--font-family--sans);
	--pn-font-serif: var(--wp--preset--font-family--serif);
	--pn-font-display: var(--wp--preset--font-family--display);
	--pn-font-head: var(--pn-font-sans);
	--pn-font-body: var(--pn-font-sans);

	--pn-radius: 0px;
	--pn-head-weight: 800;
	--pn-head-tracking: -0.022em;
	--pn-head-leading: 1.08;

	--pn-topbar-bg: var(--pn-surface-alt);
	--pn-topbar-fg: var(--pn-ink-soft);
	--pn-masthead-bg: var(--pn-surface);
	--pn-masthead-fg: var(--pn-ink);
	--pn-nav-bg: var(--pn-surface);
	--pn-nav-fg: var(--pn-ink);
	--pn-footer-bg: var(--pn-surface-dark);
	--pn-footer-fg: rgba(255, 255, 255, 0.72);

	--pn-gutter: 1.75rem;
	--pn-shadow: none;
}

/* ---------- Identidade: Tribuna (jornal editorial impresso) ---------- */
.pn-ident--tribuna {
	--pn-font-head: var(--pn-font-serif);
	--pn-head-weight: 700;
	--pn-head-tracking: -0.008em;
	--pn-head-leading: 1.14;
	--pn-radius: 0px;
	--pn-topbar-bg: var(--pn-surface);
	--pn-topbar-fg: var(--pn-ink-soft);
	--pn-footer-bg: var(--pn-surface);
	--pn-footer-fg: var(--pn-ink-soft);
	--pn-gutter: 2.25rem;
	--pn-shadow: none;
}

/* ---------- Identidade: Pulso (TV news / ao vivo) ---------- */
.pn-ident--pulso {
	--pn-font-head: var(--pn-font-display);
	--pn-head-weight: 800;
	--pn-head-tracking: -0.04em;
	--pn-head-leading: 0.98;
	--pn-radius: 3px;
	--pn-topbar-bg: var(--pn-surface-dark);
	--pn-topbar-fg: rgba(255, 255, 255, 0.62);
	--pn-masthead-bg: var(--pn-surface-dark);
	--pn-masthead-fg: #fff;
	--pn-nav-bg: var(--pn-brand);
	--pn-nav-fg: #fff;
	--pn-gutter: 1.25rem;
	--pn-shadow: 0 2px 0 var(--pn-brand);
}

/* ---------- Identidade: Regional (portal utilitário, widgets) ---------- */
.pn-ident--regional {
	--pn-font-head: var(--pn-font-sans);
	--pn-head-weight: 800;
	--pn-head-tracking: -0.015em;
	--pn-head-leading: 1.12;
	--pn-radius: 4px;
	--pn-topbar-bg: var(--pn-surface-dark);
	--pn-topbar-fg: rgba(255, 255, 255, 0.85);
	--pn-masthead-bg: var(--pn-surface);
	--pn-masthead-fg: var(--pn-ink);
	--pn-nav-bg: var(--pn-surface);
	--pn-nav-fg: var(--pn-ink);
	--pn-gutter: 1.5rem;
	--pn-shadow: 0 1px 3px rgba(14, 18, 22, 0.08);
}

/* ---------- Identidade: Global (editorial internacional, BBC-like) ---------- */
.pn-ident--global {
	--pn-font-head: var(--pn-font-sans);
	--pn-head-weight: 700;
	--pn-head-tracking: -0.012em;
	--pn-head-leading: 1.18;
	--pn-radius: 0px;
	--pn-topbar-bg: transparent;
	--pn-topbar-fg: var(--pn-ink-soft);
	--pn-masthead-bg: var(--pn-surface);
	--pn-masthead-fg: var(--pn-ink);
	--pn-nav-bg: var(--pn-surface);
	--pn-nav-fg: var(--pn-ink);
	--pn-footer-bg: var(--pn-surface);
	--pn-footer-fg: var(--pn-ink-soft);
	--pn-gutter: 1.75rem;
	--pn-shadow: none;
	/* no Global, o vermelho é reservado só ao "AO VIVO" — nunca decorativo */
}

/* ---------- Identidade: Diário (mesma paleta/tipografia/estrutura do
   site parceiro spdiario.com.br — só estilo, sem copiar logo/nome/texto) ---------- */
.pn-ident--diario {
	--pn-brand: #ed000c;
	--pn-brand-dark: #b8000a;
	--pn-accent: #183c84;
	--pn-accent-dark: #122c61;
	--pn-section-label: #7c7c7c;
	/* No site real, manchete/nav/corpo usam Roboto; Raleway fica reservada
	   pros títulos de seção ("política", "esportes") e link "veja mais",
	   sempre em peso leve — o inverso do que a primeira versão desta
	   identidade tinha feito. */
	--pn-font-head: var(--wp--preset--font-family--roboto, var(--pn-font-sans));
	--pn-font-body: var(--wp--preset--font-family--roboto, var(--pn-font-sans));
	--pn-font-label: var(--wp--preset--font-family--raleway, var(--pn-font-sans));
	--pn-head-weight: 700;
	--pn-head-tracking: -0.005em;
	--pn-head-leading: 1.18;
	--pn-radius: 0px;
	--pn-topbar-bg: var(--pn-brand);
	--pn-topbar-fg: rgba(255, 255, 255, 0.92);
	--pn-masthead-bg: var(--pn-accent);
	--pn-masthead-fg: #fff;
	--pn-nav-bg: var(--pn-surface);
	--pn-nav-fg: #2c2c2c;
	--pn-gutter: 1.75rem;
	--pn-shadow: none;
}

/* =========================================================================
   Base
   ========================================================================= */

body {
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}
/* Seletor por atributo (especificidade maior que o `body { font-family }`
   gerado pelo theme.json global styles) garante que a identidade vença
   independente da ordem de carregamento das folhas de estilo. Só a
   Diário redefine `--pn-font-body` de verdade (Roboto); nas demais 5
   identidades o valor cai de volta em `--pn-font-sans`, sem mudança de
   comportamento. */
body[class*="pn-ident--"] {
	font-family: var(--pn-font-body);
}

.wp-block-post-title,
.wp-block-post-title a,
h1, h2, h3, h4 {
	font-family: var(--pn-font-head);
	letter-spacing: var(--pn-head-tracking);
	line-height: var(--pn-head-leading);
	font-weight: var(--pn-head-weight);
}

/* No mobile (maioria do tráfego), o navegador aplica um "tap highlight"
   escuro por cima do link ao tocar — como o texto do link já costuma
   trocar pra uma cor escura no :hover/:active (ex: --pn-brand), o toque
   engolia o texto por baixo do highlight, dando a impressão de "sumiu,
   ficou da cor do fundo". Sem highlight nativo, o :active abaixo garante
   feedback visual sem esconder o texto. */
* { -webkit-tap-highlight-color: transparent; }
a:active { color: var(--pn-brand); }

a { text-decoration: none; }

img { max-width: 100%; height: auto; }

/* =========================================================================
   Cabeçalho
   ========================================================================= */

/* -- Barra utilitária -- */
.pn-topbar {
	background: var(--pn-topbar-bg);
	color: var(--pn-topbar-fg);
	font-size: 0.75rem;
	letter-spacing: 0.02em;
	border-bottom: 1px solid var(--pn-line);
}
.pn-ident--pulso .pn-topbar { border-bottom-color: rgba(255, 255, 255, 0.1); }
.pn-topbar .wp-block-group { min-height: 34px; }
.pn-topbar p { margin: 0; color: inherit; }
.pn-topbar a { color: inherit; }
.pn-topbar a:hover { color: var(--pn-brand); }

.pn-topbar__date::first-letter { text-transform: uppercase; }

/* -- Masthead -- */
.pn-masthead {
	background: var(--pn-masthead-bg);
	color: var(--pn-masthead-fg);
	padding-block: 1.15rem;
	border-bottom: 3px solid var(--pn-brand);
}
.pn-masthead .wp-block-site-title a,
.pn-masthead .wp-block-site-title {
	color: var(--pn-masthead-fg);
	font-size: clamp(1.55rem, 1.1rem + 1.6vw, 2.35rem);
	line-height: 1;
	letter-spacing: -0.035em;
	font-weight: 900;
}

/* Tribuna: masthead central, filetes acima e abaixo, serifa grande */
.pn-ident--tribuna .pn-masthead {
	border-bottom: 1px solid var(--pn-ink);
	border-top: 3px double var(--pn-ink);
	padding-block: 1.6rem;
	text-align: center;
}
/* só o grupo direto vira coluna — o grupo interno (logo + título) continua em linha */
.pn-ident--tribuna .pn-masthead > .wp-block-group {
	position: relative;
	justify-content: center;
	flex-direction: column;
	gap: 0.35rem;
}
/* busca sai do fluxo central e ancora à direita, sem empurrar o logo */
.pn-ident--tribuna .pn-masthead .wp-block-search {
	position: absolute;
	right: 0;
	top: 50%;
	transform: translateY(-50%);
	margin: 0;
}
.pn-ident--tribuna .wp-block-search__button {
	background: transparent;
	color: var(--pn-ink);
	border: 1px solid var(--pn-line);
}
.pn-ident--tribuna .pn-masthead .wp-block-site-title a {
	font-family: var(--pn-font-serif);
	font-weight: 800;
	letter-spacing: -0.02em;
	font-size: clamp(2rem, 1.2rem + 3vw, 3.4rem);
}
.pn-ident--tribuna .pn-masthead__tagline {
	display: block;
	font-size: 0.7rem;
	text-transform: uppercase;
	letter-spacing: 0.28em;
	color: var(--pn-ink-soft);
}
.pn-masthead__tagline { display: none; }

/* Pulso: masthead escuro sem régua de marca */
.pn-ident--pulso .pn-masthead { border-bottom: none; padding-block: 0.9rem; }

/* Diário: réplica fiel da estrutura de 2 faixas do spdiario.com.br —
   faixa vermelha com a logo centralizada + redes sociais à direita
   (`.pn-topbar--diario`, reaproveitando o slot da topbar em vez do
   masthead, já que a logo grande é o primeiro elemento no site real,
   antes de qualquer utilitário), e faixa azul-marinho com o tagline
   centralizado + busca à direita (`.pn-masthead--diario`). */
.pn-topbar--diario {
	border-bottom: none;
	padding-block: 0.6rem;
	text-align: center;
}
.pn-topbar--diario__row { position: relative; }
.pn-topbar--diario .wp-block-site-logo { margin: 0 auto; }
.pn-topbar--diario .pn-topbar__social {
	position: absolute;
	right: 0;
	top: 50%;
	transform: translateY(-50%);
	color: rgba(255, 255, 255, 0.9);
	font-weight: 300;
	gap: 0.5rem;
}
.pn-topbar--diario .pn-topbar__social p { margin: 0; }
.pn-topbar--diario .pn-topbar__social a:hover { opacity: 0.8; }

.pn-masthead--diario {
	border-bottom: none;
	padding-block: 0.5rem;
}
.pn-masthead--diario__row { position: relative; text-align: center; }
.pn-masthead--diario .wp-block-site-tagline {
	display: block;
	color: #fff;
	font-size: 0.95rem;
	font-weight: 300;
	letter-spacing: 0.02em;
}
.pn-masthead--diario .wp-block-search {
	position: absolute;
	right: 0;
	top: 50%;
	transform: translateY(-50%);
	margin: 0;
}
.pn-masthead--diario .wp-block-search__button {
	background: transparent;
	color: #fff;
	border: none;
}

/* -- Navegação de editorias -- */
.pn-nav {
	background: var(--pn-nav-bg);
	color: var(--pn-nav-fg);
	border-bottom: 1px solid var(--pn-line);
	font-size: 0.8rem;
}
.pn-ident--pulso .pn-nav { border-bottom: 1px solid rgba(255, 255, 255, 0.1); }
.pn-ident--tribuna .pn-nav { border-bottom: 1px solid var(--pn-ink); }

.pn-nav .wp-block-navigation {
	font-family: var(--pn-font-body);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.07em;
	gap: 1.5rem;
}
.pn-nav .wp-block-navigation-item__content {
	color: var(--pn-nav-fg);
	padding-block: 0.8rem;
	border-bottom: 3px solid transparent;
	transition: color 0.15s, border-color 0.15s;
}
.pn-nav .wp-block-navigation-item__content:hover {
	color: var(--pn-brand);
	border-bottom-color: var(--pn-brand);
}
.pn-ident--pulso .pn-nav .wp-block-navigation-item__content:hover { color: #fff; }
.pn-ident--tribuna .pn-nav .wp-block-navigation {
	justify-content: center;
	font-weight: 600;
	letter-spacing: 0.14em;
	font-size: 0.72rem;
}

/* Diário: navbar branca com editorias em caixa alta, peso normal — igual
   ao spdiario.com.br (nada de negrito/peso pesado aqui, só maiúsculas) */
.pn-ident--diario .pn-nav { border-bottom: 1px solid var(--pn-line); }
.pn-ident--diario .pn-nav .wp-block-navigation {
	justify-content: center;
	font-weight: 400;
	letter-spacing: 0.02em;
	font-size: 0.78rem;
}
.pn-ident--diario .pn-nav .wp-block-navigation-item__content:hover {
	color: var(--pn-brand);
	border-bottom-color: var(--pn-brand);
}

/* -- Faixa de plantão -- */
.pn-breaking {
	background: var(--pn-brand);
	color: #fff;
	font-size: 0.82rem;
	font-weight: 600;
}
.pn-breaking__row { display: flex; gap: 0.9rem; align-items: center; min-height: 42px; flex-wrap: nowrap; }
.pn-breaking__label {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	flex: 0 0 auto;
	background: rgba(0, 0, 0, 0.22);
	padding: 0.2rem 0.6rem;
	font-size: 0.68rem;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.12em;
	border-radius: 2px;
	white-space: nowrap;
}
/* bolinha vermelha piscando, tipo indicador "AO VIVO" — pedido do
   usuário depois de ver a cobertura da CNN. Antes só existia (e só
   piscava) na identidade Pulso; virou padrão em todas. */
.pn-breaking__dot {
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: #fff;
	animation: pn-live-pulse 1.4s ease-in-out infinite;
}

/* Rolagem contínua das manchetes do plantão — a lista já vem duplicada
   no HTML (ver class-dynamic-bits.php) pra loop sem salto; a animação
   anda -50% (exatamente uma volta no conteúdo original) e reinicia. */
.pn-breaking__marquee { flex: 1 1 auto; overflow: hidden; min-width: 0; }
.pn-breaking__track {
	display: flex;
	gap: 2.5rem;
	list-style: none;
	margin: 0;
	padding: 0;
	white-space: nowrap;
	width: max-content;
	animation: pn-breaking-marquee 28s linear infinite;
}
.pn-breaking__marquee:hover .pn-breaking__track { animation-play-state: paused; }
.pn-breaking__track a { color: #fff; }
.pn-breaking__track li { flex: 0 0 auto; }
.pn-breaking__track li + li::before { content: "•"; margin-right: 2.5rem; opacity: 0.5; }
@keyframes pn-breaking-marquee {
	from { transform: translateX(0); }
	to { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce) {
	.pn-breaking__track { animation: none; }
	.pn-breaking__dot { animation: none; }
}

/* =========================================================================
   Chapéu / kicker — o elemento que mais diz "isto é um jornal"
   ========================================================================= */

.pn-kicker,
.pn-kicker a {
	font-family: var(--pn-font-body);
	font-size: 0.7rem;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.09em;
	color: var(--pn-brand);
	line-height: 1.2;
}
.pn-kicker { margin-bottom: 0.45rem; }
.pn-kicker a:hover { color: var(--pn-brand-dark); }

.pn-ident--tribuna .pn-kicker,
.pn-ident--tribuna .pn-kicker a {
	color: var(--pn-ink-soft);
	letter-spacing: 0.2em;
	font-weight: 700;
	font-size: 0.66rem;
}

.pn-ident--pulso .pn-kicker a {
	display: inline-block;
	background: var(--pn-brand);
	color: #fff;
	padding: 0.22rem 0.6rem;
	border-radius: 100px;
	font-size: 0.66rem;
	letter-spacing: 0.07em;
}
.pn-ident--pulso .pn-kicker a:hover { background: var(--pn-brand-dark); color: #fff; }

/* Diário: chapéu discreto, igual ao spdiario.com.br — Raleway normal,
   cor de texto comum (não é vermelho/negrito como nas outras identidades) */
.pn-ident--diario .pn-kicker,
.pn-ident--diario .pn-kicker a {
	font-family: var(--pn-font-label);
	font-size: 0.95rem;
	font-weight: 400;
	text-transform: none;
	letter-spacing: 0;
	color: var(--pn-ink);
}
.pn-ident--diario .pn-kicker a:hover { color: var(--pn-brand); }

/* Data / assinatura */
.pn-meta,
.wp-block-post-date {
	font-family: var(--pn-font-body);
	font-size: 0.78rem;
	color: var(--pn-ink-soft);
	letter-spacing: 0;
	font-weight: 400;
}

/* =========================================================================
   Cabeçalho de seção ("ECONOMIA ———")
   ========================================================================= */

.pn-section-head {
	display: flex;
	align-items: center;
	gap: 0.85rem;
	margin-bottom: 1.2rem;
	border-top: 3px solid var(--pn-ink);
	padding-top: 0.6rem;
}
.pn-section-head h2 {
	font-size: 1.05rem;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin: 0;
	color: var(--pn-ink);
	font-family: var(--pn-font-body);
}
.pn-section-head h2::before {
	content: "";
	display: inline-block;
	width: 0.55rem;
	height: 0.55rem;
	background: var(--pn-section-accent, var(--pn-brand));
	margin-right: 0.55rem;
	vertical-align: baseline;
}
.pn-ident--tribuna .pn-section-head {
	border-top: 1px solid var(--pn-ink);
	justify-content: center;
}
.pn-ident--tribuna .pn-section-head h2 {
	font-family: var(--pn-font-serif);
	text-transform: none;
	letter-spacing: 0.01em;
	font-size: 1.5rem;
	font-style: italic;
}
.pn-ident--tribuna .pn-section-head h2::before { display: none; }
.pn-ident--pulso .pn-section-head { border-top: none; }
.pn-ident--pulso .pn-section-head h2 {
	font-family: var(--pn-font-display);
	font-size: 1.35rem;
	letter-spacing: -0.02em;
	text-transform: none;
}
.pn-ident--pulso .pn-section-head h2::before {
	width: 4px;
	height: 1.15em;
	border-radius: 2px;
	transform: translateY(0.18em);
}

/* Diário: título de seção fino e cinza, sem caixa alta nem marcador —
   igual ao "política"/"esportes" do spdiario.com.br. O link "veja mais"
   fica plugado no mesmo lugar (`.pn-dia-section-more`, ver home-diario.php). */
.pn-ident--diario .pn-section-head {
	border-top: 1px solid var(--pn-line);
	justify-content: space-between;
}
.pn-ident--diario .pn-section-head h2 {
	font-family: var(--pn-font-label);
	font-weight: 300;
	font-size: 2rem;
	text-transform: capitalize;
	letter-spacing: 0;
	color: var(--pn-section-label);
}
.pn-ident--diario .pn-section-head h2::before { display: none; }
.pn-dia-section-more {
	font-family: var(--pn-font-label);
	font-weight: 300;
	font-size: 0.95rem;
	color: var(--pn-section-label);
	text-transform: capitalize;
	white-space: nowrap;
}
.pn-dia-section-more:hover { color: var(--pn-brand); }

/* =========================================================================
   Manchete principal (hero)
   ========================================================================= */

.pn-hero .wp-block-post-template { gap: 0; }

.pn-hero .wp-block-post-featured-image {
	margin-bottom: 1rem;
	overflow: hidden;
	border-radius: var(--pn-radius);
}
.pn-hero .wp-block-post-featured-image img {
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	display: block;
	transition: transform 0.45s ease;
}
.pn-hero:hover .wp-block-post-featured-image img { transform: scale(1.02); }

.pn-hero .wp-block-post-title {
	font-size: clamp(1.9rem, 1.1rem + 2.7vw, 3.1rem);
	margin: 0 0 0.7rem;
}
.pn-hero .wp-block-post-excerpt {
	font-size: 1.06rem;
	line-height: 1.55;
	color: var(--pn-ink-soft);
	margin-bottom: 0.7rem;
}
.pn-hero .wp-block-post-excerpt__more-link { display: none; }

/* Tribuna: manchete centralizada, texto respirando */
.pn-ident--tribuna .pn-hero { text-align: center; }
.pn-ident--tribuna .pn-hero .wp-block-post-title {
	font-size: clamp(2.1rem, 1.2rem + 3.2vw, 3.6rem);
	letter-spacing: -0.012em;
}
.pn-ident--tribuna .pn-hero .wp-block-post-excerpt {
	max-width: 46ch;
	margin-inline: auto;
	font-size: 1.1rem;
}

/* Pulso: texto sobreposto à imagem */
.pn-ident--pulso .pn-hero .wp-block-post-template > li {
	position: relative;
	border-radius: var(--pn-radius);
	overflow: hidden;
	box-shadow: var(--pn-shadow);
}
.pn-ident--pulso .pn-hero .wp-block-post-featured-image {
	margin-bottom: 0;
	border-radius: 0;
}
.pn-ident--pulso .pn-hero .wp-block-post-featured-image img {
	aspect-ratio: 16 / 10;
}
.pn-ident--pulso .pn-hero .wp-block-post-featured-image::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to top, rgba(8, 12, 16, 0.93) 4%, rgba(8, 12, 16, 0.55) 38%, rgba(8, 12, 16, 0) 68%);
}
.pn-ident--pulso .pn-hero__body {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	padding: clamp(1.1rem, 3vw, 2.2rem);
	z-index: 2;
}
.pn-ident--pulso .pn-hero__body .wp-block-post-title,
.pn-ident--pulso .pn-hero__body .wp-block-post-title a { color: #fff; }
.pn-ident--pulso .pn-hero__body .wp-block-post-excerpt { color: rgba(255, 255, 255, 0.82); }
.pn-ident--pulso .pn-hero__body .wp-block-post-date { color: rgba(255, 255, 255, 0.6); }

/* =========================================================================
   Coluna de últimas notícias
   ========================================================================= */

.pn-latest .wp-block-post-template { gap: 0; }
.pn-latest .wp-block-post-template > li {
	padding-block: 0.85rem;
	border-bottom: 1px solid var(--pn-line);
}
.pn-latest .wp-block-post-template > li:first-child { padding-top: 0; }
.pn-latest .wp-block-post-template > li:last-child { border-bottom: none; }
.pn-latest .wp-block-post-title {
	font-size: 1.02rem;
	margin: 0 0 0.3rem;
	line-height: 1.28;
}
.pn-latest .wp-block-post-title a:hover { color: var(--pn-brand); }

.pn-ident--pulso .pn-latest .wp-block-post-template > li {
	border-bottom-color: rgba(0, 0, 0, 0.07);
}

/* =========================================================================
   Grades de matérias
   ========================================================================= */

.pn-grid .wp-block-post-template {
	gap: var(--pn-gutter);
}
.pn-grid .wp-block-post-featured-image {
	margin-bottom: 0.75rem;
	overflow: hidden;
	border-radius: var(--pn-radius);
}
.pn-grid .wp-block-post-featured-image img {
	width: 100%;
	aspect-ratio: 3 / 2;
	object-fit: cover;
	display: block;
	transition: transform 0.4s ease;
}
.pn-grid .wp-block-post-featured-image:hover img { transform: scale(1.04); }
.pn-grid .wp-block-post-title {
	font-size: 1.18rem;
	margin: 0 0 0.4rem;
	line-height: 1.24;
}
.pn-grid .wp-block-post-title a:hover { color: var(--pn-brand); }
.pn-grid .wp-block-post-excerpt {
	font-size: 0.92rem;
	color: var(--pn-ink-soft);
	line-height: 1.5;
	margin-bottom: 0.4rem;
}
.pn-grid .wp-block-post-excerpt__more-link { display: none; }

/* Manchete: filete separando as colunas, ar reduzido */
.pn-ident--manchete .pn-grid .wp-block-post-template > li {
	border-top: 1px solid var(--pn-line);
	padding-top: 0.9rem;
}

/* Tribuna: sem imagem dominante, mais respiro, régua fina */
.pn-ident--tribuna .pn-grid .wp-block-post-template > li {
	border-top: 1px solid var(--pn-line);
	padding-top: 1rem;
}
.pn-ident--tribuna .pn-grid .wp-block-post-title { font-size: 1.3rem; }

/* Pulso: cartões */
.pn-ident--pulso .pn-grid .wp-block-post-template > li {
	background: var(--pn-surface);
	border-radius: var(--pn-radius);
	overflow: hidden;
	box-shadow: var(--pn-shadow);
	display: flex;
	flex-direction: column;
}
.pn-ident--pulso .pn-grid .wp-block-post-featured-image {
	border-radius: 0;
	margin-bottom: 0;
}
.pn-ident--pulso .pn-grid .wp-block-post-template > li > *:not(.wp-block-post-featured-image) {
	padding-inline: 1.05rem;
}
.pn-ident--pulso .pn-grid .wp-block-post-template > li > .pn-kicker { padding-top: 1rem; }
.pn-ident--pulso .pn-grid .wp-block-post-template > li > .wp-block-post-date { padding-bottom: 1.05rem; }

/* =========================================================================
   Lista compacta (imagem à esquerda)
   ========================================================================= */

.pn-list .wp-block-post-template { gap: 0; }
.pn-list .wp-block-post-template > li {
	border-bottom: 1px solid var(--pn-line);
	padding-block: 1rem;
}
.pn-list .wp-block-post-template > li:last-child { border-bottom: none; }
.pn-list .wp-block-columns { gap: 1.1rem; align-items: flex-start; }
.pn-list .wp-block-post-featured-image {
	overflow: hidden;
	border-radius: var(--pn-radius);
}
.pn-list .wp-block-post-featured-image img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	display: block;
}
.pn-list .wp-block-post-title {
	font-size: 1.1rem;
	margin: 0 0 0.35rem;
	line-height: 1.26;
}

/* =========================================================================
   Mais lidas (lista numerada)
   ========================================================================= */

.pn-mostread .wp-block-post-template {
	gap: 0;
	counter-reset: pn-rank;
}
.pn-mostread .wp-block-post-template > li {
	counter-increment: pn-rank;
	display: grid;
	grid-template-columns: 2.4rem 1fr;
	gap: 0.75rem;
	align-items: start;
	padding-block: 0.8rem;
	border-bottom: 1px solid var(--pn-line);
}
.pn-mostread .wp-block-post-template > li:last-child { border-bottom: none; }
.pn-mostread .wp-block-post-template > li::before {
	content: counter(pn-rank);
	font-family: var(--pn-font-head);
	font-size: 1.75rem;
	font-weight: 900;
	line-height: 1;
	color: var(--pn-brand);
	opacity: 0.5;
	letter-spacing: -0.04em;
}
.pn-mostread .wp-block-post-title {
	font-size: 0.98rem;
	line-height: 1.3;
	margin: 0;
}

/* =========================================================================
   Publicidade
   ========================================================================= */

.portal-ad-slot {
	display: flex;
	justify-content: center;
	align-items: center;
	overflow: hidden;
	margin-block: 1.5rem;
}
.portal-ad-slot::before {
	content: "Publicidade";
	position: absolute;
	transform: translateY(-1.15rem);
	font-size: 0.6rem;
	text-transform: uppercase;
	letter-spacing: 0.16em;
	color: var(--pn-ink-soft);
	opacity: 0.7;
}
.portal-ad-slot { position: relative; padding-top: 1.15rem; }

/* =========================================================================
   Matéria (single)
   ========================================================================= */

.pn-article__head { margin-bottom: 1.5rem; }
.pn-article__head .wp-block-post-title {
	font-size: clamp(1.9rem, 1.1rem + 2.6vw, 3rem);
	margin: 0.2rem 0 0.8rem;
}
.pn-article__standfirst {
	font-size: 1.18rem;
	line-height: 1.5;
	color: var(--pn-ink-soft);
	margin-bottom: 1.1rem;
	font-weight: 400;
}
.pn-article__byline {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.75rem;
	padding-block: 0.8rem;
	border-top: 1px solid var(--pn-line);
	border-bottom: 1px solid var(--pn-line);
	font-size: 0.82rem;
	color: var(--pn-ink-soft);
}
.pn-article__byline .wp-block-post-author__name {
	font-weight: 700;
	color: var(--pn-ink);
}
.pn-article__byline .wp-block-avatar img { border-radius: 100px; }

/* Foto de capa da matéria: proporção fixa para não engolir a página */
.pn-article__head + .wp-block-post-featured-image img {
	width: 100%;
	aspect-ratio: 16 / 9;
	max-height: 480px;
	object-fit: cover;
	display: block;
	border-radius: var(--pn-radius);
}

.pn-article__content { font-size: 1.09rem; line-height: 1.75; }
.pn-article__content p { margin-bottom: 1.3rem; }
.pn-article__content h2 {
	font-size: 1.55rem;
	margin: 2.2rem 0 0.9rem;
}
.pn-article__content blockquote {
	border-left: 4px solid var(--pn-brand);
	padding: 0.3rem 0 0.3rem 1.3rem;
	margin: 1.8rem 0;
	font-size: 1.28rem;
	line-height: 1.45;
	font-weight: 600;
	font-family: var(--pn-font-head);
	letter-spacing: var(--pn-head-tracking);
}
.pn-ident--tribuna .pn-article__content blockquote {
	border-left: none;
	border-top: 1px solid var(--pn-ink);
	border-bottom: 1px solid var(--pn-ink);
	padding: 1.1rem 0;
	text-align: center;
	font-style: italic;
}
.pn-article__content figcaption {
	font-size: 0.8rem;
	color: var(--pn-ink-soft);
	padding-top: 0.5rem;
	line-height: 1.4;
}

/* Tribuna: capitular na primeira letra */
.pn-ident--tribuna .pn-article__content > p:first-of-type::first-letter {
	float: left;
	font-family: var(--pn-font-serif);
	font-size: 3.6em;
	line-height: 0.82;
	font-weight: 800;
	padding: 0.05em 0.09em 0 0;
	color: var(--pn-ink);
}

/* =========================================================================
   Rodapé
   ========================================================================= */

.pn-footer {
	background: var(--pn-footer-bg);
	color: var(--pn-footer-fg);
	margin-top: 3.5rem;
	padding-block: 3rem 2rem;
}
.pn-footer h4 {
	color: var(--pn-footer-fg);
	opacity: 0.95;
	font-size: 0.78rem;
	text-transform: uppercase;
	letter-spacing: 0.12em;
	font-family: var(--pn-font-body);
	font-weight: 800;
	margin: 0 0 0.9rem;
}
.pn-footer a { color: var(--pn-footer-fg); }
.pn-footer a:hover { opacity: 0.8; }
.pn-footer .wp-block-site-title a {
	color: var(--pn-footer-fg);
	font-size: 1.5rem;
}
.pn-footer p { font-size: 0.88rem; line-height: 1.6; }
.pn-footer .wp-block-navigation {
	flex-direction: column;
	gap: 0.55rem;
	font-size: 0.88rem;
	align-items: flex-start;
}
.pn-footer__legal {
	border-top: 1px solid color-mix(in srgb, var(--pn-footer-fg) 20%, transparent);
	margin-top: 2.2rem;
	padding-top: 1.3rem;
	font-size: 0.78rem;
	opacity: 0.75;
}

.pn-ident--tribuna .pn-footer {
	border-top: 3px double var(--pn-ink);
}
.pn-ident--tribuna .pn-footer a:hover { color: var(--pn-brand); opacity: 1; }
.pn-ident--tribuna .pn-footer__legal { border-top-color: var(--pn-line); }

/* =========================================================================
   Paginação, busca, comentários
   ========================================================================= */

.wp-block-query-pagination {
	margin-top: 2.5rem;
	padding-top: 1.5rem;
	border-top: 1px solid var(--pn-line);
	font-family: var(--pn-font-body);
	font-size: 0.9rem;
	font-weight: 600;
}
.wp-block-query-pagination-numbers .page-numbers {
	padding: 0.35rem 0.7rem;
	border: 1px solid var(--pn-line);
	border-radius: var(--pn-radius);
	margin-inline: 0.1rem;
}
.wp-block-query-pagination-numbers .page-numbers.current {
	background: var(--pn-brand);
	color: #fff;
	border-color: var(--pn-brand);
}

.wp-block-search__button {
	background: var(--pn-brand);
	color: #fff;
	border: none;
	border-radius: var(--pn-radius);
	padding: 0.6rem 1.1rem;
	font-weight: 700;
	font-family: var(--pn-font-body);
}
.wp-block-search__input {
	border: 1px solid var(--pn-line);
	border-radius: var(--pn-radius);
	padding: 0.6rem 0.8rem;
}

/* =========================================================================
   Posição de logo e menu (Manchete, Tribuna, Pulso, Regional — a Global
   mantém o cabeçalho minimalista fixo, de propósito, igual à referência).
   Precisa de !important pela mesma razão de sempre: o core do WP gera uma
   classe de container com o justify-content do bloco original, que empata
   em especificidade com uma seleção de classe única.
   ========================================================================= */

body.pn-logo-center .pn-masthead > .wp-block-group.alignwide,
body.pn-logo-center .pn-masthead--regional > .wp-block-group.alignwide {
	justify-content: center !important;
}
body.pn-logo-center .pn-masthead > .wp-block-group.alignwide > .wp-block-search,
body.pn-logo-center .pn-masthead--regional > .wp-block-group.alignwide > .wp-block-search {
	display: none;
}
body.pn-logo-right .pn-masthead > .wp-block-group.alignwide,
body.pn-logo-right .pn-masthead--regional > .wp-block-group.alignwide {
	flex-direction: row-reverse;
}

body.pn-menu-center .pn-nav > .wp-block-group.alignwide,
body.pn-menu-center .pn-nav--regional > .wp-block-group.alignwide {
	justify-content: center !important;
}
body.pn-menu-right .pn-nav > .wp-block-group.alignwide,
body.pn-menu-right .pn-nav--regional > .wp-block-group.alignwide {
	justify-content: flex-end !important;
}

/* =========================================================================
   Widgets (clima, câmbio, horóscopo)
   ========================================================================= */

.pn-widget { display: flex; align-items: center; }

.pn-widget--weather {
	gap: 0.4rem;
	font-size: 0.78rem;
}
.pn-widget--weather .pn-widget__icon { font-size: 1.1rem; line-height: 1; }
.pn-widget--weather .pn-widget__temp { font-weight: 800; font-size: 0.95rem; }
.pn-widget--weather .pn-widget__detail { display: flex; flex-direction: column; line-height: 1.15; }
.pn-widget--weather .pn-widget__desc { opacity: 0.75; font-size: 0.7rem; }

.pn-widget--currency { gap: 0.9rem; font-size: 0.78rem; }
.pn-widget--currency .pn-widget__fx { display: flex; flex-direction: column; line-height: 1.15; }
.pn-widget--currency .pn-widget__fx-label { opacity: 0.7; font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.05em; }
.pn-widget--currency .pn-widget__fx-value { font-weight: 700; }

.pn-widget--market { gap: 0.4rem; font-size: 0.78rem; }
.pn-widget--market .pn-widget__fx-label { opacity: 0.7; font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.05em; margin-right: 0.35rem; }
.pn-widget--market .pn-widget__fx-value { font-weight: 700; }
.pn-widget--market .pn-widget__fx-value.is-up { color: #1a8f4c; }
.pn-widget--market .pn-widget__fx-value.is-down { color: #c62828; }
.pn-widget--market .pn-widget__fx-value small { font-weight: 600; margin-left: 0.3rem; }

.pn-widget--social { gap: 0.6rem; }
.pn-social-icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 1.75rem;
	height: 1.75rem;
	border-radius: 50%;
	color: inherit;
	opacity: 0.85;
	transition: opacity 0.15s, transform 0.15s;
}
.pn-social-icon:hover { opacity: 1; transform: translateY(-1px); }
/* no rodapé os ícones ficam um pouco maiores e com fundo sutil */
.pn-footer .pn-widget--social { margin-top: 1rem; }
.pn-footer .pn-social-icon {
	width: 2.1rem;
	height: 2.1rem;
	background: color-mix(in srgb, var(--pn-footer-fg) 12%, transparent);
}
.pn-footer .pn-social-icon:hover { background: color-mix(in srgb, var(--pn-footer-fg) 22%, transparent); }

.pn-widget--horoscope { width: 100%; margin-top: 1.5rem; }
.pn-widget--horoscope iframe { width: 100%; height: 420px; border: 0; border-radius: var(--pn-radius); }

/* Posição de clima e câmbio: cada um escolhe, independente do outro, entre
   barra superior (padrão) ou ao lado da logo — os dois lugares existem
   sempre no markup, o CSS decide qual aparece em cada um.
   Precisa de !important porque o grupo .pn-masthead__widgets é um
   core/group e ganha a classe utilitária `.is-layout-flex` do WordPress
   (display:flex), que empata em especificidade com uma regra de classe
   única e, carregada depois da nossa folha, venceria por ordem no cascade. */
.pn-masthead__widgets { display: none !important; }
body.pn-weather-masthead .pn-masthead__widgets,
body.pn-currency-masthead .pn-masthead__widgets,
body.pn-market-masthead .pn-masthead__widgets {
	display: flex !important;
	gap: 1.5rem;
	margin-left: 1.25rem;
	padding-left: 1.25rem;
	border-left: 1px solid var(--pn-line);
}

.pn-masthead__widgets .pn-widget--weather,
.pn-masthead__widgets .pn-widget--currency,
.pn-masthead__widgets .pn-widget--market { display: none !important; }
body.pn-weather-masthead .pn-masthead__widgets .pn-widget--weather { display: flex !important; }
body.pn-currency-masthead .pn-masthead__widgets .pn-widget--currency { display: flex !important; }
body.pn-market-masthead .pn-masthead__widgets .pn-widget--market { display: flex !important; }

body.pn-weather-masthead .pn-topbar .pn-widget--weather,
body.pn-currency-masthead .pn-topbar .pn-widget--currency,
body.pn-market-masthead .pn-topbar .pn-widget--market { display: none !important; }

/* =========================================================================
   Tribuna — reforço de identidade impressa
   ========================================================================= */

.pn-ident--tribuna .pn-nav .wp-block-navigation {
	gap: 0;
}
.pn-ident--tribuna .pn-nav .wp-block-navigation-item {
	position: relative;
}
.pn-ident--tribuna .pn-nav .wp-block-navigation-item + .wp-block-navigation-item::before {
	content: "";
	position: absolute;
	left: 0;
	top: 50%;
	transform: translateY(-50%);
	width: 1px;
	height: 0.9em;
	background: var(--pn-line);
}
.pn-ident--tribuna .pn-nav .wp-block-navigation-item__content {
	border-bottom: none !important;
	font-variant: small-caps;
	letter-spacing: 0.05em;
	padding-inline: 1rem;
}
.pn-ident--tribuna .pn-grid .wp-block-post-featured-image img,
.pn-ident--tribuna .pn-hero .wp-block-post-featured-image img,
.pn-ident--tribuna .pn-list .wp-block-post-featured-image img {
	filter: grayscale(0.15) contrast(1.05);
	border: 1px solid var(--pn-line);
}
.pn-ident--tribuna .pn-breaking { display: none; } /* jornal impresso não tem "plantão" */
.pn-ident--tribuna .pn-topbar__date::before,
.pn-ident--tribuna .pn-topbar__date::after {
	content: "—";
	margin: 0 0.6em;
	opacity: 0.4;
}

/* =========================================================================
   Pulso — reforço de identidade "TV ao vivo"
   ========================================================================= */

.pn-ident--pulso .pn-masthead .wp-block-site-title,
.pn-ident--pulso .pn-masthead .wp-block-site-title a {
	text-transform: uppercase;
	letter-spacing: 0.02em;
}
.pn-ident--pulso .pn-breaking {
	position: relative;
	overflow: hidden;
}
.pn-ident--pulso .pn-breaking__label {
	background: #fff;
	color: var(--pn-brand);
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
}
.pn-ident--pulso .pn-breaking__dot { background: var(--pn-brand); }
@keyframes pn-live-pulse {
	0%, 100% { opacity: 1; transform: scale(1); }
	50% { opacity: 0.35; transform: scale(0.75); }
}
.pn-ident--pulso .pn-hero .wp-block-post-title {
	text-transform: uppercase;
}
.pn-ident--pulso .pn-kicker a {
	font-weight: 900;
}
.pn-ident--pulso .pn-grid .wp-block-post-template > li {
	border-top: 3px solid var(--pn-brand);
}
.pn-ident--pulso .pn-mostread .wp-block-post-template > li::before {
	background: var(--pn-brand);
	color: #fff;
	opacity: 1;
	width: 1.9rem;
	height: 1.9rem;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	font-size: 1rem;
}

/* =========================================================================
   Regional — cabeçalho utilitário com widgets
   ========================================================================= */

.pn-topbar--regional { font-size: 0.8rem; }
.pn-topbar--regional .pn-widget { color: #fff; }
.pn-topbar--regional .pn-widget--currency .pn-widget__fx-label { color: rgba(255, 255, 255, 0.6); }

.pn-masthead--regional { border-bottom: none; padding-block: 1.4rem; }
.pn-masthead--regional .wp-block-site-title a { font-size: clamp(1.6rem, 1.1rem + 1.8vw, 2.5rem); }
.pn-masthead__tagline-regional {
	font-size: 0.85rem;
	color: var(--pn-ink-soft);
	font-weight: 600;
	margin: 0;
}

.pn-nav--regional {
	border-bottom: 1px solid var(--pn-line);
	box-shadow: var(--pn-shadow);
}
.pn-nav--regional .wp-block-navigation-item__content {
	font-weight: 800;
	text-transform: none;
	letter-spacing: 0;
	font-size: 0.88rem;
}

.pn-ident--regional .pn-breaking {
	background: var(--pn-brand);
}
.pn-ident--regional .pn-breaking__label {
	background: var(--pn-ink);
}
.pn-ident--regional .pn-section-head {
	border-top: none;
	background: var(--pn-surface-alt);
	padding: 0.6rem 1rem;
	border-radius: var(--pn-radius);
}
.pn-ident--regional .pn-section-head h2::before { border-radius: 2px; }
.pn-ident--regional .pn-grid .wp-block-post-template > li {
	background: var(--pn-surface);
	box-shadow: var(--pn-shadow);
	border-radius: var(--pn-radius);
	padding: 0.75rem;
}
.pn-ident--regional .pn-grid .wp-block-post-featured-image { margin-inline: -0.75rem; margin-top: -0.75rem; }
.pn-ident--regional .pn-grid .wp-block-post-featured-image img { border-radius: var(--pn-radius) var(--pn-radius) 0 0; }
/* fundo/texto do rodapé regional já vêm de --pn-footer-bg/fg (base :root) */

/* =========================================================================
   Global — editorial minimalista (BBC-like)
   ========================================================================= */

.pn-ident--global { --pn-line: #d5d5d5; }

.pn-masthead--global {
	padding-block: 1rem;
	border-bottom: 1px solid var(--pn-line);
}
.pn-masthead--global .wp-block-site-title a {
	font-weight: 900;
	letter-spacing: -0.01em;
	font-size: 1.4rem;
	text-transform: uppercase;
	background: var(--pn-ink);
	color: #fff !important;
	padding: 0.15em 0.45em;
}

.pn-nav--global {
	border-top: 1px solid var(--pn-line);
	padding-block: 0.1rem;
}
.pn-nav--global-desktop .wp-block-navigation-item__content {
	text-transform: none;
	font-weight: 500;
	letter-spacing: 0;
	font-size: 0.92rem;
	border-bottom: 2px solid transparent;
}
.pn-nav--global-desktop .wp-block-navigation-item:first-child .wp-block-navigation-item__content {
	font-weight: 700;
	border-bottom-color: var(--pn-ink);
}
.pn-nav--global-desktop .wp-block-navigation-item__content:hover {
	color: var(--pn-ink);
	border-bottom-color: var(--pn-ink);
}
.pn-nav--global-mobile { display: none; }

.pn-ident--global .pn-kicker,
.pn-ident--global .pn-kicker a {
	color: var(--pn-ink-soft);
	font-weight: 700;
	letter-spacing: 0;
	text-transform: none;
	font-size: 0.82rem;
}
.pn-ident--global .pn-hero .wp-block-post-title { font-size: clamp(1.6rem, 1rem + 2.2vw, 2.5rem); }
.pn-ident--global .pn-section-head { border-top: 1px solid var(--pn-ink); }
.pn-ident--global .pn-section-head h2 { text-transform: none; letter-spacing: 0; font-weight: 700; }
.pn-ident--global .pn-section-head h2::before { display: none; }
.pn-ident--global .pn-grid .wp-block-post-template > li {
	border-top: 1px solid var(--pn-line);
}
.pn-ident--global .pn-grid .wp-block-post-title,
.pn-ident--global .pn-hero .wp-block-post-title,
.pn-ident--global .pn-latest .wp-block-post-title {
	font-weight: 700;
}
.pn-ident--global a:hover { text-decoration: underline; }
.pn-ident--global .pn-footer--global {
	border-top: 1px solid var(--pn-line);
}
.pn-ident--global .pn-footer--global .wp-block-site-title a {
	background: none;
	color: var(--pn-ink) !important;
	padding: 0;
	font-size: 1.1rem;
}
.pn-ident--global .pn-footer--global a:hover { color: var(--pn-ink); }
/* "AO VIVO" — único uso de vermelho permitido na identidade Global */
.pn-ident--global .pn-breaking { background: #fff; border-top: 1px solid var(--pn-line); border-bottom: 1px solid var(--pn-line); }
.pn-ident--global .pn-breaking__track a { color: var(--pn-ink); }
.pn-ident--global .pn-breaking__dot { background: #bb1919; }
.pn-ident--global .pn-breaking__label {
	background: none;
	color: #bb1919;
	font-weight: 800;
}
.pn-ident--global .pn-breaking__label::before {
	content: "● ";
}

/* =========================================================================
   Regional — layout próprio (referência bdsp.com.br)
   ========================================================================= */

.pn-reg-hero .pn-src-hero .wp-block-post-title { font-size: clamp(1.8rem, 1.1rem + 2.2vw, 2.7rem); margin: 0.4rem 0; }
.pn-reg-hero .pn-src-hero .wp-block-post-excerpt { color: var(--pn-ink-soft); }

.pn-reg-thumbs .wp-block-post-template { gap: 1.25rem; }
.pn-reg-thumbs .wp-block-post-featured-image { margin-bottom: 0.5rem; }
.pn-reg-thumbs .wp-block-post-featured-image img { aspect-ratio: 4/3; object-fit: cover; width: 100%; }
.pn-reg-thumbs .wp-block-post-title { font-size: 0.95rem; margin: 0; }

.pn-reg-panel { position: relative; border-radius: var(--pn-radius); overflow: hidden; height: 100%; min-height: 420px; }
.pn-reg-panel .wp-block-post-template { position: relative; height: 100%; min-height: 420px; }
.pn-reg-panel .wp-block-post-template > li {
	position: absolute; inset: 0;
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.6s ease;
}
.pn-reg-panel .wp-block-post-template > li.is-active { opacity: 1; visibility: visible; z-index: 1; }
/* antes do JS rodar (ou com JS desativado) mostra só a primeira matéria —
   mas só ENQUANTO o JS não assumiu o controle. Sem o ":not(.js-ready)" essa
   regra ficava ativa pra sempre e a matéria 1 nunca se escondia, sobrepondo
   texto com o slide que o JS ativava por cima (o bug do título dobrado). */
.pn-reg-panel .wp-block-post-template:not(.js-ready) > li:first-child { opacity: 1; visibility: visible; }
.pn-reg-panel .wp-block-post-featured-image { margin: 0; height: 100%; }
.pn-reg-panel .wp-block-post-featured-image img { width: 100%; height: 100%; aspect-ratio: auto; object-fit: cover; display: block; }
.pn-reg-panel .wp-block-post-featured-image::after {
	content: "";
	position: absolute; inset: 0;
	background: linear-gradient(to top, rgba(10,14,18,0.94) 15%, rgba(10,14,18,0.15) 65%, rgba(10,14,18,0) 85%);
}
.pn-reg-panel__body { position: absolute; left: 0; right: 0; bottom: 0; padding: 1.5rem 1.25rem 2.75rem; z-index: 2; }
.pn-reg-panel__body .wp-block-post-title,
.pn-reg-panel__body .wp-block-post-title a {
	color: #fff;
	font-size: 1.15rem;
	line-height: 1.3;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

/* o painel tem overflow:hidden (a foto preenche tudo), então as setas do
   carrossel genérico (que ficam com metade pra fora) precisam entrar pra
   dentro aqui, em cima da própria imagem. */
.pn-reg-panel.pn-carousel .pn-carousel__arrow {
	top: calc(50% - 1.4rem);
	width: 2.1rem;
	height: 2.1rem;
	font-size: 1.2rem;
}
.pn-reg-panel.pn-carousel .pn-carousel__arrow--prev { left: 0.6rem; }
.pn-reg-panel.pn-carousel .pn-carousel__arrow--next { right: 0.6rem; }

.pn-reg-panel__dots {
	position: absolute; left: 0; right: 0; bottom: 0.6rem;
	display: flex; justify-content: center; gap: 0.4rem;
	z-index: 3; margin: 0; padding: 0;
}
.pn-reg-panel__dot {
	width: 8px; height: 8px; border-radius: 50%;
	background: rgba(255,255,255,0.45);
	border: none; padding: 0; cursor: pointer;
	transition: background 0.2s, transform 0.2s;
}
.pn-reg-panel__dot:hover { background: rgba(255,255,255,0.75); }
.pn-reg-panel__dot.is-active { background: #fff; transform: scale(1.2); }

.pn-reg-widgets {
	background: var(--pn-surface-alt);
	border-radius: var(--pn-radius);
	padding: 1.25rem 1.5rem;
	margin-top: 2rem;
	gap: 2.5rem;
}
.pn-reg-widgets .pn-widget--weather-detailed { gap: 1rem; }
.pn-reg-widgets .pn-widget__wx-main { display: flex; align-items: center; gap: 0.5rem; }
.pn-reg-widgets .pn-widget__wx-main .pn-widget__icon { font-size: 2.4rem; }
.pn-reg-widgets .pn-widget__wx-main .pn-widget__temp { font-size: 2rem; font-weight: 800; }
.pn-reg-widgets .pn-widget__wx-info { display: flex; flex-direction: column; font-size: 0.82rem; color: var(--pn-ink-soft); }
.pn-reg-widgets .pn-widget__city { color: var(--pn-ink); font-size: 0.95rem; }
.pn-reg-widgets .pn-widget--horoscope { margin: 0; flex: 1; }
.pn-reg-widgets .pn-widget--horoscope iframe { height: 150px; }

/* A cor de cada seção vem do PHP (patterns/home-regional.php), via a
   custom property --pn-section-accent + background inline — permite N
   seções configuráveis em vez de só 2 classes fixas de cor. */
.pn-reg-section { margin-top: 2.5rem; padding: 1.75rem; border-radius: var(--pn-radius); }
.pn-reg-section__title { text-align: center; text-transform: uppercase; letter-spacing: 0.06em; font-size: 1.3rem; margin: 0 0 1.5rem; }
.pn-reg-section .pn-kicker,
.pn-reg-section .pn-kicker a { color: var(--pn-section-accent, var(--pn-brand)); }
.pn-reg-grid .wp-block-post-template { gap: 1.5rem; }
.pn-reg-grid .wp-block-post-featured-image img { aspect-ratio: 4/3; object-fit: cover; width: 100%; border-radius: var(--pn-radius); }
.pn-reg-grid .wp-block-post-title { font-size: 1rem; margin: 0.4rem 0 0; }

.pn-reg-bottom { margin-top: 2.5rem; }

/* Home Diário: hero 50/50 igual ao spdiario.com.br (chamada-principal). */
.pn-dia-hero__main .wp-block-post-title { font-size: 2.6rem; line-height: 1.15; margin: 0; }
.pn-dia-hero__main .wp-block-post-featured-image img { aspect-ratio: 16/10; object-fit: cover; width: 100%; }

/* Linha de 3 colunas logo abaixo do hero: história secundária + 2
   mini-chamadas (foto pequena + texto) + lista de marcadores. */
.pn-dia-secondary__main .wp-block-post-featured-image img { aspect-ratio: 16/9; object-fit: cover; width: 100%; margin-bottom: 0.5rem; }
.pn-dia-secondary__main .wp-block-post-title { font-size: 1.15rem; margin: 0; }
.pn-dia-secondary__mini .wp-block-post-template { gap: 1rem; }
.pn-dia-secondary__mini .wp-block-post-featured-image img { aspect-ratio: 4/3; object-fit: cover; width: 100%; }
.pn-dia-secondary__mini .wp-block-post-title { font-size: 0.92rem; margin: 0; line-height: 1.3; }
.pn-dia-secondary__mini .pn-kicker { font-size: 0.78rem; margin-bottom: 0.2rem; }
.pn-dia-bullets .wp-block-post-template { gap: 0; }
.pn-dia-bullets .wp-block-post-template > li {
	padding-block: 0.6rem;
	border-bottom: 1px solid var(--pn-line);
	list-style: none;
}
.pn-dia-bullets .wp-block-post-template > li:first-child { padding-top: 0; }
.pn-dia-bullets .wp-block-post-template > li::before {
	content: "";
	display: inline-block;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--pn-brand);
	margin-right: 0.5rem;
	vertical-align: middle;
}
.pn-dia-bullets .wp-block-post-title { font-size: 0.92rem; margin: 0; display: inline; line-height: 1.4; }

/* Seções por editoria (réplica das seções "política"/"esportes" etc). */
.pn-dia-section { margin-top: 3rem; }
.pn-dia-section__main .wp-block-post-featured-image img { aspect-ratio: 4/3; object-fit: cover; width: 100%; }
.pn-dia-section__main .wp-block-post-title { font-size: 1.4rem; margin: 0; }
.pn-dia-section__grid .wp-block-post-template { gap: 1rem; }
.pn-dia-section__grid .wp-block-post-featured-image img { aspect-ratio: 4/3; object-fit: cover; width: 100%; margin-bottom: 0.4rem; }
.pn-dia-section__grid .wp-block-post-title { font-size: 0.9rem; margin: 0; line-height: 1.3; }

.pn-dia-extras { margin-top: 3.5rem; padding-top: 1.5rem; border-top: 1px solid var(--pn-line); }
.pn-dia-bottom { margin-top: 2.5rem; }
/* Mesma correção de `align-items` explicada acima, aplicada a toda
   coluna de 2 blocos deste padrão (hero, secundária, cada seção por
   editoria) — sem isto, a coluna mais curta estica pra altura da mais
   longa (ex.: a grade de 4 chamadas ficando mais alta que a história
   principal ao lado). */
body .pn-dia-hero__main,
body .pn-dia-secondary,
body .pn-dia-section > .wp-block-columns {
	align-items: flex-start !important;
}
/* Especificidade extra (ancestral `body`) necessária pra vencer o
   `align-items` que o WP injeta inline por bloco (mesma especificidade
   de classe, mas carregado depois do frontend.css no <head>) — sem
   isto as duas colunas esticam pra altura da mais longa (a lateral de
   futebol, que lista muitos jogos), deixando um vão em branco enorme
   embaixo da faixa de clima das capitais. */
/* `!important` necessário: o layout de blocos do WP também define
   `align-items` inline no <head> pra `.wp-block-columns.is-layout-flex`
   com a mesma especificidade e carregando depois do frontend.css. */
body .pn-dia-bottom { align-items: flex-start !important; }

/* =========================================================================
   Global — layout próprio (referência bbc.com)
   ========================================================================= */

.pn-glb-top { align-items: flex-start; }
.pn-glb-briefs .wp-block-post-template { gap: 1.75rem; }
.pn-glb-briefs .wp-block-post-featured-image img { aspect-ratio: 16/10; object-fit: cover; width: 100%; }
.pn-glb-briefs .wp-block-post-title { font-size: 1rem; margin: 0.5rem 0 0.3rem; }
.pn-glb-briefs .wp-block-post-excerpt { font-size: 0.85rem; color: var(--pn-ink-soft); }
.pn-glb-briefs .wp-block-group { gap: 0.5rem; font-size: 0.72rem; color: var(--pn-ink-soft); }

.pn-src-hero .wp-block-post-title { font-size: clamp(1.7rem, 1rem + 2.4vw, 2.6rem); margin: 0.75rem 0 0.5rem; font-weight: 800; }
.pn-glb-top .pn-src-hero .wp-block-post-excerpt { font-size: 1.05rem; color: var(--pn-ink-soft); }

.pn-glb-list .wp-block-post-template { gap: 0; }
.pn-glb-list .wp-block-post-template > li { padding-block: 0.9rem; border-top: 1px solid var(--pn-line); }
.pn-glb-list .wp-block-post-title { font-size: 0.98rem; margin: 0 0 0.35rem; }
.pn-glb-list .wp-block-group { gap: 0.5rem; font-size: 0.72rem; color: var(--pn-ink-soft); }

.pn-glb-strip-head { border-top: 3px solid var(--pn-ink); padding-top: 0.5rem; margin-top: 2.5rem; }
.pn-glb-strip-head h2 { text-transform: uppercase; font-size: 0.95rem; font-weight: 800; letter-spacing: 0.02em; }

/* =========================================================================
   Carrossel horizontal (Pulso e Global) — setas injetadas via JS
   (assets/js/carousel.js) sobre um container que vira position:relative.
   ========================================================================= */

.pn-carousel { position: relative; }

.pn-carousel__arrow {
	position: absolute;
	top: 40%;
	transform: translateY(-50%);
	z-index: 5;
	width: 2.5rem;
	height: 2.5rem;
	border-radius: 50%;
	border: 1px solid var(--pn-line);
	background: var(--pn-surface);
	color: var(--pn-ink);
	font-size: 1.4rem;
	line-height: 1;
	cursor: pointer;
	box-shadow: 0 4px 14px rgba(0, 0, 0, 0.12);
	display: flex;
	align-items: center;
	justify-content: center;
	transition: opacity 0.15s, transform 0.15s;
}
.pn-carousel__arrow:hover { transform: translateY(-50%) scale(1.06); }
.pn-carousel__arrow--prev { left: -0.9rem; }
.pn-carousel__arrow--next { right: -0.9rem; }
.pn-carousel.is-at-start .pn-carousel__arrow--prev,
.pn-carousel.is-at-end .pn-carousel__arrow--next { opacity: 0; pointer-events: none; }

@media (max-width: 640px) {
	.pn-carousel__arrow { display: none; } /* no toque, a rolagem por gesto já basta */
}

/* Barra de clima das capitais — mesma família visual dos carrosséis */
.pn-capitals-bar {
	margin-top: 1.5rem;
	padding: 0.25rem 0;
	border-top: 1px solid var(--pn-line);
	border-bottom: 1px solid var(--pn-line);
}
.pn-capitals-bar__list {
	display: flex;
	flex-wrap: nowrap;
	overflow-x: auto;
	gap: 0;
	scrollbar-width: none;
	margin: 0;
	padding: 0;
	list-style: none;
}
.pn-capitals-bar__list::-webkit-scrollbar { display: none; }
.pn-capitals-bar__item {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	gap: 0.4rem;
	padding: 0.75rem 1.1rem;
	border-right: 1px solid var(--pn-line);
	white-space: nowrap;
	font-size: 0.85rem;
}
.pn-capitals-bar__icon { font-size: 1.05rem; }
.pn-capitals-bar__city { color: var(--pn-ink-soft); }
.pn-capitals-bar__temp { font-weight: 800; }

/* Futebol — calendário e classificação */
.pn-football { margin-top: 1.25rem; }
.pn-football + .pn-football { margin-top: 2rem; }
.pn-football__league + .pn-football__league { margin-top: 1.75rem; }
.pn-football__league-title {
	font-size: 0.95rem;
	font-weight: 800;
	margin: 0 0 0.6rem;
	padding-bottom: 0.4rem;
	border-bottom: 2px solid var(--pn-brand);
}

.pn-football__matches { list-style: none; margin: 0; padding: 0; }
.pn-football__match {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.5rem 0;
	border-bottom: 1px solid var(--pn-line);
	font-size: 0.82rem;
	/* "nowrap" (era "wrap"): numa coluna de sidebar estreita, nome de time
	   longo quebrava só ALGUMAS linhas pra 2 linhas e outras não,
	   desalinhando a lista inteira — cada linha precisa ter a mesma
	   altura. Nome comprido agora trunca com reticências em vez de quebrar. */
	flex-wrap: nowrap;
}
.pn-football__match:last-child { border-bottom: none; }
.pn-football__match-date {
	flex: 0 0 auto;
	font-size: 0.72rem;
	font-weight: 700;
	color: var(--pn-ink-soft);
	min-width: 4.5rem;
}
.pn-football__team {
	/* "flex: 0 0 auto" (não mais "1 1 auto"): agora que o time é mostrado
	   abreviado (CAM, VIT...) em vez do nome completo, cada lado só
	   precisa do espaço do próprio conteúdo — "1 1 auto" esticava a caixa
	   pra preencher a linha toda, abrindo um vão vazio entre a sigla e o
	   "×" (visível no print, 29/08/2026). white-space/ellipsis continuam
	   como rede de segurança pro raro caso de faltar TLA/nome curto e
	   cair no nome completo. */
	display: flex;
	align-items: center;
	gap: 0.35rem;
	flex: 0 0 auto;
	max-width: 100%;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}
.pn-football__team img { border-radius: 2px; flex: 0 0 auto; }
.pn-football__vs { opacity: 0.5; font-size: 0.75rem; }

.pn-standings-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 0.8rem;
}
.pn-standings-table th,
.pn-standings-table td {
	padding: 0.4rem 0.35rem;
	text-align: center;
	border-bottom: 1px solid var(--pn-line);
}
.pn-standings-table th {
	font-size: 0.68rem;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--pn-ink-soft);
}
.pn-standings-table__team {
	text-align: left !important;
	display: flex;
	align-items: center;
	gap: 0.4rem;
	white-space: nowrap;
}
.pn-standings-table__team img { border-radius: 2px; flex: 0 0 auto; }

/* "Ver mais" da classificação / "Agenda completa" do ticker: um checkbox
   escondido + seletor de irmão geral (~) revela as linhas extras sem JS. */
.pn-standings-toggle-input { position: absolute; opacity: 0; pointer-events: none; }
.pn-standings-table__extra { display: none; }
.pn-standings-toggle-input:checked ~ .pn-standings-table .pn-standings-table__extra { display: table-row; }
.pn-standings-toggle-input:checked ~ .pn-standings-toggle { display: none; }
.pn-standings-toggle {
	display: block;
	margin-top: 0.6rem;
	font-size: 0.78rem;
	font-weight: 700;
	color: var(--pn-brand);
	cursor: pointer;
	text-align: center;
}
.pn-standings-toggle:hover { text-decoration: underline; }

/* Faixa horizontal de jogos (home, estilo G1) — reaproveita o mecanismo
   de setas do carousel.js (precisa de um <ul> filho direto). */
.pn-football-ticker { position: relative; margin: 1.25rem 0; }
.pn-football-ticker__list {
	display: flex;
	flex-wrap: nowrap;
	overflow-x: auto;
	gap: 0.75rem;
	list-style: none;
	margin: 0;
	padding: 0.25rem 0.1rem;
	scrollbar-width: none;
}
.pn-football-ticker__list::-webkit-scrollbar { display: none; }
/* Times lado a lado numa linha só, com sigla de 3 letras (ex: "VAS × CRU")
   em vez do nome por extenso — card bem mais baixo que a versão anterior
   (que empilhava mandante/visitante em duas linhas). */
.pn-football-ticker__card {
	flex: 0 0 auto;
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	padding: 0.5rem 0.75rem;
	border: 1px solid var(--pn-line);
	border-radius: var(--pn-radius);
	background: var(--pn-surface);
	font-size: 0.78rem;
}
.pn-football-ticker__league {
	font-size: 0.6rem;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	color: var(--pn-brand);
	white-space: nowrap;
}
.pn-football-ticker__time { font-size: 0.66rem; color: var(--pn-ink-soft); font-weight: 700; white-space: nowrap; }
.pn-football-ticker__match {
	display: flex;
	align-items: center;
	gap: 0.35rem;
	white-space: nowrap;
	font-weight: 800;
	font-size: 0.85rem;
}
.pn-football-ticker__match img { border-radius: 2px; flex: 0 0 auto; }
.pn-football-ticker__abbr { letter-spacing: 0.02em; font-weight: 500; }
.pn-football-ticker__vs { opacity: 0.45; font-weight: 600; font-size: 0.75rem; }

/* Compartilhar (WhatsApp/Facebook/X) na página do post */
.pn-share {
	display: flex;
	align-items: center;
	gap: 0.6rem;
	margin-top: 1rem;
}
.pn-share__label { font-size: 0.78rem; font-weight: 700; color: var(--pn-ink-soft); }
.pn-share__btn {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2rem;
	height: 2rem;
	border-radius: 50%;
	color: #fff;
	transition: opacity 0.15s, transform 0.15s;
}
.pn-share__btn:hover { opacity: 0.85; transform: translateY(-1px); }
.pn-share__btn--whatsapp { background: #25d366; }
.pn-share__btn--facebook { background: #1877f2; }
.pn-share__btn--x { background: #111418; }

/* Cobertura eleitoral — widget de barra lateral + faixa horizontal */
.pn-election { margin-top: 1.25rem; }
.pn-election__head {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin-bottom: 0.75rem;
}
.pn-election__icon { display: flex; color: var(--pn-brand); flex: 0 0 auto; }
.pn-election__title { font-size: 1rem; font-weight: 800; margin: 0; }

.pn-election__countdown {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 0.5rem;
	padding: 0.65rem 0.85rem;
	margin-bottom: 0.85rem;
	border-radius: var(--pn-radius);
	background: color-mix(in srgb, var(--pn-brand) 10%, transparent);
}
.pn-election__countdown-label { font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.03em; color: var(--pn-brand); }
.pn-election__countdown-value { font-size: 1.05rem; font-weight: 800; font-variant-numeric: tabular-nums; }
.pn-election__countdown.is-past { display: none; }

.pn-election__list { list-style: none; margin: 0 0 0.85rem; padding: 0; }
.pn-election__list li { padding: 0.5rem 0; border-bottom: 1px solid var(--pn-line); font-size: 0.9rem; }
.pn-election__list li:last-child { border-bottom: none; }

.pn-election__see-all {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
	font-size: 0.82rem;
	font-weight: 700;
	color: var(--pn-brand);
}
.pn-election__see-all:hover { text-decoration: underline; }

/* Botão de eleições no fim do menu — bandeira + dias restantes, com
   fundo próprio. Trocado a pedido do usuário: a faixa horizontal cheia
   (mesma altura do plantão) ficou redundante esteticamente com ele —
   virou só isso + a página dedicada (ver .pn-election-hero abaixo). */
.pn-election-navbtn {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	margin-left: 0.75rem;
	padding: 0.35rem 0.75rem;
	border-radius: 999px;
	background: color-mix(in srgb, var(--pn-brand) 80%, black 20%);
	color: #fff;
	font-size: 0.78rem;
	font-weight: 800;
	white-space: nowrap;
	transition: transform 0.15s, box-shadow 0.15s;
}
.pn-election-navbtn:hover {
	color: #fff;
	transform: translateY(-1px);
	box-shadow: 0 3px 10px rgba(0, 0, 0, 0.18);
}
.pn-election-navbtn__icon { display: flex; }
.pn-election-navbtn__icon svg { width: 16px; height: 16px; }
.pn-election-navbtn__flag { display: flex; border-radius: 2px; overflow: hidden; line-height: 0; }
.pn-election-navbtn__flag svg { width: 15px; height: 15px; }
.pn-election-navbtn__label { margin-right: 0.15rem; }
.pn-election-navbtn__days { font-variant-numeric: tabular-nums; font-size: 0.95rem; }
.pn-election-navbtn__unit { text-transform: uppercase; letter-spacing: 0.03em; opacity: 0.85; font-size: 0.68rem; }
.pn-election-navbtn.is-past { display: none; }
.pn-ident--tribuna .pn-election-navbtn { display: none; } /* jornal impresso não tem plantão nem esse botão */

/* Página dedicada (templates/page-eleicoes.html) — hero full-bleed com
   contagem grande, calendário dos turnos e ícones, bem diferenciado do
   padrão de post/página comum do site. */
/* Tudo lado a lado numa linha só — pedido do usuário pra "afinar" a
   barra, em vez de empilhar título/contagem/datas verticalmente. */
.pn-election-hero {
	background: color-mix(in srgb, var(--pn-brand) 75%, black 25%);
	color: #fff;
	padding-block: 1.25rem;
}
.pn-election-hero__row {
	display: flex;
	flex-direction: row;
	align-items: center;
	flex-wrap: wrap;
	gap: 1.5rem;
}
.pn-election-hero__identity { display: flex; align-items: center; gap: 0.6rem; flex: 0 0 auto; }
.pn-election-hero__badge { display: flex; gap: 0.4rem; align-items: center; }
.pn-election-hero__icon { display: flex; color: #fff; }
.pn-election-hero__flag { border-radius: 3px; overflow: hidden; line-height: 0; }
.pn-election-hero__title { font-size: clamp(1.2rem, 1rem + 1vw, 1.6rem); font-weight: 800; margin: 0; white-space: nowrap; }
.pn-election-hero__countdown-wrap { display: flex; align-items: center; gap: 0.75rem; flex: 0 0 auto; }
.pn-election-hero__countdown { display: flex; gap: 0.5rem; }
.pn-election-hero__unit {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.1rem;
	background: rgba(255, 255, 255, 0.16);
	border-radius: 6px;
	padding: 0.3rem 0.7rem;
}
.pn-election-hero__unit strong { font-size: 1.2rem; font-weight: 800; font-variant-numeric: tabular-nums; line-height: 1; }
.pn-election-hero__unit span { font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.04em; opacity: 0.85; }
.pn-election-hero__caption { margin: 0; opacity: 0.9; font-size: 0.85rem; white-space: nowrap; }
.pn-election-hero__dates {
	list-style: none;
	margin: 0;
	padding-left: 1.5rem;
	border-left: 1px solid rgba(255, 255, 255, 0.25);
	font-size: 0.85rem;
	display: flex;
	gap: 1.5rem;
	flex-wrap: wrap;
}
.pn-election-hero__countdown-wrap.is-past,
.pn-election-hero__countdown.is-past { display: none; }

@media (max-width: 782px) {
	.pn-election-hero__row { flex-direction: column; align-items: flex-start; gap: 0.85rem; }
	.pn-election-hero__dates { border-left: none; padding-left: 0; }
}

.pn-glb-carousel .wp-block-post-template {
	display: flex;
	flex-wrap: nowrap;
	overflow-x: auto;
	gap: 1.5rem;
	scroll-snap-type: x mandatory;
	padding: 0.25rem 0.25rem 1rem;
	scrollbar-width: none;
}
.pn-glb-carousel .wp-block-post-template::-webkit-scrollbar { display: none; }
.pn-glb-carousel .wp-block-post-template > li {
	flex: 0 0 240px;
	scroll-snap-align: start;
	background: var(--pn-surface);
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
	transition: box-shadow 0.2s, transform 0.2s;
}
.pn-glb-carousel .wp-block-post-template > li:hover {
	box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12);
	transform: translateY(-2px);
}
.pn-glb-carousel .wp-block-post-featured-image { margin: 0; overflow: hidden; }
.pn-glb-carousel .wp-block-post-featured-image img { aspect-ratio: 4/3; object-fit: cover; width: 100%; display: block; transition: transform 0.35s; }
.pn-glb-carousel .wp-block-post-template > li:hover .wp-block-post-featured-image img { transform: scale(1.045); }
.pn-glb-carousel .pn-kicker, .pn-glb-carousel .wp-block-post-title { padding-inline: 0.15rem; }
.pn-glb-carousel .pn-kicker, .pn-glb-carousel .pn-kicker a { color: var(--pn-ink-soft); text-transform: uppercase; font-size: 0.68rem; font-weight: 800; letter-spacing: 0.03em; margin-top: 0.65rem; display: block; }
.pn-glb-carousel .wp-block-post-title { font-size: 0.98rem; margin: 0.25rem 0 0.75rem; font-weight: 700; line-height: 1.3; }

.pn-glb-numbered .wp-block-post-template { gap: 0; counter-reset: pn-glb-rank; }
.pn-glb-numbered .wp-block-post-template > li {
	counter-increment: pn-glb-rank;
	display: flex;
	gap: 0.75rem;
	padding-block: 0.75rem;
	border-top: 1px solid var(--pn-line);
}
.pn-glb-numbered .wp-block-post-template > li::before {
	content: counter(pn-glb-rank);
	font-weight: 800;
	color: var(--pn-ink-soft);
}
.pn-glb-numbered .wp-block-post-title { font-size: 0.95rem; margin: 0; font-weight: 500; }

/* =========================================================================
   Tribuna — capa de jornal (layout próprio)
   ========================================================================= */

.pn-trb-manchete { text-align: center; max-width: 900px; margin-inline: auto; }
.pn-trb-manchete .wp-block-post-title { font-size: clamp(2.2rem, 1.2rem + 3.4vw, 3.8rem); margin: 0.5rem 0; }
.pn-trb-manchete .wp-block-post-excerpt { font-size: 1.2rem; color: var(--pn-ink-soft); max-width: 60ch; margin-inline: auto; }
.pn-trb-manchete .wp-block-post-author-name,
.pn-trb-manchete .wp-block-post-date { font-size: 0.82rem; color: var(--pn-ink-soft); text-transform: uppercase; letter-spacing: 0.05em; }
.pn-trb-manchete .wp-block-post-featured-image { margin-top: 1.75rem; }
.pn-trb-manchete .wp-block-post-featured-image img { aspect-ratio: 16/8; object-fit: cover; width: 100%; border: 1px solid var(--pn-line); }

.pn-trb-rule { border-top: 3px double var(--pn-ink); margin: 2.25rem auto; max-width: 1300px; }

.pn-trb-briefs { align-items: flex-start; }
.pn-trb-col .wp-block-post-template { gap: 1.75rem; }
.pn-trb-col .wp-block-post-template > li + li { border-top: 1px solid var(--pn-line); padding-top: 1.5rem; }
.pn-trb-col .wp-block-post-title { font-size: 1.15rem; margin: 0.3rem 0 0.4rem; }
.pn-trb-col .wp-block-post-excerpt { font-size: 0.9rem; color: var(--pn-ink-soft); }
.pn-trb-briefs > .wp-block-column + .wp-block-column { border-left: 1px solid var(--pn-line); padding-left: 2.25rem; }

.pn-trb-mostread { text-align: center; }
.pn-trb-mostread-list .wp-block-post-template { display: flex; flex-wrap: wrap; justify-content: center; gap: 0 1.5rem; }
.pn-trb-mostread-list .wp-block-post-template > li::after { content: "·"; margin-left: 1.5rem; color: var(--pn-line); }
.pn-trb-mostread-list .wp-block-post-template > li:last-child::after { content: ""; }
.pn-trb-mostread-list .wp-block-post-title { font-size: 1rem; margin: 0; }

/* =========================================================================
   Pulso — hero full-bleed + carrosséis (layout próprio)
   ========================================================================= */

.pn-pls-hero { position: relative; }
.pn-pls-hero .wp-block-post-featured-image { margin: 0; }
.pn-pls-hero .wp-block-post-featured-image img { width: 100%; aspect-ratio: 21/9; object-fit: cover; display: block; }
.pn-pls-hero .wp-block-post-featured-image::after {
	content: "";
	position: absolute; inset: 0;
	background: linear-gradient(to top, rgba(6,8,10,0.92), rgba(6,8,10,0.1) 60%);
}
.pn-pls-hero__body { position: absolute; left: 0; right: 0; bottom: 0; padding-block: 2rem; z-index: 2; }
.pn-pls-hero__body .wp-block-post-title,
.pn-pls-hero__body .wp-block-post-title a { color: #fff; text-transform: uppercase; font-size: clamp(1.8rem, 1rem + 3vw, 3.2rem); }
.pn-pls-hero__body .wp-block-post-excerpt { color: rgba(255,255,255,0.82); max-width: 60ch; }
.pn-pls-hero__body .wp-block-post-date { color: rgba(255,255,255,0.6); }

.pn-pls-carousel .wp-block-post-template {
	display: flex;
	flex-wrap: nowrap;
	overflow-x: auto;
	gap: 1.25rem;
	scroll-snap-type: x mandatory;
	padding: 0.25rem 0.25rem 1rem;
	scrollbar-width: none;
}
.pn-pls-carousel .wp-block-post-template::-webkit-scrollbar { display: none; }
.pn-pls-carousel .wp-block-post-template > li {
	flex: 0 0 270px;
	scroll-snap-align: start;
	background: var(--pn-surface);
	border-radius: var(--pn-radius);
	overflow: hidden;
	box-shadow: 0 3px 10px rgba(0, 0, 0, 0.14);
	transition: transform 0.2s, box-shadow 0.2s;
}
.pn-pls-carousel .wp-block-post-template > li:hover {
	transform: translateY(-3px);
	box-shadow: 0 10px 24px rgba(0, 0, 0, 0.2);
}
.pn-pls-carousel .wp-block-post-featured-image { margin: 0; position: relative; }
.pn-pls-carousel .wp-block-post-featured-image::after {
	content: "";
	position: absolute; inset: 0;
	background: linear-gradient(to top, rgba(0,0,0,0.55), rgba(0,0,0,0) 55%);
}
.pn-pls-carousel .wp-block-post-featured-image img { aspect-ratio: 16/10; object-fit: cover; width: 100%; display: block; }
.pn-pls-carousel .pn-kicker, .pn-pls-carousel .wp-block-post-title { padding-inline: 0.9rem; }
.pn-pls-carousel .pn-kicker, .pn-pls-carousel .pn-kicker a { color: var(--pn-section-accent, var(--pn-brand)); font-weight: 900; }
.pn-pls-carousel .pn-kicker { padding-top: 0.85rem; }
.pn-pls-carousel .wp-block-post-title { font-size: 1.02rem; padding-bottom: 0.9rem; text-transform: uppercase; line-height: 1.28; }

.pn-pls-ticker .wp-block-post-template {
	display: flex;
	flex-wrap: nowrap;
	overflow-x: auto;
	gap: 0;
}
.pn-pls-ticker .wp-block-post-template > li {
	flex: 0 0 auto;
	padding: 0.6rem 1.25rem;
	border-right: 1px solid var(--pn-line);
	white-space: nowrap;
}
.pn-pls-ticker .wp-block-post-title { font-size: 0.9rem; font-weight: 700; margin: 0; }

/* =========================================================================
   Responsivo
   ========================================================================= */

@media (max-width: 900px) {
	.pn-topbar__meta,
	.pn-masthead__widgets { display: none !important; }

	/* Régua de editorias: sempre visível, rolando na horizontal — é assim que
	   os portais fazem. Esconder atrás de hambúrguer mata a navegação. */
	.pn-nav > .wp-block-group {
		overflow-x: auto;
		scrollbar-width: none;
		-webkit-overflow-scrolling: touch;
		justify-content: flex-start !important; /* centralizar/direita não faz sentido numa régua que rola */
	}
	.pn-nav > .wp-block-group::-webkit-scrollbar { display: none; }
	.pn-nav .wp-block-navigation {
		flex-wrap: nowrap;
		gap: 1.25rem;
		width: max-content;
	}
	.pn-nav .wp-block-navigation-item__content {
		white-space: nowrap;
		padding-block: 0.7rem;
	}

	/* Global: troca a barra de editorias pelo hambúrguer, como a BBC faz */
	.pn-nav--global { display: none; }
	.pn-nav--global-mobile { display: block; }
}

@media (max-width: 781px) {
	/* Cabeçalho: já existia uma regra (ver @media 900px logo abaixo,
	   `.pn-topbar__meta, .pn-masthead__widgets { display:none!important }`)
	   pra esconder clima/câmbio/Ibovespa no mobile e simplificar — só que
	   ela não vencia no caso "ao lado da logo" porque
	   `body.pn-*-masthead .pn-masthead__widgets` (2 classes) tem mais
	   especificidade que `.pn-masthead__widgets` sozinho (1 classe), então
	   o widget continuava de pé, espremido em cima da logo. Aqui a regra
	   mira exatamente esse seletor mais específico, fechando a brecha —
	   resultado: clima/câmbio/Ibovespa somem no mobile em qualquer
	   posição escolhida (topbar ou ao lado da logo), a logo nunca mais
	   fica cortada. */
	body.pn-weather-masthead .pn-masthead__widgets,
	body.pn-currency-masthead .pn-masthead__widgets,
	body.pn-market-masthead .pn-masthead__widgets {
		display: none !important;
	}
	.pn-masthead > .wp-block-group.alignwide { flex-wrap: wrap !important; row-gap: 0.6rem; }
	.pn-masthead > .wp-block-group.alignwide > .wp-block-group:first-child { flex-wrap: wrap !important; }
	.wp-block-site-logo { flex-shrink: 1; min-width: 0; }
	.wp-block-site-logo img { max-width: 140px; width: auto; }

	/* Faixa de plantão em uma linha só (a rolagem contínua já lida com
	   texto comprido sozinha — não precisa mais de ellipsis aqui) */
	.pn-breaking__row { min-height: 38px; }

	/* Manchete principal continua grande — é a chamada do dia */
	.pn-hero .wp-block-post-title { font-size: 1.7rem; }
	.pn-hero .wp-block-post-excerpt { font-size: 0.98rem; }
	.pn-ident--pulso .pn-hero__body { position: static; background: var(--pn-surface-dark); }
	.pn-ident--pulso .pn-hero .wp-block-post-featured-image::after { display: none; }

	/* Demais matérias viram linha compacta (miniatura + título).
	   Sem isso a home passa de 8.000px de altura no celular.
	   O seletor [class*="pn-ident--"] existe para empatar em especificidade
	   com as regras de identidade (ex.: as do Pulso, que são 3 classes) —
	   media query não soma especificidade. */
	.pn-grid .wp-block-post-template {
		grid-template-columns: 1fr !important;
		gap: 0 !important;
	}
	[class*="pn-ident--"] .pn-grid .wp-block-post-template > li {
		display: grid;
		grid-template-columns: 118px 1fr;
		column-gap: 0.85rem;
		align-items: start;
		padding-block: 0.95rem;
		border-top: 1px solid var(--pn-line);
	}
	[class*="pn-ident--"] .pn-grid .wp-block-post-template > li > .wp-block-post-featured-image {
		grid-column: 1;
		grid-row: 1 / span 5;
		margin-bottom: 0;
	}
	[class*="pn-ident--"] .pn-grid .wp-block-post-template > li > .wp-block-post-featured-image img {
		aspect-ratio: 4 / 3;
	}
	[class*="pn-ident--"] .pn-grid .wp-block-post-template > li > *:not(.wp-block-post-featured-image) {
		grid-column: 2;
	}
	.pn-grid .wp-block-post-title { font-size: 1.02rem; }
	/* resumo some nas listas: no celular ele só alonga a página */
	.pn-grid .wp-block-post-excerpt { display: none; }

	/* Pulso: cartão vira linha também, sem o padding interno do cartão */
	.pn-ident--pulso .pn-grid .wp-block-post-template > li {
		box-shadow: none;
		border-radius: 0;
		background: transparent;
	}
	.pn-ident--pulso .pn-grid .wp-block-post-template > li > *:not(.wp-block-post-featured-image) {
		padding-inline: 0;
	}
	.pn-ident--pulso .pn-grid .wp-block-post-template > li > .pn-kicker { padding-top: 0; }
	.pn-ident--pulso .pn-grid .wp-block-post-template > li > .wp-block-post-date { padding-bottom: 0; }
	.pn-ident--pulso .pn-grid .wp-block-post-featured-image { border-radius: 8px; overflow: hidden; }

	.pn-list .wp-block-columns { flex-wrap: nowrap !important; gap: 0.85rem; }
	.pn-list .wp-block-column:first-child { flex-basis: 118px !important; flex-shrink: 0; }

	/* Seções e artigo mais justos */
	.pn-section-head { margin-bottom: 0.9rem; }
	.pn-article__standfirst { font-size: 1.05rem; }
	.pn-article__content { font-size: 1.05rem; }
	.pn-article__content blockquote { font-size: 1.12rem; }
	.pn-ident--tribuna .pn-article__content > p:first-of-type::first-letter { font-size: 3rem; }

	.pn-footer { padding-block: 2.25rem 1.5rem; }
	.pn-footer .wp-block-columns { gap: 1.75rem; }
	.pn-footer__legal { flex-direction: column; gap: 0.4rem; }

	/* Alvos de toque confortáveis */
	.pn-nav a,
	.pn-latest .wp-block-post-title a,
	.pn-mostread .wp-block-post-title a { min-height: 40px; display: inline-block; }

	/* Links do rodapé ficavam com 29px de altura — pequenos para o dedo */
	.pn-footer a {
		display: inline-block;
		padding-block: 0.3rem;
		min-height: 36px;
	}
	.pn-footer .wp-block-navigation { gap: 0.15rem; }
	.pn-footer .wp-block-social-links a { min-height: 0; padding-block: 0; }

	/* Regional */
	.pn-reg-widgets { flex-wrap: wrap !important; gap: 1.25rem; }
	.pn-reg-widgets .pn-widget--horoscope iframe { height: 320px; }
	[class*="pn-ident--"] .pn-reg-grid .wp-block-post-template { grid-template-columns: 1fr 1fr !important; }
	.pn-reg-panel .wp-block-post-featured-image img { aspect-ratio: 16/10; }

	/* Global */
	.pn-glb-briefs, .pn-glb-list { margin-top: 1.5rem; }
	.pn-trb-briefs > .wp-block-column + .wp-block-column { border-left: none; padding-left: 0; border-top: 1px solid var(--pn-line); padding-top: 1.5rem; margin-top: 1.5rem; }

	/* Pulso */
	.pn-pls-hero .wp-block-post-featured-image img { aspect-ratio: 4/5; }
	.pn-pls-carousel .wp-block-post-template > li { flex-basis: 200px; }
}

@media (max-width: 420px) {
	.pn-grid .wp-block-post-template > li { grid-template-columns: 104px 1fr; }
	.pn-hero .wp-block-post-title { font-size: 1.55rem; }
	.pn-masthead { padding-block: 0.85rem; }
}

@media (prefers-reduced-motion: reduce) {
	.pn-grid .wp-block-post-featured-image img,
	.pn-hero .wp-block-post-featured-image img { transition: none; }
}
