/* /home/docsbank/memorialvilanova.com.br/2026/assets/css/site.css */
/*
========================================
Arquivo: assets/css/site.css
Descrição: Visual do site público do Memorial Vila Nova (sobre o
Bootstrap 5.3). Referências de mercado: páginas de homenagem com mural
de condolências, atendimento 24h sempre visível, planos em cartões
comparáveis e transmissão online (Dignity Memorial, Forest Lawn, Grupo
Zelo, Cemitério do Morumby/Grupo Cortel, Prever).

Cores (editáveis no painel em Configurações → Cores):
  --mvn-azul        #0494FF  destaques, gradientes, ícones
  --mvn-azul-claro  #0EC6FF  gradientes e detalhes
  --mvn-azul-escuro #0369C4  botões e links (contraste AA com branco)
  --mvn-marinho     #0A2540  títulos, rodapé
Fontes locais (LGPD — sem Google Fonts): Cormorant Garamond (títulos)
e Inter (textos).
========================================
*/

/* ---------------- Fontes ---------------- */
@font-face { font-family: "Inter"; font-style: normal; font-weight: 400; font-display: swap; src: url("../fonts/inter-latin-400-normal.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Inter"; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/inter-latin-500-normal.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Inter"; font-style: normal; font-weight: 600; font-display: swap; src: url("../fonts/inter-latin-600-normal.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Inter"; font-style: normal; font-weight: 700; font-display: swap; src: url("../fonts/inter-latin-700-normal.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Inter"; font-style: normal; font-weight: 400; font-display: swap; src: url("../fonts/inter-latin-ext-400-normal.woff2") format("woff2"); unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Inter"; font-style: normal; font-weight: 600; font-display: swap; src: url("../fonts/inter-latin-ext-600-normal.woff2") format("woff2"); unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Cormorant Garamond"; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/cormorant-garamond-latin-500-normal.woff2") format("woff2"); }
@font-face { font-family: "Cormorant Garamond"; font-style: italic; font-weight: 500; font-display: swap; src: url("../fonts/cormorant-garamond-latin-500-italic.woff2") format("woff2"); }
@font-face { font-family: "Cormorant Garamond"; font-style: normal; font-weight: 600; font-display: swap; src: url("../fonts/cormorant-garamond-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: "Cormorant Garamond"; font-style: normal; font-weight: 700; font-display: swap; src: url("../fonts/cormorant-garamond-latin-700-normal.woff2") format("woff2"); }

/* ---------------- Variáveis ---------------- */
:root {
    --mvn-azul: #0494FF;
    --mvn-azul-claro: #0EC6FF;
    --mvn-azul-escuro: #0369C4;
    --mvn-marinho: #0A2540;
    --mvn-fundo: #F4F9FF;
    --mvn-fundo-2: #EAF4FF;
    --mvn-texto: #33475B;
    --mvn-suave: #5E7186;
    --mvn-borda: #DDE8F4;
    --mvn-whatsapp: #128C4A;
    --mvn-raio: 18px;
    --mvn-sombra: 0 10px 30px rgba(10, 37, 64, .08);
    --mvn-sombra-forte: 0 18px 44px rgba(4, 148, 255, .18);
    --mvn-gradiente: linear-gradient(135deg, var(--mvn-azul) 0%, var(--mvn-azul-claro) 100%);
    --mvn-gradiente-escuro: linear-gradient(135deg, var(--mvn-azul-escuro) 0%, var(--mvn-marinho) 100%);
    --mvn-serifa: "Cormorant Garamond", Georgia, "Times New Roman", serif;
    --bs-body-font-family: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
    --bs-body-color: var(--mvn-texto);
    --bs-body-font-size: 1.0625rem;
    --bs-body-line-height: 1.7;
    --bs-link-color: var(--mvn-azul-escuro);
    --bs-link-color-rgb: 3, 105, 196;
    --bs-link-hover-color: var(--mvn-marinho);
    --bs-primary: var(--mvn-azul-escuro);
    --bs-primary-rgb: 3, 105, 196;
    --bs-border-radius: .75rem;
}

html { scroll-behavior: smooth; scroll-padding-top: 96px; }
body { background: #fff; -webkit-font-smoothing: antialiased; overflow-x: hidden; }
img { max-width: 100%; height: auto; }
h1, h2, h3, h4, .titulo-serifa { font-family: var(--mvn-serifa); color: var(--mvn-marinho); font-weight: 600; line-height: 1.15; }
h1 { font-size: clamp(2.2rem, 5vw, 3.4rem); }
h2 { font-size: clamp(1.9rem, 4vw, 2.7rem); }
h3 { font-size: 1.55rem; }
::selection { background: rgba(4, 148, 255, .2); }
:focus-visible { outline: 3px solid rgba(4, 148, 255, .6); outline-offset: 2px; }

.pular-conteudo { position: absolute; left: -9999px; top: 0; z-index: 2000; background: var(--mvn-marinho); color: #fff; padding: 10px 16px; }
.pular-conteudo:focus { left: 10px; top: 10px; }

/* ---------------- Botões ---------------- */
.btn { font-weight: 600; border-radius: 999px; padding: .7rem 1.5rem; letter-spacing: .01em; transition: transform .15s ease, box-shadow .2s ease, background-color .2s; }
.btn-sm { padding: .45rem 1rem; }
.btn-lg { padding: .9rem 2rem; font-size: 1.05rem; }
.btn-primary {
    --bs-btn-bg: var(--mvn-azul-escuro); --bs-btn-border-color: var(--mvn-azul-escuro);
    --bs-btn-hover-bg: #02569F; --bs-btn-hover-border-color: #02569F;
    --bs-btn-active-bg: #024A8A; --bs-btn-active-border-color: #024A8A;
}
.btn-primary:hover { transform: translateY(-2px); box-shadow: 0 10px 22px rgba(3, 105, 196, .3); }
.btn-outline-primary {
    --bs-btn-color: var(--mvn-azul-escuro); --bs-btn-border-color: var(--mvn-azul-escuro);
    --bs-btn-hover-bg: var(--mvn-azul-escuro); --bs-btn-hover-border-color: var(--mvn-azul-escuro);
    --bs-btn-active-bg: #02569F;
}
.btn-destaque { background: var(--mvn-gradiente); color: #fff; border: 0; box-shadow: 0 8px 20px rgba(4, 148, 255, .35); }
.btn-destaque:hover { color: #fff; transform: translateY(-2px); filter: brightness(1.05); }
.btn-branco { background: #fff; color: var(--mvn-azul-escuro); border: 0; }
.btn-branco:hover { background: var(--mvn-fundo-2); color: var(--mvn-marinho); }
.btn-whatsapp { background: var(--mvn-whatsapp); color: #fff; border: 0; }
.btn-whatsapp:hover { background: #0E7A3F; color: #fff; }
.link-seta { display: inline-flex; align-items: center; gap: 6px; color: var(--mvn-azul-escuro); font-weight: 600; font-size: .95rem; text-decoration: none; }
.link-seta i { transition: transform .2s; }
a:hover .link-seta i, .link-seta:hover i, article:hover .link-seta i { transform: translateX(4px); }

/* ---------------- Barra de atendimento e cabeçalho ---------------- */
.barra-atendimento { background: var(--mvn-marinho); color: rgba(255,255,255,.85); font-size: .88rem; padding: 7px 0; }
.barra-atendimento a { color: #fff; text-decoration: none; }
.barra-telefone strong { color: var(--mvn-azul-claro); }
.redes-topo, .redes-rodape { list-style: none; display: flex; gap: 6px; margin: 0; padding: 0; }
.redes-topo a { display: inline-flex; width: 28px; height: 28px; align-items: center; justify-content: center; border-radius: 50%; background: rgba(255,255,255,.1); }
.redes-topo a:hover { background: var(--mvn-azul); }

/* Sem backdrop-filter no celular: ele transforma o cabeçalho no "bloco de
   contenção" dos elementos position:fixed internos e a gaveta do menu
   (offcanvas) ficava presa dentro da altura do cabeçalho. */
.cabecalho { position: sticky; top: 0; z-index: 1030; background: #fff; border-bottom: 1px solid transparent; transition: box-shadow .25s, border-color .25s; }
@media (min-width: 992px) { .cabecalho { background: rgba(255,255,255,.96); backdrop-filter: blur(10px); } }
.cabecalho.rolou { box-shadow: 0 6px 24px rgba(10, 37, 64, .08); border-bottom-color: var(--mvn-borda); }
.cabecalho .navbar { padding: 10px 0; }
.cabecalho .logo { height: 56px; width: auto; transition: height .25s; }
.cabecalho.rolou .logo { height: 46px; }
.cabecalho .nav-link { font-weight: 500; color: var(--mvn-marinho); padding: .5rem .85rem !important; border-radius: 999px; font-size: .98rem; }
.cabecalho .nav-link:hover, .cabecalho .nav-link.active, .cabecalho .nav-link.show { color: var(--mvn-azul-escuro); background: var(--mvn-fundo); }
.cabecalho .dropdown-menu { border: 0; border-radius: 14px; box-shadow: var(--mvn-sombra); padding: 8px; min-width: 240px; }
.cabecalho .dropdown-item { border-radius: 10px; padding: .55rem .9rem; color: var(--mvn-marinho); }
.cabecalho .dropdown-item:hover, .cabecalho .dropdown-item.active { background: var(--mvn-fundo); color: var(--mvn-azul-escuro); }
.navbar-toggler { border: 0; font-size: 2rem; color: var(--mvn-marinho); padding: 0 .25rem; }
.navbar-toggler:focus { box-shadow: none; }
@media (max-width: 991.98px) {
    .cabecalho .navbar { padding: 6px 0; }
    .cabecalho .logo, .cabecalho.rolou .logo { height: 44px; }
    .offcanvas { --bs-offcanvas-width: min(86vw, 360px); }
    .offcanvas-header { border-bottom: 1px solid var(--mvn-borda); padding: 12px 16px; }
    .offcanvas-header .logo { height: 40px; width: auto; }
    .offcanvas-body { padding: 10px 12px 24px; display: flex; flex-direction: column; }
    /* Gaveta aberta: todo o conteúdo visível (não depende da herança de
       "visibility" da gaveta, que o Bootstrap anima ao abrir) */
    .offcanvas.show .offcanvas-body, .offcanvas.show .offcanvas-body * { visibility: visible; }
    .offcanvas .navbar-nav { gap: 2px; width: 100%; margin-left: 0 !important; align-items: stretch !important; }
    /* Submenus como sanfona (controlados pelo site.js) */
    .offcanvas .dropdown-menu { display: none; }
    .offcanvas .submenu-aberto > .dropdown-menu { display: block; }
    .offcanvas .dropdown-toggle::after { border: 0; content: "\F282"; font-family: "bootstrap-icons"; font-size: .9rem; transition: transform .2s; }
    .offcanvas .submenu-aberto > .dropdown-toggle::after { transform: rotate(180deg); }
    .offcanvas .navbar-nav .nav-item.ms-lg-2 { margin-top: 10px !important; }
    .offcanvas .nav-link { font-size: 1.05rem; padding: .75rem 1rem !important; border-radius: 12px; display: flex; justify-content: space-between; align-items: center; }
    .offcanvas .nav-link.active { background: var(--mvn-fundo); color: var(--mvn-azul-escuro); font-weight: 600; }
    .offcanvas .dropdown-menu { position: static !important; transform: none !important; box-shadow: none; border: 0; background: var(--mvn-fundo); margin: 2px 0 6px; padding: 4px; }
    .offcanvas .dropdown-item { padding: .6rem 1rem; white-space: normal; }
    .offcanvas .btn-destaque { width: 100%; }
    .menu-celular-contato { margin-top: auto; padding-top: 18px; border-top: 1px solid var(--mvn-borda); }
}

/* ---------------- Banner principal (slides) ---------------- */
.hero { position: relative; background: var(--mvn-gradiente-escuro); color: #fff; }
.hero .carousel-item { min-height: clamp(460px, 74vh, 760px); }
.hero-imagem { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hero-sombra { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(10,37,64,.85) 0%, rgba(10,37,64,.55) 45%, rgba(10,37,64,.15) 100%); }
.hero-conteudo { position: relative; z-index: 2; min-height: inherit; display: flex; align-items: center; padding-top: 80px; padding-bottom: 140px; }
.hero-conteudo .texto { max-width: 640px; }
.hero h1, .hero .hero-titulo { color: #fff; font-size: clamp(2.4rem, 6vw, 4.2rem); margin-bottom: 16px; text-shadow: 0 2px 20px rgba(0,0,0,.25); }
.hero p { font-size: clamp(1.05rem, 2vw, 1.25rem); color: rgba(255,255,255,.9); margin-bottom: 28px; }
.hero-sobretitulo { display: inline-flex; align-items: center; gap: 8px; text-transform: uppercase; letter-spacing: .14em; font-size: .78rem; font-weight: 600; color: var(--mvn-azul-claro); margin-bottom: 14px; }
.hero-sobretitulo::before { content: ""; width: 36px; height: 2px; background: var(--mvn-azul-claro); }
.hero .carousel-indicators { bottom: 110px; }
@media (max-width: 767.98px) { .hero .carousel-control-prev, .hero .carousel-control-next { display: none; } }
.hero .carousel-indicators [data-bs-target] { width: 34px; height: 4px; border-radius: 4px; }
.hero .carousel-control-prev, .hero .carousel-control-next { width: 6%; }
.hero-sem-slides { min-height: 560px; display: flex; align-items: center; background: radial-gradient(circle at 80% 20%, rgba(14,198,255,.35), transparent 45%), var(--mvn-gradiente-escuro); }

/* ---------------- Atalhos ---------------- */
.atalhos { position: relative; z-index: 5; margin-top: -90px; }
.atalho {
    display: flex; align-items: center; gap: 16px; height: 100%; padding: 22px; background: #fff; border-radius: var(--mvn-raio);
    box-shadow: var(--mvn-sombra); text-decoration: none; color: var(--mvn-marinho); transition: transform .2s, box-shadow .2s;
}
.atalho:hover { transform: translateY(-4px); box-shadow: var(--mvn-sombra-forte); color: var(--mvn-marinho); }
.atalho strong { display: block; font-family: var(--mvn-serifa); font-size: 1.35rem; line-height: 1.1; }
.atalho-texto span { color: var(--mvn-suave); font-size: .9rem; }
@media (max-width: 575.98px) {
    .atalho { flex-direction: column; text-align: center; gap: 10px; padding: 18px 10px; }
    .atalho strong { font-size: 1.15rem; }
}
.icone-redondo { flex-shrink: 0; width: 56px; height: 56px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--mvn-gradiente); color: #fff; font-size: 1.5rem; box-shadow: 0 8px 18px rgba(4,148,255,.3); }

/* ---------------- Seções ---------------- */
.secao { padding: clamp(44px, 6vw, 84px) 0; }
.secao-suave { background: var(--mvn-fundo); }
.secao-escura { background: var(--mvn-gradiente-escuro); color: rgba(255,255,255,.88); }
.secao-escura h2, .secao-escura h3 { color: #fff; }
.titulo-secao { max-width: 760px; margin-bottom: clamp(26px, 3.5vw, 44px); }
.titulo-secao p { color: var(--mvn-suave); font-size: 1.08rem; margin: 12px 0 0; }
.secao-escura .titulo-secao p { color: rgba(255,255,255,.8); }
.sobretitulo { display: inline-block; text-transform: uppercase; letter-spacing: .16em; font-size: .78rem; font-weight: 600; color: var(--mvn-azul-escuro); margin-bottom: 10px; }
.secao-escura .sobretitulo { color: var(--mvn-azul-claro); }
.titulo-secao h2::after, .titulo-secao h1::after { content: ""; display: block; width: 64px; height: 3px; border-radius: 3px; background: var(--mvn-gradiente); margin-top: 16px; }
.titulo-secao.text-center h2::after, .titulo-secao.text-center h1::after { margin-left: auto; margin-right: auto; }

/* ---------------- Faixa de título (páginas internas) ---------------- */
.banner-pagina { position: relative; padding: clamp(56px, 8vw, 96px) 0 clamp(48px, 6vw, 72px); color: #fff; background: radial-gradient(circle at 85% 15%, rgba(14,198,255,.35), transparent 40%), var(--mvn-gradiente-escuro); overflow: hidden; }
.banner-pagina.com-imagem { background: linear-gradient(90deg, rgba(10,37,64,.9), rgba(10,37,64,.55)), var(--fundo) center / cover no-repeat; }
.banner-pagina h1 { color: #fff; margin: 0; }
.banner-pagina p { color: rgba(255,255,255,.85); font-size: 1.15rem; margin: 12px 0 0; max-width: 720px; }
.banner-pagina .breadcrumb { margin-bottom: 14px; font-size: .9rem; --bs-breadcrumb-divider-color: rgba(255,255,255,.6); --bs-breadcrumb-item-active-color: rgba(255,255,255,.75); }
.banner-pagina .breadcrumb a { color: #fff; text-decoration: none; }

/* ---------------- Cartões: serviços ---------------- */
.card-servico { position: relative; height: 100%; display: flex; flex-direction: column; background: #fff; border: 1px solid var(--mvn-borda); border-radius: var(--mvn-raio); overflow: hidden; transition: transform .25s, box-shadow .25s, border-color .25s; }
.card-servico:hover { transform: translateY(-6px); box-shadow: var(--mvn-sombra-forte); border-color: transparent; }
.card-servico-imagem { aspect-ratio: 16 / 10; overflow: hidden; background: var(--mvn-fundo-2); }
.card-servico-imagem img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s; }
.card-servico:hover .card-servico-imagem img { transform: scale(1.06); }
.card-servico-corpo { position: relative; padding: 30px 26px 26px; flex: 1; display: flex; flex-direction: column; }
.card-servico-imagem + .card-servico-corpo .icone-redondo { position: absolute; top: -28px; left: 26px; border: 4px solid #fff; }
.card-servico-imagem + .card-servico-corpo { padding-top: 40px; }
.card-servico h3 { margin: 14px 0 10px; font-size: 1.6rem; }
.card-servico h3 a { color: inherit; text-decoration: none; }
.card-servico p { color: var(--mvn-suave); font-size: .98rem; flex: 1; }

/* ---------------- Cartões: planos ---------------- */
.card-plano { position: relative; height: 100%; display: flex; flex-direction: column; background: #fff; border: 1px solid var(--mvn-borda); border-radius: 24px; padding: 34px 28px 28px; transition: transform .25s, box-shadow .25s; }
.card-plano:hover { transform: translateY(-6px); box-shadow: var(--mvn-sombra); }
.card-plano.destaque { border: 2px solid transparent; background: linear-gradient(#fff, #fff) padding-box, var(--mvn-gradiente) border-box; box-shadow: var(--mvn-sombra-forte); }
@media (min-width: 992px) { .card-plano.destaque { transform: scale(1.03); } .card-plano.destaque:hover { transform: scale(1.03) translateY(-6px); } }
.selo-plano { position: absolute; top: -15px; left: 50%; transform: translateX(-50%); background: var(--mvn-gradiente); color: #fff; padding: 6px 16px; border-radius: 999px; font-size: .8rem; font-weight: 600; white-space: nowrap; box-shadow: 0 6px 16px rgba(4,148,255,.35); }
.card-plano h3 { font-size: 1.9rem; text-align: center; margin: 0; }
.plano-subtitulo { text-align: center; color: var(--mvn-suave); font-size: .95rem; margin: 6px 0 0; }
.plano-preco { display: flex; align-items: flex-start; justify-content: center; gap: 2px; margin: 20px 0 22px; padding: 18px 0; border-top: 1px dashed var(--mvn-borda); border-bottom: 1px dashed var(--mvn-borda); color: var(--mvn-marinho); flex-wrap: wrap; }
.plano-preco small { font-size: 1.1rem; margin-top: 10px; font-weight: 600; }
.plano-preco strong { font-family: var(--mvn-serifa); font-size: 3.4rem; line-height: 1; }
.plano-preco sup { font-size: 1.2rem; top: 0; margin-top: 8px; font-weight: 600; }
.plano-preco span { align-self: flex-end; color: var(--mvn-suave); font-size: .9rem; margin-left: 4px; }
.plano-consulte span { font-family: var(--mvn-serifa); font-size: 1.7rem; color: var(--mvn-azul-escuro); align-self: center; margin: 0; }
.plano-itens { list-style: none; padding: 0; margin: 0 0 12px; flex: 1; }
.plano-itens li { display: flex; gap: 10px; padding: 7px 0; font-size: .95rem; line-height: 1.45; }
.plano-itens li i { color: var(--mvn-azul); font-size: 1.05rem; margin-top: 1px; }
.plano-itens li.nao-incluso { color: #9AA8B8; text-decoration: line-through; }
.plano-itens li.nao-incluso i { color: #C3CDD8; }
.plano-mais { font-size: .88rem; color: var(--mvn-suave); margin: 0 0 14px; }
.plano-acoes { display: flex; flex-direction: column; align-items: center; margin-top: auto; }

/* ---------------- Cartões: falecimentos ---------------- */
.card-obituario { position: relative; height: 100%; text-align: center; background: #fff; border: 1px solid var(--mvn-borda); border-radius: var(--mvn-raio); padding: 28px 20px 24px; transition: transform .25s, box-shadow .25s; }
.card-obituario:hover { transform: translateY(-5px); box-shadow: var(--mvn-sombra); }
.obituario-foto { width: 128px; height: 128px; margin: 0 auto 16px; border-radius: 50%; overflow: hidden; border: 4px solid #fff; box-shadow: 0 0 0 2px var(--mvn-azul-claro), 0 10px 24px rgba(10,37,64,.12); background: var(--mvn-fundo-2); display: flex; align-items: center; justify-content: center; color: var(--mvn-azul); font-size: 2.6rem; }
.obituario-foto img { width: 100%; height: 100%; object-fit: cover; }
.card-obituario h3 { font-size: 1.5rem; margin-bottom: 4px; }
.card-obituario h3 a { color: inherit; text-decoration: none; }
.obituario-anos { font-family: var(--mvn-serifa); font-style: italic; font-size: 1.2rem; color: var(--mvn-azul-escuro); margin: 0 0 8px; }
.obituario-info { font-size: .9rem; color: var(--mvn-suave); margin: 0 0 4px; }
.card-obituario .link-seta { margin-top: 10px; }
.busca-obituarios { max-width: 640px; margin: 0 auto 40px; }
.busca-obituarios .form-control { border-radius: 999px 0 0 999px; padding: .85rem 1.4rem; }
.busca-obituarios .btn { border-radius: 0 999px 999px 0; }

/* Página do falecimento */
.memorial-topo { text-align: center; padding: clamp(48px, 7vw, 80px) 0 40px; background: radial-gradient(circle at 50% 0%, var(--mvn-fundo-2), #fff 70%); }
.memorial-topo .obituario-foto { width: 190px; height: 190px; }
.memorial-topo h1 { margin: 10px 0 6px; }
.memorial-datas { font-family: var(--mvn-serifa); font-size: 1.4rem; color: var(--mvn-azul-escuro); font-style: italic; }
.memorial-frase { font-family: var(--mvn-serifa); font-size: 1.3rem; color: var(--mvn-suave); font-style: italic; margin-top: 8px; }
.info-cerimonia { background: #fff; border: 1px solid var(--mvn-borda); border-radius: var(--mvn-raio); padding: 24px; height: 100%; }
.info-cerimonia h2 { font-size: 1.6rem; display: flex; gap: 10px; align-items: center; }
.info-cerimonia h2 i { color: var(--mvn-azul); font-size: 1.4rem; }
.info-cerimonia p { margin-bottom: 6px; }
.homenagem { background: #fff; border: 1px solid var(--mvn-borda); border-left: 4px solid var(--mvn-azul); border-radius: 14px; padding: 18px 20px; margin-bottom: 14px; }
.homenagem p { margin: 0 0 8px; white-space: pre-line; }
.homenagem footer { font-size: .9rem; color: var(--mvn-suave); }
.homenagem footer strong { color: var(--mvn-marinho); }

/* ---------------- Cartões: unidades ---------------- */
.card-unidade { height: 100%; background: #fff; border: 1px solid var(--mvn-borda); border-radius: var(--mvn-raio); overflow: hidden; display: flex; flex-direction: column; transition: box-shadow .25s; }
.card-unidade:hover { box-shadow: var(--mvn-sombra); }
.card-unidade-imagem { position: relative; aspect-ratio: 16 / 9; background: var(--mvn-fundo-2); display: flex; align-items: center; justify-content: center; color: var(--mvn-azul); font-size: 2.4rem; }
.card-unidade-imagem img { width: 100%; height: 100%; object-fit: cover; }
.selo-sede { position: absolute; top: 12px; left: 12px; background: var(--mvn-gradiente); color: #fff; font-size: .78rem; font-weight: 600; padding: 4px 12px; border-radius: 999px; }
.card-unidade-corpo { padding: 22px; display: flex; flex-direction: column; flex: 1; }
.card-unidade h3 { font-size: 1.55rem; margin-bottom: 12px; }
.card-unidade p { display: flex; gap: 10px; margin: 0 0 8px; font-size: .95rem; line-height: 1.5; }
.card-unidade p i { color: var(--mvn-azul); margin-top: 2px; }
.card-unidade p a { color: var(--mvn-marinho); font-weight: 600; text-decoration: none; }
.card-unidade-acoes { display: flex; gap: 8px; flex-wrap: wrap; margin-top: auto; padding-top: 12px; }

/* ---------------- Cartões: artigos ---------------- */
.card-artigo { position: relative; height: 100%; background: #fff; border-radius: var(--mvn-raio); overflow: hidden; border: 1px solid var(--mvn-borda); transition: transform .25s, box-shadow .25s; }
.card-artigo:hover { transform: translateY(-5px); box-shadow: var(--mvn-sombra); }
.card-artigo-imagem { aspect-ratio: 16 / 10; overflow: hidden; background: var(--mvn-fundo-2); }
.card-artigo-imagem img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s; }
.card-artigo:hover .card-artigo-imagem img { transform: scale(1.05); }
.card-artigo-corpo { padding: 22px; }
.card-artigo time { font-size: .82rem; text-transform: uppercase; letter-spacing: .06em; color: var(--mvn-azul-escuro); font-weight: 600; }
.card-artigo h3 { margin: 6px 0 8px; font-size: 1.5rem; }
.card-artigo h3 a { color: inherit; text-decoration: none; }
.card-artigo p { color: var(--mvn-suave); font-size: .95rem; margin: 0; }

/* ---------------- Sobre ---------------- */
.sobre-imagem { position: relative; border-radius: 24px; overflow: hidden; box-shadow: var(--mvn-sombra); aspect-ratio: 4 / 3.4; }
.sobre-imagem img { width: 100%; height: 100%; object-fit: cover; }
.sobre-selo { position: absolute; bottom: 20px; left: 20px; background: rgba(255,255,255,.95); backdrop-filter: blur(6px); border-radius: 16px; padding: 14px 20px; display: flex; align-items: center; gap: 14px; box-shadow: var(--mvn-sombra); }
.sobre-selo strong { font-family: var(--mvn-serifa); font-size: 2.2rem; line-height: 1; color: var(--mvn-azul-escuro); }
.sobre-selo span { font-size: .85rem; color: var(--mvn-suave); line-height: 1.3; }
.lista-valores { list-style: none; padding: 0; margin: 20px 0 28px; display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 12px; }
.lista-valores li { display: flex; align-items: center; gap: 10px; font-weight: 500; color: var(--mvn-marinho); }
.lista-valores i { color: var(--mvn-azul); font-size: 1.2rem; }

/* ---------------- Depoimentos ---------------- */
.depoimento { max-width: 820px; margin: 0 auto; text-align: center; padding: 0 12px; }
.depoimento blockquote { font-family: var(--mvn-serifa); font-size: clamp(1.4rem, 3vw, 1.9rem); font-style: italic; color: #fff; line-height: 1.4; margin: 0 0 24px; }
.depoimento .aspas { font-size: 3.5rem; color: var(--mvn-azul-claro); line-height: 1; }
.depoimento-autor { display: inline-flex; align-items: center; gap: 12px; }
.depoimento-autor img { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; border: 2px solid var(--mvn-azul-claro); }
.depoimento-autor strong { color: #fff; display: block; }
.depoimento-estrelas { color: #FFC94D; letter-spacing: 2px; }
#carrossel-depoimentos .carousel-indicators { position: static; margin-top: 28px; }

/* ---------------- Vídeo ---------------- */
.video-capa { position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; border-radius: 24px; overflow: hidden; border: 0; padding: 0; background: #000; box-shadow: var(--mvn-sombra); cursor: pointer; }
.video-capa img { width: 100%; height: 100%; object-fit: cover; opacity: .82; transition: opacity .3s, transform .6s; }
.video-capa:hover img { opacity: .65; transform: scale(1.03); }
.video-capa .play { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 86px; height: 86px; border-radius: 50%; background: rgba(255,255,255,.95); color: var(--mvn-azul-escuro); display: flex; align-items: center; justify-content: center; font-size: 2.6rem; box-shadow: 0 0 0 12px rgba(255,255,255,.25); transition: transform .2s; }
.video-capa:hover .play { transform: translate(-50%, -50%) scale(1.08); }
.video-capa iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* ---------------- Galeria ---------------- */
.grade-galeria { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; }
.grade-galeria a { position: relative; display: block; aspect-ratio: 4 / 3; border-radius: 14px; overflow: hidden; background: var(--mvn-fundo-2); }
.grade-galeria img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s; }
.grade-galeria a::after { content: "\F52A"; font-family: "bootstrap-icons"; position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 1.8rem; color: #fff; background: rgba(4, 148, 255, .45); opacity: 0; transition: opacity .25s; }
.grade-galeria a:hover img { transform: scale(1.07); }
.grade-galeria a:hover::after { opacity: 1; }
@media (min-width: 992px) { .grade-galeria.destaque-primeira a:first-child { grid-column: span 2; grid-row: span 2; aspect-ratio: auto; } }
.card-album { position: relative; border-radius: var(--mvn-raio); overflow: hidden; aspect-ratio: 4 / 3; display: block; background: var(--mvn-fundo-2); }
.card-album img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s; }
.card-album:hover img { transform: scale(1.06); }
.card-album-texto { position: absolute; inset: auto 0 0 0; padding: 40px 20px 18px; background: linear-gradient(transparent, rgba(10,37,64,.9)); color: #fff; }
.card-album-texto h3 { color: #fff; margin: 0; font-size: 1.5rem; }
.card-album-texto span { font-size: .88rem; opacity: .85; }

/* ---------------- Perguntas frequentes ---------------- */
.faq .accordion-item { border: 1px solid var(--mvn-borda); border-radius: 14px !important; margin-bottom: 12px; overflow: hidden; }
.faq .accordion-button { font-weight: 600; color: var(--mvn-marinho); padding: 1.15rem 1.35rem; font-size: 1.02rem; }
.faq .accordion-button:not(.collapsed) { background: var(--mvn-fundo); color: var(--mvn-azul-escuro); box-shadow: none; }
.faq .accordion-button:focus { box-shadow: 0 0 0 .2rem rgba(4,148,255,.2); }
.faq .accordion-body { color: var(--mvn-texto); }

/* ---------------- Instagram ---------------- */
.grade-instagram { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; }
.post-instagram { position: relative; display: block; aspect-ratio: 1; border-radius: 14px; overflow: hidden; background: var(--mvn-fundo-2); }
.post-instagram img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s; }
.post-instagram .sobre-post { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; padding: 16px; text-align: center; background: rgba(10,37,64,.72); color: #fff; font-size: .88rem; opacity: 0; transition: opacity .25s; }
.post-instagram:hover img { transform: scale(1.06); }
.post-instagram:hover .sobre-post, .post-instagram:focus .sobre-post { opacity: 1; }
.post-instagram .tipo { position: absolute; top: 10px; right: 10px; color: #fff; font-size: 1.2rem; text-shadow: 0 1px 6px rgba(0,0,0,.5); }
.grade-instagram-embed { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; align-items: start; }
.cartao-perfil-instagram { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 18px; background: #fff; border-radius: 24px; padding: 28px; border: 1px solid var(--mvn-borda); }
.cartao-perfil-instagram .icone-insta { width: 64px; height: 64px; border-radius: 18px; display: flex; align-items: center; justify-content: center; font-size: 2rem; color: #fff; background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fd5949 45%, #d6249f 60%, #285AEB 90%); }

/* ---------------- Chamada para contato ---------------- */
.cta { position: relative; overflow: hidden; border-radius: 28px; padding: clamp(36px, 6vw, 64px); background: radial-gradient(circle at 90% 10%, rgba(255,255,255,.25), transparent 40%), var(--mvn-gradiente); color: #fff; }
.cta h2 { color: #fff; }
.cta p { color: rgba(255,255,255,.92); font-size: 1.1rem; }

/* ---------------- Conteúdo de texto (páginas, artigos, serviços) ---------------- */
.conteudo-texto { font-size: 1.08rem; }
.conteudo-texto h2, .conteudo-texto h3 { margin: 1.6em 0 .6em; }
.conteudo-texto img { border-radius: 14px; margin: 1em 0; }
.conteudo-texto blockquote { border-left: 4px solid var(--mvn-azul); padding: .4em 1.2em; font-family: var(--mvn-serifa); font-size: 1.35rem; font-style: italic; color: var(--mvn-marinho); background: var(--mvn-fundo); border-radius: 0 12px 12px 0; }
.conteudo-texto table { width: 100%; border-collapse: collapse; margin: 1em 0; }
.conteudo-texto td, .conteudo-texto th { border: 1px solid var(--mvn-borda); padding: .5em .8em; }
.conteudo-texto iframe { width: 100%; aspect-ratio: 16 / 9; height: auto; border-radius: 14px; border: 0; }
.imagem-destaque { border-radius: 24px; overflow: hidden; box-shadow: var(--mvn-sombra); margin-bottom: 32px; }
.imagem-destaque img { width: 100%; max-height: 520px; object-fit: cover; }
.caixa-lateral { background: var(--mvn-fundo); border-radius: var(--mvn-raio); padding: 26px; position: sticky; top: 110px; }
.caixa-lateral h2 { font-size: 1.5rem; }
.caixa-lateral .list-group-item { background: transparent; border-color: var(--mvn-borda); padding-left: 0; padding-right: 0; }
.caixa-lateral .list-group-item a { color: var(--mvn-marinho); text-decoration: none; font-weight: 500; }
.caixa-lateral .list-group-item a:hover, .caixa-lateral .list-group-item a.ativo { color: var(--mvn-azul-escuro); }

/* ---------------- Formulários ---------------- */
.form-control, .form-select { border-radius: 12px; padding: .75rem 1rem; border-color: #CFDCEB; }
.form-control:focus, .form-select:focus { border-color: var(--mvn-azul); box-shadow: 0 0 0 .2rem rgba(4,148,255,.18); }
.form-label { font-weight: 600; color: var(--mvn-marinho); font-size: .95rem; }
.form-check-input:checked { background-color: var(--mvn-azul-escuro); border-color: var(--mvn-azul-escuro); }
.campo-armadilha { position: absolute !important; left: -10000px !important; width: 1px; height: 1px; overflow: hidden; }
.cartao-formulario { background: #fff; border-radius: 24px; padding: clamp(24px, 4vw, 40px); box-shadow: var(--mvn-sombra); }
.contato-item { display: flex; gap: 16px; align-items: flex-start; margin-bottom: 22px; }
.contato-item .icone-redondo { width: 48px; height: 48px; font-size: 1.2rem; }
.contato-item strong { display: block; color: var(--mvn-marinho); }
.contato-item a { color: var(--mvn-texto); text-decoration: none; }
.mapa { border-radius: var(--mvn-raio); overflow: hidden; aspect-ratio: 16 / 7; background: var(--mvn-fundo-2); }
.mapa iframe { width: 100%; height: 100%; border: 0; }
.modal-content { border-radius: 22px; border: 0; }

/* ---------------- Velório online ---------------- */
.velorio-tela { position: relative; width: 100%; aspect-ratio: 4 / 3; max-height: 82vh; border-radius: 20px; overflow: hidden; background: #111; box-shadow: var(--mvn-sombra); }
@media (min-width: 992px) { .velorio-tela { aspect-ratio: 16 / 10; } }
.velorio-tela iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.velorio-tela.tela-cheia { position: fixed; inset: 0; z-index: 2000; max-height: none; aspect-ratio: auto; border-radius: 0; }
body.sem-rolagem { overflow: hidden; }
.velorio-sair { position: fixed; top: 14px; right: 14px; z-index: 2001; }

/* ---------------- Rodapé ---------------- */
.rodape { background: var(--mvn-marinho); color: rgba(255,255,255,.75); padding: 56px 0 0; font-size: .95rem; }
.rodape a { color: rgba(255,255,255,.85); text-decoration: none; }
.rodape a:hover { color: var(--mvn-azul-claro); }
.rodape-logo { height: 58px; width: auto; }
.rodape-titulo { font-family: var(--mvn-serifa); color: #fff; font-size: 1.4rem; margin-bottom: 16px; }
.rodape-links { list-style: none; padding: 0; margin: 0; }
.rodape-links li { margin-bottom: 8px; }
.rodape-contato { list-style: none; padding: 0; margin: 0 0 12px; }
.rodape-contato li { display: flex; gap: 10px; margin-bottom: 10px; }
.rodape-contato i { color: var(--mvn-azul-claro); }
.redes-rodape a { display: inline-flex; width: 40px; height: 40px; align-items: center; justify-content: center; border-radius: 50%; background: rgba(255,255,255,.08); font-size: 1.1rem; transition: background .2s, transform .2s; }
.redes-rodape a:hover { background: var(--mvn-azul); color: #fff; transform: translateY(-3px); }
.rodape-final { display: flex; flex-wrap: wrap; gap: 10px; justify-content: space-between; margin-top: 48px; padding: 22px 0; border-top: 1px solid rgba(255,255,255,.1); font-size: .85rem; color: rgba(255,255,255,.6); }

/* ---------------- Botões flutuantes ---------------- */
.whatsapp-flutuante { position: fixed; right: 24px; bottom: 24px; z-index: 1040; width: 60px; height: 60px; border-radius: 50%; background: #25D366; color: #fff; align-items: center; justify-content: center; font-size: 1.9rem; box-shadow: 0 10px 24px rgba(18,140,74,.4); transition: transform .2s; }
.whatsapp-flutuante:hover { color: #fff; transform: scale(1.08); }
.acoes-celular { position: fixed; left: 0; right: 0; bottom: 0; z-index: 1029; display: grid; grid-template-columns: repeat(4, 1fr); background: #fff; border-top: 1px solid var(--mvn-borda); box-shadow: 0 -6px 20px rgba(10,37,64,.08); padding-bottom: env(safe-area-inset-bottom); }
.acoes-celular a { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 9px 4px 8px; text-decoration: none; color: var(--mvn-marinho); font-size: .72rem; font-weight: 600; }
.acoes-celular a i { font-size: 1.3rem; color: var(--mvn-azul-escuro); }
.acoes-celular a.acao-whatsapp i { color: var(--mvn-whatsapp); }
@media (max-width: 991.98px) { body { padding-bottom: 64px; } }

/* ---------------- Utilidades ---------------- */
.texto-suave { color: var(--mvn-suave); }
.paginacao .pagination { --bs-pagination-color: var(--mvn-azul-escuro); --bs-pagination-active-bg: var(--mvn-azul-escuro); --bs-pagination-active-border-color: var(--mvn-azul-escuro); --bs-pagination-border-radius: 999px; gap: 6px; }
.paginacao .page-link { border-radius: 999px !important; min-width: 42px; text-align: center; }
.vazio { text-align: center; padding: 48px 16px; color: var(--mvn-suave); }
.vazio i { font-size: 2.8rem; color: var(--mvn-azul); display: block; margin-bottom: 10px; }
.revelar { opacity: 0; transform: translateY(24px); transition: opacity .7s ease, transform .7s ease; }
.revelar.visivel { opacity: 1; transform: none; }
/* Movimento reduzido (Windows com "Mostrar animações" desligado, por
   exemplo): as animações ficam quase instantâneas em vez de removidas —
   "animation: none" impedia o evento animationend e componentes que
   esperam por ele (como o antigo GLightbox) não fechavam. */
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
    .revelar { opacity: 1; transform: none; }
    .hero .carousel-item.active .hero-imagem { transform: none; }
}
html.sem-rolagem, html.sem-rolagem body { overflow: hidden; }

/* Faixas deslizantes no celular (serviços, planos, artigos, unidades) */
.dica-deslize { display: none; }
@media (max-width: 767.98px) {
    .container, .container-fluid { padding-left: 16px; padding-right: 16px; }
    .carrossel-celular {
        flex-wrap: nowrap; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory;
        margin-left: -16px; margin-right: -16px; padding: 4px 16px 18px; scroll-padding-left: 16px; scrollbar-width: none;
        --bs-gutter-x: 14px;
        justify-content: flex-start !important; /* centralizado escondia o 1º cartão à esquerda */
    }
    .secao-video .fs-5 { font-size: 1.05rem !important; }
    .carrossel-celular::-webkit-scrollbar { display: none; }
    .carrossel-celular > [class*="col-"] { flex: 0 0 84%; max-width: 84%; scroll-snap-align: start; }
    .carrossel-celular .revelar { opacity: 1; transform: none; }
    .carrossel-celular.pt-3 { padding-top: 22px !important; }
    .dica-deslize { display: block; text-align: center; font-size: .85rem; color: var(--mvn-suave); margin: -10px 0 10px; }
}

/* Espaçamentos mais compactos (revisão v1.2) */
.busca-obituarios { margin-bottom: 32px; }
.rodape-final { margin-top: 36px; }
.secao .text-center.mt-5 { margin-top: 2.25rem !important; }
@media (max-width: 767.98px) {
    body { --bs-body-font-size: 1rem; }
    .hero .carousel-item, .hero-sem-slides { min-height: 540px; }
    .hero-conteudo { padding-top: 56px; padding-bottom: 120px; }
    .hero h1, .hero .hero-titulo { font-size: 2.3rem; }
    .hero p { margin-bottom: 20px; }
    .hero .btn-lg { padding: .75rem 1.4rem; font-size: 1rem; width: 100%; }
    .hero .carousel-indicators { bottom: 100px; }
    .atalhos { margin-top: -78px; }
    .atalho { padding: 16px 10px; }
    .titulo-secao p { font-size: 1rem; }
    .banner-pagina { padding: 40px 0 34px; }
    .banner-pagina p { font-size: 1.02rem; }
    .card-servico-corpo { padding: 32px 20px 20px; }
    .card-plano { padding: 30px 20px 22px; }
    .cta { padding: 28px 22px; border-radius: 22px; }
    .cta .btn-lg { width: 100%; }
    .rodape { padding-top: 44px; }
    .rodape-final { flex-direction: column; text-align: center; }
    .lista-valores { grid-template-columns: 1fr 1fr; gap: 10px; font-size: .92rem; }
    .video-moldura { padding: 8px; border-radius: 22px; }
}

/* =====================================================================
 * Revisão visual (v1.1)
 * ===================================================================== */

/* Banner: zoom lento na foto do slide ativo (efeito "Ken Burns") */
.hero .carousel-item { overflow: hidden; }
.hero-imagem { transform: scale(1.0); transition: transform 9s ease-out; will-change: transform; }
.hero .carousel-item.active .hero-imagem { transform: scale(1.08); }
.hero .carousel-indicators { margin-bottom: 0; }
.hero .carousel-indicators [data-bs-target] { position: relative; overflow: hidden; }

/* Cartões com imagem: a proporção é respeitada mesmo com fotos altas */
.card-unidade-imagem, .card-artigo-imagem, .card-servico-imagem, .sobre-imagem { overflow: hidden; }
.card-unidade-imagem img { position: absolute; inset: 0; }

/* Perguntas frequentes: texto da pergunta com a fonte de leitura */
.accordion-button { font-family: var(--bs-body-font-family); }

/* Links do caminho de navegação sem sublinhado */
.breadcrumb a { text-decoration: none; }
.breadcrumb a:hover { text-decoration: underline; }

/* Preço dos planos alinhado pela base */
.plano-preco { align-items: baseline; }
.plano-preco small, .plano-preco sup { margin-top: 0; align-self: flex-start; position: relative; top: .35em; }
.plano-preco span { align-self: baseline; }

/* Vídeo */
.secao-video { background: radial-gradient(circle at 100% 0%, var(--mvn-fundo-2), #fff 55%); }
.video-moldura { position: relative; padding: 14px; border-radius: 30px; background: var(--mvn-gradiente); box-shadow: var(--mvn-sombra-forte); }
.video-moldura .video-capa { border-radius: 20px; box-shadow: none; }
.video-capa.tocando { cursor: default; }
.video-aviso-som { position: absolute; left: 50%; bottom: 26px; transform: translateX(-50%); background: rgba(10,37,64,.85); color: #fff; font-size: .85rem; padding: 6px 14px; border-radius: 999px; pointer-events: none; transition: opacity .6s; white-space: nowrap; }
.video-aviso-som.sumir { opacity: 0; }

/* Galeria — mosaico da página inicial */
.galeria-mosaico { display: grid; gap: 14px; grid-template-columns: repeat(2, 1fr); grid-auto-rows: 160px; }
@media (min-width: 768px) { .galeria-mosaico { grid-template-columns: repeat(4, 1fr); grid-auto-rows: 210px; } }
.galeria-mosaico.galeria-destaque .galeria-item:first-child { grid-column: span 2; grid-row: span 2; }
.galeria-mosaico.galeria-simples { grid-auto-rows: 240px; }
@media (min-width: 768px) {
    .galeria-colunas-1 { grid-template-columns: 1fr; grid-auto-rows: 420px !important; }
    .galeria-colunas-2 { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 340px !important; }
    .galeria-colunas-3 { grid-template-columns: repeat(3, 1fr); grid-auto-rows: 280px !important; }
}
.galeria-item { position: relative; display: block; overflow: hidden; border-radius: 18px; background: radial-gradient(circle at 30% 20%, #fff, var(--mvn-fundo-2)); box-shadow: 0 6px 18px rgba(10,37,64,.07); }
.galeria-item img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s ease, filter .4s; }
.galeria-item::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 45%, rgba(10,37,64,.75)); opacity: 0; transition: opacity .35s; }
.galeria-legenda { position: absolute; left: 16px; right: 16px; bottom: 14px; z-index: 2; display: flex; align-items: center; gap: 8px; color: #fff; font-weight: 600; font-size: .95rem; opacity: 0; transform: translateY(8px); transition: opacity .35s, transform .35s; }
.galeria-legenda i { display: inline-flex; width: 32px; height: 32px; flex-shrink: 0; align-items: center; justify-content: center; border-radius: 50%; background: rgba(255,255,255,.25); backdrop-filter: blur(4px); }
.galeria-item:hover img, .galeria-item:focus-visible img { transform: scale(1.07); }
.galeria-item:hover::after, .galeria-item:focus-visible::after { opacity: 1; }
.galeria-item:hover .galeria-legenda, .galeria-item:focus-visible .galeria-legenda { opacity: 1; transform: none; }
@media (hover: none) { .galeria-legenda { opacity: 1; transform: none; font-size: .85rem; } .galeria-item::after { opacity: .7; } }
.galeria-mais { position: absolute; inset: 0; z-index: 3; display: flex; flex-direction: column; align-items: center; justify-content: center; background: rgba(3,105,196,.72); backdrop-filter: blur(2px); color: #fff; font-family: var(--mvn-serifa); font-size: 2.6rem; font-weight: 700; line-height: 1; }
.galeria-mais small { font-family: var(--bs-body-font-family); font-size: .9rem; font-weight: 600; text-transform: uppercase; letter-spacing: .1em; margin-top: 6px; }

/* Galeria — colunas (página do álbum), respeita o formato de cada foto */
.galeria-colunas { column-count: 2; column-gap: 14px; }
@media (min-width: 768px) { .galeria-colunas { column-count: 3; } }
@media (min-width: 1200px) { .galeria-colunas { column-count: 4; } }
.galeria-colunas .galeria-item { break-inside: avoid; margin-bottom: 14px; }
.galeria-colunas .galeria-item img { height: auto; display: block; }

/* Visualizador de fotos */
.visualizador { position: fixed; inset: 0; z-index: 2050; display: grid; grid-template-columns: 64px 1fr 64px; grid-template-rows: 56px 1fr auto; background: rgba(6, 20, 36, .97); backdrop-filter: blur(8px); color: #fff; opacity: 0; transition: opacity .25s; }
.visualizador[hidden] { display: none; }
.visualizador.aberto { opacity: 1; }
.visualizador-topo { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; padding: 8px 12px 8px 20px; }
.visualizador-contador { font-size: .9rem; letter-spacing: .08em; opacity: .85; }
.visualizador-botao { width: 48px; height: 48px; border: 0; border-radius: 50%; background: rgba(255,255,255,.12); color: #fff; font-size: 1.4rem; display: inline-flex; align-items: center; justify-content: center; transition: background .2s; }
.visualizador-botao:hover, .visualizador-botao:focus-visible { background: rgba(255,255,255,.28); }
.visualizador-anterior, .visualizador-proxima { align-self: center; justify-self: center; }
.visualizador-palco { grid-column: 2; margin: 0; min-height: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; padding: 8px; }
.visualizador-palco img { max-width: 100%; max-height: calc(100vh - 200px); object-fit: contain; border-radius: 10px; box-shadow: 0 20px 60px rgba(0,0,0,.5); transition: opacity .2s; background: #fff; }
.visualizador.trocando .visualizador-palco img { opacity: .35; }
.visualizador-palco figcaption { font-size: .98rem; text-align: center; opacity: .9; max-width: 720px; }
.visualizador-miniaturas { grid-column: 1 / -1; display: flex; gap: 8px; justify-content: center; overflow-x: auto; padding: 10px 16px 16px; scrollbar-width: thin; }
.visualizador-miniaturas button { flex: 0 0 auto; width: 64px; height: 48px; padding: 0; border: 2px solid transparent; border-radius: 8px; overflow: hidden; opacity: .55; background: #fff; transition: opacity .2s, border-color .2s; }
.visualizador-miniaturas button img { width: 100%; height: 100%; object-fit: cover; }
.visualizador-miniaturas button.ativa, .visualizador-miniaturas button:hover { opacity: 1; border-color: var(--mvn-azul-claro); }
.visualizador.uma-foto .visualizador-anterior, .visualizador.uma-foto .visualizador-proxima { visibility: hidden; }
@media (max-width: 767.98px) {
    .visualizador { grid-template-columns: 0 1fr 0; }
    .visualizador-anterior, .visualizador-proxima { position: absolute; top: 50%; transform: translateY(-50%); z-index: 2; background: rgba(0,0,0,.35); }
    .visualizador-anterior { left: 8px; }
    .visualizador-proxima { right: 8px; }
    .visualizador-palco img { max-height: calc(100vh - 190px); }
}

/* Botão voltar ao topo */
.voltar-topo { position: fixed; right: 24px; bottom: 96px; z-index: 1039; width: 46px; height: 46px; border: 0; border-radius: 50%; background: #fff; color: var(--mvn-azul-escuro); box-shadow: var(--mvn-sombra); font-size: 1.2rem; display: flex; align-items: center; justify-content: center; opacity: 0; visibility: hidden; transform: translateY(10px); transition: opacity .25s, transform .25s, visibility .25s; }
.voltar-topo.visivel { opacity: 1; visibility: visible; transform: none; }
.voltar-topo:hover { background: var(--mvn-azul-escuro); color: #fff; }
@media (max-width: 991.98px) { .voltar-topo { right: 14px; bottom: 80px; width: 42px; height: 42px; } }

/* reCAPTCHA: o selo v3 é ocultado e substituído pelo aviso exigido pelo Google */
.grecaptcha-badge { visibility: hidden !important; }
.aviso-recaptcha { font-size: .78rem; color: var(--mvn-suave); margin: 0 0 12px; line-height: 1.4; }
.aviso-recaptcha a { color: inherit; text-decoration: underline; }
.campo-recaptcha { min-height: 78px; }

@media print {
    .barra-atendimento, .cabecalho, .rodape, .acoes-celular, .whatsapp-flutuante, form { display: none !important; }
}
