/* ==========================================================================
   css/print.css — impressão / PDF (A4 retrato)
   --------------------------------------------------------------------------
   Carregado só na impressão (<link media="print">). Fundo branco, nada
   interativo e campos como texto simples.
   Página 1: cabeçalho, identificação, atributos, recursos, defesa e perícias.
   Página 2: ataques, habilidades, rituais, inventário e descrição.
   Antes de imprimir, o js/ui.js abre os blocos recolhidos, tira os filtros,
   esconde campos vazios (.impressao-vazio) e ajusta a altura das <textarea>;
   depois desfaz tudo.
   Obs.: na impressão a largura útil é ~186 mm (~700 px), então as regras de
   tela para celular (max-width) valem aqui; por isso várias são desfeitas.
   ========================================================================== */

@page {
  size: A4 portrait;
  margin: 12mm;
}

/* Tema claro: as mesmas variáveis do style.css */
:root {
  --cor-fundo: #fff;
  --cor-fundo-elevado: #fff;
  --cor-superficie: #fff;
  --cor-superficie-2: #fff;
  --cor-borda: #c4c4c4;
  --cor-borda-forte: #8c8c8c;
  --cor-texto: #111;
  --cor-texto-suave: #444;
  --cor-texto-fraco: #666;
  --cor-destaque: #8f2f29;
  --cor-destaque-suave: transparent;
  --cor-brilho-topo: transparent;
  --cor-foco: #6e5620;
  --cor-ok: #33612f;
  --cor-aviso: #7d5a10;
  --cor-aviso-fundo: transparent;
  --cor-aviso-borda: #c7a35a;
  --cor-erro: #9c3128;
  --cor-erro-fundo: transparent;
  --cor-erro-borda: #c98a84;
  --cor-pv: #b23f38;
  --cor-pe: #b9681d;
  --cor-san: #485fb5;
  --cor-defesa: #4c5e75;
  --cor-deslocamento: #33612f;
  --cor-sangue: #a83a33;
  --cor-morte: #666;
  --cor-conhecimento: #9a7a1f;
  --cor-energia: #6b4aa6;
  --cor-medo: #888;
  --altura-controle: auto;
  --sombra: none;
}

html {
  color-scheme: light;
}

body {
  min-height: 0;
  padding: 0 !important;
  font-size: 9.5pt;
  line-height: 1.25;
  color: var(--cor-texto);
  background: #fff !important;
  background-image: none !important;
}

/* --------------------------------------------------------------------------
   Esconde tudo o que é interativo ou só serve na tela
   -------------------------------------------------------------------------- */
.barra-topo,
.faixa,
.rolagens,
dialog,
.rodape,
body::after,
.passo__botao,
.recurso__botoes,
.alternar,
.contador,
.botao,
.botao-icone,
.botao-rolagem,
.botao-texto,
.aba,
.pericias__ferramentas,
.pericias__pontos,
.filtros-linha,
.busca,
.legenda,
.avisos,
.aviso-neutro,
.secao__nota,
.mensagem-acao,
.itens__vazio,
.pericias__vazio,
.reacao__dica,
.pericia__rolar,
.tabela-pericias thead th:nth-child(6),
.so-celular,
.ataque__acoes,
.ataque__erro,
.item__acoes,
.habilidade__seta,
.habilidade__rodape,
.habilidade__detalhes > .campos-linha:first-child,
.habilidade__dt-campos,
#painel-turno,
.grupo-ritual__vazio,
.grupo-ritual--vazio,
.grupo-ritual__bloqueado,
.ritual__aviso,
.ritual__medo,
.ataque__campo--teste-resistencia,
.ataque__campo--efeito-resistencia,
.forma[data-ativa="nao"],
.forma__sempre,
.forma__cabecalho .caixa,
.forma__acoes,
.impressao-vazio {
  display: none !important;
}

/* Redesign: tudo o que é só da tela (Central, Arquivo, atmosfera, trilho de
   vitais e índice, capa do dossiê com tema e selo, ícones, avisos). O papel
   continua sendo só a ficha, no mesmo layout de antes. Ctrl+P em qualquer
   tela imprime a ficha aberta. */
