/* Fase 23 – Novo visual (aprovado no protótipo). Carrega depois do estilo.css e só troca cores, formas e tipografia.
 * Funções, textos e a imagem da Árvore Genealógica (canvas) não mudam. */
:root {
  --f-display: "Bricolage Grotesque", system-ui, -apple-system, "Segoe UI", "Trebuchet MS", sans-serif;
  --f-corpo: "Figtree", system-ui, -apple-system, "Segoe UI", sans-serif;
  --fundo: #ffffff; --cartao: #ffffff; --suave-bg: #f4f7fc; --borda: #dbe3ef;
  --texto: #16233a; --suave: #5d6b84;
  --principal: #2c5aa0; --principal-2: #1f4380; --azul-soft: #e3ecfa;
  --ouro: #c58a14; --ouro-soft: #fbf0d6; --ouro-texto: #8a5a00; --ok: #1f8a5b; --ok-soft: #dff3ea;
  --perigo: #c0392b; --perigo-soft: #fbe5e2; --sombra: 0 10px 30px rgba(22,35,58,.10);
  --sobre-principal: #ffffff;
}
:root[data-theme="dark"] {
  --fundo: #0e1626; --cartao: #162238; --suave-bg: #1b2a44; --borda: #2a3b5a;
  --texto: #e8eefb; --suave: #9db0cf;
  --principal: #6f9be0; --principal-2: #8fb2ec; --azul-soft: #223a63;
  --ouro: #e2b04a; --ouro-soft: #3a2f14; --ouro-texto: #ecc165; --ok: #4cc790; --ok-soft: #163a2c;
  --perigo: #ff8b7d; --perigo-soft: #47201c; --sombra: 0 10px 30px rgba(0,0,0,.35);
  --sobre-principal: #0e1626; color-scheme: dark;
}
:root[data-theme="light"] { color-scheme: light; }

body { font-family: var(--f-corpo); font-size: 16px; background: var(--fundo); color: var(--texto); }
h1, h2, h3, .titulo-secao, .preco { font-family: var(--f-display); letter-spacing: -.01em; text-wrap: balance; }
:focus-visible { outline: 3px solid var(--principal); outline-offset: 2px; }

/* topo */
.topo { background: var(--cartao); border-bottom: 1px solid var(--borda); padding: .7rem 1rem; }
.topo-logado { position: sticky; top: 0; z-index: 30; }
.logo-topo { border: 2px solid var(--azul-soft); }
main { max-width: 760px; }
@media (min-width: 900px) { main { max-width: 840px; } }

/* cartões */
.card { background: var(--cartao); border: 1px solid var(--borda); border-radius: 20px; padding: 1rem 1.1rem; margin-bottom: .85rem; }
.card h2, .card h3 { color: var(--texto); }
h2 { font-size: 1.3rem; }
.titulo-secao { color: var(--principal); font-size: 1.3rem; }
.titulo-destaque { border-bottom: 0; padding-bottom: 0; color: var(--principal); }
.dica, .card p { color: var(--suave); }

/* botões */
button, a.botao { border-radius: 14px; min-height: 44px; padding: .6rem 1.1rem; font-weight: 700; border-color: var(--principal); background: var(--principal); color: var(--sobre-principal); }
button.sec, a.botao.sec { background: transparent; color: var(--principal-2); border-color: var(--principal); }
button.perigo { background: transparent; color: var(--perigo); border-color: var(--perigo); }
button.mini, a.botao.mini { min-height: 36px; padding: .35rem .8rem; border-radius: 12px; }
button.ativa { background: var(--principal); color: var(--sobre-principal); }
button.icone, .btn-icone { min-height: 0; }
.acoes { gap: .6rem; flex-wrap: wrap; }
.acoes-fim { justify-content: flex-end; }
.acoes-fim > button { flex: 1 1 8rem; }

/* campos */
form label { font-weight: 700; color: var(--suave); font-size: .85rem; }
input, select, textarea { border-radius: 12px; min-height: 44px; padding: .6rem .75rem; background: var(--cartao); color: var(--texto); border-color: var(--borda); }
input[type=checkbox], input[type=radio] { min-height: 0; }
input:disabled, select:disabled, textarea:disabled { background: var(--suave-bg); color: var(--suave); cursor: not-allowed; }
input::placeholder, textarea::placeholder { color: var(--suave); opacity: .8; }

/* tabelas */
table { border-radius: 16px; background: var(--cartao); border-color: var(--borda); }
th { background: var(--suave-bg); color: var(--texto); }
td, th { border-bottom-color: var(--borda); }
tr.inativa td, .tab-res tr.tot td, .semana-ponto { background: var(--suave-bg); }

/* etiquetas */
.etiqueta { border-color: transparent; background: var(--azul-soft); color: var(--principal-2); font-weight: 700; padding: .15rem .65rem; }
.etq-ok, .esc-chip.confirmada { background: var(--ok-soft); border-color: transparent; color: var(--ok); }
.alerta, .etq-alerta, .ped-aguardando { background: var(--perigo-soft); border-color: transparent; color: var(--perigo); }
.alerta { color: var(--texto); border-radius: 16px; }
.etq-culto { background: var(--ouro-soft); color: var(--ouro-texto); }
.etq-culto.etq-cancelado { background: var(--perigo-soft); color: var(--perigo); }
.ped-pago, .coz-pedido { background: var(--ok-soft); }
.ped-entregue { background: var(--suave-bg); color: var(--suave); }
.res-pos { background: var(--ok-soft); color: var(--ok); }
.res-neg { background: var(--perigo-soft); color: var(--perigo); }
.res-zero, .res-aviso, .lote-info, .ev-total { background: var(--suave-bg); border-color: var(--borda); color: var(--texto); }
.res-ent, .res-ent b { color: var(--principal-2); }
.ing-aviso { color: var(--ouro-texto); }

/* abas da tela inicial */
.abas-inicio { gap: 1.4rem; }
.aba-ini { color: var(--suave); font-family: var(--f-display); min-height: 0; padding: .1rem .1rem .45rem; }
.aba-ini.aba-on { color: var(--principal); border-bottom-color: var(--principal); }

/* eventos */
.ev-card { border-radius: 20px; }
.ev-imagem { border-radius: 14px; background: var(--suave-bg); }
.ev-card .ev-tipo { background: var(--azul-soft); color: var(--principal-2); }

/* calendários e semana */
.cal-grade .dia, .cal-mini .dia { border-radius: 12px; background: var(--suave-bg); border-color: transparent; color: var(--texto); }
.cal-grade .dia.sel, .cal-mini .dia.tem { background: var(--principal); color: var(--sobre-principal); }
.cal-grade .dia.ja:disabled, .ja-pt { background: var(--azul-soft); color: var(--principal-2); }
.cal-dia.marcado, .semana-dia.hoje, .pdv-prod.no-carrinho { background: var(--azul-soft); border-color: var(--principal); }
.semana-dia { border-radius: 16px; }
.aniv-lista li.aniv-hoje { background: var(--principal); color: var(--sobre-principal); }
.aniv-lista li.aniv-hoje .aniv-data { color: var(--sobre-principal); }
.cal-hora, .semana-hora, .pdv-prod-qtd { background: var(--principal); color: var(--sobre-principal); }
.semana-evento .semana-hora, .igreja-chip, .btn-icone, .pub-nav button { background: var(--cartao); color: var(--principal-2); }
.btn-icone:hover { background: var(--azul-soft); }
.btn-icone.excluir:hover { background: var(--perigo-soft); }
.min-icone { background: var(--azul-soft); }
/* miniatura de igreja/ministério: imagem redonda preenchendo o círculo, sem distorcer */
.min-icone { border-radius: 50%; overflow: hidden; aspect-ratio: 1 / 1; }
.min-icone img, .igreja-chip img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; padding: 0; display: block; }
.pub-nav button[aria-selected="true"] { background: var(--principal); color: var(--sobre-principal); border-color: var(--principal); }

/* botão flutuante e menu de módulos */
.fab { width: 58px; height: 58px; background: var(--principal); color: var(--sobre-principal); border: 0; box-shadow: 0 8px 22px rgba(31,67,128,.45); right: max(1rem, env(safe-area-inset-right, 0px)); bottom: max(1rem, env(safe-area-inset-bottom, 0px)); }
.menu-flutuante { border-radius: 20px; box-shadow: var(--sombra); padding: .5rem; gap: .15rem; right: max(1rem, env(safe-area-inset-right, 0px)); bottom: calc(5rem + env(safe-area-inset-bottom, 0px)); }
.menu-flutuante button { background: transparent; color: var(--texto); border: 0; border-radius: 12px; font-weight: 600; min-height: 44px; }
.menu-flutuante button:hover { background: var(--suave-bg); }
.menu-flutuante button.ativa { background: var(--azul-soft); color: var(--principal-2); }

/* conta no topo: círculo com as iniciais */
.avatar-conta { border: 2px solid var(--principal); background: var(--azul-soft); color: var(--principal-2); min-height: 0; }
.conta-menu { background: var(--cartao); border-color: var(--borda); border-radius: 16px; box-shadow: var(--sombra); }
.conta-cabeca { border-bottom-color: var(--borda); }
.conta-email { color: var(--suave); }
.conta-menu button { background: transparent; color: var(--texto); border: 0; border-radius: 0; font-weight: 600; }
.conta-menu button:hover, .conta-menu button:focus-visible { background: var(--suave-bg); }
.conta-menu .conta-sair { color: var(--perigo); }

/* aparência (Cadastro) */
.chips-tema { display: flex; gap: .5rem; flex-wrap: wrap; }
.chip-tema { background: var(--cartao); color: var(--texto); border: 1px solid var(--borda); border-radius: 999px; min-height: 40px; padding: .45rem .95rem; line-height: 1.25; text-align: center; font-weight: 600; }
.chip-tema[aria-pressed="true"] { background: var(--principal); color: var(--sobre-principal); border-color: var(--principal); }

/* PDF das trocas e ícones soltos */
.btn-pdf { background: var(--cartao); border-color: var(--borda); }

/* avisos de tela, modais e leitor */
#aviso div { background: var(--texto); color: var(--fundo); border-radius: 999px; padding: .65rem 1.1rem; }
#aviso div.erro { background: var(--perigo); color: #fff; }
.modal, .modal-escala, [role="dialog"] { background: var(--cartao); color: var(--texto); border-radius: 22px; }

/* o que deve continuar igual em qualquer tema */
.cupom-wrap, .cupom, .arv-fig canvas { background: #fff; color: #000; }
.arv-fig { background: var(--cartao); border-radius: 16px; }
.cama.livre, .cama.ocupada, .cama.minha { color: #fff; }

/* Fase 24 – Gerenciar evento em grupos */
.grupos-gestao { display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap: .7rem; margin-bottom: 1rem; }
.grupo-gestao { margin: 0; }
.grupo-gestao h3 { font-size: 1.05rem; margin: 0 0 .5rem; color: var(--principal); }
.grupo-gestao .acoes { margin: 0; }
.grupo-gestao .acoes > button, .grupo-gestao .acoes > a.botao { flex: 1 1 9rem; text-align: center; }
.barra-lista { display: flex; align-items: center; justify-content: space-between; gap: .6rem; margin: .2rem 0 .6rem; flex-wrap: wrap; }
.resumo-num { grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr)); }

/* Fase 24 – Rede de Empreendedores */
.grupo-setor { margin-bottom: 1.2rem; }
.setor-titulo { margin: 1rem 0 .5rem; padding-bottom: .3rem; border-bottom: 2px solid var(--azul-soft); }
.empresa { display: flex; flex-direction: column; gap: .15rem; }
.empresa .emp-nome { margin: 0; font-size: 1.15rem; color: var(--texto); }
.empresa .emp-prop { margin: 0; color: var(--suave); }
.empresa .emp-contato { margin: .2rem 0 .5rem; color: var(--texto); }
.empresa .emp-whats { color: var(--principal-2); font-weight: 700; }
.emp-img { display: block; border-radius: 14px; overflow: hidden; border: 1px solid var(--borda); background: #fff; }
.emp-img img { display: block; width: 100%; height: auto; }
.emp-sem-img { padding: 1.4rem 1rem; text-align: center; font-weight: 700; color: var(--principal-2); background: var(--azul-soft); text-decoration: none; }
.emp-dica { margin: .35rem 0 0; font-size: .8rem; }

/* ===== Fase 25 – Acabamento "vidro" (forma, transparência e sombras no estilo do All Home; cores continuam as da igreja) ===== */
:root {
  --vidro: color-mix(in srgb, var(--cartao) 58%, transparent);
  --vidro-forte: color-mix(in srgb, var(--cartao) 82%, transparent);
  --vidro-barra: color-mix(in srgb, var(--cartao) 38%, transparent);
  --vidro-borda: rgba(255,255,255,.85);
  --vidro-sombra: 0 12px 40px rgba(22,35,58,.14), 0 2px 6px rgba(22,35,58,.06), inset 0 1px 0 rgba(255,255,255,.9);
  --sombra-card: 0 6px 18px rgba(20,40,80,.09), 0 1px 3px rgba(20,40,80,.07);
  --sombra-card-hover: 0 10px 26px rgba(20,40,80,.13), 0 2px 5px rgba(20,40,80,.08);
  --sombra-btn: 0 6px 18px rgba(20,40,80,.14), 0 1px 3px rgba(20,40,80,.10);
  --sombra-btn-hover: 0 8px 22px rgba(20,40,80,.20), 0 1px 3px rgba(20,40,80,.10);
  --sombra-principal: 0 8px 20px color-mix(in srgb, var(--principal) 38%, transparent), inset 0 1px 0 rgba(255,255,255,.30);
  --sombra-principal-hover: 0 10px 26px color-mix(in srgb, var(--principal) 46%, transparent), inset 0 1px 0 rgba(255,255,255,.30);
  --aviso-fundo: rgba(44,90,160,.70); --aviso-erro: rgba(192,57,43,.80); --aviso-texto: #ffffff;
}
:root[data-theme="dark"] {
  --vidro-borda: rgba(255,255,255,.10);
  --vidro-sombra: 0 14px 40px rgba(0,0,0,.50), 0 2px 6px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.06);
  --sombra-card: 0 8px 24px rgba(0,0,0,.42), 0 1px 3px rgba(0,0,0,.30), inset 0 1px 0 rgba(255,255,255,.04);
  --sombra-card-hover: 0 12px 30px rgba(0,0,0,.50), 0 2px 5px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.05);
  --sombra-btn: 0 6px 18px rgba(0,0,0,.40), 0 1px 3px rgba(0,0,0,.30);
  --sombra-btn-hover: 0 8px 24px rgba(0,0,0,.50), 0 1px 3px rgba(0,0,0,.30);
  --sombra-principal: 0 8px 22px color-mix(in srgb, var(--principal) 30%, transparent), inset 0 1px 0 rgba(255,255,255,.25);
  --sombra-principal-hover: 0 10px 28px color-mix(in srgb, var(--principal) 40%, transparent), inset 0 1px 0 rgba(255,255,255,.25);
  --aviso-fundo: rgba(44,90,160,.62); --aviso-erro: rgba(192,57,43,.70); --aviso-texto: #ffffff;
}

