/* ==========================================================================
   COMPONENTES — cada bloco corresponde a um componente documentado
   em docs/01-design-system.md, seção 6. Prefixo obrigatório: .rz-
   ========================================================================== */
/* ==========================================================================
   3. HEADER
   ========================================================================== */
.rz-appbar{
  position:sticky;top:0;z-index:60;padding-top:env(safe-area-inset-top);
  background:var(--rz-glass-bar);
  backdrop-filter:saturate(160%) blur(14px);-webkit-backdrop-filter:saturate(160%) blur(14px);
  border-bottom:1px solid transparent;transition:border-color .3s var(--rz-ease);
}
.rz-appbar.rz-scrolled{border-bottom-color:var(--rz-line)}
/* QUEM MODERA CONTINUA VENDO a barra do WordPress (a régua é a do
   wp-admin — ver `RZ_Roles::barra_admin()`), e ela é `position:fixed` no
   topo a partir de 783px. Sem este recuo o cabeçalho do site, que é
   `sticky top:0`, grudava POR BAIXO dela e sumia. Abaixo de 783px o
   WordPress torna a barra `absolute`, ela rola junto com a página, e aí
   `top:0` é o valor certo — por isso o recuo só existe no desktop. */
@media (min-width:783px){
  body.admin-bar .rz-appbar{top:32px}
  body.admin-bar .rz-ficha{top:calc(var(--rz-header-h) + 56px)}
}
body.admin-bar .rz-pnav{top:calc(var(--rz-header-h) + env(safe-area-inset-top))}
@media (min-width:783px){ body.admin-bar .rz-pnav{top:calc(var(--rz-header-h) + 32px)} }
.rz-appbar__inner{height:var(--rz-header-h);display:flex;align-items:center;gap:clamp(14px,2vw,34px);transition:height .3s var(--rz-ease)}
.rz-appbar.rz-scrolled .rz-appbar__inner{height:calc(var(--rz-header-h) - 8px)}
.rz-brand{font-family:"Playfair Display",serif;font-weight:700;font-size:clamp(1.2rem,.9rem + .7vw,1.45rem);letter-spacing:-.02em;white-space:nowrap;flex:0 0 auto}
.rz-brand span{color:var(--rz-terra);font-weight:500}

.rz-nav{display:none;align-items:center;gap:clamp(16px,1.8vw,32px);font-size:.92rem;color:var(--rz-ink-2)}
.rz-nav a{position:relative;padding:8px 0;transition:color .2s;white-space:nowrap}
.rz-nav a::after{content:"";position:absolute;left:0;right:100%;bottom:1px;height:1px;background:var(--rz-terra);transition:right .35s var(--rz-ease)}
.rz-nav a:hover,.rz-nav a[aria-current="true"]{color:var(--rz-ink)}
.rz-nav a:hover::after,.rz-nav a[aria-current="true"]::after{right:0}

.rz-appbar__act{margin-left:auto;display:flex;align-items:center;gap:8px;flex:0 0 auto}
.rz-iconbtn{width:44px;height:44px;display:grid;place-items:center;border-radius:12px;border:1px solid var(--rz-line);background:var(--rz-veil-35);color:var(--rz-ink-2);transition:background .2s,border-color .2s}
.rz-iconbtn:hover{background:var(--rz-veil-70);border-color:var(--rz-line-2)}
.rz-btn--head{display:none}
.rz-burger{width:44px;height:44px;display:grid;place-items:center;border-radius:12px;border:1px solid var(--rz-line);background:var(--rz-veil-35)}
.rz-burger span{display:block;width:18px;height:1.5px;background:var(--rz-ink);border-radius:2px;transition:transform .3s var(--rz-ease),opacity .2s}
.rz-burger span+span{margin-top:5px}
body.rz-menu-open .rz-burger span:nth-child(1){transform:translateY(6.5px) rotate(45deg)}
body.rz-menu-open .rz-burger span:nth-child(2){opacity:0}
body.rz-menu-open .rz-burger span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}

@media (min-width:768px){ .rz-nav{display:flex} .rz-burger{display:none} }
@media (min-width:1024px){ .rz-btn--head{display:inline-flex} }

/* ==========================================================================
   4. MENU EM PAINEL
   ========================================================================== */
.rz-sheet{
  position:fixed;inset:0;z-index:55;background:var(--rz-cream);
  padding:calc(var(--rz-header-h) + env(safe-area-inset-top) + 18px) 0 calc(var(--rz-tab-h) + 40px);
  transform:translateY(-10px);opacity:0;visibility:hidden;overflow-y:auto;
  transition:opacity .28s var(--rz-ease),transform .28s var(--rz-ease),visibility .28s;
}
body.rz-menu-open .rz-sheet{opacity:1;visibility:visible;transform:none}
.rz-mgroup+.rz-mgroup{margin-top:26px}
/* Ações de conta no topo do menu do celular (achado 2026-08-29: login
   enterrado no fim do menu, depois de sete itens de conteúdo). Primeiro
   botão sem o margin-top:28px genérico de `.rz-sheet .rz-btn` — o padding
   do topo do sheet já dá respiro; dobrar teria empurrado demais. A borda
   inferior separa "conta" de "navegação" sem precisar de outro título. */
.rz-mauth{display:flex;flex-direction:column;padding-bottom:24px;margin-bottom:6px;border-bottom:1px solid var(--rz-line)}
.rz-mauth .rz-btn:first-child{margin-top:0}
.rz-mgroup h4{font-family:"Inter",sans-serif;font-size:var(--rz-fs-micro);font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--rz-ink-3);margin-bottom:4px}
.rz-mi{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:13px 0;border-bottom:1px solid var(--rz-line);font-family:"Playfair Display",serif;font-size:1.4rem}
.rz-mi small{font-family:"Inter",sans-serif;font-size:.78rem;color:var(--rz-ink-3);text-align:right;max-width:50%;line-height:1.35;font-weight:300}
.rz-sheet .rz-btn{width:100%;margin-top:28px;padding:1em}

/* ==========================================================================
   5. HERO
   ========================================================================== */
.rz-hero{padding-block:clamp(28px,3.6vw,58px) clamp(8px,1.4vw,20px)}
.rz-hero__grid{display:grid;gap:clamp(26px,3.2vw,48px);align-items:center}
h1{font-size:var(--rz-fs-hero)}
h1 .rz-terra{color:var(--rz-terra)}
.rz-hero__lead{font-size:var(--rz-fs-lead);color:var(--rz-ink-2);max-width:46ch;margin:20px 0 26px;font-weight:300}
.rz-hero__cta{display:flex;flex-wrap:wrap;gap:12px}
@media (max-width:430px){ .rz-hero__cta .rz-btn{flex:1 1 100%} }
.rz-trust{margin-top:22px;font-size:var(--rz-fs-body);color:var(--rz-ink-3);display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center}
.rz-trust b{font-weight:500;color:var(--rz-ink-2)}
.rz-dot{width:3px;height:3px;border-radius:50%;background:var(--rz-gold);display:inline-block}

/* ilustrações não vivem em caixas: as bordas dissolvem no fundo */
.rz-frame{margin:0;background:none;border:0}
.rz-frame img{width:100%;height:100%;object-fit:contain}
.rz-hero__fig{margin-block:clamp(-16px,-1.6vw,-8px)}
.rz-hero__fig img{aspect-ratio:558/584;object-fit:contain}
.rz-epigraph{
  margin-top:clamp(-10px,-1vw,-4px);
  display:flex;gap:12px;align-items:flex-start;
  font-family:"Playfair Display",serif;font-size:clamp(1rem,.95rem + .35vw,1.16rem);
  line-height:1.5;color:var(--rz-ink-2);
}
.rz-epigraph i{color:var(--rz-terra);font-size:1.9em;line-height:.72;flex:0 0 auto;font-style:normal}
@media (min-width:860px){
  .rz-hero__grid{grid-template-columns:minmax(0,1.04fr) minmax(0,1fr)}
  .rz-epigraph{max-width:36ch;margin-left:auto}
}
@media (min-width:1024px){ .rz-hero__fig{margin-inline:-5% -7%} }
@media (min-width:1800px){ .rz-hero__grid{grid-template-columns:minmax(0,1fr) minmax(0,.92fr)} }

/* ==========================================================================
   6. BUSCA
   ========================================================================== */
.rz-searchcard{background:var(--rz-card-light);border:1px solid var(--rz-line);border-radius:var(--rz-r-xl);box-shadow:var(--rz-shadow-lift);padding:clamp(14px,1.4vw,20px)}
.rz-searchrow{display:grid;gap:4px}
.rz-field{display:flex;flex-direction:column;gap:2px;padding:8px 6px;min-width:0}
.rz-field label{font-size:var(--rz-fs-micro);letter-spacing:.16em;text-transform:uppercase;color:var(--rz-ink-3);font-weight:500}
/* Auditoria de UX 2026-08-29: campo obrigatório só tinha o atributo HTML
   required — sem marca visível antes da tentativa de envio (WCAG 3.3.2).
   :has() pega tanto o input direto quanto o caso da senha (input dentro de
   .rz-password, um nível a mais) sem precisar duplicar a regra nem tocar
   nenhum template — se o navegador não suportar :has(), o campo continua
   funcionando normalmente, só sem o asterisco (progressivo, ADR-004). O
   "* campos obrigatórios" que explica o símbolo fica no início de cada
   formulário, em texto — o asterisco sozinho não basta pra quem usa
   leitor de tela sem essa legenda por perto. */
/* `\00a0` (espaço não-separável) em vez de espaço comum: num consentimento
   de várias linhas o "*" descia sozinho pra última linha, parecendo um
   caractere perdido. Assim ele quebra junto com a última palavra. */
.rz-field:has(input[required],select[required],textarea[required])>label::after{content:"\00a0*";color:var(--rz-terra)}
.rz-field input,.rz-field select,.rz-field textarea{border:0;border-bottom:1px solid var(--rz-line);background:transparent;font-size:1rem;font-family:inherit;padding:4px 0;width:100%;min-width:0;resize:vertical}
.rz-field input::placeholder,.rz-field textarea::placeholder{color:var(--rz-placeholder)}
/* Checkbox e radio não são campo de texto: a régua acima (width:100% +
   border-bottom + padding) os esticava, e num `<label>` flex a caixinha
   engolia a linha inteira e empurrava o texto pra uma coluna estreita ao
   lado — o efeito de "texto desalinhado" que aparecia em todo o site
   (termos do cadastro, "continuar conectado" do login, consentimentos do
   painel). Reset explícito: tamanho fixo, sem esticar, sem borda. */
.rz-field input[type="checkbox"],.rz-field input[type="radio"]{
  width:17px;height:17px;flex:0 0 auto;min-width:0;
  margin:0;padding:0;border:0;
  accent-color:var(--rz-terra);cursor:pointer;
}
/* Refino visual 2026-08-28: tirava outline:none em qualquer foco, sobrando
   só a mudança sutil de cor da borda — indicador de foco bem mais fraco
   que o resto do site (que usa o anel de 2px de :focus-visible em
   base.css). Sem outline:none aqui, clique de mouse continua só com a
   borda (o :focus-visible do navegador normalmente não dispara nesse
   caso); Tab pelo teclado ganha a borda MAIS o anel terra, igual a
   qualquer outro elemento focável do site — antes esses eram os únicos
   campos sem anel nenhum. */
.rz-field input:focus,.rz-field select:focus,.rz-field textarea:focus{border-color:var(--rz-ink-3)}
/* Coluna, não linha. Em `row`, um consentimento que tenha texto de apoio
   embaixo virava duas colunas lado a lado — rótulo espremido à esquerda,
   ajuda à direita. O próprio <label> já cuida de pôr caixinha e texto na
   mesma linha. */
.rz-field--check{flex-direction:column;align-items:stretch}
.rz-password{display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--rz-line)}
.rz-password input{border-bottom:0!important;flex:1}
.rz-password button{font-size:var(--rz-fs-micro);color:var(--rz-terra);padding:4px 0}
.rz-form__intro{padding:14px 0}
/* Upload de imagem (foto de perfil, capa da biblioteca, imagens de
   fragmento) — refino visual 2026-08-28. Restiliza o <input type=file>
   nativo em vez de escondê-lo atrás de um <label>: menos JS, foco/teclado/
   leitor de tela continuam o comportamento nativo do navegador, e quem
   não tem suporte a ::file-selector-button só vê o input padrão do SO
   (degradação graciosa, sem quebrar). */