.pular,
.atmosfera,
.simbolos,
.app-barra,
.vista--central,
.vista--arquivo,
.trilho,
.lateral > .indice,
.nav-global,
.avisos-app,
.dossie__faixa,
.dossie__selo,
.atributos__mostrador,
.atributo__dado,
.atributos__modo,
.icone-ui,
.sem-js,
.cartao-resumo,
.cartao-editar,
.ritual__rodape,
.pericias__modo,
.recurso__detalhes-titulo,
.dialogo--vital,
.glossario,
.seletor,
.seletor-painel,
.seletor-fundo {
  display: none !important;
}

.vista--ficha,
.ficha-layout,
.ficha__conteudo,
.ficha__par,
.atributos__palco {
  display: block !important;
  max-width: none;
  margin: 0;
  padding: 0;
}

/* O cabeçalho só do papel (na tela, a capa do dossiê faz esse papel) */
.so-impressao {
  display: block !important;
}

/* Etapa 9: painéis de origem/classe/trilha e progressão são de consulta
   (a origem, a classe e a trilha escolhidas aparecem na Identificação);
   nas formas dos rituais fica só "Requer círculo" e o total. */
.secao--identidade,
#info-aumentos,
#beneficios-afinidade,
.ataque__campo--custo-base,
.forma__custos .ataque__campo--custo,
.forma__base,
.forma__avisos {
  display: none !important;
}

.forma__total,
.forma__total output {
  font-size: 8pt;
}

.forma__afinidade {
  height: auto;
}

/* Bônus manuais: o valor já aparece na composição ao lado do total
   (ex.: "14 inicial + 16 por NEX + 0 bônus = 30") */
.recurso__bonus,
.painel--defesa .campo-bonus,
.painel--deslocamento .campo-bonus,
.painel--carga .campo-bonus,
.painel--dt .campo-bonus,
#dica-patente,
#dica-afinidade,
.secao[aria-labelledby="titulo-inventario"] .subtitulo {
  display: none !important;
}

/* Setas dos blocos recolhíveis */
.resistencias summary::before,
.grupo-ritual > summary::before {
  display: none !important;
}

/* --------------------------------------------------------------------------
   Campos como texto simples (sem caixas); checkboxes continuam visíveis
   -------------------------------------------------------------------------- */
input:not([type="checkbox"]):not([type="radio"]),
select,
.passo,
.passo__valor {
  height: auto !important;
  min-height: 0 !important;
  padding: 0 !important;
  color: inherit !important;
  background: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  opacity: 1 !important;
  -webkit-appearance: none !important;
  -moz-appearance: none !important;
  appearance: none !important;
}

input,
select,
textarea {
  font-size: 9pt !important;
}

input,
select {
  line-height: 1.2;
}

input[type="number"] {
  -moz-appearance: textfield !important;
}

input::-webkit-inner-spin-button,
input::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

::placeholder {
  color: transparent !important;
}

/* A altura vem do js/ui.js (beforeprint); onde der, o navegador ajusta sozinho. */
textarea {
  width: 100%;
  min-height: 0 !important;
  padding: 0 !important;
  font-family: inherit !important;
  line-height: 1.25 !important;
  color: inherit !important;
  white-space: pre-wrap;
  background: none !important;
  border: 0 !important;
  resize: none !important;
  overflow: hidden !important;
}

.caixa {
  gap: 3pt;
  font-size: 8pt;
}

@supports (field-sizing: content) {
  textarea {
    field-sizing: content;
    height: auto !important;
  }
}

input[type="checkbox"] {
  width: 8pt !important;
  height: 8pt !important;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}

.controle:disabled,
.recurso__controles:disabled,
.pericia--requer-treino .controle,
.pericia--requer-treino output,
.pericia--requer-treino .caixa {
  opacity: 1 !important;
}

/* --------------------------------------------------------------------------
   Página e seções
   -------------------------------------------------------------------------- */
.pagina {
  display: block;
  max-width: none;
  padding: 0;
}

.secao {
  margin: 0 0 4pt;
  padding: 3pt 7pt 4pt;
  background: #fff;
  border: 0.75pt solid #9a9a9a;
  border-radius: 3pt;
  box-shadow: none;
}

.secao__cabecalho {
  gap: 2pt 8pt;
}

.secao__titulo {
  gap: 5pt;
  font-size: 8pt;
  letter-spacing: 0.14em;
  color: #000;
  break-after: avoid;
}

