/* A paleta vem do núcleo, não daqui.
 *
 * O `<body>` de cada página carrega a classe da paleta do seu núcleo —
 * `a12-paleta-terracota` no Reze no Santuário, `a12-paleta-azul-petroleo-vivo`
 * na Academia Marial — e ela define seis pares de token. Estes widgets são os
 * mesmos nos três serviços de coleção (Santo do Dia, Títulos e Deus Conosco),
 * então cor fixa aqui significa a página da Academia Marial pintada de marrom,
 * que foi o que se viu em 15/09.
 *
 * Cada `var()` traz o valor antigo como reserva: sem paleta na página, o
 * componente continua exatamente como era.
 *
 *   --a12-principal / --a12-on-principal          tinta média, fundos de marca
 *   --a12-secundaria / --a12-on-secundaria        tinta forte, botão de ação
 *   --a12-intermediaria / --a12-on-intermediaria  tinta suave
 *   --a12-fundo-suave / --a12-on-fundo-suave      faixa clara
 *
 * As 29 paletas são pareadas por luminosidade, então trocar o matiz não mexe
 * nas razões de contraste — é o que torna esta substituição segura.
 */

/**
 * Calendário e filtros do Santo do Dia.
 *
 * Segue os dois desenhos do editorial: `calendario-temp.svg` (topo marrom,
 * faixa com as iniciais, grade limpa, hoje no círculo cheio) e
 * `filtros-temp-santo-do-dia.svg` (três seletores de largura igual, cantos
 * suaves, sem botão).
 *
 * **Sem `<table>`, de propósito.** A primeira versão era tabela, e o tema
 * desenha borda em `td` — o calendário foi ao ar com linhas de grade que o
 * desenho não tem. Grade de CSS não herda nada disso.
 *
 * Cada regra que existe para resistir ao tema está marcada. O resto é o
 * desenho.
 */

/* ---------------------------------------------- o gatilho e o painel
 *
 * O calendário não ocupa mais a página: fica atrás de um botão com a data em
 * foco e aparece por cima quando alguém pede. Sem JavaScript o mesmo HTML é um
 * `<details>`, que abre no lugar — o conteúdo não some, muda de forma.
 */

.a12-cal-caixa {
	position: relative;
	display: inline-block;
	max-width: 100%;
}

