/* Reconstrução em CSS próprio dos componentes de encontreumdentista.com.br.
   Tokens medidos no CSS público de origem (referencias/design-origem). */
/* Montserrat (OFL) hospedado localmente, sem depender de CDN. O arquivo preservado em
   referencias/design-origem/fontes é apenas o recorte Thin Italic do site antigo e não cobre acentos. */
@font-face {
    font-family: "Montserrat";
    src: url("../fontes/montserrat-latin.woff2") format("woff2");
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
    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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: "Montserrat";
    src: url("../fontes/montserrat-latin-ext.woff2") format("woff2");
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

:root {
    --azul: #2d91af;
    --azul-escuro: #0e5264;
    --azul-medio: #0a748c;
    --azul-topo: #007392;
    --ciano-faixa: #44c7db;
    --ciano-cartao: #64d9ec;
    --ciano-botao: #00daed;
    --ciano-apoio: #62d9ec;
    --amarelo: #ffc900;
    --amarelo-menu: #ffc800;
    --amarelo-menu-hover: #ffe99a;
    --amarelo-hover: #fecb00;
    --amarelo-tags: #ffdc03;
    --amarelo-traco: #ffd100;
    --tinta: #1e1e1e;
    --tinta-suave: #5e5e5e;
    --tinta-clara: #969696;
    --linha: #dedede;
    --largura: 1380px;
    --largura-texto: 1000px;
    /* Tokens do localizador, lidos das variáveis do Agile Store Locator na origem. */
    --localizador-primario: #38b4c7;
    --localizador-cabecalho: #f7f7f7;
    --localizador-titulo: #32373c;
    --localizador-texto: #555d66;
    --localizador-subtitulo: #6a6a6a;
}

* { box-sizing: border-box; }
body { margin: 0; background: #fff; color: var(--tinta); font-family: "Montserrat", "Segoe UI", Arial, sans-serif; font-size: 1rem; font-weight: 500; line-height: 1.75rem; overflow-x: hidden; }
img { max-width: 100%; }
a { color: inherit; text-decoration: none; }
a:hover { text-decoration: none; }
:focus-visible { outline: 3px solid var(--amarelo); outline-offset: 2px; }
h1, h2, h3, h4, h5, h6 { margin: 0; font-family: inherit; font-weight: 700; color: var(--tinta); }
h1 { font-size: 2.25rem; line-height: 2.625rem; }
h2 { font-size: 1.75rem; line-height: 2.1875rem; }
h3 { font-size: 1.5rem; line-height: 2.1875rem; }
p { margin: 0 0 1.3125rem; }
.container { width: min(var(--largura), 100% - 1.75rem); margin-inline: auto; }
.container-texto { width: min(var(--largura-texto), 100% - 1.75rem); margin-inline: auto; }
.leitor-tela { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.icone { width: 1em; height: 1em; fill: currentColor; vertical-align: -.125em; }

/* Cabeçalho */
.site-header { background: var(--azul); }
.header-content { display: flex; align-items: center; justify-content: space-between; gap: 1.75rem; min-height: 82px; padding-block: .875rem; }
.brand img { display: block; width: 160px; max-width: 80%; height: auto; }
.main-nav { display: flex; flex-wrap: wrap; align-items: center; gap: 1.75rem; margin-left: auto; }
.main-nav > a { font-size: .875rem; font-weight: 600; line-height: 1.75rem; letter-spacing: .35px; text-transform: uppercase; color: #fff; }
.main-nav > a:hover { color: var(--amarelo); }
.main-nav .nav-destaque { display: inline-flex; align-items: center; gap: .5rem; padding: 6px 8px 4px; border-radius: 8px; background: var(--amarelo-menu); color: #000; }
.main-nav .nav-destaque:hover { background: var(--amarelo-menu-hover); color: #000; }
.main-nav .nav-destaque img { width: 16px; height: 18px; }

/* Faixa de busca da home: fundo sorteado entre três fotos, trocado a cada 7 s como na origem. */
/* Sem overflow: hidden — ele recortava a lista de sugestões na borda da faixa. As camadas de fundo
   são absolutas com inset: 0 e nunca ultrapassam a faixa, então não havia nada para conter. */
.hero-band { position: relative; padding: 3.5rem 0 4.375rem; background: var(--azul-topo); text-align: center; }
.hero-fundo { position: absolute; inset: 0; background-position: center; background-size: cover; background-repeat: no-repeat; mix-blend-mode: multiply; opacity: 0; transition: opacity 1s ease; }
.hero-fundo.visivel { opacity: 1; }
/* z-index alto o bastante para a lista de sugestões passar por cima da faixa de categorias e da
   grade de artigos, que vêm depois na ordem do documento. */
.hero-band > .container { position: relative; z-index: 40; }
/* Único acesso ao painel na home, que não tem o cabeçalho padrão (ver comentário em Index.cshtml).
   Canto superior, sem disputar espaço com a busca — mesmo z-index do container para ficar acima
   do fundo do hero. */
.hero-painel-link { position: absolute; top: 1rem; right: 1rem; z-index: 40; display: inline-flex; align-items: center; gap: .375rem; padding: .375rem .875rem; border-radius: 999px; background: rgb(255 255 255 / .16); color: #fff; font-size: .8125rem; font-weight: 600; text-decoration: none; }
.hero-painel-link:hover { background: rgb(255 255 255 / .28); }
.hero-painel-link .icone { width: 14px; height: 14px; }
@media (prefers-reduced-motion: reduce) { .hero-fundo { transition: none; } }
.hero-band .hero-logo { width: 300px; max-width: 80%; margin: 2rem auto 2.1875rem; }
.hero-search { display: flex; flex-wrap: wrap; justify-content: center; gap: .875rem; width: min(980px, 100%); margin-inline: auto; }
.hero-search .campo-pilula { position: relative; flex: 1 1 240px; min-width: 0; }
/* Campo de etiquetas: a pílula cresce com as escolhas e a entrada de texto ocupa o espaço restante. */
.campo-tags { position: relative; display: flex; flex: 1 1 260px; flex-wrap: wrap; align-items: center; gap: .375rem; min-width: 0; min-height: 50px; padding: .3125rem 4rem .3125rem 1.25rem; border-radius: 32px; background: #fff; text-align: left; }
.campo-tags .tags-escolhidas { display: contents; }
.campo-tags input[type="text"] { flex: 1 1 6rem; min-width: 5rem; height: 2.375rem; border: 0; background: transparent; color: var(--tinta); font: inherit; font-size: 1rem; }
.campo-tags input[type="text"]:focus { outline: 0; }
.tag-escolhida { display: inline-flex; align-items: center; gap: .375rem; max-width: 100%; padding: .25rem .5rem .25rem .625rem; border-radius: 4px; background: var(--ciano-apoio); color: var(--azul-escuro); font-size: .8125rem; font-weight: 600; }
.tag-escolhida > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tag-remover { display: grid; place-items: center; width: 1.125rem; height: 1.125rem; padding: 0; border: 0; border-radius: 2em; background: rgb(255 255 255 / .6); color: var(--azul-escuro); font: inherit; font-size: .875rem; line-height: 1; cursor: pointer; }
.tag-remover:hover { background: var(--amarelo); }
.botao-limpar-tags { position: absolute; top: 50%; right: 2.375rem; transform: translateY(-50%); width: 1.5rem; height: 1.5rem; padding: 0; border: 0; border-radius: 2em; background: transparent; color: var(--tinta-suave); font: inherit; font-size: 1.25rem; line-height: 1; cursor: pointer; }
.botao-limpar-tags:hover { color: var(--azul-escuro); }
.botao-limpar-tags[hidden] { display: none; }
/* Botão que abre a lista inteira, no lugar da seta do seletor da origem. */
.botao-abrir-opcoes { position: absolute; top: 50%; right: .75rem; transform: translateY(-50%); display: grid; place-items: center; width: 1.75rem; height: 1.75rem; padding: 0; border: 0; border-radius: 2em; background: transparent; color: var(--tinta-suave); cursor: pointer; }
.botao-abrir-opcoes .icone { width: 1.25rem; height: 1.25rem; }
.botao-abrir-opcoes:hover { color: var(--azul-escuro); }
/* Lista de sugestões: especialidade, convênio e serviço na mesma consulta. */
.lista-sugestoes { position: absolute; top: calc(100% + .375rem); left: 0; z-index: 60; width: 100%; max-height: 21rem; margin: 0; padding: .375rem 0; border-radius: 8px; background: #fff; box-shadow: 0 6px 18px rgb(0 0 0 / .18); overflow-y: auto; text-align: left; }
.lista-sugestoes[hidden] { display: none; }
.suggestion { display: flex; align-items: center; justify-content: space-between; gap: .875rem; padding: .5rem 1.25rem; list-style: none; color: var(--tinta); font-size: .875rem; cursor: pointer; }
.suggestion small { flex: 0 0 auto; color: var(--tinta-suave); font-size: .75rem; }
.suggestion:hover, .suggestion-marcada { background: #eef6f8; }
/* Cabeçalho de grupo da lista completa: fica fixo no topo enquanto o grupo passa pela rolagem. */
.suggestion-grupo { position: sticky; top: -.375rem; padding: .375rem 1.25rem; list-style: none; background: #f7f7f7; color: var(--tinta-suave); font-size: .6875rem; font-weight: 700; letter-spacing: .5px; text-transform: uppercase; }
.hero-search input[type="search"] { width: 100%; height: 50px; padding: 0 3rem 0 2rem; border: 0; border-radius: 32px; background: #fff; color: var(--tinta); font: inherit; font-size: 1rem; }
.campo-pilula .botao-geo { position: absolute; top: 5px; right: 5px; }
.botao-geo { display: grid; place-items: center; width: 40px; height: 40px; border: 0; border-radius: 32px; background: var(--ciano-apoio); color: var(--azul-escuro); font-size: 1.125rem; cursor: pointer; }
.botao-geo:hover { background: var(--amarelo); }
.botao-pesquisa { min-width: 162px; height: 50px; padding: 0 1.3125rem; border: 0; border-radius: 32px; background: var(--ciano-botao); color: var(--azul-escuro); font: inherit; font-size: .8em; font-weight: 700; text-transform: capitalize; cursor: pointer; }
.botao-pesquisa:hover { background: var(--amarelo); }
.hero-erro { margin: .875rem 0 0; color: #fff; font-size: .875rem; }

/* Faixa de categorias */
.explore-band { padding: 30px 0; background: var(--ciano-faixa); }
.explore-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.75rem; }
.explore-card { display: flex; align-items: center; gap: 1.3125rem; min-height: 110px; padding: 10px; border-radius: 18px; background: var(--ciano-cartao); overflow: hidden; }
.explore-card:hover { background: var(--amarelo-hover); }
.explore-card img { width: 20%; margin-left: 10px; transform: scale(1.01); transition: transform 1s ease; }
.explore-card:hover img { transform: scale(1.1); }
.explore-card span { flex: 1; padding-right: 1.75rem; color: var(--azul-escuro); font-size: 1.5rem; font-weight: 500; line-height: 2.1875rem; }

/* Cartões de artigo */
.entry-cats { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: .5625rem; line-height: 1.3125rem; }
.entry-cats a { position: relative; display: inline-block; padding-top: 2px; font-size: .75rem; font-weight: 600; letter-spacing: .36px; line-height: .875rem; text-transform: uppercase; color: var(--tinta); z-index: 0; }
.entry-cats a::after { content: ""; position: absolute; inset: auto 0 -2px 0; height: 2px; background: var(--amarelo-traco); z-index: -1; transition: height .25s ease; }
.entry-cats a:hover { background: var(--amarelo-traco); }
.entry-thumb { position: relative; display: block; overflow: hidden; background: #eef6f8; }
.entry-thumb img { display: block; width: 100%; height: 100%; object-fit: cover; }

/* Grade da home: destaque 2x2 + cartões menores */
/* Pesquisa e modo de exibição da grade de artigos da home */
.home-busca-posts { padding-top: 1.75rem; }
.home-busca-linha { display: flex; flex-wrap: wrap; align-items: center; gap: 1.3125rem; }
.campo-pesquisa-posts { display: flex; flex: 1 1 260px; align-items: center; gap: .625rem; padding: .625rem 1.125rem; border: 1px solid var(--linha); border-radius: 32px; background: #fff; }
.campo-pesquisa-posts .icone { width: 18px; height: 18px; color: var(--tinta-clara); }
.campo-pesquisa-posts input { flex: 1 1 auto; min-width: 0; border: 0; outline: 0; background: transparent; font: inherit; font-size: .9375rem; }
.pesquisa-posts-sem-resultado { margin-top: 1.3125rem; color: var(--tinta-suave); font-size: .9375rem; }
.densidade-grade { display: flex; flex: 0 0 auto; gap: .375rem; }
.densidade-botao { display: grid; place-items: center; width: 38px; height: 38px; border: 1px solid var(--linha); border-radius: 8px; background: #fff; color: var(--tinta-suave); cursor: pointer; }
.densidade-botao .icone { width: 18px; height: 18px; }
.densidade-botao:hover { border-color: var(--azul-medio); color: var(--azul-medio); }
.densidade-botao.densidade-ativo { border-color: var(--azul-medio); background: var(--azul-medio); color: #fff; }

.home-entries { padding: 20px 0 4.375rem; }
.entry-grid-featured { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.75rem; }
/* Modo médio: sem destaque, mais colunas e cartões menores — cerca do dobro de itens por linha do
   modo grande. Modo comprimido: ainda mais colunas, sem categoria, só miniatura e título. */
.entry-grid-featured[data-densidade-grade="medio"] { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.entry-grid-featured[data-densidade-grade="medio"] .entry-destaque { grid-row: auto; grid-column: auto; }
.entry-grid-featured[data-densidade-grade="medio"] .entry-destaque .entry-thumb { aspect-ratio: 450 / 280; height: auto; }
.entry-grid-featured[data-densidade-grade="medio"] .entry-title, .entry-grid-featured[data-densidade-grade="medio"] .entry-destaque .entry-title { font-size: 1rem; line-height: 1.375rem; }
.entry-grid-featured[data-densidade-grade="comprimido"] { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: .875rem; }
.entry-grid-featured[data-densidade-grade="comprimido"] .entry-destaque { grid-row: auto; grid-column: auto; }
.entry-grid-featured[data-densidade-grade="comprimido"] .entry-thumb, .entry-grid-featured[data-densidade-grade="comprimido"] .entry-destaque .entry-thumb { aspect-ratio: 1 / 1; height: auto; }
.entry-grid-featured[data-densidade-grade="comprimido"] .entry-body { padding: .875rem .5rem; }
.entry-grid-featured[data-densidade-grade="comprimido"] .entry-cats { display: none; }
.entry-grid-featured[data-densidade-grade="comprimido"] .entry-title, .entry-grid-featured[data-densidade-grade="comprimido"] .entry-destaque .entry-title { font-size: .8125rem; line-height: 1.125rem; }
@media (max-width: 991px) {
    .entry-grid-featured[data-densidade-grade="medio"], .entry-grid-featured[data-densidade-grade="comprimido"] { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 575px) {
    .entry-grid-featured[data-densidade-grade="medio"], .entry-grid-featured[data-densidade-grade="comprimido"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .densidade-grade { order: -1; width: 100%; justify-content: center; }
}
.entry-grid-featured .entry { position: relative; height: 100%; overflow: hidden; }
.entry-grid-featured .entry-destaque { grid-row: span 2; grid-column: span 2; }
.entry-grid-featured .entry-thumb { aspect-ratio: 450 / 280; }
.entry-grid-featured .entry-destaque .entry-thumb { aspect-ratio: auto; height: 100%; }
.entry-overlink { position: absolute; inset: 0; z-index: 1; display: block; }
.entry-grid-featured .entry-thumb::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to bottom, transparent, #000); opacity: .6; transition: opacity .4s ease; }
.entry-grid-featured .entry:hover .entry-thumb::after { opacity: .8; }
.entry-grid-featured .entry-body { position: absolute; inset: auto 0 0 0; z-index: 2; padding: 1.75rem .875rem; text-align: center; }
.entry-grid-featured .entry-cats { justify-content: center; }
.entry-grid-featured .entry-cats a, .entry-grid-featured .entry-title { color: #fff; }
.entry-grid-featured .entry-title { font-size: 1.25rem; line-height: 1.75rem; }
.entry-grid-featured .entry-destaque .entry-title { font-size: 1.75rem; line-height: 2.1875rem; }
.home-entries-mais { display: flex; justify-content: center; margin-top: 2.1875rem; }
.botao-carregar-mais { min-width: 200px; height: 50px; padding: 0 1.75rem; border: 0; border-radius: 32px; background: var(--ciano-botao); color: var(--azul-escuro); font: inherit; font-size: .875rem; font-weight: 700; cursor: pointer; }
.botao-carregar-mais:hover { background: var(--amarelo); }
.botao-carregar-mais:disabled { opacity: .6; cursor: default; }

/* Botão de voltar ao topo, fixo no canto e visível só depois de rolar a página. */
.botao-voltar-topo { visibility: hidden; position: fixed; right: 1.3125rem; bottom: 1.3125rem; z-index: 50; display: grid; place-items: center; width: 44px; height: 44px; border: 0; border-radius: 10px; background: var(--amarelo); color: var(--azul-escuro); opacity: 0; box-shadow: 0 4px 14px rgb(0 0 0 / .25); cursor: pointer; transition: opacity .25s ease, transform .25s ease; transform: translateY(8px); }
.botao-voltar-topo .icone { width: 22px; height: 22px; }
.botao-voltar-topo:hover { background: var(--amarelo-hover); }
.botao-voltar-topo.visivel { visibility: visible; opacity: 1; transform: translateY(0); }
@media (max-width: 767px) { .botao-voltar-topo { right: .875rem; bottom: .875rem; width: 38px; height: 38px; } }

/* Faixa de posts recentes do Instagram (embed oficial, sem chave nem token) */
.instagram-feed { padding-bottom: 4.375rem; text-align: center; }
.instagram-feed-embed { display: block; width: 80%; height: 340px; margin-inline: auto; border: 0; border-radius: 12px; box-shadow: 0 4px 18px rgb(0 0 0 / .12); }
.instagram-feed-grade { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 1.3125rem; }
.instagram-feed-post { position: relative; display: block; aspect-ratio: 1; overflow: hidden; border-radius: 12px; }
.instagram-feed-post img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s ease; }
.instagram-feed-post:hover img { transform: scale(1.05); }
@media (max-width: 991px) { .instagram-feed-grade { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 575px) { .instagram-feed-grade { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.instagram-feed-seguir { display: inline-flex; align-items: center; gap: .5rem; margin-bottom: 1.75rem; padding: .75rem 1.75rem; border-radius: 32px; background: var(--azul-medio); color: #fff; font-weight: 700; }
.instagram-feed-seguir:hover { background: var(--azul-escuro); }

/* Faixa de chamada para o localizador */
.cta-band { background: var(--azul-medio) url("../images/como-pesquisar.png") center/contain no-repeat; }
.cta-band a { display: block; height: 400px; }

/* Faixa de título com trilha */
.page-banner { padding: 3.5rem; border-bottom: 1px solid var(--linha); background: var(--azul-medio); color: #fff; text-align: center; }
.page-banner .page-title { margin-bottom: .875rem; color: #fff; }
.breadcrumb-path { color: #fff; font-size: .75rem; font-weight: 500; letter-spacing: .36px; text-transform: uppercase; }
.breadcrumb-path span { margin: 0 5px; }
.breadcrumb-path a { border-bottom: 1px solid transparent; }
.breadcrumb-path a:hover { border-bottom-color: currentColor; }

/* Corpo com barra lateral */
.content-wrap { display: flex; flex-wrap: wrap; gap: 0; padding-block: 6.125rem; }
.content-wrap.sem-lateral { display: block; }
.content-main { flex: 0 0 66.666667%; max-width: 66.666667%; min-width: 0; padding-inline: .875rem; }
.content-side { position: relative; flex: 0 0 33.333333%; max-width: 33.333333%; min-width: 0; padding-inline: .875rem; }
.content-wrap.lateral-direita .content-side { padding-left: 4.4375rem; }
.content-wrap.lateral-esquerda .content-main { order: 2; }
.content-wrap.lateral-esquerda .content-side { order: 1; padding-right: 4.4375rem; }
.content-side::before { content: ""; position: absolute; top: 0; bottom: 0; width: 1px; background: var(--linha); }
.content-wrap.lateral-direita .content-side::before { left: 1.75rem; }
.content-wrap.lateral-esquerda .content-side::before { right: 1.75rem; }

/* Barra de contagem e listagens */
.sort-header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; margin-bottom: 1.75rem; }
.sort-header .sort-title { color: var(--tinta-suave); font-size: .875rem; line-height: 1.3125rem; }
.entry-list { display: grid; gap: 4.375rem; }
.entry-list .entry-thumb { aspect-ratio: 910 / 530; margin-bottom: 1.4375rem; }
.entry-list .entry-title { font-size: 1.75rem; line-height: 2.1875rem; margin-bottom: .875rem; }
.entry-list .entry-excerpt { margin-bottom: 1.3125rem; color: var(--tinta-suave); }
.entry-list .entry-meta { color: var(--tinta-suave); font-size: .75rem; letter-spacing: .36px; text-transform: uppercase; }
.entry-title a { border-bottom: 1px solid transparent; }
.entry-title a:hover { border-bottom-color: currentColor; }
.entry-grid-small { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.75rem; }
.entry-grid-small .entry-thumb { aspect-ratio: 450 / 280; margin-bottom: 1.4375rem; }
.entry-grid-small .entry-body { padding: 0 1.75rem; text-align: center; }
.entry-grid-small .entry-cats { justify-content: center; }
.entry-grid-small .entry-title { font-size: 1.25rem; line-height: 1.75rem; }
.mensagem-vazia { padding: 1.75rem; border: 1px solid var(--linha); color: var(--tinta-suave); }

/* Paginação */
.pagination { margin-top: 4.375rem; }
.pagination ul { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; margin: 0; padding: 0; }
.pagination li { margin: 0 .875rem; list-style: none; }
.pagination a, .pagination span { display: block; font-size: .875rem; font-weight: 600; letter-spacing: .14px; line-height: 1.3125rem; text-transform: uppercase; color: var(--tinta); }
.pagination .current, .pagination a:hover { color: var(--tinta-suave); }

/* Widgets da barra lateral */
.widget:not(:last-child) { margin-bottom: 2.1875rem; padding-bottom: 1.75rem; border-bottom: 1px solid var(--linha); }
.widget-title { margin-bottom: 1.75rem; font-size: 1rem; font-weight: 600; text-transform: uppercase; }
.widget ul { margin: 0; padding: 0; }
.widget li { list-style: none; }
.widget-lista li { padding-left: 1.3125rem; position: relative; }
.widget-lista li::before { content: "•"; position: absolute; left: 0; color: var(--ciano-apoio); }
.widget-lista a:hover { color: var(--azul-medio); }
.widget-texto { color: var(--tinta-suave); line-height: 1.4em; }
.search-form { position: relative; display: flex; }
.search-form input[type="search"] { width: 100%; height: 42px; padding: 0 3.0625rem 0 0; border-width: 0 0 2px 0; border-style: solid; border-color: var(--linha); background: transparent; color: inherit; font: inherit; font-size: .875rem; }
.search-form button { position: absolute; top: 0; right: 0; display: grid; place-items: center; width: 42px; height: 100%; border: 0; border-radius: 0 15px 15px 0; background: var(--azul-medio); color: #fff; font-size: 1.125rem; cursor: pointer; }
.search-form button:hover { background: var(--amarelo); color: var(--azul-escuro); }
.tag-cloud { display: flex; flex-wrap: wrap; gap: .4375rem; }
.tag-cloud a { display: inline-block; padding: .4375rem .625rem; border-radius: 10px; background: var(--amarelo); color: #000; font-size: .8125rem; font-weight: 600; line-height: .875rem; }
.tag-cloud a:hover { background: var(--amarelo-tags); color: #000; }

/* Artigo e página institucional */
.entry-single .entry-title { margin-bottom: 1.75rem; font-size: 2.25rem; line-height: 2.625rem; }
/* Assinatura do autor, com o mesmo tratamento do meta da lista de artigos. */
.entry-single .entry-meta { margin: -1.3125rem 0 1.75rem; color: var(--tinta-suave); font-size: .75rem; letter-spacing: .36px; text-transform: uppercase; }
.entry-single .entry-thumb { aspect-ratio: 910 / 530; margin-bottom: 1.75rem; }
/* Atalho para quem pode editar o post — só aparece pra quem tem a permissão, então não precisa
   disputar destaque com o resto do cabeçalho do artigo: discreto até passar o mouse por perto. */
.botao-editar-post { display: inline-flex; align-items: center; gap: .375rem; margin: -1rem 0 1.75rem; padding: .3125rem .75rem; border-radius: 999px; background: #eef2f7; color: var(--tinta-suave); font-size: .75rem; font-weight: 600; text-decoration: none; }
.botao-editar-post:hover { background: #e2e8f0; color: var(--tinta); }
.botao-editar-post .icone { width: 14px; height: 14px; }
.entry-content { color: var(--tinta); }
.entry-content h2 { margin: 2.1875rem 0 .875rem; font-size: 2.25rem; line-height: 2.625rem; }
.entry-content h3 { margin: 1.75rem 0 .875rem; }
.entry-content p { margin-bottom: 1.3125rem; }
.entry-content a { color: var(--azul-medio); border-bottom: 1px solid currentColor; }
.entry-content img { height: auto; margin-bottom: 1.3125rem; }
.entry-content ul, .entry-content ol { margin: 0 0 1.3125rem 1.3125rem; padding: 0; }
.entry-content iframe { max-width: 100%; }
.entry-footer { margin-top: 2.1875rem; }
.tag-wrap { display: flex; align-items: baseline; }
.tag-wrap .tag-title { margin-right: .875rem; color: var(--tinta-suave); font-size: .875rem; }
.entry-related { margin-top: 4.375rem; }
.related-title { margin-bottom: 1.3125rem; font-size: 1.5625rem; line-height: 2.1875rem; }
/* Blocos do editor do WordPress. Os delimitadores <!-- wp:... --> são removidos na importação, mas
   as classes ficam no HTML e precisam de estilo aqui: sem elas, media-text, columns e buttons
   apareciam como divs sem formatação nenhuma. Só as 13 classes presentes no conteúdo importado. */
.entry-content .wp-block-image { margin: 1.75rem 0; }
.entry-content .wp-block-image img { max-width: 100%; height: auto; }
.entry-content .wp-block-image figcaption { margin-top: .5rem; color: var(--tinta-suave); font-size: .8125rem; text-align: center; }
.entry-content .wp-block-image.is-resized img { width: auto; }
.entry-content .size-full img, .entry-content img.size-full { width: 100%; }
.entry-content .aligncenter { margin-inline: auto; text-align: center; }
.entry-content .alignwide { width: 100%; }
.entry-content .has-text-align-center { text-align: center; }
.entry-content .has-text-align-left { text-align: left; }
.entry-content .has-text-align-right { text-align: right; }
.entry-content .wp-block-separator { margin: 2.1875rem 0; border: 0; border-top: 1px solid var(--linha); }
.entry-content .wp-block-code { padding: 1rem 1.3125rem; border-radius: 8px; background: #f5f5f5; font-size: .875rem; overflow-x: auto; }
.entry-content .wp-block-embed { margin: 1.75rem 0; }
.entry-content .wp-block-embed iframe { display: block; width: 100%; aspect-ratio: 16 / 9; border: 0; border-radius: 8px; }
.entry-content .wp-block-group { margin: 1.75rem 0; }
.entry-content .wp-block-group.has-background { padding: 1.3125rem; border-radius: 8px; background: var(--ciano-faixa); }
.entry-content .has-tertiary-background-color { background: var(--ciano-faixa); }
/* Duas colunas: no WordPress a proporção vem em style="flex-basis"; aqui a grade respeita isso. */
.entry-content .wp-block-columns { display: flex; flex-wrap: wrap; gap: 1.75rem; margin: 1.75rem 0; }
.entry-content .wp-block-column { flex: 1 1 14rem; min-width: 0; }
/* media-text: imagem e texto lado a lado, com a largura da mídia vinda do style da origem. */
.entry-content .wp-block-media-text { display: grid; grid-template-columns: 1fr 1fr; gap: 1.75rem; align-items: start; margin: 1.75rem 0; }
.entry-content .wp-block-media-text.is-vertically-aligned-center { align-items: center; }
.entry-content .wp-block-media-text__media img { width: 100%; height: auto; }
.entry-content .wp-block-media-text__content > *:first-child { margin-top: 0; }
.entry-content .wp-block-buttons { display: flex; flex-wrap: wrap; gap: .875rem; margin: 1.75rem 0; }
.entry-content .wp-block-button__link { display: inline-block; padding: .75rem 1.75rem; border-radius: 32px; background: var(--ciano-botao); color: var(--azul-escuro); font-size: .875rem; font-weight: 700; text-decoration: none; }
.entry-content .wp-block-button__link:hover { background: var(--amarelo); color: var(--azul-escuro); }
.entry-content .has-medium-font-size { font-size: 1.125rem; }
/* Vídeo incorporado convertido dos blocos do WPBakery: proporção 16:9 e largura da coluna. */
.video-incorporado { margin: 1.75rem 0; }
.video-incorporado iframe { display: block; width: 100%; aspect-ratio: 16 / 9; border: 0; border-radius: 8px; }

/* Localizador */
.locator { padding-block: 1.75rem 3.5rem; }
/* O localizador ocupa a largura inteira do navegador e cabe em uma tela: a faixa de filtros fica
   colada no cabeçalho e a lista rola dentro do painel, como no localizador de origem. */
.locator-largura-total { width: 100%; padding: 0; }
/* Filtros dentro do próprio cabeçalho, ao lado do logotipo — a faixa própria que existia antes
   some, e essa altura passa a ser do mapa e da lista (locator-main mede o espaço disponível em
   tempo de execução, então tirar os filtros do caminho já basta). */
body:has(.locator-largura-total) .site-header .container { width: 100%; max-width: none; margin-inline: 0; padding-inline: .875rem 1.3125rem; }
body:has(.locator-largura-total) .header-content { min-height: 0; gap: 1.3125rem; padding-block: .5rem; justify-content: flex-start; }
body:has(.locator-largura-total) .brand { flex: 0 0 auto; }
body:has(.locator-largura-total) .locator-filtros-area { flex: 1 1 auto; min-width: 0; }
body:has(.locator-largura-total) .locator-filters { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; margin: 0; padding: 0; background: transparent; }
body:has(.locator-largura-total) .filtro-localizacao { flex: 1 1 200px; min-width: 0; }
body:has(.locator-largura-total) .filtros-avancados { display: flex; flex-wrap: wrap; gap: .75rem; flex: 2 1 380px; }
body:has(.locator-largura-total) .filtros-avancados > div { flex: 1 1 130px; min-width: 0; }
body:has(.locator-largura-total) .filtro-maximo { flex: 0 0 auto; }
body:has(.locator-largura-total) .locator-filters select,
body:has(.locator-largura-total) .locator-busca input[type="search"],
body:has(.locator-largura-total) .locator-busca .botao-geo { height: 34px; border: 0; background: #fff; font-size: .75rem; padding-inline: .625rem; }
body:has(.locator-largura-total) .locator-filters select { border-radius: 6px; }
body:has(.locator-largura-total) .locator-busca { border-radius: 6px; overflow: hidden; }
body:has(.locator-largura-total) .locator-busca button[type="submit"] { height: 34px; width: 34px; }
/* A altura vem de --localizador-altura, medida em tempo de execução (cabeçalho e rodapé variam).
   grid-template-rows com minmax(0, 1fr) e overflow: hidden impedem que a lista longa estique a
   linha da grade além da altura declarada, que era o que esticava o mapa e criava rolagem. */
.locator-largura-total .locator-main { border: 0; height: var(--localizador-altura, calc(100dvh - 14.5rem)); min-height: 20rem; grid-template-rows: minmax(0, 1fr); overflow: hidden; }
.locator-largura-total .locator-panel { min-height: 0; max-height: 100%; overflow: hidden; border-right: 1px solid var(--linha); }
.locator-largura-total .locator-list { flex: 1 1 auto; min-height: 0; }
.locator-largura-total .locator-map { height: 100%; min-height: 0; }
.locator-largura-total .google-map { min-height: 0; }
/* A barra que abre os filtros só existe no celular, onde eles ficam recolhidos. */
.locator-barra-filtros { display: none; }
.locator-filters { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 1.3125rem; margin-bottom: 1.75rem; }
.locator-filters .filtros-avancados { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.3125rem; }
/* Combo de quantidade máxima, ao lado da busca. Ele só existe quando há mais do que o padrão para
   mostrar, então a coluna entra pelo :has() em vez de ficar reservada e vazia nas outras buscas. */
.locator-filters:has(.filtro-maximo) { grid-template-columns: minmax(0, 4fr) minmax(110px, 1fr) minmax(0, 8fr); }
.locator-filters label { display: block; margin-bottom: .5rem; font-size: .875rem; font-weight: 600; }
.locator-filters select { width: 100%; height: 50px; padding: 0 .875rem; border: 1px solid var(--linha); border-radius: 8px; background: #fff; color: inherit; font: inherit; font-size: .875rem; }
.locator-busca { display: flex; }
.locator-busca input[type="search"] { flex: 1; min-width: 0; height: 50px; padding: 0 1.3125rem; border: 1px solid var(--linha); border-right: 0; border-radius: 8px 0 0 8px; font: inherit; }
.locator-busca .botao-geo { width: 46px; height: 50px; border-radius: 0; }
.locator-busca button[type="submit"] { display: grid; place-items: center; width: 52px; border: 0; border-radius: 0 8px 8px 0; background: var(--localizador-primario); color: #fff; font-size: 1.125rem; cursor: pointer; }
.locator-busca button[type="submit"]:hover { background: var(--azul-medio); }
/* Ação de refazer a busca com a área visível do mapa, no lugar do filtro de raio. */
.botao-area-mapa { position: absolute; top: .875rem; left: 50%; transform: translateX(-50%); z-index: 2; padding: .5rem 1rem; border: 1px solid var(--linha); border-radius: 32px; background: #fff; color: var(--azul-escuro); font: inherit; font-size: .8125rem; font-weight: 600; box-shadow: 0 2px 8px rgb(0 0 0 / .18); cursor: pointer; }
.botao-area-mapa:hover { background: var(--azul); border-color: var(--azul); color: #fff; }
.botao-area-limpar { top: auto; bottom: .875rem; text-decoration: none; }
.botao-area-mapa[hidden] { display: none; }
.locator-actions { display: flex; align-items: flex-end; gap: .875rem; }
.locator-main { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 7fr); border: 1px solid var(--linha); }
.locator-panel { display: flex; flex-direction: column; max-height: 720px; }
.locator-count { margin: 0; padding: 1.3125rem; border-bottom: 1px solid var(--linha); background: var(--localizador-cabecalho); color: var(--localizador-titulo); font-size: 1rem; font-weight: 700; }
/* Aviso de que o teto de resultados cortou a busca. Fica entre a contagem e a lista, fora da área
   rolável, para não sair de vista assim que a pessoa desce um cartão. */
.locator-aviso { margin: 0; padding: .75rem 1.3125rem; border-bottom: 1px solid var(--linha); background: #fff6d9; color: var(--tinta); font-size: .8125rem; line-height: 1.25rem; }
.locator-list { margin: 0; padding: 0; overflow-y: auto; }
/* Cartão do profissional: dados à esquerda, foto e ações à direita e a distância no pé,
   na mesma distribuição do painel de resultados da origem. */
.locator-item { display: grid; grid-template-columns: minmax(0, 1fr) 150px; gap: .875rem; padding: 1.3125rem; border-bottom: 1px solid var(--linha); list-style: none; }
.locator-item h3 { margin-bottom: .625rem; font-size: 1.0625rem; line-height: 1.5rem; font-weight: 700; color: var(--localizador-titulo); }
.locator-cro { margin: -.375rem 0 .625rem; color: var(--localizador-subtitulo); font-size: .75rem; font-weight: 600; text-transform: uppercase; letter-spacing: .36px; }
.locator-item ul { margin: 0; padding: 0; }
.locator-item li { display: flex; gap: .5rem; margin-bottom: .3125rem; list-style: none; color: var(--localizador-texto); font-size: .8125rem; line-height: 1.3125rem; }
/* Tamanho em pixels: com 1em sobre texto de 13px o ícone quase desaparecia ao lado do rótulo. */
.locator-item li .icone { flex: 0 0 auto; width: 15px; height: 15px; margin-top: .1875rem; color: var(--localizador-primario); }
.locator-item a { color: var(--localizador-primario); }
.locator-item a:hover { color: var(--azul-medio); }
/* Sutil o bastante para não competir com o resto do cartão, mas perceptível como link: sublinhado
   tênue que só fica sólido no hover, e o ícone de "abre em nova guia" na frente do nome. */
.locator-item h3 a { display: inline-flex; align-items: baseline; gap: .3125rem; color: var(--localizador-titulo); text-decoration: underline; text-decoration-color: var(--linha); text-underline-offset: .1875rem; }
.locator-item h3 a:hover { color: var(--localizador-primario); text-decoration-color: currentColor; }
.locator-item h3 a .icone { width: 13px; height: 13px; color: var(--localizador-subtitulo); }
.locator-aside { display: grid; justify-items: center; align-content: start; gap: .625rem; }
.avatar { display: grid; place-items: center; width: 88px; height: 88px; border: 2px solid var(--ciano-cartao); border-radius: 50%; background: #eef6f8; color: var(--azul-escuro); font-size: 1.375rem; font-weight: 700; overflow: hidden; }
.avatar img { width: 100%; height: 100%; object-fit: cover; }
/* A cor branca precisa vencer .locator-item a, senão o texto e o ícone ficam ciano sobre ciano. */
.botao-social, .locator-item .botao-social, .locator-item .botao-social:hover { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 2em; background: var(--localizador-primario); color: #fff; font-size: 1.125rem; }
.botao-social:hover, .locator-item .botao-social:hover { background: var(--azul-medio); }
.locator-redes-sociais { display: flex; gap: .5rem; }
.botao-rota, .locator-item .botao-rota, .locator-item .botao-rota:hover { display: block; width: 100%; padding: 10px 12px; border-radius: 4px; background: var(--localizador-primario); color: #fff; font-size: .75rem; font-weight: 700; letter-spacing: .5px; text-align: center; text-transform: uppercase; }
.botao-rota:hover, .locator-item .botao-rota:hover { background: var(--azul-medio); }
.locator-distance { grid-column: 1; margin: .3125rem 0 0; color: var(--localizador-subtitulo); font-size: .8125rem; text-align: left; }
.locator-map { position: relative; display: grid; min-height: 560px; place-items: center; overflow: hidden; background: linear-gradient(135deg, #dff2ed, #cae5f2); color: var(--azul-escuro); font-weight: 700; }
.google-map { width: 100%; height: 100%; min-height: 480px; }
/* Lista de sugestões de endereço do Google Places: o elemento é criado no fim do body, então só
   dá para ajustar a tipografia e a sobreposição por estas classes. */
.pac-container { z-index: 1200; border-radius: 0 0 8px 8px; box-shadow: 0 6px 18px rgb(0 0 0 / .18); font-family: inherit; }
.pac-item { padding: .375rem .75rem; font-size: .8125rem; line-height: 1.375rem; cursor: pointer; }
.pac-item:hover, .pac-item-selected { background: #eef6f8; }
.pac-item-query { font-size: .875rem; color: var(--localizador-titulo); }
.pac-icon { margin-top: .375rem; }
/* Diálogo do marcador, com o mesmo conteúdo do localizador de origem. */
.mapa-dialogo { min-width: 15rem; padding: .25rem .5rem .5rem; font-size: .8125rem; line-height: 1.375rem; }
.mapa-dialogo-foto { display: block; width: 100%; max-height: 120px; margin-bottom: .5rem; border-radius: 8px; object-fit: cover; }
.mapa-dialogo h2 { margin: 0 0 .5rem; font-size: 1.125rem; line-height: 1.5rem; font-weight: 700; }
.mapa-dialogo h2 a { color: var(--localizador-primario); }
.mapa-dialogo-cro { margin: 0 0 .375rem; color: var(--localizador-titulo); font-weight: 700; }
.mapa-dialogo-endereco { margin: 0 0 .375rem; color: var(--localizador-texto); }
.mapa-dialogo-distancia { margin: 0 0 .375rem; color: var(--localizador-subtitulo); font-size: .75rem; }
.mapa-dialogo-telefone { margin: 0 0 .75rem; }
.mapa-dialogo-telefone a { color: var(--localizador-primario); }
.mapa-dialogo-acoes { display: flex; gap: .5rem; margin: 0; }
.mapa-dialogo-acoes .botao-rota { width: auto; flex: 1 1 auto; }
.botao-ampliacao { flex: 1 1 auto; padding: 10px 12px; border: 1px solid var(--localizador-primario); border-radius: 4px; background: #fff; color: var(--localizador-primario); font: inherit; font-size: .75rem; font-weight: 700; letter-spacing: .5px; text-transform: uppercase; cursor: pointer; }
.botao-ampliacao:hover { background: var(--localizador-primario); color: #fff; }
/* Mapa do perfil: um único endereço, em altura fixa. */
.perfil-mapa { margin-bottom: 1.75rem; }
.perfil-mapa .google-map { height: 20rem; min-height: 0; border: 1px solid var(--linha); border-radius: 8px; }
.map-caption { position: absolute; inset: 14px auto auto 14px; font-size: .8125rem; }
.map-marker { position: absolute; display: grid; width: 30px; height: 30px; place-items: center; transform: translate(-50%, -50%); border: 2px solid #fff; border-radius: 50%; color: #fff; background: var(--azul-escuro); box-shadow: 0 2px 8px #0004; }
.map-marker:hover, .map-marker:focus { background: var(--azul-medio); transform: translate(-50%, -50%) scale(1.15); }

/* Perfil público do profissional */
.professional-page { padding-block: 3.5rem 6.125rem; }
.professional-header { display: flex; flex-wrap: wrap; align-items: center; gap: 1.75rem; margin-bottom: 2.1875rem; }
.professional-cro { color: var(--tinta-suave); font-size: .875rem; text-transform: uppercase; letter-spacing: .36px; }
/* Selo "Urgência 24h" — cor fixa no ícone (ver símbolo no _Layout), só o texto segue o azul do site. */
/* Imagem original da origem (uploads/2022/10/Flag_24hrs.png): já traz o texto embutido, largura
   máxima igual à da referência (100px), então não precisa de rótulo nem ícone à parte aqui. */
.badge-urgencia { display: block; max-width: 100px; height: auto; margin-top: .5rem; }
.professional-page section:not(:last-child) { margin-bottom: 2.1875rem; padding-bottom: 1.75rem; border-bottom: 1px solid var(--linha); }
.professional-page h2 { margin-bottom: .875rem; font-size: 1.25rem; text-transform: uppercase; letter-spacing: .36px; }
.professional-location { margin-bottom: .875rem; color: var(--tinta-suave); }
.professional-contact a { display: inline-flex; align-items: center; gap: .5rem; color: var(--azul-medio); font-weight: 600; }

/* Formulários simples (acesso, administração) */
.form-simples { display: grid; gap: .875rem; width: min(420px, 100%); margin-top: 1.75rem; }
.form-simples input { height: 50px; padding: 0 1.3125rem; border: 1px solid var(--linha); border-radius: 8px; font: inherit; }
.form-simples .botao-pesquisa { min-width: 0; }
.form-erro { color: #b3261e; font-size: .875rem; }
/* Confirmação do pedido de lembrança de senha e dica do tamanho mínimo, nas telas de acesso. */
.form-aviso { margin-top: 1.75rem; padding: .875rem 1.125rem; border-left: 4px solid var(--ciano-faixa); background: #eef8fb; border-radius: 6px; }
.form-dica { color: var(--tinta-suave); font-size: .8125rem; margin: 0; }

/* Tela de login: cartão centralizado em vez do formulário solto na página. */
.cartao-acesso { max-width: 420px; margin-inline: auto; padding: 2.75rem 2.5rem; border: 1px solid var(--linha); border-radius: 16px; background: #fff; box-shadow: 0 20px 45px -12px rgb(14 82 100 / .18); text-align: center; }
.cartao-acesso-icone { display: grid; width: 64px; height: 64px; margin: 0 auto 1.125rem; border-radius: 50%; background: var(--ciano-apoio); color: var(--azul-escuro); font-size: 1.75rem; place-items: center; }
.cartao-acesso-titulo { color: var(--azul-escuro); }
.cartao-acesso-subtitulo { margin: .5rem 0 0; color: var(--tinta-suave); font-size: .9375rem; }
.cartao-acesso .form-simples { width: 100%; margin-top: 1.75rem; text-align: left; }
.cartao-acesso .form-simples label { color: var(--tinta-suave); font-size: .8125rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }
.cartao-acesso .form-simples input:focus { border-color: var(--azul); outline: none; box-shadow: 0 0 0 3px rgb(45 145 175 / .18); }
.cartao-acesso .botao-pesquisa { width: 100%; margin-top: .375rem; }
.cartao-acesso .form-erro { margin: 0; padding: .75rem 1rem; border-left: 4px solid #b3261e; border-radius: 6px; background: #fdecea; font-weight: 600; }
.cartao-acesso-rodape { margin: 1.5rem 0 0; font-size: .875rem; }
.cartao-acesso-rodape a { color: var(--azul-medio); font-weight: 600; }
.cartao-acesso-rodape a:hover { text-decoration: underline; }
@media (max-width: 767px) {
    .cartao-acesso { padding: 2.125rem 1.5rem; border-radius: 12px; }
}

/* Rodapé */
.site-footer { background: var(--azul-escuro); color: #fff; }
.site-footer a { color: #fff; }
.footer-columns { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.75rem; padding: 6.125rem 0 4.375rem; }
.footer-columns .widget { margin: 0; padding: 0; border: 0; }
.footer-columns .widget-title { color: #fff; }
.footer-logo { width: 180px; margin-bottom: 1.3125rem; }
.footer-texto { line-height: 1.4em; }
.links-rodape { line-height: 2.5em; }
.links-rodape li::before { color: var(--amarelo); font-size: 1.4em; }
.links-rodape a:hover { color: var(--amarelo-tags); }
.link-site-morelli { display: inline-block; margin-left: .4em; opacity: .8; }
.link-site-morelli:hover { opacity: 1; }
.widget-title .link-site-morelli { vertical-align: middle; }
.site-footer .tag-cloud a { background: var(--amarelo-tags); color: #000; }
.footer-compact { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.3125rem; padding: 1.75rem 0; }
.menu-secundario { display: flex; flex-wrap: wrap; gap: 1.75rem; margin: 0; padding: 0; }
.menu-secundario li { list-style: none; }
.menu-secundario a { font-size: .875rem; font-weight: 600; letter-spacing: .35px; text-transform: uppercase; }
.menu-secundario a:hover { color: var(--amarelo); }
/* Rodapé do localizador na altura mínima: só o logotipo e os escritos, em uma linha. */
.rodape-compacto .footer-compact { padding: .25rem 0; gap: .5rem 1.3125rem; }
.rodape-compacto .copyright { gap: .5rem; font-size: .75rem; }
.rodape-compacto .copyright img { width: 56px; }
.rodape-compacto .redes-sociais { gap: .875rem; }
.rodape-compacto .redes-sociais a { font-size: 1rem; }
.rodape-compacto .menu-secundario { gap: .875rem; }
.rodape-compacto .menu-secundario a { font-size: .75rem; }
.footer-copyright { padding: 1.75rem 0; border-top: 1px solid rgb(255 255 255 / .2); }
.footer-copyright .container { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.3125rem; }
.copyright { display: flex; align-items: center; gap: .875rem; margin: 0; font-size: .875rem; }
.copyright img { width: 112px; }
.redes-sociais { display: flex; gap: 1.75rem; margin: 0; padding: 0; }
.redes-sociais li { list-style: none; }
.redes-sociais a { font-size: 1.25rem; }
.redes-sociais a:hover { color: var(--amarelo-traco); }

/* "Artigos mais acessados": home, blog e busca (Pages/Shared/_ArtigosMaisAcessados.cshtml) — não
   mais no rodapé do site inteiro, então o fundo do bloco é o da própria página, e não mais escuro. */
.secao-mais-acessados { padding: 2.125rem 0 2.75rem; }
.secao-mais-acessados .widget-title { margin-bottom: 1.3125rem; }
.mais-acessados-grade { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 1.3125rem; }
.mais-acessados-item { display: flex; flex-direction: column; gap: .625rem; }
.mais-acessados-thumb { display: block; aspect-ratio: 16 / 10; overflow: hidden; border-radius: 8px; background: var(--cinza-fundo, #f3f4f6); }
.mais-acessados-thumb img { width: 100%; height: 100%; object-fit: cover; }
.mais-acessados-titulo { font-size: .8125rem; font-weight: 600; line-height: 1.125rem; }
.mais-acessados-item:hover .mais-acessados-titulo { color: var(--amarelo-traco); }
@media (max-width: 991px) { .mais-acessados-grade { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 575px) { .mais-acessados-grade { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Inscrição no informativo, no diálogo aberto pelo rodapé e também na tela /newsletter. */
.newsletter-dialogo { width: min(28rem, calc(100vw - 2rem)); padding: 1.75rem; border: 0; border-radius: 12px; background: #fff; color: var(--tinta); box-shadow: 0 18px 48px rgb(0 0 0 / .3); }
.newsletter-dialogo::backdrop { background: rgb(0 0 0 / .55); }
.newsletter-dialogo h2 { margin: 0 0 .5rem; color: var(--azul-escuro); font-size: 1.375rem; }
.newsletter-fechar-forma { display: flex; justify-content: flex-end; margin: -1rem -1rem 0 0; }
.newsletter-fechar { width: 32px; height: 32px; border: 0; border-radius: 50%; background: transparent; color: var(--azul-escuro); font-size: 1.5rem; line-height: 1; cursor: pointer; }
.newsletter-fechar:hover { background: var(--ciano-cartao); }
.newsletter-form { display: flex; flex-direction: column; gap: .75rem; }
.newsletter-chamada { margin: 0; color: var(--localizador-texto); font-size: .9375rem; line-height: 1.375rem; }
.newsletter-form input[type="email"], .newsletter-form input[type="text"] { height: 46px; padding: 0 .875rem; border: 1px solid var(--linha); border-radius: 8px; font: inherit; }
.newsletter-aceite { display: flex; align-items: flex-start; gap: .5rem; font-size: .8125rem; line-height: 1.25rem; }
.newsletter-aceite input { margin-top: .1875rem; }
.newsletter-form button[type="submit"] { align-self: flex-start; }
.newsletter-recado { margin: 0; padding: .5rem .75rem; border-radius: 8px; background: #e8f6ee; color: #1c6b40; font-size: .8125rem; line-height: 1.25rem; }
.newsletter-recado-erro { background: #fdeaea; color: #a12222; }
.newsletter-recado[hidden] { display: none; }

/* Responsivo */
@media (max-width: 1199px) {
    .content-main, .content-side { flex: 0 0 100%; max-width: 100%; }
    .content-wrap.lateral-direita .content-side, .content-wrap.lateral-esquerda .content-side { padding-inline: .875rem; }
    .content-side { margin-top: 2.1875rem; padding-top: 2.1875rem; border-top: 1px solid var(--linha); }
    .content-side::before { display: none; }
    .content-wrap.lateral-esquerda .content-main { order: 1; }
    .content-wrap.lateral-esquerda .content-side { order: 2; }
    .explore-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .locator-main { grid-template-columns: minmax(0, 1fr); }
    .locator-panel { max-height: none; }
    /* Em uma coluna a tela volta a rolar: mapa e lista empilhados, sem altura travada. */
    /* is-stacked-on-mobile é a instrução da própria origem para empilhar no celular. */
    .entry-content .wp-block-media-text.is-stacked-on-mobile,
    .entry-content .wp-block-media-text { grid-template-columns: minmax(0, 1fr); }
    .entry-content .wp-block-columns { flex-direction: column; }
    .locator-largura-total .locator-main { height: auto; min-height: 0; grid-template-rows: auto auto; overflow: visible; }
    .locator-largura-total .locator-panel { max-height: none; overflow: visible; border-right: 0; }
    .locator-largura-total .locator-map { height: 60vh; }
    .locator-filters, .locator-filters:has(.filtro-maximo) { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 991px) {
    .entry-grid-featured, .entry-grid-small { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .entry-grid-featured .entry-destaque { grid-row: span 1; grid-column: span 2; }
    .footer-columns { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 767px) {
    h1 { font-size: 1.75rem; line-height: 2.1875rem; }
    .header-content { flex-wrap: wrap; gap: .875rem; min-height: 0; }
    .brand img { width: 95px; }
    .main-nav { gap: .875rem; }
    .main-nav > a { font-size: .8125rem; }
    .content-wrap { padding-block: 2.125rem; }
    .page-banner { padding: 2.125rem .875rem; }
    .hero-band { padding: 2.125rem 0; }
    .hero-band .hero-logo { width: 240px; margin-top: 1rem; }
    .hero-painel-link { top: .625rem; right: .625rem; padding: .25rem .625rem; font-size: .75rem; }
    .hero-search { flex-direction: column; }
    .hero-search .campo-pilula { flex: 0 0 auto; width: 100%; }
    .campo-tags { flex: 0 0 auto; width: 100%; }
    .botao-pesquisa { width: 100%; }
    /* Os quatro botões de área de cuidado em duas linhas de dois. Um por linha empurrava o resto da
       home para baixo demais. Para caberem, o ícone passa a ter medida fixa pequena — a de 20% da
       largura do cartão comia metade dele — e o rótulo pode quebrar em mais de uma linha. */
    .explore-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .625rem; }
    .explore-card { gap: .5rem; min-height: 0; padding: .5rem; border-radius: 12px; }
    .explore-card img { flex: 0 0 auto; width: 38px; height: auto; margin-left: .125rem; }
    .explore-card span { padding-right: 0; font-size: .875rem; line-height: 1.125rem; }
    .entry-grid-featured, .entry-grid-small { grid-template-columns: minmax(0, 1fr); }
    .entry-grid-featured .entry-destaque { grid-column: span 1; }
    .entry-grid-small .entry-body { padding: 0; }
    .home-entries { padding-bottom: 2.125rem; }
    .cta-band { background-size: cover; }
    .cta-band a { height: 160px; }
    .locator-filters .filtros-avancados { grid-template-columns: minmax(0, 1fr); }
    .locator-item { grid-template-columns: minmax(0, 1fr); }
    .locator-aside { justify-items: start; }
    .locator-distance { text-align: left; }
    .footer-columns { grid-template-columns: minmax(0, 1fr); padding: 2.125rem 0; }
    .footer-copyright .container { flex-direction: row-reverse; }
    .copyright { font-size: .625rem; }
}

/* Localizador no celular: tela travada na altura da janela, com o mapa fixo na metade de cima e a
   lista rolando na de baixo. Nada disso vale nas outras telas, onde mapa e lista ficam lado a lado.
   O gancho é :has() em vez de uma classe no body porque só esta tela precisa mexer no envelope da
   página, e o layout é o mesmo de todas as outras. */
@media (max-width: 767px) {
    body:has(.locator-largura-total) { display: flex; flex-direction: column; height: 100dvh; overflow: hidden; }
    body:has(.locator-largura-total) > #conteudo { display: flex; flex: 1 1 auto; min-height: 0; }
    body:has(.locator-largura-total) .locator-largura-total { position: relative; display: flex; flex: 1 1 auto; flex-direction: column; min-height: 0; }

    /* Cabeçalho reduzido: aqui ele é só a saída da tela, e cada pixel dele sai do mapa. */
    body:has(.locator-largura-total) .header-content { min-height: 0; gap: .5rem; padding-block: .375rem; }
    body:has(.locator-largura-total) .brand img { width: 74px; }
    body:has(.locator-largura-total) .main-nav { gap: .5rem; }
    body:has(.locator-largura-total) .main-nav > a { font-size: .6875rem; }
    body:has(.locator-largura-total) .nav-destaque { padding: .375rem .625rem; }

    /* Rodapé no mínimo: o menu secundário repete o cabeçalho e sai. */
    body:has(.locator-largura-total) .rodape-compacto .footer-compact { flex-wrap: nowrap; gap: .625rem; padding: .1875rem 0; }
    body:has(.locator-largura-total) .rodape-compacto .menu-secundario { display: none; }
    body:has(.locator-largura-total) .rodape-compacto .copyright { min-width: 0; font-size: .5625rem; line-height: 1rem; }
    body:has(.locator-largura-total) .rodape-compacto .copyright img { width: 48px; }
    body:has(.locator-largura-total) .rodape-compacto .copyright span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    body:has(.locator-largura-total) .rodape-compacto .redes-sociais { flex: 0 0 auto; gap: .625rem; }

    /* Filtros recolhidos: a barra é o que fica no cabeçalho, ao lado do logotipo, e o painel abre
       por cima do mapa em vez de empurrá-lo, para o enquadramento não mudar de tamanho a cada
       abertura. O seletor precisa do mesmo prefixo body:has(...) da regra de tela grande (linha
       ~342): sem ele, a especificidade menor perdia para "display: flex" e os filtros apareciam
       soltos por cima do mapa em vez de ficarem escondidos atrás do botão. */
    body:has(.locator-largura-total) .locator-filtros-area { position: relative; z-index: 6; flex: 1 1 auto; min-width: 0; }
    body:has(.locator-largura-total) .locator-barra-filtros { display: flex; padding: 0; background: transparent; }
    body:has(.locator-largura-total) .locator-filtros-toggle { display: flex; flex: 1 1 auto; align-items: center; gap: .5rem; padding: .5rem .75rem; border: 0; border-radius: 6px; background: #fff; color: var(--localizador-titulo); font: inherit; font-size: .8125rem; font-weight: 600; text-align: left; cursor: pointer; }
    body:has(.locator-largura-total) .locator-filtros-toggle .icone { width: 16px; height: 16px; color: var(--localizador-primario); }
    body:has(.locator-largura-total) .locator-filtros-toggle > span:first-of-type { flex: 1 1 auto; }
    body:has(.locator-largura-total) .locator-filtros-conta { display: grid; place-items: center; min-width: 20px; height: 20px; padding: 0 .25rem; border-radius: 10px; background: var(--localizador-primario); color: #fff; font-size: .6875rem; }
    body:has(.locator-largura-total) .locator-filters { display: none; position: absolute; top: 100%; right: 0; left: 0; max-height: calc(100dvh - 8rem); padding: .625rem .75rem .75rem; overflow-y: auto; background: var(--ciano-faixa); box-shadow: 0 10px 24px rgb(0 0 0 / .28); }
    body:has(.locator-largura-total) .locator-filters.aberto { display: grid; }

    /* Mapa fixo em cima, lista rolando embaixo, em metades iguais. */
    .locator-largura-total .locator-main { height: auto; min-height: 0; overflow: hidden; grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, 1fr) minmax(0, 1fr); flex: 1 1 auto; }
    .locator-largura-total .locator-map { grid-row: 1; height: auto; min-height: 0; }
    .locator-largura-total .locator-panel { grid-row: 2; max-height: 100%; overflow: hidden; border-top: 1px solid var(--linha); border-right: 0; }

    /* Lista resumida: nome, endereço e telefone. Especialidades e convênios saem porque repetem o que
       o filtro já disse, e o WhatsApp escrito repete o botão redondo ao lado. */
    .locator-count { padding: .4375rem .875rem; font-size: .8125rem; }
    .locator-aviso { padding: .4375rem .875rem; font-size: .6875rem; line-height: 1rem; }
    .locator-item { gap: .375rem; padding: .625rem .875rem; }
    .locator-item h3 { margin-bottom: .1875rem; font-size: .9375rem; line-height: 1.25rem; }
    .locator-item li { margin-bottom: .125rem; font-size: .75rem; line-height: 1.125rem; }
    .locator-dado-taxonomia, .locator-dado-whatsapp, .locator-cro { display: none; }
    .locator-distance { margin-top: 0; font-size: .6875rem; }
    .locator-aside { display: flex; align-items: center; gap: .5rem; }
    .locator-aside .avatar { display: none; }
    /* O :hover entra junto porque as regras de origem dos dois botões também o declaram, com as
       medidas grandes: sem ele o botão mudaria de tamanho ao ser tocado. */
    .locator-item .botao-rota, .locator-item .botao-rota:hover { width: auto; padding: .375rem .625rem; font-size: .625rem; }
    .locator-item .botao-social, .locator-item .botao-social:hover { width: 30px; height: 30px; font-size: 1rem; }
}

/* Página 404 */
.pagina-404 { padding: 5.25rem 0; background: linear-gradient(180deg, #f7fdff 0%, #fff 60%); text-align: center; }
.pagina-404-conteudo { display: flex; flex-direction: column; align-items: center; max-width: 32rem; }
.pagina-404-dente { width: 170px; height: 170px; margin-bottom: -1.75rem; }
.pagina-404-numero { margin: 0; color: var(--azul-medio); font-size: 5.5rem; font-weight: 800; letter-spacing: 4px; line-height: 1; }
.pagina-404-titulo { margin-bottom: .875rem; }
.pagina-404-texto { color: var(--tinta-suave); }
.pagina-404-acoes { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 1.3125rem; margin-top: .875rem; }
.pagina-404-secundario { display: inline-flex; align-items: center; gap: .5rem; color: var(--azul-medio); font-weight: 700; border-bottom: 1px solid currentColor; }
.pagina-404-secundario:hover { color: var(--azul-escuro); }
@media (max-width: 767px) {
    .pagina-404 { padding: 3.5rem 0; }
    .pagina-404-numero { font-size: 3.75rem; }
}
