/*
 * Center Pemba (18-10-2026): a lista de contactos úteis da cidade. Limpa e
 * leve — o telemóvel com rede fraca é o ecrã principal. Marinho #002f6d e
 * laranja #ff9202 (nunca com branco por cima: tinta de carvão), Poppins,
 * contrastes AA. O estado (aberto, a fechar, fechado) diz-se com palavra e
 * ponto, nunca só com cor.
 */
.cp { --marinho: #002f6d; --marinho-escuro: #001f4a; --laranja: #ff9202; --tinta: #1b2733; --texto: #334155; --suave: #5b6b7f; --linha: #e2e8f0; --fundo: #f5f7fb;
      --verde: #0f6b3f; --verde-fundo: #e5f4ec; --ambar: #8a4b00; --ambar-fundo: #fff1d6; --vermelho: #b42318; --vermelho-fundo: #fdeceb; --cinza-fundo: #eef1f5;
      background: var(--fundo); color: var(--tinta); font-family: Poppins, system-ui, sans-serif; padding-bottom: 3.5rem; }
.cp *, .cp *::before, .cp *::after { box-sizing: border-box; }
.cp a { color: var(--marinho); }
.cp :is(a, button, input, select, summary):focus-visible { outline: 3px solid var(--laranja); outline-offset: 2px; }
.cp-sr { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

/* O topo */
.cp-hero { position: relative; overflow: hidden; padding: 3rem 0 2rem; color: #fff; background: radial-gradient(120% 140% at 85% 0%, #0b4a9c 0%, var(--marinho) 45%, var(--marinho-escuro) 100%); }
.cp-hero::after { content: ""; position: absolute; right: -8rem; bottom: -10rem; width: 24rem; height: 24rem; border-radius: 50%; background: radial-gradient(circle, rgba(255, 146, 2, .2), transparent 65%); pointer-events: none; }
.cp-hero > .container { position: relative; z-index: 1; }
.cp-hero__ola { margin: 0 0 .35rem; color: #ffbf66; font-size: .85rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
.cp-hero h1 { margin: 0; color: #fff; font-size: clamp(2rem, 5vw, 3rem); font-weight: 700; line-height: 1.1; }
.cp-hero__texto { max-width: 38rem; margin: .75rem 0 1.5rem; color: #dbe2eb; font-size: 1.05rem; line-height: 1.6; }

.cp-busca__campo { display: flex; align-items: center; gap: .5rem; padding: .4rem .4rem .4rem 1.1rem; border-radius: 16px; background: #fff; box-shadow: 0 18px 40px -22px rgba(0, 16, 40, .6); }
.cp-busca__campo > svg { flex: none; width: 1.3rem; height: 1.3rem; color: var(--suave); }
.cp-busca__campo input { flex: 1 1 auto; min-width: 0; height: 3rem; border: 0; background: transparent; color: var(--tinta); font-size: 1rem; outline: 0; }
.cp-busca__campo input::placeholder { color: #7a8797; }
.cp-busca__campo:focus-within { outline: 3px solid var(--laranja); outline-offset: 2px; }

.cp-btn { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; min-height: 44px; padding: .5rem 1.15rem; border: 1px solid #c4cbd5; border-radius: 999px; background: #fff; color: var(--marinho); font-size: .92rem; font-weight: 600; line-height: 1.2; text-decoration: none; cursor: pointer; transition: background-color .15s ease, border-color .15s ease; }
.cp-btn:hover { border-color: var(--marinho); background: #f3f7fc; color: var(--marinho); text-decoration: none; }
.cp-btn--cheio { border-color: var(--marinho); background: var(--marinho); color: #fff !important; }
.cp-btn--cheio:hover { background: var(--marinho-escuro); border-color: var(--marinho-escuro); }
.cp-btn--wa { border-color: #0b6b4f; color: #0b6b4f; }

/* Grupos: botões de opção em forma de pastilha */
.cp-grupos { display: flex; gap: .5rem; margin: 1.25rem 0 0; padding: 0; border: 0; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.cp-grupos::-webkit-scrollbar { display: none; }
/* Em ecrã largo os grupos cabem numa fila ou quebram linha; a rolagem lateral é do telemóvel. */
@media (min-width: 768px) { .cp-grupos { flex-wrap: wrap; overflow-x: visible; } }
.cp-chip { position: relative; flex: none; margin: 0; cursor: pointer; }
.cp-chip input { position: absolute; inset: 0; opacity: 0; margin: 0; cursor: pointer; }
.cp-chip > span { display: inline-flex; align-items: center; gap: .45rem; min-height: 44px; padding: .4rem .95rem; border: 1px solid rgba(255, 255, 255, .28); border-radius: 999px; background: rgba(255, 255, 255, .08); color: #fff; font-size: .9rem; font-weight: 500; white-space: nowrap; transition: background-color .15s ease; }
.cp-chip > span svg { width: 1.1rem; height: 1.1rem; color: #ffbf66; }
.cp-chip > span b { padding: 0 .45rem; border-radius: 999px; background: rgba(255, 255, 255, .16); font-size: .76rem; font-weight: 600; line-height: 1.5; }
.cp-chip:hover > span { background: rgba(255, 255, 255, .16); }
.cp-chip input:checked + span { border-color: #fff; background: #fff; color: var(--marinho); font-weight: 600; }
.cp-chip input:checked + span svg { color: var(--marinho); }
.cp-chip input:checked + span b { background: #e7eef8; color: var(--marinho); }
.cp-chip input:focus-visible + span { outline: 3px solid var(--laranja); outline-offset: 2px; }

/* Filtros finos: num painel de vidro, interruptores à frente (19-10-2026). */
.cp-opcoes { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .85rem 1.25rem; margin-top: 1.1rem; padding: .9rem 1rem; border: 1px solid rgba(255, 255, 255, .16); border-radius: 18px; background: rgba(255, 255, 255, .07); backdrop-filter: blur(6px); }
.cp-opcoes__rapidas { display: flex; flex-wrap: wrap; gap: .5rem; align-self: center; }
.cp-opcoes__finas { display: flex; flex: 1 1 auto; flex-wrap: wrap; align-items: flex-end; gap: .75rem; }
.cp-campo { display: flex; flex-direction: column; gap: .3rem; min-width: 10rem; flex: 1 1 10rem; max-width: 15rem; }
.cp-campo label { margin: 0; color: #c9d4e2; font-size: .74rem; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
.cp-campo select, .cp-campo input { height: 44px; padding: 0 2.2rem 0 .85rem; border: 1px solid transparent; border-radius: 12px; background: #fff; color: var(--tinta); font-size: .92rem; font-weight: 500; }
.cp-campo select { -webkit-appearance: none; appearance: none; cursor: pointer; background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23002f6d' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right .75rem center / 1rem; }
.cp-interruptor { position: relative; display: inline-flex; margin: 0; cursor: pointer; }
.cp-interruptor input { position: absolute; inset: 0; opacity: 0; margin: 0; cursor: pointer; }
.cp-interruptor span { display: inline-flex; align-items: center; gap: .55rem; min-height: 44px; padding: .4rem 1rem .4rem .5rem; border: 1px solid rgba(255, 255, 255, .28); border-radius: 999px; background: rgba(255, 255, 255, .08); color: #fff; font-size: .9rem; font-weight: 500; transition: background-color .15s ease, border-color .15s ease; }
.cp-interruptor span::before { content: ""; width: 2rem; height: 1.15rem; border-radius: 999px; background: rgba(255, 255, 255, .35); background-image: radial-gradient(circle at .6rem 50%, #fff 0 .42rem, transparent .45rem); transition: background-color .15s ease; }
.cp-interruptor:hover span { background: rgba(255, 255, 255, .15); }
.cp-interruptor input:checked + span { border-color: var(--laranja); background: var(--laranja); color: #1b1b1b; font-weight: 600; }
.cp-interruptor input:checked + span::before { background-color: #1b1b1b; background-image: radial-gradient(circle at calc(100% - .6rem) 50%, #fff 0 .42rem, transparent .45rem); }
.cp-interruptor input:focus-visible + span { outline: 3px solid var(--laranja); outline-offset: 2px; }
.cp-limpar { align-self: center; display: inline-flex; align-items: center; min-height: 44px; color: #ffd9a3 !important; font-size: .9rem; font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
.cp-limpar[hidden] { display: none; }

/* O corpo */
.cp-aviso { margin: 1.25rem 0 0; padding: .85rem 1.1rem; border-radius: 12px; background: var(--verde-fundo); color: var(--verde); font-weight: 500; }
.cp-anuncio { margin: 1.5rem 0 0; }
.cp-anuncio:empty, .cp-lista__anuncio:empty { display: none; }
.cp-corpo { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.5rem; margin-top: 1.25rem; }
.cp-resumo { margin: 0 0 1rem; color: var(--suave); font-size: .92rem; font-weight: 500; }
.cp-lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(14.5rem, 1fr)); gap: 1rem; }
.cp-lista__anuncio { grid-column: 1 / -1; }

/* O cartão (redesenho de 19-10-2026). Cada grupo tem a sua cor — no ícone e no
   contorno ao passar —, mas o tipo vem sempre escrito: a cor só ajuda a varrer. */
.cp [data-grupo="saude"] { --g: #c81e3a; --g-fundo: #feecef; }
.cp [data-grupo="educacao"] { --g: #1d4ed8; --g-fundo: #eaf0ff; }
.cp [data-grupo="seguranca"] { --g: #002f6d; --g-fundo: #e7eef8; }
.cp [data-grupo="governo"] { --g: #6d28d9; --g-fundo: #f1ebff; }
.cp [data-grupo="servicos"] { --g: #0e7490; --g-fundo: #e3f5f8; }
.cp [data-grupo="financas"] { --g: #15803d; --g-fundo: #e6f6ec; }
.cp [data-grupo="combustivel"] { --g: #b45309; --g-fundo: #fff3df; }

.cp-cartao { position: relative; display: flex; flex-direction: column; gap: .75rem; padding: 1.15rem 1.15rem .35rem; border: 1px solid var(--linha); border-radius: 20px; background: #fff; box-shadow: 0 1px 2px rgba(0, 31, 74, .04), 0 12px 28px -24px rgba(0, 31, 74, .5); cursor: pointer; transition: box-shadow .2s ease, transform .2s ease, border-color .2s ease; }
.cp-cartao:hover { border-color: color-mix(in srgb, var(--g, #002f6d) 35%, #e2e8f0); box-shadow: 0 2px 4px rgba(0, 31, 74, .05), 0 22px 40px -26px rgba(0, 31, 74, .55); transform: translateY(-2px); }
.cp-cartao:focus-within { border-color: var(--marinho); }
.cp-cartao--destaque { border-color: #f3c27a; background: linear-gradient(180deg, #fff8ec 0%, #fff 55%); box-shadow: 0 0 0 1px rgba(255, 146, 2, .18), 0 16px 34px -24px rgba(180, 83, 9, .55); }
.cp-cartao--destaque:hover { border-color: var(--laranja); }
.cp-selo { position: absolute; top: -.6rem; right: 1rem; display: inline-flex; align-items: center; gap: .3rem; padding: .2rem .65rem .2rem .5rem; border-radius: 999px; background: var(--laranja); color: #1b1b1b; font-size: .7rem; font-weight: 700; letter-spacing: .02em; box-shadow: 0 6px 14px -8px rgba(180, 83, 9, .8); }
.cp-selo svg { width: .8rem; height: .8rem; }
.cp-cartao__topo { display: flex; flex-direction: column; gap: .6rem; }
.cp-cartao__marca { display: flex; align-items: center; gap: .6rem; min-width: 0; }
.cp-cartao__marca .cp-logo { width: 40px; height: 40px; border-radius: 12px; }
.cp-cartao__marca .cp-logo svg { width: 1.3rem; height: 1.3rem; }
.cp-logo { display: inline-grid; place-items: center; flex: none; width: 52px; height: 52px; overflow: hidden; border-radius: 15px; background: var(--g-fundo, #e9eff8); color: var(--g, var(--marinho)); }
.cp-logo svg { width: 1.6rem; height: 1.6rem; }
.cp-logo img { width: 100%; height: 100%; object-fit: contain; background: #fff; }
.cp-logo--grande { width: 72px; height: 72px; border-radius: 20px; }
.cp-logo--grande svg { width: 2.2rem; height: 2.2rem; }
/* Alturas fixas por linha (19-10-2026): nome em duas linhas, tipo e bairro numa só, descrição
   em duas — o estado, a descrição e os botões caem à mesma altura em todos os cartões da fila,
   seja qual for o comprimento do texto. Os limites de caracteres (Contacto::NOME_MAX…) fazem
   com que quase nunca seja preciso cortar; quando é, o texto inteiro fica no title. */
.cp-cartao__nome { display: -webkit-box; min-height: 2.6em; margin: 0; overflow: hidden; color: var(--tinta); font-size: 1.02rem; font-weight: 650; line-height: 1.3; overflow-wrap: anywhere; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.cp-cartao__meta { display: flex; flex: 1 1 auto; flex-wrap: nowrap; align-items: center; gap: .5rem; min-width: 0; margin: 0; overflow: hidden; color: var(--suave); font-size: .82rem; line-height: 1.35; white-space: nowrap; }
.cp-cartao__tipo { flex: none; overflow: hidden; color: var(--g, var(--suave)); font-weight: 600; text-overflow: ellipsis; }
.cp-cartao__onde { min-height: 1.35em; margin: -.35rem 0 0; color: var(--suave); font-size: .82rem; line-height: 1.35; white-space: nowrap; overflow: hidden; }
.cp-cartao__bairro { display: inline-flex; align-items: center; gap: .25rem; max-width: 100%; overflow: hidden; }
.cp-cartao__bairro > span { overflow: hidden; text-overflow: ellipsis; }
.cp-cartao__bairro svg { flex: none; width: .85rem; height: .85rem; }
.cp-estado { display: flex; flex-wrap: wrap; align-items: center; gap: .15rem .4rem; width: fit-content; max-width: 100%; margin: 0; padding: .25rem .7rem; border-radius: 999px; font-size: .82rem; line-height: 1.4; }
.cp-ponto { flex: none; width: .55rem; height: .55rem; border-radius: 50%; background: currentColor; }
.cp-estado--aberto { background: var(--verde-fundo); color: var(--verde); }
.cp-estado--aberto .cp-ponto { box-shadow: 0 0 0 3px rgba(15, 107, 63, .18); animation: cp-pulsar 2.4s ease-in-out infinite; }
.cp-estado--fecha_em_breve { background: var(--ambar-fundo); color: var(--ambar); }
.cp-estado--fechado { background: var(--vermelho-fundo); color: var(--vermelho); }
.cp-estado--duvida { background: var(--cinza-fundo); color: #475569; }
.cp-estado span:not(.cp-ponto) { color: inherit; opacity: .92; }
/* No cartão o estado é uma linha só («Fechado · abre segunda às 08:00»): partido em duas, desalinhava a fila. */
.cp-cartao .cp-estado { flex-wrap: nowrap; overflow: hidden; white-space: nowrap; }
.cp-cartao .cp-estado > span:not(.cp-ponto) { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
@keyframes cp-pulsar { 50% { box-shadow: 0 0 0 6px rgba(15, 107, 63, 0); } }
.cp-cartao__descricao { display: -webkit-box; min-height: 3em; margin: 0; overflow: hidden; color: var(--texto); font-size: .87rem; line-height: 1.5; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.cp-cartao__accoes { display: flex; align-items: center; gap: .5rem; margin-top: auto; padding-top: .2rem; }
.cp-ligar { display: inline-flex; flex: 1 1 auto; align-items: center; justify-content: center; gap: .5rem; min-height: 46px; padding: .45rem 1rem; border-radius: 14px; background: var(--marinho); color: #fff !important; font-size: .95rem; font-weight: 600; text-decoration: none; font-variant-numeric: tabular-nums; white-space: nowrap; box-shadow: 0 8px 16px -10px rgba(0, 47, 109, .8); transition: background-color .15s ease, transform .15s ease; }
.cp-ligar:hover { background: var(--marinho-escuro); text-decoration: none; }
.cp-ligar:active { transform: translateY(1px); }
.cp-ligar svg { width: 1.1rem; height: 1.1rem; }
.cp-wa { display: inline-flex; flex: none; align-items: center; justify-content: center; gap: .4rem; min-width: 46px; min-height: 46px; padding: 0 .9rem; border: 1px solid #b7e2cf; border-radius: 14px; background: #eefaf4; color: #0b6b4f !important; font-size: .88rem; font-weight: 600; text-decoration: none; transition: background-color .15s ease; }
.cp-wa:hover { background: #dcf3e8; text-decoration: none; }
.cp-wa svg { width: 1.25rem; height: 1.25rem; }
/* Com telefone ao lado, o WhatsApp fica só com o ícone (o nome está no aria-label e no title). */
.cp-ligar ~ .cp-wa { padding: 0; }
.cp-ligar ~ .cp-wa .cp-wa__texto { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); }
.cp-sem-telefone { flex: none; color: var(--suave); font-size: .82rem; white-space: nowrap; }
/* Sem telefone, o WhatsApp é a acção principal e ocupa a linha. */
.cp-sem-telefone ~ .cp-wa { flex: 1 1 auto; }
.cp-detalhes { display: flex; align-items: center; justify-content: space-between; min-height: 44px; margin: 0 -1.15rem; padding: .4rem 1.15rem; border-top: 1px solid #eef1f5; color: var(--marinho); font-size: .86rem; font-weight: 600; text-decoration: none; }
.cp-detalhes svg { width: 1.05rem; height: 1.05rem; transition: transform .15s ease; }
.cp-detalhes:hover { text-decoration: none; }
.cp-cartao:hover .cp-detalhes svg { transform: translateX(3px); }

/* Vazio e páginas */
.cp-vazio { padding: 3rem 1.5rem; border: 1px dashed #c4cbd5; border-radius: 16px; background: #fff; text-align: center; }
.cp-vazio h3 { margin: 0 0 .4rem; color: var(--marinho); font-size: 1.15rem; }
.cp-vazio p { max-width: 30rem; margin: 0 auto 1.1rem; color: var(--suave); }
.cp-paginas { display: flex; align-items: center; justify-content: center; gap: 1rem; margin-top: 1.5rem; }
.cp-paginas a, .cp-paginas__off { display: inline-flex; align-items: center; min-height: 44px; padding: .4rem 1.1rem; border: 1px solid #c4cbd5; border-radius: 999px; background: #fff; font-size: .9rem; font-weight: 600; text-decoration: none; }
.cp-paginas__off { color: #8b98a8; background: transparent; }
.cp-paginas__quais { color: var(--suave); font-size: .88rem; }

/* A janela do detalhe (19-10-2026, segunda passagem): sem barra no topo — o fechar
   flutua no canto —, espaços apertados, e a marca no rodapé. */
.cp-modal { position: relative; width: min(40rem, calc(100vw - 1.5rem)); max-height: 92dvh; padding: 0; border: 0; border-radius: 24px; background: #fff; color: var(--tinta); box-shadow: 0 40px 80px -24px rgba(0, 16, 40, .6); overflow: hidden; }
.cp-modal::backdrop { background: rgba(0, 16, 40, .55); backdrop-filter: blur(3px); }
.cp-modal[open] { display: flex; flex-direction: column; animation: cp-entrar .22s ease-out; }
@keyframes cp-entrar { from { opacity: 0; transform: translateY(12px) scale(.985); } }
.cp-modal__fechar { display: inline-grid; place-items: center; flex: none; width: 2.5rem; height: 2.5rem; border: 0; border-radius: 50%; background: #eef2f7; color: #475569; cursor: pointer; transition: background-color .15s ease; }
.cp-modal__fechar:hover { background: #e2e8f0; color: var(--marinho); }
.cp-modal__fechar svg { width: 1.15rem; height: 1.15rem; }
.cp-modal__fechar--flutua { position: absolute; top: .75rem; right: .75rem; z-index: 2; background: rgba(238, 242, 247, .92); }
/* min-height: 0 — sem ele o corpo não encolhe dentro da janela e o que passa do ecrã fica cortado em vez de rolar. */
.cp-modal__corpo { flex: 1 1 auto; min-height: 0; padding: 1.25rem 1.25rem 1rem; overflow-y: auto; }
.cp-modal__rodape { flex: none; padding: .65rem 1.25rem; border-top: 1px solid #eef1f5; background: #fafbfd; }
.cp-modal__cabeca { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .85rem .85rem .85rem 1.25rem; border-bottom: 1px solid #eef1f5; }
.cp-modal__cabeca h2 { margin: 0; color: var(--marinho); font-size: 1.1rem; font-weight: 700; }
@media (max-width: 575px) { .cp-modal { width: 100%; max-width: 100%; margin: auto 0 0; border-radius: 22px 22px 0 0; } .cp-modal__corpo { padding: 1.1rem 1rem .9rem; } .cp-modal__rodape { padding: .6rem 1rem; } }

.cp-marca { display: flex; align-items: center; justify-content: space-between; gap: .75rem; }
.cp-marca__logo { display: inline-flex; line-height: 0; }
.cp-marca__logo img { width: auto; height: 28px; max-width: 120px; object-fit: contain; }
.cp-marca__logo span { color: var(--marinho); font-size: .95rem; font-weight: 700; line-height: 1.2; }
.cp-marca__produto { color: #8593a6; font-size: .64rem; font-weight: 500; letter-spacing: .14em; line-height: 1; text-transform: uppercase; white-space: nowrap; }
.cp-marca__produto a { color: #5b6b7f !important; font-weight: 700; text-decoration: none; border-bottom: 1px solid transparent; transition: color .15s ease, border-color .15s ease; }
.cp-marca__produto a:hover { color: var(--marinho) !important; border-bottom-color: currentColor; }
.cp-ficha__rodape { margin: 1.1rem -1.25rem -1.25rem; border-radius: 0 0 22px 22px; }

.cp-detalhe__topo { display: flex; align-items: center; gap: .9rem; padding-right: 2.5rem; }
.cp-detalhe__quem { min-width: 0; }
.cp-detalhe__tipo { margin: 0 0 .1rem; color: var(--g, var(--suave)); font-size: .78rem; font-weight: 600; letter-spacing: .02em; }
.cp-detalhe__nome { margin: 0 0 .35rem; color: var(--tinta); font-size: 1.3rem; font-weight: 700; line-height: 1.2; overflow-wrap: anywhere; }
.cp-detalhe__descricao { margin: .75rem 0 0; color: var(--texto); font-size: .92rem; line-height: 1.55; }
.cp-detalhe__accoes { display: flex; flex-wrap: wrap; gap: .5rem; margin: .9rem 0 0; }
.cp-btn svg { width: 1.1rem; height: 1.1rem; flex: none; }
.cp-btn--grande { min-height: 48px; padding: .55rem 1.25rem; font-size: .98rem; border-radius: 14px; font-variant-numeric: tabular-nums; }
.cp-detalhe__accoes .cp-btn { border-radius: 14px; }
.cp-btn--wa { border-color: #b7e2cf; background: #eefaf4; color: #0b6b4f !important; }
.cp-btn--wa:hover { background: #dcf3e8; border-color: #9fd6bd; color: #0b6b4f; }
.cp-btn--discreto { border-color: transparent; background: #f2f5f9; color: #475569; }
.cp-bloco { margin-top: 1.1rem; }
.cp-bloco h3 { display: flex; align-items: center; gap: .4rem; margin: 0 0 .5rem; color: var(--marinho); font-size: .9rem; font-weight: 700; }
.cp-bloco h3 svg { width: 1.05rem; height: 1.05rem; color: var(--g, var(--marinho)); }
.cp-horario { width: 100%; border-collapse: separate; border-spacing: 0; overflow: hidden; border: 1px solid var(--linha); border-radius: 12px; font-size: .88rem; }
.cp-horario th, .cp-horario td { padding: .38rem .8rem; border-top: 1px solid #eef1f5; text-align: left; }
.cp-horario tr:first-child th, .cp-horario tr:first-child td { border-top: 0; }
.cp-horario th { width: 36%; color: var(--texto); font-weight: 500; }
.cp-horario td { color: var(--tinta); font-variant-numeric: tabular-nums; }
.cp-horario__hoje th, .cp-horario__hoje td { background: #eef3fa; color: var(--marinho); font-weight: 700; }
.cp-horario small { margin-left: .4rem; padding: .05rem .45rem; border-radius: 999px; background: var(--marinho); color: #fff; font-size: .66rem; font-weight: 600; letter-spacing: .03em; vertical-align: .1em; }
.cp-nota { margin: .45rem 0 0; color: var(--suave); font-size: .84rem; }
.cp-contactos { margin: 0; padding: 0; list-style: none; font-size: .9rem; line-height: 1.5; }
.cp-contactos li { display: flex; flex-wrap: wrap; gap: .1rem .75rem; padding: .35rem 0; border-top: 1px solid #eef1f5; }
.cp-contactos li:first-child { border-top: 0; padding-top: 0; }
.cp-contactos li > span { min-width: 4.5rem; color: var(--suave); font-size: .82rem; }
.cp-contactos li > b { font-weight: 500; color: var(--tinta); }
.cp-mapa { min-height: 40px; margin-top: .5rem; padding: .4rem 1rem; border-radius: 12px; font-size: .88rem; }
.cp-verificado { display: flex; align-items: center; gap: .5rem; margin: 1.1rem 0 0; padding: .6rem .75rem .6rem .85rem; border-radius: 12px; background: #f5f7fb; color: var(--suave); font-size: .82rem; line-height: 1.45; }
.cp-verificado svg { flex: none; width: 1.05rem; height: 1.05rem; color: var(--marinho); }
.cp-verificado__texto { flex: 1 1 auto; }
.cp-diga { flex: none; display: inline-flex; align-items: center; min-height: 36px; padding: .3rem .85rem; border: 1px solid #c4cbd5; border-radius: 999px; background: #fff; color: var(--marinho) !important; font-size: .82rem; font-weight: 600; text-decoration: none; white-space: nowrap; }
.cp-diga:hover { border-color: var(--marinho); background: #f3f7fc; text-decoration: none; }
.cp--pagina { padding-top: 1.5rem; }
.cp-voltar { margin: 0 0 1rem; font-weight: 600; }
.cp-ficha { max-width: 42rem; padding: 1.25rem; border: 1px solid var(--linha); border-radius: 22px; background: #fff; box-shadow: 0 20px 40px -32px rgba(0, 31, 74, .5); }
.cp-ficha .cp-detalhe__topo { padding-right: 0; }

/* Diga-nos (19-10-2026) */
.cp-modal--reportar { width: min(34rem, calc(100vw - 1.5rem)); }
.cp-reportar__titulo { margin: 0 0 .75rem; color: var(--marinho); font-size: 1.35rem; font-weight: 700; }
.cp-reportar__sobre { margin: 0 0 .85rem; color: var(--suave); font-size: .88rem; }
.cp-reportar__sobre strong { color: var(--tinta); }
.cp-motivos { display: grid; gap: .4rem; margin: 0; padding: 0; border: 0; }
.cp-motivos legend { margin: 0 0 .45rem; color: var(--tinta); font-size: .9rem; font-weight: 700; }
.cp-motivo { position: relative; display: block; margin: 0; cursor: pointer; }
.cp-motivo input { position: absolute; top: 50%; left: .85rem; width: 1.05rem; height: 1.05rem; margin: 0; transform: translateY(-50%); accent-color: var(--marinho); cursor: pointer; }
.cp-motivo > span { display: flex; flex-direction: column; gap: .05rem; padding: .5rem .8rem .5rem 2.4rem; border: 1px solid var(--linha); border-radius: 12px; background: #fff; transition: border-color .15s ease, background-color .15s ease; }
.cp-motivo b { color: var(--tinta); font-size: .9rem; font-weight: 600; }
.cp-motivo small { color: var(--suave); font-size: .78rem; line-height: 1.35; }
.cp-motivo:hover > span { border-color: #b8c4d4; }
.cp-motivo input:checked + span { border-color: var(--marinho); background: #f3f7fc; box-shadow: 0 0 0 1px var(--marinho); }
.cp-motivo input:focus-visible + span { outline: 3px solid var(--laranja); outline-offset: 2px; }
.cp-motivo--grave b::after { content: "Prioritária"; margin-left: .45rem; padding: .05rem .45rem; border-radius: 999px; background: var(--vermelho-fundo); color: var(--vermelho); font-size: .66rem; font-weight: 700; letter-spacing: .03em; vertical-align: .1em; }
.cp-motivo--grave input:checked + span { border-color: var(--vermelho); background: #fff7f6; box-shadow: 0 0 0 1px var(--vermelho); }
.cp-reportar__campo { display: grid; gap: .3rem; margin-top: .85rem; }
.cp-reportar__campo label { margin: 0; color: var(--tinta); font-size: .86rem; font-weight: 600; }
.cp-reportar__campo label span { color: var(--suave); font-weight: 400; }
.cp-reportar__campo textarea, .cp-reportar__campo input { width: 100%; padding: .6rem .8rem; border: 1px solid #c9d1db; border-radius: 12px; background: #fff; color: var(--tinta); font: inherit; font-size: .92rem; }
.cp-reportar__campo input { height: 44px; }
.cp-reportar__campo :is(textarea, input):focus { border-color: var(--marinho); outline: 3px solid rgba(0, 47, 109, .15); outline-offset: 0; }
.cp-reportar__erro { margin: .75rem 0 0; padding: .55rem .8rem; border-radius: 10px; background: var(--vermelho-fundo); color: var(--vermelho); font-size: .86rem; font-weight: 500; }
.cp-reportar__erro[hidden], .cp-reportar__feito[hidden] { display: none; }
.cp-reportar__fim { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; margin-top: 1rem; }
.cp-reportar__fim .cp-btn { min-width: 8rem; border-radius: 12px; }
.cp-reportar__nota { flex: 1 1 12rem; margin: 0; color: var(--suave); font-size: .78rem; line-height: 1.4; }
.cp-reportar__feito { display: grid; justify-items: center; gap: .75rem; padding: 1.5rem .5rem; text-align: center; }
.cp-reportar__feito p { margin: 0; max-width: 24rem; color: var(--tinta); font-size: 1rem; font-weight: 500; line-height: 1.5; }
.cp-reportar__visto { display: inline-grid; place-items: center; width: 3.25rem; height: 3.25rem; border-radius: 50%; background: var(--verde-fundo); color: var(--verde); }
.cp-reportar__visto svg { width: 1.6rem; height: 1.6rem; }

/* Receber novidades */
.cp-novidades { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.5rem; margin-top: 2.5rem; padding: 1.75rem; border: 1px solid var(--linha); border-radius: 22px; background: #fff; box-shadow: 0 20px 40px -32px rgba(0, 31, 74, .5); }
@media (min-width: 900px) { .cp-novidades { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: 2.5rem; padding: 2.25rem; } }
.cp-novidades h2 { margin: 0 0 .5rem; color: var(--marinho); font-size: 1.45rem; font-weight: 700; }
.cp-novidades p { margin: 0; color: var(--texto); line-height: 1.6; }
.cp-novidades__form { display: grid; gap: 1rem; }
.cp-novidades .cp-campo { min-width: 0; }
.cp-novidades .cp-campo label { color: var(--tinta); font-size: .86rem; font-weight: 600; }
.cp-novidades .cp-campo input { height: 48px; border: 1px solid #c9d1db; border-radius: 12px; font-size: 1rem; }
.cp-interesses { margin: 0; padding: 0; border: 0; display: flex; flex-wrap: wrap; gap: .5rem; }
.cp-interesses legend { width: 100%; margin: 0 0 .5rem; color: var(--tinta); font-size: .86rem; font-weight: 600; }
.cp-interesses legend small { color: var(--suave); font-weight: 400; }
.cp-chip--pequeno > span { min-height: 38px; padding: .25rem .85rem; border-color: #c9d1db; background: #f3f6fa; color: var(--marinho); font-size: .86rem; }
.cp-chip--pequeno:hover > span { background: #e7eef8; }
.cp-chip--pequeno input:checked + span { border-color: var(--marinho); background: var(--marinho); color: #fff; }
.cp-novidades__nota { font-size: .8rem !important; color: var(--suave) !important; }
.cp-novidades__resposta { padding: .75rem 1rem; border-radius: 12px; background: var(--verde-fundo); color: var(--verde) !important; font-weight: 500; }
.cp-novidades__resposta[hidden] { display: none; }
.cp-novidades__resposta.is-erro { background: var(--vermelho-fundo); color: var(--vermelho) !important; }
.cp-erro { color: var(--vermelho); font-size: .84rem; }
.cp-armadilha { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

@media (max-width: 575px) {
    .cp-hero { padding: 2rem 0 1.5rem; }
    .cp-busca__campo { padding-left: .85rem; }
    .cp-busca__campo .cp-btn { display: none; }
    .cp-campo { flex: 1 1 calc(50% - .5rem); min-width: 0; }
    .cp-lista { grid-template-columns: minmax(0, 1fr); }
    .cp-opcoes { padding: .8rem; }
    .cp-opcoes__finas { width: 100%; }
    .cp-campo { max-width: none; }
    .cp-detalhe__topo { align-items: flex-start; }
    .cp-detalhe__nome { font-size: 1.15rem; }
    .cp-verificado { flex-wrap: wrap; }
    .cp-detalhe__accoes .cp-btn--grande { flex: 1 1 100%; }
    .cp-horario { font-size: .86rem; }
    .cp-horario th, .cp-horario td { padding: .5rem .65rem; }
    .cp-horario th { width: auto; white-space: nowrap; }
    .cp-horario td { text-align: right; }
}
@media (prefers-reduced-motion: reduce) { .cp *, .cp *::before, .cp *::after { transition: none !important; animation: none !important; } .cp-cartao:hover { transform: none; } .cp-modal[open] { animation: none; } }
.cp-lista.is-a-carregar, [data-cp-resultados].is-a-carregar { opacity: .55; transition: opacity .15s ease; pointer-events: none; }
