/* Colinha de Votação — front
 *
 * Segue a arte da campanha: folha de caderno pautada, verde escuro,
 * caixinhas de dígito e selo "confirma" imitando a urna.
 * Tipografia Montserrat, a mesma do nancythame.com.br.
 */

/* Fundo verde escuro, igual ao da ferramenta de moldura do site. */
.cv-pagina {
	margin: 0;
	background: #153c1e;
}

.cv-pagina-main {
	min-height: 100vh;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 16px;
	padding: 24px 16px 40px;
	box-sizing: border-box;
}

.cv-wrap {
	/* Tokens do nancythame.com.br, para a ferramenta não destoar do site. */
	--cv-escuro: #153c1e;
	--cv-cta: #a0c53c;
	--cv-cta-hover: #79b441;
	--cv-sobre-cta: #0c2412;
	--cv-titulo: #2a2d4c;
	--cv-corpo: #5f6771;
	--cv-borda-site: #d9decf;
	--cv-fundo-2: #ecefe8;

	/* Papel claro, texto verde — o padrão, igual à arte. */
	--cv-tinta: #0f5126;
	--cv-tinta-suave: #4a6b54;
	--cv-papel: #ffffff;
	--cv-caixa: rgba(255, 255, 255, .72);
	--cv-borda: rgba(15, 81, 38, .18);
	--cv-digito-fundo: var(--cv-primaria, #0f5126);
	--cv-digito-tinta: #ffffff;
	--cv-lime: #8dbf43;

	width: 100%;
	max-width: 440px;
	margin: 0 auto;
	font-family: Montserrat, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	box-sizing: border-box;
}

/* No computador o cartão e o painel de finalizar ficam lado a lado, como na
 * ferramenta da moldura no site. No celular empilham. */
@media (min-width: 900px) {
	.cv-wrap {
		max-width: 940px;
		display: grid;
		grid-template-columns: 440px 1fr;
		align-items: start;
		gap: clamp(28px, 4vw, 56px);
	}

	.cv-wrap > .cv-modal { grid-column: 1 / -1; }
}

.cv-wrap.cv-tema-escuro {
	--cv-tinta: #ffffff;
	--cv-tinta-suave: rgba(255, 255, 255, .72);
	--cv-papel: #0b1220;
	--cv-caixa: rgba(255, 255, 255, .10);
	--cv-borda: rgba(255, 255, 255, .22);
	--cv-digito-fundo: #ffffff;
	--cv-digito-tinta: #0f5126;
}

.cv-wrap *,
.cv-wrap *::before,
.cv-wrap *::after { box-sizing: border-box; }

/* ---------------------------------------------------------------- *
 * Cartão — a folha
 * ---------------------------------------------------------------- */

.cv-card {
	position: relative;
	overflow: hidden;
	border-radius: 18px;
	background: var(--cv-papel);
	color: var(--cv-tinta);
	box-shadow: 0 14px 40px rgba(15, 81, 38, .18);
}

.cv-card-bg {
	position: absolute;
	inset: 0;
	background-image: var(--cv-bg);
	background-size: cover;
	background-position: center;
}

.cv-card-bg::after {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--cv-papel);
	opacity: var(--cv-veu, .1);
}

.cv-card-conteudo {
	position: relative;
	padding: 30px 20px 24px;
}

/* ---------------------------------------------------------------- *
 * Topo
 * ---------------------------------------------------------------- */

.cv-topo {
	margin: 0 0 22px;
	text-align: center;
}

.cv-chamada {
	margin: 0;
	font-size: clamp(26px, 8vw, 34px);
	line-height: .98;
	font-weight: 300;
	letter-spacing: .01em;
	text-transform: uppercase;
	color: var(--cv-tinta);
}

/* A linha leve pode ser longa ("SALVE E ANOTE EM PAPEL SUA"), então tem
 * tamanho próprio para não competir com a palavra forte. */
.cv-chamada .cv-chamada-leve {
	display: block;
	font-size: .58em;
	font-weight: 700;
	line-height: 1.15;
	letter-spacing: .04em;
}

/* A última palavra ganha o peso, como na arte. */
.cv-chamada .cv-chamada-forte {
	display: block;
	font-weight: 800;
	letter-spacing: -.01em;
}

.cv-titulo {
	margin: 10px 0 0;
	font-size: 15px;
	font-weight: 600;
	color: var(--cv-tinta-suave);
}

