/*
 * Front do WP EAD.
 *
 * A linguagem visual é a do cartão: bloco sólido na cor primária, campos
 * claros por dentro, botão na cor de ação. Cores e arredondamento vêm de
 * EAD > Configurações > Aparência e entram como variáveis inline, então este
 * arquivo nunca traz cor fixa de cliente (regra 13 do CLAUDE.md).
 *
 * Classes em BEM com prefixo .ead- para o tema conseguir mirar sem adivinhar.
 */

:root {
	/* Sobrescritos pelas Configurações; estes são só o fallback. */
	--ead-primaria: #0b5ea8;
	--ead-primaria-texto: #ffffff;
	--ead-acao: #3fae5a;
	--ead-acao-texto: #ffffff;
	--ead-campo: #eaf1fb;
	--ead-raio: 8px;

	/* Trocada em EAD > Configurações > Aparência. */
	--ead-fonte: Roboto, "Helvetica Neue", Arial, sans-serif;
	--ead-fonte-tamanho: inherit;
	--ead-espaco: 1rem;
	--ead-borda: color-mix(in srgb, currentColor 18%, transparent);
	--ead-fundo-suave: color-mix(in srgb, currentColor 4%, transparent);
	--ead-sombra: 0 2px 10px rgba(0, 0, 0, .10);
}

/*
 * Tipografia. `inherit` por padrão: sem nada configurado, o EAD usa a fonte do
 * tema e não decide nada por conta própria.
 */
.ead-login,
.ead-curso,
.ead-aula,
.ead-grade,
.ead-card,
.ead-capa,
.ead-meta,
.ead-curriculo,
.ead-progresso,
.ead-navegacao,
.ead-professor,
.ead-painel,
.ead-duvidas,
.ead-validar,
.ead-anexos-lista,
.ead-concluir,
.ead-bloqueio,
.ead-cartao-bloco {
	font-family: var(--ead-fonte);
	font-size: var(--ead-fonte-tamanho);
}

/*
 * Espaço em branco do código-fonte.
 *
 * O tema envolve o conteúdo da página num `<pre>`. Com `white-space: pre`, a
 * indentação dos templates vira espaço de verdade na tela: primeira linha
 * recuada, vão entre a caixa e o texto do checkbox. Parecia CSS de alinhamento
 * e não era — era o HTML sendo levado ao pé da letra.
 *
 * Uma declaração resolve os 21 templates de uma vez, hoje e no que vier.
 */
.ead-login,
.ead-login *,
.ead-curso,
.ead-curso *,
.ead-aula,
.ead-aula *,
.ead-curriculo,
.ead-curriculo *,
.ead-card,
.ead-card *,
.ead-capa,
.ead-capa *,
.ead-duvidas,
.ead-duvidas *,
.ead-validar,
.ead-validar *,
.ead-painel,
.ead-painel *,
.ead-professor,
.ead-professor *,
.ead-anexos-lista,
.ead-anexos-lista *,
.ead-navegacao,
.ead-navegacao *,
.ead-bloqueio,
.ead-bloqueio *,
.ead-concluir,
.ead-concluir *,
.ead-meta,
.ead-meta *,
.ead-progresso,
.ead-progresso * {
	white-space: normal;
	text-indent: 0;
}

/* Bloco de código dentro de uma dúvida continua sendo bloco de código. */
.ead-duvidas pre,
.ead-duvidas code {
	white-space: pre-wrap;
}

/* -------------------------------------------------- Cartão, a peça base */

.ead-cartao-bloco {
	padding: calc(var(--ead-espaco) * 1.6);
	border-radius: calc(var(--ead-raio) * 1.6);
	background: var(--ead-primaria);
	color: var(--ead-primaria-texto);
	box-shadow: var(--ead-sombra);
}

.ead-cartao-bloco a {
	color: inherit;
}

/* -------------------------------------------------- Grade e cards */

.ead-grade {
	display: grid;
	gap: calc(var(--ead-espaco) * 1.5);
	grid-template-columns: repeat(1, minmax(0, 1fr));
}

