/* Estilo provisório e funcional. O design (cores e imagens) vem na próxima etapa. */
:root {
  --fundo: #f4f5f7;
  --texto: #1d2733;
  --suave: #5b6776;
  --borda: #d5dae1;
  --cartao: #ffffff;
  --principal: #2f5d9e;
  --perigo: #b3261e;
}
* { box-sizing: border-box; }
body { margin: 0; font: 16px/1.45 system-ui, sans-serif; background: var(--fundo); color: var(--texto); }
h1 { font-size: 1.25rem; margin: 0; }
h2 { font-size: 1.15rem; margin: 0 0 .75rem; }
h3 { font-size: 1rem; margin: 0 0 .25rem; }
.topo { display: flex; flex-wrap: wrap; gap: .5rem 1rem; align-items: center; padding: .75rem 1rem; background: var(--cartao); border-bottom: 1px solid var(--borda); }
.topo nav { display: flex; gap: .4rem; flex: 1; flex-wrap: wrap; }
main { max-width: 960px; margin: 0 auto; padding: 1rem; }
.barra { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; justify-content: space-between; margin-bottom: 1rem; }
.card { background: var(--cartao); border: 1px solid var(--borda); border-radius: 10px; padding: .9rem 1rem; margin-bottom: .75rem; }
.card p { margin: .2rem 0; color: var(--suave); }
.acoes { display: flex; gap: .5rem; margin-top: .6rem; }
.etiqueta { display: inline-block; font-size: .75rem; padding: .1rem .5rem; border-radius: 99px; border: 1px solid var(--borda); color: var(--suave); margin-right: .3rem; }
button { font: inherit; padding: .5rem .9rem; border-radius: 8px; border: 1px solid var(--principal); background: var(--principal); color: #fff; cursor: pointer; }
button.sec { background: transparent; color: var(--principal); }
button.ativa { background: var(--principal); color: #fff; }
.topo nav button:not(.ativa) { background: transparent; color: var(--principal); }
button.perigo { background: transparent; color: var(--perigo); border-color: var(--perigo); }
button:disabled { opacity: .6; cursor: wait; }
form .campo { display: flex; flex-direction: column; gap: .25rem; margin-bottom: .8rem; }
form label { font-size: .9rem; color: var(--suave); }
input, select, textarea { font: inherit; padding: .5rem .6rem; border: 1px solid var(--borda); border-radius: 8px; background: #fff; width: 100%; }
input[type=checkbox] { width: auto; }
.linha-check { display: flex; align-items: center; gap: .5rem; margin-bottom: .5rem; }
.linha-check label { color: var(--texto); font-size: 1rem; }
.culto-linha { display: grid; grid-template-columns: 1.1fr .9fr 1.4fr 1.4fr auto; gap: .4rem; margin-bottom: .4rem; }
@media (max-width: 600px) { .culto-linha { grid-template-columns: 1fr 1fr; } .culto-linha input[name=desc], .culto-linha select[name=min] { grid-column: 1 / -1; } }
.grade-2 { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; }
@media (max-width: 600px) { .grade-2 { grid-template-columns: 1fr; } }
.dica { font-size: .85rem; color: var(--suave); margin: .25rem 0 .8rem; }
table { width: 100%; border-collapse: collapse; background: var(--cartao); border: 1px solid var(--borda); border-radius: 10px; overflow: hidden; }
th, td { text-align: left; padding: .55rem .6rem; border-bottom: 1px solid var(--borda); font-size: .92rem; vertical-align: top; }
th { background: #eef1f5; font-weight: 600; }
.rolagem { overflow-x: auto; }
.login { max-width: 360px; margin: 12vh auto; padding: 0 1rem; }
.vazio { color: var(--suave); text-align: center; padding: 1.5rem 0; }
#aviso { position: fixed; left: 50%; bottom: 1rem; transform: translateX(-50%); max-width: 92vw; }
#aviso div { background: #1d2733; color: #fff; padding: .6rem 1rem; border-radius: 8px; margin-top: .4rem; }
#aviso div.erro { background: var(--perigo); }

/* ---------- Fase 2: discipulado, calendário, relatório, árvore ---------- */
.selo { display: inline-block; min-width: 1.3rem; padding: 0 .35rem; border-radius: 99px; background: var(--perigo); color: #fff; font-size: .75rem; line-height: 1.3rem; text-align: center; }
.alerta { background: #fdecea; border: 1px solid #f1b8b3; color: #5f1a14; border-radius: 10px; padding: .75rem 1rem; margin-bottom: .75rem; }
.etq-alerta { background: #fdecea; border-color: #f1b8b3; color: var(--perigo); }
.disc-topo { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .75rem; }
.nome-disc { flex: 1 1 12rem; text-align: left; background: transparent; border: 0; color: var(--texto); font-weight: 600; font-size: 1.05rem; padding: .4rem .2rem; }
.seta { display: inline-block; width: 1.1rem; color: var(--suave); }
button.icone { padding: .45rem .55rem; line-height: 0; background: transparent; color: var(--principal); }
button.mini, a.botao.mini { padding: .25rem .6rem; font-size: .85rem; }
a.botao { display: inline-block; font: inherit; padding: .5rem .9rem; border-radius: 8px; border: 1px solid var(--principal); background: var(--principal); color: #fff; text-decoration: none; }
a.botao.sec { background: transparent; color: var(--principal); }
.disc-corpo { margin-top: .6rem; padding-top: .6rem; border-top: 1px solid var(--borda); }
details.pasta { margin: .2rem 0; }
details.pasta > summary { cursor: pointer; padding: .3rem 0; font-weight: 600; }
details.pasta.mes { margin-left: 1.4rem; }
details.pasta.mes > summary { font-weight: 500; }
.qtd { color: var(--suave); font-weight: 400; }
ul.datas { list-style: none; margin: .2rem 0 .4rem 1.6rem; padding: 0; }
ul.datas li { display: flex; justify-content: space-between; align-items: center; gap: .75rem; padding: .25rem 0; border-bottom: 1px dashed var(--borda); }
.modal { position: fixed; inset: 0; background: rgba(15, 23, 42, .55); display: flex; align-items: center; justify-content: center; padding: 1rem; z-index: 50; }
.modal-caixa { background: var(--cartao); border-radius: 14px; padding: 1rem 1.1rem 1.1rem; width: min(100%, 360px); max-height: 95vh; overflow: auto; }
.cal-nav { display: flex; align-items: center; justify-content: space-between; margin: .4rem 0; }
.cal-nav button { padding: .3rem .8rem; font-size: 1.2rem; line-height: 1; }
.cal-grade { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.cal-grade .cab { text-align: center; font-size: .8rem; color: var(--suave); padding: .2rem 0; }
.cal-grade .dia { aspect-ratio: 1; display: flex; align-items: center; justify-content: center; padding: 0; border-radius: 10px; border: 1px solid var(--borda); background: #fff; color: var(--texto); font-size: 1rem; }
.cal-grade .dia.vazio { border: 0; background: transparent; }
.cal-grade .dia.hoje { border-color: var(--principal); border-width: 2px; }
.cal-grade .dia.sel { background: var(--principal); color: #fff; border-color: var(--principal); }
.cal-grade .dia:disabled { opacity: .35; cursor: not-allowed; }
.cal-grade .dia.ja:disabled { opacity: 1; background: #e7eefb; color: var(--principal); text-decoration: line-through; }
.legenda { font-size: .8rem; color: var(--suave); margin: .5rem 0 0; display: flex; align-items: center; gap: .4rem; }
.pt { display: inline-block; width: .8rem; height: .8rem; border-radius: 3px; }
.ja-pt { background: #e7eefb; border: 1px solid var(--principal); }
.escolha { min-height: 1.5rem; margin: .5rem 0; }
.resumo-num { display: grid; grid-template-columns: repeat(3, 1fr); gap: .6rem; margin-bottom: 1rem; }
.resumo-num .card { text-align: center; margin: 0; }
.resumo-num b { display: block; font-size: 1.6rem; }
.resumo-num span { color: var(--suave); font-size: .85rem; }
.arv-fig { margin: 0 0 1rem; background: var(--cartao); border: 1px solid var(--borda); border-radius: 10px; padding: .6rem; }
.arv-fig figcaption { display: flex; justify-content: space-between; align-items: center; gap: .5rem; margin-bottom: .5rem; }
.arv-fig canvas { width: 100%; height: auto; display: block; border: 1px solid var(--borda); background: #fff; }
.acoes.atalhos { flex-wrap: wrap; }

/* ---------- Fase 3: eventos, inscrição, bilhete, camas, leitor ---------- */
.etq-ok { background: #e6f4ea; border-color: #a8d5b5; color: #17622e; }
.ev-descricao { white-space: pre-wrap; color: var(--texto) !important; }
.ev-total { background: #eef3fb; border: 1px solid #c9d8ef; border-radius: 10px; padding: .6rem .8rem; margin: .6rem 0; }
.ev-total-valor { font-size: 1.25rem; font-weight: 700; }
.pix-bloco canvas { display: block; margin: .5rem auto; max-width: 100%; height: auto; border: 1px solid var(--borda); }
.pix-bloco textarea { font: .8rem/1.3 ui-monospace, monospace; }
.ingresso canvas { width: 100%; height: auto; border-radius: 8px; border: 1px solid var(--borda); }
.subabas { display: flex; gap: .4rem; flex-wrap: wrap; margin-bottom: .8rem; }
.subabas button:not(.ativa) { background: transparent; color: var(--principal); }
.linha-cancelada td { opacity: .55; }
.tab-insc td button { margin: .1rem .2rem .1rem 0; }

.modal-camas { width: min(100%, 560px); }
.legenda-camas { display: flex; gap: 1rem; flex-wrap: wrap; font-size: .85rem; color: var(--suave); margin-bottom: .4rem; }
.legenda-camas i { display: inline-block; width: .9rem; height: .9rem; vertical-align: -.1rem; margin-right: .25rem; padding: 0; }
.grade-camas { display: grid; grid-template-columns: repeat(auto-fill, minmax(5.6rem, 1fr)); gap: .45rem; max-height: 50vh; overflow: auto; padding: .2rem; }
.beliche { display: grid; grid-template-columns: 1fr 1fr; gap: .2rem; border: 1px solid var(--borda); border-radius: 8px; padding: .2rem; background: #fafbfc; }
.beliche-n { grid-column: 1 / -1; text-align: center; font-size: .75rem; font-weight: 700; color: var(--suave); }
button.cama, i.cama { border-radius: 5px; border: 1px solid transparent; padding: .35rem 0; font-size: .78rem; white-space: nowrap; font-weight: 700; color: #fff; }
.cama.livre { background: #2e9e48; border-color: #237a37; }
.cama.ocupada { background: #2b6fd1; border-color: #1f56a6; opacity: .85; cursor: not-allowed; }
.cama.minha { background: #8b9096; border-color: #6c7177; }
i.cama { display: inline-block; }

.leitura { margin-top: .8rem; border-radius: 12px; padding: 1rem; text-align: center; min-height: 4rem; }
.leitura-ok { background: #1f9d4c; color: #fff; }
.leitura-erro { background: #b3261e; color: #fff; }
.leitura-titulo { font-size: 1.4rem; font-weight: 800; }
.leitura-nome { font-size: 1.15rem; margin-top: .3rem; }
#leitor-video { width: 100%; max-height: 50vh; border-radius: 10px; background: #000; margin-top: .6rem; }

/* ===== Fase 4 – cantina e caixa (PDV) ===== */
.tab-prod input { width: 100%; min-width: 5rem; }
.est-ajuste { display: inline-flex; gap: .3rem; align-items: center; margin-left: .6rem; }
.est-ajuste input { width: 4.2rem; padding: .25rem .4rem; }
.prod-form { display: grid; grid-template-columns: 2fr 1fr 1fr auto; gap: .6rem; align-items: end; }
.baixo { color: var(--perigo); }
.linha-cancelada { opacity: .55; }
@media (max-width: 640px) { .prod-form { grid-template-columns: 1fr 1fr; } .prod-form button { grid-column: 1 / -1; } }

.pdv { max-width: 1200px; margin: 0 auto; padding: .6rem; }
.pdv-topo { display: flex; gap: 1rem; align-items: center; justify-content: space-between; flex-wrap: wrap; margin-bottom: .6rem; }
.pdv-caixa { display: flex; gap: .4rem; align-items: center; }
.pdv-caixa input { width: 9rem; }
.pdv-corpo { display: grid; grid-template-columns: 1fr 380px; gap: .8rem; align-items: start; }
.pdv-produtos { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .6rem; }
.pdv-prod { position: relative; display: flex; flex-direction: column; gap: .2rem; align-items: flex-start; text-align: left; min-height: 96px; padding: .7rem; background: var(--cartao); color: var(--texto); border: 2px solid var(--borda); border-radius: 12px; }
.pdv-prod.no-carrinho { border-color: var(--principal); background: #eaf1fb; }
.pdv-prod.esgotado { opacity: .45; }
.pdv-prod-nome { font-weight: 700; font-size: 1.05rem; }
.pdv-prod-valor { font-size: 1.1rem; color: var(--principal); }
.pdv-prod-est { font-size: .8rem; color: var(--suave); }
.pdv-prod-qtd { position: absolute; top: .4rem; right: .5rem; background: var(--principal); color: #fff; border-radius: 999px; min-width: 1.8rem; height: 1.8rem; display: flex; align-items: center; justify-content: center; font-weight: 700; }
.pdv-venda { position: sticky; top: .6rem; background: var(--cartao); border: 1px solid var(--borda); border-radius: 12px; padding: .8rem; }
.pdv-venda h3 { margin-top: 0; }
.pdv-itens { max-height: 38vh; overflow: auto; }
.pdv-linha { display: grid; grid-template-columns: 1fr auto auto; gap: .5rem; align-items: center; padding: .4rem 0; border-bottom: 1px solid var(--borda); }
.pdv-linha-nome { display: flex; flex-direction: column; }
.pdv-qtd { display: flex; align-items: center; gap: .4rem; }
.pdv-qtd button { width: 2.4rem; height: 2.4rem; padding: 0; font-size: 1.3rem; }
.pdv-qtd span { min-width: 1.6rem; text-align: center; font-weight: 700; }
.pdv-sub { min-width: 5rem; text-align: right; font-weight: 700; }
.pdv-total { display: flex; justify-content: space-between; align-items: baseline; font-size: 1.3rem; padding: .7rem 0; }
.pdv-total b { font-size: 1.9rem; }
.pdv-formas { display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem; }
.pdv-forma { padding: .9rem .3rem; font-size: 1.1rem; font-weight: 700; background: transparent; color: var(--principal); border: 2px solid var(--principal); border-radius: 10px; }
.pdv-forma.ativa { background: var(--principal); color: #fff; }
.pdv-dinheiro { margin-top: .6rem; }
.pdv-dinheiro input { font-size: 1.4rem; width: 100%; }
.pdv-notas { display: flex; flex-wrap: wrap; gap: .4rem; margin: .5rem 0; }
.pdv-troco { font-size: 1.3rem; font-weight: 700; min-height: 1.8rem; }
.pdv-troco.falta { color: var(--perigo); }
.pdv-troco.troco-ok { color: #1b7a3a; }
.pdv-acoes { display: grid; grid-template-columns: 1fr auto; gap: .5rem; margin-top: .8rem; }
.pdv-concluir { padding: 1rem; font-size: 1.2rem; font-weight: 700; }
@media (max-width: 860px) { .pdv-corpo { grid-template-columns: 1fr; } .pdv-venda { position: static; } }

.modal-cupom .modal-caixa { width: min(100%, 340px); }
.cupom-wrap { background: #fff; border: 1px solid var(--borda); padding: .3rem; }
.cupom-wrap canvas { width: 100%; height: auto; display: block; }
.cupom-acoes { justify-content: center; }

@media print {
  body > *:not(.modal-cupom), #app, #aviso { display: none !important; }
  .modal-cupom { position: static; background: none; padding: 0; display: block; }
  .modal-cupom .modal-caixa { width: auto; max-height: none; overflow: visible; padding: 0; box-shadow: none; }
  .cupom-acoes, .modal-cupom .dica { display: none !important; }
  .cupom-wrap { border: 0; padding: 0; }
  .cupom-wrap canvas { width: 50mm; }
  @page { margin: 0; }
}

/* ===== Fase 5 – escalas ===== */
.esc-mes { display: flex; align-items: center; justify-content: center; gap: 1rem; margin: .4rem 0 .8rem; }
.esc-mes button { width: 2.6rem; height: 2.6rem; padding: 0; font-size: 1.4rem; }
.esc-dia h3 { margin: 0 0 .4rem; }
.esc-turno { display: grid; grid-template-columns: 4rem 1fr auto; gap: .6rem; align-items: center; padding: .45rem 0; border-top: 1px solid var(--borda); }
.esc-hora { font-size: 1.05rem; }
.esc-pessoas { display: flex; flex-wrap: wrap; gap: .3rem; }
.esc-chip { margin: 0; }
.esc-dias { display: flex; flex-wrap: wrap; gap: .4rem .9rem; }
.esc-chk { display: inline-flex; align-items: center; gap: .4rem; }
.modal-escala { width: min(100%, 440px); }
.esc-lista { max-height: 55vh; overflow: auto; margin-bottom: .6rem; }
.esc-linha { display: grid; grid-template-columns: 1fr auto; gap: .5rem; align-items: center; padding: .4rem 0; border-bottom: 1px solid var(--borda); }
.esc-linha select { min-width: 8rem; }
@media (max-width: 560px) { .esc-turno { grid-template-columns: 3.4rem 1fr; } .esc-turno button { grid-column: 1 / -1; } }

.minha-escala { margin-bottom: 1rem; }
.cal-grade { display: grid; grid-template-columns: repeat(7, 1fr); gap: 3px; }
.cal-cab { text-align: center; font-size: .75rem; color: var(--suave); padding: .2rem 0; }
.cal-dia, .cal-vazio { min-height: 3.4rem; border-radius: 8px; }
.cal-dia { background: var(--fundo); padding: .25rem; display: flex; flex-direction: column; gap: 2px; font-size: .85rem; }
.cal-dia.hoje { outline: 2px solid var(--principal); }
.cal-dia.marcado { background: #dbe8fb; border: 1px solid var(--principal); }
.cal-num { font-weight: 700; }
.cal-hora { background: var(--principal); color: #fff; border-radius: 6px; font-size: .7rem; padding: 0 .25rem; text-align: center; }
.cal-lista { margin-top: .8rem; }
.cal-lista { padding-left: 0; }
.cal-lista li { display: flex; flex-wrap: wrap; justify-content: flex-start; gap: .1rem .6rem; }
.esc-cfg-dia { display: grid; grid-template-columns: 7.5rem 1fr; gap: .5rem; align-items: center; margin-bottom: .35rem; }

/* ===== Fase 6 – botões da tela inicial e cadastro de membros ===== */
.topo .btn-membro { background: #fff; color: var(--principal); border: 2px solid var(--principal); font-weight: 700; }
.topo .btn-cadastro, button.btn-cadastro { background: var(--principal); color: #fff; border: 2px solid var(--principal); font-weight: 700; }
.topo .btn-membro, .topo .btn-cadastro, .topo .btn-inicio { padding: .35rem .7rem; font-size: .85rem; border-radius: 8px; }
.grupo-min { border: 1px solid var(--borda); border-radius: 8px; display: flex; flex-wrap: wrap; gap: .4rem 1rem; padding: .6rem .8rem; }
.grupo-min legend { padding: 0 .3rem; font-size: .9rem; color: var(--suave); }
.solic-item { border-top: 1px solid var(--borda); padding: .7rem 0; }
.cad-ok { text-align: center; }
form .grupo-min { flex-direction: row; }
.esc-chk input { width: auto; }

/* ===== Fase 7 ===== */
.extra-pessoa { display: grid; grid-template-columns: 1fr 9.5rem 9.5rem auto; gap: .4rem; margin-bottom: .4rem; align-items: center; }
@media (max-width: 560px) { .extra-pessoa { grid-template-columns: 1fr auto; } .extra-pessoa input:nth-child(2), .extra-pessoa input:nth-child(3) { grid-column: 1; } }

/* cantina online */
.ped-produtos { display: grid; gap: .5rem; margin-bottom: 1rem; }
.ped-prod { display: flex; align-items: center; justify-content: space-between; gap: .6rem; padding: .6rem .8rem; background: var(--cartao); border: 1px solid var(--borda); border-radius: 10px; }
.ped-prod.no-carrinho { border-color: var(--principal); }
.ped-aguardando { background: #fde0de; border-color: #c0392b !important; }
.ped-pago { background: #dcf3df; border-color: #2e8b4a !important; }
.ped-entregue { background: #e4e6ea; border-color: #8b94a1 !important; color: #3d4450; }
.etiqueta.ped-aguardando { color: #8e2417; }
.etiqueta.ped-pago { color: #1c5e30; }
.coz-lista { display: grid; gap: .8rem; padding: 1rem; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); align-items: start; }
.coz-lista > .vazio, .coz-lista > details { grid-column: 1 / -1; }
.coz-pedido { background: #dcf3df; border: 2px solid #2e8b4a; }
.coz-itens { list-style: none; padding: 0; margin: .4rem 0; font-size: 1.3rem; }
.coz-itens li { padding: .15rem 0; }
.coz-pedido button { width: 100%; font-size: 1.2rem; padding: .8rem; }

/* escalas */
.cal-item { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .4rem; }
.cal-acoes { display: flex; flex-wrap: wrap; gap: .4rem; }
.esc-musicas { margin-top: .3rem; font-size: .9rem; }

/* ingresso (reimpressão) */
.modal-ingresso .modal-caixa { width: min(100%, 640px); }
@media print { .modal-ingresso .cupom-wrap canvas { width: 180mm; } .modal-ingresso .modal-caixa { padding: 10mm; } }
.modal-ingresso .cupom-wrap canvas { width: 100%; }

/* imagens */
.img-linha { display: flex; gap: .8rem; align-items: center; flex-wrap: wrap; }
.img-prev { width: 200px; aspect-ratio: 16 / 9; border: 1px dashed var(--borda); border-radius: 10px; display: flex; align-items: center; justify-content: center; overflow: hidden; background: #f5f6f8; }
.img-prev.redonda { width: 96px; aspect-ratio: 1; border-radius: 50%; }
.img-prev img { width: 100%; height: 100%; object-fit: cover; display: block; }
.img-botoes { display: flex; flex-direction: column; gap: .4rem; align-items: flex-start; }
.botao-arquivo { display: inline-block; padding: .5rem .9rem; border-radius: 8px; border: 1px solid var(--principal); color: var(--principal); cursor: pointer; background: transparent; }
.min-icone { display: inline-flex; align-items: center; justify-content: center; flex: none; border-radius: 50%; overflow: hidden; background: #dbe4f3; color: var(--principal); font-weight: 700; width: 56px; height: 56px; font-size: 1.4rem; }
.min-icone.grande { width: 64px; height: 64px; font-size: 1.6rem; }
.min-icone.pequeno { width: 28px; height: 28px; font-size: .9rem; vertical-align: middle; }
.min-icone img { width: 100%; height: 100%; object-fit: cover; display: block; }
.min-topo { display: flex; align-items: center; gap: .8rem; margin-bottom: .4rem; }
.leitor-corpo { padding: 1rem; max-width: 640px; margin: 0 auto; }
.esc-meus { margin-top: .3rem; align-items: center; }

/* ---- Fase 9: cabeçalho, ícones, menu do celular ---- */
.topo-logado { flex-wrap: nowrap; gap: .5rem .8rem; position: relative; }
.logo-topo { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; border: 1px solid var(--borda); flex: none; background: #fff; }
.topo-usuario { font-weight: 600; font-size: .95rem; white-space: nowrap; max-width: 12rem; overflow: hidden; text-overflow: ellipsis; }
.menu-btn { display: none; padding: .3rem .7rem; font-size: 1.3rem; line-height: 1; }
.topo-logado nav { flex-wrap: wrap; }
.com-icone::before { content: ''; display: inline-block; width: 1.15em; height: 1.15em; margin-right: .4rem; vertical-align: -.2em; background: currentColor;
  -webkit-mask: var(--ico) center / contain no-repeat; mask: var(--ico) center / contain no-repeat; }
.mais::before { content: '+'; font-weight: 700; font-size: 1.2em; line-height: 1; margin-right: .4rem; vertical-align: -.05em; }
@media (max-width: 860px) {
  .menu-btn { display: inline-block; margin-left: auto; }
  .topo-logado nav { display: none; position: absolute; top: 100%; left: 0; right: 0; z-index: 20; flex-direction: column; gap: .3rem; padding: .6rem 1rem 1rem; background: var(--cartao); border-bottom: 1px solid var(--borda); box-shadow: 0 8px 16px rgba(0,0,0,.12); }
  .topo-logado nav.aberto { display: flex; }
  .topo-logado nav button { text-align: left; width: 100%; }
  .topo-usuario { max-width: 7rem; font-size: .85rem; }
}

/* ---- imagem do evento ---- */
.ev-imagem { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: 10px; background: #e5e7eb; }
.ev-card { position: relative; display: grid; grid-template-columns: minmax(0, 1fr); gap: .6rem 1rem; align-items: start; }
.ev-card.com-imagem { grid-template-columns: minmax(0, 1fr) minmax(0, 300px); padding-right: 5.5rem; }
.ev-card .ev-tipo { position: absolute; top: .8rem; right: .8rem; margin: 0; }
.ev-card .ev-info h3 { margin-bottom: .2rem; }
.ev-detalhe.com-imagem { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 360px); gap: 1rem; align-items: start; }
@media (max-width: 700px) {
  .ev-card.com-imagem { grid-template-columns: minmax(0, 1fr); padding-right: 1rem; }
  .ev-card.com-imagem .ev-imagem { order: -1; max-width: 420px; }
  .ev-card .ev-info { padding-right: 4.5rem; }
  .ev-card.com-imagem .ev-tipo { top: auto; bottom: .8rem; right: .8rem; }
  .ev-card.com-imagem .ev-info { padding-right: 0; }
  .ev-detalhe.com-imagem { grid-template-columns: minmax(0, 1fr); }
  .ev-detalhe.com-imagem .ev-imagem { order: -1; max-width: 420px; }
}

/* ---- avisos no Início, pessoas inativas, escala ---- */
.avisos-inicio .aviso-bloco { margin-bottom: .6rem; }
.avisos-inicio .aviso-bloco.alerta { padding: .6rem .8rem; }
tr.inativa td { color: var(--suave); background: #f3f4f6; }
.esc-chip.confirmada { background: #e7f5ea; border-color: #9fd3ab; color: #1d5f2c; }
.etq-ok { background: #e7f5ea; border-color: #9fd3ab; color: #1d5f2c; }
td .acoes { flex-wrap: wrap; }

/* ===== Fase 10 ===== */
.logo-principal { height: 57px; width: auto; display: block; }

/* avisos: carrossel */
.carrossel-janela { overflow: hidden; }
.carrossel-pista { display: flex; transition: transform .5s ease; }
.aviso-slide { flex: 0 0 100%; min-width: 0; box-sizing: border-box; }
.aviso-titulo { margin: 0 0 .3rem; font-weight: 700; font-size: 1.1rem; }
.aviso-texto { margin: 0 0 .6rem; white-space: pre-wrap; }
.aviso-img { display: block; width: 100%; max-width: 768px; height: auto; border-radius: 10px; aspect-ratio: 16 / 9; object-fit: cover; }
.aviso-img.peq { max-width: 320px; margin-bottom: .6rem; }
.carrossel-barra { display: flex; align-items: center; justify-content: space-between; margin-top: .6rem; gap: .6rem; }
.carrossel-pontos { display: flex; gap: .35rem; }
.carrossel-pontos i { width: 8px; height: 8px; border-radius: 50%; background: var(--borda); display: block; }
.carrossel-pontos i.ativo { background: var(--principal); }
.aviso-gestor { border-left: 0; padding: 0; }
/* live */
.live-video { position: relative; width: 100%; max-width: 1280px; aspect-ratio: 16 / 9; background: #000; border-radius: 10px; overflow: hidden; }
.live-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
/* semana de cultos */
.semana-grade { display: grid; grid-template-columns: repeat(7, 1fr); gap: .4rem; }
.semana-dia { border: 1px solid var(--borda); border-radius: 8px; padding: .4rem; min-height: 5rem; display: flex; flex-direction: column; gap: .3rem; }
.semana-dia.hoje { border-color: var(--principal); background: #eef4fd; }
.semana-cab { display: flex; flex-direction: column; font-size: .8rem; }
.semana-cab span { color: var(--suave); }
.semana-culto { display: flex; flex-direction: column; gap: .2rem; align-items: flex-start; }
.semana-hora { background: var(--principal); color: #fff; border-radius: 6px; font-size: .75rem; padding: 0 .35rem; }
.semana-icones { display: flex; flex-wrap: wrap; gap: .2rem; }
.semana-icones .min-icone.pequeno { width: 32px; height: 32px; }
.semana-vazio { color: var(--suave); }
.semana-legenda { list-style: none; padding: 0; margin: .8rem 0 0; display: grid; gap: .4rem; }
.semana-legenda li { display: flex; gap: .5rem; align-items: center; }
.semana-ponto { background: #eef0f4; }
@media (max-width: 700px) { .semana-grade { grid-template-columns: 1fr; } .semana-dia { flex-direction: row; flex-wrap: wrap; align-items: center; min-height: 0; } .semana-cab { flex-direction: row; gap: .5rem; min-width: 8rem; } }
/* pessoas: botões de ícone */
.btn-icone { width: 34px; height: 34px; padding: 0; border-radius: 8px; background: #fff; border: 1px solid var(--borda); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; }
.btn-icone::before { content: ''; width: 20px; height: 20px; background: var(--principal); -webkit-mask: var(--ico) center / contain no-repeat; mask: var(--ico) center / contain no-repeat; }
.btn-icone:hover { background: #eef4fd; border-color: var(--principal); }
.col-nome { white-space: nowrap; min-width: 16rem; }
td.col-acoes { white-space: nowrap; }
.col-acoes .acoes { flex-wrap: nowrap; gap: .3rem; }

/* ===== Fase 11 ===== */
.titulo-secao { margin: 0 0 .5rem; color: var(--principal); font-size: 1.27rem; font-weight: 700; }
.abas-inicio { display: flex; gap: 1.2rem; margin-bottom: .6rem; border-bottom: 1px solid var(--borda); }
.aba-ini { background: none !important; border: 0; border-bottom: 3px solid transparent; border-radius: 0; padding: .1rem .1rem .35rem; color: #6d86ad; font-size: 1.27rem; font-weight: 700; cursor: pointer; }
.aba-ini.aba-on { color: var(--principal); border-bottom-color: var(--principal); }
.aviso-img { max-width: 768px; }
.aniv-lista li { padding: .3rem .4rem; border-radius: 6px; }
.aniv-lista li.aniv-hoje { background: var(--principal); color: #fff; font-weight: 700; }
.aniv-data { color: var(--suave); font-size: .9rem; }
.aniv-lista li.aniv-hoje .aniv-data { color: #fff; }
.igreja-chip { background: #fff; border: 1px solid var(--borda); }
.igreja-chip img { object-fit: contain; padding: 3px; box-sizing: border-box; }
.btn-icone.excluir::before { background: #c62828; }
.btn-icone.excluir:hover { background: #fdecea; border-color: #c62828; }
/* tela inicial pública: seções lado a lado no computador */
main.publico-largo { max-width: 1280px; }
.pub-grade { display: grid; grid-template-columns: 1fr; gap: 0 1rem; align-items: start; }
.pub-grade > div:empty { display: none; }
@media (min-width: 1000px) { .pub-grade { grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); } }
.pub-grade .card { margin-bottom: 1rem; }
.semana { container-type: inline-size; }
@container (max-width: 640px) {
  .semana-grade { grid-template-columns: 1fr; }
  .semana-dia { flex-direction: row; flex-wrap: wrap; align-items: center; min-height: 0; }
  .semana-cab { flex-direction: row; gap: .5rem; min-width: 8rem; }
  .semana-culto { flex-direction: row; align-items: center; gap: .3rem; }
}
/* fotos dos eventos – galeria em mosaico */
.fotos-grade { column-width: 210px; column-gap: .7rem; }
.foto-item { position: relative; margin: 0 0 .7rem; break-inside: avoid; border-radius: 28px; overflow: hidden; background: #e8ecf3; box-shadow: 0 1px 3px rgba(20,40,80,.12); transition: box-shadow .25s, transform .25s; }
.foto-item:hover { box-shadow: 0 10px 24px rgba(20,40,80,.22); transform: translateY(-2px); }
.foto-item img { width: 100%; height: auto; display: block; transition: transform .5s ease; animation: foto-aparece .45s ease both; }
.foto-item:hover img { transform: scale(1.05); }
@keyframes foto-aparece { from { opacity: 0; } to { opacity: 1; } }
.foto-item::after { content: ''; position: absolute; inset: auto 0 0 0; height: 45%; background: linear-gradient(to top, rgba(10,20,40,.55), transparent); opacity: 0; transition: opacity .25s; pointer-events: none; }
.foto-item:hover::after { opacity: 1; }
.foto-abrir { display: block; width: 100%; padding: 0; border: 0; background: none; cursor: zoom-in; }
.btn-baixar { position: absolute; right: .55rem; bottom: .55rem; z-index: 2; width: 36px; height: 36px; padding: 0; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: rgba(255,255,255,.95); color: var(--principal); border: 0; box-shadow: 0 2px 8px rgba(0,0,0,.25); cursor: pointer; opacity: 0; transform: translateY(6px); transition: opacity .2s, transform .2s; }
.foto-item:hover .btn-baixar, .btn-baixar:focus-visible { opacity: 1; transform: none; }
@media (hover: none) { .btn-baixar { opacity: 1; transform: none; } .foto-item:hover { transform: none; } }
.btn-baixar.excluir-foto { color: #c62828; font-weight: 700; }
.foto-rostos { position: absolute; left: .55rem; top: .55rem; z-index: 2; background: rgba(255,255,255,.95); backdrop-filter: blur(4px); }
.modal-foto { max-width: min(96vw, 1100px) !important; width: 100%; }
.foto-grande { position: relative; display: flex; align-items: center; justify-content: center; margin-bottom: .4rem; }
.foto-grande img { max-width: 100%; max-height: 72vh; display: block; border-radius: 28px; box-shadow: 0 8px 30px rgba(0,0,0,.25); }
.foto-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 44px; height: 44px; padding: 0; border-radius: 50%; background: rgba(255,255,255,.92); color: var(--principal); border: 0; font-size: 1.8rem; line-height: 1; box-shadow: 0 2px 10px rgba(0,0,0,.3); cursor: pointer; }
.foto-nav.ant { left: .5rem; } .foto-nav.prox { right: .5rem; }
.foto-contagem { margin: 0 0 .5rem; }
.aniv-lista { padding-left: 0; list-style: none; margin: 0; }
.aba-ini:hover { color: var(--principal); }

/* ===== Fase 12 ===== */
.topo-botoes { display: flex; gap: .5rem; margin-left: auto; align-items: stretch; }
.topo-botoes button { white-space: nowrap; }
.topo .btn-inicio { background: #fff; color: var(--principal); border: 2px solid var(--borda); font-weight: 700; }
.topo .btn-inicio:hover { border-color: var(--principal); }
@media (max-width: 600px) {
  .topo .logo-principal { flex: 0 0 auto; }
  .topo-botoes { width: 100%; margin-left: 0; gap: .35rem; }
  .topo-botoes button { flex: 1 1 0; min-width: 0; white-space: normal; padding: .45rem .3rem !important; font-size: .78rem !important; line-height: 1.15; }
}
/* galeria no celular: miniaturas pequenas (3 por linha) */
@media (max-width: 600px) {
  .fotos-grade { column-width: auto; column-count: 3; column-gap: .4rem; }
  .foto-item { border-radius: 14px; margin-bottom: .4rem; }
  .btn-baixar { width: 26px; height: 26px; right: .25rem; bottom: .25rem; }
  .btn-baixar svg { width: 13px; height: 13px; }
  .foto-rostos { font-size: .6rem; padding: 0 .3rem; left: .25rem; top: .25rem; }
  .foto-item:hover img { transform: none; }
}
/* rodapé */
.rodape-publico { margin: 1.5rem 0 .5rem; padding: 1rem; background: var(--cartao); border: 1px solid var(--borda); border-radius: 14px; }
.rodape-blocos { display: flex; flex-wrap: wrap; gap: 1rem 2.5rem; justify-content: center; }
.rodape-igreja { display: flex; flex-direction: column; align-items: center; gap: .3rem; text-align: center; }
.rodape-icones { display: flex; gap: .8rem; align-items: center; flex-wrap: wrap; justify-content: center; margin-top: .2rem; }
.rede { display: inline-flex; align-items: center; gap: .4rem; text-decoration: none; color: var(--suave); transition: transform .25s; }
.rede:hover, .rede:focus-visible { transform: translateY(-2px); }
.rede.com-texto span { font-size: .9rem; font-weight: 600; }
.rede.rede-mini svg { width: 18px; height: 18px; vertical-align: middle; }
.semana-legenda .rede-mini { margin-left: .15rem; }
.rodape-direitos { text-align: center; color: var(--suave); font-size: .85rem; margin: .6rem 0 1.2rem; }

/* topo público: logo no centro (maior), Início à esquerda e botões de membro à direita */
.topo-publico { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: .5rem 1rem; }
.topo-publico .topo-centro { display: flex; flex-direction: column; align-items: center; text-align: center; min-width: 0; }
.topo-publico .logo-principal { height: 114px; max-width: 100%; margin: 0 auto; object-fit: contain; }   /* 57px x 2 no computador */
.topo-publico .lema { margin: .25rem 0 0; font-size: 1rem; font-weight: 600; color: var(--principal); font-style: italic; }
.topo-publico .topo-lado { display: flex; gap: .5rem; align-items: center; }
.topo-publico .topo-esq { justify-content: flex-start; }
.topo-publico .topo-dir { justify-content: flex-end; }
@media (max-width: 600px) {
  .topo-publico { grid-template-columns: auto minmax(0, 1fr) auto; gap: .3rem; padding: .6rem .5rem; }
  .topo-publico .logo-principal { height: 86px; }   /* 57px x 1,5 no celular (encolhe em telas muito estreitas) */
  .topo-publico .lema { font-size: .72rem; line-height: 1.2; }
  .topo-publico .topo-dir { flex-direction: column; align-items: stretch; gap: .3rem; }
  .topo-publico .topo-lado button { padding: .35rem .45rem !important; font-size: .72rem !important; line-height: 1.15; white-space: normal; }
}

/* ===== Fase 13: despesas e resultado ===== */
.desp-form { display: grid; grid-template-columns: 2fr 1fr 1fr 1.4fr auto; gap: .6rem; align-items: end; }
.desp-form:not(:has(#dp-prod)) { grid-template-columns: 2fr 1fr 1fr auto; }
@media (max-width: 720px) { .desp-form, .desp-form:not(:has(#dp-prod)) { grid-template-columns: 1fr 1fr; } .desp-form .campo:first-child { grid-column: 1 / -1; } }
.res-cards { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; margin: .8rem 0; }
@media (max-width: 520px) { .res-cards { grid-template-columns: 1fr; } }
.res-card { display: flex; flex-direction: column; gap: .15rem; text-align: left; padding: 1rem 1.1rem; border-radius: 14px; border: 2px solid var(--borda); background: var(--cartao); color: var(--texto, #1b2430); cursor: pointer; }
.res-card span { font-size: .9rem; color: var(--suave); font-weight: 600; }
.res-card b { font-size: 1.7rem; }
.res-card small { color: var(--suave); }
.res-card:hover, .res-card.res-aberto { border-color: currentColor; }
.res-ent { color: #2f5d9e; } .res-ent b { color: #2f5d9e; }
.res-sai { color: #c26400; } .res-sai b { color: #c26400; }
.res-card small, .res-card span { color: var(--suave); }
.res-analitico { margin-top: 0; }
.tab-res td.num, .tab-res th.num { text-align: right; white-space: nowrap; }
.tab-res tr.tot td { border-top: 2px solid var(--borda); background: #f4f7fb; }
.res-final { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; margin: 1.2rem 0; padding: 1.1rem 1.3rem; border-radius: 14px; font-size: 1.05rem; font-weight: 700; }
.res-final b { font-size: 1.9rem; }
.res-pos { background: #e6f4ea; color: #1d6b3a; border: 2px solid #9fd3ab; }
.res-neg { background: #fdeaea; color: #a32f23; border: 2px solid #e6a59d; }
.res-zero { background: #eef2f8; color: #3a4656; border: 2px solid var(--borda); }
.res-aviso { background: #fff7e0; border: 1px solid #ecd58a; padding: .6rem .8rem; border-radius: 10px; }
@media (max-width: 520px) { .tab-res th, .tab-res td { padding: .4rem .35rem; font-size: .8rem; } .res-card b { font-size: 1.45rem; } }

/* ===== Fase 14: topo da gestão do evento ===== */
.gestao-topo { align-items: flex-start; }
.gestao-topo .situacao-ev { margin: .35rem 0 0; }

.lote-form { display: grid; grid-template-columns: 1.2fr 2fr 1fr 1fr 1fr 1fr; gap: .6rem; align-items: end; }
@media (max-width: 720px) { .lote-form { grid-template-columns: 1fr 1fr; } .lote-form .campo:nth-child(-n+2) { grid-column: 1 / -1; } }
.lote-info { margin: .3rem 0; padding: .5rem .7rem; background: #eef4fb; border: 1px solid #c7d8ee; border-radius: 10px; }

/* ===== Fase 15: gestão do ingresso ===== */
.ing-adm input[type=color] { width: 100%; height: 2.6rem; padding: .15rem; border-radius: 8px; border: 1px solid var(--borda); background: #fff; cursor: pointer; }
.ing-prev-logo { width: 150px; height: 50px; border-radius: 8px; background: repeating-conic-gradient(#e9edf3 0% 25%, #fff 0% 50%) 50% / 14px 14px; display: flex; align-items: center; justify-content: center; overflow: hidden; }
.ing-prev-logo img { max-width: 100%; max-height: 100%; object-fit: contain; }
.ing-aviso { color: #8a5a00; }
.card.ingresso canvas { max-width: 100%; height: auto; display: block; }

/* ===== Fase 16: nome do usuário e "Minha senha" no topo ===== */
.topo-conta { margin-left: auto; display: flex; flex-direction: column; align-items: flex-end; gap: .1rem; line-height: 1.25; text-align: right; }
.topo-conta .topo-usuario { font-weight: 400; font-size: .95rem; color: var(--suave); max-width: 14rem; }
.topo-conta .topo-links { font-size: .95rem; color: var(--suave); white-space: nowrap; }
.topo-conta button.link { background: none; border: 0; padding: 0; margin: 0; min-height: 0; width: auto; font: inherit; color: #1a4fd6; text-decoration: underline; cursor: pointer; border-radius: 0; box-shadow: none; }
.topo-conta button.link:hover, .topo-conta button.link:focus-visible { color: #0f3aa8; }
@media (max-width: 760px) { .topo-conta .topo-usuario, .topo-conta .topo-links { font-size: .85rem; } .topo-conta .topo-usuario { max-width: 8rem; } }

/* ===== Fase 17 ===== */
select.forma-compra { width: auto; max-width: 11rem; padding: .2rem .35rem; font-size: .85rem; }

/* ===== Fase 18 ===== */
/* Ministérios: 3 por fileira no computador; no celular, uma por linha, mais fina */
.grade-min { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .8rem; }
.grade-min .card-min { margin: 0; padding: .8rem; display: flex; flex-direction: column; }
.grade-min .card-min .min-topo { gap: .6rem; }
.grade-min .card-min .min-icone.grande { width: 48px; height: 48px; font-size: 1.2rem; }
.grade-min .card-min h3 { font-size: 1rem; overflow-wrap: anywhere; }
.grade-min .card-min p { margin: .25rem 0; }
.grade-min .card-min .min-info { font-size: .85rem; color: var(--suave); }
.grade-min .card-min .acoes { margin-top: auto; padding-top: .4rem; }
@media (max-width: 900px) { .grade-min { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) {
  .grade-min { grid-template-columns: 1fr; gap: .5rem; }
  .grade-min .card-min { padding: .5rem .7rem; display: grid; grid-template-columns: 1fr auto; column-gap: .6rem; align-items: center; }
  .grade-min .card-min .min-topo { grid-column: 1; margin: 0; }
  .grade-min .card-min .min-icone.grande { width: 36px; height: 36px; font-size: 1rem; }
  .grade-min .card-min > p { grid-column: 1; }
  .grade-min .card-min .acoes { grid-column: 2; grid-row: 1 / span 3; margin: 0; padding: 0; flex-direction: column; }
}
#lid-achadas { display: flex; flex-wrap: wrap; gap: .3rem; margin: .4rem 0; }
.titulo-lista { margin: .8rem 0 .4rem; display: flex; align-items: center; gap: .5rem; }
.lista-encerrados { margin-top: .6rem; }
.lista-encerrados .card { opacity: .92; }
.lote-info ul { margin: .3rem 0 0 1.1rem; padding: 0; }

.so-leitor { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.login-marca { text-align: center; margin-bottom: 1rem; }
.login-marca .logo-principal { height: 114px; width: auto; max-width: 100%; }
.login-marca .lema { margin: .25rem 0 0; font-size: 1rem; font-weight: 600; color: var(--principal); font-style: italic; }
@media (max-width: 600px) { .login-marca .logo-principal { height: 86px; } .login-marca .lema { font-size: .85rem; } }
#esc-achadas { display: flex; flex-wrap: wrap; gap: .3rem; margin: .2rem 0 .6rem; }
.modal-escala .esc-linha { display: flex; align-items: center; gap: .5rem; padding: .25rem 0; border-bottom: 1px solid var(--borda, #e3e6ee); }
.modal-escala .esc-linha .esc-nome { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.login-marca .logo-principal { mix-blend-mode: multiply; }

/* ===== Fase 19 ===== */
.card-push { margin-bottom: .8rem; }

/* ===== Tela inicial em abas ===== */
.pub-nav { display: grid; grid-template-columns: repeat(6, 1fr); gap: .5rem; margin: .2rem 0 1rem; }
.pub-nav button { background: #fff; color: var(--principal); border: 2px solid var(--borda); font-weight: 700; padding: .6rem .4rem; border-radius: 10px; font-size: .95rem; margin: 0; }
.pub-nav button:hover { border-color: var(--principal); }
.pub-nav button[aria-selected="true"] { background: var(--principal); color: #fff; border-color: var(--principal); }
@media (max-width: 700px) { .pub-nav { grid-template-columns: repeat(3, 1fr); gap: .4rem; } .pub-nav button { font-size: .82rem; padding: .5rem .2rem; } }
.live-horario { margin: 0 0 .6rem; color: var(--principal); }
.sobre img { max-width: 100%; height: auto; border-radius: 10px; }
.sobre .sobre-grade { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: .8rem; margin: .8rem 0; }
.sobre .sobre-foto { margin: .8rem 0; }
.sobre .sobre-foto figcaption { color: var(--suave); font-size: .9rem; margin-top: .3rem; }

/* Fase 21 – cabeçalho público: três colunas, laterais de mesma largura (logo sempre centralizada) */
.topo-publico { grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); }
.topo-publico .topo-lado button { display: inline-flex; align-items: center; gap: .4rem; }
.topo-publico .topo-lado .ico { flex: none; }
@media (max-width: 700px) {
  .topo-publico { grid-template-columns: 3rem minmax(0, 1fr) 3rem; }
  .topo-publico .topo-lado .txt { display: none; }
  .topo-publico .topo-lado button { justify-content: center; width: 100%; min-height: 2.4rem; padding: .35rem !important; }
  .topo-publico .topo-esq, .topo-publico .topo-dir { justify-content: center; }
}
.anot-texto { white-space: pre-wrap; margin: .4rem 0 0; }
.tem-nota { margin-left: .3rem; }
textarea { width: 100%; box-sizing: border-box; font: inherit; padding: .5rem; border: 1px solid var(--borda); border-radius: 8px; }

/* Fase 21 – calendário anual, agenda com eventos e horários */
.cal-anual { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 1rem; }
.cal-mes h3 { margin: 0 0 .4rem; }
.cal-mini .dia { aspect-ratio: auto; padding: .3rem 0; font-size: .85rem; border-radius: 6px; }
.cal-mini .dia.tem { background: var(--principal); color: #fff; border-color: var(--principal); font-weight: 700; }
.cal-itens { list-style: none; margin: .5rem 0 0; padding: 0; }
.cal-itens .link-item { display: flex; gap: .5rem; align-items: center; text-align: left; width: 100%; background: transparent; color: var(--texto); border: 0; border-bottom: 1px dashed var(--borda); padding: .3rem 0; font-weight: 400; margin: 0; }
.cal-itens small { color: var(--suave); }
.cal-ano { max-width: 360px; margin: .4rem auto 1rem; gap: .5rem; }
.cal-ano select { font-size: 1.1rem; padding: .3rem .6rem; }
.modal-cal-dia { width: min(100%, 440px); }
.cal-detalhe { border-bottom: 1px solid var(--borda); padding-bottom: .6rem; margin-bottom: .6rem; }
.etq-culto { background: #fff3cd; color: #7a5b00; border-radius: 6px; font-size: .7rem; padding: 0 .35rem; font-weight: 700; }
.etq-culto.etq-cancelado { background: #fde2e2; color: #9b1c1c; }
.semana-culto.cancelado { opacity: .75; }
.semana-evento .semana-hora { background: #fff; color: var(--principal); border: 1px solid var(--principal); font-weight: 700; }
.pub-nav.sete { grid-template-columns: repeat(7, 1fr); }
@media (max-width: 700px) { .pub-nav.sete { grid-template-columns: repeat(3, 1fr); } .pub-nav.sete button:last-child { grid-column: 1 / -1; } }
@media (min-width: 701px) and (max-width: 1000px) { .pub-nav.sete button { font-size: .8rem; } }
.ev-igreja { margin: -.1rem 0 .3rem; color: var(--suave); font-size: .9rem; font-weight: 600; }

/* Fase 22 – menu de módulos flutuante (canto inferior direito) */
.fab { position: fixed; right: 1rem; bottom: 1rem; z-index: 40; width: 56px; height: 56px; border-radius: 50%; padding: 0; font-size: 1.6rem; line-height: 1; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 14px rgba(0,0,0,.3); margin: 0; }
.menu-flutuante { position: fixed; right: 1rem; bottom: 5rem; z-index: 40; display: none; flex-direction: column; gap: .3rem; width: min(18rem, calc(100vw - 2rem)); max-height: calc(100vh - 7rem); overflow-y: auto; padding: .6rem; background: var(--cartao); border: 1px solid var(--borda); border-radius: 14px; box-shadow: 0 8px 24px rgba(0,0,0,.28); }
.menu-flutuante.aberto { display: flex; }
.menu-flutuante button { text-align: left; width: 100%; margin: 0; }
body:has(.fab) main, .topo-logado ~ main { padding-bottom: 5.5rem; }
.titulo-destaque { display: inline-block; border-bottom: 3px solid var(--principal); padding-bottom: .25rem; margin-bottom: .6rem; }
.btn-pdf { display: inline-flex; align-items: center; gap: .3rem; }

/* Fase 22b – conta do usuário: botão com as iniciais abre Mudar Senha / Sair */
.topo-conta { position: relative; flex-direction: row; align-items: center; }
.avatar-conta { width: 2.6rem; height: 2.6rem; min-height: 0; padding: 0; border-radius: 50%; border: 2px solid var(--texto, #1b2430); background: #fff; color: var(--texto, #1b2430); font-weight: 700; font-size: .95rem; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.avatar-conta:focus-visible { outline: 3px solid #1a4fd6; outline-offset: 2px; }
.conta-menu { display: none; position: absolute; right: 0; top: calc(100% + .5rem); z-index: 60; min-width: 15rem; max-width: 86vw; background: #fff; border: 1px solid #cfd6df; border-radius: 12px; box-shadow: 0 8px 28px rgba(0,0,0,.18); text-align: left; overflow: hidden; }
.conta-menu.aberto { display: block; }
.conta-cabeca { padding: .8rem 1rem; border-bottom: 1px solid #e3e8ee; display: flex; flex-direction: column; gap: .15rem; }
.conta-cabeca strong { font-size: 1rem; }
.conta-email { font-size: .85rem; color: var(--suave, #5b6675); overflow-wrap: anywhere; }
.conta-menu button { display: block; width: 100%; text-align: left; background: none; border: 0; border-radius: 0; box-shadow: none; min-height: 2.8rem; padding: .6rem 1rem; font: inherit; color: inherit; cursor: pointer; }
.conta-menu button:hover, .conta-menu button:focus-visible { background: #f1f4f8; }
.conta-menu .conta-sair { color: #c0392b; font-weight: 600; }