/* ---------------------------------------------------------------- *
 * Linhas
 * ---------------------------------------------------------------- */

.cv-linhas {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.cv-linha {
	min-width: 0;
	padding-bottom: 12px;
	border-bottom: 1px solid rgba(15, 81, 38, .12);
}

.cv-linha:last-child { border-bottom: 0; padding-bottom: 0; }

.cv-linha-vazia { display: none; }

/* Durante a captura da imagem, o que não foi preenchido sai de cena: a
 * imagem compartilhada mostra só o que a pessoa escolheu. */
.cv-capturando .cv-linha-editando,
.cv-capturando .cv-trocar,
.cv-capturando .cv-finalizar,
.cv-capturando .cv-digitos-dica,
.cv-capturando .cv-deixe-branco { display: none !important; }

/* Linha em modo de escolha: some a fileira de números e aparece o campo. */
.cv-linha-editando .cv-numero { display: none; }
.cv-escolha { display: none; }
.cv-linha-editando .cv-escolha { display: block; }

.cv-trocar {
	appearance: none;
	margin-left: 6px;
	padding: 6px 10px;
	border: 1px solid var(--cv-borda);
	border-radius: 8px;
	background: transparent;
	color: var(--cv-tinta-suave);
	font: inherit;
	font-size: 12px;
	font-weight: 700;
	cursor: pointer;
}

.cv-trocar:hover {
	border-color: var(--cv-primaria, #0f5126);
	color: var(--cv-primaria, #0f5126);
}

/* O texto do rótulo já está no placeholder do campo: aqui ele fica só para
 * leitor de tela, e o que aparece é a dica de quantos dígitos. */
.cv-escolha-label {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

.cv-escolha .cv-digitos-dica {
	display: block;
	float: none;
	margin: 0 0 4px;
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .05em;
	color: var(--cv-tinta-suave);
	opacity: 1;
}

.cv-escolha .cv-input {
	width: 100%;
	font: inherit;
	font-size: 17px;
	font-weight: 600;
	padding: 12px 14px;
	border-radius: 10px;
	border: 1.5px solid var(--cv-borda);
	background: #fff;
	color: #12261a;
}

.cv-escolha .cv-input:focus {
	outline: none;
	border-color: var(--cv-primaria, #0f5126);
	box-shadow: 0 0 0 3px rgba(141, 191, 67, .35);
}

.cv-escolha { position: relative; }

.cv-vaga {
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--cv-tinta-suave);
}

.cv-titulo-linha {
	margin: 0 0 6px;
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 6px;
	line-height: 1.2;
}

/* A ordem do voto na urna. Fixa: o senador é o 3º mesmo que a colinha
 * mostre só dois cargos. */
.cv-ordem {
	flex: 0 0 auto;
	font-size: 12px;
	font-weight: 800;
	line-height: 1;
	padding: 4px 6px;
	border-radius: 6px;
	background: var(--cv-lime);
	color: #17331a;
}

.cv-nome {
	font-size: 17px;
	font-weight: 800;
	color: var(--cv-tinta);
}

.cv-nome:empty { display: none; }

.cv-cargo {
	font-size: 16px;
	font-weight: 400;
	color: var(--cv-tinta);
}

.cv-badge {
	font-size: 9px;
	font-weight: 700;
	letter-spacing: .08em;
	padding: 3px 7px;
	border-radius: 999px;
	background: var(--cv-lime);
	color: #17331a;
	text-transform: uppercase;
}

/* Números e o selo de confirmação */
.cv-numero {
	margin: 0;
	display: flex;
	align-items: center;
	gap: 5px;
	flex-wrap: wrap;
}

.cv-digito {
	width: 38px;
	height: 44px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 27px;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	border-radius: 8px;
	background: var(--cv-digito-fundo);
	color: var(--cv-digito-tinta);
}

/* Em branco a caixinha segue cheia, como na arte — é o espaço do voto. */
.cv-digito-vazio { color: transparent; }

.cv-confirma {
	margin-left: 4px;
	padding: 8px 12px;
	border-radius: 8px;
	background: var(--cv-primaria, #0f5126);
	color: #fff;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
	white-space: nowrap;
}

/* ---------------------------------------------------------------- *
 * Aviso obrigatório — verde cheio, para não passar batido
 * ---------------------------------------------------------------- */

.cv-aviso {
	margin: 24px 0 0;
	padding: 14px 16px;
	border-radius: 12px;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.4;
	text-align: center;
	color: #ffffff;
	background: var(--cv-primaria, #0f5126);
}

.cv-marca {
	margin: 18px 0 0;
	display: flex;
	justify-content: flex-end;
}

.cv-marca img {
	max-width: 190px;
	height: auto;
	display: block;
}

/* ---------------------------------------------------------------- *
 * Montador
 * ---------------------------------------------------------------- */

.cv-montar {
	margin: 16px 0 0;
	padding: 20px;
	border-radius: 16px;
	background: var(--cv-papel);
	border: 1px solid var(--cv-borda);
	color: var(--cv-tinta);
	box-shadow: 0 8px 24px rgba(15, 81, 38, .10);
}

.cv-montar[hidden] { display: none; }

.cv-montar-titulo {
	margin: 0 0 6px;
	font-size: 19px;
	font-weight: 800;
}

.cv-montar-intro {
	margin: 0 0 18px;
	font-size: 13px;
	line-height: 1.5;
	color: var(--cv-tinta-suave);
}

.cv-campo {
	margin: 0 0 14px;
	position: relative;
}

.cv-campo label {
	display: block;
	margin-bottom: 5px;
	font-size: 13px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .06em;
	color: var(--cv-tinta-suave);
}

.cv-campo .cv-input {
	width: 100%;
	font: inherit;
	font-size: 17px;
	font-weight: 600;
	padding: 12px 14px;
	border-radius: 10px;
	border: 1.5px solid var(--cv-borda);
	background: #fff;
	color: #12261a;
}

.cv-campo .cv-input:focus {
	outline: none;
	border-color: var(--cv-primaria, #0f5126);
	box-shadow: 0 0 0 3px rgba(141, 191, 67, .35);
}

/* Lista de resultados da busca */
.cv-sugestoes {
	list-style: none;
	margin: 6px 0 0;
	padding: 0;
	max-height: 260px;
	overflow-y: auto;
	border: 1.5px solid var(--cv-borda);
	border-radius: 10px;
	background: #fff;
	box-shadow: 0 10px 28px rgba(15, 81, 38, .14);
}

.cv-sugestoes[hidden] { display: none; }

.cv-sugestao {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 9px 12px;
	cursor: pointer;
	border-bottom: 1px solid rgba(15, 81, 38, .08);
}

.cv-sugestao:last-child { border-bottom: 0; }
.cv-sugestao:hover,
.cv-sugestao[aria-selected="true"] { background: #eef4ea; }

.cv-sugestao-foto {
	width: 34px;
	height: 34px;
	flex: 0 0 auto;
	border-radius: 7px;
	background-size: cover;
	background-position: center top;
}

/* Sem foto não vira quadrado colorido: some. */
.cv-sugestao-foto:not([style]) { display: none; }

.cv-sugestao-txt { min-width: 0; }

.cv-sugestao-nome {
	display: block;
	font-size: 14px;
	font-weight: 700;
	color: #12261a;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.cv-sugestao-meta {
	display: block;
	font-size: 12px;
	color: #5f6771;
}

.cv-sugestao-num {
	margin-left: auto;
	font-variant-numeric: tabular-nums;
	font-weight: 800;
	font-size: 15px;
	color: var(--cv-primaria, #0f5126);
}

.cv-dica-busca {
	margin: 2px 0 0;
	font-size: 12px;
	color: var(--cv-tinta-suave);
}

.cv-digitos-dica {
	float: right;
	font-weight: 600;
	opacity: .75;
	letter-spacing: 0;
	text-transform: none;
}

.cv-deixe-branco {
	margin: 4px 0 0;
	font-size: 13px;
	font-weight: 600;
	color: var(--cv-tinta-suave);
}
.cv-montar-acoes {
	margin: 20px 0 0;
	display: flex;
	gap: 10px;
	flex-wrap: wrap;
}

.cv-montar-acoes .cv-btn { font-size: 14px; padding: 10px 16px; }

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

.cv-acoes {
	margin: 16px 0 0;
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	justify-content: center;
}

.cv-btn {
	appearance: none;
	cursor: pointer;
	border: 1.5px solid var(--cv-primaria, #0f5126);
	background: transparent;
	color: var(--cv-primaria, #0f5126);
	font: inherit;
	font-weight: 700;
	font-size: 15px;
	padding: 12px 18px;
	border-radius: 999px;
	text-decoration: none;
	line-height: 1;
}

.cv-tema-escuro .cv-btn {
	border-color: var(--cv-borda);
	color: var(--cv-tinta);
}

.cv-btn:hover { background: rgba(141, 191, 67, .18); }

.cv-btn-primario {
	background: var(--cv-primaria, #0f5126);
	border-color: var(--cv-primaria, #0f5126);
	color: #fff;
}

.cv-btn-primario:hover { background: #0a672f; }

.cv-btn[hidden] { display: none; }

.cv-rodape {
	margin: 0;
	font-size: 13px;
	text-align: center;
}

.cv-rodape a {
	color: var(--cv-tinta-suave, #4a6b54);
	text-decoration: none;
}

@media print {
	.no-print { display: none !important; }
	.cv-pagina-main { padding: 0; }
	.cv-card { box-shadow: none; }
}

@media (max-width: 400px) {
	.cv-card-conteudo { padding: 26px 14px 20px; }
	.cv-digito { width: 33px; height: 40px; font-size: 23px; }
	.cv-confirma { font-size: 11px; padding: 7px 9px; }
	.cv-nome { font-size: 15px; }
	.cv-cargo { font-size: 14px; }
}

/* ---------------------------------------------------------------- *
 * Painel de finalizar — ao lado do cartão no computador
 * ---------------------------------------------------------------- */

.cv-lado {
	margin: 18px 0 0;
	padding: 22px;
	border-radius: 16px;
	background: var(--cv-fundo-2);
	border: 1px solid var(--cv-borda-site);
}

@media (min-width: 900px) {
	.cv-lado { margin: 0; position: sticky; top: 24px; }
}

.cv-lado-titulo {
	margin: 0 0 14px;
	font-size: 19px;
	font-weight: 800;
	color: var(--cv-titulo);
}

/* Passos numerados, como os da ferramenta de moldura do site. */
.cv-passos {
	list-style: none;
	margin: 0 0 20px;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 11px;
}

.cv-passos li { display: flex; align-items: center; gap: 11px; }

.cv-passo-n {
	flex: 0 0 auto;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: var(--cv-cta);
	color: var(--cv-sobre-cta);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 14px;
	font-weight: 800;
}

.cv-passo-t { font-size: 14px; font-weight: 600; color: var(--cv-corpo); line-height: 1.35; }

.cv-btn-bloco { width: 100%; margin-bottom: 10px; }

.cv-btn-cta {
	background: var(--cv-cta);
	border-color: var(--cv-cta);
	color: var(--cv-sobre-cta);
	font-size: 16px;
	padding: 15px 24px;
}

.cv-btn-cta:hover { background: var(--cv-cta-hover); border-color: var(--cv-cta-hover); }

.cv-btn-contorno {
	background: transparent;
	border-color: var(--cv-primaria, #0f5126);
	color: var(--cv-primaria, #0f5126);
}

.cv-lado-extras {
	margin: 14px 0 0;
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
}

.cv-btn-linkinho {
	appearance: none;
	border: 0;
	background: none;
	padding: 0;
	font: inherit;
	font-size: 13px;
	font-weight: 700;
	color: var(--cv-primaria, #0f5126);
	text-decoration: underline;
	cursor: pointer;
}

/* Consentimento: a explicação é letra miúda, a pergunta é a frase. */
.cv-consent-bloco {
	margin: 18px 0 0;
	padding-top: 16px;
	border-top: 1px solid var(--cv-borda-site);
}

.cv-consent {
	display: flex;
	gap: 9px;
	align-items: flex-start;
	font-size: 13px;
	line-height: 1.4;
	color: var(--cv-corpo);
	cursor: pointer;
}

.cv-consent input { margin-top: 2px; flex: 0 0 auto; }

.cv-consent-aviso { margin: 0; font-size: 13px; color: var(--cv-corpo); }

.cv-consent-detalhe {
	margin: 7px 0 0;
	font-size: 11px;
	line-height: 1.45;
	color: var(--cv-corpo);
	opacity: .8;
}

/* ---------------------------------------------------------------- *
 * Modal de finalização
 * ---------------------------------------------------------------- */

.cv-modal {
	position: fixed;
	inset: 0;
	z-index: 9999;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 16px;
}

.cv-modal[hidden] { display: none; }

.cv-modal-fundo {
	position: absolute;
	inset: 0;
	background: rgba(11, 25, 15, .62);
}

.cv-modal-caixa {
	position: relative;
	width: min(420px, 100%);
	max-height: 92vh;
	overflow-y: auto;
	padding: 26px 22px 22px;
	border-radius: 18px;
	background: #fff;
	box-shadow: 0 24px 60px rgba(0, 0, 0, .35);
	text-align: center;
}

.cv-modal-x {
	position: absolute;
	top: 10px;
	right: 12px;
	appearance: none;
	border: 0;
	background: none;
	font-size: 26px;
	line-height: 1;
	color: var(--cv-corpo);
	cursor: pointer;
}

.cv-modal-titulo {
	margin: 0 0 16px;
	font-size: 22px;
	font-weight: 800;
	color: var(--cv-titulo);
}

.cv-modal-preview {
	margin: 0 0 18px;
	padding: 10px;
	border-radius: 14px;
	background: var(--cv-fundo-2);
	border: 1px solid var(--cv-borda-site);
}

.cv-modal-img { display: block; width: 100%; height: auto; border-radius: 8px; }

.cv-modal-botoes { display: flex; flex-direction: column; }

.cv-modal-ajuda {
	margin: 6px 0 0;
	font-size: 13px;
	line-height: 1.45;
	color: var(--cv-corpo);
	text-align: left;
}

.cv-modal-ajuda:empty { display: none; }

.cv-modal-ajuda.cv-modal-ajuda-ok {
	padding: 12px 14px;
	border-radius: 10px;
	background: #eef4ea;
	border-left: 4px solid var(--cv-cta);
	color: #17331a;
	font-weight: 600;
}

.cv-modal-lembrete {
	margin: 16px 0 0;
	padding: 12px 14px;
	border-radius: 10px;
	background: var(--cv-primaria, #0f5126);
	color: #fff;
	font-size: 13px;
	font-weight: 700;
	line-height: 1.4;
}

/* ---------------------------------------------------------------- *
 * Ajustes sobre o fundo verde escuro
 * ---------------------------------------------------------------- */

.cv-lado {
	background: rgba(255, 255, 255, .07);
	border-color: rgba(255, 255, 255, .22);
}

.cv-lado-titulo { color: #fff; }
.cv-passo-t { color: rgba(255, 255, 255, .92); }

.cv-lado .cv-btn-contorno {
	border-color: rgba(255, 255, 255, .55);
	color: #fff;
}

.cv-lado .cv-btn-contorno:hover {
	border-color: #fff;
	background: rgba(255, 255, 255, .1);
}

.cv-lado .cv-btn-linkinho { color: rgba(255, 255, 255, .85); }
.cv-lado .cv-btn-linkinho:hover { color: #fff; }

.cv-consent-bloco { border-top-color: rgba(255, 255, 255, .2); }
.cv-consent,
.cv-consent-aviso,
.cv-consent-detalhe { color: rgba(255, 255, 255, .88); }

.cv-rodape a { color: rgba(255, 255, 255, .6); }

/* Barra lime no alto do cartão, como a borda do hero do site. */
.cv-card { border-top: 4px solid var(--cv-cta); }

/* ---------------------------------------------------------------- *
 * Cartão mais baixo: as linhas em escolha ocupavam três alturas
 * ---------------------------------------------------------------- */

.cv-linhas { gap: 10px; }
.cv-linha { padding-bottom: 10px; }
.cv-card-conteudo { padding: 24px 18px 20px; }
.cv-topo { margin-bottom: 16px; }
.cv-titulo-linha { margin-bottom: 5px; }

/* A dica de dígitos virou item da linha do título. */
.cv-titulo-linha .cv-digitos-dica {
	margin-left: auto;
	float: none;
	font-size: 10px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .04em;
	color: var(--cv-tinta-suave);
	opacity: .85;
}

.cv-escolha .cv-digitos-dica { display: none; }

.cv-escolha .cv-input {
	font-size: 15px;
	padding: 9px 12px;
}

.cv-linha-editando { padding-bottom: 8px; }

.cv-aviso { margin-top: 16px; padding: 11px 14px; font-size: 13px; }
.cv-deixe-branco { margin-top: 10px; font-size: 12px; }

/* O botão ao pé do cartão fica mais discreto que o do painel. */
.cv-card-conteudo .cv-finalizar {
	margin-top: 12px;
	margin-bottom: 0;
	font-size: 15px;
	padding: 13px 20px;
}

/* O aviso é o que a pessoa mais precisa ler: uma frase por linha e
 * corpo maior que o resto do cartão. */
.cv-aviso {
	margin-top: 18px;
	padding: 15px 16px;
	font-size: 16px;
	line-height: 1.35;
	letter-spacing: .01em;
}

.cv-aviso-linha { display: block; }

.cv-aviso-linha + .cv-aviso-linha { margin-top: 3px; }

.cv-modal-lembrete { font-size: 14px; line-height: 1.4; }

@media (max-width: 400px) {
	.cv-aviso { font-size: 15px; padding: 14px; }
}

/* No celular o aviso vai de borda a borda do cartão: é o único jeito de a
 * frase do celular caber numa linha só sem encolher a letra. */
@media (max-width: 460px) {
	.cv-card-conteudo { padding: 22px 14px 18px; }

	.cv-aviso {
		margin-left: -14px;
		margin-right: -14px;
		border-radius: 0;
		padding: 14px 12px;
		font-size: 15px;
		letter-spacing: 0;
	}
}

/* ---------------------------------------------------------------- *
 * Finalização em duas colunas no computador
 *
 * A imagem da colinha é alta (proporção de story). Empilhada com os
 * botões, o quadro passava da tela e exigia rolagem justo na hora de
 * compartilhar. Lado a lado, tudo cabe.
 * ---------------------------------------------------------------- */

@media (min-width: 860px) {
	.cv-modal-caixa {
		width: min(760px, 100%);
		max-height: 90vh;
		padding: 28px;
		display: grid;
		grid-template-columns: 270px 1fr;
		grid-template-areas:
			"preview titulo"
			"preview botoes"
			"preview ajuda"
			"preview lembrete";
		grid-template-rows: auto auto auto 1fr;
		align-content: start;
		column-gap: 26px;
		text-align: left;
	}

	.cv-modal-titulo {
		grid-area: titulo;
		margin-bottom: 18px;
		font-size: 24px;
	}

	.cv-modal-preview {
		grid-area: preview;
		align-self: start;
		margin: 0;
	}

	/* A imagem nunca empurra o quadro para fora da tela. */
	.cv-modal-img {
		max-height: 66vh;
		width: auto;
		max-width: 100%;
		margin: 0 auto;
	}

	.cv-modal-botoes { grid-area: botoes; }
	.cv-modal-ajuda  { grid-area: ajuda; margin-top: 10px; }

	.cv-modal-lembrete {
		grid-area: lembrete;
		align-self: end;
		margin-top: 18px;
	}
}

/* ---------------------------------------------------------------- *
 * Blindagem contra o tema
 *
 * O plugin roda dentro de temas que estilizam `a`, `button`, `ol` e `li`
 * com seletores mais específicos que os nossos. No Divi, por exemplo, o
 * link vira `display:inline` e perde a largura — aí o botão de baixo sobe
 * por cima do de cima. Estas regras fixam só o que é estrutural.
 * ---------------------------------------------------------------- */

.cv-wrap .cv-btn {
	display: inline-flex !important;
	box-sizing: border-box !important;
	text-decoration: none !important;
	line-height: 1.2 !important;
}

.cv-wrap .cv-btn-bloco {
	display: flex !important;
	width: 100% !important;
}

.cv-wrap .cv-btn[hidden] { display: none !important; }

.cv-wrap .cv-linhas,
.cv-wrap .cv-passos,
.cv-wrap .cv-sugestoes {
	list-style: none !important;
	margin-left: 0 !important;
	padding-left: 0 !important;
}

.cv-wrap .cv-linhas > li,
.cv-wrap .cv-passos > li,
.cv-wrap .cv-sugestoes > li {
	list-style: none !important;
	margin-left: 0 !important;
}

.cv-wrap .cv-linhas > li::before,
.cv-wrap .cv-passos > li::before { content: none !important; }

.cv-wrap .cv-input,
.cv-wrap .cv-trocar {
	box-sizing: border-box !important;
	max-width: 100% !important;
}

.cv-wrap .cv-btn-linkinho {
	display: inline !important;
	width: auto !important;
}

/* Linha ainda em branco: o cargo é a única pista do que preencher, então
 * precisa do mesmo peso que o nome tem nas linhas preenchidas. */
.cv-linha-editando .cv-cargo {
	font-weight: 800;
	font-size: 17px;
}

.cv-linha-editando .cv-vaga { font-weight: 700; }

/* O tema pinta TODO span com a cor de corpo do site
 * (`body, p, li, span, a { color: var(--nt-text) }`), o que vencia a
 * herança e deixava o aviso escuro sobre a faixa verde escura. Aqui os
 * spans voltam a herdar de quem os contém. */
.cv-wrap p,
.cv-wrap li,
.cv-wrap span,
.cv-wrap strong,
.cv-wrap label { color: inherit; }

/* A raiz de onde a herança parte. */
.cv-card-conteudo { color: var(--cv-tinta); }
.cv-lado { color: #fff; }

/* O aviso obrigatório não pode depender de herança para ser legível. */
.cv-aviso,
.cv-aviso .cv-aviso-linha {
	color: #ffffff !important;
}

.cv-modal-lembrete,
.cv-modal-lembrete .cv-aviso-linha {
	color: #ffffff !important;
}

/* A chamada segue a tinta do cartão, não a cor de corpo do tema. */
.cv-chamada,
.cv-chamada .cv-chamada-leve,
.cv-chamada .cv-chamada-forte {
	color: var(--cv-tinta);
}

/* Reafirmadas com .cv-wrap na frente: precisam vencer a regra de herança
 * acima, que tem especificidade maior que um seletor de classe sozinho. */
.cv-wrap .cv-nome,
.cv-wrap .cv-cargo { color: var(--cv-tinta); }

.cv-wrap .cv-vaga,
.cv-wrap .cv-digitos-dica,
.cv-wrap .cv-dica-busca { color: var(--cv-tinta-suave); }

.cv-wrap .cv-digito { color: var(--cv-digito-tinta); }
.cv-wrap .cv-confirma { color: #fff; }
.cv-wrap .cv-ordem { color: #17331a; }
.cv-wrap .cv-badge { color: #17331a; }
.cv-wrap .cv-passo-n { color: var(--cv-sobre-cta); }
.cv-wrap .cv-passo-t { color: rgba(255, 255, 255, .92); }
.cv-wrap .cv-lado-titulo { color: #fff; }
.cv-wrap .cv-btn-linkinho { color: rgba(255, 255, 255, .85); }
.cv-wrap .cv-btn-cta { color: var(--cv-sobre-cta); }
.cv-wrap .cv-btn-primario { color: #fff; }
.cv-wrap .cv-escolha .cv-input { color: #12261a; }

/* Dentro do quadro de finalização o fundo é branco. */
.cv-wrap .cv-modal-caixa { color: var(--cv-corpo); }
.cv-wrap .cv-modal-titulo { color: var(--cv-titulo); }
.cv-wrap .cv-sugestao-nome { color: #12261a; }
.cv-wrap .cv-sugestao-meta { color: #5f6771; }
.cv-wrap .cv-sugestao-num { color: var(--cv-primaria, #0f5126); }

/* Nome e cargo um pouco maiores: são a informação que o eleitor confere
 * antes de digitar o número na urna. */
.cv-wrap .cv-nome { font-size: 19px; }
.cv-wrap .cv-cargo { font-size: 17px; }
.cv-wrap .cv-linha-editando .cv-cargo { font-size: 19px; }
.cv-wrap .cv-vaga { font-size: 12px; }

@media (max-width: 400px) {
	.cv-wrap .cv-nome { font-size: 17px; }
	.cv-wrap .cv-cargo { font-size: 15px; }
	.cv-wrap .cv-linha-editando .cv-cargo { font-size: 17px; }
}

/* O aviso é o texto mais importante do cartão. Centralizado de verdade
 * (caixa flex, não só text-align), em negrito e com respiro entre as duas
 * frases. O peso precisa ser reafirmado porque o tema normaliza `span`. */
.cv-wrap .cv-aviso {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 5px;
	padding: 18px 16px;
	font-size: 17px;
	line-height: 1.3;
	text-align: center;
}

.cv-wrap .cv-aviso .cv-aviso-linha {
	display: block;
	margin: 0;
	font-weight: 800;
	letter-spacing: .005em;
}

.cv-wrap .cv-modal-lembrete {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 4px;
	text-align: center;
	padding: 14px 16px;
}

.cv-wrap .cv-modal-lembrete .cv-aviso-linha {
	margin: 0;
	font-weight: 800;
}

@media (max-width: 460px) {
	.cv-wrap .cv-aviso { font-size: 16px; padding: 16px 12px; }
}

/* ---------------------------------------------------------------- *
 * Captura da imagem — precisa ser a última palavra
 *
 * A blindagem contra o tema usa `!important` com a mesma especificidade
 * das regras de captura. Empate em especificidade, vence quem vem depois:
 * o botão voltava a aparecer e saía escrito "Gerando…" na imagem. Aqui as
 * regras ganham um nível a mais e ficam no fim do arquivo.
 * ---------------------------------------------------------------- */

.cv-card.cv-capturando .cv-finalizar,
.cv-card.cv-capturando .cv-linha-editando,
.cv-card.cv-capturando .cv-trocar,
.cv-card.cv-capturando .cv-digitos-dica,
.cv-card.cv-capturando .cv-deixe-branco,
.cv-card.cv-capturando .cv-escolha,
.cv-card.cv-capturando .no-print {
	display: none !important;
}

/* ---------------------------------------------------------------- *
 * Aviso: duas linhas em qualquer largura
 *
 * "Celular não é permitido no dia de votação." precisa de cerca de 20,5px
 * de largura por pixel de fonte. Com tamanho fixo ela quebrava nos
 * aparelhos estreitos, virando três linhas. Fluida, cabe sempre.
 * ---------------------------------------------------------------- */

.cv-wrap .cv-aviso {
	font-size: clamp(12.5px, 4vw, 17px);
	padding: 16px 12px;
}

.cv-wrap .cv-aviso .cv-aviso-linha { white-space: nowrap; }

@media (min-width: 900px) {
	.cv-wrap .cv-aviso { font-size: 17px; }
}

/* ---------------------------------------------------------------- *
 * Lembretes na sobra das linhas de dois dígitos
 * ---------------------------------------------------------------- */

.cv-nota {
	/* Ocupa a sobra da linha e se centra nela, em vez de colar na borda. */
	flex: 1 1 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	color: var(--cv-tinta-suave);
	line-height: 1;
}

/* Manuscrita, como um bilhete na margem do caderno. */
.cv-wrap .cv-nota-papel {
	/* Pilha explícita: var(--nt-script) existe vazia nesta página, e nesse
	 * caso o fallback do var() não entra — a declaração vira inválida.
	 * O !important vence o `span { font-family: var(--nt-body) !important }`
	 * que o tema injeta inline. */
	font-family: "Segoe Script", "Bradley Hand", "Brush Script MT", "Comic Sans MS", cursive !important;
	font-size: clamp(13px, 3.8vw, 19px);
	color: var(--cv-primaria, #0f5126);
	transform: rotate(-4deg);
	white-space: nowrap;
}

.cv-wrap .cv-nota-celular {
	font-size: clamp(9.5px, 2.6vw, 11px);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .02em;
	color: var(--cv-primaria, #0f5126);
	text-align: center;
	line-height: 1.15;
}

/* O texto é longo: quebra em duas linhas em vez de estourar a linha. */
.cv-nota-celular .cv-nota-texto { max-width: 11em; }

.cv-nota-celular svg {
	width: clamp(18px, 5vw, 24px);
	height: auto;
	flex: 0 0 auto;
}

/* Em tela muito estreita não sobra espaço: fica só o ícone. */
@media (max-width: 340px) {
	.cv-wrap .cv-nota-papel { font-size: 13px; }
	.cv-nota-celular .cv-nota-texto { display: none; }
}

/* ---------------------------------------------------------------- *
 * Respiro de baixo do aviso
 *
 * O aviso é um <p>, e o tema zera o recuo inferior do último parágrafo
 * (`p:not(.has-background):last-of-type`), seletor mais específico que
 * `.cv-wrap .cv-aviso`. O resultado era texto colado — e até passando —
 * na borda de baixo do fundo verde. Aqui devolvemos o recuo, igual ao
 * de cima, para a frase ficar centrada na faixa.
 * ---------------------------------------------------------------- */

.cv-wrap .cv-aviso { padding-bottom: 16px !important; }