.rz-field input[type="file"]{
  display:block;width:100%;border:1px dashed var(--rz-line-2);border-radius:var(--rz-r-lg);
  background:var(--rz-card-light);padding:14px;margin-top:2px;
  font-size:var(--rz-fs-body);color:var(--rz-ink-2);cursor:pointer;
  transition:border-color .2s,background .2s;
}
.rz-field input[type="file"]:hover{border-color:var(--rz-terra)}
.rz-field input[type="file"]:focus-visible{outline:2px solid var(--rz-terra);outline-offset:3px}
.rz-field input[type="file"]::file-selector-button{
  font:inherit;font-weight:500;font-size:.9rem;border:0;border-radius:999px;
  padding:.6em 1.15em;margin-right:12px;
  background:var(--rz-dark);color:var(--rz-on-dark-solid);cursor:pointer;
  transition:background .2s;
}
.rz-field input[type="file"]::file-selector-button:hover{background:var(--rz-dark-hover)}

.rz-upload-atual{display:flex;align-items:center;gap:10px;margin-top:10px}
.rz-upload-atual__rotulo{font-size:var(--rz-fs-micro);letter-spacing:.1em;text-transform:uppercase;color:var(--rz-ink-3)}
.rz-upload-preview{display:block;width:min(140px,100%);aspect-ratio:1;object-fit:cover;border-radius:var(--rz-r-lg);border:1px solid var(--rz-line)}

/* Prévia depois de escolher arquivo(s) — grade (fragmento aceita até 4
   imagens; antes só a primeira aparecia). */
