/* Red Hot Guide: folha de estilos do guia público.
   Direção de marca decidida a 2026-10-03 (DESIGN.md) e os mockups do Filipe em
   design/mockups: guia com ar de app, fundo claro, fotografia primeiro, tudo
   redondo, vermelho só onde se carrega, petróleo nos selos de verificação.
   Fraunces (romano nos títulos, itálico nos nomes); Albert Sans para o resto. */

/* ---- fontes (auto-alojadas, OFL) ------------------------------------- */
@font-face { font-family: "Fraunces"; font-style: normal; font-weight: 100 900; font-display: swap; src: url("../fonts/fraunces-latin.woff2") format("woff2"); }
@font-face { font-family: "Fraunces"; font-style: italic; font-weight: 100 900; font-display: swap; src: url("../fonts/fraunces-italic-latin.woff2") format("woff2"); }
@font-face { font-family: "Albert Sans"; font-style: normal; font-weight: 300 900; font-display: swap; src: url("../fonts/albert-sans-latin.woff2") format("woff2"); }
@font-face { font-family: "Albert Sans"; font-style: italic; font-weight: 300 900; font-display: swap; src: url("../fonts/albert-sans-italic-latin.woff2") format("woff2"); }

/* ---- tokens ----------------------------------------------------------- */
:root {
  --vermelho: #CB1C29; --vermelho-escuro: #9E131E;
  --vermelho-10: rgba(203, 28, 41, .10); --vermelho-luz: rgba(203, 28, 41, .35);
  --papel: #F3EEE6; --branco: #FFFFFF; --cinza: #F6F3EE; --cinza-2: #E9E3DA; --taupe: #9A8B78;
  --tinta: #201E1F; --tinta-2: #6B615E; --tinta-3: #6E6560;
  --noite: #161C24; --noite-texto: #E9E2D8;
  --petroleo: #1F4F57; --luz: rgba(232, 160, 74, .18);
  --aviso: #85590F; --aviso-fundo: #FFF3D9;
  --r-s: 16px; --r-m: 24px; --r-l: 32px; --pill: 999px;
  --sombra: 0 18px 40px -20px rgba(32, 30, 31, .35);
  --sombra-leve: 0 10px 30px -22px rgba(32, 30, 31, .35);
  --serif: "Fraunces", Georgia, serif;
  --sans: "Albert Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --suave: cubic-bezier(.2, .7, .2, 1);
  --largura: 1240px;
}