.a12-cal-gatilho {
	display: inline-flex;
	align-items: center;
	gap: .85rem;
	padding: .6rem .9rem;
	border: 0;
	border-radius: 12px;
	background: none;
	color: var(--a12-secundaria, #4b2d22);
	font: inherit;
	text-align: left;
	cursor: pointer;
	list-style: none;          /* o marcador do <summary> */
}

.a12-cal-gatilho::-webkit-details-marker { display: none; }

/* O reset do tema pinta **qualquer** `<button>` de rosa (#c36) no `:hover` e no
 * `:focus`, e troca a cor do texto para branco. O gatilho fica com foco logo
 * depois do clique que abre o painel — então ele aparecia rosa com o painel
 * aberto, que foi o que apareceu na tela.
 *
 * Por isso as cores são declaradas nos quatro estados, e não só no repouso:
 * `button:focus` do reset tem mais peso que `.a12-cal-gatilho` sozinho, e a
 * única forma de não perder é dizer o que vale em cada estado. */
.a12-cal-gatilho,
.a12-cal-gatilho:hover,
.a12-cal-gatilho:focus,
.a12-cal-gatilho:active,
.a12-cal-gatilho[aria-expanded="true"] {
	border: 0;
	background: none;
	color: var(--a12-secundaria, #4b2d22);
}

.a12-cal-gatilho:hover,
.a12-cal-gatilho:focus,
.a12-cal-gatilho[aria-expanded="true"] { background: color-mix(in srgb, var(--a12-principal, #6b4227) 6%, transparent); }

.a12-cal-gatilho:focus-visible { outline: 3px solid var(--a12-principal, #6b4227); outline-offset: 2px; }

.a12-cal-gatilho__icone {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 52px;
	height: 52px;
	border-radius: 12px;
	background: var(--a12-principal, #6b4227);
	color: var(--a12-on-principal, #fff);
}

.a12-cal-gatilho__texto { display: flex; flex-direction: column; gap: .1rem; }

.a12-cal-gatilho__rotulo {
	color: var(--a12-intermediaria, #7a5438);
	font-size: .9rem;
	font-weight: 400;
	line-height: 1.2;
}

.a12-cal-gatilho__data {
	color: var(--a12-secundaria, #4b2d22);
	font-size: 1.15rem;
	font-weight: 700;
	line-height: 1.2;
}

/* o painel flutua sobre a página; sem JavaScript, o <details> o abre no fluxo */
.a12-cal-painel {
	position: absolute;
	z-index: 30;
	top: calc(100% + .4rem);
	left: 0;
	min-width: 18rem;
	border-radius: 16px;
	box-shadow: 0 12px 34px color-mix(in srgb, var(--a12-secundaria, #4b2d22) 22%, transparent);
}

/* sem JavaScript: o conteúdo do <details> abre embaixo, sem sombra de painel */
.a12-cal-caixa:not(:has(button)) .a12-cal-painel,
details.a12-cal-caixa > .a12-cal {
	position: static;
	box-shadow: none;
}

/* Modo aberto: o calendário é o conteúdo, não um painel que sobe.
 *
 * O mesmo `.a12-cal-painel` serve aos dois modos — o que muda é se ele flutua
 * ou se ocupa o lugar. Escrever duas árvores de HTML para a mesma grade seria
 * garantir que uma delas envelhecesse sozinha. */
.a12-cal-caixa--aberto { display: block; }

.a12-cal-caixa--aberto .a12-cal-painel {
	position: static;
	min-width: 0;
	box-shadow: none;
	transform: none;
}

@media (max-width: 420px) {
	.a12-cal-caixa:not(.a12-cal-caixa--aberto) .a12-cal-painel {
		left: 50%;
		transform: translateX(-50%);
	}
}

/* enquanto a ilha não monta, o calendário do servidor não é pintado: ele está
   no documento para quem não tem JavaScript e para o buscador, e some do olho
   para não piscar (ver o script no Calendario.php) */
.a12-cal--aguardando > *:not(script) { display: none !important; }

/* Montada a ilha, o nó que a hospeda deixa de ser o card do fallback.
 *
 * Sem isto o `overflow: hidden` do card recortava o painel flutuante — ele
 * existia no documento, sem `hidden`, e não aparecia na tela. */
.a12-cal[data-montado],
.a12-cal-caixa[data-montado] {
	max-width: none;
	overflow: visible;
	background: none;
	border-radius: 0;
}

/* o <details> hospedeiro não desenha nada: quem desenha é o que a ilha põe nele */
details.a12-cal-caixa[data-montado] { display: inline-block; }

.a12-cal {
	--cal-tinta: var(--a12-principal, #6b4227);
	--cal-faixa: var(--a12-fundo-suave, #f2e7df);
	--cal-dia: var(--a12-intermediaria, #7a5438);

	max-width: 26rem;
	margin-inline: auto;
	border-radius: 16px;
	overflow: hidden;
	background: #fff;
	font-family: inherit;
	line-height: 1.2;
}

/* ------------------------------------------------------------------- topo */

.a12-cal__topo {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: .25rem;
	padding: .4rem .6rem;
	background: var(--cal-tinta);
}

.a12-cal__mes {
	flex: 1;
	margin: 0;                       /* o tema dá margem a h2 */
	padding: 0;
	color: var(--a12-on-principal, #fff);
	font-size: clamp(1.4rem, 1.1rem + 1.2vw, 1.9rem);
	line-height: 1.5;
	text-align: center;
	text-transform: uppercase;
	letter-spacing: .04em;
	font-weight: 600;
}

.a12-cal__seta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	color: var(--a12-on-principal, #fff);
	text-decoration: none;           /* o tema sublinha link */
	box-shadow: none;
	transition: background-color .15s ease;
}

.a12-cal__seta:hover,
.a12-cal__seta:focus-visible { background: color-mix(in srgb, var(--a12-on-principal, #fff) 18%, transparent); color: var(--a12-on-principal, #fff); }

/* ------------------------------------------------------------------ grade */

.a12-cal__grade {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	justify-items: center;
	align-items: center;
	gap: .15rem;
	padding: 0 .5rem .8rem;
}

.a12-cal__semana {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 2.6rem;
	margin-bottom: .4rem;
	background: var(--cal-faixa);
	color: var(--cal-tinta);
	font-size: 1.05rem;
	font-weight: 700;
	text-decoration: none;           /* abbr[title] vem pontilhado */
	border-bottom: 0;
	cursor: default;
}

/* a faixa é contínua: a margem lateral do primeiro e do último a completa */
.a12-cal__semana:nth-child(1) { margin-left: -.5rem; padding-left: .5rem; width: calc(100% + .5rem); }
.a12-cal__semana:nth-child(7) { margin-right: -.5rem; padding-right: .5rem; width: calc(100% + .5rem); }

.a12-cal__dia {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	color: var(--cal-dia);
	font-size: 1.15rem;
	text-decoration: none;           /* o tema sublinha link */
	box-shadow: none;
	transition: background-color .15s ease, color .15s ease;
}

a.a12-cal__dia:hover { background: var(--cal-faixa); color: var(--cal-tinta); }
a.a12-cal__dia:focus-visible { outline: 3px solid var(--cal-tinta); outline-offset: 2px; }

.a12-cal__dia--ativo,
a.a12-cal__dia--ativo:hover { background: var(--cal-tinta); color: #fff; font-weight: 700; }

.a12-cal__dia--sem { color: #c3b2a5; cursor: default; }

@media (max-width: 380px) {
	.a12-cal__dia, .a12-cal__seta { width: 40px; height: 40px; }
	.a12-cal__semana { height: 2.2rem; }
}

/* --------------------------------------------- busca e filtros do acervo
 *
 * Segue `filtros-temp-santo-do-dia.svg`: três seletores de **largura igual**
 * ocupando a linha, rótulo pequeno acima, cantos de 10 px, sem botão. O campo
 * de nome é uma linha à parte, acima — como no layout.
 *
 * O botão só aparece quando não há JavaScript: com ele, trocar o seletor já
 * filtra e o endereço acompanha.
 */

.a12-filtros {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: .4rem 1.5rem;
	margin: 0 0 1.25rem;
	align-items: end;
}

/* o campo de nome ocupa a linha inteira, como no layout */
.a12-filtros--texto { grid-template-columns: 1fr; }

.a12-filtros__campo { display: flex; flex-direction: column; gap: .3rem; min-width: 0; }

.a12-filtros__rotulo {
	margin: 0;
	color: var(--a12-secundaria, #4b2d22);
	font-size: .9rem;
	font-weight: 400;
	line-height: 1.3;
}

.a12-filtros select,
.a12-filtros input[type="search"] {
	width: 100%;
	min-height: 48px;
	padding: .6rem 2.4rem .6rem 1rem;
	border: 1px solid #d5d4d4;
	border-radius: 10px;
	background: #fff;
	color: var(--a12-secundaria, #4b2d22);
	font: inherit;
	font-size: 1rem;
	font-weight: 400;          /* o tema deixa campo de formulário em negrito */
	appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23616161' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 1rem center;
}

.a12-filtros input[type="search"] {
	background-image: none;
	padding-right: 1rem;
	color: var(--a12-secundaria, #4b2d22);
	font-weight: 400;
}

.a12-filtros input[type="search"]::placeholder { color: #8a7a70; font-weight: 400; }

.a12-filtros select:focus-visible,
.a12-filtros input[type="search"]:focus-visible {
	outline: 2px solid var(--a12-secundaria, #4b2d22);
	outline-offset: 1px;
	border-color: var(--a12-secundaria, #4b2d22);
}

/* a linha de ações ocupa a grade inteira e encosta à direita */
.a12-filtros__acoes {
	grid-column: 1 / -1;
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 1rem;
	margin-top: .25rem;
}

.a12-filtros__enviar {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	min-height: 48px;
	padding: .6rem 1.8rem;
	border: 1px solid var(--a12-secundaria, #4b2d22);
	border-radius: 10px;
	background: var(--a12-secundaria, #4b2d22);
	color: var(--a12-on-secundaria, #fff);
	font: inherit;
	font-weight: 500;
	cursor: pointer;
	transition: background-color .15s ease;
}

/* mesmo motivo do gatilho: sem o `:focus` declarado, o reset do tema deixa o
   Buscar rosa depois do clique */
.a12-filtros__enviar:hover,
.a12-filtros__enviar:focus,
.a12-filtros__enviar:active {
	border-color: var(--a12-principal, #6b4227);
	background: var(--a12-principal, #6b4227);
	color: var(--a12-on-secundaria, #fff);
}

.a12-filtros__enviar:focus-visible { outline: 3px solid var(--a12-secundaria, #4b2d22); outline-offset: 2px; }

/* peso menor que o Buscar: é a saída, não a ação principal */
.a12-filtros__limpar {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0 .25rem;
	color: var(--a12-principal, #6b4227);            /* o tema pinta link de azul */
	font-size: .95rem;
	font-weight: 400;
	text-decoration: none;
}

.a12-filtros__limpar:hover { color: var(--a12-secundaria, #4b2d22); text-decoration: underline; text-underline-offset: 3px; }

/* --- o botão avisa que está buscando, no lugar do ícone de lupa */

.a12-filtros__girando { display: none; }
.a12-filtros--ocupado .a12-filtros__lupa { display: none; }
.a12-filtros--ocupado .a12-filtros__girando {
	display: inline-block;
	animation: a12-girar .8s linear infinite;
}

@keyframes a12-girar { to { transform: rotate(360deg); } }

/* quem pediu menos movimento no sistema recebe o mesmo aviso, sem girar */
@media (prefers-reduced-motion: reduce) {
	.a12-filtros--ocupado .a12-filtros__girando { animation: none; }
}

/* enquanto o resultado vem, a lista não pisca: o botão é que avisa */
.a12-filtros--ocupado .a12-filtros__enviar { cursor: progress; }
.a12-filtros--ocupado .a12-filtros__campo { opacity: .75; transition: opacity .1s ease; }

@media (max-width: 760px) {
	.a12-filtros { grid-template-columns: 1fr; }
}

/* ------------------------------------------------ o calendário da ilha React
 *
 * O react-calendar traz a estrutura e o teclado; o desenho é todo daqui. As
 * medidas saem do PNG de referência (843×867): o card é quase quadrado, a
 * faixa dos dias é uma barra inteira, e o número tem respiro — foi a falta
 * dele que fez a primeira versão parecer apertada.
 */

.a12-cal-ilha {
	/* os mesmos tokens do calendário do servidor: uma paleta só para as duas
	   pinturas da mesma grade */
	--cal-tinta: var(--a12-principal, #6b4227);
	--cal-faixa: var(--a12-fundo-suave, #f2e7df);

	max-width: 18rem;
	margin-inline: auto;
}

.a12-cal-ilha .react-calendar {
	width: 100%;
	border: 0;
	border-radius: 16px;
	overflow: hidden;
	background: #fff;
	font-family: inherit;
	line-height: 1.2;
}

/* --- topo marrom: mês ao centro, setas nas pontas */

.a12-cal-ilha .react-calendar__navigation {
	display: flex;
	align-items: center;
	height: auto;
	margin: 0;
	padding: .35rem .4rem;
	background: var(--a12-principal, #6b4227);
}

.a12-cal-ilha .react-calendar__navigation button {
	min-width: 32px;
	height: 32px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: none;
	color: var(--a12-on-principal, #fff);
	font-size: 1.15rem;
	line-height: 1;
}

.a12-cal-ilha .react-calendar__navigation button:enabled:hover,
.a12-cal-ilha .react-calendar__navigation button:enabled:focus {
	background: color-mix(in srgb, var(--a12-on-principal, #fff) 18%, transparent);
}

.a12-cal-ilha .react-calendar__navigation__label {
	flex-grow: 1;
	color: var(--a12-on-principal, #fff);
	font-size: clamp(1rem, .85rem + .7vw, 1.3rem);
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .04em;
	border-radius: 8px;
}

/* o nome do mês abre os doze meses: precisa parecer clicável */
.a12-cal-ilha .react-calendar__navigation__label:enabled:hover,
.a12-cal-ilha .react-calendar__navigation__label:enabled:focus-visible {
	background: color-mix(in srgb, var(--a12-on-principal, #fff) 18%, transparent);
}

/* --- faixa dos dias da semana: uma barra inteira, sem pontilhado */

.a12-cal-ilha .react-calendar__month-view__weekdays {
	background: var(--a12-fundo-suave, #f2e7df);
	font-size: .8rem;
	font-weight: 700;
	text-transform: none;
}

.a12-cal-ilha .react-calendar__month-view__weekdays__weekday {
	padding: .55rem 0;
	text-align: center;
	color: var(--a12-principal, #6b4227);
}

/* Todo `abbr[title]` do calendário, não só o do cabeçalho.
 *
 * O tema estiliza `abbr[title]` com sublinhado pontilhado e a regra dele tem
 * especificidade maior que a de um seletor de classe — por isso vai `[title]`
 * aqui também, e vale para os dias e para as iniciais da semana. */
.a12-cal-ilha abbr,
.a12-cal-ilha abbr[title] {
	text-decoration: none;
	border-bottom: 0;
	cursor: inherit;
}

.a12-cal-ilha .react-calendar__month-view__weekdays__weekday abbr { cursor: default; }

/* --- os dias */

.a12-cal-ilha .react-calendar__month-view__days { padding: .4rem .3rem .7rem; }

/* O anel azul em volta do dia é o do navegador: o dia clicado continua com
 * foco, e o UA desenha o `outline` dele, que não tem nada a ver com a paleta.
 *
 * Trocado por um anel na tinta do calendário, e só no `:focus-visible` — assim
 * ele aparece para quem navega pelo teclado, que é quem precisa dele, e não
 * fica sobrando na tela depois de um clique de mouse. Vale para os dias, para
 * os meses da vista de ano e para as setas. */
.a12-cal-ilha .react-calendar__tile:focus,
.a12-cal-ilha .react-calendar__navigation button:focus { outline: none; }

.a12-cal-ilha .react-calendar__tile:focus-visible > abbr,
.a12-cal-ilha .react-calendar__year-view__months__month:focus-visible,
.a12-cal-ilha .react-calendar__navigation button:focus-visible {
	outline: 3px solid var(--cal-tinta, var(--a12-principal, #6b4227));
	outline-offset: 2px;
}

/* na faixa escura do topo o marrom não apareceria: ali o anel é claro */
.a12-cal-ilha .react-calendar__navigation button:focus-visible {
	outline-color: var(--a12-fundo-suave, #f2e7df);
}

.a12-cal-ilha .react-calendar__tile {
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 1;         /* o respiro do desenho vem daqui */
	max-width: none;
	padding: 0;
	border: 0;
	background: none;
	color: var(--a12-intermediaria, #7a5438);
	font-size: .85rem;
	line-height: 1;
}

.a12-cal-ilha .react-calendar__tile > abbr {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	/* 1.8rem ≈ 29 px: acima dos 24 px que o critério 2.5.8 (AA) pede como alvo
	   mínimo, depois da redução de 30% pedida pelo editorial */
	width: 1.8rem;
	height: 1.8rem;
	border-radius: 50%;
	text-decoration: none;
	transition: background-color .15s ease, color .15s ease;
}

/* O azul é do react-calendar, não do navegador: a folha dele pinta o `<button>`
 * do dia de #006edc quando está escolhido e de #1087ff quando tem foco, e
 * `.react-calendar__tile--active:enabled:focus` pesa mais que o nosso
 * `.a12-cal-ilha .react-calendar__tile`. Ordem de importação não resolve isso —
 * especificidade resolve.
 *
 * Quem desenha o dia aqui é o `<abbr>` de dentro, que é o círculo do desenho; o
 * botão em volta não tem cor nenhuma, em estado nenhum. */
.a12-cal-ilha .react-calendar__tile:enabled:hover,
.a12-cal-ilha .react-calendar__tile:enabled:focus,
.a12-cal-ilha .react-calendar__tile--active,
.a12-cal-ilha .react-calendar__tile--active:enabled:hover,
.a12-cal-ilha .react-calendar__tile--active:enabled:focus,
.a12-cal-ilha .react-calendar__tile--hasActive,
.a12-cal-ilha .react-calendar__tile--now,
.a12-cal-ilha .react-calendar__tile--now:enabled:hover,
.a12-cal-ilha .react-calendar__tile--now:enabled:focus { background: none; }

.a12-cal-ilha .react-calendar__tile:enabled:hover > abbr,
.a12-cal-ilha .react-calendar__tile:enabled:focus > abbr {
	background: var(--a12-fundo-suave, #f2e7df);
	color: var(--a12-principal, #6b4227);
}

.a12-cal-ilha .react-calendar__tile--active > abbr,
.a12-cal-ilha .react-calendar__tile--active:enabled:hover > abbr {
	background: var(--a12-principal, #6b4227);
	color: var(--a12-on-principal, #fff);
	font-weight: 700;
}

/* dia de outro mês, e dia sem verbete publicado: legível, mas não é alvo */
.a12-cal-ilha .react-calendar__month-view__days__day--neighboringMonth,
.a12-cal-ilha .react-calendar__tile:disabled {
	background: none;
	color: #c9bbb0;
}

/* o anel do "hoje" é só na vista de dias: na de meses não há abbr com tamanho,
   e ele virava um círculo solto atrás do nome do mês */
.a12-cal-ilha .react-calendar__month-view__days
	.react-calendar__tile--now:not(.react-calendar__tile--active) > abbr {
	box-shadow: inset 0 0 0 2px #cbb3a1;
}

/* enquanto o dia é buscado, o calendário avisa sem travar a página */
.a12-cal-ilha--ocupada { opacity: .65; transition: opacity .1s ease; }

.a12-cal-oculto {
	position: absolute;
	width: 1px; height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

/* --- a navegação rápida: os doze meses do ano */

/* O react-calendar põe `display:flex` no container e `flex: 0 0 33.3333%` em
   cada mês — **inline**, que vence folha externa. Um `gap` aqui somava largura
   aos 100% e os três meses caíam para dois por linha. Quem manda no arranjo é
   o componente; daqui sai só o desenho. */
.a12-cal-ilha .react-calendar__year-view__months {
	padding: .5rem .4rem .7rem;
}

.a12-cal-ilha .react-calendar__year-view__months__month {
	aspect-ratio: auto;
	padding: .7rem .1rem;
	border-radius: 8px;
	color: var(--a12-intermediaria, #7a5438);
	font-size: .8rem;
	text-transform: capitalize;
}

.a12-cal-ilha .react-calendar__year-view__months__month:enabled:hover,
.a12-cal-ilha .react-calendar__year-view__months__month:enabled:focus {
	background: var(--a12-fundo-suave, #f2e7df);
	color: var(--a12-principal, #6b4227);
}

/* ------------------------------------------------- o atlas dos Títulos
 *
 * Uma peça que o Santo do Dia não tem: o **índice alfabético**, que é a
 * navegação principal de um atlas — o que o calendário é para o serviço diário.
 *
 * Mesmas classes, mesmos tokens: o componente sai azul na Academia Marial e
 * terracota no Reze no Santuário sem uma regra a mais.
 */

.a12-letras { margin: 0 0 1.5rem; }

.a12-letras__lista {
	display: flex;
	flex-wrap: wrap;
	gap: .375rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.a12-letras__letra {
	display: grid;
	place-items: center;
	min-width: 2.25rem;
	min-height: 2.25rem;
	padding: 0 .4rem;
	border-radius: .5rem;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	text-decoration: none;
	color: var(--a12-principal, #6b4227);
	background: var(--a12-fundo-suave, #f2e7df);
	transition: background .12s ease, color .12s ease;
}

.a12-letras__letra:hover { background: var(--a12-intermediaria, #7a5438); color: var(--a12-on-intermediaria, #fff); }

/* a letra aberta não é link para si mesma: fica marcada e sem transição */
.a12-letras__letra--ativa,
.a12-letras__letra--ativa:hover {
	background: var(--a12-secundaria, #4b2d22);
	color: var(--a12-on-secundaria, #fff);
}

.a12-letras__letra:focus-visible {
	outline: 3px solid var(--a12-principal, #6b4227);
	outline-offset: 2px;
}

@media (max-width: 640px) {
}

.a12-filtros__titulo {
	grid-column: 1 / -1;
	margin: 0 0 .25rem;
	font-size: 1.25rem;
	font-weight: 800;
	color: var(--a12-principal, #6b4227);
}