.rz-upload-grid{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.rz-upload-item{position:relative;width:96px}
.rz-upload-item img{display:block;width:96px;height:96px;object-fit:cover;border-radius:var(--rz-r-lg);border:1px solid var(--rz-line)}
.rz-upload-item .rz-upload-name{display:block;font-size:var(--rz-fs-micro);color:var(--rz-ink-2);margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rz-upload-limpar{margin-top:10px;font-size:var(--rz-fs-micro);color:var(--rz-terra);font-weight:500}
.rz-upload-limpar:hover{text-decoration:underline}

.rz-read__cover{display:block;margin:-2px -2px 12px;border-radius:var(--rz-r-lg);overflow:hidden;aspect-ratio:16/9;background:var(--rz-cream-2)}
.rz-read__cover img{width:100%;height:100%;object-fit:cover}
.rz-texto-capa{margin:0 0 clamp(20px,2.4vw,30px);border-radius:var(--rz-r-lg);overflow:hidden;aspect-ratio:16/9;background:var(--rz-cream-2)}
.rz-texto-capa img{width:100%;height:100%;object-fit:cover;display:block}
.rz-taxonomy-picker{border:0;padding:0;margin:0}
.rz-taxonomy-picker legend{font-size:var(--rz-fs-micro);letter-spacing:.16em;text-transform:uppercase;color:var(--rz-ink-3);font-weight:500;padding:0;margin-bottom:6px}
.rz-taxonomy-picker__search{width:100%;border:1px solid var(--rz-line);border-radius:var(--rz-r-lg);background:var(--rz-field);padding:.65em .8em;margin:3px 0 9px}
.rz-taxonomy-picker__search:focus{outline:2px solid var(--rz-terra);outline-offset:2px}
.rz-taxonomy-picker__options [data-taxonomy-option][hidden]{display:none}
/* Quantas opções estão marcadas — some quando o JS não roda (o contador é
   escrito por painel.js) pra não deixar um rótulo vazio na tela. */
.rz-taxonomy-picker__conta:empty{display:none}
.rz-taxonomy-picker__conta{font-size:var(--rz-fs-micro);color:var(--rz-terra);font-weight:500;letter-spacing:.04em}
.rz-mapa-preview{margin-top:12px;border:1px solid var(--rz-line);border-radius:var(--rz-r-lg);overflow:hidden;background:var(--rz-card-light);padding:10px}
.rz-mapa-preview iframe{display:block;width:100%;height:220px;border:0;margin-top:8px}
.rz-map-section{margin:28px 0 34px;padding:18px;border:1px solid var(--rz-line);border-radius:var(--rz-r-xl);background:var(--rz-card-light)}
.rz-map-section__head{display:flex;justify-content:space-between;align-items:end;gap:18px;margin-bottom:12px}
.rz-map-section__head h2{font-size:var(--rz-fs-h3);margin-bottom:5px}
.rz-map-section__uf{display:flex;align-items:center;gap:8px;font-size:var(--rz-fs-micro);text-transform:uppercase;letter-spacing:.12em;color:var(--rz-ink-3)}
.rz-map-section__uf select{font:inherit;text-transform:none;letter-spacing:normal;padding:6px;border:1px solid var(--rz-line-2);border-radius:var(--rz-r-lg);background:var(--rz-field);color:var(--rz-ink)}
.rz-mapa-legenda{display:flex;flex-wrap:wrap;gap:10px 16px;padding:10px 2px 0;color:var(--rz-ink-2);font-size:var(--rz-fs-micro)}
.rz-mapa-legenda span{display:inline-flex;align-items:center;gap:6px}
.rz-mapa-legenda i{width:10px;height:10px;border-radius:50%;display:inline-block}
.rz-mapa-geral-wrap{position:relative}
.rz-mapa-geral{height:420px;border-radius:var(--rz-r-lg);overflow:hidden;background:var(--rz-cream-dark)}
/* Estado vazio do mapa geral (refino visual 2026-08-28) — antes só o texto
   de status abaixo do mapa avisava "sem regiões ainda"; o mapa em si ficava
   uma área grande e muda, sem nada dizendo por quê. */
.rz-mapa-geral__vazio{
  position:absolute;inset:12px;z-index:401;display:flex;align-items:center;justify-content:center;
  text-align:center;padding:20px;border-radius:var(--rz-r-lg);
  background:var(--rz-veil-70);backdrop-filter:blur(2px);
  font-size:var(--rz-fs-body);color:var(--rz-ink-2);pointer-events:none;
}
@media(max-width:600px){.rz-map-section__head{align-items:flex-start;flex-direction:column}.rz-map-section__uf{width:100%;justify-content:space-between}.rz-map-section__uf select{flex:1}.rz-mapa-geral{height:320px}}
/* Layout de linha corrida com recuo pendurado, não flex: a caixinha fica
   na primeira linha e as linhas seguintes do texto alinham sob o texto,
   nunca sob a caixinha. Em flex o texto virava um bloco à parte — e o
   "*" de campo obrigatório, sendo `::after`, virava um item solto na
   ponta direita da linha em vez de vir logo depois do ponto final. */
/* 31px = 17 da caixinha + 10 de margem + ~4 do espaço em branco que existe
   entre <input> e o texto no HTML. Com esse valor a primeira linha e as
   seguintes começam exatamente na mesma coluna. */
.rz-field--check label{
  display:block;text-indent:-31px;padding-left:31px;
  text-transform:none;letter-spacing:normal;font-size:var(--rz-fs-body);
  color:var(--rz-ink-2);font-weight:400;line-height:1.45;cursor:pointer;
}
.rz-field--check label input[type="checkbox"],.rz-field--check label input[type="radio"]{margin-right:10px;vertical-align:-3px}

/* Formulário público (F6/F7): variação de .rz-searchcard, não componente novo. */
.rz-form__grupo{border:0;border-top:1px solid var(--rz-line);margin:0 0 6px;padding:18px 0 0}
.rz-form__grupo+.rz-form__grupo{margin-top:14px}
.rz-form__grupo legend{font-size:var(--rz-fs-micro);letter-spacing:.16em;text-transform:uppercase;color:var(--rz-ink-3);padding:0;margin-bottom:8px}
.rz-honeypot{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* Curso (F31) — cartão de vitrine, variação de .rz-pcard/.rz-searchcard, não componente novo. */
.rz-ccard-grid{display:grid;gap:var(--rz-gap);grid-template-columns:1fr;margin-top:clamp(20px,2.4vw,34px)}
@media (min-width:620px){ .rz-ccard-grid{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (min-width:1280px){ .rz-ccard-grid{grid-template-columns:repeat(3,minmax(0,1fr))} }
/* `display:flex` e não `block`: o cartão estica na grade (todos com a mesma
   altura), mas o conteúdo empilhava a partir do topo — um título de duas
   linhas empurrava o preço pra baixo e a linha de preços deixava de se
   alinhar, justo o dado que a pessoa compara. Medido antes do conserto:
   304px, 326px, 304px de topo do preço na mesma fileira. */
.rz-ccard{display:flex;flex-direction:column;background:var(--rz-card-light);border-radius:var(--rz-r-lg);padding:clamp(14px,1.4vw,20px);box-shadow:var(--rz-shadow);color:inherit;text-decoration:none}
.rz-ccard__fig{border-radius:var(--rz-r-lg);overflow:hidden;margin-bottom:10px}
.rz-ccard__fig img{width:100%;height:auto;display:block}
/* Estes componentes aparecem em dois contextos: numa LISTAGEM, onde o item é
   o segundo nível da página (`<h2>`, porque o `<h1>` é o cabeçalho dela), e
   dentro de um REGISTRO, onde já há um `<h1>` e um `<h2>` acima e o item é
   `<h3>`. Por isso a regra aceita os dois: o nível é decisão do template,
   a aparência é a mesma (2026-08-31). */
.rz-ccard h2,.rz-ccard h3{font-size:var(--rz-fs-h3)}
.rz-ccard__meta{font-size:var(--rz-fs-micro);color:var(--rz-ink-3);margin-top:4px}
/* `margin-top:auto` empurra o preço pro rodapé do cartão — é o que faz a
   linha de preços se alinhar entre cartões de título curto e longo. */
.rz-ccard__preco{font-size:var(--rz-fs-body);color:var(--rz-terra);font-weight:500;margin-top:auto;padding-top:var(--rz-e2)}

/* ADR-027 — quadro comparativo de planos (/planos/). Tabela real, não cartão: é comparação linha a linha. */
.rz-plans{width:100%;border-collapse:collapse;margin-top:clamp(20px,2.4vw,34px);background:var(--rz-card-light);border-radius:var(--rz-r-lg);overflow:hidden;box-shadow:var(--rz-shadow)}
.rz-plans th,.rz-plans td{padding:12px 16px;text-align:left;border-bottom:1px solid var(--rz-line);font-size:var(--rz-fs-body)}
.rz-plans thead th{font-family:var(--rz-font-serif);font-size:var(--rz-fs-h3);font-weight:600}
.rz-plans tbody th{font-weight:400;color:var(--rz-ink-2)}
.rz-plans td:not(:first-child),.rz-plans th:not(:first-child){text-align:center}
.rz-plans tr:last-child th,.rz-plans tr:last-child td{border-bottom:0}
.rz-plans__preco{font-family:var(--rz-font-serif);font-size:var(--rz-fs-lead);color:var(--rz-terra)}
.rz-plans__sim{color:var(--rz-mono-1)}
.rz-plans__nao{color:var(--rz-ink-3)}
@media (max-width:600px){ .rz-plans th,.rz-plans td{padding:10px} }
.rz-searchrow .rz-divider{height:1px;background:var(--rz-line)}
.rz-searchcard .rz-btn--dark{width:100%;margin-top:10px;padding:.95em}
@media (min-width:768px){
  .rz-searchrow{grid-template-columns:minmax(0,1.3fr) 1px minmax(0,1fr) auto;align-items:center;gap:clamp(12px,1.4vw,22px)}
  .rz-searchrow .rz-divider{height:40px;width:1px}
  .rz-searchcard .rz-btn--dark{width:auto;margin:0;padding:.95em 1.8em}
}
.rz-chips{display:flex;gap:8px;margin-top:14px;overflow-x:auto;scrollbar-width:none;padding:2px 6px 4px;scroll-snap-type:x proximity}
.rz-chips::-webkit-scrollbar{display:none}
@media (min-width:1024px){ .rz-chips{flex-wrap:wrap;overflow:visible} }
.rz-chip{flex:0 0 auto;scroll-snap-align:start;border:1px solid var(--rz-line-2);border-radius:999px;padding:.5em 1em;font-size:.83rem;color:var(--rz-ink-2);background:var(--rz-veil-40);transition:background .2s,border-color .2s,color .2s,transform .14s var(--rz-ease)}
.rz-chip:active{transform:scale(.95)}
.rz-chip[aria-pressed="true"],
.rz-chip[aria-current="true"]{background:var(--rz-dark);border-color:var(--rz-dark);color:var(--rz-card)}
.rz-searchmeta{margin-top:12px;padding:0 6px;font-size:var(--rz-fs-body);color:var(--rz-ink-3)}

/* ==========================================================================
   7. PERFIS
   ========================================================================== */
.rz-plist{display:grid;gap:var(--rz-gap);grid-template-columns:1fr;margin-top:clamp(20px,2.4vw,34px)}
@media (min-width:620px){ .rz-plist{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (min-width:1280px){ .rz-plist{grid-template-columns:repeat(4,minmax(0,1fr))} }
.rz-pcard{position:relative;background:var(--rz-card-light);border:0;border-radius:var(--rz-r-lg);padding:clamp(16px,1.4vw,22px);box-shadow:var(--rz-shadow);
  display:flex;flex-direction:column;gap:12px;
  transition:transform .25s var(--rz-ease),box-shadow .25s var(--rz-ease),border-color .2s}
.rz-pcard:hover{transform:translateY(-3px);box-shadow:var(--rz-shadow-lift)}
.rz-pcard.rz-hide{display:none}
.rz-pcard__top{display:flex;gap:13px;align-items:center}
.rz-avatar{flex:0 0 52px;width:52px;height:52px;border-radius:50%;display:grid;place-items:center;overflow:hidden;
  font-family:"Playfair Display",serif;font-size:1.15rem;color:var(--rz-on-dark-solid);
  box-shadow:inset 0 0 0 1px var(--rz-mono-ring),0 0 0 1px var(--rz-gold)}
.rz-avatar--foto img{width:100%;height:100%;object-fit:cover}
.rz-pcard h2,.rz-pcard h3{font-size:var(--rz-fs-h3)}
.rz-pcard__role{font-size:var(--rz-fs-body);color:var(--rz-ink-3);margin-top:3px}
.rz-pcard__where{display:flex;align-items:center;gap:7px;font-size:var(--rz-fs-body);color:var(--rz-ink-2)}
.rz-pcard p{font-size:var(--rz-fs-body);color:var(--rz-ink-2);font-weight:300;line-height:1.55}
.rz-tags{display:flex;flex-wrap:wrap;gap:6px}
.rz-tag{font-size:var(--rz-fs-micro);border:1px solid var(--rz-line);border-radius:999px;padding:.32em .8em;color:var(--rz-ink-2);background:var(--rz-veil-35)}
.rz-tag--terra{border-color:var(--rz-terra-edge);color:var(--rz-terra);background:var(--rz-terra-tint)}
.rz-pcard__foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:auto;padding-top:12px;border-top:1px solid var(--rz-line);font-size:var(--rz-fs-body);color:var(--rz-ink-3)}
.rz-pcard__foot .rz-go{color:var(--rz-terra);display:inline-flex;align-items:center;gap:7px;font-weight:500}
.rz-empty{border:1px dashed var(--rz-line-2);border-radius:var(--rz-r-lg);padding:28px;text-align:center;color:var(--rz-ink-3);font-size:var(--rz-fs-lead);grid-column:1/-1}
/* Achado da varredura de navegação desta rodada: este modificador vivia
   ANTES de `.rz-empty` no arquivo (era o único lugar do componente, perto
   de `.rz-honeypot`, sem relação temática). Com a mesma especificidade,
   `.rz-empty` (definido depois) sempre vencia border-color/color — todo
   estado de erro (`class="rz-empty rz-empty--erro"`, usado em
   page-cadastro.php, single-rz_curso.php etc.) renderizava idêntico a um
   estado vazio comum, sem nenhuma cor de alerta. Corrigido só reordenando
   — a regra em si já estava certa. */
.rz-empty--erro{border-color:var(--rz-terra-edge);color:var(--rz-terra)}

/* Mídia do fragmento. Era `style="display:flex;flex-wrap:wrap;gap:12px"` no
   template, com a imagem carregando o próprio raio de canto inline. */
.rz-fr-midia{display:flex;flex-wrap:wrap;gap:var(--rz-e3)}
.rz-fr-midia img{max-width:100%;height:auto;border-radius:var(--rz-r-lg)}

/* BARRA DE FILTRO (lote 2, 2026-08-29). Herda a casca de `.rz-searchcard`,
   que a cartografia já usava; o que este bloco faz é dar ritmo interno com a
   escala de espaço, pra busca, chips e contagem lerem como UM bloco. Antes,
   na biblioteca, o campo de busca e os chips eram dois blocos separados,
   grudados com `margin-top:-14px` no parágrafo seguinte. */
.rz-filtrobar{display:flex;flex-direction:column;gap:var(--rz-e3);margin-bottom:var(--rz-e5)}
.rz-filtrobar .rz-chips{margin-top:0;padding-left:0;padding-right:0}
.rz-chips__sep{flex:0 0 auto;width:1px;align-self:stretch;margin:4px var(--rz-e1);background:var(--rz-line-2)}
.rz-filtrobar__meta{margin:0;display:flex;flex-wrap:wrap;gap:var(--rz-e1) var(--rz-e3);align-items:baseline}
.rz-filtrobar__meta a{color:var(--rz-terra)}
.rz-filtrobar__meta a:hover{text-decoration:underline}
/* `.rz-searchrow` nasceu na cartografia, que tem exatamente dois campos, e o
   grid de 768px acima assume isso: `1.3fr 1px 1fr auto`. Uma barra de um
   campo só (biblioteca, Wiki, fórum) tem dois filhos — campo e botão —, e
   sem esta regra o botão cairia na coluna de 1px do divisor. O modificador
   diz quantos campos existem em vez de deixar a contagem implícita. */
@media (min-width:768px){
  .rz-searchrow--1{grid-template-columns:minmax(0,1fr) auto}
}

/* MAPA DE CONCEITOS do Wiki (ADR-020 item 5). Estava inteiro em `style=`
   dentro de `archive-rz_verbete.php` — inclusive `var(--rz-radius,8px)`, um
   token que não existe em `tokens.css` e portanto sempre caía nos 8px do
   fallback. Aqui usa `--rz-r-lg`, o mesmo raio das outras caixas da página. */
.rz-grafo{margin-bottom:var(--rz-e5)}
.rz-grafo__head{display:flex;align-items:center;justify-content:space-between;
  gap:var(--rz-e3);margin-bottom:var(--rz-e2)}
.rz-grafo__head .rz-eyebrow{margin:0}
.rz-grafo__card{border:1px solid var(--rz-line);border-radius:var(--rz-r-lg);padding:var(--rz-e3)}
.rz-grafo__status{margin:0 0 var(--rz-e2);padding:0}
.rz-grafo__status:empty{margin:0}
.rz-grafo__canvas{width:100%;display:block}

/* ESTADO VAZIO COM SAÍDA (2026-08-29). `.rz-empty` é uma frase solta no meio
   de uma caixa tracejada: diz que não há nada e deixa a pessoa parada. Cada
   arquivo ainda escrevia a sua ("Nenhum texto encontrado com esse termo.",
   "Nenhum verbete publicado nesta área ainda.", …). `.rz-vazio` mantém a
   mesma casca e acrescenta as duas partes que faltavam: por que pode estar
   vazio, e o que fazer agora. */
.rz-vazio{border:1px dashed var(--rz-line-2);border-radius:var(--rz-r-lg);
  padding:clamp(26px,3vw,44px);text-align:center;grid-column:1/-1;
  display:flex;flex-direction:column;align-items:center;gap:var(--rz-e3)}
.rz-vazio__t{font-family:var(--rz-font-serif);font-size:var(--rz-fs-h3);color:var(--rz-ink);
  line-height:1.25;max-width:34ch}
.rz-vazio__p{font-size:var(--rz-fs-body);color:var(--rz-ink-3);max-width:44ch;margin:0}
.rz-vazio .rz-btnrow{margin-top:var(--rz-e1);justify-content:center}
/* Contagem de tópicos no cartão de comunidade: era `style="margin:0"`. */
.rz-card__conta{margin:0;padding:0}

/* GRUPO DE RESULTADOS na busca (lote 2, 2026-08-29). A página de busca
   tinha dois rótulos soltos (`<div class="rz-eyebrow">` com
   `style="margin-bottom:14px"`) e uma lista logo abaixo, sem nada que
   dissesse onde um grupo termina e o outro começa. `.rz-grupo` dá ao
   conjunto rótulo, contagem e respiro — a mesma escala de espaço do
   resto do site. */
.rz-grupo{margin-bottom:var(--rz-e6)}
.rz-grupo:last-of-type{margin-bottom:0}
.rz-grupo__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;
  gap:var(--rz-e1) var(--rz-e3);margin-bottom:var(--rz-e3);
  padding-bottom:var(--rz-e2);border-bottom:1px solid var(--rz-line)}
.rz-grupo__head .rz-eyebrow{margin:0}
.rz-grupo__conta{margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--rz-e1) var(--rz-e2)}
.rz-grupo__conta a{color:var(--rz-terra)}
.rz-grupo__conta a:hover{text-decoration:underline}
.rz-grupo .rz-plist,.rz-grupo .rz-readlist{margin-top:0}
/* PAGINAÇÃO (2026-08-29). `paginate_links()` devolve links com a classe
   `.page-numbers`, e essa classe NUNCA teve regra em folha de estilo
   nenhuma; `.rz-morerow` era um flex centralizado sem `gap`. O resultado é
   que a paginação de 11 templates — biblioteca, cartografia, agenda, Wiki,
   cursos, aproximações, fragmentos, busca, o índice genérico e as duas
   páginas internas de coletivo — saía como "123" colado, sem estilo e sem
   alvo de toque. */
.rz-morerow{margin-top:var(--rz-e4);display:flex;flex-wrap:wrap;justify-content:center;
  align-items:center;gap:var(--rz-e2)}
.rz-morerow .page-numbers{
  display:inline-flex;align-items:center;justify-content:center;
  /* 44px é o alvo mínimo de toque; sem isto os números ficavam com a altura
     do próprio texto e eram quase impossíveis de acertar no celular. */
  min-width:44px;min-height:44px;padding:0 .7em;
  border:1px solid var(--rz-line);border-radius:var(--rz-r-pill,999px);
  font-size:var(--rz-fs-body);color:var(--rz-ink-2);
  font-variant-numeric:tabular-nums;
  transition:border-color .2s,color .2s,background .2s}
.rz-morerow .page-numbers:hover{border-color:var(--rz-ink-3);color:var(--rz-ink);background:var(--rz-veil-50)}
.rz-morerow .page-numbers.current{background:var(--rz-dark);border-color:var(--rz-dark);
  color:var(--rz-on-dark-solid);font-weight:500}
/* "Anterior"/"Próxima" são texto, não número: não precisam de largura mínima
   quadrada e ficam esquisitos com ela. */
.rz-morerow .page-numbers.prev,.rz-morerow .page-numbers.next{min-width:0;padding:0 1.1em}
.rz-morerow .page-numbers.dots{border-color:transparent;min-width:0;padding:0 .2em}
.rz-morerow .page-numbers:focus-visible{outline:2px solid var(--rz-terra);outline-offset:2px}

/* ==========================================================================
   8. SEÇÃO ESCURA
   ========================================================================== */
.rz-dark{background:var(--rz-dark);color:var(--rz-on-dark);border-radius:clamp(26px,3.4vw,52px);overflow:hidden}
.rz-about{display:grid;gap:clamp(22px,2.6vw,38px);align-items:start}
.rz-about__fig{width:clamp(150px,21vw,215px);margin-inline:auto}
.rz-about__fig img{aspect-ratio:200/256;object-fit:contain}
.rz-about h2{font-size:var(--rz-fs-h2)}
.rz-about p{font-size:var(--rz-fs-lead);line-height:1.72;font-weight:300;margin-top:16px}
.rz-about p.dim{color:var(--rz-on-dark-2)}
.rz-about__right{font-size:var(--rz-fs-lead);line-height:1.85;font-weight:300}
.rz-about__right .rz-hl{color:var(--rz-terra-lt);font-style:normal}
@media (min-width:768px){ .rz-about{grid-template-columns:auto minmax(0,1fr)} .rz-about__fig{margin:0} }
@media (min-width:1100px){
  .rz-about{grid-template-columns:auto minmax(0,1.02fr) minmax(0,1fr)}
  .rz-about__right{padding-left:clamp(24px,2.4vw,40px);border-left:1px solid var(--rz-line-dark)}
}

.rz-cards{display:grid;gap:var(--rz-gap)}
.rz-cards--main{grid-template-columns:repeat(2,minmax(0,1fr))}
.rz-cards--sub{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:var(--rz-gap)}
@media (max-width:439px){ .rz-cards--main,.rz-cards--sub{grid-template-columns:1fr} }
@media (min-width:768px){ .rz-cards--main{grid-template-columns:repeat(3,minmax(0,1fr))} }
@media (min-width:1024px){
  .rz-cards--main{grid-template-columns:repeat(5,minmax(0,1fr))}
  .rz-cards--sub{grid-template-columns:repeat(4,minmax(0,1fr))}
}
.rz-card{background:var(--rz-card);color:var(--rz-ink);border-radius:var(--rz-r-lg);padding:clamp(13px,1.1vw,18px);
  display:flex;flex-direction:column;gap:12px;box-shadow:var(--rz-shadow);position:relative;
  transition:transform .25s var(--rz-ease),box-shadow .25s var(--rz-ease)}
.rz-card:hover{transform:translateY(-4px);box-shadow:var(--rz-shadow-lift)}
.rz-card:active{transform:scale(.985)}
.rz-card__fig{border:0;background:none}
.rz-card__fig img{aspect-ratio:16/10;object-fit:contain}
.rz-card__body{display:flex;flex-direction:column;gap:7px;flex:1}
.rz-card h2,.rz-card h3{font-size:var(--rz-fs-h3)}
.rz-card p{font-size:var(--rz-fs-body);line-height:1.55;color:var(--rz-ink-3)}
.rz-card__go{display:flex;justify-content:flex-end;color:var(--rz-ink-2);transition:transform .25s var(--rz-ease)}
.rz-card:hover .rz-card__go{transform:translateX(4px)}
.rz-cards--sub .rz-card{flex-direction:row;align-items:center;gap:14px;padding-bottom:clamp(30px,2.6vw,38px)}
.rz-cards--sub .rz-card__fig{flex:0 0 clamp(66px,6vw,88px)}
.rz-cards--sub .rz-card__fig img{aspect-ratio:1;object-fit:contain}
.rz-cards--sub .rz-card__go{position:absolute;right:14px;bottom:12px}

.rz-banner{margin-top:calc(var(--rz-gap)*1.4);border-radius:var(--rz-r-xl);overflow:hidden;position:relative;
  background:var(--rz-dark-panel);border:1px solid var(--rz-line-dark);
  display:grid;gap:18px;align-items:center;padding:clamp(22px,2.6vw,38px)}
.rz-banner__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.85}
.rz-banner__fade{position:absolute;inset:0;background:linear-gradient(90deg,var(--rz-dark-panel) 10%,var(--rz-panel-veil-50) 45%,var(--rz-panel-veil-78) 80%,var(--rz-dark-panel))}
.rz-banner p{position:relative;font-family:"Playfair Display",serif;font-size:clamp(1.35rem,1rem + 1.5vw,1.95rem);line-height:1.28}
.rz-banner .rz-terra{color:var(--rz-terra-lt)}
.rz-banner a{position:relative;display:inline-flex;align-items:center;gap:10px;font-size:var(--rz-fs-lead);color:var(--rz-on-dark-2)}
.rz-banner a:hover{color:var(--rz-on-dark)}
@media (min-width:860px){ .rz-banner{grid-template-columns:minmax(0,1fr) auto} }

/* ==========================================================================
   9. AGENDA
   ========================================================================== */
.rz-agenda{border-top:1px solid var(--rz-line)}
.rz-ev{display:grid;gap:10px;padding:clamp(18px,1.8vw,26px) 0;border-bottom:1px solid var(--rz-line);transition:background .2s}
.rz-ev:hover{background:var(--rz-veil-35)}
.rz-evdate{display:flex;align-items:baseline;gap:8px;color:var(--rz-terra)}
.rz-evdate b{font-family:"Playfair Display",serif;font-size:1.7rem;font-weight:600;line-height:1}
.rz-evdate em{font-style:normal;font-size:var(--rz-fs-micro);letter-spacing:.18em;text-transform:uppercase}
.rz-ev h2,.rz-ev h3{font-size:clamp(1.12rem,1rem + .5vw,1.42rem)}
.rz-ev__m{font-size:var(--rz-fs-body);color:var(--rz-ink-3)}
/* FOLDER DO EVENTO (2026-08-31). A arte de divulgação que quem propõe já
   tem pronta. Nunca cortada, nem na miniatura nem na página: cartaz existe
   pra ser lido, e `cover` cortaria justamente o texto que ele carrega. */
.rz-ev--folder{grid-template-columns:88px minmax(0,1fr);grid-template-rows:auto auto auto;column-gap:16px;align-items:start}
.rz-ev--folder .rz-ev__folder{grid-row:1 / span 3}
.rz-ev--folder .rz-evdate,.rz-ev--folder h2,.rz-ev--folder .rz-ev__m{grid-column:2}
.rz-ev__folder{display:block;border-radius:var(--rz-r-lg);overflow:hidden;background:var(--rz-veil-35)}
.rz-ev__folder img{display:block;width:100%;height:auto;aspect-ratio:3/4;object-fit:contain}
@media (max-width:559px){ .rz-ev--folder{grid-template-columns:64px minmax(0,1fr);column-gap:12px} }

/* Na página do evento o folder abre a coluna de leitura. Teto de altura pra
   que um cartaz em formato story não empurre a descrição inteira pra baixo
   da dobra. */
.rz-folder{margin:0 0 var(--rz-e5);max-width:var(--rz-measure)}
.rz-folder img{display:block;width:100%;height:auto;max-height:70vh;object-fit:contain;border-radius:var(--rz-r-lg);background:var(--rz-veil-35)}
@media (min-width:768px){
  .rz-ev{grid-template-columns:120px minmax(0,1fr) auto;align-items:center;gap:clamp(18px,2vw,34px)}
  .rz-evdate{flex-direction:column;gap:4px;align-items:flex-start}
  .rz-ev__m{text-align:right}

  /* Com folder, a linha ganha uma quarta coluna à esquerda em vez de virar
     outro desenho: data, título e "onde" ficam onde já estavam, e a arte
     entra antes deles. Este bloco vem DEPOIS do `.rz-ev` acima de
     propósito — mesma especificidade, quem vem depois vence, e foi assim
     que dois defeitos de cascata apareceram neste projeto. */
  .rz-ev--folder{grid-template-columns:96px 120px minmax(0,1fr) auto;align-items:center}
  .rz-ev--folder .rz-ev__folder{grid-row:auto}
  .rz-ev--folder .rz-evdate,.rz-ev--folder h2,.rz-ev--folder .rz-ev__m{grid-column:auto}
}

/* ==========================================================================
   10. PASSOS E BIBLIOTECA
   ========================================================================== */
.rz-steplist{display:grid;gap:var(--rz-gap);grid-template-columns:1fr}
@media (min-width:620px){ .rz-steplist{grid-template-columns:repeat(3,minmax(0,1fr))} }
.rz-step{background:var(--rz-card-light);border:0;border-radius:var(--rz-r-lg);padding:clamp(18px,1.7vw,26px);box-shadow:var(--rz-shadow)}
.rz-step__n{font-family:"Playfair Display",serif;font-size:var(--rz-fs-micro);letter-spacing:.16em;color:var(--rz-terra);display:block;margin-bottom:10px}
.rz-step h3{font-size:var(--rz-fs-h3);margin-bottom:8px}
.rz-step p{font-size:var(--rz-fs-body);color:var(--rz-ink-2);font-weight:300;line-height:1.6}
.rz-stepnote{margin-top:20px;font-size:var(--rz-fs-body);color:var(--rz-ink-3);display:flex;gap:10px;align-items:flex-start;max-width:var(--rz-measure)}

.rz-readlist{border-top:1px solid var(--rz-line)}
.rz-read{display:grid;gap:6px;padding:clamp(15px,1.6vw,22px) 0;border-bottom:1px solid var(--rz-line);transition:background .2s}
.rz-read:hover{background:var(--rz-veil-35)}
.rz-read__k{font-size:var(--rz-fs-micro);letter-spacing:.18em;text-transform:uppercase;color:var(--rz-terra)}
.rz-read h2,.rz-read h3{font-size:clamp(1.08rem,1rem + .45vw,1.34rem);line-height:1.3}
.rz-read__m{font-size:var(--rz-fs-body);color:var(--rz-ink-3)}

/* ESCOLHA DE ENTRADA do /cadastro/ (2026-08-30). Substitui
   `.rz-onboarding-options`, que eram três cartões elevados com um ladrilho
   de ícone à esquerda — pessoa, duas pessoas, balão de fala. Os ícones não
   diziam nada que o título já não dissesse, e o conjunto (ladrilho
   arredondado + cartão + grade de três) é o desenho de onboarding que todo
   produto tem igual.

   Não é componente novo: é `.rz-read`, a lista de índice que a biblioteca,
   o Wiki, as aproximações e a busca já usam, com uma descrição embaixo do
   título e a seta que a linha ganha por ser clicável. Removida, a regra
   antiga levou junto 10 linhas e um ícone que só existia ali. */
.rz-escolha{grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:var(--rz-e3)}
/* No celular o texto ocupa a linha inteira e a seta sobe pra linha do
   rótulo: embaixo ela ficava solta no canto, e escondê-la deixaria a
   linha sem nenhum sinal de que é tocável. */
.rz-escolha__t{grid-column:1/-1;display:grid;gap:5px;min-width:0}
.rz-escolha__t span{font-size:var(--rz-fs-body);color:var(--rz-ink-2);font-weight:300;line-height:1.55}
.rz-escolha .rz-card__go{grid-row:1;grid-column:2;color:var(--rz-terra);transform:none;
  transition:transform .2s var(--rz-ease)}
.rz-escolha:hover .rz-card__go{transform:translateX(4px)}
@media (min-width:768px){
  .rz-read{grid-template-columns:120px minmax(0,1fr) auto;align-items:baseline;gap:clamp(18px,2vw,34px)}
  .rz-read__k{padding-top:4px}
}
/* DEPOIS do bloco de `.rz-read` acima, de propósito: as duas regras têm a
   mesma especificidade, e a que vem por último vence. Antes daquele bloco,
   `.rz-escolha` perdia as três colunas pro `120px` dele, e o rótulo
   "PARA ACOMPANHAR" quebrava em duas linhas.
   `max-content` em vez de largura fixa: o rótulo mais longo decide a
   coluna. O espaçamento de letra do versalete ocupa bem mais do que o
   texto sugere, e chutar um número aqui é errar de novo quando a palavra
   mudar. */
@media (min-width:768px){
  .rz-escolha{grid-template-columns:minmax(120px,max-content) minmax(0,1fr) auto;
    align-items:center;column-gap:clamp(18px,2vw,34px)}
  .rz-escolha__t{grid-column:auto}
  .rz-escolha .rz-card__go{grid-row:auto;grid-column:auto}
}

/* ==========================================================================
   11. RODAPÉ E ABAS
   ========================================================================== */
.rz-foot{border-top:1px solid var(--rz-line);padding-block:clamp(30px,3.4vw,52px) calc(30px + var(--rz-tab-h) + env(safe-area-inset-bottom))}
@media (min-width:768px){ .rz-foot{padding-bottom:clamp(30px,3.4vw,52px)} }
.rz-foot__grid{display:grid;gap:clamp(24px,2.6vw,40px)}
@media (min-width:560px){ .rz-foot__grid{grid-template-columns:repeat(3,minmax(0,1fr))} }
@media (min-width:900px){ .rz-foot__grid{grid-template-columns:minmax(0,1.7fr) repeat(3,minmax(0,1fr))} }
.rz-foot small{display:block;color:var(--rz-ink-3);font-size:var(--rz-fs-body);margin-top:8px;max-width:36ch}
.rz-foot h4{font-family:"Inter",sans-serif;font-size:var(--rz-fs-micro);letter-spacing:.18em;text-transform:uppercase;color:var(--rz-ink-3);font-weight:500;margin-bottom:12px}
.rz-foot ul{list-style:none;margin:0;padding:0;display:grid;gap:9px;font-size:.92rem;color:var(--rz-ink-2)}
.rz-foot ul a:hover{color:var(--rz-terra)}
.rz-foot__social{display:flex;gap:8px;margin-top:18px}
.rz-foot__social a{width:40px;height:40px;display:grid;place-items:center;border-radius:11px;border:1px solid var(--rz-line);color:var(--rz-ink-2);transition:background .2s,color .2s,border-color .2s}
.rz-foot__social a:hover{background:var(--rz-dark);color:var(--rz-cream);border-color:var(--rz-dark)}
.rz-foot__bar{margin-top:clamp(24px,2.6vw,38px);padding-top:18px;border-top:1px solid var(--rz-line);display:flex;flex-wrap:wrap;gap:8px 22px;font-size:var(--rz-fs-body);color:var(--rz-ink-3)}

.rz-tabs{position:fixed;left:0;right:0;bottom:0;z-index:60;
  height:calc(var(--rz-tab-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);
  display:grid;grid-template-columns:repeat(5,1fr);
  background:var(--rz-glass-tabs);backdrop-filter:saturate(160%) blur(16px);-webkit-backdrop-filter:saturate(160%) blur(16px);
  border-top:1px solid var(--rz-line)}
.rz-tabs a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:.66rem;color:var(--rz-ink-3);transition:color .2s}
.rz-tabs a svg{width:21px;height:21px;transition:transform .25s var(--rz-ease)}
.rz-tabs a:active svg{transform:scale(.88)}
.rz-tabs a[aria-current="true"]{color:var(--rz-terra);font-weight:500}
@media (min-width:768px){ .rz-tabs{display:none} }

/* ==========================================================================
   7.1 PERFIL — arranjo "Caderno de campo" (ADR-029/030)
   Ficha lateral fixa (filete dourado, sticky) + coluna de leitura.
   Abaixo de 940px vira coluna única: filete vira régua acima/abaixo da
   ficha, foto e nome centralizados — ver auditoria §1.1.
   ========================================================================== */
.rz-campo{display:grid;gap:clamp(28px,3vw,44px);align-items:start;padding-block:clamp(8px,1vw,16px)}
@media (min-width:940px){
  /* Três áreas nomeadas em vez de duas colunas implícitas: o índice virou
     IRMÃO da ficha (2026-08-31) pra poder ir pra outro lugar no celular, e
     áreas nomeadas o devolvem exatamente onde ele já estava aqui — embaixo
     da ficha, na coluna lateral. `row-gap:0` porque o espaço entre ficha e
     índice é do próprio `.rz-pnav`, que traz o filete de junção. */
  .rz-campo{grid-template-columns:minmax(260px,300px) minmax(0,1fr);
    grid-template-areas:"ficha coluna" "pnav coluna" ".  coluna";
    grid-template-rows:auto auto 1fr;
    column-gap:clamp(28px,3vw,44px);row-gap:0;align-content:start}
  .rz-ficha{grid-area:ficha}
  .rz-pnav{grid-area:pnav}
  .rz-coluna{grid-area:coluna}
}
@media (max-width:939px){ .rz-campo{gap:var(--rz-e5)} }

.rz-ficha{
  border-left:4px solid var(--rz-gold);
  padding:clamp(20px,2.2vw,28px) 0 clamp(20px,2.2vw,28px) clamp(16px,1.8vw,24px);
  display:flex;flex-direction:column;gap:18px;
  background-color:var(--rz-card-light);background-image:var(--rz-ficha-gradient),var(--rz-paper-grain);
  box-shadow:var(--rz-ficha-shadow);transition:box-shadow .3s var(--rz-ease);
}
.rz-ficha:hover{box-shadow:var(--rz-ficha-shadow-hover)}
@media (max-width:939px){
  /* Auditoria §1.1: "o filete lateral vira régua acima e abaixo da
     ficha" — o filete MUDA DE ORIENTAÇÃO, não de cor: continua dourado.
     Mobile: card compacto com fundo e bordas arredondadas. */
  .rz-ficha{border-left:0;border-top:2px solid var(--rz-gold);border-bottom:2px solid var(--rz-gold);padding:clamp(22px,5vw,30px);border-radius:var(--rz-r-lg);box-shadow:var(--rz-shadow);background-color:var(--rz-card-light);background-image:var(--rz-ficha-gradient),var(--rz-paper-grain)}
}
@media (min-width:940px){
  .rz-ficha{position:sticky;top:calc(var(--rz-header-h) + 24px)}
  .rz-pnav__so-mobile{display:none}
}

.rz-ficha__topo{display:flex;flex-direction:column;align-items:flex-start;gap:12px}
@media (max-width:939px){ .rz-ficha__topo{flex-direction:row;align-items:center;gap:16px} }
@media (max-width:939px){ .rz-ficha__topo > div{min-width:0} }
.rz-ficha .rz-avatar{width:88px;height:88px;flex:0 0 88px;font-size:1.7rem}
@media (min-width:940px){ .rz-ficha .rz-avatar{width:88px;height:88px;flex:0 0 88px;font-size:1.7rem} }
@media (max-width:939px){ .rz-ficha .rz-avatar{width:72px;height:72px;flex:0 0 72px;font-size:1.4rem} }
.rz-ficha__nome{font-size:var(--rz-fs-nome);letter-spacing:-.01em;line-height:1.2}
.rz-ficha__papel{font-size:var(--rz-fs-body);color:var(--rz-ink-3);margin-top:4px;display:flex;align-items:center;gap:6px}
.rz-ficha__papel::before{content:"";width:4px;height:4px;border-radius:50%;background:var(--rz-terra);flex-shrink:0}

.rz-ficha__dl{display:grid;gap:10px;font-size:var(--rz-fs-body);width:100%}
.rz-ficha__dl dt{font-size:var(--rz-fs-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--rz-ink-3);margin-bottom:2px}
.rz-ficha__dl dd{margin:0;color:var(--rz-ink-2)}
/* Auditoria §1.1: "a lista de definição permanece alinhada à esquerda" —
   no mobile card, o dl já está dentro do padding, sem herdar center. */
@media (max-width:939px){ .rz-ficha__dl{text-align:left} }

.rz-ficha__identidade-rotulo{font-size:var(--rz-fs-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--rz-ink-3);margin:14px 0 5px}

.rz-ficha__marco{display:flex;align-items:center;gap:8px;color:var(--rz-gold);font-size:var(--rz-fs-body)}
.rz-ficha__marco svg{flex:0 0 auto}

.rz-ficha__identidade{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}
.rz-ficha__identidade li{position:relative;padding-left:16px;color:var(--rz-sage);font-size:var(--rz-fs-body)}
.rz-ficha__identidade li::before{content:"";position:absolute;left:2px;top:.55em;width:5px;height:5px;border-radius:50%;background:var(--rz-sage)}

.rz-ficha .rz-btn{width:100%}
.rz-ficha .rz-btn--dark{position:relative;overflow:hidden}
.rz-ficha .rz-btn--dark::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.08),transparent);transform:translateX(-100%);transition:transform .5s var(--rz-ease)}
.rz-ficha .rz-btn--dark:hover::after{transform:translateX(100%)}