.secao__titulo::before {
  width: 5pt;
  height: 5pt;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}

.secao__info,
.secao__info output {
  font-size: 8pt;
}

.subtitulo {
  margin: 4pt 0 2pt;
  font-size: 8pt;
}

/* Sem quebra forçada: ataques e habilidades preenchem o resto da página das perícias */
.secao[aria-labelledby="titulo-ataques"] {
  break-before: auto;
}

/* Cartões e tabelas não se partem entre páginas */
.atributo,
.recurso,
.painel,
.reacao,
.teste,
.tabela-pericias,
.ataque,
.habilidade,
.ritual,
.forma,
.item,
.limite,
.descricao__campo {
  break-inside: avoid;
}

/* Cabeçalho */
.topo {
  border: 0;
}

.topo__conteudo {
  max-width: none;
  padding: 0 0 4pt;
}

.topo__selo {
  display: none;
}

.topo__titulo {
  font-size: 13pt;
}

.topo__subtitulo {
  margin-top: 0;
  font-size: 8pt;
}

/* Rótulos pequenos */
.campo label,
.campo-texto label,
.campo-bonus label,
.recurso__bonus label,
.recurso__perda label,
.atributo__campo label,
.ataque__rotulo,
.descricao__campo label,
.item__mini span {
  margin: 0;
  font-size: 8pt;
  letter-spacing: 0.06em;
}

/* --------------------------------------------------------------------------
   Página 1
   -------------------------------------------------------------------------- */

/* Identificação: uma linha */
.grade-campos {
  grid-template-columns: 2fr 1.6fr 1.4fr 1.2fr 1.4fr 0.6fr;
  gap: 2pt 8pt;
  margin-top: 3pt;
}

.campo--largo {
  grid-column: auto;
}

.campo .campo__destaque {
  font-size: 11pt !important;
  font-weight: 700;
}

/* Atributos: cinco lado a lado; base e bônus na mesma linha */
.grade-atributos {
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 4pt;
  margin-top: 3pt;
}

.atributo {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto;
  grid-template-areas:
    "cab  cab   total"
    "base bonus total";
  gap: 1pt 4pt;
  padding: 3pt 5pt;
}

.atributo__cabecalho {
  flex-direction: row;
  align-items: baseline;
  gap: 3pt;
}

.atributo__campo {
  justify-content: flex-start;
  gap: 2pt;
}

.atributo__sigla {
  font-size: 10pt;
}

.atributo__nome {
  font-size: 8pt;
}

.atributo__total {
  width: 22pt;
  height: 22pt;
}

.atributo__total output {
  font-size: 13pt;
}

.atributo__total-rotulo {
  display: none;
}

/* Números curtos: largura fixa pequena (input "auto" ocuparia ~20 caracteres) */
.passo__valor,
.controle--numero {
  width: 3em !important;
  font-size: 9pt !important;
  text-align: left !important;
}

/* Recursos: três lado a lado, barras coloridas */
.grade-recursos {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 4pt;
  margin-top: 3pt;
}

.recurso {
  gap: 2pt;
  padding: 3pt 6pt 4pt;
  border-top-width: 2pt;
}

.recurso__cabecalho {
  gap: 4pt;
}

.recurso__titulo {
  flex-direction: row;
  align-items: baseline;
  gap: 4pt;
}

.recurso__controles {
  gap: 2pt;
}

.recurso__valores {
  gap: 3pt;
}

.recurso__bonus,
.recurso__perda {
  flex-direction: row;
  align-items: baseline;
  gap: 3pt;
}

.recurso__sigla {
  font-size: 10pt;
}

.recurso__nome,
.recurso__info,
.recurso__info output {
  font-size: 8pt;
}

.recurso__info {
  padding: 0 4pt;
}

.recurso__atual {
  width: 2.6em;
  font-size: 14pt !important;
  font-weight: 700;
  text-align: right;
}

.recurso__separador,
.recurso__max {
  font-size: 11pt;
}

.barra,
.barra__preenchimento {
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}

.barra {
  height: 5pt;
}

.recurso__rodape {
  gap: 1pt 8pt;
  margin-top: 0;
  padding-top: 2pt;
}

.recurso__composicao {
  flex-basis: 100%;
  font-size: 8pt;
}

.recurso__detalhe {
  display: none;
}

.recurso__perda-valor {
  font-size: 9pt;
}