/* ---- base ------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body { margin: 0; background: var(--papel); color: var(--tinta); font: 16px/1.55 var(--sans); padding-bottom: 100px; }
@media (min-width: 720px) { body { padding-bottom: 0; font-size: 17px; } }
a { color: var(--petroleo); text-decoration-thickness: 1px; text-underline-offset: 3px; }
img { max-width: 100%; display: block; }
p { margin: 0 0 1em; max-width: 64ch; }
h1, h2, h3 { font-family: var(--serif); font-weight: 400; line-height: 1.05; letter-spacing: -.01em; margin: 0 0 .35em; font-variation-settings: "opsz" 72, "SOFT" 80, "WONK" 0; }
h1 { font-size: clamp(28px, 4vw, 40px); }
h2 { font-size: clamp(21px, 2.6vw, 26px); font-variation-settings: "opsz" 36, "SOFT" 80, "WONK" 0; }
h3 { font-size: 19px; font-variation-settings: "opsz" 24, "SOFT" 80, "WONK" 0; }
.nome { font-family: var(--serif); font-style: italic; font-weight: 400; font-variation-settings: "opsz" 36, "SOFT" 100, "WONK" 1; letter-spacing: -.01em; }
.sub { color: var(--tinta-2); margin: -.2em 0 1.2em; font-size: 15px; }
small { color: var(--tinta-2); }
.wrap { max-width: var(--largura); margin: 0 auto; padding: 0 16px; }
@media (min-width: 720px) { .wrap { padding: 0 28px; } }
.ico { width: 20px; height: 20px; display: inline-block; vertical-align: middle; flex: none; }
.etiqueta { font-size: 11.5px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--tinta-3); }
:focus-visible { outline: 2px solid var(--vermelho); outline-offset: 3px; border-radius: 4px; }
.ponto { color: var(--vermelho); }

.saltar { position: absolute; left: 16px; top: -60px; z-index: 60; padding: 10px 16px; background: var(--noite); color: #fff; border-radius: var(--pill); font-weight: 600; text-decoration: none; }
.saltar:focus { top: 12px; }
.previsualizacao { margin: 8px auto 0; padding: 8px 16px; background: var(--aviso-fundo); font-size: 13.5px; border-radius: var(--pill); max-width: var(--largura); position: relative; z-index: 25; }
.previsualizacao a { color: inherit; }

/* ---- botões ----------------------------------------------------------- */
.botao { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 50px; padding: 0 24px; border: 0; border-radius: var(--pill); background: var(--vermelho); color: #fff; font: 600 15px/1 var(--sans); text-decoration: none; cursor: pointer; box-shadow: 0 14px 28px -14px var(--vermelho-luz); transition: background .4s var(--suave), transform .4s var(--suave); }
.botao:hover { background: var(--vermelho-escuro); color: #fff; transform: translateY(-1px); }
.botao--contorno { background: transparent; color: var(--vermelho); box-shadow: inset 0 0 0 1.5px var(--vermelho); }
.botao--contorno:hover { background: var(--vermelho-10); color: var(--vermelho-escuro); }
.botao--branco { background: var(--branco); color: var(--tinta); box-shadow: var(--sombra-leve); }
.botao--branco:hover { background: var(--branco); color: var(--vermelho); }
.botao--redondo { width: 50px; padding: 0; flex: none; }
.botao--largo { width: 100%; }
.ligacao { font-weight: 600; color: var(--vermelho); text-decoration: none; display: inline-flex; align-items: center; gap: 4px; }
.ligacao .ico { width: 16px; height: 16px; }
.ligacao:hover { color: var(--vermelho-escuro); text-decoration: underline; }

/* ---- cabeçalho -------------------------------------------------------- */
.topo { position: sticky; top: 0; z-index: 20; background: rgba(243, 238, 230, .9); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
.topo .wrap { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 12px; height: 66px; }
.topo__marca { grid-column: 2; display: flex; align-items: center; text-decoration: none; }
.topo__logo { height: 30px; width: auto; }
.topo__logo--escuro { display: none; }
.topo__nav { display: none; }
.topo .pesquisa { display: none; }
.topo__lupa { display: none; }
.linguas { grid-column: 3; justify-self: end; display: flex; gap: 2px; font-size: 11px; letter-spacing: .08em; font-weight: 500; }
.linguas a, .linguas span { padding: 10px 10px; min-height: 40px; display: inline-flex; align-items: center; border-radius: var(--pill); text-decoration: none; color: var(--tinta-3); }
.linguas span { color: var(--tinta); font-weight: 700; text-decoration: underline; text-underline-offset: 4px; text-decoration-color: var(--vermelho); text-decoration-thickness: 2px; }
@media (min-width: 720px) {
  .topo .wrap { display: flex; height: 80px; }
  .topo__marca { flex: none; }
  .topo__logo { height: 38px; }
  .topo__nav { display: flex; align-items: center; gap: 2px; margin-left: 8px; }
  .topo__nav a { display: inline-flex; align-items: center; min-height: 40px; white-space: nowrap; font-size: 14px; font-weight: 500; color: var(--tinta); text-decoration: none; padding: 0 14px; border-radius: var(--pill); transition: background .4s var(--suave); }
  .topo__nav a:hover, .topo__nav a.on { background: var(--branco); }
  .topo .pesquisa { display: flex; max-width: 400px; margin-left: auto; }
  body.inicio .topo .pesquisa { display: none; }
  .linguas { margin-left: 0; }
  body.inicio .linguas, body.local .linguas { margin-left: auto; }
}
/* no início e na ficha o cabeçalho flutua sobre a fotografia */
/* entre 720 e 1180 px o logótipo, os separadores, a pesquisa e as línguas não cabem numa linha:
   a pesquisa passa à lupa (vai para a página de pesquisa) e, abaixo de 900 px, sai o «Guia» (está no rodapé) */
@media (min-width: 720px) and (max-width: 1179px) {
  .topo .pesquisa { display: none !important; }
  .topo__lupa { display: inline-flex; align-items: center; justify-content: center; width: 42px; height: 42px; margin-left: auto; border-radius: 50%; background: var(--branco); color: var(--tinta); box-shadow: var(--sombra-leve); flex: none; transition: background .4s var(--suave), color .4s var(--suave); }
  .topo__lupa:hover { background: var(--vermelho); color: #fff; }
  .topo__lupa .ico { width: 18px; height: 18px; }
  body.inicio .topo__lupa { background: rgba(255, 255, 255, .14); color: #fff; box-shadow: none; }
  .linguas, body.inicio .linguas, body.local .linguas { margin-left: 4px; }
}
@media (min-width: 720px) and (max-width: 899px) {
  .topo__logo { height: 30px; }
  .topo__nav a.topo__guia { display: none; }
  .topo__nav a { padding: 0 11px; }
}
html { scroll-padding-top: 82px; }
@media (min-width: 720px) { html { scroll-padding-top: 96px; } }

/* sobre a fotografia o cabeçalho é uma barra de vidro escuro: a imagem vê-se, desfocada, e o logótipo lê-se sempre */
body.inicio .topo, body.local .topo { position: absolute; left: 0; right: 0; top: 0; background: rgba(22, 28, 36, .42); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
body.inicio .topo__logo--claro, body.local .topo__logo--claro { display: none; }
body.inicio .topo__logo--escuro, body.local .topo__logo--escuro { display: block; }
body.inicio .topo__nav a, body.local .topo__nav a { color: rgba(255, 255, 255, .9); }
body.inicio .topo__nav a:hover, body.local .topo__nav a:hover { background: rgba(255, 255, 255, .12); }
body.inicio .linguas a, body.local .linguas a { color: rgba(255, 255, 255, .7); }
body.inicio .linguas span, body.local .linguas span { color: #fff; }
body.local .topo .pesquisa { display: none; }

/* a pesquisa em cápsula */
.pesquisa { display: flex; align-items: center; flex: 1 1 200px; min-width: 0; height: 46px; background: var(--branco); border-radius: var(--pill); padding: 0 5px 0 18px; box-shadow: var(--sombra-leve); }
.pesquisa input { flex: 1; min-width: 0; border: 0; background: transparent; font: inherit; font-size: 15px; color: var(--tinta); }
.pesquisa input::placeholder { color: var(--tinta-3); }
.pesquisa input:focus { outline: 0; }
.pesquisa button { width: 36px; height: 36px; border: 0; border-radius: 50%; background: var(--vermelho); color: #fff; display: flex; align-items: center; justify-content: center; cursor: pointer; flex: none; transition: background .4s var(--suave); }
.pesquisa button:hover { background: var(--vermelho-escuro); }
.pesquisa button .ico { width: 18px; height: 18px; }

/* ---- início: fotografia, folha, procura -------------------------------- */
.faixa { position: relative; margin: 0 -16px; min-height: 440px; background: var(--noite); color: #fff; overflow: hidden; display: flex; flex-direction: column; justify-content: flex-end; }
.faixa::before { content: ""; position: absolute; inset: -30% -10% auto -10%; height: 130%; background: radial-gradient(55% 60% at 22% 25%, var(--luz), transparent 70%); pointer-events: none; }
.faixa__foto { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 28%; }
.faixa__veu { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(22, 28, 36, .55), rgba(22, 28, 36, .05) 35%, rgba(22, 28, 36, .2) 65%, rgba(22, 28, 36, .85)); }
.faixa__texto { position: relative; padding: 0 16px 0; }
.faixa h1 { color: #fff; font-size: clamp(30px, 7vw, 44px); line-height: 1.05; margin: 0 0 52px; max-width: 14ch; font-variation-settings: "opsz" 144, "SOFT" 60, "WONK" 0; letter-spacing: -.02em; }
.faixa__sub { display: none; color: rgba(233, 226, 216, .85); font-size: 16px; max-width: 46ch; margin: 0; }
.folha-inicio { position: relative; margin: -36px -16px 0; padding: 12px 16px 18px; background: var(--papel); border-radius: var(--r-l) var(--r-l) 0 0; }
.pega { width: 40px; height: 4px; border-radius: 2px; background: var(--cinza-2); margin: 0 auto 18px; }
.ola { display: none; font-family: var(--serif); font-size: clamp(40px, 11vw, 52px); line-height: 1; margin: 0 0 16px; font-variation-settings: "opsz" 72, "SOFT" 80, "WONK" 0; letter-spacing: -.02em; color: var(--tinta); }
.procura { display: flex; gap: 10px; align-items: center; }
.procura .campo { display: flex; align-items: center; gap: 10px; flex: 1 1 0; min-width: 0; height: 52px; padding: 0 8px 0 18px; border-radius: var(--pill); background: var(--cinza-2); color: var(--tinta-3); }
.procura .campo .ico { color: var(--tinta-2); }
.procura .campo input { flex: 1; min-width: 0; border: 0; background: transparent; font: inherit; font-size: 16px; color: var(--tinta); }
.procura .campo input::placeholder { color: var(--tinta-3); }
.procura .campo input:focus { outline: 0; }
.procura .campo--onde { display: none; }
.procura .botao { height: 52px; }
.procura .botao span { display: none; }
.procura .botao .ico { width: 20px; height: 20px; }
@media (max-width: 719px) { .procura .campo { padding-right: 0; } .procura .botao { width: 52px; padding: 0; } }
@media (min-width: 720px) {
  .faixa { margin: 0 -28px 0; min-height: 440px; justify-content: center; border-radius: 0 0 var(--r-l) var(--r-l); }
  .faixa__texto { padding: 110px 48px 52px; max-width: 1240px; width: 100%; margin: 0 auto; }
  .faixa h1 { font-size: clamp(40px, 4.5vw, 60px); max-width: 14ch; }
  .faixa h1 { margin-bottom: 10px; }
  .faixa__sub { display: block; font-size: 17px; margin-bottom: 24px; }
  .folha-inicio { position: relative; margin: 0; padding: 0; background: transparent; border-radius: 0; }
  .pega, .ola { display: none; }
  .procura { background: var(--branco); border-radius: var(--r-m); padding: 12px; box-shadow: 0 24px 60px -24px rgba(0, 0, 0, .6); max-width: 880px; }
  .procura .campo--onde { display: flex; }
  .procura .botao { padding: 0 28px; }
  .procura .botao span { display: inline; }
  .procura .botao .ico { display: none; }
}
@media (min-width: 1300px) { .faixa { margin: 0 calc(50% - 50vw); border-radius: 0; } .faixa__texto { padding-left: 28px; padding-right: 28px; } }

.ilustrativa { position: absolute; right: 10px; bottom: 10px; z-index: 2; font-size: 10px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: rgba(255, 255, 255, .8); background: rgba(22, 28, 36, .5); padding: 4px 9px; border-radius: var(--pill); pointer-events: none; }
.porta__foto { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .6; }

/* ---- secções ---------------------------------------------------------- */
.seccao { padding: 26px 0 6px; }
.seccao__cab { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; margin-bottom: 14px; flex-wrap: wrap; }
.seccao__cab h2 { margin: 0; }
.seccao__cab .ligacao { font-size: 14.5px; white-space: nowrap; }
.migalhas { font-size: 13px; color: var(--tinta-2); margin: 16px 0 14px; }
.migalhas a { color: var(--tinta-2); text-decoration: none; }
.migalhas a:hover { color: var(--vermelho); }
.cabeca { margin-bottom: 6px; }
.cabeca h1 { display: inline; margin-right: 12px; }
.cabeca .sub { display: inline; }

/* alternar (Lisboa | Porto; Mapa | Lista) */
.alternar { display: inline-flex; gap: 2px; padding: 3px; background: var(--branco); border-radius: var(--pill); box-shadow: var(--sombra-leve); }
.alternar a { display: inline-flex; align-items: center; gap: 6px; padding: 8px 16px; border-radius: var(--pill); color: var(--tinta); text-decoration: none; font-size: 14px; font-weight: 600; transition: background .4s var(--suave), color .4s var(--suave); }
.alternar a .ico { width: 17px; height: 17px; }
.alternar a.on { background: var(--vermelho); color: #fff; }
.alternar--ligacoes a { color: var(--tinta); }
.alternar--ligacoes a:hover { background: var(--vermelho-10); color: var(--vermelho); }
.alternar a:not(.on):hover { background: var(--cinza); }

/* categorias em círculos */
.circulos { display: flex; gap: 6px; overflow-x: auto; scroll-snap-type: x proximity; margin: 0 -16px; padding: 6px 16px 14px; scrollbar-width: none; }
.circulos::-webkit-scrollbar { display: none; }
.circulo { flex: none; width: 76px; min-width: 0; scroll-snap-align: start; text-align: center; text-decoration: none; color: var(--tinta); font-size: 12px; font-weight: 500; line-height: 1.2; }
.circulo i { display: flex; align-items: center; justify-content: center; width: 60px; height: 60px; border-radius: 50%; margin: 0 auto 9px; color: #fff; background: var(--noite); box-shadow: 0 0 0 3px var(--branco), 0 12px 24px -16px rgba(32, 30, 31, .6); transition: transform .4s var(--suave), box-shadow .4s var(--suave), background .4s var(--suave); }
.circulo i .ico { width: 30px; height: 30px; stroke-width: 1.5; }
.circulo--mais i { background: var(--cinza-2) !important; color: var(--tinta-2) !important; }
.circulo:hover i, .circulo:focus-visible i { transform: translateY(-3px); background: var(--vermelho); box-shadow: 0 0 0 3px var(--branco), 0 16px 28px -14px var(--vermelho-luz); }
.circulo small { display: block; color: var(--tinta-3); font-size: 11.5px; font-weight: 400; margin-top: 2px; }
@media (min-width: 720px) { .circulos { flex-wrap: wrap; overflow: visible; margin: 0; padding: 6px 0 12px; gap: 18px 10px; } .circulo { width: 82px; } .circulo i { width: 72px; height: 72px; } .circulo i .ico { width: 36px; height: 36px; } }
/* a partir de 1150 os doze cabem numa fila; a partir de 1280 crescem para 80 */
@media (min-width: 1280px) { .circulo { width: 88px; } .circulo i { width: 80px; height: 80px; } .circulo i .ico { width: 40px; height: 40px; } }

/* filtros em cápsula */
.filtros { display: flex; gap: 8px; overflow-x: auto; padding: 2px 16px 10px; margin: 0 -16px 10px; scrollbar-width: none; align-items: center; }
.filtros::-webkit-scrollbar { display: none; }
.filtros a { flex: none; display: inline-flex; align-items: center; gap: 7px; padding: 10px 16px; border-radius: var(--pill); background: var(--branco); color: var(--tinta); font-size: 14px; font-weight: 500; text-decoration: none; box-shadow: var(--sombra-leve); transition: background .4s var(--suave), color .4s var(--suave); }
.filtros a .ico { width: 17px; height: 17px; }
.ico--cat { stroke-width: 1.6; }
.filtros a .ico--cat { stroke-width: 1.9; }
.filtros a small { color: var(--tinta-3); font-size: 12px; }
.filtros a:hover, .filtros a.on { background: var(--tinta); color: var(--papel); }
.filtros a.on small, .filtros a:hover small { color: rgba(243, 238, 230, .7); }
.filtros .alternar { flex: none; }
.filtros .alternar a { box-shadow: none; padding: 8px 14px; }
.filtros .alternar a:hover { background: var(--cinza); color: var(--tinta); }
.filtros .alternar a.on, .filtros .alternar a.on:hover { background: var(--vermelho); color: #fff; }
@media (min-width: 720px) { .filtros { flex-wrap: wrap; overflow: visible; margin: 0 0 10px; padding: 2px 0 10px; } }

/* ---- cartões de local (grelha) ----------------------------------------- */
.cartoes { list-style: none; margin: 0 0 12px; padding: 0; display: grid; grid-template-columns: 1fr; gap: 14px; }
@media (min-width: 600px) { .cartoes { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .cartoes { grid-template-columns: repeat(3, 1fr); gap: 18px; } }
@media (min-width: 1240px) { .cartoes--4 { grid-template-columns: repeat(4, 1fr); } }
.cartao { position: relative; display: block; background: var(--branco); border-radius: var(--r-m); overflow: hidden; box-shadow: var(--sombra); color: inherit; text-decoration: none; transition: transform .45s var(--suave), box-shadow .45s var(--suave); }
.cartao:hover { transform: translateY(-3px); box-shadow: 0 26px 50px -24px rgba(32, 30, 31, .45); }
.cartao__foto { position: relative; aspect-ratio: 4 / 3; background: var(--noite); overflow: hidden; }
.cartao__foto img { width: 100%; height: 100%; object-fit: cover; }
.cartao__foto--vazia { display: flex; align-items: center; justify-content: center; color: rgba(233, 226, 216, .55); background-image: radial-gradient(70% 90% at 80% 110%, var(--luz), transparent 70%); }
.cartao__foto--vazia .ico { width: 38px; height: 38px; stroke-width: 1.3; }
.cartao__tag { position: absolute; top: 12px; left: 12px; background: var(--vermelho); color: #fff; font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; padding: 6px 11px; border-radius: var(--pill); }
.cartao__txt { padding: 12px 16px 14px; }
.cartao__cat { font-size: 11.5px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--tinta-3); margin-bottom: 3px; }
.cartao__nome { font-size: 20px; line-height: 1.1; margin: 0 0 6px; color: var(--tinta); }
.cartao__resumo { font-size: 14.5px; color: var(--tinta-2); margin: 0 0 8px; max-width: none; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.cartao__meta { display: flex; align-items: center; gap: 6px; font-size: 13.5px; color: var(--tinta-2); margin: 0; }
.cartao__meta .ico { width: 16px; height: 16px; color: var(--tinta); }

/* ---- filas (lista da cidade, ao lado do mapa) -------------------------- */
.filas { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.fila { position: relative; display: grid; grid-template-columns: 38% 1fr; gap: 14px; padding: 10px; background: var(--branco); border-radius: 20px; box-shadow: var(--sombra-leve); transition: box-shadow .4s var(--suave), transform .4s var(--suave); }
.fila:hover { box-shadow: var(--sombra); }
.fila.on { box-shadow: var(--sombra), 0 0 0 2px var(--vermelho); }
.fila__foto { position: relative; aspect-ratio: 4 / 3; border-radius: 14px; overflow: hidden; background: var(--noite); }
.fila__foto img { width: 100%; height: 100%; object-fit: cover; }
.fila__foto--vazia { display: flex; align-items: center; justify-content: center; color: rgba(233, 226, 216, .55); background-image: radial-gradient(70% 90% at 80% 110%, var(--luz), transparent 70%); }
.fila__foto--vazia .ico { width: 30px; height: 30px; stroke-width: 1.4; }
.fila__tag { position: absolute; top: 8px; left: 8px; background: var(--vermelho); color: #fff; font-size: 10.5px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; padding: 5px 9px; border-radius: var(--pill); }
.fila__txt { display: flex; flex-direction: column; justify-content: center; min-width: 0; padding: 4px 6px 4px 0; }
@media (min-width: 720px) { .fila__txt { padding-right: 36px; } }
.fila__cat { font-size: 11px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--tinta-3); margin: 0 0 2px; }
h3.fila__nome { font-size: 20px; line-height: 1.05; margin: 0 0 8px; }
a.fila__nome { color: var(--tinta); text-decoration: none; }
a.fila__nome::after { content: ""; position: absolute; inset: 0; border-radius: 20px; }
.fila__linha { display: flex; align-items: center; gap: 8px; font-size: 13.5px; color: var(--tinta-2); padding: 5px 0; margin: 0; max-width: none; }
.fila__linha + .fila__linha { border-top: 1px solid var(--cinza-2); }
.fila__linha .ico { width: 18px; height: 18px; color: var(--tinta-3); }
.fila__linha--ok .ico { color: var(--petroleo); }
.fila__linha--ok { color: var(--tinta); font-weight: 500; }
.fila__seta { display: none; position: absolute; right: 14px; top: 50%; transform: translateY(-50%); color: var(--tinta-3); }
@media (min-width: 720px) { .fila__seta { display: block; } }
.fila__mapa { position: relative; z-index: 2; margin-top: 6px; font-size: 13px; }
.fila__foto .ilustrativa { display: none; }
@media (min-width: 720px) { .fila__foto .ilustrativa { display: block; right: 8px; bottom: 8px; } }
@media (max-width: 359px) { .fila { grid-template-columns: 1fr; } .fila__foto { aspect-ratio: 16 / 9; } .fila__seta { display: none; } }

/* cidade: lista + mapa */
.cidade-pagina { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; align-items: start; }
.mapa-envolve { display: none; position: relative; }
.mapa-caixa { height: 62vh; min-height: 380px; border-radius: var(--r-m); overflow: hidden; background: var(--cinza-2); box-shadow: var(--sombra); }
body.ver-mapa .mapa-envolve { display: block; }
body.ver-mapa .filas { display: none; }
@media (min-width: 1024px) {
  .cidade-pagina { grid-template-columns: minmax(0, 1fr) minmax(380px, 46%); gap: 24px; }
  .mapa-envolve, body.ver-mapa .mapa-envolve { display: block; position: sticky; top: 88px; }
  .mapa-caixa { height: calc(100vh - 110px); min-height: 480px; }
  body.ver-mapa .filas { display: grid; }
  .filtros .alternar { display: none; }
}
.pin-mapa { background: transparent; border: 0; width: 32px; height: 44px; --pin-fundo: var(--vermelho); --pin-anel: #fff; filter: drop-shadow(0 6px 10px rgba(0, 0, 0, .35)); transition: transform .3s var(--suave); }
.pin-mapa:hover { transform: translateY(-2px); }
.pin-mapa svg { position: absolute; left: 0; top: 0; width: 32px; height: 44px; }
.pin-mapa .pin-mapa__glifo { left: 7px; top: 7px; width: 18px; height: 18px; color: #fff; stroke-width: 2; }
.pin-mapa--destaque { --pin-fundo: var(--tinta); }
/* pins agrupados: um círculo de noite com a contagem em Fraunces; vermelho se lá dentro houver um destaque */
.pin-grupo { width: 40px; height: 40px; border-radius: 50%; background: var(--noite); color: #fff; display: flex; align-items: center; justify-content: center; box-shadow: 0 0 0 3px #fff, 0 10px 20px -10px rgba(0, 0, 0, .55); cursor: pointer; transition: transform .3s var(--suave); }
.pin-grupo:hover { transform: scale(1.06); }
.pin-grupo b { font: 400 17px/1 var(--serif); font-variation-settings: "opsz" 72, "SOFT" 80, "WONK" 0; }
.pin-grupo--destaque { background: var(--vermelho); }
/* filtro por categoria sobre o mapa */
.mapa-filtros { position: absolute; left: 12px; right: 56px; top: 12px; z-index: 900; display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; padding-bottom: 4px; }
.mapa-filtros::-webkit-scrollbar { display: none; }
.mapa-filtros button { flex: none; display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 12px; border: 0; border-radius: var(--pill); background: rgba(255, 255, 255, .94); color: var(--tinta); font: 500 13px var(--sans); cursor: pointer; box-shadow: 0 6px 16px -10px rgba(0, 0, 0, .5); }
.mapa-filtros button .ico { width: 15px; height: 15px; stroke-width: 1.9; }
.mapa-filtros button small { color: var(--tinta-3); font-size: 11.5px; }
.mapa-filtros button.on { background: var(--tinta); color: var(--papel); }
.mapa-filtros button.on small { color: rgba(243, 238, 230, .7); }
.fila[hidden] { display: none; }
.leaflet-container { font-family: var(--sans); font-size: 12px; background: #E7E1D7; }
.leaflet-popup-content-wrapper { border-radius: 18px; padding: 0; box-shadow: var(--sombra); }
.leaflet-popup-content { margin: 0; width: auto !important; }
.leaflet-popup-tip { box-shadow: none; }
.popup { display: grid; grid-template-columns: 86px 1fr; gap: 12px; align-items: center; padding: 10px; text-decoration: none; color: var(--tinta); min-width: 240px; }
.popup img, .popup__vazia { width: 86px; height: 64px; object-fit: cover; border-radius: 12px; background: var(--noite); }
.popup__vazia { display: flex; align-items: center; justify-content: center; color: rgba(233, 226, 216, .6); }
.popup__vazia svg { width: 26px; height: 26px; }
.popup__txt b { display: block; font-family: var(--serif); font-style: italic; font-weight: 400; font-size: 17px; line-height: 1.1; font-variation-settings: "opsz" 24, "SOFT" 100, "WONK" 1; margin-bottom: 3px; }
.popup__txt span { font-size: 12.5px; color: var(--tinta-2); }
.leaflet-control-attribution { font-size: 10px; background: rgba(255, 255, 255, .7); }
.leaflet-bar { border: 0; box-shadow: var(--sombra-leve); border-radius: 12px; overflow: hidden; }
.leaflet-bar a { border-bottom-color: var(--cinza-2); color: var(--tinta); }

/* cidades */
.cidades { list-style: none; margin: 0 0 12px; padding: 0; display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
@media (min-width: 720px) { .cidades { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1024px) { .cidades { grid-template-columns: repeat(4, 1fr); gap: 14px; } }
.cidade { display: flex; flex-direction: column; justify-content: flex-end; gap: 2px; padding: 16px 18px; aspect-ratio: 4 / 3; background: var(--branco); border-radius: var(--r-s); box-shadow: var(--sombra-leve); text-decoration: none; color: var(--tinta); transition: transform .45s var(--suave); }
.cidade:hover { transform: translateY(-2px); }
.cidade__txt { display: flex; flex-direction: column; gap: 2px; }
.cidade--foto { position: relative; padding: 0; overflow: hidden; color: #fff; background: var(--noite); }
.cidade--foto .cidade__foto { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--suave); }
.cidade--foto:hover .cidade__foto { transform: scale(1.04); }
.cidade--foto .cidade__txt { position: relative; padding: 40px 16px 14px; background: linear-gradient(180deg, transparent, rgba(22, 28, 36, .85)); }
.cidade--foto small { color: rgba(233, 226, 216, .85); }
.cidade b { font-size: 19px; }
.cidade small { color: var(--tinta-2); font-size: 13px; }
.regiao-titulo { margin: 18px 0 10px; font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--tinta-3); }
.vazio { color: var(--tinta-2); background: var(--branco); padding: 18px 20px; border-radius: var(--r-s); }

/* ---- ficha ------------------------------------------------------------ */
.ficha__foto { position: relative; margin: 0 -16px; height: 62vh; min-height: 380px; max-height: 620px; background: var(--noite); overflow: hidden; }
.ficha__foto img { width: 100%; height: 100%; object-fit: cover; }
.ficha__foto--vazia { display: flex; align-items: flex-end; padding: 18px 16px 60px; color: rgba(233, 226, 216, .7); font-size: 12px; letter-spacing: .1em; text-transform: uppercase; background-image: radial-gradient(60% 80% at 80% 100%, var(--luz), transparent 70%); }
.ficha__foto--vazia .ico { position: absolute; left: 50%; top: 45%; width: 64px; height: 64px; transform: translate(-50%, -50%); color: rgba(233, 226, 216, .5); }
.ficha__foto::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(22, 28, 36, .5), transparent 30%, transparent 70%, rgba(22, 28, 36, .35)); pointer-events: none; }
.ficha__folha { position: relative; margin: -36px -16px 0; padding: 12px 16px 24px; background: var(--papel); border-radius: var(--r-l) var(--r-l) 0 0; }
.ficha__folha .migalhas { margin: 0 0 12px; }
.ficha__cab { margin-bottom: 14px; }
.ficha__cab h1 { font-size: clamp(30px, 8vw, 40px); margin: 0 0 4px; }
.ficha__cat { font-size: 15px; color: var(--tinta-2); margin: 0; }
.ficha__cat b { color: var(--vermelho); font-weight: 600; }
.selos { display: flex; align-items: stretch; gap: 0; margin: 0 0 20px; padding: 6px 0; overflow-x: auto; scrollbar-width: none; }
.selos::-webkit-scrollbar { display: none; }
.selo { display: flex; align-items: center; gap: 10px; flex: 0 0 auto; min-width: 120px; max-width: 240px; padding: 4px 14px 4px 0; }
.selo + .selo { border-left: 1px solid var(--cinza-2); padding-left: 14px; }
.selo i { display: flex; align-items: center; justify-content: center; flex: none; width: 46px; height: 46px; border-radius: 50%; background: var(--petroleo); color: #fff; }
.selo i .ico { width: 22px; height: 22px; }
.selo--neutro i { background: var(--cinza-2); color: var(--tinta-2); }
.selo b { display: block; font-size: 14px; font-weight: 600; line-height: 1.2; }
.selo small { display: block; font-size: 12.5px; color: var(--tinta-2); line-height: 1.25; }
.ficha__resumo { font-size: 17px; max-width: 60ch; margin: 0 0 14px; color: var(--tinta); }
.ficha__texto { max-width: 64ch; margin: 0 0 18px; color: var(--tinta-2); }
.ficha__sep { border: 0; border-top: 1px solid var(--cinza-2); margin: 18px 0; }
.ficha__morada { display: flex; gap: 12px; align-items: flex-start; margin: 0 0 14px; }
.ficha__morada .ico { width: 26px; height: 26px; color: var(--tinta); margin-top: 2px; }
.ficha__morada p { margin: 0; font-size: 16px; }
.ficha__morada .ligacao { font-size: 15px; margin-top: 2px; }
.mapa-mini { height: 180px; border-radius: var(--r-s); overflow: hidden; background: var(--cinza-2); margin: 0 0 18px; }
.ficha__dados { display: grid; grid-template-columns: max-content 1fr; gap: 10px 22px; margin: 0 0 18px; padding: 18px 20px; background: var(--branco); border-radius: var(--r-m); box-shadow: var(--sombra-leve); }
.ficha__dados dt { font-size: 11.5px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--tinta-3); padding-top: 4px; }
.ficha__dados dd { margin: 0; font-size: 15px; }
@media (max-width: 480px) { .ficha__dados { grid-template-columns: 1fr; gap: 2px; } .ficha__dados dd { margin-bottom: 10px; } }
.ficha__acoes { display: flex; gap: 10px; flex-wrap: wrap; margin: 6px 0 18px; }
.ficha__acoes .botao:first-child { flex: 1 1 220px; }
.aviso { display: flex; gap: 10px; align-items: flex-start; padding: 14px 16px; background: var(--aviso-fundo); border-radius: var(--r-s); font-size: 14px; margin: 0 0 18px; max-width: none; }
.aviso .ico { color: var(--aviso); margin-top: 1px; }
.ficha__reclamar { font-size: 14px; color: var(--tinta-2); }
.galeria { display: flex; gap: 8px; overflow-x: auto; margin: 0 0 18px; padding-bottom: 4px; scrollbar-width: none; }
.galeria::-webkit-scrollbar { display: none; }
.galeria a { position: relative; flex: none; width: 96px; aspect-ratio: 4 / 3; border-radius: 12px; overflow: hidden; background: var(--noite); }
.galeria img { width: 100%; height: 100%; object-fit: cover; }
.porautorizar { position: absolute; top: 12px; left: 12px; z-index: 3; background: #E0A800; color: var(--tinta); font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; padding: 6px 11px; border-radius: var(--pill); }
.porautorizar--mini { top: 6px; left: 6px; padding: 2px 7px; font-size: 10px; }
.ficha__credito { font-size: 12.5px; color: var(--tinta-3); max-width: 60ch; margin-top: 6px; }

/* ---- horário da semana e «aberto agora» (Horarios.php) ----------------- */
.selo--fechado i { background: var(--cinza-2); color: var(--tinta-2); }
.fila__aberto { color: var(--petroleo); font-weight: 600; }
.horario { margin: 0 0 18px; padding: 14px 18px 12px; background: var(--branco); border-radius: var(--r-m); box-shadow: var(--sombra-leve); }
.horario h2 { font: 600 11.5px/1.2 var(--sans); letter-spacing: .1em; text-transform: uppercase; color: var(--tinta-3); margin: 0 0 8px; }
.horario dl { display: grid; grid-template-columns: max-content 1fr; gap: 3px 18px; margin: 0; font-size: 14.5px; }
.horario dl div { display: contents; }
.horario dt { color: var(--tinta-2); }
.horario dd { margin: 0; }
.horario .hoje dt, .horario .hoje dd { color: var(--tinta); font-weight: 600; }
.horario__nota { margin: 8px 0 0; font-size: 13.5px; color: var(--tinta-2); }
.ficha__h2 { font-size: 22px; margin: 18px 0 10px; }
.ficha__eventos { margin: 0 0 18px; }

/* ---- eventos (Eventos.php): o dia em serifa, o resto em sans; vermelho só no destaque pago ---- */
.eventos { list-style: none; padding: 0; margin: 0 0 14px; display: grid; gap: 10px; }
.evento { display: flex; gap: 14px; align-items: flex-start; padding: 14px 16px; background: var(--branco); border-radius: var(--r-s); box-shadow: var(--sombra-leve); }
.evento__dia { flex: none; width: 56px; padding: 8px 0 7px; text-align: center; border-radius: 12px; background: var(--papel); color: var(--tinta); }
.evento__dia b { display: block; font: 400 26px/1 var(--serif); font-variation-settings: "opsz" 72, "SOFT" 80, "WONK" 0; }
.evento__dia span { display: block; font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--tinta-3); margin-top: 3px; }
.evento--destaque .evento__dia { background: var(--vermelho); color: #fff; }
.evento--destaque .evento__dia span { color: rgba(255, 255, 255, .82); }
.evento__txt { min-width: 0; flex: 1; }
.evento__tag { display: block; font-size: 10.5px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--vermelho); margin-bottom: 2px; }
.evento__nome { font-size: 17px; font-weight: 600; line-height: 1.25; margin: 0 0 3px; }
.evento__nome a { color: inherit; text-decoration: none; }
.evento__nome a:hover { color: var(--vermelho); }
.evento__quando { margin: 0; font-size: 14px; color: var(--tinta); }
.evento__onde { margin: 2px 0 0; font-size: 13.5px; color: var(--tinta-2); }
.evento__desc { margin: 8px 0 0; font-size: 14.5px; color: var(--tinta-2); max-width: 60ch; }
.evento__mais { display: inline-flex; margin-top: 6px; font-size: 14px; }
.seccao--eventos { margin-bottom: 8px; }
.filtros--lista { margin-top: -4px; }
/* a página do evento */
.evento-pagina { max-width: 760px; }
.evento-pagina__cab { display: flex; gap: 18px; align-items: flex-start; margin: 6px 0 16px; }
.evento-pagina__cab h1 { font-size: clamp(28px, 4vw, 40px); margin: 2px 0 6px; }
.evento__dia--grande { width: 76px; padding: 12px 0 10px; border-radius: 16px; }
.evento__dia--grande b { font-size: 36px; }
.evento__dia--grande span { font-size: 12px; }
.evento__dia--destaque { background: var(--vermelho); color: #fff; }
.evento__dia--destaque span { color: rgba(255, 255, 255, .82); }
.evento-pagina__quando { margin: 0; font-size: 17px; }
.evento-pagina__corpo { font-size: 17px; color: var(--tinta-2); max-width: 64ch; }
.evento-pagina__acoes { margin: 14px 0 22px; }
.evento-pagina__ficha { display: flex; gap: 16px; align-items: center; padding: 14px 16px; background: var(--branco); border-radius: var(--r-s); box-shadow: var(--sombra-leve); margin-bottom: 14px; }
.evento-pagina__ficha img { width: 112px; height: 84px; object-fit: cover; border-radius: 12px; flex: none; }
.evento-pagina__ficha h3 { font-size: 22px; margin: 2px 0 4px; }
.evento-pagina__ficha h3 a { color: inherit; text-decoration: none; }
.evento-pagina__morada { margin: 0 0 6px; font-size: 14.5px; color: var(--tinta-2); }
.evento-pagina .mapa-mini { margin-bottom: 18px; }
/* guardados */
.guardar .ico { width: 18px; height: 18px; }
.guardar.on { background: var(--tinta); color: var(--papel); box-shadow: none; }
.guardar.on .ico { fill: currentColor; }
.guardados-aviso { display: flex; align-items: center; gap: 8px; margin: 10px 0 0; font-size: 14.5px; color: var(--tinta-2); }
.guardados-aviso .ico { width: 16px; height: 16px; }
.guardados li { position: relative; }
.guardados__tirar { position: absolute; right: 12px; top: 12px; z-index: 2; border: 0; border-radius: var(--pill); padding: 6px 12px; background: rgba(255, 255, 255, .92); color: var(--tinta); font: 500 12.5px var(--sans); cursor: pointer; box-shadow: 0 6px 16px -10px rgba(0, 0, 0, .5); }
.guardados__tirar:hover { background: var(--vermelho); color: #fff; }
@media (min-width: 720px) { .eventos--grelha { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .eventos--grelha { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (min-width: 720px) {
  body.local .topo { position: sticky; background: rgba(243, 238, 230, .9); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
  body.local .topo__logo--claro { display: block; } body.local .topo__logo--escuro { display: none; }
  body.local .topo__nav a { color: var(--tinta); } body.local .linguas a { color: var(--tinta-2); } body.local .linguas span { background: var(--branco); color: var(--tinta); }
  body.local .topo .pesquisa { display: flex; }
  /* até 999 px a ficha é uma coluna: a fotografia em cartão de cantos de 28 px e a folha por baixo */
  .ficha { padding-top: 16px; }
  .ficha__foto { margin: 0; height: auto; min-height: 0; max-height: 520px; aspect-ratio: 16 / 9; border-radius: 28px; box-shadow: var(--sombra); }
  .ficha__foto::after { display: none; }
  .ficha__foto--vazia { padding-bottom: 18px; }
  .ficha__folha { margin: 0; padding: 20px 0 0; background: transparent; border-radius: 0; }
  .ficha__folha .pega { display: none; }
  .ficha__cab h1 { font-size: 40px; }
  /* no computador nada corre na horizontal com a barra escondida: os selos repartem a largura e as miniaturas quebram linha */
  .selos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); overflow: visible; }
  .selo { min-width: 0; max-width: none; }
  .galeria { flex-wrap: wrap; overflow: visible; }
}
/* a partir de 1000 px, duas colunas: a fotografia fixa à esquerda, a folha à direita */
@media (min-width: 1000px) {
  .ficha { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(360px, .85fr); gap: 0 40px; align-items: start; }
  .ficha__foto { grid-column: 1; aspect-ratio: 4 / 3; max-height: none; position: sticky; top: 92px; }
  .ficha__folha { grid-column: 2; padding: 0; }
  .ficha__cab h1 { font-size: clamp(32px, 3.2vw, 44px); }
}
/* na coluna estreita das duas colunas, o selo põe o ícone por cima para o texto caber numa linha */
@media (min-width: 1000px) and (max-width: 1279px) { .selo { flex-direction: column; align-items: flex-start; gap: 8px; } }

/* ---- páginas de texto ------------------------------------------------- */
.pagina { max-width: 68ch; padding: 10px 0 30px; }
.pagina h1 { font-size: clamp(30px, 5vw, 44px); }
.pagina p { font-size: 17px; }

/* ---- barra flutuante (telemóvel) ------------------------------------- */
.barra { position: fixed; left: 14px; right: 14px; bottom: 14px; z-index: 30; display: flex; justify-content: space-around; align-items: center; height: 66px; padding: 0 8px; background: rgba(255, 255, 255, .96); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border-radius: var(--pill); box-shadow: 0 18px 40px -16px rgba(32, 30, 31, .45); }
.barra a { display: flex; flex-direction: column; align-items: center; gap: 3px; flex: 1; height: 56px; justify-content: center; border-radius: var(--pill); color: var(--tinta-3); text-decoration: none; font-size: 11.5px; font-weight: 600; transition: color .4s var(--suave); }
.barra a .ico { width: 24px; height: 24px; }
.barra a.on { color: var(--vermelho); }
.barra a.on .ico { background: var(--vermelho); color: #fff; border-radius: 50%; padding: 5px; width: 30px; height: 30px; margin-top: -3px; }
@media (min-width: 720px) { .barra { display: none; } }

/* ---- rodapé ----------------------------------------------------------- */
.rodape { margin-top: 36px; padding: 32px 0 40px; background: var(--branco); border-radius: var(--r-l) var(--r-l) 0 0; font-size: 14px; color: var(--tinta-2); }
.rodape__lema { font-family: var(--serif); font-size: 21px; color: var(--tinta); font-variation-settings: "opsz" 36, "SOFT" 80, "WONK" 0; letter-spacing: -.01em; margin: 0 0 6px; }
.rodape__legal { margin: 0 0 16px; }
.rodape__links { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 16px; }
.rodape__links a { padding: 8px 14px; border-radius: var(--pill); background: var(--cinza); color: var(--tinta); text-decoration: none; font-size: 13.5px; font-weight: 500; }
.rodape__links a:hover { background: var(--vermelho-10); color: var(--vermelho); }
.rodape__assinatura { margin: 0; font-size: 13px; color: var(--tinta-3); }

/* ---- porta dos 18 anos ------------------------------------------------ */
.porta { position: fixed; inset: 0; z-index: 50; display: flex; align-items: flex-end; justify-content: center; padding: 14px; background: var(--noite); overflow: hidden; }
.porta::before { content: ""; position: absolute; inset: -20% -20% auto -20%; height: 90%; background: radial-gradient(50% 55% at 30% 30%, var(--luz), transparent 70%); }
.porta__logo { position: absolute; top: 56px; left: 0; right: 0; display: flex; justify-content: center; }
.porta__logo img { height: 36px; width: auto; }
.porta__folha { position: relative; width: 100%; max-width: 440px; background: rgba(255, 255, 255, .94); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border-radius: var(--r-l); padding: 30px 26px 24px; text-align: center; box-shadow: 0 30px 80px -30px rgba(0, 0, 0, .7); animation: subir .5s var(--suave); }
.porta__folha h2 { font-size: 26px; margin: 0 0 8px; }
.porta__folha p { font-size: 14.5px; color: var(--tinta-2); margin: 0 auto 20px; max-width: 32ch; }
.porta__folha form { display: grid; gap: 10px; }
.porta__folha .botao { width: 100%; }
.porta__privacidade { display: block; margin-top: 14px; font-size: 13px; }
@media (min-width: 600px) { .porta { align-items: center; } .porta__folha { padding: 36px 34px 28px; } }
@keyframes subir { from { transform: translateY(40px); opacity: 0; } to { transform: none; opacity: 1; } }
body.porta-fechada { overflow: hidden; }

.procura--pagina { margin: 0 0 10px; background: var(--branco); border-radius: var(--r-m); padding: 10px; box-shadow: var(--sombra-leve); display: grid; gap: 8px; }
@media (min-width: 720px) { .procura--pagina { grid-template-columns: 1fr 1fr auto; border-radius: var(--pill); padding: 8px 8px 8px 12px; } }
.procura--pagina .campo { display: flex; align-items: center; gap: 8px; }
.procura--pagina .campo .ico { color: var(--tinta-3); }
.procura--pagina .campo input { flex: 1; border: 0; background: none; font: inherit; font-size: 16px; padding: 10px 4px; min-width: 0; color: var(--tinta); }
.procura--pagina .campo input:focus { outline: none; }
.procura--pagina .botao { width: auto; min-height: 50px; padding: 0 24px; }
.procura--pagina .botao span { display: inline; }
.procura--pagina .botao .ico { display: inline-block; }

.pagina--legal { max-width: 74ch; }
.pagina--legal h2 { font-size: clamp(20px, 2.2vw, 24px); margin: 1.7em 0 .45em; }
.pagina--legal p, .pagina--legal li { font-size: 16px; color: var(--tinta-2); }
.pagina--legal ul { padding-left: 1.2em; margin: 0 0 1em; }
.pagina--legal li { margin-bottom: .4em; }
.pagina--legal b { color: var(--tinta); }
.pagina__entrada { font-size: 18px !important; color: var(--tinta) !important; }
.pagina__data { margin-top: 2.2em; font-size: 14px !important; color: var(--tinta-3) !important; }
.identificacao { max-width: 65ch; display: grid; grid-template-columns: max-content 1fr; gap: 8px 22px; margin: 6px 0 10px; padding: 18px 20px; background: var(--branco); border-radius: var(--r-m); box-shadow: var(--sombra-leve); }
.identificacao dt { font-size: 13px; font-weight: 600; letter-spacing: .04em; color: var(--tinta-3); }
.identificacao dd { margin: 0; font-size: 16px; }
@media (max-width: 520px) { .identificacao { grid-template-columns: 1fr; gap: 2px; } .identificacao dd { margin-bottom: 10px; } }
.tabela-rolar { overflow-x: auto; margin: 0 0 1em; }
.tabela-legal { border-collapse: collapse; width: 100%; min-width: 620px; background: var(--branco); border-radius: var(--r-s); overflow: hidden; font-size: 14.5px; }
.tabela-legal th, .tabela-legal td { text-align: left; vertical-align: top; padding: 10px 12px; border-bottom: 1px solid var(--cinza-2); color: var(--tinta-2); }
.tabela-legal th { font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--tinta-3); background: var(--cinza); }
.tabela-legal tr:last-child td { border-bottom: 0; }
@media (max-width: 640px) {
  .tabela-legal { min-width: 0; font-size: 15px; }
  .tabela-legal, .tabela-legal tbody, .tabela-legal tr, .tabela-legal td { display: block; width: 100%; }
  .tabela-legal tr:first-child { display: none; }
  .tabela-legal tr { padding: 14px 16px; border-bottom: 1px solid var(--cinza-2); }
  .tabela-legal tr:last-child { border-bottom: 0; }
  .tabela-legal td { padding: 0; border: 0; }
  .tabela-legal td:first-child { font-weight: 600; color: var(--tinta); }
  .tabela-legal td + td::before { content: attr(data-l); display: block; margin-top: 9px; font-size: 11.5px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--tinta-3); }
}
.rodape__reclamacoes { box-shadow: inset 0 0 0 1.5px var(--tinta-3); }

/* ---- perto de si (Perto.php, js/perto.js) ------------------------------ */
[hidden] { display: none !important; }
.so-leitor { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.perto { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.perto form { margin: 0; }
.perto__geo, .perto__escolha select { display: inline-flex; align-items: center; gap: 7px; height: 42px; padding: 0 16px; border: 0; border-radius: var(--pill); background: var(--branco); color: var(--tinta); font: 600 14px/1 var(--sans); box-shadow: var(--sombra-leve); cursor: pointer; transition: background .4s var(--suave), color .4s var(--suave); }
.perto__geo .ico { width: 18px; height: 18px; color: var(--vermelho); }
.perto__geo:hover { background: var(--vermelho-10); color: var(--vermelho-escuro); }
.perto__geo:disabled { opacity: .6; cursor: progress; }
.perto__escolha label { display: inline-flex; }
.perto__escolha select { -webkit-appearance: none; appearance: none; padding-right: 38px; max-width: 220px; background: var(--branco) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 9l6 6 6-6' fill='none' stroke='%23201E1F' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 14px center / 14px; }
.perto__escolha select:hover { background-color: var(--cinza); }
.perto__ok { height: 42px; padding: 0 16px; margin-left: 6px; border: 0; border-radius: var(--pill); background: var(--noite); color: #fff; font: 600 14px/1 var(--sans); }
.perto__cidade { display: inline-flex; align-items: center; gap: 8px; height: 42px; padding: 0 5px 0 14px; border-radius: var(--pill); background: var(--noite); color: #fff; font: 600 14px/1 var(--sans); }
.perto__cidade span { display: inline-flex; align-items: center; gap: 6px; }
.perto__cidade .ico { width: 17px; height: 17px; color: #FF6B76; }
.perto__x { display: grid; place-items: center; width: 34px; height: 34px; border: 0; border-radius: 50%; background: rgba(255, 255, 255, .12); color: #fff; cursor: pointer; transition: background .4s var(--suave); }
.perto__x svg { width: 14px; height: 14px; }
.perto__x:hover { background: rgba(255, 255, 255, .26); }
.perto__msg { flex-basis: 100%; margin: 2px 0 0; font-size: 13.5px; color: var(--tinta-2); max-width: none; }
.seccao--perto .seccao__cab { align-items: center; }
.seccao__sub { margin: -6px 0 14px; }
.seccao__sub .ligacao { font-size: 14.5px; }
.perto-linha { margin: 0 0 18px; }
.dist { color: var(--petroleo); font-weight: 600; white-space: nowrap; }
.cartao__meta .dist::before, .fila__cat .dist::before { content: "· "; color: var(--tinta-3); font-weight: 400; }
.fila__cat .dist { margin-left: 4px; font-size: 11.5px; text-transform: none; letter-spacing: 0; }
.dist--ficha { margin: 4px 0 0; font-size: 14.5px; }

/* ---- texto das páginas de cidade e categoria, FAQ --------------------- */
.cabeca--bloco h1, .cabeca--bloco .sub { display: block; margin-right: 0; }
.cabeca--bloco .sub { margin-top: 2px; }
.intro { max-width: 68ch; margin: 4px 0 20px; }
.intro p { color: var(--tinta-2); font-size: 16px; margin: 0 0 .7em; }
.intro .intro__primeiro { color: var(--tinta); font-size: 18.5px; line-height: 1.5; }
@media (min-width: 720px) { .intro .intro__primeiro { font-size: 20px; } .intro p { font-size: 17px; } }
.texto { margin: 36px 0 10px; display: grid; gap: 28px; }
@media (min-width: 1024px) { .texto { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 48px; align-items: start; } }
.texto__corpo { max-width: 66ch; }
.texto__corpo h2 { font-size: clamp(22px, 2.4vw, 27px); margin: 1.4em 0 .5em; }
.texto__corpo h2:first-child { margin-top: 0; }
.texto__corpo h3 { margin: 1.3em 0 .4em; }
.texto__corpo p, .texto__corpo li { color: var(--tinta-2); }
.texto__corpo ul { padding-left: 1.2em; margin: 0 0 1em; }
.texto__corpo li { margin-bottom: .35em; }
.texto__corpo a, .artigo__corpo a { color: var(--vermelho-escuro); }
.faq h2 { font-size: clamp(22px, 2.4vw, 27px); margin: 0 0 14px; }
.faq__item { background: var(--branco); border-radius: var(--r-s); margin-bottom: 8px; box-shadow: var(--sombra-leve); }
.faq__item summary { display: flex; justify-content: space-between; align-items: center; gap: 14px; padding: 16px 18px; cursor: pointer; font-weight: 600; font-size: 16px; list-style: none; line-height: 1.35; }
.faq__item summary::-webkit-details-marker { display: none; }
.faq__item summary .ico { color: var(--vermelho); transform: rotate(90deg); transition: transform .4s var(--suave); }
.faq__item[open] summary .ico { transform: rotate(-90deg); }
.faq__item p { margin: 0; padding: 0 18px 18px; color: var(--tinta-2); font-size: 15.5px; max-width: none; }
.faq--pagina { max-width: 760px; margin: 40px 0 20px; }
.ver-mais { margin: 6px 0 20px; }
.seccao--ligacoes { padding-top: 10px; }
.ligacoes { list-style: none; padding: 0; margin: 0; display: grid; gap: 8px; grid-template-columns: 1fr; }
@media (min-width: 600px) { .ligacoes { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1024px) { .ligacoes { grid-template-columns: repeat(3, 1fr); } }
.ligacoes a { display: flex; align-items: center; gap: 12px; padding: 12px 16px; background: var(--branco); border-radius: var(--r-s); text-decoration: none; color: var(--tinta); font-weight: 500; font-size: 15px; transition: transform .4s var(--suave), box-shadow .4s var(--suave); }
.ligacoes a:hover { transform: translateY(-2px); box-shadow: var(--sombra-leve); }
.ligacoes a .ico { color: var(--vermelho); width: 22px; height: 22px; stroke-width: 1.8; }
.ligacoes a span { flex: 1; }
.ligacoes a small { color: var(--tinta-3); font-weight: 600; }
.relacionados { margin-top: 10px; }

/* ---- guia: artigos ---------------------------------------------------- */
.artigos { list-style: none; padding: 0; margin: 0 0 20px; display: grid; gap: 16px; grid-template-columns: 1fr; }
@media (min-width: 600px) { .artigos { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1024px) { .artigos { grid-template-columns: repeat(3, 1fr); } }
.artigo-cartao { display: flex; flex-direction: column; height: 100%; background: var(--branco); border-radius: var(--r-m); overflow: hidden; text-decoration: none; color: var(--tinta); box-shadow: var(--sombra-leve); transition: transform .4s var(--suave), box-shadow .4s var(--suave); }
.artigo-cartao:hover { transform: translateY(-3px); box-shadow: var(--sombra); }
.artigo-cartao__foto { aspect-ratio: 16 / 9; overflow: hidden; }
.artigo-cartao__foto img { width: 100%; height: 100%; object-fit: cover; }
.artigo-cartao__txt { padding: 18px 20px 20px; display: flex; flex-direction: column; gap: 6px; }
.artigo-cartao__txt h2, .artigo-cartao__txt h3 { font-size: 21px; margin: 0; line-height: 1.15; }
.artigo-cartao__txt p { margin: 0; font-size: 14.5px; color: var(--tinta-2); }
.artigo-cartao__txt .etiqueta { margin-bottom: 2px; }
.artigos--mini .artigo-cartao__txt h3 { font-size: 18px; }
.artigo { max-width: 900px; margin: 0 auto; }
.artigo__cab { margin: 6px 0 22px; }
.artigo__cab h1 { font-size: clamp(30px, 5vw, 46px); max-width: 22ch; margin: 6px 0 14px; }
.artigo__entrada { font-size: 19px; line-height: 1.5; color: var(--tinta); max-width: 60ch; }
@media (min-width: 720px) { .artigo__entrada { font-size: 21px; } }
.artigo__foto { margin: 0 0 26px; border-radius: var(--r-m); overflow: hidden; position: relative; }
.artigo__foto img { width: 100%; aspect-ratio: 2 / 1; object-fit: cover; }
.artigo__foto figcaption { position: absolute; left: 12px; bottom: 10px; font-size: 11.5px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: #fff; background: rgba(22, 28, 36, .55); padding: 4px 10px; border-radius: var(--pill); backdrop-filter: blur(6px); }
.artigo__corpo { max-width: 68ch; font-size: 17px; }
@media (min-width: 720px) { .artigo__corpo { font-size: 18px; } }
.artigo__corpo h2 { font-size: clamp(23px, 2.6vw, 30px); margin: 1.5em 0 .5em; }
.artigo__corpo h3 { font-size: 20px; margin: 1.3em 0 .4em; }
.artigo__corpo p { color: var(--tinta); max-width: none; }
.artigo__corpo ul { padding-left: 1.2em; }
.artigo__corpo li { margin-bottom: .4em; }
.artigo .faq { max-width: 68ch; margin-top: 30px; }
.artigo__nota { margin: 30px 0 10px; padding: 14px 18px; background: var(--cinza); border-radius: var(--r-s); font-size: 14px; color: var(--tinta-2); max-width: 68ch; }

/* ---- anunciantes ------------------------------------------------------ */
.anunciantes__cab { padding: 6px 0 26px; max-width: 760px; }
.anunciantes__cab h1 { font-size: clamp(32px, 5.5vw, 54px); max-width: 18ch; margin: 6px 0 16px; }
.anunciantes__entrada { font-size: 18px; color: var(--tinta-2); max-width: 62ch; }
@media (min-width: 720px) { .anunciantes__entrada { font-size: 20px; } }
.anunciantes__acoes { display: flex; flex-wrap: wrap; gap: 10px; margin: 20px 0 0; }
.numeros-marca { list-style: none; padding: 20px 22px; margin: 0 0 30px; display: grid; grid-template-columns: 1fr 1fr; gap: 14px; background: var(--noite); color: var(--noite-texto); border-radius: var(--r-m); }
@media (min-width: 720px) { .numeros-marca { grid-template-columns: repeat(4, 1fr); padding: 26px 30px; } }
.numeros-marca b { display: block; font: 400 38px/1 var(--serif); color: #fff; font-variation-settings: "opsz" 72, "SOFT" 80, "WONK" 0; }
.numeros-marca span { font-size: 13.5px; opacity: .8; }
.porque { margin: 0 0 36px; }
.porque h2, .planos h2, .passos h2, .pedido h2 { font-size: clamp(24px, 3vw, 32px); }
.porque__lista { list-style: none; padding: 0; margin: 0; display: grid; gap: 14px; grid-template-columns: 1fr; }
@media (min-width: 720px) { .porque__lista { grid-template-columns: 1fr 1fr; } }
.porque__lista li { display: flex; gap: 14px; padding: 18px 20px; background: var(--branco); border-radius: var(--r-m); }
.porque__lista i { flex: none; width: 44px; height: 44px; border-radius: 50%; background: var(--vermelho-10); color: var(--vermelho); display: grid; place-items: center; }
.porque__lista i .ico { width: 22px; height: 22px; }
.porque__lista b { display: block; font-size: 17px; margin-bottom: 4px; }
.porque__lista p { margin: 0; font-size: 15px; color: var(--tinta-2); max-width: none; }
.planos { margin: 0 0 40px; }
.planos .seccao__cab { align-items: baseline; }
.planos .seccao__cab .sub { margin: 0; }
.planos__lista { list-style: none; padding: 14px 0 0; margin: 0 0 14px; display: grid; gap: 34px 14px; grid-template-columns: 1fr; }
@media (min-width: 900px) { .planos__lista { grid-template-columns: repeat(3, 1fr); align-items: stretch; } }
@media (min-width: 900px) and (max-width: 1099px) { .planos__lista { padding-top: 30px; } }
.plano { position: relative; display: flex; flex-direction: column; padding: 26px 24px 24px; background: var(--branco); border-radius: var(--r-m); box-shadow: var(--sombra-leve); }
.plano--destaque { background: var(--noite); color: var(--noite-texto); }
.plano--destaque h3, .plano--destaque .plano__preco b { color: #fff; }
.plano.plano--destaque .plano__alt, .plano.plano--destaque ul li { color: rgba(255, 255, 255, .86); }
.plano__tag { position: absolute; bottom: calc(100% - 13px); left: 20px; max-width: calc(100% - 40px); line-height: 1.35; margin: 0; font-size: 11.5px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; background: var(--vermelho); color: #fff; padding: 5px 12px; border-radius: 13px; text-wrap: balance; }
.plano h3 { font-size: 23px; margin: 0 0 10px; }
.plano__preco { margin: 0; display: flex; align-items: baseline; gap: 4px; }
.plano__preco b { font: 400 40px/1 var(--serif); font-variation-settings: "opsz" 72, "SOFT" 80, "WONK" 0; letter-spacing: -.02em; }
.plano__preco span { color: var(--tinta-3); font-size: 15px; }
.plano--destaque .plano__preco span { color: rgba(255, 255, 255, .78); }
.plano__alt { font-size: 14px; color: var(--tinta-2); margin: 8px 0 16px; max-width: none; }
.plano ul { list-style: none; padding: 0; margin: 0 0 22px; flex: 1; display: grid; gap: 7px; align-content: start; }
.plano ul li { padding-left: 24px; position: relative; font-size: 15px; color: var(--tinta-2); }
.plano ul li::before { content: ""; position: absolute; left: 0; top: 7px; width: 12px; height: 7px; border-left: 2px solid var(--vermelho); border-bottom: 2px solid var(--vermelho); transform: rotate(-45deg); }
.plano .botao { width: 100%; }
.plano--destaque .botao--contorno { color: #fff; box-shadow: inset 0 0 0 1.5px #fff; }
.planos__nota { font-size: 14px; color: var(--tinta-2); max-width: 80ch; }
.passos { margin: 0 0 40px; }
.passos__lista { list-style: none; padding: 0; margin: 0; display: grid; gap: 14px; grid-template-columns: 1fr; counter-reset: passo; }
@media (min-width: 720px) { .passos__lista { grid-template-columns: repeat(4, 1fr); } }
.passos__lista li { display: flex; gap: 14px; }
@media (min-width: 720px) { .passos__lista li { flex-direction: column; gap: 10px; } }
.passos__lista b { flex: none; width: 40px; height: 40px; border-radius: 50%; background: var(--vermelho); color: #fff; display: grid; place-items: center; font: 400 20px/1 var(--serif); }
.passos__lista h3 { font-size: 19px; margin: 6px 0 4px; }
.passos__lista p { margin: 0; font-size: 15px; color: var(--tinta-2); max-width: none; }
.pedido { margin: 0 0 20px; padding: 26px 22px; background: var(--branco); border-radius: var(--r-l); box-shadow: var(--sombra-leve); scroll-margin-top: 90px; }
@media (min-width: 720px) { .pedido { padding: 34px 36px; } }
.pedido h2 { margin-bottom: 18px; }
.pedido__ok { display: flex; gap: 12px; align-items: flex-start; padding: 16px 18px; background: rgba(31, 79, 87, .1); border-radius: var(--r-s); color: var(--tinta); max-width: 70ch; }
.pedido__ok .ico { color: var(--petroleo); width: 24px; height: 24px; margin-top: 1px; }
.pedido__erro { padding: 12px 16px; background: var(--vermelho-10); color: var(--vermelho-escuro); border-radius: var(--r-s); font-size: 15px; max-width: none; }
.formulario { display: grid; gap: 14px; grid-template-columns: 1fr; }
@media (min-width: 720px) { .formulario { grid-template-columns: 1fr 1fr 1fr; gap: 16px 18px; } .formulario .l2 { grid-column: 1 / -1; } }
.formulario label { display: flex; flex-direction: column; gap: 6px; }
.formulario label > span, .formulario legend { font-size: 13.5px; font-weight: 600; color: var(--tinta-2); }
.formulario input, .formulario select, .formulario textarea { font: inherit; font-size: 16px; color: var(--tinta); background: var(--cinza); border: 1.5px solid transparent; border-radius: 14px; padding: 12px 14px; width: 100%; transition: border-color .3s var(--suave), background .3s var(--suave); }
.formulario input:focus, .formulario select:focus, .formulario textarea:focus { outline: none; border-color: var(--vermelho); background: var(--branco); }
.formulario textarea { resize: vertical; min-height: 110px; }
.formulario .opcoes { border: 0; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.formulario .opcoes legend { margin-bottom: 8px; padding: 0; }
.formulario .opcao { flex-direction: row; align-items: center; gap: 8px; padding: 10px 16px; background: var(--cinza); border-radius: var(--pill); cursor: pointer; font-size: 15px; font-weight: 500; }
.formulario .opcao:has(input:checked) { background: var(--vermelho-10); color: var(--vermelho-escuro); box-shadow: inset 0 0 0 1.5px var(--vermelho); }
.formulario .opcao input { width: auto; accent-color: var(--vermelho); margin: 0; }
.formulario .isco { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.formulario__nota { font-size: 13.5px; color: var(--tinta-3); margin: 0; max-width: none; }
.formulario__acoes { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; margin: 0; font-size: 14.5px; color: var(--tinta-2); }

/* ---- chamada aos anunciantes na página inicial ------------------------- */
.chamada { margin: 30px 0 10px; padding: 26px 22px; background: var(--noite); color: var(--noite-texto); border-radius: var(--r-l); display: flex; flex-wrap: wrap; align-items: center; gap: 20px 40px; position: relative; overflow: hidden; }
.chamada::before { content: ""; position: absolute; inset: auto -10% -60% auto; width: 60%; height: 160%; background: radial-gradient(50% 55% at 50% 50%, var(--luz), transparent 70%); pointer-events: none; }
@media (min-width: 720px) { .chamada { padding: 36px 40px; } }
.chamada__txt { flex: 1 1 380px; position: relative; }
.chamada .etiqueta { color: var(--noite-texto); opacity: .7; }
.chamada h2 { color: #fff; font-size: clamp(24px, 3vw, 34px); margin: 6px 0 8px; max-width: 24ch; }
.chamada p { margin: 0; color: var(--noite-texto); font-size: 16px; }
.chamada .botao { position: relative; }

@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition: none !important; animation: none !important; } html { scroll-behavior: auto; } }