.rz-coluna{display:flex;flex-direction:column;gap:clamp(30px,3.2vw,46px);min-width:0}
/* Separadores sutis entre seções maiores da coluna de leitura — só em
   <section> (histórico, sede, contato, integrantes), não em <div>
   (abordagens, quem atende) pra não sobrecarregar.
   Primeira <section> não ganha border-top: a frase/lead já tem border-bottom. */
.rz-coluna > section{padding-top:clamp(24px,2.8vw,40px);border-top:1px solid var(--rz-line)}
.rz-coluna > section:first-child{border-top:0;padding-top:0}
/* Auditoria §1 (coletivo): a coluna abre em "epígrafe" — mesma linguagem
   serifada/itálica do .rz-epigraph da home, sem a margem negativa dele
   (ajustada pra sentar sob o hero, não faz sentido aqui).
   Frase de prática: voz da pessoa em primeira pessoa, merece mais presença
   que o lead genérico — tamanho --rz-fs-frase, cor --rz-ink (não ink-2). */
.rz-coluna__lead{font-family:var(--rz-font-serif);font-style:italic;font-size:var(--rz-fs-frase);color:var(--rz-ink);font-weight:400;line-height:1.5;padding-bottom:clamp(18px,2vw,28px);border-bottom:1px solid var(--rz-line);position:relative;padding-left:clamp(20px,2vw,32px)}
.rz-coluna__lead::before{content:"\201C";position:absolute;left:0;top:-.15em;font-size:2.5em;line-height:1;color:var(--rz-terra);opacity:.35;font-style:normal}
.rz-coluna__aviso{font-size:var(--rz-fs-micro);color:var(--rz-ink-3);letter-spacing:.02em}