.recurso__perda .controle {
  width: 3em;
}

/* Defesa e derivados */
.grade-defesa {
  grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
  gap: 4pt;
  margin-top: 3pt;
}

.painel {
  gap: 3pt;
  padding: 4pt 6pt;
  border-top-width: 2pt;
}

.painel__rotulo {
  font-size: 10pt;
}

.painel__composicao,
.painel__info,
.painel__info output {
  margin-top: 0;
  font-size: 8pt;
}

.painel__valor {
  min-width: 28pt;
  height: 28pt;
  font-size: 17pt;
}

.painel__campos {
  gap: 2pt 8pt;
}

/* Campos dos painéis: "Rótulo valor" na mesma linha */
.campo-texto,
.campo-bonus {
  flex: 0 1 auto;
  flex-direction: row;
  align-items: baseline;
  gap: 3pt;
}

.campo-texto .controle {
  width: auto;
  min-width: 4em;
}

/* "Reações" e "Testes": os cartões já dizem o que são */
.secao[aria-labelledby="titulo-defesa"] .subtitulo {
  display: none;
}

.grade-reacoes,
.grade-testes {
  margin-top: 3pt;
}

.deslocamento__valor output {
  font-size: 13pt;
}

.deslocamento__quadrados {
  font-size: 8pt;
}

.aviso-sobrecarga {
  padding: 1pt 4pt;
  font-size: 8pt;
}

.grade-reacoes {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 4pt;
}

.reacao {
  gap: 0;
  padding: 2pt 5pt;
}

.reacao__nome {
  font-size: 8pt;
}

.reacao__valor {
  font-size: 9pt;
}

.reacao__detalhe {
  font-size: 8pt;
}

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

.teste {
  padding: 2pt 4pt;
}

.teste__ir {
  padding: 0;
}

.teste__nome {
  font-size: 8pt;
}

.teste__bonus {
  font-size: 11pt;
}

.teste__dados {
  font-size: 8pt;
}

.resistencias {
  margin-top: 3pt;
  border: 0;
}

.resistencias summary {
  padding: 0;
  font-size: 8pt;
}

.resistencias__corpo {
  padding: 0;
}

.resistencias__grupos {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0 6pt;
}

.resistencias__grupo {
  padding: 0 4pt 2pt;
}

.resistencias__grupo legend {
  font-size: 8pt;
}

.resistencia {
  padding: 0;
  font-size: 8pt;
}

/* Perícias: volta a ser tabela (a regra de celular a transforma em cartões) */
.tabela-pericias {
  display: table !important;
  margin-top: 2pt;
  font-size: 8.5pt;
  line-height: 1.1;
}

.tabela-pericias .icone,
.tabela-pericias .caixa input {
  vertical-align: middle;
}

.tabela-pericias thead {
  position: static !important;
  display: table-header-group !important;
  width: auto !important;
  height: auto !important;
  overflow: visible !important;
  clip: auto !important;
}

.tabela-pericias tbody {
  display: table-row-group !important;
}

.tabela-pericias .pericia {
  display: table-row !important;
  padding: 0;
  background: none;
  border: 0;
  animation: none;
}

.tabela-pericias thead th {
  padding: 1pt 3pt;
  font-size: 8pt;
}

.tabela-pericias .pericia > td,
.tabela-pericias .pericia > th {
  display: table-cell !important;
  padding: 0 3pt !important;
  vertical-align: middle;
  border-bottom: 0.5pt solid #ccc !important;
}

/* O grau sai com o nome (Treinado, Veterano…) no lugar do símbolo */
.botao-grau {
  display: none !important;
}

.pericia__grau-impressao {
  display: inline !important;
}

.pericia [data-rotulo]::before {
  display: none !important;
}

.pericia__nome-conteudo {
  min-height: 0;
  gap: 0 4pt;
  line-height: 1.1;
}

.pericia__indicadores {
  width: auto;
}

.icone {
  width: 8pt;
  height: 8pt;
}

.pericia .controle,
.pericia .pericia__especialidade {
  width: auto !important;
  font-size: 8.5pt !important;
  line-height: 1.1 !important;
}

.pericia .controle--numero {
  width: 3em !important;
}

.pericia__dados output {
  font-size: 8pt;
  line-height: 1.1;
}