@media (min-width: 640px) {
	.ead-grade--2,
	.ead-grade--3,
	.ead-grade--4 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 960px) {
	.ead-grade--3 {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.ead-grade--4 {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

/*
 * O card é uma coluna: imagem, título, resumo, e o rodapé (meta e progresso)
 * empurrado para baixo. Sem isso, card com resumo curto deixa a barra de
 * progresso subindo no meio e a grade fica desalinhada.
 */
.ead-card {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border: 1px solid var(--ead-borda);
	border-radius: var(--ead-raio);
	background: var(--ead-fundo-suave);
	transition: box-shadow .15s ease, transform .15s ease;
}

.ead-card:hover {
	box-shadow: var(--ead-sombra);
	transform: translateY(-2px);
}

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

/*
 * `.ead-card > *` nao alcanca o que esta dentro do link, entao a margem que o
 * tema da ao h3 sobrevivia e abria um vao entre o titulo e a ficha tecnica.
 * Quem esta dentro do link zera a propria margem.
 */
.ead-card__link {
	display: block;
	color: inherit;
	text-decoration: none;
}

.ead-card__link > * {
	margin: 0;
}

.ead-card__imagem {
	aspect-ratio: 16 / 9;
	background: color-mix(in srgb, currentColor 8%, transparent);
}

.ead-card__imagem img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ead-card__titulo {
	margin: 0;
	padding: var(--ead-espaco) var(--ead-espaco) 0;
	font-size: 1.05em;
	line-height: 1.3;
}

.ead-card__resumo {
	padding: .5em var(--ead-espaco) 0;
	font-size: .92em;
	line-height: 1.45;
	opacity: .8;
}

/*
 * Sobretitulo, igual ao do single do curso. Escopado no bloco porque a ficha
 * tecnica reaproveita `.ead-meta`, que vem depois neste arquivo e ganharia o
 * desempate por ordem.
 */
.ead-card__nivel {
	display: block;
	padding: var(--ead-espaco) var(--ead-espaco) 0;
	color: var(--ead-acao);
	font-size: .72em;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
}

/* Com sobretitulo em cima, o titulo nao precisa do respiro inteiro. */
.ead-card__nivel + .ead-card__titulo {
	padding-top: .3em;
}

/* Empurra o rodapé para a base, alinhando os cards da linha. */
.ead-card .ead-card__meta {
	margin: auto 0 0;
	padding: var(--ead-espaco) var(--ead-espaco) 0;
	font-size: .85em;
}

.ead-card .ead-progresso {
	padding: .8em var(--ead-espaco) var(--ead-espaco);
}

/* Card sem rodapé nenhum ainda precisa de respiro embaixo. */
.ead-card__resumo:last-child,
.ead-card__titulo:last-child {
	padding-bottom: var(--ead-espaco);
}

/* -------------------------------------------------- Curso montado */

.ead-curso {
	display: flex;
	flex-direction: column;
	gap: calc(var(--ead-espaco) * 2.5);
}

.ead-curso__hero {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: calc(var(--ead-espaco) * 1.5);
	align-items: center;
}

@media (min-width: 782px) {
	.ead-curso__hero {
		grid-template-columns: minmax(0, 1fr) minmax(0, 26em);
	}

	/* Espelha as colunas sem mexer na ordem do HTML, que segue a da leitura. */
	.ead-curso--esquerda .ead-curso__imagem {
		order: -1;
	}
}

.ead-curso__texto {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: .8rem;
}

.ead-curso__categoria {
	margin: 0;
	color: var(--ead-acao);
	font-size: .8em;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
}

.ead-curso__titulo {
	margin: 0;
	line-height: 1.1;
}

.ead-curso__resumo {
	max-width: 48ch;
	margin: 0;
	font-size: 1.05em;
	opacity: .75;
}

/* Metadados e progresso na mesma linha, como uma ficha tecnica. */
.ead-curso__dados {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .4rem 1.4rem;
}

.ead-curso__acao {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .8rem;
	margin-top: .4rem;
}

.ead-curso__imagem img {
	display: block;
	width: auto;
	max-width: 100%;
	max-height: 320px;
	height: auto;
	margin-inline: auto;
	border-radius: calc(var(--ead-raio) * 1.5);
}

.ead-curso__secao {
	margin: 0 0 var(--ead-espaco);
}

/* Dentro do painel quem espaca e o gap. */
.ead-curso .ead-meta,
.ead-curso .ead-progresso,
.ead-curso .ead-curriculo {
	margin-bottom: 0;
}

/* -------------------------------------------------- Capa e metadados */

/*
 * Sem recorte aqui. No card do catalogo o 16/9 existe para alinhar a grade;
 * no single nao ha grade para alinhar, e recortar destroi capa que seja logo
 * ou arte em pe. Limita a altura e deixa a proporcao original.
 */
.ead-capa__imagem {
	display: flex;
	justify-content: center;
}

.ead-capa__imagem img {
	display: block;
	width: auto;
	max-width: 100%;
	max-height: 320px;
	height: auto;
	border-radius: var(--ead-raio);
}

.ead-capa__texto {
	display: flex;
	flex-direction: column;
	gap: .4rem;
}

/* So separa do que veio antes; capa sem imagem nao ganha vao no topo. */
.ead-capa__imagem + .ead-capa__texto {
	margin-top: var(--ead-espaco);
}

.ead-capa__titulo {
	margin: 0;
	line-height: 1.2;
}

.ead-capa__resumo {
	margin: 0;
	font-size: 1.05em;
	opacity: .8;
}
/*
 * Blocos avulsos empilhados encostam um no outro quando o Elementor nao poe
 * espaco entre os widgets. Dentro do painel e do card o gap zera isto.
 */
.ead-capa,
.ead-meta,
.ead-progresso,
.ead-professor {
	margin-bottom: var(--ead-espaco);
}

.ead-card .ead-progresso {
	margin-bottom: 0;
}

.ead-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .4rem 1.4rem;
	margin: 0 0 var(--ead-espaco);
	padding: 0;
	list-style: none;
	font-size: .92em;
}

.ead-meta__item {
	display: inline-flex;
	align-items: center;
	gap: .45em;
}

.ead-meta__valor {
	font-weight: 700;
}

.ead-meta__rotulo {
	opacity: .7;
}

/*
 * Icone por mascara e nao por <img>: a cor sai de currentColor, entao segue o
 * tema, o modo escuro e a cor que o cliente escolher, sem uma segunda arte.
 */
.ead-meta__item--duracao::before,
.ead-meta__item--aulas::before,
.ead-meta__item--modulos::before,
.ead-meta__item--nivel::before,
.ead-meta__item--professores::before,
.ead-progresso--percentual::before,
.ead-progresso--fracao::before {
	content: "";
	flex: 0 0 auto;
	width: 1.15em;
	height: 1.15em;
	background: currentColor;
	-webkit-mask: var(--ead-icone) center / contain no-repeat;
	mask: var(--ead-icone) center / contain no-repeat;
	opacity: .55;
}

.ead-meta__item--duracao {
	--ead-icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 2'/%3E%3C/svg%3E");
}

.ead-meta__item--aulas {
	--ead-icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='14' rx='2'/%3E%3Cpath d='M10 8.5l4.5 2.5-4.5 2.5z'/%3E%3C/svg%3E");
}

.ead-meta__item--modulos {
	--ead-icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linejoin='round'%3E%3Cpath d='M3 7h6l2 2h10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'/%3E%3C/svg%3E");
}

.ead-meta__item--nivel {
	--ead-icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M5 19v-5M12 19V9M19 19V5'/%3E%3C/svg%3E");
}

.ead-meta__item--professores {
	--ead-icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='8' r='3.5'/%3E%3Cpath d='M5 20a7 7 0 0 1 14 0'/%3E%3C/svg%3E");
}

.ead-progresso--percentual,
.ead-progresso--fracao {
	--ead-icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M8.5 12.5l2.5 2.5 4.5-5'/%3E%3C/svg%3E");
}

/* -------------------------------------------------- Progresso */

.ead-progresso {
	display: flex;
	align-items: center;
	gap: .6rem;
}

.ead-progresso--barra {
	flex-direction: column;
	align-items: stretch;
	gap: .3rem;
}

/*
 * Cor no proprio fundo, e nao currentColor com opacity: `opacity` vale para o
 * elemento inteiro, entao a barra de progresso saia desbotada junto.
 */
.ead-progresso__trilho {
	height: 8px;
	border-radius: 999px;
	background: var(--ead-borda);
	overflow: hidden;
}

.ead-progresso__barra {
	height: 100%;
	border-radius: inherit;
	background: var(--ead-acao);
	transition: width .3s ease;
}

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

.ead-progresso__rotulo {
	font-size: .85em;
	opacity: .75;
}

/* -------------------------------------------------- Currículo */

.ead-curriculo {
	margin-bottom: var(--ead-espaco);
	border: 1px solid var(--ead-borda);
	border-radius: calc(var(--ead-raio) * 1.5);
	overflow: hidden;
}

.ead-curriculo__modulo + .ead-curriculo__modulo {
	border-top: 1px solid var(--ead-borda);
}

.ead-curriculo__cabecalho {
	margin: 0;
	font-size: 1em;
}

/*
 * Escopado pelo bloco pai de proposito. Tema que estiliza `button` por seletor
 * descendente (`.page-content button`, 0,1,1) ganha de uma classe sozinha, e o
 * cabecalho encolhia para a largura do texto, com a borda do tema em volta.
 */
.ead-curriculo .ead-curriculo__toggle {
	display: flex;
	box-sizing: border-box;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	width: 100%;
	max-width: none;
	padding: 1.1em 1.3em;
	border: 0;
	border-radius: 0;
	background: var(--ead-fundo-suave);
	color: inherit;
	font: inherit;
	text-align: left;
	cursor: pointer;
}

/*
 * A cor precisa vir junto do fundo. Tema que declara `button:hover` por seletor
 * descendente (`.page-content button:hover`, 0,2,1) ganha da regra base do
 * plugin (0,2,0) e pinta o texto de claro: nome do modulo, contador e seta
 * sumiam no fundo do hover. Escopar pelo bloco pai devolve o controle.
 */
.ead-curriculo .ead-curriculo__toggle:hover,
.ead-curriculo .ead-curriculo__toggle:focus-visible {
	background: var(--ead-borda);
	color: inherit;
}

.ead-curriculo__nome {
	display: flex;
	flex-direction: column;
	gap: .25em;
	min-width: 0;
}

.ead-curriculo__ordem {
	color: var(--ead-acao);
	font-size: .72em;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
}

/*
 * Cor declarada, e nao herdada do <button>.
 *
 * O tema pinta `button:hover` e tudo que herda do botao ia junto: nome do
 * modulo, contador e seta sumiam. Brigar por especificidade no botao e briga
 * sem fim, porque nao se sabe o seletor do tema. Valor declarado no filho
 * sempre ganha de valor herdado — o seletor do tema nem casa com o <span>.
 * Foi por isso que o sobretitulo do modulo nunca sumiu: ele ja tinha cor.
 */
.ead-curriculo__modulo-titulo {
	color: var(--ead-primaria);
	font-size: 1.05em;
	font-weight: 700;
	line-height: 1.25;
}

.ead-curriculo__contagem {
	flex: 0 0 auto;
	padding: .25em .8em;
	border: 1px solid currentColor;
	border-radius: 999px;
	color: var(--ead-primaria);
	font-size: .78em;
	font-variant-numeric: tabular-nums;
	opacity: .7;
}

.ead-curriculo .ead-curriculo__toggle::after {
	content: "";
	flex: 0 0 auto;
	width: .55em;
	height: .55em;
	border-right: 2px solid var(--ead-primaria);
	border-bottom: 2px solid var(--ead-primaria);
	transform: rotate(45deg);
	transition: transform .2s ease;
	opacity: .6;
}

.ead-curriculo .ead-curriculo__toggle[aria-expanded="true"]::after {
	transform: rotate(-135deg);
}

.ead-curriculo__aulas {
	counter-reset: ead-aula;
	margin: 0;
	padding: 0;
	list-style: none;
}

.ead-curriculo__item {
	display: flex;
	align-items: center;
	gap: .85rem;
	padding: .9em 1.3em;
	color: inherit;
	text-decoration: none;
	transition: background .15s ease;
}

/* A numeracao sai do proprio <ol>; nao precisa vir no HTML. */
.ead-curriculo__item::before {
	counter-increment: ead-aula;
	content: counter(ead-aula);
	flex: 0 0 1.4em;
	font-size: .85em;
	font-variant-numeric: tabular-nums;
	text-align: right;
	opacity: .45;
}

/*
 * Ordem visual: numero, titulo, etiqueta, duracao, estado. No HTML o estado vem
 * primeiro porque e o que o leitor de tela deve anunciar antes do titulo.
 */
.ead-curriculo__titulo {
	order: 1;
	flex: 1 1 auto;
}

.ead-curriculo__tag {
	order: 2;
	flex: 0 0 auto;
	padding: .15em .6em;
	border-radius: 999px;
	background: var(--ead-acao);
	color: var(--ead-acao-texto);
	font-size: .75em;
	font-weight: 600;
}

.ead-curriculo__duracao {
	order: 3;
	flex: 0 0 auto;
	font-size: .8em;
	font-variant-numeric: tabular-nums;
	opacity: .6;
}

.ead-curriculo__estado {
	order: 4;
}

.ead-curriculo__aula + .ead-curriculo__aula .ead-curriculo__item {
	border-top: 1px solid var(--ead-borda);
}

a.ead-curriculo__item:hover {
	background: var(--ead-fundo-suave);
}

.ead-curriculo__aula--atual .ead-curriculo__item {
	background: var(--ead-fundo-suave);
}

.ead-curriculo__aula--atual .ead-curriculo__titulo {
	font-weight: 700;
}

/* Marcador de estado: circulo vazio, tique verde ou play na aula atual. */
.ead-curriculo__estado {
	position: relative;
	flex: 0 0 auto;
	width: 1.5em;
	height: 1.5em;
	border: 2px solid currentColor;
	border-radius: 50%;
	opacity: .3;
}

.ead-curriculo__aula--concluida .ead-curriculo__estado {
	background: var(--ead-acao);
	border-color: var(--ead-acao);
	opacity: 1;
}

/* Tique e play desenhados com borda, para nao depender de fonte de icone. */
.ead-curriculo__aula--concluida .ead-curriculo__estado::after {
	content: "";
	position: absolute;
	left: 50%;
	top: 45%;
	width: .3em;
	height: .58em;
	transform: translate(-50%, -50%) rotate(45deg);
	border: solid var(--ead-acao-texto);
	border-width: 0 2px 2px 0;
}

.ead-curriculo__aula--atual .ead-curriculo__estado {
	border-color: var(--ead-acao);
	opacity: 1;
}

.ead-curriculo__aula--atual .ead-curriculo__estado::after {
	content: "";
	position: absolute;
	left: 56%;
	top: 50%;
	transform: translate(-50%, -50%);
	border: .32em solid transparent;
	border-right: 0;
	border-left-color: var(--ead-acao);
}

.ead-curriculo__aula--bloqueada .ead-curriculo__item {
	opacity: .5;
	cursor: not-allowed;
}

.ead-curriculo__aula--bloqueada .ead-curriculo__estado {
	border-radius: 3px;
	border-style: dashed;
}

.ead-curriculo__vazio {
	padding: .9em 1.3em .9em 3.6em;
	opacity: .6;
	font-style: italic;
}

/* -------------------------------------------------- Aula */

/*
 * As duas colunas sao do mesmo grid e comecam na mesma linha, entao o topo do
 * video bate com o topo do curriculo. Montadas como widgets soltos no
 * Elementor isso nao acontece: um bloco a mais de um dos lados desalinha.
 */
.ead-aula {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: calc(var(--ead-espaco) * 1.5);
	align-items: start;
}

@media (min-width: 782px) {
	.ead-aula {
		grid-template-columns: minmax(0, 1fr) minmax(0, 22em);
	}

	.ead-aula--esquerda {
		grid-template-columns: minmax(0, 22em) minmax(0, 1fr);
	}

	/* Espelha sem mexer na ordem do HTML: o conteudo da aula vem primeiro. */
	.ead-aula--esquerda .ead-aula__lateral {
		order: -1;
	}
}

.ead-aula__principal,
.ead-aula__lateral {
	display: flex;
	flex-direction: column;
	gap: var(--ead-espaco);
	min-width: 0;
}

.ead-aula__titulo {
	margin: 0;
	line-height: 1.2;
}

/* Dentro do painel quem espaca e o gap. */
.ead-aula > * > * {
	margin-top: 0;
	margin-bottom: 0;
}

/* Mesma moldura do curriculo, para as duas colunas fecharem na mesma linha. */
.ead-aula__player {
	margin-bottom: var(--ead-espaco);
	border: 1px solid var(--ead-borda);
	border-radius: calc(var(--ead-raio) * 1.5);
	background: #000;
	overflow: hidden;
	line-height: 0;
}

.ead-anexos-lista__titulo {
	margin: 0 0 .6em;
	font-size: 1em;
}

.ead-anexos-lista__itens {
	display: flex;
	flex-direction: column;
	gap: .4rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.ead-anexos-lista__link {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: .7em .9em;
	border: 1px solid var(--ead-borda);
	border-radius: var(--ead-raio);
	background: var(--ead-fundo-suave);
	color: inherit;
	text-decoration: none;
	transition: border-color .15s ease;
}

.ead-anexos-lista__link:hover {
	border-color: var(--ead-acao);
}

.ead-anexos-lista__nome {
	overflow-wrap: anywhere;
}

.ead-anexos-lista__detalhe {
	flex: 0 0 auto;
	padding: .15em .6em;
	border-radius: 999px;
	background: color-mix(in srgb, currentColor 10%, transparent);
	font-size: .75em;
	letter-spacing: .03em;
	white-space: nowrap;
	opacity: .8;
}

/* -------------------------------------------------- Botões */

.ead-botao {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	padding: .75em 1.5em;
	border: 1px solid var(--ead-acao);
	border-radius: var(--ead-raio);
	background: var(--ead-acao);
	color: var(--ead-acao-texto);
	font: inherit;
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
	cursor: pointer;
	transition: filter .15s ease;
}

/*
 * Play so nos estados em que o botao leva para a aula. Mascara sobre
 * currentColor, entao segue a cor de acao escolhida pelo cliente.
 */
.ead-botao--comecar::before,
.ead-botao--em_andamento::before,
.ead-botao--concluido::before {
	content: "";
	display: inline-block;
	flex: 0 0 auto;
	width: 1.1em;
	height: 1.1em;
	background: currentColor;
	-webkit-mask: var(--ead-icone) center / contain no-repeat;
	mask: var(--ead-icone) center / contain no-repeat;
	vertical-align: -.15em;
}

.ead-botao--comecar,
.ead-botao--em_andamento,
.ead-botao--concluido {
	--ead-icone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23000'%3E%3Cpath d='M8 5.5v13l11-6.5z'/%3E%3C/svg%3E");
}

.ead-botao:hover,
.ead-botao:focus-visible {
	filter: brightness(1.08);
	color: var(--ead-acao-texto);
}

/* Variante discreta, para ação secundária */
.ead-botao--sem_acesso {
	background: none;
	border-color: currentColor;
	color: inherit;
}

.ead-botao--inerte,
.ead-botao[disabled] {
	opacity: .5;
	cursor: not-allowed;
}

.ead-concluir {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 1rem;
	margin: 1.5rem 0;
}

.ead-concluir__form {
	margin: 0;
}

/*
 * Escopado pelo bloco, e repetindo o hover.
 *
 * `.ead-botao` sozinho e 0,1,0 e perde para o `.page-content button` (0,1,1)
 * do tema: no curso o botao e um <a> e passa batido, aqui e um <button> e
 * saia com o fundo do tema — branco, com o rotulo branco por cima. No hover o
 * tema soma a pseudo-classe, entao a regra de hover tambem precisa do escopo.
 */
.ead-concluir .ead-concluir__botao,
.ead-concluir .ead-concluir__botao:hover,
.ead-concluir .ead-concluir__botao:focus-visible {
	display: inline-flex;
	align-items: center;
	gap: .55em;
	border: 1px solid var(--ead-acao);
	background: var(--ead-acao);
}

/*
 * Concluida: o botao vira secundario, porque a acao passa a ser desfazer. Sem
 * isto o icone ficava verde sobre o botao verde, ou seja, invisivel.
 */
.ead-concluir--feita .ead-concluir__botao,
.ead-concluir--feita .ead-concluir__botao:hover,
.ead-concluir--feita .ead-concluir__botao:focus-visible {
	border-color: var(--ead-acao);
	background: transparent;
}

/*
 * Cor declarada nos filhos, e nao herdada do <button>: tema que pinta
 * `button:hover` levava junto o rotulo e o icone. Mesmo motivo do cabecalho
 * de modulo no curriculo.
 */
.ead-concluir__rotulo,
.ead-concluir__icone {
	color: var(--ead-acao-texto);
}

.ead-concluir--feita .ead-concluir__rotulo,
.ead-concluir--feita .ead-concluir__icone {
	color: var(--ead-acao);
}

/*
 * `display` declarado no proprio span: item flex ja seria blocado, mas o tema
 * derruba o inline-flex do botao e o span volta a ser inline — e inline ignora
 * width e height, sobrando so a borda como um risco vertical.
 */
.ead-concluir__icone {
	display: inline-block;
	position: relative;
	flex: 0 0 auto;
	box-sizing: border-box;
	width: 1.2em;
	height: 1.2em;
	border: 2px solid currentColor;
	border-radius: 50%;
}

.ead-concluir--feita .ead-concluir__icone {
	background: var(--ead-acao);
	border-color: var(--ead-acao);
}

.ead-concluir--feita .ead-concluir__icone::after {
	content: "";
	position: absolute;
	left: 50%;
	top: 45%;
	width: .24em;
	height: .46em;
	transform: translate(-50%, -50%) rotate(45deg);
	border: solid var(--ead-acao-texto);
	border-width: 0 2px 2px 0;
}

.ead-concluir__status {
	flex: 1 1 100%;
	margin: 0;
	font-size: .85em;
	opacity: .75;
}

/* -------------------------------------------------- Navegação */

.ead-navegacao {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 1rem;
	margin: 2rem 0;
}

.ead-navegacao__link {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	grid-template-areas:
		"seta rotulo"
		"seta titulo";
	align-items: center;
	gap: .1rem .8rem;
	flex: 0 1 48%;
	padding: .9em 1.2em;
	border: 1px solid var(--ead-borda);
	border-radius: calc(var(--ead-raio) * 1.2);
	text-decoration: none;
	transition: border-color .15s ease;
}

a.ead-navegacao__link:hover {
	border-color: var(--ead-acao);
}

.ead-navegacao__rotulo {
	grid-area: rotulo;
	color: var(--ead-acao);
	font-size: .72em;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
}

/* Cor declarada, nao herdada: o tema pinta `a:hover` e levava o titulo junto. */
.ead-navegacao__titulo {
	grid-area: titulo;
	color: var(--ead-primaria);
	font-weight: 600;
	line-height: 1.3;
}

/* Seta desenhada com borda, para nao depender de fonte de icone. */
.ead-navegacao__link--anterior::before,
.ead-navegacao__link--proxima::after {
	content: "";
	grid-area: seta;
	width: .55em;
	height: .55em;
	border-top: 2px solid var(--ead-acao);
	border-right: 2px solid var(--ead-acao);
}

.ead-navegacao__link--anterior::before {
	transform: rotate(-135deg);
}

.ead-navegacao__link--proxima {
	grid-template-columns: minmax(0, 1fr) auto;
	grid-template-areas:
		"rotulo seta"
		"titulo seta";
	margin-left: auto;
	text-align: right;
}

.ead-navegacao__link--proxima::after {
	transform: rotate(45deg);
}

.ead-navegacao__link--bloqueada {
	opacity: .5;
	cursor: not-allowed;
}

/* -------------------------------------------------- Professor */

.ead-professor {
	display: flex;
	align-items: flex-start;
	gap: 1rem;
	padding: var(--ead-espaco);
	border: 1px solid var(--ead-borda);
	border-radius: var(--ead-raio);
	background: var(--ead-fundo-suave);
}

.ead-professor__bio > :last-child {
	margin-bottom: 0;
}

.ead-professor__foto {
	flex: 0 0 auto;
}

.ead-professor__foto img {
	display: block;
	border-radius: 50%;
}

.ead-professor__rotulo {
	margin: 0;
	font-size: .8em;
	text-transform: uppercase;
	letter-spacing: .05em;
	opacity: .6;
}

.ead-professor__nome {
	margin: 0 0 .3em;
	font-weight: 700;
}

/* -------------------------------------------------- Painel */

.ead-painel__secao + .ead-painel__secao {
	margin-top: calc(var(--ead-espaco) * 2.5);
}

/*
 * Bloco solido na primaria: e o unico lugar do front onde ele continua fazendo
 * sentido, porque e cabecalho de pagina e nao item de lista.
 */
.ead-painel__cabecalho {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: .4rem 1.5rem;
	padding: calc(var(--ead-espaco) * 1.4);
	margin-bottom: calc(var(--ead-espaco) * 1.5);
	border-radius: calc(var(--ead-raio) * 1.4);
	background: var(--ead-primaria);
	color: var(--ead-primaria-texto);
}

/* Cor declarada, nao herdada: o tema nao mexe no cabecalho pelo caminho do h2. */
.ead-painel__saudacao {
	margin: 0;
	color: var(--ead-primaria-texto);
	font-size: 1.5em;
	line-height: 1.2;
}

.ead-painel__resumo {
	margin: 0;
	color: var(--ead-primaria-texto);
	font-size: .92em;
	opacity: .8;
}

/* Titulo de secao: "Continuar estudando", "Concluidos". */
.ead-painel__titulo {
	margin: 0 0 var(--ead-espaco);
	font-size: 1.2em;
	line-height: 1.2;
}

/* Faixa curta na cor de acao, para a secao nao ficar como texto solto. */
.ead-painel__titulo::after {
	content: "";
	display: block;
	width: 2.5em;
	height: 3px;
	margin-top: .5em;
	border-radius: 999px;
	background: var(--ead-acao);
}

/* -------------------------------------------------- Bloqueio e avisos */

.ead-bloqueio {
	padding: 1.5em;
	border: 1px solid var(--ead-borda);
	border-radius: var(--ead-raio);
	background: var(--ead-fundo-suave);
}

.ead-bloqueio__mensagem {
	margin: 0;
}

.ead-vazio {
	opacity: .7;
	font-style: italic;
}

.ead-aviso-admin {
	padding: .6em 1em;
	border-left: 4px solid #d63638;
	background: #fcf0f1;
	color: #8a1f1f;
	font-size: .9em;
}

.ead-aviso {
	position: fixed;
	left: 50%;
	bottom: 1.5em;
	z-index: 9999;
	max-width: min(90vw, 32em);
	padding: .9em 1.4em;
	transform: translateX(-50%);
	border-radius: 4px;
	background: #1d2327;
	color: #fff;
	font-size: 15px;
	line-height: 1.4;
	box-shadow: 0 4px 16px rgba(0, 0, 0, .25);
}

@media (prefers-reduced-motion: no-preference) {
	.ead-aviso {
		animation: ead-aviso-entra .25s ease-out;
	}

	@keyframes ead-aviso-entra {
		from {
			opacity: 0;
			transform: translate(-50%, 12px);
		}
	}
}

/* Tema sem a classe do WordPress ainda precisa esconder texto de leitor */
.ead-curriculo .screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* -------------------------------------------------- Dúvidas */

.ead-duvidas {
	margin-top: 2.5rem;
}

.ead-duvida {
	padding: 1rem 0;
	border-top: 1px solid currentColor;
	border-color: color-mix(in srgb, currentColor 15%, transparent);
}

.ead-duvida__autor {
	display: flex;
	gap: .6rem;
	align-items: baseline;
	margin: 0 0 .3rem;
	font-size: .9em;
}

.ead-duvida__autor time,
.ead-duvida__cargo {
	font-size: .85em;
	opacity: .6;
}

.ead-duvida__texto p:last-child {
	margin-bottom: 0;
}

.ead-duvida__resposta {
	margin: 1rem 0 0 1.5rem;
	padding-left: 1rem;
	border-left: 3px solid currentColor;
	border-color: color-mix(in srgb, currentColor 25%, transparent);
}

.ead-duvidas__form {
	margin-top: 1.5rem;
	padding: var(--ead-espaco);
	border-radius: var(--ead-raio);
	background: var(--ead-fundo-suave);
	display: flex;
	flex-direction: column;
	gap: .5rem;
	align-items: flex-start;
}

.ead-duvidas__form textarea {
	box-sizing: border-box;
	width: 100%;
	padding: .7em .9em;
	border: 1px solid var(--ead-borda);
	border-radius: var(--ead-raio);
	background: var(--ead-campo);
	color: #1d2327;
	font: inherit;
}

.ead-duvidas__status {
	margin: 0;
	font-size: .85em;
	opacity: .75;
}

/* -------------------------------------------------- Validação de certificado */

.ead-validar__form {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: .6rem;
}

.ead-validar__form label {
	flex: 1 1 100%;
}

.ead-validar__form input {
	box-sizing: border-box;
	flex: 1 1 18em;
	padding: .75em .9em;
	border: 1px solid var(--ead-borda);
	border-radius: var(--ead-raio);
	background: var(--ead-campo);
	color: #1d2327;
	font-family: monospace;
	font-size: 1em;
	text-transform: uppercase;
}

.ead-validar__resposta {
	margin-top: 1.5rem;
	padding: 1.2em 1.4em;
	border: 1px solid var(--ead-borda);
	border-left: 4px solid var(--ead-acao);
	border-radius: var(--ead-raio);
	background: var(--ead-fundo-suave);
}

.ead-validar__resposta--erro,
.ead-validar__resposta--revogado {
	border-left-color: #b32d2e;
}

.ead-validar__situacao {
	margin: 0 0 .5em;
	font-weight: 700;
}

.ead-validar__resposta dl {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: .3em 1.2em;
	margin: 0;
}

.ead-validar__resposta dt {
	opacity: .7;
}

.ead-validar__resposta dd {
	margin: 0;
}

.ead-certificado-aviso {
	opacity: .75;
	font-size: .9em;
}





/* -------------------------------------------------- Login */

/*
 * O cartão continua centrado na coluna; o que alinha à esquerda é o conteúdo
 * dentro dele. Foram duas tentativas erradas antes desta: `margin: 0` no
 * próprio .ead-login matava o `margin-inline: auto`, e `:where()` tem
 * especificidade zero, então perdia para o tema.
 */
.ead-login {
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	gap: var(--ead-espaco);
	max-width: 26em;
	margin-inline: auto;
	padding: calc(var(--ead-espaco) * 1.5);
	border-radius: calc(var(--ead-raio) * 1.5);
	background: var(--ead-primaria);
	color: var(--ead-primaria-texto);
	box-shadow: var(--ead-sombra);
	text-align: left;
}

/* Margem de filho é o que estourava o espaçamento; aqui tudo é gap. */
.ead-login > *,
.ead-login__form > *,
.ead-login__campo > * {
	margin: 0;
}

/* Tema com text-align no container não decide o alinhamento aqui dentro. */
.ead-login p,
.ead-login label,
.ead-login a,
.ead-login input,
.ead-login__form {
	text-align: left;
}

.ead-login__form {
	display: flex;
	flex-direction: column;
	gap: calc(var(--ead-espaco) * .85);
}

.ead-login__campo {
	display: flex;
	flex-direction: column;
	gap: .35em;
}

.ead-login__texto {
	opacity: .9;
	line-height: 1.4;
}

.ead-login__erro,
.ead-login__ok {
	padding: .7em .9em;
	border-radius: var(--ead-raio);
	background: rgba(255, 255, 255, .16);
	font-size: .92em;
	line-height: 1.4;
}

.ead-login__ok {
	border-left: 3px solid var(--ead-acao);
}

.ead-login__campo label {
	font-size: .92em;
	font-weight: 600;
	line-height: 1.2;
}

.ead-login__campo input {
	box-sizing: border-box;
	width: 100%;
	padding: .7em .85em;
	border: 1px solid transparent;
	border-radius: var(--ead-raio);
	background: var(--ead-campo);
	color: #1d2327;
	font: inherit;
	line-height: 1.3;
}

.ead-login__campo input:focus {
	outline: 2px solid var(--ead-acao);
	outline-offset: 1px;
}

/*
 * A caixa e o texto andam juntos. Sem o `width` explícito, tema que dá
 * `width: 100%` a input deixava a caixa de um lado e o texto do outro.
 */
.ead-login .ead-login__lembrar {
	display: flex;
	align-items: center;
	justify-content: flex-start;
	gap: .5em;
	font-size: .9em;
	font-weight: 400;
	line-height: 1.2;
}

.ead-login .ead-login__lembrar label {
	margin: 0;
	font-size: inherit;
	font-weight: 400;
	cursor: pointer;
}

.ead-login .ead-login__lembrar input[type="checkbox"] {
	flex: 0 0 auto;
	width: 1em;
	height: 1em;
	min-width: 0;
	margin: 0;
	padding: 0;
}

.ead-login__enviar {
	align-self: flex-start;
	padding: .7em 1.6em;
	border: 0;
	border-radius: var(--ead-raio);
	background: var(--ead-acao);
	color: var(--ead-acao-texto);
	font: inherit;
	font-weight: 600;
	line-height: 1.2;
	text-align: center;
	cursor: pointer;
	transition: filter .15s ease;
}

.ead-login .ead-login__enviar,
.ead-login .ead-login__enviar:hover,
.ead-login .ead-login__enviar:focus-visible {
	border: 0;
	background: var(--ead-acao);
	color: var(--ead-acao-texto);
}

.ead-login .ead-login__enviar:hover,
.ead-login .ead-login__enviar:focus-visible {
	filter: brightness(1.08);
}

.ead-login__ajuda {
	font-size: .9em;
	line-height: 1.2;
}

.ead-login__ajuda a {
	color: inherit;
	text-decoration: underline;
	text-underline-offset: 2px;
	opacity: .9;
}