/* "Quem atende" — públicos e populações lado a lado, nunca colapsados
   (auditoria §3.4: são dados diferentes). Mockup aprovado confirma duas
   colunas de .rz-tag, legenda comum abaixo das duas. */
.rz-quematende{display:grid;gap:22px;grid-template-columns:1fr}
/* Colunas do tamanho do conteúdo, não 1fr 1fr: com "Públicos" trazendo dois
   chips curtos e "Populações" três longos, meia largura fixa pra cada uma
   jogava o segundo grupo pro outro lado da tela, com um rio de vazio no meio
   (achado revendo a página no computador, 2026-08-29). Continuam DUAS colunas
   lado a lado — a exigência da ADR-029 §3.4 é não colapsar num bloco só, e
   isso segue valendo. */
@media (min-width:480px){
  .rz-quematende{grid-template-columns:repeat(2,minmax(0,max-content));
    justify-content:start;column-gap:clamp(28px,4vw,64px)}
}
.rz-quematende h3{font-size:var(--rz-fs-micro);letter-spacing:.16em;text-transform:uppercase;color:var(--rz-ink-3);font-weight:500;margin-bottom:10px}

/* ==========================================================================
   PERFIL — redesenho de 2026-08-29 (proposta aprovada)
   ========================================================================== */

/* `.rz-entry` — texto longo. A classe já era usada em 12 lugares de 11
   templates (perfil, texto, curso, evento, verbete, tópico, aproximação,
   fragmento, páginas institucionais) e NUNCA teve CSS: com `p{margin:0}` no
   reset de base.css, todo parágrafo de todo texto do site colava no
   seguinte. Era a causa isolada mais forte da página parecer crua. */
.rz-entry{font-size:var(--rz-fs-lead);line-height:1.75;color:var(--rz-ink-2);font-weight:300}
.rz-entry > * + *{margin-top:1.15em}
.rz-entry > *:first-child{margin-top:0}
.rz-entry p{max-width:var(--rz-measure)}
.rz-entry h2,.rz-entry h3,.rz-entry h4{color:var(--rz-ink);font-weight:600;line-height:1.25}
/* h2 a `--rz-fs-h3` cru ficava a ~1px do corpo (que aqui é `--rz-fs-lead`) e
   lia como negrito, não como título. O degrau precisa ser visível. */
.rz-entry h2{font-size:calc(var(--rz-fs-h3) * 1.2);margin-top:1.9em}
.rz-entry h3{font-size:var(--rz-fs-h3);margin-top:1.7em}
.rz-entry ol{padding-left:1.25em;max-width:var(--rz-measure);list-style:decimal}
.rz-entry ul{list-style:none;padding-left:0;max-width:var(--rz-measure)}
.rz-entry li + li{margin-top:.45em}
.rz-entry ul > li{position:relative;padding-left:1.15em}
.rz-entry ul > li::before{content:"";position:absolute;left:.15em;top:.72em;width:5px;height:5px;border-radius:50%;background:var(--rz-terra);opacity:.5}
.rz-entry a{color:var(--rz-terra);text-decoration:underline;text-underline-offset:.18em;text-decoration-thickness:1px}
.rz-entry a:hover{text-decoration-thickness:2px}
.rz-entry strong{font-weight:600;color:var(--rz-ink)}
.rz-entry blockquote{margin-left:0;padding-left:clamp(14px,1.5vw,22px);border-left:2px solid var(--rz-terra-edge);font-family:var(--rz-font-serif);font-style:italic;color:var(--rz-ink)}
.rz-entry hr{border:0;border-top:1px solid var(--rz-line);margin-block:2em}
.rz-entry img{border-radius:var(--rz-r-lg)}

/* Cabeçalho de identidade. Antes o nome só existia dentro da ficha lateral e
   a página abria com a citação flutuando: no computador não havia onde o
   olho pousasse. O bloco de identidade sobe pra cá e SAI da ficha — nada é
   duplicado, e a ficha encolhe por isso. */
.rz-phead{display:grid;gap:clamp(16px,2vw,26px);padding-bottom:clamp(20px,2.4vw,32px);
  border-bottom:1px solid var(--rz-line);margin-bottom:clamp(22px,2.6vw,34px)}
@media (min-width:820px){ .rz-phead{grid-template-columns:minmax(0,1fr) auto;align-items:end} }
.rz-phead__id{display:flex;align-items:center;gap:clamp(14px,1.6vw,22px);min-width:0}
/* No celular o bloco de texto tem três linhas (nome, papel, onde) e o
   avatar centralizado contra ele flutuava na altura da segunda — a foto
   soltava do nome, que é justamente o par que identifica a pessoa. Alinha
   pelo topo, e o avatar encosta na linha do nome. */
@media (max-width:559px){ .rz-phead__id{align-items:flex-start} }
.rz-phead .rz-avatar{width:clamp(64px,7vw,92px);height:clamp(64px,7vw,92px);flex:0 0 auto;
  font-size:clamp(1.3rem,1.1rem + .8vw,1.9rem);box-shadow:0 0 0 1px var(--rz-line),0 6px 18px rgba(0,0,0,.06)}
.rz-phead h1{font-size:clamp(1.7rem,1.3rem + 1.7vw,2.6rem);line-height:1.08;letter-spacing:-.02em}
.rz-phead__papel{margin-top:7px;font-size:var(--rz-fs-lead);color:var(--rz-ink-2);font-weight:300}
.rz-phead__onde{margin-top:9px;display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;
  font-size:var(--rz-fs-body);color:var(--rz-ink-3)}