/* botões: primário com sombra colorida e brilho no topo; secundário/perigo de vidro com sombra suave.
 * Seletores com :where() mantêm a especificidade baixa (componentes com classe própria – abas, calendário, menus – não mudam). */
button:where(:not([class]), .mini, [type="submit"]):where(:not(.sec, .perigo, .icone, .btn-icone)), button.ativa:where(:not(.sec, .perigo)), a.botao:where(:not(.sec)) {
  border-color: transparent; box-shadow: var(--sombra-principal);
}
button:is(.sec, .perigo), a.botao.sec {
  background: var(--vidro-forte); -webkit-backdrop-filter: blur(14px) saturate(180%); backdrop-filter: blur(14px) saturate(180%);
  border-color: color-mix(in srgb, currentColor 30%, transparent); box-shadow: var(--sombra-btn);
}
button.perigo { box-shadow: 0 6px 16px color-mix(in srgb, var(--perigo) 22%, transparent), 0 1px 3px rgba(20,40,80,.08); }
button:where(:not([class]), .mini, .ativa, [type="submit"], .sec, .perigo, .icone, .btn-icone), a.botao {
  transition: transform .15s ease, box-shadow .2s ease, background-color .2s ease, filter .2s ease, opacity .2s ease;
}
button:where(:not([class]), .mini, [type="submit"]):where(:not(.sec, .perigo, .icone, .btn-icone)):where(:not(:disabled)):hover, a.botao:where(:not(.sec)):hover {
  box-shadow: var(--sombra-principal-hover); transform: translateY(-1px); filter: brightness(1.06);
}
button.sec:not(:disabled):hover, a.botao.sec:hover { box-shadow: var(--sombra-btn-hover); transform: translateY(-1px); background: color-mix(in srgb, var(--azul-soft) 75%, transparent); }
button.perigo:not(:disabled):hover { transform: translateY(-1px); background: color-mix(in srgb, var(--perigo-soft) 80%, transparent); }
button:where(:not([class]), .mini, .ativa, [type="submit"], .sec, .perigo, .icone, .btn-icone):where(:not(:disabled)):active, a.botao:active { transform: translateY(0) scale(.98); box-shadow: var(--sombra-btn); }
button:where(:not([class]), .mini, .ativa, [type="submit"], .sec, .perigo, .icone, .btn-icone):disabled { opacity: .55; box-shadow: none; transform: none; filter: saturate(.6); }
/* botões só de ícone: de vidro, com sombra leve */
button.icone, .btn-icone {
  background: var(--vidro-forte); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
  border: 1px solid color-mix(in srgb, var(--principal) 20%, transparent); border-radius: 12px; box-shadow: 0 3px 10px rgba(20,40,80,.10);
}
button.icone:not(:disabled):hover, .btn-icone:hover { transform: translateY(-1px); box-shadow: var(--sombra-btn); }
.btn-icone.excluir:hover { background: var(--perigo-soft); }
@media (prefers-reduced-motion: reduce) { button, a.botao { transition: none !important; } button:hover, button:active, a.botao:hover { transform: none !important; } }
/* cartões: sombra para destacar (claro e escuro) */
.card, .ev-card, .card-min, .res-card, .pix-bloco, .aviso-bloco, .semana-dia, .grupo-gestao {
  box-shadow: var(--sombra-card); border-color: color-mix(in srgb, var(--borda) 75%, transparent);
}
.ev-card { transition: box-shadow .2s ease, transform .2s ease; }
.ev-card:hover { box-shadow: var(--sombra-card-hover); }
.card .card, .card .semana-dia { box-shadow: 0 2px 8px rgba(20,40,80,.06); }
:root[data-theme="dark"] .card .card, :root[data-theme="dark"] .card .semana-dia { box-shadow: 0 2px 8px rgba(0,0,0,.30); }
.modal-caixa { box-shadow: var(--vidro-sombra); border: 1px solid var(--vidro-borda); }
.menu-flutuante, .conta-menu {
  background: var(--vidro-forte); -webkit-backdrop-filter: blur(26px) saturate(180%); backdrop-filter: blur(26px) saturate(180%);
  border: 1px solid var(--vidro-borda); box-shadow: var(--vidro-sombra);
}