.pericia__bonus output {
  font-size: 8.5pt !important;
  line-height: 1;
}

.pericia__concedida {
  text-align: center;
}

/* --------------------------------------------------------------------------
   Página 2
   -------------------------------------------------------------------------- */

/* Campos dos cartões: "Rótulo valor" na mesma linha */
.ataque__linha,
.campos-linha {
  gap: 1pt 10pt;
}

.ataque__campo {
  flex-direction: row;
  align-items: baseline;
  gap: 3pt;
}

.ataque__campo > .ataque__rotulo {
  flex: none;
  white-space: nowrap;
}

.ataque__campo > .controle,
.ataque__campo > output,
.ataque__campo > .passo,
.ataque__campo > .ataque__municao {
  flex: 1 1 auto;
  width: auto;
  min-width: 0;
}

.habilidade .controle {
  width: 100%;
}

/* Ataques e rituais: cada campo do tamanho do texto (o js/ui.js ajusta o size) */
.ataque .controle,
.ritual .controle {
  width: auto;
  max-width: 100%;
}

/* Textos longos continuam em bloco, sem o rótulo repetido */
.ataque__campo--descricao,
.ataque__campo--efeito {
  flex-direction: column;
  gap: 0;
}

.habilidade .ataque__campo--descricao > .ataque__rotulo,
.forma .ataque__campo--efeito > .ataque__rotulo {
  display: none;
}

/* Crítico: o rótulo já mostra "19/x2" */
.ataque__critico {
  display: none;
}

/* Ataques: todos os campos fluem juntos (sem as 4 linhas da tela) */
.ataques__lista {
  gap: 3pt;
  margin-top: 3pt;
}

.ataque {
  flex-direction: row;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 1pt 10pt;
  padding: 3pt 6pt;
  border-left-width: 2pt;
}

.ataque__linha {
  display: contents;
}

.ataque .ataque__campo {
  flex: 0 1 auto;
}

/* "Outros" já está somado no teste */
.ataque__campo--outros {
  display: none;
}

.ataque__teste {
  height: auto;
  font-size: 9pt;
}

.ataque__municao {
  height: auto;
}

/* Habilidades: o resumo (nome, fonte, custo, DT) e o texto */
.habilidades__lista {
  gap: 3pt;
  margin-top: 3pt;
}

.habilidade {
  gap: 1pt;
  padding: 3pt 6pt;
  border-left-width: 2pt;
}

.habilidade__alternar {
  min-height: 0;
  padding: 0;
}

.habilidade__nome {
  font-size: 9.5pt;
}

.selo-fonte {
  padding: 0 4pt;
  font-size: 8pt;
}

.habilidade__meta {
  font-size: 8pt;
}

.habilidade__detalhes {
  gap: 1pt;
  padding-top: 0;
  border-top: 0;
}

.habilidade--aberta {
  padding-bottom: 3pt;
}

/* Rituais */
.rituais__topo {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 4pt;
  margin-top: 3pt;
}

.rituais__grupos {
  gap: 3pt;
  margin-top: 3pt;
}

.grupo-ritual {
  background: none;
  border: 0;
}

.grupo-ritual > summary {
  min-height: 0;
  padding: 1pt 0;
}

.grupo-ritual__titulo {
  font-size: 8pt;
}

.grupo-ritual__lista {
  gap: 3pt;
  padding: 0;
}

/* Ritual: nome, círculo, elemento, resistência e detalhes fluem juntos; formas embaixo */
.ritual {
  flex-direction: row;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 1pt 10pt;
  padding: 3pt 6pt;
  border-left-width: 2pt;
}

.ritual__cabecalho,
.ritual__detalhes,
.ritual__resistencia-campos {
  display: contents;
}

.ritual .ataque__campo {
  flex: 0 1 auto;
}

.ritual__resistencia {
  flex: none;
  padding: 0 4pt;
  font-size: 8pt;
}

.ritual__formas {
  flex: 1 1 100%;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 3pt;
  padding-top: 2pt;
}

.forma {
  gap: 1pt;
  padding: 2pt 4pt;
}

.forma__cabecalho {
  min-height: 0;
}

.forma__corpo {
  gap: 1pt;
}

/* Custo e dano da forma na mesma linha */
.forma .campos-linha {
  flex-wrap: nowrap;
}