.rz-phead__onde span{display:inline-flex;align-items:center;gap:6px}
.rz-phead__onde svg{color:var(--rz-terra);flex:0 0 auto}
.rz-phead__acao{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
/* No celular a ação principal ocupa a linha inteira: é a única coisa que a
   página quer que aconteça, e um botão de largura de texto no meio de uma
   tela estreita não parece o destino, parece mais um link. Compartilhar
   continua secundário, do tamanho do que diz. */
@media (max-width:559px){
  .rz-phead__acao{gap:12px}
  .rz-phead__acao > .rz-btn--dark{flex:1 0 100%;justify-content:center;text-align:center}
}

/* LOTE 3 (2026-08-29) — `.rz-phead` deixa de ser só do perfil. As outras
   seis páginas de registro abriam cada uma do seu jeito: eyebrow e h1
   soltos na coluna, a autoria numa `.rz-searchmeta` com `margin-top:6px`
   inline, e nenhuma tinha compartilhar. `template-parts/phead.php` leva a
   mesma anatomia pra todas; estas regras são o que a anatomia precisa
   além do que o perfil já usava. */
.rz-phead__texto{min-width:0}
.rz-phead__texto .rz-eyebrow{margin-bottom:var(--rz-e2)}
/* Selo de data no lugar do avatar, pra curso e evento. Mesmo desenho do
   `.rz-ficha__badge`, um degrau maior — aqui ele é a marca de identidade
   da página, não um item de ficha. */
.rz-phead__selo{width:clamp(58px,6vw,74px);height:clamp(58px,6vw,74px);border-radius:18px;
  flex:0 0 auto;background:var(--rz-dark);color:var(--rz-on-dark-solid);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  font-family:var(--rz-font-serif);box-shadow:0 6px 18px rgba(0,0,0,.06)}
.rz-phead__selo b{font-size:clamp(1.25rem,1.1rem + .5vw,1.6rem);line-height:1;font-weight:600}
.rz-phead__selo span{font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;opacity:.8}
.rz-phead__papel a{color:inherit;text-decoration:underline;text-decoration-color:var(--rz-line-2);
  text-underline-offset:3px}
.rz-phead__papel a:hover{text-decoration-color:var(--rz-terra);color:var(--rz-terra)}
.rz-phead__ponto{color:var(--rz-ink-3);margin:0 .15em}
.rz-phead__papel{display:flex;flex-wrap:wrap;align-items:center;gap:0 .35em}
.rz-avatar.rz-phead__mini{width:30px;height:30px;font-size:.78rem;flex:0 0 auto;margin-right:.3em}

/* RESPOSTA do fórum e da aproximação (lote 3, 2026-08-29). Os dois
   callbacks de comentário eram idênticos e estavam inteiros em `style=` —
   inclusive `border-bottom:1px solid var(--rz-line)` repetido em dois
   arquivos, o que significava que qualquer ajuste tinha que ser feito duas
   vezes e num lugar onde ninguém procura CSS. `.rz-resposta` já era a
   classe que os dois punham no `<li>`; só não tinha regra nenhuma. */
.rz-respostas{list-style:none;margin:0;padding:0}
.rz-resposta{padding:var(--rz-e3) 0;border-bottom:1px solid var(--rz-line)}
.rz-resposta:last-child{border-bottom:0}
.rz-resposta__linha{display:flex;gap:var(--rz-e2);align-items:flex-start}
.rz-avatar.rz-resposta__avatar{flex:0 0 34px;width:34px;height:34px;font-size:.85rem;
  background:var(--rz-mono-2)}
.rz-resposta__corpo{flex:1;min-width:0}
.rz-resposta__quem{margin:0 0 var(--rz-e1);padding:0}
.rz-resposta__quem strong{color:var(--rz-ink)}
/* Texto e verbete são prosa: o cabeçalho fica na largura de leitura, senão
   a primeira linha do corpo começaria depois de um cabeçalho três vezes
   mais largo que ela. Mesmas partes, mesma ordem, mesmo fio — outra caixa. */
.rz-phead--coluna{max-width:var(--rz-measure);margin-inline:auto}
.rz-phead--coluna .rz-phead__papel{font-size:var(--rz-fs-body);color:var(--rz-ink-3)}
/* Na variante de coluna as ações caem numa linha própria (grid de uma
   coluna só). Alinhadas à direita elas fecham o cabeçalho em vez de
   ficarem penduradas embaixo do nome de quem assina — e num texto,
   compartilhar é utilidade, não chamada. */
.rz-phead--coluna{gap:var(--rz-e3)}
.rz-phead--coluna .rz-phead__acao{justify-content:flex-end}
@media (min-width:820px){
  .rz-phead--coluna{grid-template-columns:minmax(0,1fr);align-items:start}
}

/* A citação era o primeiro elemento da página; vira acento sob o cabeçalho.
   Sem a aspa decorativa gigante que a `.rz-coluna__lead` carregava. */
.rz-pquote{font-family:var(--rz-font-serif);font-style:italic;
  font-size:clamp(1.15rem,1rem + .8vw,1.6rem);line-height:1.45;color:var(--rz-ink);
  max-width:34ch;margin:0 0 clamp(22px,2.8vw,36px)}
@media (min-width:820px){ .rz-pquote{max-width:46ch} }

/* Uma escala só de título dentro da coluna. `rz_sechead()` é a escala de
   seção da HOME (até 43px) e estava sendo usada em subseção de perfil, ao
   lado de irmãs a 20px — e acima do nome da própria pessoa, que saía a 32px.
   Título de seção interna não pode gritar mais alto que quem a página
   apresenta. O filete devolve o corte que o tamanho grande dava. */
.rz-coluna .rz-sechead h1,.rz-coluna .rz-sechead h2{font-size:var(--rz-fs-h3)}
.rz-coluna .rz-sechead{gap:10px;margin-bottom:clamp(16px,1.8vw,24px)}
.rz-coluna .rz-sechead > div{display:flex;align-items:baseline;gap:12px}
.rz-coluna .rz-sechead > div::after{content:"";flex:1 1 auto;height:1px;background:var(--rz-line)}
.rz-stitle{display:flex;align-items:baseline;gap:12px;margin-bottom:clamp(14px,1.6vw,20px)}
.rz-stitle > *{margin:0;flex:0 0 auto}
.rz-stitle::after{content:"";flex:1 1 auto;height:1px;background:var(--rz-line)}

/* Abordagem é a identidade clínica de quem está ali — é o que alguém
   procurando atendimento de fato compara. Ganha peso; público, população e
   idioma seguem discretos. Doze chips idênticos na mesma tela não diziam
   nada ao olho. */
.rz-tag--forte{background:var(--rz-terra-tint);border-color:var(--rz-terra-edge);
  color:var(--rz-terra);font-weight:500;font-size:var(--rz-fs-body);padding:.42em 1em}

/* Índice da página. A ficha é sticky mas mede ~900px contra ~2100px de
   coluna: da metade da página em diante sobrava um terço da tela em creme
   vazio. Ocupa esse vazio com algo útil e torna navegável o perfil longo,
   que é justamente o perfil bem preenchido. */
.rz-pnav{margin-top:clamp(18px,2vw,26px);padding-top:clamp(16px,1.8vw,22px);border-top:1px solid var(--rz-line)}
.rz-pnav__t{font-size:var(--rz-fs-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--rz-ink-3);margin-bottom:10px}
.rz-pnav ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.rz-pnav a{display:block;padding:7px 0 7px 14px;font-size:var(--rz-fs-body);color:var(--rz-ink-2);
  border-left:2px solid var(--rz-line);transition:border-color .2s,color .2s}
.rz-pnav a:hover{color:var(--rz-terra);border-left-color:var(--rz-terra)}
/* Seção em que a leitura está agora. Marcada por `assets/js/app.js`; sem
   ele os atalhos continuam navegando, só não se destacam (ADR-004). */
.rz-pnav a[aria-current="true"]{color:var(--rz-terra);border-left-color:var(--rz-terra);font-weight:500}

@media (max-width:939px){
  /* No CELULAR o índice deixa de ser uma coluna que não existe e vira a
     barra de atalhos que o dedo alcança: grudada logo abaixo do cabeçalho
     do site, rolando na horizontal, sempre à mão. É o equivalente móvel da
     ficha fixa do desktop — mesma função (saber onde se está e ir direto
     ao ponto), forma diferente. Antes disto aqui dizia `display:none`.

     Sangra até a borda da tela com margem negativa do gutter: barra de
     atalhos que para antes da borda parece um card solto, não uma barra. */
  .rz-pnav{position:sticky;top:calc(var(--rz-header-h) + env(safe-area-inset-top));z-index:40;
    margin:0 calc(var(--rz-gutter) * -1);padding:0 var(--rz-gutter);
    border-top:0;border-bottom:1px solid var(--rz-line);
    /* Fundo OPACO, não o vidro do cabeçalho: esta barra encosta embaixo da
       appbar, e duas camadas translúcidas empilhadas deixam o texto da
       página passando por trás dos atalhos — vira sujeira, não
       profundidade. */
    background:var(--rz-cream)}
  /* Desvanece a borda direita quando ainda há atalho fora da vista: sem
     isso a fileira parece terminar onde a tela termina, e ninguém arrasta
     o que não sabe que existe. */
  .rz-pnav ul{mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent);
    -webkit-mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent)}
  /* "Nesta página" é rótulo de coluna; numa barra ele só rouba a largura
     que os atalhos precisam. Some da vista, fica pro leitor de tela. */
  .rz-pnav__t{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
  .rz-pnav ul{flex-direction:row;gap:8px;overflow-x:auto;overscroll-behavior-x:contain;
    padding:10px 0;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .rz-pnav ul::-webkit-scrollbar{display:none}
  .rz-pnav li{flex:0 0 auto}
  .rz-pnav a{padding:9px 15px;border-left:0;border:1px solid var(--rz-line);border-radius:var(--rz-r-pill);
    white-space:nowrap;background:var(--rz-card-light)}
  .rz-pnav a[aria-current="true"]{border-color:var(--rz-terra);color:var(--rz-terra)}

  /* A barra grudada cobre o topo da tela, então o `scroll-padding-top` do
     documento (que só conta o cabeçalho) não basta: pular para uma seção
     deixava o título dela escondido atrás dos atalhos. Escopo no perfil
     porque a barra só existe aqui. */
  .rz-campo [id]{scroll-margin-top:calc(var(--rz-header-h) + 78px)}
}

/* Rótulo da ficha, que perdeu o bloco de identidade pro cabeçalho. */
.rz-ficha__rotulo{font-size:var(--rz-fs-micro);letter-spacing:.14em;text-transform:uppercase;
  color:var(--rz-ink-3);margin-bottom:12px}
/* O rótulo do tipo de evento era o mesmo `.rz-ficha__rotulo`, escrito à
   mão em `style=` só pra trocar a cor. */
.rz-ficha__rotulo--terra{color:var(--rz-terra)}

/* `.rz-ficha__papel` é flex com align-items:center e um ponto terracota
   antes; com o texto quebrando em duas linhas ("Psicóloga · Mestra em
   Psicologia Clínica" quebra), o ponto ficava centralizado contra o bloco
   inteiro e parecia esquecido ali. Alinha pela primeira linha. */
.rz-ficha__papel{align-items:baseline}
.rz-ficha__papel::before{position:relative;top:-.22em}

/* Endereço: metade da largura pra um mapa ao lado de uma linha de endereço
   é desproporção, e o retângulo vazio aparece inteiro quando o iframe
   demora. O texto passa a mandar. */
@media (min-width:760px){ .rz-place{grid-template-columns:minmax(0,1fr) minmax(0,.62fr)} }
.rz-place__map{min-height:0}
.rz-place__map iframe{min-height:170px;height:100%}

/* No celular a ficha estruturada vinha ANTES do texto: quem chegava lia
   "REGISTRO PROFISSIONAL / CRP 04/12345" antes de saber quem a pessoa é. A
   palavra dela vem primeiro; a ficha é referência, não apresentação.
   Isto continua valendo (2026-08-31) — o que mudou é que a ficha deixou de
   ser INALCANÇÁVEL por ficar no fim: o índice vem antes das duas e leva a
   ela num toque, em vez de oito telas de rolagem. */
@media (max-width:939px){
  /* `align-items:stretch` desfaz o `start` da regra base: em coluna, o
     eixo cruzado é o horizontal, e `start` encolhia cada filho até a
     largura do conteúdo — a barra de atalhos ficava com 731px numa tela de
     390 e a página inteira rolava de lado. */
  .rz-campo{display:flex;flex-direction:column;align-items:stretch}
  .rz-campo > .rz-pnav{order:0;min-width:0}
  .rz-campo > .rz-coluna{order:1}
  .rz-campo > .rz-ficha{order:2}
}

/* Compartilhar perfil. Progressivo (ADR-004): sem JS o <details> abre com o
   link em campo selecionável e os atalhos de WhatsApp/e-mail, que são <a>
   comuns. Com JS, "Copiar" funciona; onde existe folha de compartilhamento
   nativa (celular), o próprio botão a abre. */
.rz-share{position:relative}
.rz-share > summary{list-style:none;cursor:pointer}
.rz-share > summary::-webkit-details-marker{display:none}
.rz-share > summary::marker{content:""}
.rz-share > summary:focus-visible{outline:2px solid var(--rz-terra);outline-offset:3px}
.rz-share__painel{position:absolute;right:0;top:calc(100% + 8px);z-index:20;width:min(320px,86vw);
  background:var(--rz-card-light);border:1px solid var(--rz-line);border-radius:var(--rz-r-lg);
  box-shadow:var(--rz-shadow-lift);padding:16px;display:flex;flex-direction:column;gap:10px}
@media (max-width:819px){ .rz-share__painel{right:auto;left:0} }
.rz-share__t{font-size:var(--rz-fs-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--rz-ink-3)}
.rz-share__linha{display:flex;gap:8px;align-items:center}
.rz-share__linha input{flex:1 1 auto;min-width:0;font-size:var(--rz-fs-body);font-family:inherit;
  border:1px solid var(--rz-line);border-radius:999px;padding:.5em .9em;background:var(--rz-card);color:var(--rz-ink-2)}
.rz-share__linha input:focus{outline:2px solid var(--rz-terra);outline-offset:1px}
.rz-share__copiar{flex:0 0 auto;font-size:var(--rz-fs-body);font-family:inherit;font-weight:500;
  border:1px solid var(--rz-line-2);border-radius:999px;padding:.5em 1em;background:transparent;
  color:var(--rz-ink-2);cursor:pointer;white-space:nowrap}
.rz-share__copiar:hover{border-color:var(--rz-ink-3);background:var(--rz-veil-50)}
.rz-share__vias{display:flex;flex-wrap:wrap;gap:8px}
.rz-share__vias a{font-size:var(--rz-fs-body);color:var(--rz-ink-2);border:1px solid var(--rz-line);
  border-radius:999px;padding:.42em .95em}
.rz-share__vias a:hover{border-color:var(--rz-terra);color:var(--rz-terra)}
/* Sem JS a área de cópia não tem o que fazer: só aparece quando o script
   marca a raiz. O campo com o link continua lá pra seleção manual. */
.rz-share__copiar{display:none}
.rz-share.is-js .rz-share__copiar{display:inline-block}

/* Nível de idioma (ADR-029 §3.3) — texto reduzido dentro do próprio chip, nunca vira tag separada. */
.rz-tag__nivel{opacity:.62;margin-left:.35em}

/* "Histórico na comunidade" — anatomia idêntica a .rz-read (seção 10).
   border-top removido: a seção pai (.rz-coluna > section) já fornece
   o separador visual. */
.rz-historico{}
.rz-historico__item{display:grid;gap:6px;padding:clamp(13px,1.4vw,18px) 0;border-bottom:1px solid var(--rz-line)}
.rz-historico__item h3{font-size:clamp(1rem,.96rem + .3vw,1.16rem);line-height:1.3}
.rz-historico__k{font-size:var(--rz-fs-micro);letter-spacing:.16em;text-transform:uppercase;color:var(--rz-terra)}
.rz-historico__m{font-size:var(--rz-fs-body);color:var(--rz-ink-3)}
.rz-historico__em-curso{color:var(--rz-terra);font-weight:500}
.rz-historico__resumo{font-size:var(--rz-fs-body);color:var(--rz-ink-3);font-weight:300;margin-top:2px}
.rz-historico__autoria{font-size:var(--rz-fs-micro);color:var(--rz-ink-3);margin-left:.4em}
@media (min-width:768px){
  .rz-historico__item{grid-template-columns:120px minmax(0,1fr) auto;align-items:baseline;gap:clamp(16px,2vw,30px)}
}

/* Link "Ver tudo →" ao lado do título de seção (rz_sechead $acao_html) — mockup aprovado, não é botão. */
.rz-verlink{color:var(--rz-terra);font-weight:500;white-space:nowrap}
.rz-verlink:hover{text-decoration:underline}

/* Integrantes (coletivo) — grade reaproveita .rz-plist/.rz-pcard; ADR-007
   (sem foto em cartão de listagem) já se aplica por ser o mesmo componente.
   Rodapé: legenda de ordenação + "ver todas", lado a lado (mockup aprovado). */
.rz-integrantes__rodape{margin-top:16px;display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}

/* "Como participar" — bloco simples, some inteiro se rz_aceita_integrantes=false. */
.rz-comoparticipar{background:var(--rz-card-light);border-radius:var(--rz-r-lg);padding:clamp(16px,1.6vw,22px);box-shadow:var(--rz-shadow)}

/* Sede / endereço de atendimento — mapa condicional a rz_endereco_publico.
   Layout de duas colunas (endereço + mapa lado a lado) alinhado ao mockup
   aprovado da ADR-029 (`.p3-place`), que só não tinha sido adotado porque a
   implementação original usava iframe do OpenStreetMap embutido direto sob
   o cabeçalho da seção, sem o cartão — o mapa em si (iframe real, não SVG
   ilustrativo) continua o mesmo, só o invólucro mudou. Abaixo de 640px
   empilha, mapa embaixo do texto, mesma régua do resto do sistema. */
.rz-place{display:grid;border:1px solid var(--rz-line);border-radius:var(--rz-r-lg);overflow:hidden;background:var(--rz-card-light)}
@media (min-width:640px){ .rz-place{grid-template-columns:minmax(0,1fr) 46%} }
.rz-place__txt{padding:clamp(16px,1.8vw,22px);display:flex;flex-direction:column;gap:12px;justify-content:center}
.rz-place__addr{font-size:var(--rz-fs-body);color:var(--rz-ink-2);line-height:1.6;margin:0}
.rz-place__map{position:relative;min-height:190px;border-top:1px solid var(--rz-line)}
@media (min-width:640px){ .rz-place__map{border-top:0;border-left:1px solid var(--rz-line)} }
.rz-place__map iframe{display:block;width:100%;height:100%;min-height:190px;border:0}
.rz-place__nota{margin:0;font-size:var(--rz-fs-micro);color:var(--rz-ink-3)}
/* Endereço sem coordenada (raro: geocodificação falhou) — texto ocupa a
   largura toda, sem reservar coluna pra um mapa que não existe. */
.rz-place--sem-mapa{grid-template-columns:1fr!important}

/* ==========================================================================
   7.2 EVENTO / CURSO / TEXTO / VERBETE — o mesmo "Caderno de campo"
   generalizado pro resto do site (proposta "Padrão Caderno de Campo",
   aprovada 2026-08-28). .rz-campo/.rz-ficha/.rz-coluna/.rz-coluna__lead já
   existem (7.1) — evento e curso reaproveitam sem alteração (variante
   "Ficha + Coluna"); texto e verbete usam só .rz-coluna__lead como epígrafe,
   sem ficha lateral (variante "Epígrafe + Leitura"). Os itens abaixo são as
   únicas peças novas: selo de data, preço, assinatura de autoria e o bloco
   de genealogia do verbete.
   ========================================================================== */
.rz-ficha__badge{width:52px;height:52px;border-radius:14px;flex:0 0 auto;background:var(--rz-dark);color:var(--rz-on-dark-solid);display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:var(--rz-font-serif)}
.rz-ficha__badge b{font-size:1.15rem;line-height:1;font-weight:600}
.rz-ficha__badge span{font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;opacity:.8}

.rz-ficha__preco{font-family:var(--rz-font-serif);font-size:2rem;color:var(--rz-terra);line-height:1}
.rz-ficha__preco small{display:block;margin-top:6px;font-family:var(--rz-font-sans);font-size:var(--rz-fs-micro);font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--rz-ink-3)}

