/* Caderno Zero Suite — camada de identidade visual da marca (1.7.2 §1).
   Unifica Home, /materiais/, /blog/ e a página individual de material sob a
   mesma paleta marinho + laranja já usada nos materiais em PDF/SVG.

   POR QUE ESTA FOLHA EXISTE SEPARADA DE tokens.css
   tokens.css declara a escala fixa em `:root`. Templates\Tokens ainda imprime,
   no <head>, um `<style id="czs-token-overrides">:root{...}</style>` com as
   cores salvas em Aparência — inline no head, mesma especificidade de `:root`
   e SEMPRE depois desta folha, então ele venceria qualquer redefinição feita
   aqui em `:root`. Por isso o mapeamento marca -> tokens do Suite mora em
   `body.czs-brand`: a especificidade é maior e as custom properties herdam
   para tudo que é renderizado dentro do <body>, que é todo o site visível.
   Desligar "Identidade visual da marca" em Aparência remove a classe do body
   e o site volta exatamente ao comportamento anterior, sem migração de dados.

   Nenhuma regra aqui edita o tema Kadence: são apenas seletores que o tema
   já emite (.site-header/.site-footer/.wp-block-button__link/...) restilizados
   pela folha do plugin, que sobrevive a qualquer update do tema. */

:root {
	/* Tokens de marca (nomes --cz-*), a fonte da verdade da identidade. */
	--cz-navy: #0f2b5c;
	--cz-blue: #1d4ed8;
	--cz-orange: #ea580c;
	--cz-ink: #1e293b;
	--cz-slate: #475569;
	--cz-slate-light: #94a3b8;
	--cz-bg: #f8fafc;
	--cz-bg-soft: #f1f5f9;
	--cz-border: #e2e8f0;
	--cz-border-strong: #cbd5e1;
	--cz-navy-deep: #0a1d40;

	/* Cor por etapa — funcional, não decorativa: identifica a etapa antes
	   mesmo da leitura do texto (badges, miniaturas de card, ficha técnica). */
	--cz-tint-iniciais: #fff4ec;
	--cz-tint-iniciais-ink: #c2410c;
	--cz-tint-finais: #eaf1fb;
	--cz-tint-finais-ink: #0f2b5c;
	--cz-tint-medio: #eef1fd;
	--cz-tint-medio-ink: #1d4ed8;

	--cz-font-ui: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	--cz-font-reading: "Source Serif 4", Georgia, "Times New Roman", serif;
}

/* Mapeamento marca -> tokens do Suite. Cada componente já existente (cards,
   botões, chips, paginação, filtros, selos) passa a usar a paleta da marca sem
   uma única regra nova, porque todos já leem estes --czs-*. */
body.czs-brand {
	--czs-color-primary: var(--cz-navy);
	--czs-color-primary-dark: var(--cz-blue);
	--czs-color-primary-hover: var(--cz-blue);
	--czs-color-primary-soft: var(--cz-tint-finais);
	--czs-color-secondary: var(--cz-navy-deep);
	--czs-color-accent: var(--cz-orange);
	--czs-color-arena: var(--cz-orange);
	--czs-color-text: var(--cz-ink);
	--czs-color-muted: var(--cz-slate);
	--czs-color-border: var(--cz-border);
	--czs-color-surface: #ffffff;
	--czs-color-background: var(--cz-bg-soft);

	--czs-font-heading: var(--cz-font-ui);
	--czs-font-body: var(--cz-font-ui);

	color: var(--cz-ink);
}

/* Inter em toda a interface utilitária. O blog troca para Source Serif 4
   apenas no título e no corpo do artigo (ver "Blog" abaixo) — a diferença
   entre "modo leitura" e o resto do site é intencional. */
body.czs-brand .czs-container,
body.czs-brand .czs-card,
body.czs-brand .czs-btn,
body.czs-brand .czs-chip,
body.czs-brand .czs-selo,
body.czs-brand .czs-filters,
body.czs-brand .czs-breadcrumb {
	font-family: var(--cz-font-ui);
}

/* ---------------------------------------------------------------- Logo --- */

/* Símbolo + wordmark. Usado no filtro get_custom_logo, no shortcode
   [caderno_zero_logo] e no rodapé (variante clara). */