.forma .ataque__campo > .passo,
.forma .ataque__campo--dano {
  flex: 0 1 auto;
}

.forma .forma__dano,
.forma .forma__cura {
  width: 6em !important;
}

/* DT e afinidade dos rituais: painéis baixos */
.rituais__topo .painel {
  padding: 2pt 6pt;
}

.rituais__topo .painel__valor {
  min-width: 20pt;
  height: 20pt;
  font-size: 13pt;
}

.forma__nome {
  font-size: 8pt;
}

/* Inventário: itens em linhas, com cabeçalho */
.inventario__topo {
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
  gap: 4pt;
  margin-top: 3pt;
}

.limites {
  gap: 3pt;
}

.limite {
  padding: 0 5pt;
}

.limite__rotulo {
  font-size: 8pt;
}

.limite__valor {
  font-size: 9pt;
}

.carga__valor output {
  font-size: 13pt;
}

.itens__cabecalho,
.item {
  grid-template-columns: minmax(0, 2fr) minmax(0, 0.9fr) minmax(0, 0.4fr) minmax(0, 0.55fr) minmax(0, 0.4fr) minmax(0, 2.7fr) 0;
  grid-template-areas:
    "nome tipo cat esp qtd det acoes"
    "desc desc desc desc desc desc desc";
  column-gap: 6pt;
  row-gap: 0;
}

.itens__cabecalho {
  display: grid;
  padding: 0 0 1pt;
  font-size: 8pt;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--cor-texto-suave);
  border-bottom: 0.75pt solid #8c8c8c;
}

.itens__lista {
  display: block;
}

.item {
  align-items: center;
  padding: 1pt 0;
  background: none;
  border: 0;
  border-bottom: 0.5pt solid #ccc;
  border-radius: 0;
  box-shadow: none;
}

.item [data-rotulo]::before {
  display: none;
}

.item__tipo,
.item__categoria,
.item__espacos,
.item__quantidade,
.item__detalhes,
.item__descricao {
  margin-top: 0;
}

.item[data-tipo-item] .item__detalhes {
  display: block;
}

.item__det--protecao {
  gap: 0 6pt;
}

.item__det--protecao .caixa {
  height: auto;
}

/* "Patente" já aparece no campo logo abaixo */
.painel--patente > .painel__rotulo {
  display: none;
}

.item .item__mini {
  flex-direction: row;
  align-items: baseline;
  gap: 2pt;
}

.item .item__mini .controle {
  width: 3em;
}

.item--equipada .item__nome {
  padding-left: 0;
}

/* Descrição: rótulo à esquerda do texto */
.descricao__grade {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 2pt 10pt;
  margin-top: 3pt;
}

.descricao__campo {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: baseline;
  gap: 0 4pt;
}

.descricao__campo--largo {
  grid-column: 1 / -1;
}

/* --------------------------------------------------------------------------
   Etapa 10: condições e estados, biografia e diário
   Aparecem no papel: estados, condições ativas (com efeitos, rodadas e nota),
   retrato, biografia, aliados e rivais. O diário só com a preferência
   "Incluir diário na impressão" (html[data-diario-impressao="sim"]).
   -------------------------------------------------------------------------- */
.verificacoes,
.cond-adicionar,
.cond-personalizada,
.cond-aplicar,
.cond-mensagem,
.cond-cartao__topo .botao-icone,
.alerta-estado__acoes,
.alerta-estado__campo,
.alerta-estado__nota,
.selo-cond,
.seletor-atributo,
.cond-cartao__livro,
.cond-cartao__implica,
.selo--conferir,
.bio__retrato-acoes,
.bio__moldura[data-tem-retrato="false"],
#bio-retrato-msg,
.bio__diario .secao__controles,
.bio__arquivo {
  display: none !important;
}

input::placeholder,
textarea::placeholder {
  color: transparent !important;
}

.estados {
  display: flex;
  gap: 10pt;
  margin: 0 0 4pt;
}

.estado {
  min-height: 0;
  padding: 0;
  background: none;
  border: 0;
}

.alerta-estado {
  margin: 0 0 4pt;
  padding: 2pt 0 2pt 6pt;
  background: none;
  border: 0;
  border-left: 2pt solid #8c8c8c;
}

.alerta-estado__titulo {
  font-weight: 700;
  color: #111;
}

.cond-lista {
  display: block;
  margin: 0 0 4pt;
}