/* Assinatura de autoria — avatar pequeno + link, usado na coluna (curso,
   texto) onde o crédito não cabe na ficha ou não há ficha nenhuma. */
.rz-byline{display:flex;align-items:center;gap:10px;font-size:var(--rz-fs-body);color:var(--rz-ink-2)}
.rz-byline .rz-avatar{width:28px;height:28px;flex:0 0 28px;font-size:.72rem}
.rz-byline a{text-decoration:underline;text-underline-offset:2px}

/* Genealogia do verbete — mesma cor de identidade autodeclarada (sálvia),
   por ser também um dado de proveniência/composição, não um fato objetivo. */
.rz-genealogia{margin-top:6px;max-width:var(--rz-measure);border-left:3px solid var(--rz-sage);background:var(--rz-sage-tint);border-radius:0 14px 14px 0;padding:16px 20px}
.rz-genealogia .rz-eyebrow{margin-bottom:8px;color:var(--rz-sage)}
.rz-genealogia .rz-eyebrow::before{background:var(--rz-sage)}
.rz-genealogia p{margin:0;font-size:var(--rz-fs-body);color:var(--rz-ink-2);font-style:italic}

/* ==========================================================================
   12. PAINEL — abas + dashboard (redesenho dos painéis, 2026-08-25)
   ========================================================================== */
.rz-painel{display:flex;flex-direction:column;gap:20px}
.rz-painel__nav{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;border-bottom:1px solid var(--rz-line)}
.rz-painel__navitem{flex:none;padding:9px 14px;border-radius:var(--rz-r-pill,999px) var(--rz-r-pill,999px) 0 0;color:var(--rz-ink-2);font-size:var(--rz-fs-body);white-space:nowrap;border-bottom:2px solid transparent}
.rz-painel__navitem.is-active{color:var(--rz-ink);border-bottom-color:var(--rz-terra);font-weight:500}
.rz-painel__content{min-width:0}
@media (min-width:768px){
  .rz-painel{flex-direction:row;align-items:flex-start;gap:clamp(20px,3vw,40px)}
  .rz-painel__nav{flex-direction:column;flex:none;width:200px;overflow-x:visible;border-bottom:0;border-right:1px solid var(--rz-line);padding-right:12px}
  .rz-painel__navitem{border-radius:var(--rz-r-lg);border-bottom:0;border-left:2px solid transparent}
  .rz-painel__navitem.is-active{background:var(--rz-card-light);border-left-color:var(--rz-terra)}
  .rz-painel__content{flex:1}
}

/* PAINEL DE ADMINISTRAÇÃO (ADR-032) — `.rz-vocab*` é o seletor de
   vocabulário da aba "Listas"; `.rz-adminlist*` é a lista de linhas
   administráveis, compartilhada pelas abas (termos, vouchers…). Sem JS:
   cada linha abre o próprio `<details>` e cada ação é um form separado
   (ADR-004). */
.rz-vocab{display:grid;gap:clamp(16px,2vw,26px)}
.rz-vocab__listas{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding-bottom:4px}
.rz-vocab__listas::-webkit-scrollbar{display:none}
.rz-vocab__lista{flex:0 0 auto;display:flex;align-items:center;gap:8px;padding:.5em 1em;border:1px solid var(--rz-line-2);border-radius:999px;font-size:.9rem;color:var(--rz-ink-2);white-space:nowrap}
.rz-vocab__lista:hover{border-color:var(--rz-ink-3);background:var(--rz-veil-50)}
.rz-vocab__lista.is-active{background:var(--rz-dark);border-color:var(--rz-dark);color:var(--rz-on-dark-solid);font-weight:500}
.rz-vocab__conta{font-size:var(--rz-fs-micro);opacity:.75;font-variant-numeric:tabular-nums}
.rz-vocab__painel{min-width:0}
.rz-adminlist{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:2px}
.rz-adminlist__item{border-bottom:1px solid var(--rz-line);padding:12px 2px}
.rz-adminlist__item:last-child{border-bottom:0}
.rz-adminlist__linha{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}
.rz-adminlist__editar summary{cursor:pointer;margin-top:6px;font-size:var(--rz-fs-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--rz-ink-3);width:max-content}
.rz-adminlist__editar summary:hover{color:var(--rz-terra)}
.rz-adminlist__editar[open] summary{color:var(--rz-terra)}
.rz-adminlist__titulo{font-size:var(--rz-fs-lead);margin-bottom:4px}
.rz-adminlist__editar[open]>*:not(summary){border-left:2px solid var(--rz-line-2);padding-left:14px}
.rz-adminlist__form{margin-top:10px;max-width:var(--rz-measure)}
.rz-adminlist__form .rz-field{padding-left:0;padding-right:0}
.rz-adminlist__editar>.rz-searchmeta{margin-top:10px}
@media (min-width:900px){
  .rz-vocab{grid-template-columns:minmax(180px,240px) 1fr;align-items:start}
  .rz-vocab__listas{flex-direction:column;gap:4px;overflow-x:visible}
  .rz-vocab__lista{width:100%;justify-content:space-between;border-radius:var(--rz-r-lg)}
}

.rz-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:24px}
.rz-stat{background:var(--rz-card-light);border-radius:var(--rz-r-lg);padding:16px 18px}
.rz-stat strong{display:block;font-family:"Playfair Display",serif;font-size:clamp(1.6rem,1.3rem + 1vw,2.1rem);line-height:1.1}
.rz-stat span{font-size:var(--rz-fs-body);color:var(--rz-ink-3)}

/* ==========================================================================
   WIZARD — formulário de perfil em passos (aba "Meu perfil" e criação).
   Progressivo: sem JS os passos ficam todos visíveis num form só, ADR-004.
   ========================================================================== */