.cz-logo { display: inline-flex; align-items: center; gap: .55rem; text-decoration: none; line-height: 1; }
.cz-logo__mark { display: block; width: 38px; height: 38px; flex: none; }
.cz-logo--sm .cz-logo__mark { width: 30px; height: 30px; }
.cz-logo__word { display: inline-flex; align-items: baseline; gap: .22em; font-family: var(--cz-font-ui); font-weight: 800; font-size: 1.15rem; letter-spacing: .01em; }
.cz-logo--sm .cz-logo__word { font-size: 1rem; }
.cz-logo__word-1 { color: var(--cz-navy); }
.cz-logo__word-2 { color: var(--cz-orange); }
/* Variante clara: fundo marinho (rodapé, faixas de CTA). */
.cz-logo--light .cz-logo__word-1 { color: #fff; }
.cz-logo--light .cz-logo__word-2 { color: #fdba74; }
.cz-logo:focus-visible { outline: 2px solid var(--cz-orange); outline-offset: 3px; border-radius: 4px; }

/* Fallback para temas que imprimem apenas o título do site em texto (Kadence
   sem logo configurado): o título fica em marinho e ganha o símbolo do caderno
   à esquerda, sem editar um arquivo do tema. O wordmark de duas cores exige
   markup real — use o filtro get_custom_logo ou o shortcode para obtê-lo. */
body.czs-brand .site-title,
body.czs-brand .site-title a,
body.czs-brand .site-branding .site-title a {
	color: var(--cz-navy);
	font-family: var(--cz-font-ui);
	font-weight: 800;
	letter-spacing: .01em;
	text-decoration: none;
}
body.czs-brand .site-branding .site-title::before {
	content: "";
	display: inline-block;
	width: 1.1em;
	height: 1.1em;
	margin-right: .4em;
	vertical-align: -.2em;
	background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 38 38"><rect width="38" height="38" rx="6" fill="%230f2b5c"/><circle cx="7" cy="9" r="1.5" fill="%23fff"/><circle cx="7" cy="16" r="1.5" fill="%23fff"/><circle cx="7" cy="23" r="1.5" fill="%23fff"/><circle cx="7" cy="30" r="1.5" fill="%23fff"/><path d="M13 11h15M13 19h15M13 27h15" stroke="%23fff" stroke-width="1.5" stroke-opacity=".6"/><path d="M24 30 L31 12 L34 13.5 L27 32 Z" fill="%23ea580c"/><path d="M31 12 L32.5 8 L34 13.5 Z" fill="%23475569"/></svg>') center/contain no-repeat;
}

/* ------------------------------------------------------- Botões e links --- */

/* Botões do Gutenberg, do Kadence e do WooCommerce, além dos do próprio
   Suite. Só cor/raio — nunca layout, para não brigar com o tema. */
body.czs-brand .czs-btn { border-radius: 9px; font-family: var(--cz-font-ui); }
body.czs-brand .czs-btn--primary { background: var(--cz-navy); color: #fff; }
body.czs-brand .czs-btn--primary:hover,
body.czs-brand .czs-btn--primary:focus-visible { background: var(--cz-blue); color: #fff; }
body.czs-brand .czs-btn--ghost { color: var(--cz-navy); border-color: var(--cz-border-strong); }
body.czs-brand .czs-btn--ghost:hover { border-color: var(--cz-navy); color: var(--cz-blue); }

body.czs-brand .wp-block-button__link,
body.czs-brand .kb-button,
body.czs-brand .button-primary-style,
body.czs-brand .woocommerce a.button,
body.czs-brand .woocommerce button.button,
body.czs-brand .woocommerce input.button,
body.czs-brand .woocommerce #respond input#submit {
	background-color: var(--cz-navy);
	color: #fff;
	border-radius: 9px;
	font-family: var(--cz-font-ui);
	font-weight: 600;
}
body.czs-brand .wp-block-button__link:hover,
body.czs-brand .kb-button:hover,
body.czs-brand .woocommerce a.button:hover,
body.czs-brand .woocommerce button.button:hover,
body.czs-brand .woocommerce input.button:hover,
body.czs-brand .woocommerce #respond input#submit:hover {
	background-color: var(--cz-blue);
	color: #fff;
}
/* Botão outline do Gutenberg: nunca pintar o fundo de marinho. */
body.czs-brand .wp-block-button.is-style-outline .wp-block-button__link {
	background-color: transparent;
	color: var(--cz-navy);
	border-color: var(--cz-navy);
}

body.czs-brand .czs-card__cta { color: var(--cz-navy); }
body.czs-brand .czs-container a:not(.czs-btn):not(.czs-card):not(.cz-logo) { color: var(--cz-navy); }
body.czs-brand .czs-container a:not(.czs-btn):not(.czs-card):not(.cz-logo):hover { color: var(--cz-blue); }
body.czs-brand .czs-breadcrumb a:hover { color: var(--cz-navy); }

/* ---- Layout garantido mesmo sem frontend.css (enable_css = 0) ----------- */
/* Quando "CSS público" está desligado nas configurações do plugin, frontend.css
   é removido da fila mas brand.css continua carregando. Além disso, frontend.css
   só é enfileirado em páginas do CPT "materiais"; em páginas WordPress normais
   (etapas, anos, disciplinas) que usam blocos do Suite ele TAMBÉM não carrega.
   As regras abaixo replicam o layout completo da grade e dos cards para que
   tudo funcione em qualquer cenário. São idênticas às de frontend.css; quando
   as duas folhas carregam juntas, brand.css vem por último e as regras se
   somam sem conflito. */

/* Seções e grade responsiva. */
.czs-section { margin: 2rem 0; }
.czs-section__header { margin-bottom: 1rem; }
.czs-section__title { font-size: 1.5rem; margin: 0 0 .25rem; }
.czs-section__subtitle { margin: 0; opacity: .8; }

.czs-grid {
	display: grid;
	grid-template-columns: repeat(var(--czs-columns, 3), minmax(0, 1fr));
	gap: var(--czs-space-5, 1.5rem);
}
@media (max-width: 960px) { .czs-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .czs-grid { grid-template-columns: 1fr; } }

/* Card: o <a class="czs-card"> precisa ser flex para que o rodapé fique
   sempre na base, independentemente da altura do conteúdo. height:100% +
   o grid em stretch fazem todos os cards de uma linha terminarem no mesmo nível. */
.czs-card {
	display: flex; flex-direction: column; height: 100%;
	border: 1px solid var(--czs-color-border, rgba(0,0,0,.08));
	border-radius: var(--czs-card-radius, var(--czs-radius-large, 12px)); overflow: hidden;
	background: var(--czs-color-surface, #fff); color: inherit; text-decoration: none;
	transition: box-shadow .15s ease, transform .15s ease;
}
.czs-card:hover, .czs-card:focus-within { box-shadow: var(--czs-card-shadow-hover, var(--czs-shadow-medium, 0 8px 24px rgba(0,0,0,.10))); transform: translateY(-2px); }
.czs-card:focus-visible { outline: 2px solid var(--czs-color-primary, #2563eb); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) { .czs-card { transition: none; } .czs-card:hover { transform: none; } }

/* Mídia do card: moldura com proporção fixa, imagem com object-fit:cover. */
.czs-card__media { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: var(--czs-color-background, #eef1f6); display: grid; place-items: center; }
.czs-card__media--square { aspect-ratio: 1 / 1; }
.czs-card__media--3x2   { aspect-ratio: 3 / 2; }
.czs-card__media--16x9  { aspect-ratio: 16 / 9; }
.czs-card__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* Cards de etapa (Home): 16:9 em vez de 4:3. */
.czs-stage-cards .czs-card__media { aspect-ratio: 16 / 9; }
.czs-card__badge { position: absolute; top: .6rem; left: .6rem; z-index: 2; }
.czs-card__media-fallback { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .4rem; color: var(--czs-color-muted, #93a1b5); }
.czs-card__media-icon { width: 3rem; height: 3rem; max-width: 3rem; max-height: 3rem; flex: none; opacity: .55; }
.czs-card__media-initials { font-size: .78rem; font-weight: 700; letter-spacing: .04em; padding: .15rem .55rem; border-radius: 999px; background: var(--czs-color-surface, #fff); border: 1px solid var(--czs-color-border, rgba(0,0,0,.1)); }

/* Corpo e textos do card. */
.czs-card__body { padding: .875rem 1rem 1rem; display: flex; flex-direction: column; gap: .4rem; flex: 1 1 auto; }
.czs-card__title {
	font-size: 1.05rem; margin: 0; line-height: 1.3;
	display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.czs-card__desc {
	margin: 0; font-size: .875rem; /* ~14px */ line-height: 1.5; color: var(--czs-color-muted, #4b5563);
	display: -webkit-box; -webkit-line-clamp: 4; line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden;
}
.czs-card__taxonomy { margin: .1rem 0 0; font-size: .8rem; color: var(--czs-color-muted, #6b7280); }
.czs-card__count    { font-size: .8rem; color: var(--czs-color-muted, #6b7280); }
.czs-card__footer {
	margin-top: auto;
	display: flex; align-items: center; justify-content: space-between; gap: .5rem; flex-wrap: wrap;
	padding-top: .6rem;
	border-top: 1px solid var(--czs-color-border, rgba(0,0,0,.08));
}
.czs-card__cta {
	display: inline-flex; align-items: center;
	padding: .3rem .75rem;
	border: 1px solid currentColor; border-radius: var(--czs-radius-sm, 8px);
	font-weight: 600; font-size: .85rem; line-height: 1.4;
	color: var(--czs-color-primary, #2563eb);
}
.czs-card:hover .czs-card__cta,
.czs-card:focus-within .czs-card__cta { background: var(--czs-color-primary-soft, #e8effd); }

/* Trilha: flex horizontal, sem marcadores de lista. */
nav.cz-breadcrumb .cz-breadcrumb__list,
.cz-breadcrumb__list {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .15rem .4rem;
	margin: 0;
	padding: 0;
	counter-reset: none;
	font-size: .85rem;
	line-height: 1.5;
}
.cz-breadcrumb { margin: var(--czs-space-4, 1rem) 0 var(--czs-space-5, 1.5rem); }
.cz-breadcrumb__item {
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	margin: 0; padding: 0;
	list-style: none;
}
.cz-breadcrumb__item::marker { content: ""; }
.cz-breadcrumb__item::before { content: none; }
@media (max-width: 640px) {
	.cz-breadcrumb { margin: var(--czs-space-3, .75rem) 0 var(--czs-space-4, 1rem); }
	.cz-breadcrumb__list { font-size: .8125rem; }
	.cz-breadcrumb__current { overflow-wrap: anywhere; }
}

/* Chips genéricos (.czs-chips) e chips de taxonomia do material (.cz-material-taxonomies). */
.czs-chips {
	display: flex;
	flex-wrap: wrap;
	gap: .4rem;
	margin: .5rem 0;
	list-style: none;
	padding: 0;
}
.czs-chip {
	display: inline-flex;
	align-items: center;
	padding: .25rem .65rem;
	border-radius: 999px;
	font-size: .8rem;
}
.czs-chip a { color: inherit; text-decoration: none; }

.cz-material-taxonomies {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .5rem;
	margin: var(--czs-space-4, 1rem) 0 0;
	padding: 0;
}
.cz-material-taxonomies__item {
	display: inline-flex;
	align-items: center;
	margin: 0;
	padding: .25rem .7rem;
	list-style: none;
	border: 1px solid var(--czs-color-border, rgba(0,0,0,.1));
	border-radius: 999px;
	font-size: .85rem;
	line-height: 1.45;
	font-weight: 500;
	white-space: nowrap;
}
.cz-material-taxonomies__item::marker { content: ""; }
.cz-material-taxonomies__item a { color: inherit; text-decoration: none; }
@media (max-width: 480px) {
	.cz-material-taxonomies__item { white-space: normal; }
}

/* ------------------------------------------- Trilha e chips do material --- */

/* A forma (flex, separador, tamanhos) mora em frontend.css e no bloco acima;
   aqui só a cor específica da marca Caderno Zero.
   Links em marinho, item atual em cinza-ardósia, separador bem discreto — a
   trilha orienta, não compete com o <h1> do material. */
body.czs-brand .cz-breadcrumb__link { color: var(--cz-navy); }
body.czs-brand .cz-breadcrumb__link:hover,
body.czs-brand .cz-breadcrumb__link:focus-visible { color: var(--cz-blue); }
body.czs-brand .cz-breadcrumb__current,
body.czs-brand .cz-breadcrumb__text { color: var(--cz-slate); }
body.czs-brand .cz-breadcrumb__sep { color: var(--cz-slate-light); opacity: 1; }

/* Chips de classificação: fundo azul muito claro, borda sutil, texto marinho.
   Mesma família visual dos selos de etapa, um degrau abaixo em peso. */
body.czs-brand .cz-material-taxonomies__item {
	background: var(--cz-tint-finais);
	border-color: var(--cz-border);
	color: var(--cz-navy);
}
body.czs-brand .cz-material-taxonomies__item:hover { border-color: var(--cz-navy); color: var(--cz-blue); }
body.czs-brand .cz-material-taxonomies__item--plain {
	background: var(--cz-bg-soft);
	color: var(--cz-slate);
}
body.czs-brand .cz-material-taxonomies__item--plain:hover { border-color: var(--cz-border-strong); color: var(--cz-slate); }

/* Rodapé do card: filete na cor de borda da marca. */
body.czs-brand .czs-card__footer { border-top-color: var(--cz-border); }
body.czs-brand .czs-card__desc { color: var(--cz-slate); }

/* ------------------------------------------------ Selos, chips e etapas --- */

/* "Gratuito" em laranja, conforme a identidade dos materiais. */
body.czs-brand .czs-selo--success { background: var(--cz-tint-iniciais); color: var(--cz-orange); }
body.czs-brand .czs-selo--warning { background: #fef3c7; color: #92400e; }
body.czs-brand .czs-selo--muted { background: var(--cz-bg-soft); color: var(--cz-slate); }

body.czs-brand .czs-chip {
	background: var(--cz-bg-soft);
	border: 1px solid var(--cz-border-strong);
	color: var(--cz-slate);
	font-weight: 500;
}
body.czs-brand .czs-chip.is-current,
body.czs-brand .czs-chip[aria-current="true"] {
	background: var(--cz-navy);
	border-color: var(--cz-navy);
	color: #fff;
}
body.czs-brand .czs-chip.is-current a { color: #fff; }

/* Chips e miniaturas coloridos por etapa. A classe vem de Brand::stage_class(),
   derivada do slug do termo de `etapa` — nunca de uma cor escolhida à mão. */
body.czs-brand .cz-stage--iniciais { background: var(--cz-tint-iniciais); color: var(--cz-tint-iniciais-ink); border-color: transparent; }
body.czs-brand .cz-stage--finais { background: var(--cz-tint-finais); color: var(--cz-tint-finais-ink); border-color: transparent; }
body.czs-brand .cz-stage--medio { background: var(--cz-tint-medio); color: var(--cz-tint-medio-ink); border-color: transparent; }

/* --------------------------------------------------------- Cabeçalho ----- */

body.czs-brand .site-header,
body.czs-brand .site-header-wrap {
	font-family: var(--cz-font-ui);
}
body.czs-brand .main-navigation a,
body.czs-brand .header-navigation a,
body.czs-brand .primary-menu-container a {
	color: var(--cz-ink);
	font-family: var(--cz-font-ui);
	font-weight: 500;
}
body.czs-brand .main-navigation a:hover,
body.czs-brand .header-navigation a:hover,
body.czs-brand .primary-menu-container a:hover,
body.czs-brand .main-navigation .current-menu-item > a {
	color: var(--cz-navy);
}

/* ------------------------------------------------------------- Rodapé ---- */

/* Faixa marinho + texto claro, aplicada ao rodapé que o próprio tema já
   renderiza. As colunas (Sobre / Materiais / Blog / Contato) continuam sendo
   as áreas de widget do tema — o plugin só veste, nunca substitui. */
body.czs-brand .site-footer,
body.czs-brand .site-footer-wrap,
body.czs-brand footer.site-footer {
	background: var(--cz-navy-deep);
	color: #cbd5e1;
	font-family: var(--cz-font-ui);
}
body.czs-brand .site-footer a,
body.czs-brand .site-footer-wrap a { color: #e2e8f0; text-decoration: none; }
body.czs-brand .site-footer a:hover,
body.czs-brand .site-footer-wrap a:hover { color: #fff; text-decoration: underline; }
body.czs-brand .site-footer h2,
body.czs-brand .site-footer h3,
body.czs-brand .site-footer .widget-title { color: #fff; font-weight: 700; }

/* Rodapé próprio do Suite (opcional — só existe quando o site desativa o
   rodapé do tema; ver docs/1.7.2-IDENTIDADE-VISUAL.md). */
.cz-footer { background: var(--cz-navy-deep); color: #cbd5e1; font-family: var(--cz-font-ui); padding: 3rem 1rem 2rem; }
.cz-footer__inner { max-width: var(--czs-container-width, 1200px); margin: 0 auto; display: grid; grid-template-columns: 1.4fr repeat(3, 1fr); gap: 2rem; }
.cz-footer__tagline { margin: .75rem 0 0; font-size: .9rem; color: var(--cz-slate-light); max-width: 34ch; }
.cz-footer__title { margin: 0 0 .6rem; font-size: .8rem; text-transform: uppercase; letter-spacing: .08em; color: #fff; font-weight: 700; }
.cz-footer__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .4rem; font-size: .9rem; }
.cz-footer__list a { color: #cbd5e1; text-decoration: none; }
.cz-footer__list a:hover { color: #fff; text-decoration: underline; }
.cz-footer__bottom { max-width: var(--czs-container-width, 1200px); margin: 2rem auto 0; padding-top: 1.25rem; border-top: 1px solid rgba(255,255,255,.12); font-size: .82rem; color: var(--cz-slate-light); }
@media (max-width: 900px) { .cz-footer__inner { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .cz-footer__inner { grid-template-columns: 1fr; } }

/* ----------------------------------------- Página individual de material -- */

/* Traço laranja de 46×3px abaixo do <h1> (spec §3). */
body.czs-brand .czs-material-hero__title { color: var(--cz-navy); font-family: var(--cz-font-ui); font-weight: 800; }
body.czs-brand .czs-material-hero__title::after {
	content: "";
	display: block;
	width: 46px;
	height: 3px;
	margin-top: .7rem;
	background: var(--cz-orange);
	border-radius: 2px;
}
body.czs-brand .czs-material-hero__summary { color: var(--cz-slate); }

/* Ficha técnica: painel único com fundo --bg-soft e grid de rótulo/valor, no
   lugar dos tiles soltos. Só chegam aqui os campos preenchidos
   (Cards::material_meta()), então nunca há célula vazia para esconder. */
body.czs-brand .czs-material-info {
	background: var(--cz-bg-soft);
	border: 1px solid var(--cz-border);
	border-radius: 14px;
	padding: 1.25rem 1.4rem;
}
body.czs-brand .czs-material-info__title { margin: 0 0 1rem; font-size: .78rem; text-transform: uppercase; letter-spacing: .09em; color: var(--cz-slate-light); font-weight: 700; }
body.czs-brand .czs-material-info dl {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: .9rem 1.5rem;
	margin: 0;
}
body.czs-brand .czs-material-info dt,
body.czs-brand .czs-material-info dd {
	flex: none;
	margin: 0;
	padding: 0;
	background: none;
	border: none;
	border-radius: 0;
}
body.czs-brand .czs-material-info dt { font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; color: var(--cz-slate-light); font-weight: 700; }
body.czs-brand .czs-material-info dd { font-size: .95rem; color: var(--cz-ink); font-weight: 600; margin-top: .15rem; }
@media (max-width: 560px) { body.czs-brand .czs-material-info dl { grid-template-columns: 1fr; } }

/* Frame do preview do material: sombra sutil, nunca uma imagem "solta". */
body.czs-brand .czs-material__media {
	border: 1px solid var(--cz-border);
	border-radius: 14px;
	box-shadow: 0 8px 24px rgba(15, 43, 92, .08);
	background: #fff;
	padding: .5rem;
}
body.czs-brand .czs-material__media img { border-radius: 10px; }

/* Estado "em produção" (spec §3): borda tracejada, tom informativo — nunca a
   palavra "indisponível", e nunca o último elemento da página (os relacionados
   continuam logo abaixo). */
.cz-em-producao {
	border: 1.5px dashed var(--cz-border-strong);
	border-radius: 12px;
	background: var(--cz-bg);
	padding: 1.1rem 1.2rem;
	text-align: left;
}
.cz-em-producao__title { display: block; font-weight: 700; color: var(--cz-navy); margin-bottom: .3rem; font-size: .98rem; }
.cz-em-producao__text { margin: 0; font-size: .88rem; color: var(--cz-slate); }

/* --------------------------------------------------------------- Blog ---- */

/* Source Serif 4 apenas no título e no corpo do artigo. */
.cz-blog { font-family: var(--cz-font-ui); }

.cz-blog__hero { background: linear-gradient(180deg, var(--cz-bg-soft), transparent); border-radius: 18px; padding: 2.5rem 1.5rem 2rem; margin: 1.5rem 0 2.5rem; }
.cz-blog__title { font-family: var(--cz-font-reading); font-weight: 700; font-size: clamp(1.9rem, 1.4rem + 2vw, 2.6rem); color: var(--cz-navy); margin: 0 0 .6rem; line-height: 1.15; }
.cz-blog__intro { max-width: 58ch; margin: 0 0 1.5rem; color: var(--cz-slate); font-size: 1.05rem; }
.cz-blog__search { display: flex; gap: .6rem; max-width: 560px; margin-bottom: 1.25rem; }
.cz-blog__search input[type="search"] { flex: 1; min-width: 0; padding: .75rem 1rem; font-size: 1rem; border: 1px solid var(--cz-border-strong); border-radius: 9px; background: #fff; font-family: var(--cz-font-ui); }
.cz-blog__search input[type="search"]:focus-visible { outline: 2px solid var(--cz-navy); outline-offset: 1px; }
@media (max-width: 560px) { .cz-blog__search { flex-direction: column; } .cz-blog__search .czs-btn { width: 100%; text-align: center; } }

/* Destaques: 1 card grande + 2 menores, assimétrico no desktop. */
.cz-featured { display: grid; grid-template-columns: 1.5fr 1fr; gap: 1.5rem; margin-bottom: 1rem; }
.cz-featured__side { display: grid; gap: 1.5rem; align-content: start; }
@media (max-width: 900px) { .cz-featured { grid-template-columns: 1fr; } }

/* Card de post. Reaproveita .czs-card (grid, foco, mídia) e sobrescreve só o
   que a identidade do blog exige. */
.cz-post-card .czs-card__title { font-family: var(--cz-font-reading); font-weight: 600; color: var(--cz-navy); font-size: 1.15rem; }
.cz-featured__main .cz-post-card .czs-card__title { font-size: 1.5rem; }
.cz-post-card .czs-card__desc { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; line-clamp: 2; overflow: hidden; color: var(--cz-slate); }
.cz-post-card .czs-card { border-left: 4px solid transparent; }
.cz-post-card .czs-card:hover,
.cz-post-card .czs-card:focus-within { border-left-color: var(--cz-orange); box-shadow: 0 10px 28px rgba(15, 43, 92, .10); }
.cz-post-card .czs-card__meta { color: var(--cz-slate-light); }
.cz-post-card .czs-card__cta { color: var(--cz-navy); font-weight: 600; }

/* Miniatura com tom por etapa e ícone de linha simples — nunca foto de banco
   de imagem. Só aparece quando o post não tem imagem destacada. */
.cz-post-card__thumb { display: grid; place-items: center; aspect-ratio: 16 / 9; background: var(--cz-bg-soft); }
.cz-post-card__thumb--iniciais { background: var(--cz-tint-iniciais); color: var(--cz-tint-iniciais-ink); }
.cz-post-card__thumb--finais { background: var(--cz-tint-finais); color: var(--cz-tint-finais-ink); }
.cz-post-card__thumb--medio { background: var(--cz-tint-medio); color: var(--cz-tint-medio-ink); }
.cz-post-card__thumb svg { width: 2.75rem; height: 2.75rem; opacity: .75; }

/* Abas "Explore por etapa" — CSS puro, sem JavaScript (mesmo princípio do
   <details> dos filtros do catálogo). Cada aba é um radio escondido. */
.cz-tabs { margin: 1rem 0 2.5rem; }
.cz-tabs__radio { position: absolute; opacity: 0; pointer-events: none; }
.cz-tabs__list { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.5rem; border-bottom: 1px solid var(--cz-border); padding-bottom: .75rem; }
.cz-tabs__label { cursor: pointer; padding: .45rem .9rem; border-radius: 999px; font-size: .88rem; font-weight: 600; background: var(--cz-bg-soft); border: 1px solid var(--cz-border-strong); color: var(--cz-slate); }
.cz-tabs__label:hover { color: var(--cz-navy); }
.cz-tabs__panel { display: none; }
.cz-tabs__radio:focus-visible + .cz-tabs__label { outline: 2px solid var(--cz-navy); outline-offset: 2px; }
#cz-tab-0:checked ~ .cz-tabs__list [for="cz-tab-0"],
#cz-tab-1:checked ~ .cz-tabs__list [for="cz-tab-1"],
#cz-tab-2:checked ~ .cz-tabs__list [for="cz-tab-2"],
#cz-tab-3:checked ~ .cz-tabs__list [for="cz-tab-3"] { background: var(--cz-navy); border-color: var(--cz-navy); color: #fff; }
#cz-tab-0:checked ~ .cz-tabs__panels > [data-tab="0"],
#cz-tab-1:checked ~ .cz-tabs__panels > [data-tab="1"],
#cz-tab-2:checked ~ .cz-tabs__panels > [data-tab="2"],
#cz-tab-3:checked ~ .cz-tabs__panels > [data-tab="3"] { display: block; }

/* Faixa de CTA marinho puxando para /materiais/. */
.cz-cta-band { background: var(--cz-navy); color: #fff; border-radius: 18px; padding: 2.5rem 1.5rem; text-align: center; margin: 2.5rem 0; }
.cz-cta-band__title { font-family: var(--cz-font-reading); font-weight: 700; font-size: clamp(1.4rem, 1.1rem + 1.2vw, 1.9rem); margin: 0 0 .6rem; color: #fff; }
.cz-cta-band__text { max-width: 52ch; margin: 0 auto 1.5rem; color: #cbd5e1; }
.cz-cta-band .czs-btn--primary { background: var(--cz-orange); color: #fff; }
.cz-cta-band .czs-btn--primary:hover { background: #c2410c; color: #fff; }

/* Post individual: largura de leitura ~680px e tipografia serifada. */
.cz-article__head { max-width: 680px; margin: 0 auto 1.5rem; }
.cz-article__title { font-family: var(--cz-font-reading); font-weight: 700; font-size: clamp(1.9rem, 1.4rem + 2.2vw, 2.7rem); line-height: 1.15; color: var(--cz-navy); margin: .6rem 0 .8rem; }
.cz-article__lead { font-family: var(--cz-font-reading); font-size: 1.2rem; line-height: 1.5; color: var(--cz-slate); margin: 0 0 1.25rem; }
.cz-article__byline { display: flex; flex-wrap: wrap; gap: .5rem .8rem; align-items: center; font-size: .88rem; color: var(--cz-slate-light); margin: 0 0 1.5rem; padding-bottom: 1.25rem; border-bottom: 1px solid var(--cz-border); }
.cz-article__cover { max-width: 900px; margin: 0 auto 2rem; border-radius: 14px; overflow: hidden; box-shadow: 0 8px 24px rgba(15, 43, 92, .08); }
.cz-article__cover img { display: block; width: 100%; height: auto; }

body.czs-brand .cz-article__body {
	max-width: 680px;
	margin: 0 auto;
	font-family: var(--cz-font-reading);
	font-size: 1.13rem;
	line-height: 1.75;
	color: var(--cz-ink);
}
body.czs-brand .cz-article__body h2 { font-family: var(--cz-font-reading); font-weight: 700; color: var(--cz-navy); font-size: 1.55rem; margin: 2.2em 0 .5em; }
body.czs-brand .cz-article__body h3 { font-family: var(--cz-font-reading); font-weight: 600; color: var(--cz-navy); font-size: 1.25rem; margin: 1.8em 0 .4em; }
body.czs-brand .cz-article__body blockquote { border-left: 3px solid var(--cz-orange); margin: 1.8em 0; padding: .2em 0 .2em 1.2em; font-style: italic; color: var(--cz-slate); }
body.czs-brand .cz-article__body a { color: var(--cz-navy); text-decoration: underline; text-underline-offset: 2px; }
body.czs-brand .cz-article__body a:hover { color: var(--cz-blue); }
body.czs-brand .cz-article__body img { max-width: 100%; height: auto; border-radius: 10px; }

/* Card de CTA inline no meio do artigo, linkando um material relacionado. */
.cz-inline-cta { max-width: 680px; margin: 2.5rem auto; display: flex; gap: 1rem; align-items: center; padding: 1.25rem; border: 1px solid var(--cz-border); border-left: 4px solid var(--cz-orange); border-radius: 12px; background: var(--cz-bg); font-family: var(--cz-font-ui); text-decoration: none; }
.cz-inline-cta:hover { box-shadow: 0 6px 18px rgba(15, 43, 92, .08); }
.cz-inline-cta__icon { flex: none; width: 44px; height: 44px; display: grid; place-items: center; border-radius: 10px; background: var(--cz-tint-finais); color: var(--cz-navy); }
.cz-inline-cta__icon svg { width: 24px; height: 24px; }
.cz-inline-cta__label { display: block; font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; color: var(--cz-orange); font-weight: 700; margin-bottom: .2rem; }
.cz-inline-cta__title { display: block; font-weight: 700; color: var(--cz-navy); line-height: 1.3; }
@media (max-width: 560px) { .cz-inline-cta { flex-direction: column; align-items: flex-start; } }

/* Seções finais do post ("Materiais relacionados", "Continue lendo"). */
.cz-blog-section { margin: 3rem 0; }
.cz-blog-section__title { font-family: var(--cz-font-reading); font-weight: 700; font-size: 1.4rem; color: var(--cz-navy); margin: 0 0 1.25rem; }

/* Badges de etapa/disciplina acima do título do post. */
.cz-badges { display: flex; flex-wrap: wrap; gap: .4rem; list-style: none; margin: 0 0 .5rem; padding: 0; }
.cz-badges li { font-size: .74rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; padding: .25rem .6rem; border-radius: 999px; background: var(--cz-bg-soft); color: var(--cz-slate); }
.cz-badges a { color: inherit; text-decoration: none; }

/* Respeita "reduzir movimento" em todas as transições introduzidas aqui. */
@media (prefers-reduced-motion: reduce) {
	.cz-post-card .czs-card,
	.cz-inline-cta { transition: none; }
}

/* ---- Grid de navegação legacy (cz-nav-grid / cz-nav-card) ---------------- */
/* Páginas de ano/série criadas com HTML manual antes dos blocos do Suite.
   Escopo restrito às classes específicas — não afeta ol/ul/li/a do tema. */
.cz-nav-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--czs-space-5, 1.5rem);
	list-style: none;
	margin: 1.5rem 0;
	padding: 0;
}
@media (max-width: 960px) { .cz-nav-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .cz-nav-grid { grid-template-columns: 1fr; } }

.cz-nav-card {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1.25rem 1rem;
	border: 1px solid var(--czs-color-border, rgba(0,0,0,.08));
	border-radius: var(--czs-card-radius, 12px);
	background: var(--czs-color-surface, #fff);
	color: var(--cz-navy, #0f2b5c);
	text-decoration: none;
	font-weight: 600;
	font-size: 1rem;
	text-align: center;
	transition: box-shadow .15s ease, transform .15s ease;
}
.cz-nav-card:hover,
.cz-nav-card:focus-visible {
	box-shadow: 0 8px 24px rgba(0,0,0,.10);
	transform: translateY(-2px);
	color: var(--cz-blue, #1d4ed8);
}
@media (prefers-reduced-motion: reduce) {
	.cz-nav-card { transition: none; }
	.cz-nav-card:hover { transform: none; }
}

/* Cards de materiais/artigos SEM foto grande (23/08/2026, a pedido do
usuário: fotos com pessoas nos cards de listagem "chamam muita atenção").
O card vira orientado a texto: uma faixa de cor discreta no lugar da
fotografia, sem a descrição longa, e o título ganha mais destaque. A ficha
do próprio material/artigo continua com a foto grande — isto muda só o
CARD de listagem (home, catálogo, relacionados etc.). Os cards de ETAPA
(.czs-stage-cards, "Escolha a etapa de ensino") NÃO são afetados: continuam
com as fotos reais. Duplicado aqui e em frontend.css porque nem toda
página carrega os dois arquivos. */
.czs-card__media img,
.czs-card__media-fallback,
.czs-card__badge {
  display: none;
}
.czs-card__media {
  aspect-ratio: auto;
  height: 6px;
  min-height: 6px;
  background: var(--czs-color-primary, #2563eb);
  opacity: .8;
}
.czs-card__desc {
  display: none;
}
.czs-card__body {
  padding-top: 1.1rem;
}
.czs-card__title {
  font-size: .95rem;
  -webkit-line-clamp: 1;
  line-clamp: 1;
}
.czs-stage-cards .czs-card__media img {
  display: block;
}
.czs-stage-cards .czs-card__media-fallback {
  display: flex;
}
.czs-stage-cards .czs-card__badge {
  display: block;
}
.czs-stage-cards .czs-card__media {
  aspect-ratio: 16 / 9;
  height: auto;
  min-height: 0;
  background: var(--czs-color-background, #eef1f6);
  opacity: 1;
}

/* Bug encontrado em 24/08/2026, ao religar o "CSS do front-end": o card do
   post em destaque lateral (.cz-featured__side .cz-post-card) usa uma marca-
   ção em que .czs-card__body é IRMÃ do link .czs-card, não filha — só a
   mídia fica dentro do link. Isso é inofensivo na maior parte do site, mas
   aqui .cz-post-card herda uma altura definida (o grid pai é esticado por
   .cz-featured, que usa align-items:stretch por padrão), e a regra global
   .czs-card { height:100% } passa a esticar o link para essa altura mesmo
   sem o corpo do card dentro dele — o corpo (título/resumo/rodapé) acaba
   renderizando abaixo do link inteiro, ultrapassando a seção "Destaques" e
   sobrepondo a faixa de CTA seguinte. Corrigido só aqui: o link volta a
   ocupar só o espaço da própria mídia, e o corpo flui logo abaixo dele,
   como já acontece no card principal (.cz-featured__main). */
.cz-post-card > .czs-card {
  height: auto;
}

/* 24/08/2026: por pedido do usuário, ARTIGOS voltam a mostrar foto — o
   tratamento "sem foto" de 23/08/2026 continua valendo só para materiais.
   Cobre toda seção que mostra card de artigo: "Artigos recentes" na Home
   (.czs-recent-posts) e tanto o arquivo de Artigos quanto o bloco de
   artigos relacionados dentro de um artigo (ambos usam .cz-post-card).
   Miniatura compacta 16:9 — o card continua curto, só a imagem volta. */
.czs-recent-posts .czs-card__media img,
.cz-post-card .czs-card__media img {
  display: block;
}
.czs-recent-posts .czs-card__media-fallback,
.cz-post-card .czs-card__media-fallback {
  display: flex;
}
.czs-recent-posts .czs-card__badge,
.cz-post-card .czs-card__badge {
  display: block;
}
.czs-recent-posts .czs-card__media,
.cz-post-card .czs-card__media {
  aspect-ratio: 16 / 9;
  height: auto;
  min-height: 0;
  background: var(--czs-color-background, #eef1f6);
  opacity: 1;
}

/* 24/08/2026: por pedido do usuário, mostrar 1 linha do resumo no card
   da grade de materiais (arquivo /materiais/, .czs-catalog) e no
   carrossel "Últimos materiais" da Home (.czs-carousel-section) — antes
   o texto ficava com display:none nessas duas áreas mesmo quando o
   material já tinha resumo cadastrado. Mais específico que a regra de
   ocultar acima (2 classes vs 1), então prevalece sem precisar mexer
   nela — que continua valendo para os outros contextos de card. */
.czs-catalog .czs-card__desc,
.czs-carousel-section .czs-card__desc {
	display: -webkit-box;
	-webkit-line-clamp: 1;
	-webkit-box-orient: vertical;
	overflow: hidden;
	margin: 0.35rem 0 0;
	font-size: 0.875rem;
	line-height: 1.5;
	color: var(--czs-color-muted, #4b5563);
}