.cond-cartao {
  display: block;
  padding: 2pt 0;
  background: none;
  border: 0;
  border-bottom: 0.5pt solid #c4c4c4;
  break-inside: avoid;
}

.cond-cartao__topo,
.cond-cartao__titulo {
  display: inline;
}

.cond-cartao__categoria {
  display: none;
}

/* Lembretes das condições: uma linha curta, sem o estilo da tela */
.cond-cartao__lembretes {
  margin: 0;
  font-size: 8pt;
}

.cond-cartao__campos {
  display: flex;
  gap: 8pt;
}

.cond-cartao__campos .campo-texto {
  flex: 0 1 auto;
}

.cond-cartao__campos .campo-texto--largo {
  flex: 1 1 auto;
}

.bio__topo {
  display: block;
}

.bio__retrato {
  float: right;
  width: 32mm;
  margin: 0 0 4pt 8pt;
}

.bio__moldura {
  aspect-ratio: 4 / 5;
  border: 0.5pt solid #8c8c8c;
  border-radius: 0;
}

.bio__imagem {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.bio__pessoas {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8pt;
  margin-top: 4pt;
}

.bio__pessoa {
  display: block;
}

.bio__pessoa .controle {
  display: inline;
  width: auto !important;
}

/* Diário: fora do papel, a menos que a preferência esteja ligada */
.bio__diario {
  display: none !important;
}

html[data-diario-impressao="sim"] .bio__diario {
  display: block !important;
}

.bio__entrada {
  margin: 0 0 4pt;
  border: 0;
  border-bottom: 0.5pt solid #c4c4c4;
  break-inside: avoid;
}

.bio__resumo {
  display: flex;
  gap: 8pt;
  min-height: 0;
  padding: 0;
  font-weight: 700;
  list-style: none;
}

.bio__resumo::marker,
.bio__resumo::-webkit-details-marker {
  display: none;
}

.bio__entrada-campos,
.bio__entrada-corpo .campo-texto label,
.bio__entrada-corpo .botao {
  display: none !important;
}

.bio__entrada-corpo {
  padding: 0;
}

.estados,
.cond-lista,
.bio__itens,
.bio__entradas {
  padding: 0;
  list-style: none !important;
}

/* Blocos vazios não ocupam o papel */
.bio__lista:not(:has(li)),
.secao--condicoes:has(#cond-vazio:not([hidden])) #cond-ativas-titulo,
#cond-vazio {
  display: none !important;
}

/* --------------------------------------------------------------------------
   Ficha em páginas (js/ui-paginas.js): no papel todas as seções aparecem,
   na ordem do papel de antes (Identificação, Atributos, Recursos, Condições,
   Defesa, Testes, Perícias, Ataques, Habilidades, Rituais, Inventário, Biografia).
   -------------------------------------------------------------------------- */
.ficha-layout {
  display: flex !important;
  flex-direction: column;
  height: auto !important;
  overflow: visible !important;
}

.ficha-layout .zona,
.ficha-layout .paginas,
.ficha-layout .pagina-painel {
  display: contents !important;
}

.ficha-layout section[data-oculta] {
  display: block !important;
}

.ficha-layout .pagina-painel--rolagens,
.rolagens,
.indice,
.dock,
.dialogo--paginas,
.agente__ferramentas {
  display: none !important;
}

#resultado-rapido,
.pericia__grau-marca {
  display: none !important;
}

#secao-identificacao { order: 10; }
#secao-atributos { order: 20; }
#secao-recursos { order: 30; }
#secao-condicoes { order: 40; }
#secao-defesa { order: 50; }
#secao-testes { order: 55; }
#secao-pericias { order: 60; }
#secao-ataques { order: 70; }
#secao-habilidades { order: 80; }
#secao-alteracoes { order: 78; }
#secao-rituais { order: 90; }
#secao-inventario { order: 100; }
#secao-biografia { order: 110; }

/* Perícias no papel: sigla do atributo em texto simples; a marca de "menor" vira "▼" pequeno */
.atributo-sigla {
  min-width: 0 !important;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  font-size: 8pt !important;
  color: #000 !important;
  background: none !important;
  border: 0 !important;
  box-shadow: none !important;
}

.pericia--atributo-alterado .atributo-sigla::after {
  content: "•";
}

.marca-menor {
  display: inline-block;
  width: 6pt !important;
  height: 6pt !important;
}

.marca-menor svg {
  width: 6pt !important;
  height: 6pt !important;
}

.marca-menor[hidden] {
  display: none !important;
}

.pericia__dados {
  white-space: nowrap;
}

/* ---- Rodada 3: sem duplicar a Defesa, sem triângulo do <details>, botão do agente só texto ---- */
@media print {
  .resumo-derivados,
  .trilho__agente,
  .atributos__dica,
  .aviso-classe,
  .rolagens__voltar,
  .atributo__rolar {
    display: none !important;
  }

  details > summary {
    list-style: none;
  }

  details > summary::-webkit-details-marker,
  details > summary::marker {
    display: none;
    content: "";
  }
}

/* ---- Rodada 4: resumo recolhido não imprime, rótulos do atributo sem colidir, perícias de treino em preto ---- */
@media print {
  .defesa-detalhes > summary {
    display: none !important;
  }

  .atributo {
    gap: 2pt 8pt;
  }

  .atributo__campo {
    flex-wrap: nowrap;
    white-space: nowrap;
  }

  .atributo__campo label {
    font-size: 7pt;
    letter-spacing: 0.02em;
  }

  .pericia--requer-treino > .pericia__nome,
  .pericia--requer-treino .pericia__rotulo,
  .pericia--requer-treino .pericia__nome {
    color: #000 !important;
    opacity: 1 !important;
  }

  .itens:has(#lista-itens:empty) .itens__cabecalho {
    display: none !important;
  }
}

/* ---- Rodada 5: sigla basta (o nome cortava com reticências), bônus longe do valor e número de página ---- */
@media print {
  .atributo__nome {
    display: none !important;
  }

  .atributo {
    column-gap: 10pt;
  }

  .atributo__total {
    margin-left: 4pt;
  }

  @page {
    @bottom-right {
      content: "Página " counter(page) " de " counter(pages);
      font: 7pt sans-serif;
      color: #444;
    }
  }
}

/* ---- Rodada 6: perícias preenchem a primeira página; cabeçalhos nunca ficam órfãos ---- */
.tabela-pericias {
  break-inside: auto;
}

.tabela-pericias .pericia {
  break-inside: avoid;
}

.tabela-pericias thead {
  display: table-header-group;
}

.subtitulo,
.itens__cabecalho,
.secao__titulo,
.secao__cabecalho {
  break-after: avoid;
}

.itens__cabecalho {
  break-inside: avoid;
}

/* ---- Rodada 9: notas completas na impressão e cabeçalho de círculo junto da lista ---- */
@media print {
  .impressao-nota {
    display: block;
    font-size: 8pt;
    line-height: 1.3;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    color: #000;
  }

  .impressao-nota + * {
    margin-top: 0;
  }

  .grupo-ritual > summary,
  .grupo-ritual__titulo {
    break-after: avoid;
  }

  .grupo-ritual {
    break-inside: auto;
  }
}

@media print {
  .impressao-oculto {
    display: none !important;
  }
}

/* Perícias na impressão: a seta do "menor" reserva espaço, e a sigla fica sempre na mesma coluna */
@media print {
  .pericia__dados {
    text-align: left;
  }

  .pericia__dados > .marca-menor[hidden] {
    display: inline-flex !important;
    visibility: hidden;
  }
}

/* Regras opcionais: o botão da tela não vai para o papel (a SAN escondida também some) */
@media print {
  .regras-opcionais {
    display: none !important;
  }
}

/* Alterações de NEX: botões e escolhas já aparecem preenchidos; o painel vai inteiro para o papel */
@media print {
  .nex-energia__acoes,
  .nex-extras .botao,
  .campo__exposicao .passo__botao {
    display: none !important;
  }

  /* Identificação: o NEX (exposição) fica abaixo do nível; escondido (regra desligada), nada vai ao papel */
  .campo__exposicao {
    margin-top: 2pt;
  }

  .alteracao {
    break-inside: avoid;
    opacity: 1 !important;
  }
}

/* Só as alterações de NEX em vigor vão para o papel (o texto do livro fica no diálogo e na tela) */
@media print {
  .alteracao--aguardando,
  .nex-livro,
  .nex-energia__acoes {
    display: none !important;
  }
}