.rz-wizard{margin-bottom:20px}
.rz-wizard__track{display:flex;align-items:center;gap:8px;list-style:none;padding:0;margin:0 0 22px}
.rz-wizard__step{flex:1;display:flex;flex-direction:column;gap:6px;min-width:0}
.rz-wizard__bar{height:4px;border-radius:99px;background:var(--rz-line);overflow:hidden}
.rz-wizard__bar i{display:block;height:100%;width:0;background:var(--rz-terra);border-radius:99px;transition:width .35s var(--rz-ease)}
.rz-wizard__label{font-size:var(--rz-fs-micro);letter-spacing:.06em;text-transform:uppercase;color:var(--rz-ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rz-wizard__step.is-active .rz-wizard__bar i{width:50%}
.rz-wizard__step.is-done .rz-wizard__bar i{width:100%}
.rz-wizard__step.is-active .rz-wizard__label{color:var(--rz-ink);font-weight:500}
.rz-wizard__step.is-done .rz-wizard__label{color:var(--rz-ink-2)}

/* Passo do wizard — `.rz-wstep`, não `.rz-step`. Redesenho do formulário de
   perfil (2026-08-29): as duas coisas se chamavam `.rz-step` e a regra
   `display:none` daqui apagava também os cartões "01/02/03" de
   `.rz-steplist` no /cadastro/ (mesma especificidade, esta regra vinha
   depois) — a explicação de como funciona a entrada na rede simplesmente
   não aparecia. Além disso o `display:none` era incondicional: sem
   JavaScript só o passo 1 existia e o botão "Avançar" (type=button) não
   levava a lugar nenhum, deixando o formulário impossível de enviar,
   contra a ADR-004. Agora quem esconde é `.rz-wizard--js`, classe que
   `painel.js` só acrescenta quando de fato assume a navegação. */
.rz-wizard--js .rz-wstep{display:none}
.rz-wizard--js .rz-wstep.is-active{display:block}
.rz-wstep{border:0;padding:0;margin:0;min-width:0}
.rz-wstep+.rz-wstep{margin-top:28px}
.rz-wstep__order{font-size:var(--rz-fs-micro);letter-spacing:.18em;text-transform:uppercase;color:var(--rz-terra);font-weight:500}
.rz-wstep__title{font-family:"Playfair Display",serif;font-size:var(--rz-fs-h3);margin:2px 0 18px}
.rz-wstep__hint{color:var(--rz-ink-3);margin-bottom:18px;font-size:var(--rz-fs-body)}
.rz-wstep__nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:22px;padding-top:18px;border-top:1px solid var(--rz-line)}
.rz-wstep__nav .rz-btn--ghost{margin-inline-start:auto}

/* Lista de opções marcáveis (profissões, abordagens, idiomas…).
   Redesenho 2026-08-29: antes reaproveitava `.rz-chips`/`.rz-chip`, que é o
   componente de filtro da busca — uma fileira de rolagem horizontal. Três
   efeitos colaterais visíveis: as opções eram cortadas na borda do cartão,
   `.rz-field label` impunha caixa-alta e letter-spacing de rótulo em cima
   do nome de cada opção, e `.rz-field input{width:100%}` esticava o
   checkbox, que subia pro meio da pílula. Marcar não mudava nada visível
   (`.rz-chip[aria-pressed]` é de botão, não de checkbox), então a tela
   parecia quebrada. Isto aqui é grade que quebra linha, com estado
   marcado explícito. */
/* `align-items:start` porque o idioma marcado ganha um select embaixo e sem
   isto o cartão vizinho da mesma linha esticava junto, ficando alto e vazio. */
.rz-optbox{display:grid;grid-template-columns:1fr;gap:8px;margin:4px 0 2px;align-items:start}
@media (min-width:560px){ .rz-optbox{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))} }
.rz-optbox__item{
  display:flex;align-items:flex-start;gap:10px;min-width:0;
  padding:11px 13px;border:1px solid var(--rz-line-2);border-radius:var(--rz-r-lg);
  background:var(--rz-veil-40);cursor:pointer;
  transition:border-color .18s,background .18s;
}
/* Anula a herança de `.rz-field label` (rótulo de campo) — aqui é texto de
   opção, não rótulo: caixa normal, tamanho de corpo, cor de leitura. */
.rz-field .rz-optbox__item,.rz-optbox__item{
  text-transform:none;letter-spacing:normal;font-weight:400;
  font-size:var(--rz-fs-body);color:var(--rz-ink);line-height:1.35;
}
.rz-optbox__item:hover{border-color:var(--rz-terra);background:var(--rz-terra-tint)}
/* Anula `.rz-field input{width:100%;border-bottom:…}` — checkbox é caixinha. */
.rz-field .rz-optbox__item input[type="checkbox"],.rz-optbox__item input[type="checkbox"]{
  width:17px;height:17px;flex:0 0 auto;margin:1px 0 0;padding:0;border:0;
  accent-color:var(--rz-terra);cursor:pointer;
}
.rz-optbox__item:has(input:checked){border-color:var(--rz-terra);background:var(--rz-terra-tint-2);box-shadow:inset 0 0 0 1px var(--rz-terra)}
.rz-optbox__item:has(input:focus-visible){outline:2px solid var(--rz-terra);outline-offset:2px}
.rz-optbox__txt{min-width:0}
.rz-optbox__nota{display:block;font-size:var(--rz-fs-micro);color:var(--rz-ink-3);letter-spacing:normal;text-transform:none}
/* Nível do idioma: fora do <label> (select dentro de label é armadilha de
   clique) e só aparece quando o idioma está marcado — condicional, em vez
   de um select morto ao lado de cada opção não escolhida. */
.rz-optrow{display:grid;gap:6px;min-width:0}
.rz-optrow>.rz-optbox__nivel{display:none}
.rz-optrow:has(input:checked)>.rz-optbox__nivel{display:block}
.rz-field .rz-optrow>.rz-optbox__nivel{
  width:100%;margin:0;border:1px solid var(--rz-line-2);border-radius:var(--rz-r-lg);
  background:var(--rz-field);padding:.5em .7em;font:inherit;font-size:var(--rz-fs-micro);color:var(--rz-ink-2);
}

/* Sugestão de cidade (endereco.js) — dropdown sobre o campo de texto. */
.rz-city-search{position:relative}
.rz-city-search__options{position:absolute;z-index:20;left:0;right:0;top:100%;max-height:240px;overflow:auto;background:var(--rz-field);border:1px solid var(--rz-line-2);border-radius:var(--rz-r-lg);box-shadow:0 8px 24px #0002;padding:5px}
.rz-city-search__option{display:block;width:100%;text-align:left;padding:9px 10px;border-radius:8px;background:transparent}
.rz-city-search__option:hover{background:var(--rz-terra-tint-2)}

.rz-rv{opacity:0;transform:translateY(14px);transition:opacity .7s var(--rz-ease),transform .7s var(--rz-ease)}
.rz-rv.rz-in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important}
  .rz-rv{opacity:1;transform:none}
}

/* LISTA SEM MARCADOR. `list-style:none;padding:0;margin:0` mais um flex em
   coluna era o `style=` mais copiado do tema depois das margens: painel,
   curadoria, respostas do fórum. Não é decisão de página nenhuma — é o que
   toda lista de itens do site já queria. */
.rz-pilhalista{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--rz-e2)}
.rz-pilhalista--3{gap:var(--rz-e3)}

/* Cartão de bloco do painel: `.rz-searchcard` na largura de leitura, com
   folga interna maior. Estava escrito à mão em dois lugares. */
.rz-cartao-bloco{max-width:var(--rz-measure);margin-bottom:var(--rz-e4);padding:var(--rz-e4)}

/* `.rz-tags` empilhada: mesma lista de etiquetas, uma por linha, quando o
   que importa é ler cada uma (painel: o que já foi declarado no perfil). */
.rz-tags--pilha{flex-direction:column;align-items:flex-start;gap:var(--rz-e2);
  list-style:none;padding:0;margin-bottom:var(--rz-e4)}

/* Contagem ao lado de um `.rz-subhead`: `.rz-searchmeta` herda caixa alta e
   espaçamento de letra que não cabem num "(12)". */
.rz-searchmeta--plano{text-transform:none;letter-spacing:0}
/* Contexto de denúncia preserva as quebras de linha de quem escreveu. */
.rz-preserva-quebras{white-space:pre-line}
/* Tabela larga rola dentro da própria caixa, nunca empurra a página. */
.rz-rolax{overflow-x:auto}
.rz-largura-cheia{width:100%}
.rz-centrado{text-align:center}
.rz-clicavel{cursor:pointer}
.rz-sempad{padding:0}
.rz-inline{display:inline-block}
/* Título de item na lista de cursos do painel: era `font-size:lead` inline
   num `<p>` que já carrega o nome do curso. */
.rz-lead-sm{font-size:var(--rz-fs-lead)}
/* Formulário de denúncia: curto de propósito, pra não competir com a
   página onde está embutido. */
.rz-denuncia__form{max-width:420px}

/* MOLDURA DO CERTIFICADO. É a única página do site pensada pra sair na
   impressora, e por isso não segue a escala: os 60/40px de folga e a borda
   de 2px são o que faz a folha parecer um certificado. Estava em `style=`
   porque nunca teve nome. */
.rz-certificado{max-width:720px;margin:0 auto;padding:60px 40px;text-align:center;
  border:2px solid var(--rz-line)}
@media (max-width:600px){ .rz-certificado{padding:34px 22px} }

/* MEMBROS de uma comunidade (`template-parts/comunidade-membros.php`): a
   etiqueta com avatar estava inteira em `style=`, e `.rz-membros` já era a
   classe do `<ul>` — só não tinha regra. */
.rz-membros{display:flex;flex-wrap:wrap;gap:var(--rz-e2);list-style:none;padding:0;
  margin:0 0 var(--rz-e5)}
.rz-membro{display:flex;align-items:center;gap:var(--rz-e2);background:var(--rz-card);
  border-radius:var(--rz-r-pill);padding:6px 14px 6px 6px}
.rz-avatar.rz-membro__av{flex:0 0 26px;width:26px;height:26px;font-size:.7rem;
  background:var(--rz-mono-1)}
.rz-membro__nome{font-size:var(--rz-fs-micro);color:var(--rz-ink-2)}

/* ==========================================================================
   99. UTILITÁRIAS DE ESPAÇO — por último, de propósito
   --------------------------------------------------------------------------
   Vieram de base.css no lote 3 (2026-08-29). Uma utilitária tem que vencer o
   componente que ela está corrigindo, e entre seletores de mesma
   especificidade quem vence é quem vem depois. Em base.css,
   `<p class="rz-searchmeta rz-mt0">` mantinha o `margin-top:12px` do
   `.rz-searchmeta` — o template dizia uma coisa e a tela mostrava outra.
   Aqui no fim da última folha, o que o template pede é o que aparece.
   ========================================================================== */
/* Utilitários da escala de espaço (tokens.css). Existem pra que os 233
   estilos inline dos templates tenham pra onde ir: `style="margin-top:20px"`
   vira `class="rz-mt4"`. Só margem vertical, de propósito — margem lateral e
   padding continuam sendo decisão do componente, não do template. */
/* Largura de leitura. Veio de base.css (2026-08-31) pelo mesmo motivo das
   outras: utilitária tem que vencer o componente, e só vence estando na
   última folha. */
.rz-measure{max-width:var(--rz-measure)}

/* `.rz-m0` vem ANTES das direcionais de propósito: `class="rz-m0 rz-mt2"`
   é a tradução de `style="margin:8px 0 0"`, e só funciona se a de zerar
   tudo perder pra específica na cascata. */
.rz-m0{margin:0}
.rz-mt0{margin-top:0}              .rz-mb0{margin-bottom:0}
.rz-mt1{margin-top:var(--rz-e1)}   .rz-mb1{margin-bottom:var(--rz-e1)}
.rz-mt2{margin-top:var(--rz-e2)}   .rz-mb2{margin-bottom:var(--rz-e2)}
.rz-mt3{margin-top:var(--rz-e3)}   .rz-mb3{margin-bottom:var(--rz-e3)}
.rz-mt4{margin-top:var(--rz-e4)}   .rz-mb4{margin-bottom:var(--rz-e4)}
.rz-mt5{margin-top:var(--rz-e5)}   .rz-mb5{margin-bottom:var(--rz-e5)}
.rz-mt6{margin-top:var(--rz-e6)}   .rz-mb6{margin-bottom:var(--rz-e6)}
.rz-mt7{margin-top:var(--rz-e7)}   .rz-mb7{margin-bottom:var(--rz-e7)}
/* Pilha: espaço uniforme entre filhos, sem margem em nenhum deles. É o que
   quase todo bloco de template queria quando escreveu margem à mão. */
.rz-pilha{display:flex;flex-direction:column}
.rz-pilha--2{gap:var(--rz-e2)} .rz-pilha--3{gap:var(--rz-e3)}
.rz-pilha--4{gap:var(--rz-e4)} .rz-pilha--5{gap:var(--rz-e5)}
.rz-pilha--6{gap:var(--rz-e6)}