/* avisos (aviso / mensagemErro): no alto, ao centro, azul translúcido de vidro */
#aviso {
  top: calc(12px + env(safe-area-inset-top, 0px)); bottom: auto; left: 50%; transform: translateX(-50%);
  width: min(420px, calc(100vw - 24px)); max-width: none; z-index: 300; display: flex; flex-direction: column; align-items: stretch; gap: .45rem; pointer-events: none;
}
#aviso div {
  background: var(--aviso-fundo); color: var(--aviso-texto); margin: 0; padding: .75rem 1.1rem; border-radius: 16px; text-align: center; font-weight: 600; line-height: 1.35;
  -webkit-backdrop-filter: blur(18px) saturate(180%); backdrop-filter: blur(18px) saturate(180%);
  border: 1px solid rgba(255,255,255,.22); box-shadow: 0 12px 34px rgba(22,35,58,.22), 0 2px 6px rgba(22,35,58,.10), inset 0 1px 0 rgba(255,255,255,.22);
  pointer-events: auto;
}
#aviso div.erro { background: var(--aviso-erro); color: #fff; }
@media (prefers-reduced-motion: no-preference) { #aviso div { animation: aviso-desce .22s ease-out; } @keyframes aviso-desce { from { transform: translateY(-10px); opacity: 0; } } }

/* barra de navegação inferior: flutuante, de vidro, com o botão Menu (lista completa) ao lado.
 * Os atalhos são configurados em BARRA_ATALHOS (app.js). */
.barra-wrap {
  position: fixed; z-index: 44; left: 50%; transform: translateX(-50%); bottom: calc(12px + env(safe-area-inset-bottom, 0px));
  display: flex; align-items: center; gap: 10px; max-width: calc(100vw - 24px);
}
.barra-nav {
  display: flex; gap: 2px; padding: 4px; border-radius: 999px; min-width: 0;
  background: var(--vidro-barra); -webkit-backdrop-filter: blur(14px) saturate(190%); backdrop-filter: blur(14px) saturate(190%);
  border: 1px solid var(--vidro-borda); box-shadow: var(--vidro-sombra);
}
.barra-nav:empty { display: none; }
.barra-nav .barra-item {
  position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px;
  min-width: 64px; min-height: 0; margin: 0; padding: 5px 12px 4px; border: 0; border-radius: 999px;
  background: transparent; color: var(--suave); box-shadow: none; font-size: 11px; font-weight: 700; line-height: 1.15;
  transition: background-color .2s ease, color .2s ease;
}
.barra-nav .barra-item:hover { color: var(--texto); background: color-mix(in srgb, var(--texto) 6%, transparent); }
.barra-nav .barra-item.on { color: var(--principal-2); background: color-mix(in srgb, var(--principal) 15%, transparent); }
.barra-ic { width: 24px; height: 24px; display: block; background: currentColor; -webkit-mask: var(--ico) center / contain no-repeat; mask: var(--ico) center / contain no-repeat; transition: transform .2s ease; }
.barra-ic:not([style]) { -webkit-mask: none; mask: none; border-radius: 50%; width: 8px; height: 8px; margin: 8px; }
.barra-item.on .barra-ic { transform: translateY(-1px) scale(1.08); }
.barra-item:hover .barra-ic { transform: translateY(-2px); }
.barra-txt { white-space: nowrap; }
.barra-selo { position: absolute; top: 0; right: 6px; min-width: 1rem; line-height: 1rem; font-size: .65rem; padding: 0 .25rem; }
.barra-wrap .fab {
  position: static; flex: 0 0 auto; width: 60px; height: 60px; margin: 0; border: 0; border-radius: 50%;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0; padding: 0;
  background: linear-gradient(150deg, color-mix(in srgb, var(--principal) 72%, #fff), var(--principal));
  color: var(--sobre-principal); box-shadow: 0 10px 26px color-mix(in srgb, var(--principal) 42%, transparent), inset 0 1px 0 rgba(255,255,255,.35);
  transition: transform .15s ease, box-shadow .2s ease;
}
.barra-wrap .fab > span[aria-hidden] { font-size: 1.35rem; line-height: 1; transition: transform .2s ease; }
.barra-wrap .fab .fab-txt { font-size: 10px; font-weight: 700; line-height: 1; margin-top: 2px; }
.barra-wrap .fab:hover { transform: translateY(-1px); box-shadow: 0 12px 30px color-mix(in srgb, var(--principal) 50%, transparent), inset 0 1px 0 rgba(255,255,255,.35); }
.barra-wrap .fab:active { transform: scale(.96); }
.barra-wrap .fab[aria-expanded="true"] > span[aria-hidden] { transform: rotate(90deg); }
.menu-flutuante { z-index: 46; right: max(12px, env(safe-area-inset-right, 0px)); bottom: calc(86px + env(safe-area-inset-bottom, 0px)); max-height: calc(100vh - 110px); }
/* a barra não cobre o conteúdo */
.topo-logado ~ main, body:has(.barra-wrap) main { padding-bottom: calc(100px + env(safe-area-inset-bottom, 0px)); }
@media (max-width: 600px) {
  .barra-wrap { left: 12px; right: 12px; transform: none; max-width: none; gap: 8px; }
  .barra-nav { flex: 1; justify-content: space-between; }
  .barra-nav .barra-item { flex: 1 1 0; min-width: 0; padding: 5px 2px 4px; font-size: 10px; }
  .barra-txt { max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
  .barra-wrap .fab { width: 56px; height: 56px; }
}
@media (prefers-reduced-motion: reduce) { .barra-ic, .barra-wrap .fab, .barra-wrap .fab > span { transition: none; } }
@media print { .barra-wrap { display: none !important; } }
/* Fase 26 — barra: até 5 atalhos (admin) + Menu cabem em 360–400px sem estourar */
@media (max-width: 420px) {
  .barra-wrap { left: 8px; right: 8px; gap: 6px; }
  .barra-nav { padding: 3px; gap: 0; }
  .barra-nav .barra-item { padding: 5px 1px 4px; font-size: 9.5px; letter-spacing: -.01em; }
  .barra-ic { width: 22px; height: 22px; }
  .barra-selo { right: 2px; }
  .barra-wrap .fab { width: 52px; height: 52px; }
}

/* Discipulado: ícone de pasta em traço, na cor do tema */
.pasta > summary .ico-pasta { width: 18px; height: 18px; vertical-align: -.2em; margin-right: .3rem; color: var(--principal); flex: 0 0 auto; }
.pasta[open] > summary .ico-pasta { fill: color-mix(in srgb, var(--principal) 16%, transparent); }
/* Registros nas pastas: data à esquerda, "Anotações" e "Excluir" sempre na mesma coluna (antes o space-between empurrava "Anotações" conforme a largura da data) */
/* Fase 26: a data nunca encolhe abaixo do conteúdo; se faltar espaço, os botões descem para a linha de baixo, alinhados à direita */
ul.datas li:has(> .reg-data) { display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: center; gap: .35rem .5rem; }
ul.datas li > .reg-data { display: inline-flex; align-items: center; gap: .3rem; flex: 1 0 auto; margin-right: auto; white-space: nowrap; font-variant-numeric: tabular-nums; }
ul.datas li > .reg-data .tem-nota { margin-left: 0; }
ul.datas li > button { margin: 0; white-space: nowrap; }
.pub-nav button { box-shadow: var(--sombra-btn); transition: transform .15s ease, box-shadow .2s ease; }
.pub-nav button[aria-selected="true"] { box-shadow: var(--sombra-principal); }
.pub-nav button:hover { transform: translateY(-1px); }

/* Fase 26 — janelas de vidro
 * Componente janelaVidro() (app.js): card flutuante de vidro sobre a tela, com fundo levemente escurecido.
 * Desktop: centralizado. Celular (≤600px): bottom-sheet preso embaixo. Mesmos tokens de vidro da barra inferior. */
.modal.janela-vidro {
  z-index: 60; border-radius: 0; color: var(--texto);
  background: rgba(15, 23, 42, .30); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px);
  display: flex; align-items: center; justify-content: center;
  padding: calc(1rem + env(safe-area-inset-top, 0px)) 1rem calc(1rem + env(safe-area-inset-bottom, 0px));
}
:root[data-theme="dark"] .modal.janela-vidro { background: rgba(0, 0, 0, .45); }
.janela-vidro > .vidro-caixa {
  position: relative; width: min(100%, 460px); max-height: min(88vh, 780px); overflow: auto; overscroll-behavior: contain;
  padding: 1.1rem 1.2rem 1.25rem; border-radius: 24px; color: var(--texto);
  background: var(--vidro-forte); -webkit-backdrop-filter: blur(26px) saturate(180%); backdrop-filter: blur(26px) saturate(180%);
  border: 1px solid var(--vidro-borda); box-shadow: var(--vidro-sombra), 0 24px 60px rgba(15, 23, 42, .18);
}
.janela-vidro > .vidro-caixa.modal-camas { width: min(100%, 600px); }
.janela-vidro .vidro-corpo > h3:first-child, .janela-vidro .vidro-corpo > .barra:first-child h3 { margin-top: 0; }
.janela-vidro .vidro-corpo > .acoes:last-child, .janela-vidro .vidro-corpo form > .acoes:last-child { margin-bottom: 0; }
/* botão X: fica no canto e acompanha a rolagem do card */
.janela-vidro .vidro-fechar {
  position: sticky; top: 0; float: right; z-index: 2; margin: -.35rem -.45rem .2rem .6rem;
  width: 36px; height: 36px; min-height: 0; padding: 0; border-radius: 50%; display: grid; place-items: center;
  font-size: 1.45rem; line-height: 1; font-weight: 400; color: var(--texto);
  background: var(--vidro-forte); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
  border: 1px solid var(--vidro-borda); box-shadow: 0 3px 10px rgba(20, 40, 80, .12);
}
.janela-vidro .vidro-fechar:hover { background: color-mix(in srgb, var(--azul-soft) 75%, transparent); }
/* campos um pouco mais "vidro" dentro do card, sem perder a legibilidade */
.janela-vidro :is(input, select, textarea) { background: color-mix(in srgb, var(--cartao) 88%, transparent); }
.janela-vidro .acoes > button { flex: 1 1 8rem; }
.janela-vidro .cal-detalhe .acoes > button { flex: 0 1 auto; }
@media (max-width: 600px) {
  .modal.janela-vidro { align-items: flex-end; padding: calc(.75rem + env(safe-area-inset-top, 0px)) 0 0; }
  .janela-vidro > .vidro-caixa, .janela-vidro > .vidro-caixa.modal-camas {
    width: 100%; max-height: 92vh; max-height: 92dvh; border-radius: 26px 26px 0 0; border-bottom: 0;
    padding: 1rem 1rem calc(1.2rem + env(safe-area-inset-bottom, 0px));
  }
  /* "alça" do bottom-sheet */
  .janela-vidro > .vidro-caixa::before { content: ''; display: block; width: 42px; height: 5px; border-radius: 999px; margin: -.35rem auto .6rem; background: color-mix(in srgb, var(--texto) 22%, transparent); }
}
@media (prefers-reduced-motion: no-preference) {
  .janela-vidro { animation: vidro-fundo .18s ease-out; }
  .janela-vidro > .vidro-caixa { animation: vidro-surge .22s cubic-bezier(.2, .8, .2, 1); }
  @keyframes vidro-fundo { from { opacity: 0; } }
  @keyframes vidro-surge { from { opacity: 0; transform: translateY(14px) scale(.98); } }
}
@media (prefers-reduced-motion: no-preference) and (max-width: 600px) {
  .janela-vidro > .vidro-caixa { animation: vidro-sobe .26s cubic-bezier(.2, .8, .2, 1); }
  @keyframes vidro-sobe { from { transform: translateY(100%); } }
}

/* Fase 26 — Escalas: texto do turno em largura normal e botões de confirmação/indisponibilidade/troca numa linha própria, abaixo */
.esc-turno > .esc-meus { grid-column: 1 / -1; margin-top: .1rem; }
.cal-lista li.cal-item { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .6rem; }
.cal-lista li.cal-item > div:first-child { flex: 1 1 12rem; min-width: 0; }
.cal-lista li.cal-item > .cal-acoes, .esc-turno > .esc-meus { flex: 1 1 100%; display: flex; flex-wrap: wrap; gap: .4rem; }
.cal-lista li.cal-item > .cal-acoes > button, .esc-meus > button { flex: 1 1 9rem; margin: 0; }
.esc-meus > .dica { flex: 1 1 100%; }

/* Fase 26 — Horários da Semana: "Salvar Horário" e "Cancelar Este Dia" lado a lado (quebram juntos e alinhados se não couberem) */
.hor .acoes { display: flex; flex-wrap: wrap; gap: .5rem; }
.hor .acoes > button { flex: 1 1 0; min-width: 0; margin: 0; white-space: nowrap; text-align: center;
  display: inline-flex; align-items: center; justify-content: center; }
.hor .acoes > [data-h-restaurar] { flex-basis: 100%; }
@media (max-width: 480px) {
  /* celular: cada botão numa única linha (ícone + texto), lado a lado; a fonte reduz um pouco em telas estreitas */
  .hor .acoes { gap: .35rem; }
  .hor .acoes > button { padding: .45rem .5rem; font-size: clamp(.74rem, 3.6vw, .88rem); letter-spacing: -.01em; }
  .hor .acoes > button .ico-btn { margin-right: .3em; }
}

/* Fase 26 — discipulado */
/* Relatório: "Filtros rápidos" com rótulo e os três botões sempre numa única linha (compactos no celular) */
.rel-atalhos { margin-top: .7rem; }
.rel-atalhos-rot { display: block; font-weight: 700; color: var(--suave); font-size: .85rem; margin-bottom: .3rem; }
.acoes.rel-atalhos-btns { display: flex; flex-wrap: nowrap; gap: .4rem; margin-top: 0; }
.rel-atalhos-btns > button { flex: 1 1 auto; min-width: 0; margin: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: center; }
/* Pastas do discipulado: "Anotações" e "Excluir" andam juntos (.reg-acoes); se não couberem ao lado da data,
   descem juntos para a linha de baixo, alinhados à direita. A data nunca fica por baixo deles. */
ul.datas li > .reg-acoes { display: inline-flex; flex-wrap: nowrap; flex: 0 0 auto; gap: .4rem; margin-left: auto; }
ul.datas li > .reg-acoes > button { margin: 0; white-space: nowrap; display: inline-flex; align-items: center; flex: 0 0 auto; width: auto; }
@media (max-width: 480px) {
  .acoes.rel-atalhos-btns { gap: .3rem; }
  .rel-atalhos-btns > button { padding: .3rem .4rem; font-size: .78rem; min-height: 34px; border-radius: 10px; }
  .rel-atalhos-btns > button .ico-btn { display: none; }
  ul.datas li > .reg-acoes { gap: .3rem; }
  ul.datas li > .reg-acoes > button { padding: .25rem .5rem; font-size: .78rem; min-height: 32px; border-radius: 10px; }
}

/* Fase 26 — ajustes gerais */
/* Avisos (Início): o slide vira um card arredondado e a barra (pontos + "Próximo Aviso") fica abaixo dele, discreta */
.aviso-bloco { border-radius: 20px; }
.aviso-gestor { box-shadow: none; border: 0; background: none; }
.avisos-inicio .carrossel-janela {
  border-radius: 20px; background: var(--cartao); border: 1px solid color-mix(in srgb, var(--borda) 75%, transparent);
  box-shadow: 0 2px 8px rgba(20,40,80,.06);
}
:root[data-theme="dark"] .avisos-inicio .carrossel-janela { box-shadow: 0 2px 8px rgba(0,0,0,.30); }
.avisos-inicio .aviso-slide { padding: .85rem 1rem; }
.avisos-inicio .aviso-slide > :last-child { margin-bottom: 0; }
.carrossel-barra { margin-top: .45rem; padding: 0 .25rem; }
.carrossel-barra button[data-proximo-aviso] {
  background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none; border: 0; box-shadow: none;
  min-height: 32px; padding: .2rem .45rem; font-size: .85rem; font-weight: 600; color: var(--principal-2); white-space: nowrap;
}
.carrossel-barra button[data-proximo-aviso]:not(:disabled):hover { background: color-mix(in srgb, var(--principal) 10%, transparent); box-shadow: none; transform: none; }
/* Listas: itens em forma de card com o mesmo raio dos cards (20px) */
.alerta, .res-card, .res-final, .res-aviso, .ped-prod, .grupo-min, .lote-info, .ev-total, .pdv-venda, .rodape-publico,
.card-min, .pix-bloco, .grupo-gestao, .coz-pedido, .semana-dia { border-radius: 20px; }
.pdv-prod { border-radius: 16px; }
/* Rede de Empreendedores: telefone numa linha e WhatsApp na linha de baixo, sem quebrar o número */
.empresa .emp-contato .emp-tel, .empresa .emp-contato .emp-whats { display: block; }
.empresa .emp-contato .emp-whats { white-space: nowrap; width: fit-content; max-width: 100%; }
/* Cards de evento: "Ver detalhes e inscrever-se" numa linha só (no celular usa a largura toda do card) */
.ev-card .acoes > button[data-ver] { white-space: nowrap; }
@media (max-width: 700px) {
  .ev-card:not(.com-imagem) .ev-info > .acoes { margin-right: -4.5rem; }
  .ev-card .ev-info > .acoes > button[data-ver] { flex: 1 1 auto; padding-left: .8rem; padding-right: .8rem; }
}
@media (max-width: 360px) { .ev-card .ev-info > .acoes > button[data-ver] { font-size: .9rem; } }
/* Ícones dos botões (icones-botoes.js): SVG de traço antes do texto */
/* ícone em linha com o texto (se o texto quebrar, o ícone acompanha a 1ª linha sem desalinhar o botão) */
.ico-btn { display: inline-block; flex: 0 0 auto; width: 1.05em; height: 1.05em; margin-right: .42em; vertical-align: -.17em; }
button.mini[data-icone] .ico-btn, a.botao.mini[data-icone] .ico-btn { width: 1em; height: 1em; margin-right: .35em; }
@media print { .ico-btn { display: none; } }
/* Botões com ícone: ícone e texto na mesma linha (sem quebrar só por causa do ícone); nunca maiores que o contêiner */
:is(button, a.botao):has(> svg.ico-btn):not(.rel-atalhos-btns > button) { display: inline-flex; align-items: center; justify-content: center; white-space: nowrap; max-width: 100%; }

/* Fase 26 — listas de seleção
 * Campo fechado sempre arredondado (todos os navegadores). Onde houver o select customizável nativo
 * (Chromium 135+: appearance: base-select), a lista aberta vira um painel de vidro arredondado.
 * Firefox/Safari continuam com a lista nativa do sistema. Selects com multiple/size não mudam. */
select { border-radius: 12px; }
@supports (appearance: base-select) {
  select:where(:not([multiple], [size])), select:where(:not([multiple], [size]))::picker(select) { appearance: base-select; }
  select:where(:not([multiple], [size])) {
    display: inline-flex; align-items: center; gap: .5rem; box-sizing: border-box;
    min-height: 44px; padding: .6rem .75rem; border: 1px solid var(--borda); border-radius: 12px;
    background: var(--cartao); color: var(--texto); font: inherit; cursor: pointer;
  }
  .janela-vidro select:where(:not([multiple], [size])) { background: color-mix(in srgb, var(--cartao) 88%, transparent); }
  select:where(:not([multiple], [size])):disabled { background: var(--suave-bg); color: var(--suave); cursor: not-allowed; }
  select:where(:not([multiple], [size])):hover:not(:disabled) { border-color: color-mix(in srgb, var(--principal) 45%, var(--borda)); }
  /* seta: chevron de traço na cor suave, gira quando a lista abre */
  select:where(:not([multiple], [size]))::picker-icon {
    content: ""; display: block; flex: 0 0 14px; box-sizing: content-box; width: 14px; height: 14px; aspect-ratio: 1;
    padding: 0; margin: 0 0 0 auto; border: 0; overflow: visible; font-size: 0; line-height: 0;
    transform-origin: 50% 50%; background: var(--suave);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 6l4.5 4.5L12.5 6' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 6l4.5 4.5L12.5 6' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
    transition: rotate .18s ease;
  }
  select:where(:not([multiple], [size])):open::picker-icon { rotate: 180deg; }
  /* painel da lista: vidro arredondado */
  select:where(:not([multiple], [size]))::picker(select) {
    margin: 6px 0; padding: .35rem; border: 1px solid var(--vidro-borda); border-radius: 16px;
    /* quase opaco: o conteúdo atrás não pode competir com as opções */
    background: color-mix(in srgb, var(--cartao) 95%, transparent); -webkit-backdrop-filter: blur(20px) saturate(180%); backdrop-filter: blur(20px) saturate(180%);
    box-shadow: var(--vidro-sombra), 0 18px 44px rgba(15, 23, 42, .16); color: var(--texto);
    max-height: min(22rem, 60vh); overflow-y: auto; scrollbar-width: thin;
    opacity: 1; translate: 0 0; transition: opacity .16s ease, translate .16s ease, overlay .16s allow-discrete, display .16s allow-discrete;
  }
  :root[data-theme="dark"] select:where(:not([multiple], [size]))::picker(select) {
    border-color: rgba(255,255,255,.12); box-shadow: var(--vidro-sombra), 0 18px 44px rgba(0,0,0,.45);
  }
  select:where(:not([multiple], [size]))::picker(select):not(:popover-open) { opacity: 0; translate: 0 -4px; }
  @starting-style { select:where(:not([multiple], [size]))::picker(select):popover-open { opacity: 0; translate: 0 -4px; } }
  /* opções */
  select:where(:not([multiple], [size])) option {
    display: flex; align-items: center; gap: .5rem; min-height: 40px; padding: .55rem .75rem; margin: 1px 0;
    border-radius: 10px; color: var(--texto); background: transparent; cursor: pointer; outline: none;
  }
  select:where(:not([multiple], [size])) option:hover,
  select:where(:not([multiple], [size])) option:focus-visible { background: color-mix(in srgb, var(--principal) 11%, transparent); color: var(--texto); }
  select:where(:not([multiple], [size])) option:focus-visible { outline: 2px solid color-mix(in srgb, var(--principal) 45%, transparent); outline-offset: -2px; }
  select:where(:not([multiple], [size])) option:checked { background: color-mix(in srgb, var(--principal) 18%, transparent); font-weight: 600; }
  select:where(:not([multiple], [size])) option:checked:hover,
  select:where(:not([multiple], [size])) option:checked:focus-visible { background: color-mix(in srgb, var(--principal) 24%, transparent); }
  select:where(:not([multiple], [size])) option:disabled { color: var(--suave); opacity: .6; cursor: not-allowed; background: transparent; }
  select:where(:not([multiple], [size])) option::checkmark { order: 1; margin-left: auto; color: var(--principal-2); font-weight: 700; }
  select:where(:not([multiple], [size])) optgroup { padding: .2rem 0; }
  select:where(:not([multiple], [size])) optgroup legend { padding: .35rem .75rem .2rem; font-size: .78rem; font-weight: 700; color: var(--suave); }
  @media (prefers-reduced-motion: reduce) {
    select:where(:not([multiple], [size]))::picker(select), select:where(:not([multiple], [size]))::picker-icon { transition: none; }
  }
}

/* ---------- Fase 27: Agenda Pastoral ---------- */
.agp-topo { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: .6rem 1.2rem; }
.agp-topo .agp-escolha { margin: 0; min-width: min(100%, 260px); flex: 1 1 260px; }
.agp-quem { margin: 0; }
.agp-modos, .agp-vistas { margin: 0; }
.agp-cal-topo { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .4rem 1rem; margin-bottom: .5rem; }
.agp-nav { flex: 1 1 240px; gap: .6rem; margin: 0; }
.agp-nav b { font-family: var(--f-display); color: var(--principal-2); text-align: center; flex: 1; }
.agp-grade .dia { position: relative; font-weight: 600; aspect-ratio: auto; min-height: 2.9rem; }
.agp-grade .dia.agp-livre { background: var(--ok-soft); color: var(--ok); }
.agp-grade .dia.agp-cheio { background: var(--ouro-soft); color: var(--ouro-texto); }
.agp-grade .dia.sel { background: var(--principal); color: var(--sobre-principal); }
.agp-grade .dia.hoje { box-shadow: inset 0 0 0 2px var(--principal); }
.agp-qtd { position: absolute; top: 3px; right: 4px; min-width: 1.15em; height: 1.15em; padding: 0 .25em; border-radius: 99px; font-size: .68rem; line-height: 1.15em;
  background: var(--principal); color: var(--sobre-principal); font-weight: 700; }
.agp-grade .dia.sel .agp-qtd { background: var(--sobre-principal); color: var(--principal); }
.agp-legenda { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem 1rem; margin: .55rem 0 0; }
.agp-legenda > span { display: inline-flex; align-items: center; gap: .35rem; white-space: nowrap; }
.agp-leg { display: inline-block; width: .85rem; height: .85rem; border-radius: 4px; }
.agp-leg-livre { background: var(--ok-soft); box-shadow: inset 0 0 0 1px var(--ok); }
.agp-leg-cheio { background: var(--ouro-soft); box-shadow: inset 0 0 0 1px var(--ouro); }
.agp-dia h3 { margin: 0 0 .5rem; }
.agp-dia-vazio h3 { margin-bottom: .2rem; }
.agp-lista { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
.agp-lista > li { display: grid; grid-template-columns: 6.6rem 1fr auto; align-items: center; gap: .3rem .8rem; padding: .6rem .75rem;
  border-radius: 14px; background: var(--suave-bg); border: 1px solid var(--borda); }
.agp-hora { font-weight: 700; font-variant-numeric: tabular-nums; color: var(--principal-2); }
.agp-info { display: flex; flex-wrap: wrap; align-items: center; gap: .15rem .5rem; min-width: 0; }
.agp-det { flex-basis: 100%; font-size: .9rem; color: var(--suave); overflow-wrap: anywhere; }
.agp-obs { color: var(--texto); }
.agp-livre-txt { color: var(--ok); font-weight: 700; }
.agp-slot-livre { border-style: dashed !important; background: transparent !important; }
.agp-passou { opacity: .6; }
.agp-acoes { margin: 0; justify-content: flex-end; flex-wrap: wrap; gap: .35rem; }
.agp-ag { border-left: 4px solid var(--principal) !important; grid-template-columns: 6.6rem 1fr !important; }
.agp-ag .agp-acoes { grid-column: 2; justify-content: flex-start; }
.agp-st-realizado { border-left-color: var(--ok) !important; }
.agp-st-faltou { border-left-color: var(--ouro) !important; }
.agp-st-cancelado { border-left-color: var(--perigo) !important; opacity: .75; }
.agp-st-cancelado .agp-paciente { text-decoration: line-through; }
.etiqueta.agp-etq-realizado { background: var(--ok-soft); color: var(--ok); }
.etiqueta.agp-etq-faltou { background: var(--ouro-soft); color: var(--ouro-texto); }
.etiqueta.agp-etq-cancelado { background: var(--perigo-soft); color: var(--perigo); }
.agp-cancelados { margin-top: .6rem; }
.agp-cancelados summary { cursor: pointer; color: var(--suave); font-weight: 600; margin-bottom: .4rem; }
.agp-dur { max-width: 320px; }
.agp-semana { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: .6rem; margin-bottom: .4rem; }
.agp-dia-disp { padding: .6rem .7rem; border-radius: 14px; background: var(--suave-bg); border: 1px solid var(--borda); }
.agp-dia-passado { opacity: .6; }
.agp-dia-cab { display: flex; align-items: center; gap: .4rem; margin-bottom: .35rem; }
.agp-dia-cab button { margin-left: auto; }
.agp-faixas { display: grid; gap: .35rem; }
.agp-faixa { display: grid; grid-template-columns: 1fr auto 1fr auto; align-items: center; gap: .35rem; }
.agp-faixa input { min-width: 0; width: 100%; }
.agp-as { color: var(--suave); font-size: .9rem; }
.agp-semana-ler { list-style: none; margin: .4rem 0 0; padding: 0; display: grid; gap: .3rem; }
.agp-semana-ler li { display: grid; grid-template-columns: 5.5rem 3.2rem 1fr; gap: .5rem; align-items: baseline; padding: .4rem .6rem; border-radius: 12px; background: var(--suave-bg); }
.modal-agp textarea { resize: vertical; }
@media (max-width: 600px) {
  .agp-lista > li, .agp-ag { grid-template-columns: minmax(0, 1fr) !important; }
  .agp-acoes, .agp-ag .agp-acoes { grid-column: auto; justify-content: flex-start; }
  .agp-lista > li.agp-slot { grid-template-columns: auto minmax(0, 1fr) auto !important; }
  .agp-grade .dia { font-size: .9rem; }
  .agp-qtd { top: 1px; right: 1px; font-size: .6rem; }
  .agp-semana-ler li { grid-template-columns: 4.6rem 3rem 1fr; }
}

/* Fase 29 — início e eventos */
/* Início: "Avisos" / "Aniversariantes" ficam fora do card, como título de seção (mesmo estilo de "Eventos"). */
.inicio-secao { margin: 0 0 1.4rem; }
.inicio-secao > .abas-inicio { border-bottom: 0; gap: 1.2rem; margin: 0 0 .5rem; align-items: flex-end; }
.inicio-secao > .abas-inicio .aba-ini { font-size: 1.3rem; letter-spacing: -.01em; line-height: 1.25; padding: 0 0 .3rem; border-bottom-width: 2px; }
.inicio-secao > .inicio-card { margin: 0; }
.inicio-secao > .inicio-card .aviso-bloco:last-child { margin-bottom: 0; }
#conteudo .barra > h2.titulo-secao { font-size: 1.3rem; line-height: 1.25; margin: 0; }
/* Discipulado: sem "Anotações", o "Excluir" fica sozinho à direita da data */
ul.datas li > .reg-acoes:has(> button:only-child) { gap: 0; }
/* Fase 29 — escalas */
/* Janela Sim/Não (perguntarSimNao em escalas.js) e botão "Desfazer Confirmação" */
.modal-pergunta .pergunta-texto { margin: .2rem 0 1rem; line-height: 1.45; }
.modal-pergunta .pergunta-acoes { display: flex; flex-wrap: wrap; gap: .5rem; justify-content: flex-end; margin: 0; }
.modal-pergunta .pergunta-acoes > button { flex: 0 1 8rem; margin: 0; }
.esc-meus > .etq-ok { align-self: center; }
.btn-desfazer-conf { color: var(--perigo, #b42318); }
@media (max-width: 600px) {
  .modal-pergunta .pergunta-acoes > button { flex: 1 1 0; }
}

/* Fase 29 — layout */
/* Mensagens do topo (#aviso): mais translúcidas, mantendo o vidro e a leitura do texto */
:root { --aviso-fundo: rgba(44,90,160,.54); --aviso-erro: rgba(192,57,43,.64); }
:root[data-theme="dark"] { --aviso-fundo: rgba(44,90,160,.48); --aviso-erro: rgba(192,57,43,.58); }
#aviso div { -webkit-backdrop-filter: blur(22px) saturate(190%); backdrop-filter: blur(22px) saturate(190%); text-shadow: 0 1px 2px rgba(10,20,40,.35); }
/* Celular: "Calendário Anual" quebra em duas linhas centralizadas em vez de cortar com reticências */
@media (max-width: 600px) {
  .barra-nav .barra-item { justify-content: flex-start; }
  .barra-nav .barra-item .barra-txt { white-space: normal; overflow: visible; text-overflow: clip; text-align: center; line-height: 1.05; }
}
/* Configurações (menu da conta): Aparência e Notificações no card de vidro */
.modal-config .card-tema, .modal-config .card-push, .modal-config .card-push-indisponivel { margin: 0 0 .8rem; }
.modal-config #cartao-push:empty { display: none; }
/* Computador: a barra vira uma coluna fixa à esquerda, só com ícones; ao passar o mouse (ou focar pelo teclado)
 * ela se expande mostrando os nomes, por cima do conteúdo (sem empurrar). O Menu fica no fim da coluna. */
@media (min-width: 900px) {
  .barra-wrap {
    left: max(12px, env(safe-area-inset-left, 0px)); right: auto; top: 50%; bottom: auto; transform: translateY(-50%);
    flex-direction: column; align-items: stretch; gap: 10px; max-width: none; max-height: calc(100vh - 24px);
  }
  .barra-nav { flex-direction: column; gap: 2px; padding: 6px; border-radius: 28px; overflow: hidden; }
  .barra-nav .barra-item {
    flex-direction: row; justify-content: flex-start; gap: 0; min-width: 0; width: 100%;
    padding: 10px; border-radius: 20px; font-size: 14px; line-height: 1.2;
  }
  .barra-nav .barra-item:hover .barra-ic, .barra-item.on .barra-ic { transform: none; }
  .barra-txt, .barra-wrap .fab .fab-txt {
    display: block; max-width: 0; opacity: 0; overflow: hidden; white-space: nowrap; margin-left: 0;
    transition: max-width .25s ease, opacity .18s ease, margin-left .25s ease;
  }
  .barra-selo { top: 3px; right: 3px; }
  .barra-wrap .fab {
    width: 100%; height: 56px; border-radius: 28px; flex-direction: row; justify-content: flex-start; padding: 0 0 0 17px;
  }
  .barra-wrap .fab:hover { transform: none; }
  .barra-wrap .fab .fab-txt { font-size: 14px; margin-top: 0; }
  /* expandida: mouse por cima ou foco pelo teclado */
  .barra-wrap:hover .barra-txt, .barra-wrap:has(:focus-visible) .barra-txt,
  .barra-wrap:hover .fab .fab-txt, .barra-wrap:has(:focus-visible) .fab .fab-txt { max-width: 14rem; opacity: 1; margin-left: 12px; }
  .barra-wrap:hover .barra-nav, .barra-wrap:has(:focus-visible) .barra-nav { padding-right: 14px; }
  .barra-nav { transition: padding-right .25s ease; }
  /* o Menu completo abre ao lado da coluna */
  .menu-flutuante { left: 92px; right: auto; top: 50%; bottom: auto; transform: translateY(-50%); max-height: calc(100vh - 32px); }
  /* conteúdo: espaço à esquerda para a coluna recolhida; sem o espaço embaixo que era da barra inferior */
  #app:has(> .barra-wrap) { padding-left: 84px; }
  .topo-logado ~ main, body:has(.barra-wrap) main, body:has(.fab) main { padding-bottom: 1.5rem; }
}
@media (min-width: 900px) and (prefers-reduced-motion: reduce) {
  .barra-txt, .barra-wrap .fab .fab-txt, .barra-nav { transition: none; }
}

/* Fase 30 — barra lateral */
/* Celular: continua a barra inferior com os atalhos (BARRA_ATALHOS) + Menu; a lista completa (.barra-lateral) fica escondida. */
.barra-nav.barra-lateral { display: none; }
/* Computador: a coluna da esquerda lista TODAS as abas (ordem alfabética, como o Menu completo); o botão Menu some.
 * Se não couber na altura da tela, a coluna rola (barra de rolagem fina). */
@media (min-width: 900px) {
  .barra-nav.barra-atalhos, .barra-wrap #menu-btn, #menu-nav { display: none !important; }
  .barra-nav.barra-lateral {
    display: flex; flex: 0 1 auto; min-height: 0; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain;
    scrollbar-width: thin; scrollbar-color: color-mix(in srgb, var(--suave) 45%, transparent) transparent;
  }
  .barra-lateral .barra-item { flex: 0 0 auto; }
  .barra-lateral::-webkit-scrollbar { width: 6px; }
  .barra-lateral::-webkit-scrollbar-track { background: transparent; margin: 18px 0; }
  .barra-lateral::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--suave) 45%, transparent); border-radius: 6px; }
  .barra-lateral .barra-item:focus-visible { outline: 2px solid var(--principal); outline-offset: -2px; }
}
@media print { .barra-nav.barra-lateral { display: none !important; } }

/* Fase 30 — aniversário */
.aniv-config { margin-top: 1.4rem; }
.aniv-cab { display: flex; align-items: center; justify-content: space-between; gap: .8rem; flex-wrap: wrap; }
.aniv-cab .titulo-secao { margin: 0; }
.aniv-chave { position: relative; display: inline-flex; align-items: center; gap: .55rem; cursor: pointer; font-weight: 600; color: var(--texto); user-select: none; }
.aniv-chave input { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; }
.aniv-trilho { position: relative; width: 46px; height: 26px; border-radius: 13px; background: var(--borda); transition: background .2s ease; flex: none; }
.aniv-trilho::after { content: ""; position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.25); transition: transform .2s ease; }
.aniv-chave input:checked + .aniv-trilho { background: var(--ok); }
.aniv-chave input:checked + .aniv-trilho::after { transform: translateX(20px); }
.aniv-chave input:focus-visible + .aniv-trilho { outline: 2px solid var(--principal); outline-offset: 2px; }
.aniv-previa { margin-top: .4rem; }
.aniv-previa-rotulo { display: block; font-size: .8rem; font-weight: 600; color: var(--suave); text-transform: uppercase; letter-spacing: .04em; margin-bottom: .35rem; }
.aniv-notif { display: flex; flex-direction: column; gap: .2rem; padding: .75rem .9rem; border-radius: 14px; background: var(--suave-bg); border: 1px solid var(--borda); color: var(--texto); overflow-wrap: anywhere; }
@media (prefers-reduced-motion: reduce) { .aniv-trilho, .aniv-trilho::after { transition: none; } }

/* Fase 30 — LGPD */
/* aviso de armazenamento (1ª visita): vidro, no rodapé, acima da barra inferior do celular */
.lgpd-banner {
  position: fixed; z-index: 43; left: 50%; transform: translateX(-50%);
  bottom: calc(12px + env(safe-area-inset-bottom, 0px)); width: min(720px, calc(100vw - 24px));
  display: flex; align-items: center; gap: .6rem 1rem; flex-wrap: wrap; padding: .7rem .9rem .7rem 1.1rem;
  background: var(--vidro-forte, var(--cartao)); -webkit-backdrop-filter: blur(22px) saturate(180%); backdrop-filter: blur(22px) saturate(180%);
  border: 1px solid var(--vidro-borda, var(--borda)); border-radius: 18px; box-shadow: var(--vidro-sombra, var(--sombra)); color: var(--texto);
}
.lgpd-banner p { flex: 1 1 18rem; margin: 0; font-size: .86rem; line-height: 1.4; color: var(--texto); }
.lgpd-banner a { color: var(--principal-2); font-weight: 600; }
.lgpd-banner button { flex: 0 0 auto; margin-left: auto; }
@media (max-width: 899px) { body:has(.barra-wrap) .lgpd-banner { bottom: calc(96px + env(safe-area-inset-bottom, 0px)); } }
@media (max-width: 480px) { .lgpd-banner { padding: .65rem .75rem; } .lgpd-banner button { width: 100%; } }
@media print { .lgpd-banner { display: none !important; } }

/* links das políticas (rodapé público, login, páginas) */
.lgpd-links { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: .3rem .55rem; font-size: .85rem; margin: .6rem 0 .2rem; }
.lgpd-links a { color: var(--principal-2); font-weight: 600; text-decoration: none; }
.lgpd-links a:hover, .lgpd-links a:focus-visible { text-decoration: underline; }
.lgpd-links span { color: var(--suave); }
.lgpd-links-login { margin-top: 1.4rem; }

/* aceite no cadastro e em Meus Dados */
.lgpd-aceite { display: flex; flex-direction: column; gap: .55rem; margin: .4rem 0 .9rem; }
.lgpd-aceite .esc-chk { display: flex; align-items: flex-start; gap: .55rem; font-size: .9rem; line-height: 1.4; color: var(--texto); font-weight: 600; }
.lgpd-aceite .esc-chk input { margin-top: .2rem; flex: 0 0 auto; width: 1.1rem; height: 1.1rem; }
.lgpd-aceite .esc-chk[hidden] { display: none; }
.lgpd-aceite a { color: var(--principal-2); }

/* Meus Dados */
.lgpd-meus-dados { margin-top: .9rem; }
.lgpd-meus-dados .titulo-secao { margin-top: 0; }
.lgpd-status { border-radius: 14px; padding: .65rem .85rem; margin: .4rem 0 .8rem; font-size: .92rem; }
.lgpd-status.ok { background: var(--ok-soft); color: var(--ok); font-weight: 600; }
.lgpd-status.pendente { background: var(--ouro-soft); color: var(--texto); }
.lgpd-status.pendente p { margin: 0 0 .5rem; color: var(--texto); }
.lgpd-acoes { margin: .4rem 0 .6rem; }
.lgpd-sub { margin: 1rem 0 .4rem; font-size: 1rem; }
.lgpd-pedidos { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }
.lgpd-pedidos > li { display: flex; flex-direction: column; gap: .2rem; padding: .6rem .8rem; border-radius: 14px; background: var(--suave-bg); overflow-wrap: anywhere; }
.lgpd-pedidos-admin > li.card { background: var(--cartao); padding: .85rem 1rem; margin: 0; }
.lgpd-pedidos .dica { margin: 0; font-size: .85rem; }
.lgpd-resposta { font-size: .9rem; }
.lgpd-st-pendente { background: var(--ouro-soft); color: var(--ouro-texto); }
.lgpd-st-em_andamento { background: var(--azul-soft); color: var(--principal-2); }
.lgpd-st-atendida { background: var(--ok-soft); color: var(--ok); }
.lgpd-st-recusada { background: var(--perigo-soft); color: var(--perigo); }
.lgpd-rodape-md { margin: .9rem 0 0; font-size: .85rem; }
.lgpd-admin-topo { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .6rem; margin-bottom: .4rem; }

/* páginas estáticas: Política de Privacidade, Cookies e Termos de Uso */
.lgpd-pagina { min-height: 100vh; }
.lgpd-doc-topo { position: sticky; top: 0; z-index: 10; display: flex; align-items: center; justify-content: space-between; gap: .6rem; padding: .6rem 1rem;
  background: var(--vidro-forte, var(--cartao)); -webkit-backdrop-filter: blur(18px) saturate(180%); backdrop-filter: blur(18px) saturate(180%); border-bottom: 1px solid var(--borda); }
.lgpd-doc-topo .logo-principal { height: 46px; width: auto; display: block; }
:root[data-theme="light"] .lgpd-doc-topo .logo-principal { mix-blend-mode: multiply; }
.lgpd-doc-topo .lgpd-topo-acoes { display: flex; gap: .4rem; flex-wrap: wrap; justify-content: flex-end; }
.lgpd-doc-topo a.botao, .lgpd-doc-topo button { min-height: 38px; padding: .4rem .8rem; font-size: .85rem; text-decoration: none; display: inline-flex; align-items: center; }
.lgpd-doc { max-width: 820px; margin: 0 auto; padding: 1rem 1rem 3rem; }
.lgpd-doc h1 { font-size: clamp(1.6rem, 4.5vw, 2.2rem); color: var(--texto); margin: .8rem 0 .3rem; }
.lgpd-doc .lgpd-vigencia { color: var(--suave); margin: 0 0 1rem; font-size: .92rem; }
.lgpd-doc-nav { display: flex; flex-wrap: wrap; gap: .4rem; margin: 0 0 1rem; }
.lgpd-doc-nav a { text-decoration: none; border: 1px solid var(--borda); border-radius: 999px; padding: .4rem .85rem; color: var(--principal-2); font-weight: 600; font-size: .88rem; background: var(--cartao); }
.lgpd-doc-nav a[aria-current="page"] { background: var(--principal); color: var(--sobre-principal); border-color: var(--principal); }
.lgpd-doc .card { padding: 1.1rem 1.25rem; }
.lgpd-doc h2 { font-size: 1.2rem; color: var(--principal); margin: 0 0 .5rem; scroll-margin-top: 80px; }
.lgpd-doc h3 { font-size: 1rem; margin: 1rem 0 .3rem; color: var(--texto); }
.lgpd-doc p, .lgpd-doc li { color: var(--texto); line-height: 1.6; }
.lgpd-doc .card p { color: var(--texto); }
.lgpd-doc ul { padding-left: 1.25rem; margin: .3rem 0 .6rem; }
.lgpd-doc li { margin: .2rem 0; }
.lgpd-doc a { color: var(--principal-2); }
.lgpd-doc .lgpd-sumario ol { margin: .2rem 0 0; padding-left: 1.3rem; columns: 2 16rem; column-gap: 1.5rem; }
.lgpd-doc .lgpd-sumario li { break-inside: avoid; }
.lgpd-doc .lgpd-destaque { background: var(--azul-soft); border-radius: 14px; padding: .75rem .9rem; margin: .6rem 0; }
.lgpd-doc .lgpd-sensivel { background: var(--ouro-soft); border-radius: 14px; padding: .75rem .9rem; margin: .6rem 0; }
.lgpd-tabela-wrap { overflow-x: auto; margin: .5rem 0; border: 1px solid var(--borda); border-radius: 14px; }
.lgpd-doc table { border-collapse: collapse; width: 100%; font-size: .9rem; }
.lgpd-doc table.lgpd-larga { min-width: 560px; }
.lgpd-doc-topo .logo-principal { border-radius: 10px; }
.lgpd-doc th, .lgpd-doc td { text-align: left; vertical-align: top; padding: .55rem .7rem; border-bottom: 1px solid var(--borda); color: var(--texto); }
.lgpd-doc th { background: var(--suave-bg); font-weight: 700; }
.lgpd-doc tr:last-child td { border-bottom: 0; }
.lgpd-doc code { background: var(--suave-bg); border-radius: 6px; padding: .05rem .35rem; font-size: .86em; overflow-wrap: anywhere; }
.lgpd-doc-rodape { text-align: center; color: var(--suave); font-size: .85rem; margin-top: 1.5rem; }
@media (max-width: 520px) {
  .lgpd-doc-topo .logo-principal { height: 36px; }
  .lgpd-doc .card { padding: .95rem 1rem; }
}
@media print { .lgpd-doc-topo, .lgpd-doc-nav { display: none; } .lgpd-doc .card { box-shadow: none; border: 0; padding: 0; } }
.lgpd-aceite .lgpd-sensivel-aviso { margin: -.25rem 0 0 1.65rem; font-size: .82rem; line-height: 1.4; }

/* Fase 30 — integração: checklist da senha (cadastro e Mudar Senha) e Privacidade e Meus Dados (menu da conta) */
.senha-check { list-style: none; margin: -.2rem 0 .9rem; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); gap: .15rem .9rem; font-size: .85rem; }
.senha-check li { color: var(--suave); display: flex; align-items: center; gap: .4rem; }
.senha-check .senha-marca { display: inline-flex; width: 1.1rem; justify-content: center; font-weight: 700; }
.senha-check li.ok { color: var(--ok); font-weight: 600; }
.modal-meus-dados .lgpd-meus-dados { margin: 0; border: 0; padding: 0; background: transparent; }
.lgpd-aceite-insc { margin-top: .9rem; }

/* Fase 31 — Checklist legal */
/* aviso de armazenamento: dois botões com o MESMO destaque */
.lgpd-banner-botoes { display: flex; flex-wrap: wrap; gap: .5rem; margin-left: auto; }
.lgpd-banner .lgpd-banner-botoes button { margin-left: 0; }
.lgpd-banner .lgpd-escolha { background: var(--principal); color: var(--sobre-principal); border: 1px solid var(--principal); min-width: 9.5rem; }
@media (max-width: 480px) { .lgpd-banner-botoes { width: 100%; } .lgpd-banner-botoes .lgpd-escolha { flex: 1 1 0; } }
/* botão com cara de link (Preferências de cookies) */
.link-botao { background: none; border: 0; padding: 0; min-height: 0; color: var(--principal-2); font: inherit; font-weight: 600; cursor: pointer; text-decoration: none; box-shadow: none; }
.link-botao:hover, .link-botao:focus-visible { text-decoration: underline; background: none; }
.lgpd-controlador { text-align: center; color: var(--suave); font-size: .8rem; margin: .1rem 0 .3rem; line-height: 1.5; }
.lgpd-controlador a { color: var(--principal-2); }
.card-cookies { margin-top: .8rem; }
/* Live: o player do YouTube só carrega com a escolha da pessoa */
.live-video.live-video-espera { display: flex; align-items: center; justify-content: center; background: var(--suave-bg); border: 1px dashed var(--borda); border-radius: 14px; padding: 1rem; aspect-ratio: auto; height: auto; min-height: 12rem; }
.live-consentimento { max-width: 34rem; text-align: center; }
.live-consentimento p { font-size: .88rem; color: var(--texto); margin: 0 0 .7rem; }
.live-consentimento a { color: var(--principal-2); }
/* acessibilidade: pular para o conteúdo (só aparece no foco) */
.pular-conteudo { position: absolute; left: .75rem; top: -4rem; z-index: 100; padding: .55rem .9rem; border-radius: 10px; background: var(--principal); color: var(--sobre-principal); font-weight: 700; text-decoration: none; }
.pular-conteudo:focus, .pular-conteudo:focus-visible { top: .75rem; outline: 3px solid var(--ouro); outline-offset: 2px; }
/* eventos: política de cancelamento, desistência e aviso de menores */
.ev-politica { background: var(--suave-bg); border-radius: 12px; padding: .7rem .9rem; margin: .6rem 0; font-size: .88rem; line-height: 1.45; }
.ev-politica h4 { margin: 0 0 .3rem; font-size: .95rem; }
.ev-politica p { margin: .2rem 0; white-space: pre-line; }
.ev-menores-aviso { background: var(--ouro-soft); color: var(--texto); border-radius: 10px; padding: .55rem .75rem; font-size: .86rem; margin: 0 0 .4rem 1.65rem; }
.ev-menores-aviso[hidden] { display: none; }
.etq-desistencia { background: var(--ouro-soft); color: var(--ouro-texto); }
/* Fase 32: evento "Apenas para membros" */
.etq-membros { background: var(--azul-soft); border-color: transparent; color: var(--principal-2); }
.ev-card .ev-membros { display: inline-block; margin: 0 0 .3rem; }
.chk-autorizacao { display: flex; align-items: flex-start; gap: .5rem; font-size: .88rem; font-weight: 600; margin: .3rem 0 .6rem; }
.chk-autorizacao input { margin-top: .2rem; flex: 0 0 auto; }
/* aviso reaberto por Preferências de cookies (pode estar sobre uma janela, ex.: Configurações) */
.lgpd-banner { z-index: 60; }

/* ===== Fase 33 — Tela pública (antes do login): destaque, acesso rápido em cards, Sobre Nós em 2 colunas e rodapé em 3 colunas =====
 * Só cores dos tokens (azul e branco). Ids/classes usados pelos testes continuam (#pub-nav, [data-aba-pub], .rodape-publico, .rodape-direitos…). */
:root {
  --pub-hero-a: var(--principal-2); --pub-hero-b: var(--principal);
  --pub-hero-texto: #ffffff; --pub-hero-suave: rgba(255,255,255,.86); --pub-destaque: #b9d1f7;
  --pub-escuro: color-mix(in srgb, var(--principal-2) 82%, #000);
}
:root[data-theme="dark"] {
  --pub-hero-a: color-mix(in srgb, var(--azul-soft) 70%, #000); --pub-hero-b: var(--azul-soft);
  --pub-destaque: var(--principal-2);
  --pub-escuro: color-mix(in srgb, var(--azul-soft) 55%, var(--fundo));
}

/* barra pública (modelo): logo à esquerda, links das abas no centro, Login à direita; hambúrguer no celular.
 * Sobre a foto da capa fica transparente (texto branco); ao rolar, vidro (branco no claro, escuro no escuro) e links em azul. */
:root { --pub-topo-h: 72px; --pub-veu: color-mix(in srgb, var(--pub-escuro) 92%, #000); }
body:has(.pub-hero) { overflow-x: clip; }   /* a capa vai de ponta a ponta sem rolagem lateral */
.topo-publico.pub-topo { display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; gap: 1rem;
  position: sticky; top: 0; z-index: 30; min-height: var(--pub-topo-h); padding: .55rem clamp(1rem, 3vw, 2rem);
  background: var(--cartao); border-bottom: 1px solid var(--borda);
  transition: background-color .25s ease, box-shadow .25s ease, border-color .25s ease; }
.pub-topo .pub-topo-marca { display: inline-flex; align-items: center; flex: none; margin: 0; padding: .3rem .55rem; min-height: 0; width: auto;
  border-radius: 14px; border: 1px solid color-mix(in srgb, var(--principal) 18%, transparent); background: #fff; box-shadow: none; cursor: pointer; }
.pub-topo .pub-topo-logo { display: block; height: 52px; width: auto; max-width: 42vw; object-fit: contain; }
.pub-topo .pub-topo-links { display: flex; align-items: center; justify-content: center; gap: clamp(.4rem, 1.6vw, 1.6rem); flex: 1 1 auto; flex-wrap: nowrap; }
.pub-topo .pub-topo-link { background: transparent !important; border: 0; box-shadow: none; margin: 0; min-height: 40px; width: auto; padding: .35rem .2rem;
  color: var(--principal) !important; font-weight: 700; font-size: .98rem; border-radius: 8px; position: relative; white-space: nowrap; }
.pub-topo .pub-topo-link::after { content: ""; position: absolute; left: .2rem; right: .2rem; bottom: .2rem; height: 2px; border-radius: 2px;
  background: currentColor; transform: scaleX(0); transition: transform .2s ease; }
.pub-topo .pub-topo-link:hover::after, .pub-topo .pub-topo-link:focus-visible::after { transform: scaleX(1); }
.pub-topo .pub-topo-login { display: none; }
.pub-topo .pub-topo-acoes { display: flex; align-items: center; gap: .5rem; flex: none; }
.pub-topo #entrar { display: inline-flex; align-items: center; gap: .45rem; margin: 0; width: auto; min-height: 42px; padding: .45rem 1.3rem !important;
  border-radius: 999px; border: 2px solid var(--principal); background: transparent; color: var(--principal); font-weight: 800; font-size: .95rem; }
.pub-topo #entrar:hover { background: var(--principal); color: var(--sobre-principal); }
.pub-topo #entrar .txt { display: inline; }
.pub-topo .pub-menu-btn { display: none; place-items: center; width: 44px; height: 44px; min-height: 0; margin: 0; padding: 0; border-radius: 12px;
  border: 0; background: transparent; color: var(--principal); box-shadow: none; }
.pub-menu-btn span, .pub-menu-btn span::before, .pub-menu-btn span::after { display: block; width: 22px; height: 2px; border-radius: 2px; background: currentColor;
  position: relative; transition: transform .2s ease, background-color .2s ease; }
.pub-menu-btn span::before, .pub-menu-btn span::after { content: ""; position: absolute; left: 0; }
.pub-menu-btn span::before { top: -7px; }
.pub-menu-btn span::after { top: 7px; }
.pub-topo.menu-aberto .pub-menu-btn span { background: transparent; }
.pub-topo.menu-aberto .pub-menu-btn span::before { background: currentColor; transform: translateY(7px) rotate(45deg); }
.pub-topo.menu-aberto .pub-menu-btn span::after { background: currentColor; transform: translateY(-7px) rotate(-45deg); }
.pub-topo :focus-visible { outline: 3px solid var(--principal); outline-offset: 2px; }

/* sobre a capa: fixa e transparente, texto branco; a logo numa placa branca translúcida */
.topo-publico.pub-topo.com-hero { position: fixed; left: 0; right: 0; background: transparent; border-bottom: 0; box-shadow: none; }
/* logo sem caixa: versão branca (imagens/logo-branco.png) sobre a foto e no tema escuro; colorida (fundo transparente) na barra clara */
.pub-topo .pub-topo-marca { background: transparent; border-color: transparent; padding-inline: 0; }
.pub-topo .pub-topo-logo-branco { display: none; }
.pub-topo.com-hero:not(.rolado):not(.menu-aberto) .pub-topo-logo-branco, :root[data-theme="dark"] .pub-topo .pub-topo-logo-branco { display: block; filter: drop-shadow(0 1px 6px rgba(0,0,0,.45)); }
.pub-topo.com-hero:not(.rolado):not(.menu-aberto) .logo-principal, :root[data-theme="dark"] .pub-topo .logo-principal { display: none; }
.pub-topo.com-hero:not(.rolado):not(.menu-aberto) .pub-topo-link { color: #fff !important; text-shadow: 0 1px 8px rgba(0,0,0,.35); }
.pub-topo.com-hero:not(.rolado):not(.menu-aberto) #entrar { border-color: #fff; color: #fff; }
.pub-topo.com-hero:not(.rolado):not(.menu-aberto) #entrar:hover { background: #fff; color: #1f4380; }
.pub-topo.com-hero:not(.rolado):not(.menu-aberto) .pub-menu-btn { color: #fff; }
.pub-topo.com-hero:not(.rolado):not(.menu-aberto) :focus-visible { outline-color: #fff; }
.topo-publico.pub-topo.com-hero.rolado, .topo-publico.pub-topo.com-hero.menu-aberto { background: var(--vidro-forte);
  -webkit-backdrop-filter: blur(16px) saturate(180%); backdrop-filter: blur(16px) saturate(180%); border-bottom-color: var(--borda); box-shadow: var(--sombra-card); }

/* celular/tablet: hambúrguer com os mesmos links + Login */
@media (max-width: 899px) {
  :root { --pub-topo-h: 64px; }
  .topo-publico.pub-topo { padding: .5rem 1rem; }
  .pub-topo .pub-topo-logo { height: 38px; }
  .pub-topo #entrar { display: none; }
  .pub-topo .pub-menu-btn { display: grid; }
  .pub-topo .pub-topo-links { display: none; position: absolute; top: 100%; left: 0; right: 0; flex-direction: column; align-items: stretch; gap: .15rem;
    padding: .6rem 1rem 1rem; background: var(--cartao); border-bottom: 1px solid var(--borda); box-shadow: var(--sombra-card-hover); }
  .pub-topo.menu-aberto .pub-topo-links { display: flex; }
  .pub-topo .pub-topo-link { text-align: left; padding: .7rem .6rem; font-size: 1.02rem; border-bottom: 1px solid var(--borda); border-radius: 0; }
  .pub-topo .pub-topo-link::after { display: none; }
  .pub-topo .pub-topo-login { display: block; margin-top: .6rem; text-align: center; border: 2px solid var(--principal); border-radius: 999px; }
}

/* capa (hero): foto do templo e dos pastores; texto à esquerda sobre um véu azul escuro (transparente à direita) */
.pub-hero { position: relative; isolation: isolate; overflow: hidden; color: var(--pub-hero-texto); text-align: left;
  width: 100vw; margin: -1rem 0 0 calc(50% - 50vw); background: var(--pub-veu);
  min-height: clamp(520px, 86vh, 780px); display: flex; align-items: center; }
.pub-hero-foto { position: absolute; inset: 0; z-index: -2; display: block; }
.pub-hero-foto img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 100% 22%; }
.pub-hero-veu { position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(90deg, color-mix(in srgb, var(--pub-veu) 94%, transparent) 0%, color-mix(in srgb, var(--pub-veu) 80%, transparent) 30%,
    color-mix(in srgb, var(--pub-veu) 35%, transparent) 46%, transparent 60%),
    linear-gradient(0deg, color-mix(in srgb, var(--pub-veu) 55%, transparent), transparent 30%); }
.pub-hero-conteudo { width: 100%; max-width: 1280px; margin: 0 auto; padding: calc(var(--pub-topo-h) + 2rem) clamp(1.2rem, 4vw, 3rem) 5rem; }
.pub-hero-conteudo > * { max-width: min(34rem, 40vw); }
.pub-hero-selo { display: inline-block; margin-bottom: 1rem; padding: .35rem .9rem; border-radius: 999px; font-size: .85rem; font-weight: 700; letter-spacing: .02em;
  color: #fff; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.3); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.pub-hero-titulo { color: var(--pub-hero-texto); font-size: clamp(2rem, 3.6vw, 3.4rem); line-height: 1.08; font-weight: 800;
  margin: 0 0 .9rem; text-shadow: 0 2px 18px rgba(0,0,0,.35); }
.pub-hero-destaque { color: #f0c463; background: linear-gradient(100deg, #f5d27a 0%, #e9bd5c 45%, #d4a443 100%);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; text-shadow: none;
  filter: drop-shadow(0 2px 10px rgba(0,0,0,.35)); }
.pub-hero-apoio { color: var(--pub-hero-suave); font-size: clamp(1rem, 1.5vw, 1.2rem); margin: 0 0 1.6rem; text-shadow: 0 1px 10px rgba(0,0,0,.35); }
.pub-hero .pub-hero-btn { display: inline-flex; align-items: center; justify-content: center; width: auto; min-height: 50px; padding: .75rem 1.8rem;
  border-radius: 999px; border: 2px solid #fff; background: #fff; color: #1f4380; font-size: 1.05rem; font-weight: 800;
  box-shadow: 0 10px 26px rgba(0,0,0,.28); transition: transform .2s ease, box-shadow .2s ease; }
.pub-hero .pub-hero-btn:hover { transform: translateY(-2px); box-shadow: 0 14px 30px rgba(0,0,0,.34); }
.pub-hero :focus-visible { outline: 3px solid #fff; outline-offset: 3px; }
/* celular/tablet: a foto em cima (pessoas visíveis, abaixo da barra) e o texto embaixo, sobre a parte inferior com gradiente */
@media (max-width: 899px) {
  .pub-hero { display: block; min-height: 0; padding-top: var(--pub-topo-h); }
  .pub-hero-foto { position: relative; inset: auto; z-index: auto; width: 100%; aspect-ratio: 4 / 3; max-height: 62vh; }
  .pub-hero-foto img { object-position: 92% 30%; }
  .pub-hero-veu { inset: auto 0 auto 0; top: var(--pub-topo-h); aspect-ratio: 4 / 3; max-height: 62vh; z-index: 1;
    background: linear-gradient(180deg, transparent 58%, var(--pub-veu) 100%); }
  .pub-hero-conteudo { position: relative; z-index: 2; margin-top: -3rem; padding: 0 1.2rem 4.4rem; }
  .pub-hero-conteudo > * { max-width: 36rem; }
  .pub-hero-selo { margin-bottom: .7rem; font-size: .78rem; }
  .pub-hero-titulo { font-size: clamp(1.7rem, 7vw, 2.4rem); }
}

/* acesso rápido: as abas viram cards (1 / 2 / 3 / 5 colunas; 6 com Notificações, logado) e sobem sobre o fim do destaque */
.pub-acesso { position: relative; z-index: 2; margin-top: -2.2rem; margin-bottom: 1.4rem; }
.pub-nav.pub-cards { display: grid; grid-template-columns: 1fr; gap: .75rem; margin: 0; }
@media (min-width: 340px) { .pub-nav.pub-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 700px) { .pub-nav.pub-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; } }
@media (min-width: 1100px) { .pub-nav.pub-cards { grid-template-columns: repeat(5, minmax(0, 1fr)); } .pub-nav.pub-cards.seis { grid-template-columns: repeat(6, minmax(0, 1fr)); } }
@media (min-width: 340px) and (max-width: 699px) { .pub-nav.pub-cards button:last-child:nth-child(odd) { grid-column: 1 / -1; } }
.pub-nav.pub-cards button { display: flex; flex-direction: column; align-items: center; justify-content: flex-start; gap: .35rem; text-align: center;
  min-height: 0; height: 100%; margin: 0; padding: 1.1rem .8rem 1rem; border-radius: 20px; border: 1px solid var(--borda);
  background: var(--cartao); color: var(--texto); font-weight: 700; font-size: 1rem; line-height: 1.2; box-shadow: var(--sombra-card);
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease; white-space: normal; }
.pub-nav.pub-cards button:hover { transform: translateY(-4px); box-shadow: var(--sombra-card-hover); border-color: color-mix(in srgb, var(--principal) 45%, var(--borda)); }
.pub-nav.pub-cards button[aria-selected="true"] { background: var(--cartao); color: var(--texto); border-color: var(--principal);
  box-shadow: 0 0 0 2px var(--principal), var(--sombra-card-hover); }
.pub-card-ico { display: grid; place-items: center; width: 56px; height: 56px; border-radius: 50%; background: var(--azul-soft); color: var(--principal);
  flex: none; margin-bottom: .25rem; transition: background-color .2s ease, color .2s ease; }
.pub-card-ico::before { content: ''; width: 28px; height: 28px; background: currentColor;
  -webkit-mask: var(--ico) center / contain no-repeat; mask: var(--ico) center / contain no-repeat; }
.pub-nav.pub-cards button:hover .pub-card-ico, .pub-nav.pub-cards button[aria-selected="true"] .pub-card-ico { background: var(--principal); color: var(--sobre-principal); }
.pub-card-titulo { font-family: var(--f-display); font-size: 1.02rem; color: var(--texto); }
.pub-nav.pub-cards button::after { content: attr(data-frase); font-size: .82rem; font-weight: 500; color: var(--suave); line-height: 1.3; }
[data-aba-pub="sobre"] { --ico: url(icones/igrejas.png); }
[data-aba-pub="avisos"] { --ico: url(icones/avisos.svg); }
[data-aba-pub="agenda"] { --ico: url(icones/agenda-pastoral.svg); }
[data-aba-pub="live"] { --ico: url(icones/midia.svg); }
[data-aba-pub="eventos"] { --ico: url(icones/eventos.png); }
[data-aba-pub="notificacoes"] { --ico: url(icones/avisos.svg); }
@media (max-width: 699px) {
  .pub-nav.pub-cards button { padding: .85rem .5rem .8rem; }
  .pub-card-ico { width: 46px; height: 46px; }
  .pub-card-ico::before { width: 24px; height: 24px; }
  .pub-card-titulo { font-size: .95rem; }
  .pub-nav.pub-cards button::after { font-size: .76rem; }
}
#pub-painel { scroll-margin-top: 5.5rem; }
#pub-painel:focus { outline: none; }

/* Sobre Nós: texto (sobre-nos.html) à esquerda e versículo em bloco azul escuro à direita; 1 coluna no celular */
.sobre-colunas { display: grid; grid-template-columns: 1fr; gap: 1.2rem; align-items: stretch; }
@media (min-width: 900px) { .sobre-colunas { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 2.4rem; } .sobre-versiculo { min-height: 100%; } }
.sobre-texto h4 { color: var(--principal-2); font-family: var(--f-display); font-size: 1.15rem; margin: 1rem 0 .4rem; display: flex; align-items: center; gap: .6rem; }
.sobre-texto h4::before { content: ''; width: 28px; height: 4px; border-radius: 4px; background: var(--principal); flex: none; }
.sobre-texto > h4:first-child { margin-top: .2rem; }
.sobre-texto p { line-height: 1.65; }
.sobre-versiculo { position: relative; isolation: isolate; overflow: hidden; border-radius: 28px; padding: clamp(2.6rem, 5vw, 3.8rem) clamp(1.6rem, 4vw, 3rem); color: #fff;
  display: flex; flex-direction: column; justify-content: center; min-height: 340px;
  background: radial-gradient(70% 60% at 100% 0%, color-mix(in srgb, #fff 12%, transparent), transparent 70%), linear-gradient(160deg, var(--pub-escuro), var(--pub-hero-a));
  box-shadow: var(--sombra-card-hover); }
/* brilhos sutis em azul (cantos) */
.sobre-versiculo::before, .sobre-versiculo::after { content: ""; position: absolute; z-index: -1; width: 14rem; height: 14rem; border-radius: 50%;
  filter: blur(48px); pointer-events: none; }
.sobre-versiculo::before { top: -5rem; right: -5rem; background: color-mix(in srgb, var(--principal) 55%, transparent); }
.sobre-versiculo::after { bottom: -5rem; left: -5rem; background: color-mix(in srgb, #8fb2ec 35%, transparent); }
.sobre-versiculo-marca { position: absolute; top: .2rem; left: 1.2rem; font-family: var(--f-display); font-size: 8rem; line-height: 1; color: rgba(255,255,255,.16); }
.sobre-versiculo blockquote { position: relative; margin: 0; }
.card .sobre-versiculo blockquote p { color: #fff; font-family: var(--f-display); font-size: clamp(1.4rem, 2.6vw, 2rem); font-weight: 700; line-height: 1.35; margin: 0 0 1.2rem; font-style: italic; }
.sobre-versiculo blockquote footer { color: var(--pub-destaque); font-weight: 800; font-size: 1.05rem; letter-spacing: .02em; }
:root[data-theme="dark"] .sobre-versiculo { border: 1px solid var(--borda); }

/* rodapé: painel azul escuro em até 3 colunas + linha de privacidade e direitos */
.pub-rodape { margin: 2rem -1rem -1rem; padding: 2.2rem 1.2rem 1rem; color: rgba(255,255,255,.88);
  border-image: linear-gradient(180deg, var(--pub-escuro), color-mix(in srgb, var(--pub-escuro) 80%, #000)) fill 0 / 0 / 0 100vw; }
.pub-rodape .rodape-publico { display: grid; grid-template-columns: 1fr; gap: 1.8rem; margin: 0 auto; padding: 0; max-width: 1200px;
  background: transparent; border: 0; border-radius: 0; box-shadow: none; }
@media (min-width: 700px) { .pub-rodape .rodape-publico { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .pub-rodape .rodape-publico { grid-template-columns: minmax(0, 1.15fr) minmax(0, .9fr) minmax(0, 1.2fr); gap: 2.6rem; } }
.rodape-col { min-width: 0; }
.rodape-placa { display: inline-block; max-width: 100%; }   /* logo branco direto sobre o azul, sem caixa */
.rodape-logo { display: block; height: 60px; width: auto; max-width: 100%; object-fit: contain; }
.rodape-frase { color: rgba(255,255,255,.8); margin: 1rem 0 1.1rem; line-height: 1.6; max-width: 26rem; }
.pub-rodape .rodape-icones { justify-content: flex-start; gap: .6rem; }
.pub-rodape .rede:not(.com-texto) { width: 42px; height: 42px; justify-content: center; border-radius: 50%; background: rgba(255,255,255,.10); }
.pub-rodape .rede.com-texto { color: #fff; background: rgba(255,255,255,.10); border-radius: 999px; padding: .25rem .8rem .25rem .4rem; }
.pub-rodape .rede:hover { background: rgba(255,255,255,.20); }
.rodape-titulo { color: #fff; font-size: 1.05rem; margin: 0 0 .8rem; padding-bottom: .5rem; border-bottom: 2px solid rgba(255,255,255,.18); }
.rodape-links ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .45rem 1rem; }
.pub-rodape .rodape-link { display: inline-flex; align-items: center; gap: .4rem; color: rgba(255,255,255,.88); font-weight: 600; text-align: left; min-height: 32px; text-decoration: none; }
.pub-rodape .rodape-link .rodape-ico { flex: none; opacity: .75; transition: transform .2s ease; }
.pub-rodape .rodape-link:hover .rodape-ico { transform: translateX(2px); opacity: 1; }
.pub-rodape .rodape-link:hover, .pub-rodape .rodape-link:focus-visible { color: #fff; }
.pub-rodape .rodape-blocos { display: grid; gap: 1rem; justify-content: stretch; }
.pub-rodape .rodape-igreja { align-items: flex-start; text-align: left; gap: .25rem; }
.pub-rodape .rodape-igreja b { color: #fff; }
.rodape-endereco, .pub-rodape .rodape-tel { display: flex; align-items: flex-start; gap: .45rem; font-size: .92rem; color: rgba(255,255,255,.78); overflow-wrap: anywhere; line-height: 1.45; }
.pub-rodape .rodape-tel { align-items: center; color: #fff; font-weight: 700; text-decoration: none; }
.pub-rodape .rodape-tel:hover { text-decoration: underline; }
.rodape-endereco .rodape-ico, .pub-rodape .rodape-tel .rodape-ico { flex: none; margin-top: .15rem; color: var(--pub-destaque); }
.pub-rodape .rodape-tel .rodape-ico { margin-top: 0; }
.pub-rodape .rede.rodape-maps { flex: none; width: 34px; height: 34px; margin-top: -.3rem; }
.pub-rodape .rede.rodape-maps svg { width: 22px; height: 22px; }
.pub-rodape .rodape-endereco { align-items: center; }
.pub-rodape .lgpd-links-rodape { justify-content: center; }
.pub-rodape :focus-visible { outline: 3px solid #fff; outline-offset: 2px; }
.pub-rodape-base { max-width: 1200px; margin: 1.8rem auto 0; padding-top: 1rem; border-top: 1px solid rgba(255,255,255,.15); }
.pub-rodape .lgpd-links { margin-top: 0; }
.pub-rodape .lgpd-links a, .pub-rodape .lgpd-links .link-botao, .pub-rodape .lgpd-controlador a { color: #fff; }
.pub-rodape .lgpd-links span, .pub-rodape .lgpd-controlador { color: rgba(255,255,255,.72); }
/* tela de Login: o Cadastro entra por aqui (saiu da barra pública) */
.login .login-cadastro { text-align: center; margin: 1rem 0 .4rem; color: var(--suave); }
.login .login-cadastro .link-botao { color: var(--principal); font-weight: 800; text-decoration: underline; text-underline-offset: 3px; }
.pub-rodape-final { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .3rem 1.2rem; margin-top: .8rem; }
.pub-rodape .rodape-direitos, .pub-rodape .rodape-feito { color: rgba(255,255,255,.72); margin: 0; font-size: .9rem; }
.rodape-feito { display: inline-flex; align-items: center; gap: .3rem; }
.rodape-coracao { color: #ff6b81; flex: none; }

@media (max-width: 600px) {
  .sobre-versiculo { padding: 2.4rem 1.4rem 2rem; min-height: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .topo-publico.pub-topo, .pub-hero .pub-hero-btn, .pub-nav.pub-cards button, .pub-card-ico { transition: none; }
  .pub-hero .pub-hero-btn:hover, .pub-nav.pub-cards button:hover, .pub-rodape .rodape-link:hover .rodape-ico { transform: none; }
  .pub-topo, .pub-topo .pub-topo-link::after, .pub-menu-btn span, .pub-menu-btn span::before, .pub-menu-btn span::after, .pub-rodape .rodape-link .rodape-ico { transition: none; }
}

/* =====================================================================
 * Fase 35 — Visual de eventos, agenda e barra lateral
 * ===================================================================== */

/* 1. Barra lateral (computador): vidro AZUL com ícones e rótulos brancos. A barra inferior do celular não muda. */
:root { --lateral-fundo: rgba(44, 90, 160, .86); --lateral-solido: #2c5aa0; }
:root[data-theme="dark"] { --lateral-fundo: rgba(31, 67, 128, .86); --lateral-solido: #1f4380; }
@media (min-width: 900px) {
  .barra-nav.barra-lateral {
    background: var(--lateral-fundo); border-color: rgba(255, 255, 255, .22);
    -webkit-backdrop-filter: blur(16px) saturate(170%); backdrop-filter: blur(16px) saturate(170%);
    box-shadow: 0 14px 36px rgba(22, 35, 58, .28), inset 0 1px 0 rgba(255, 255, 255, .18);
    scrollbar-color: rgba(255, 255, 255, .45) transparent;
  }
  .barra-nav.barra-lateral .barra-item { color: rgba(255, 255, 255, .92); }
  .barra-nav.barra-lateral .barra-item .barra-ic { background-color: #fff; }
  .barra-nav.barra-lateral .barra-item:hover { color: #fff; background: rgba(255, 255, 255, .16); }
  .barra-nav.barra-lateral .barra-item.on { color: #fff; background: rgba(255, 255, 255, .26); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .38); }
  .barra-nav.barra-lateral .barra-item.on .barra-txt { font-weight: 800; }
  .barra-nav.barra-lateral .barra-item:focus-visible { outline: 2px solid #fff; outline-offset: -3px; }
  .barra-nav.barra-lateral .barra-txt { text-shadow: 0 1px 2px rgba(10, 20, 40, .25); }
  .barra-lateral::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, .45); }
}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  @media (min-width: 900px) { .barra-nav.barra-lateral { background: var(--lateral-solido); } }
}
@media (forced-colors: active) { .barra-nav.barra-lateral .barra-item .barra-ic { background-color: ButtonText; } }

/* 2. Agenda da Semana: lista em colunas, uma por igreja; itens de hoje em azul. No celular as colunas empilham. */
.semana-legenda.semana-colunas {
  display: grid; grid-template-columns: repeat(var(--semana-colunas, 1), minmax(0, 1fr)); gap: .8rem;
  list-style: none; padding: 0; margin: 1rem 0 0;
}
.semana-coluna { min-width: 0; background: var(--suave-bg); border: 1px solid var(--borda); border-radius: 16px; padding: .8rem .85rem; }
.semana-coluna-titulo { margin: 0 0 .6rem; font-family: var(--f-display); font-size: 1rem; color: var(--principal-2); overflow-wrap: anywhere; }
.semana-coluna-lista { list-style: none; margin: 0; padding: 0; display: grid; gap: .4rem; }
.semana-coluna-lista li { display: flex; gap: .5rem; align-items: center; min-width: 0; padding: .35rem .5rem; border: 1px solid transparent; border-radius: 12px; overflow-wrap: anywhere; }
.semana-coluna-lista li > span:last-child { min-width: 0; }
.semana-coluna-lista li.semana-item-hoje { background: var(--azul-soft); border-color: var(--principal); color: var(--principal-2); }
.semana-coluna-lista li.semana-item-hoje b, .semana-coluna-lista li.semana-item-hoje a { color: var(--principal-2); }
.semana-etq-hoje { display: inline-block; margin: 0 .3rem 0 .1rem; padding: 0 .45rem; border-radius: 999px; background: var(--principal); color: var(--sobre-principal); font-size: .72rem; font-weight: 800; line-height: 1.4; vertical-align: middle; }
@media (max-width: 760px) { .semana-legenda.semana-colunas { grid-template-columns: minmax(0, 1fr); } }

/* 3. Lista de eventos: grade de cards (3 colunas no computador, 2 no tablet, 1 no celular) */
@media (min-width: 1100px) { main:has(.ev-grade), main:has(.ev-det) { max-width: 1120px; } }
.ev-grade { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; margin-bottom: .85rem; }
@media (max-width: 899px) { .ev-grade { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .ev-grade { grid-template-columns: minmax(0, 1fr); } }
details .ev-grade { margin-top: .8rem; }
.ev-grade .ev-card, .ev-grade .ev-card.com-imagem {
  position: relative; display: flex; flex-direction: column; gap: 0; padding: 0; margin: 0; overflow: hidden;
  grid-template-columns: none; border-radius: 18px;
}
.ev-grade .ev-card:hover { transform: translateY(-2px); }
.ev-grade .ev-card:focus-within { box-shadow: 0 0 0 3px var(--principal); }
.ev-grade .ev-capa { margin: .6rem .6rem 0; aspect-ratio: 2 / 1; border-radius: 14px; overflow: hidden; background: var(--azul-soft); }
.ev-grade .ev-capa .ev-imagem, .ev-grade .ev-card.com-imagem .ev-imagem { width: 100%; height: 100%; max-width: none; aspect-ratio: auto; object-fit: cover; border-radius: 0; order: 0; }
.ev-capa-vazia { display: grid; place-items: center; width: 100%; height: 100%; color: var(--principal); }
.ev-capa-vazia .ev-ico { width: 40px; height: 40px; opacity: .7; }
.ev-grade .ev-card .ev-info, .ev-grade .ev-card.com-imagem .ev-info { padding: .75rem .9rem .9rem; display: flex; flex-direction: column; gap: .35rem; flex: 1; }
.ev-etiquetas { display: flex; flex-wrap: wrap; gap: .35rem; }
.ev-etiquetas .etiqueta { margin: 0; font-size: .75rem; }
.ev-grade .ev-card .ev-tipo, .ev-grade .ev-card.com-imagem .ev-tipo { position: static; }
.ev-grade .ev-card .ev-membros { margin: 0; }
.ev-etq-breve { background: var(--ouro-soft); color: var(--ouro-texto); }
.ev-etq-encerrado { background: var(--suave-bg); color: var(--suave); }
.ev-grade .ev-card h3 { margin: .1rem 0 0; font-size: 1rem; font-weight: 800; line-height: 1.25; text-transform: uppercase; letter-spacing: .01em; overflow-wrap: anywhere; }
.ev-card-link { color: inherit; text-decoration: none; }
.ev-card-link::after { content: ""; position: absolute; inset: 0; border-radius: inherit; z-index: 1; }
.ev-card-link:focus-visible { outline: none; }
.ev-card-link:hover { color: var(--principal-2); }
.ev-grade .ev-card .ev-igreja { margin: 0; font-size: .85rem; color: var(--suave); }
.ev-preco { margin: 0; font-size: .9rem; color: var(--suave); }
.ev-preco b { color: var(--texto); }
.ev-quando { display: flex; align-items: center; gap: .4rem; margin: auto 0 0; padding-top: .2rem; font-size: .85rem; color: var(--principal-2); font-weight: 600; }
.ev-quando .ev-ico { flex: 0 0 auto; }
.ev-ico { display: inline-block; vertical-align: middle; flex: 0 0 auto; }

/* 4. Página do evento: 2 colunas (computador), uma coluna no celular com o painel logo abaixo do título */
.ev-det-barra { justify-content: flex-start; }
.card.ev-detalhe.ev-det, .card.ev-detalhe.ev-det.com-imagem { display: block; padding: .8rem; }
/* imagem sempre inteira (sem corte); sobra em faixa azul clara quando não é 2:1 */
.ev-det > img.ev-imagem.ev-det-capa { display: block; width: 100%; max-width: none; height: auto; aspect-ratio: auto; max-height: 560px; object-fit: contain; background: var(--azul-soft); border-radius: 16px; margin: 0 0 1rem; }
.ev-det-grade {
  display: grid; gap: 1rem 1.6rem; align-items: start;
  grid-template-columns: minmax(0, 1fr) minmax(280px, 340px);
  grid-template-areas: "cab lado" "corpo lado";
  padding: 0 .4rem .4rem;
}
.ev-det-cab { grid-area: cab; display: flex; align-items: flex-start; justify-content: space-between; gap: .8rem; }
.ev-det-cab-texto { min-width: 0; display: flex; flex-direction: column; gap: .4rem; }
.ev-det-titulo { margin: .1rem 0 0; font-size: clamp(1.4rem, 1.1rem + 1.2vw, 2rem); line-height: 1.15; overflow-wrap: anywhere; }
.ev-det-cab .ev-igreja { margin: 0; color: var(--suave); }
.ev-det-cab .ev-quando { margin: 0; font-size: .95rem; }
.ev-det-tipo { background: var(--azul-soft); color: var(--principal-2); }
.ev-compartilhar {
  flex: 0 0 auto; width: 46px; height: 46px; min-height: 46px; padding: 0; border-radius: 50%;
  display: grid; place-items: center; background: var(--azul-soft); color: var(--principal-2); border: 1px solid var(--borda);
}
.ev-compartilhar:hover { background: var(--principal); color: var(--sobre-principal); }
.ev-det-lado { grid-area: lado; position: sticky; top: 84px; display: flex; flex-direction: column; gap: 1rem; min-width: 0; }
.ev-insc-painel, .ev-org { background: var(--cartao); border: 1px solid var(--borda); border-radius: 18px; padding: 1rem; box-shadow: var(--sombra); }
.ev-insc-painel h3, .ev-org h3 { margin: 0 0 .7rem; font-size: 1.1rem; }
.ev-ingresso-lista { display: grid; gap: .5rem; margin: 0; }
.ev-ingresso-op { display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: .5rem; row-gap: .1rem; align-items: center; padding: .7rem .8rem; border: 1px solid var(--borda); border-radius: 14px; background: var(--suave-bg); cursor: default; }
.ev-ingresso-unico { grid-template-columns: minmax(0, 1fr); }
label.ev-ingresso-op { cursor: pointer; }
label.ev-ingresso-op.ev-ingresso-unico { cursor: default; }
.ev-ingresso-op input { grid-row: 1 / span 3; margin: 0; width: 1.1rem; height: 1.1rem; min-height: 0; accent-color: var(--principal); }
.ev-ingresso-op.sel:not(.ev-ingresso-unico) { border-color: var(--principal); background: var(--azul-soft); }
.ev-ingresso-op input:focus-visible { outline: 3px solid var(--principal); outline-offset: 2px; }
.ev-ingresso-nome { font-weight: 800; overflow-wrap: anywhere; }
.ev-ingresso-ate { font-size: .82rem; color: var(--suave); }
.ev-ingresso-preco { font-family: var(--f-display); font-size: 1.15rem; font-weight: 800; color: var(--principal-2); }
#ev-lote:empty { display: none; }
#ev-lote .alerta { margin: 0; }
.ev-qtd-linha { display: flex; align-items: center; justify-content: space-between; gap: .6rem; margin: .9rem 0 0; font-weight: 700; }
.ev-qtd { display: inline-flex; align-items: center; gap: .3rem; border: 1px solid var(--borda); border-radius: 999px; padding: 3px; }
.ev-qtd-btn { width: 40px; height: 40px; min-height: 40px; padding: 0; border-radius: 50%; font-size: 1.2rem; line-height: 1; display: grid; place-items: center; }
.ev-qtd-btn:disabled { opacity: .45; cursor: not-allowed; }
.ev-qtd output { min-width: 2ch; text-align: center; font-weight: 800; font-variant-numeric: tabular-nums; }
.ev-qtd-dica { margin: .3rem 0 0; }
.ev-total-linha { display: flex; align-items: baseline; justify-content: space-between; gap: .6rem; margin: .9rem 0 0; padding-top: .8rem; border-top: 1px solid var(--borda); }
.ev-total-linha b { font-family: var(--f-display); font-size: 1.3rem; color: var(--texto); }
.ev-insc-painel .alerta { margin: .8rem 0 0; }
.ev-insc-acoes { margin: .9rem 0 0; flex-direction: column; align-items: stretch; }
.ev-insc-acoes:empty { display: none; }
.ev-insc-acoes > button { width: 100%; }
.ev-org-nome { display: flex; align-items: center; gap: .6rem; }
.ev-org-nome > div { display: flex; flex-direction: column; min-width: 0; overflow-wrap: anywhere; }
.ev-org-nome span { color: var(--suave); font-size: .9rem; }
.ev-org-contato { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .7rem; }
.ev-org-contato:empty { display: none; }
.ev-org-link { display: inline-flex; align-items: center; gap: .4rem; min-height: 40px; padding: .4rem .8rem; border-radius: 999px; border: 1px solid var(--borda); background: var(--suave-bg); color: var(--principal-2); font-weight: 700; text-decoration: none; }
.ev-org-link:hover { border-color: var(--principal); }
.ev-org-whats { color: var(--ok); }
.ev-det-corpo { grid-area: corpo; min-width: 0; display: flex; flex-direction: column; gap: 1.2rem; }
.ev-det-secao h3 { margin: 0 0 .5rem; font-size: 1.15rem; padding-bottom: .4rem; border-bottom: 1px solid var(--borda); }
.ev-det-secao p { margin: 0 0 .5rem; white-space: pre-line; overflow-wrap: anywhere; }
.ev-det .ev-descricao { margin: 0; }
.ev-recolhe.ev-recolhido { max-height: 7.5em; overflow: hidden; -webkit-mask-image: linear-gradient(#000 60%, transparent); mask-image: linear-gradient(#000 60%, transparent); }
.ev-ver-mais { margin-top: .3rem; padding: 0; min-height: 0; background: none; border: 0; color: var(--principal-2); font-weight: 700; text-decoration: underline; }
.ev-agenda { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
.ev-agenda li { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .5rem; padding: .6rem .7rem; border-radius: 12px; background: var(--suave-bg); }
.ev-agenda .ev-ico { color: var(--principal); }
.ev-agenda-rot { min-width: 4.5rem; font-weight: 800; color: var(--principal-2); }
.ev-agenda-hora { display: inline-flex; align-items: center; gap: .3rem; margin-left: .6rem; font-weight: 700; }
.ev-local { margin: .5rem 0 0; }
@media (max-width: 899px) {
  .ev-det-grade { grid-template-columns: minmax(0, 1fr); grid-template-areas: "cab" "lado" "corpo"; padding: 0; }
  .ev-det-lado { position: static; }
  .card.ev-detalhe.ev-det, .card.ev-detalhe.ev-det.com-imagem { padding: .6rem; }
}
@media (max-width: 420px) {
  .ev-det-titulo { font-size: 1.35rem; }
  .ev-agenda-hora { margin-left: 0; }
}
@media (prefers-reduced-motion: reduce) { .ev-grade .ev-card:hover { transform: none; } }
@media print { .ev-det-lado { position: static; } .ev-compartilhar, .ev-qtd-linha { display: none; } }

/* ===== Fase 36 — Enquetes (aviso com enquete; gestão de avisos e painel de resultados) ===== */
.enquete { margin-top: .7rem; padding: .7rem .8rem; border: 1px solid var(--borda); border-radius: 12px; background: var(--suave-bg); }
.enquete-pergunta { margin: 0 0 .45rem; }
.enquete-opcoes { display: grid; gap: .3rem; margin-bottom: .5rem; }
.enquete-opcao { margin: 0; padding: .35rem .5rem; border-radius: 8px; background: var(--cartao); border: 1px solid var(--borda); cursor: pointer; }
.enquete-opcao:has(input:checked) { border-color: var(--principal); background: var(--azul-soft); }
.enquete-opcao:has(input:disabled) { cursor: default; }
.enquete-status { margin: .25rem 0; }
.enquete-ok { color: var(--ok); }
.enquete .mini[data-enq-votar] { margin-top: .2rem; }
.enquete-resultado:not(:empty) { margin-top: .5rem; }
.enquete-barras { list-style: none; margin: .3rem 0 0; padding: 0; display: grid; gap: .45rem; }
.enquete-barras li { display: grid; grid-template-columns: 1fr auto; gap: .15rem .6rem; align-items: baseline; }
.enq-barra-rot { min-width: 0; overflow-wrap: anywhere; }
.enq-barra-val { color: var(--suave); font-size: .9em; white-space: nowrap; }
.enq-barra { grid-column: 1 / -1; display: block; height: .55rem; border-radius: 999px; background: var(--borda); overflow: hidden; }
.enq-barra > i { display: block; height: 100%; border-radius: inherit; background: var(--principal); }
.etq-enquete { background: var(--ouro-soft); color: var(--ouro-texto); }
.enq-form { margin: .8rem 0 0; padding: .7rem .8rem; border: 1px dashed var(--borda); border-radius: 12px; }
.enq-form #av-enq-campos { margin-top: .5rem; }
.enq-op-linha { display: flex; gap: .4rem; align-items: center; margin-bottom: .35rem; }
.enq-op-linha .enq-op { flex: 1; min-width: 0; }
#av-enq-add { margin: .1rem 0 .5rem; }
.enq-painel { margin-top: .7rem; padding-top: .6rem; border-top: 1px solid var(--borda); }
.enq-painel-titulo { margin: .4rem 0 .3rem; }
.enq-respostas td, .enq-respostas th { text-align: left; }
@media (max-width: 480px) { .enquete { padding: .6rem; } }
/* ===== Fase 37 — Retiro: outras pessoas na mesma inscrição (cada uma com as suas escolhas) ===== */
.pessoa-retiro { border: 1px solid var(--borda); border-radius: 12px; padding: .6rem .7rem .7rem; margin: 0 0 .6rem; min-width: 0; }
.pessoa-retiro legend { font-weight: 600; padding: 0 .3rem; }
.pessoa-retiro-dados, .pessoa-retiro-escolhas { display: grid; grid-template-columns: 1fr 9.5rem 9.5rem; gap: .4rem; margin-bottom: .4rem; align-items: center; }
.pessoa-retiro-escolhas { grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); }
.pessoa-retiro-cama { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.pessoa-retiro .linha-check { margin-bottom: .3rem; }
.pessoa-retiro-dados input, .pessoa-retiro select { min-width: 0; width: 100%; }
@media (max-width: 560px) { .pessoa-retiro-dados { grid-template-columns: 1fr; } }
