/* =====================================================================
   São Salvador — Tema escuro moderno (#339999 / #2c343d)
   Reskin do site. Carregado DEPOIS de appv2.css para sobrepor os
   tokens/estilos do tema base.
   ===================================================================== */

/* =====================================================================
   Junta de Freguesia de São Salvador — landing (hero, cards, notícias)
   ===================================================================== */
.page-salvador {
    --surface: rgba(255,255,255,.05);
    --border: rgba(255,255,255,.1);
    --ink: #e8ecef;
    --muted: rgba(255,255,255,.65);
    background: var(--dark);
    color: var(--ink);
}
.site-container { width: min(92%, 1180px); margin: 0 auto; }
.home-hero { background: var(--dark); color: #fff; }
.home-hero .carousel-banner { margin: 0; min-height: min(62vh, 620px); max-height: none; }
.home-hero .fullwidth { min-height: min(62vh, 620px); }
.home-hero .carousel-slide-content { background: linear-gradient(90deg, rgba(35,42,49,.88), rgba(35,42,49,.08)); }
.home-hero .banner-slide-title, .home-hero .banner-slide-content { color: #fff; }
.home-hero-fallback { min-height: 500px; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; background: radial-gradient(circle at 75% 30%, rgba(51,153,153,.28), transparent 42%); }
.home-hero-fallback h1 { max-width: 720px; color: #fff; font-size: clamp(2.4rem, 6vw, 5rem); margin: 8px 0 20px; }
.home-hero-fallback p:not(.eyebrow) { max-width: 620px; font-size: 1.2rem; color: rgba(255,255,255,.84); }
.eyebrow { color: var(--gold-light); font-size: .78rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; margin-bottom: 12px; }
.home-hero .eyebrow { color: var(--gold-light); }
.cta-button { display: inline-block; padding: 13px 22px; margin-top: 18px; background: var(--gold); color: #fff; border-radius: 3px; font-weight: 700; text-decoration: none; transition: background .2s ease; }
.cta-button:hover { color: #fff; background: var(--gold-light); }
.cta-button-light { background: #fff; color: var(--dark); }
.cta-button-light:hover { color: var(--dark); background: #e4e9ec; }
.home-section { padding: 88px 0; }
.section-heading { max-width: 720px; margin-bottom: 38px; }
.section-heading h2, .about-section h2 { color: #fff; font-size: clamp(2rem, 4vw, 3.1rem); margin-bottom: 14px; }
.section-heading > p:not(.eyebrow) { font-size: 1.08rem; color: var(--muted); }
.shortcut-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.shortcut-card { display: block; padding: 28px 24px; background: var(--surface); border: 1px solid var(--border); border-top: 4px solid var(--gold); box-shadow: 0 8px 22px rgba(0,0,0,.25); text-decoration: none; transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease; }
.shortcut-card:hover { color: inherit; transform: translateY(-5px); border-color: rgba(51,153,153,.45); box-shadow: 0 14px 30px rgba(0,0,0,.35); }
.shortcut-icon { display: inline-grid; place-items: center; width: 44px; height: 44px; margin-bottom: 20px; background: rgba(51,153,153,.14); color: var(--gold-light); font-size: 1.3rem; border-radius: 8px; }
.shortcut-card h3, .listing-box h3 { color: #fff; font-size: 1.25rem; margin-bottom: 8px; }
.shortcut-card p, .listing-box p { color: var(--muted); font-size: .95rem; margin: 0; }
.listing-section { background: var(--dark-alt); }
.heading-row { max-width: none; display: flex; justify-content: space-between; align-items: end; gap: 20px; }
.text-link { color: var(--gold-light); font-weight: 700; text-decoration: none; }
.text-link:hover { color: #fff; }
.listing-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.listing-box { background: var(--surface); border: 1px solid var(--border); box-shadow: 0 8px 22px rgba(0,0,0,.25); }
.listing-box > a { display: block; height: 100%; text-decoration: none; }
.listing-media { height: 210px; overflow: hidden; background: var(--dark-alt); }
.listing-media img { width: 100%; height: 100%; object-fit: cover; }
.listing-placeholder { width: 100%; height: 100%; background: linear-gradient(135deg, var(--gold), var(--dark-alt)); }
.listing-body { padding: 24px; }
.listing-date { color: var(--gold-light) !important; font-size: .78rem !important; font-weight: 800; letter-spacing: .08em; margin-bottom: 10px !important; }
.listing-body h3 { min-height: 48px; }
.listing-body .text-link { display: inline-block; margin-top: 20px; }

.about-section { background: var(--dark-alt); color: var(--muted); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.about-section h2 { color: #fff; }
.about-section .eyebrow { color: var(--gold-light); }
.about-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 70px; align-items: center; }
.about-grid p { font-size: 1.1rem; }
.page-salvador .footer { background: var(--dark-alt); color: var(--muted); border-top: 1px solid var(--border); }
@media (max-width: 900px) { .shortcut-grid { grid-template-columns: repeat(2, 1fr); } .listing-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .home-section { padding: 60px 0; } .shortcut-grid, .listing-grid, .about-grid { grid-template-columns: 1fr; gap: 16px; } .heading-row { display: block; } .heading-row .text-link { display: inline-block; margin-top: 8px; } .about-grid { gap: 20px; } }

body.page-salvador { background: var(--dark); color: var(--ink); }

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');

/* ── Design tokens ──────────────────────────────────────────────── */
:root {
    --gold: #339999;
    --gold-light: #4db6b6;
    --dark: #2c343d;
    --dark-alt: #232a31;
    --light: #f4f6f8;
    --white: #ffffff;
    --gray: #94a3b8;
    --text: #cbd5e1;
    --radius: 12px;
    --iu-max-w: 1160px;
    --transition: .3s ease;

    /* Sobrepõe os tokens do tema InnovationUp (appv2.css) para reaproveitar
       automaticamente os componentes existentes (botões, cabeçalhos…) */
    --color-primary: #339999;
    --color-secondary: #4db6b6;
    /* --color-alt é usado pelo .bg-alt do appv2.css (com !important) —
       aponta para o tom escuro alternado para os backgrounds das secções */
    --color-alt: #232a31;
    --color-dark: #232a31;
    --color-darker: #1f252c;
    --color-black: #ffffff;
    --color-btn: #339999;
    --color-white: #ffffff;
    --color-gray: #2c343d;
    --color-gray-medium: #333c46;
    --color-gray-dark: #94a3b8;
    --color-gold: #339999;
    --color-text: #cbd5e1;
    --color-header: #2c343d;

    --text-family: 'Inter', system-ui, -apple-system, sans-serif;
    --text-family-bold: 'Inter', system-ui, -apple-system, sans-serif;
    --card-radius: 12px;
}

/* ── Base ───────────────────────────────────────────────────────── */
html, body {
    font-family: var(--text-family);
    background: var(--dark);
    color: var(--text);
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
}

body.page-inup { background: var(--dark); }

::selection { color: var(--dark); -webkit-text-fill-color: var(--dark); background: var(--gold); }
::-moz-selection { color: var(--dark); background: var(--gold); }

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
    font-family: var(--text-family-bold);
    color: var(--white);
    text-transform: none;
    font-weight: 700;
    line-height: 1.2;
}

a { color: inherit; }
a:hover { color: var(--gold); }

/* A folga do header fixo (main.page-content) está em header.css */

/* Container próprio das secções da landing (evita colisão com o
   .container do Bootstrap) */
.iu-container, .ss-container { width: 90%; max-width: var(--iu-max-w); margin: 0 auto; }

/* =====================================================================
   BOTÕES
   ===================================================================== */
.btn--primary, .btn--outline {
    display: inline-flex; align-items: center; gap: 8px;
    font-family: inherit; font-size: .9rem; font-weight: 600;
    padding: 14px 28px; border-radius: 8px; border: none;
    cursor: pointer; transition: all var(--transition); text-decoration: none;
    min-width: 0; text-transform: none; line-height: 1;
}
.btn--primary {
    background: linear-gradient(135deg, var(--gold), var(--gold-light));
    color: var(--dark); box-shadow: 0 4px 20px rgba(51,153,153,.25);
}
.btn--primary:hover { transform: translateY(-2px); box-shadow: 0 6px 28px rgba(51,153,153,.35); color: var(--dark); }
.btn--outline { background: transparent; color: var(--white); border: 1px solid rgba(255,255,255,.15); }
.btn--outline:hover { border-color: var(--gold); color: var(--gold); }

/* Re-skin dos botões antigos do tema */
.btn-gold, .btn-gold:hover, .btn-black, .btn-black:hover, .btn-blue, .btn-blue:hover {
    background: linear-gradient(135deg, var(--gold), var(--gold-light)); color: var(--dark);
}
.btn-outline-light, .btn-outline { color: var(--white); border-color: rgba(255,255,255,.15); }
.btn-outline-light:hover, .btn-outline:hover { color: var(--gold); border-color: var(--gold); }

/* =====================================================================
   SECÇÕES COMUNS
   ===================================================================== */
.iu-section { padding: 100px 0; }
/* Compensa o header fixo ao navegar para as âncoras (#sobre, #servicos…) */
.hero, .iu-section { scroll-margin-top: calc(var(--header-h, 72px) + 4px); }
.section-label {
    font-size: .8rem; font-weight: 700; color: var(--gold);
    text-transform: uppercase; letter-spacing: .12em; margin-bottom: 12px;
}
.iu-section .section-title,
.section-title {
    font-size: clamp(1.7rem, 3.5vw, 2.4rem); font-weight: 700;
    color: var(--white); margin-bottom: 20px; line-height: 1.2;
    text-align: left; text-transform: none;
}
.section-desc { max-width: 600px; color: var(--gray); margin-bottom: 48px; }

/* =====================================================================
   HERO  (three.js + cursor)
   ===================================================================== */
.hero {
    min-height: 100vh; display: flex; align-items: center;
    background: linear-gradient(160deg, var(--dark) 0%, var(--dark-alt) 50%, var(--dark) 100%);
    position: relative; overflow: hidden;
    margin-top: calc(-1 * var(--header-h, 72px)); padding-top: var(--header-h, 72px); /* passa por baixo do header fixo */
    cursor: none;
}
#heroCanvas { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 0; pointer-events: none; }
.hero__content { position: relative; z-index: 1; max-width: 720px; }
.hero a, .hero button { cursor: none; }

.hero-cursor { position: fixed; top: 0; left: 0; z-index: 999; pointer-events: none; opacity: 0; transition: opacity .4s ease; }
.hero-cursor.visible { opacity: 1; }
.hero-cursor__glow {
    width: 220px; height: 220px; border-radius: 50%;
    background: radial-gradient(circle, rgba(51,153,153,.12) 0%, rgba(51,153,153,.04) 40%, transparent 70%);
    transform: translate(-50%, -50%); transition: width .4s ease, height .4s ease, opacity .4s ease;
}
.hero-cursor__dot {
    position: absolute; top: 0; left: 0; width: 6px; height: 6px; border-radius: 50%;
    background: rgba(51,153,153,.8); transform: translate(-50%, -50%);
    box-shadow: 0 0 8px rgba(51,153,153,.4); transition: width .3s ease, height .3s ease, background .3s ease;
}
.hero-cursor.hovering .hero-cursor__glow { width: 300px; height: 300px; background: radial-gradient(circle, rgba(255,255,255,.08) 0%, rgba(255,255,255,.03) 40%, transparent 70%); }
.hero-cursor.hovering .hero-cursor__dot { width: 40px; height: 40px; background: rgba(255,255,255,.1); box-shadow: 0 0 0 1.5px rgba(255,255,255,.6); }

@keyframes heroSlideIn { from { opacity: 0; transform: translateX(60px); } to { opacity: 1; transform: translateX(0); } }
.hero__badge, .hero__title, .hero__subtitle, .hero__actions { opacity: 0; animation: heroSlideIn .8s cubic-bezier(.16,1,.3,1) forwards; }
.hero__badge    { animation-delay: .15s; }
.hero__title    { animation-delay: .3s; }
.hero__subtitle { animation-delay: .45s; }
.hero__actions  { animation-delay: .6s; }

.hero__badge {
    display: inline-flex; align-items: center; gap: 8px;
    background: rgba(51,153,153,.1); border: 1px solid rgba(51,153,153,.2);
    border-radius: 100px; padding: 6px 16px; font-size: .8rem;
    color: var(--gold); font-weight: 600; margin-bottom: 24px; letter-spacing: .03em;
}
.hero__badge span { display: inline-block; width: 6px; height: 6px; background: var(--gold); border-radius: 50%; }
.hero__title {
    font-size: clamp(2.2rem, 5vw, 3.6rem); font-weight: 800;
    color: var(--white); line-height: 1.15; margin-bottom: 20px; text-transform: none;
}
.hero__title em {
    font-style: normal; color: var(--gold);
    background: linear-gradient(135deg, var(--gold), var(--gold-light));
    -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
}
.hero__subtitle { font-size: 1.1rem; color: var(--gray); margin-bottom: 36px; max-width: 560px; }
.hero__actions { display: flex; gap: 16px; flex-wrap: wrap; }

/* =====================================================================
   SOBRE
   ===================================================================== */
.about { background: var(--dark-alt); }
.about__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: center; }
.about__text p:not(.section-label) { margin-bottom: 16px; color: var(--text); }
.about__stats { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.stat { background: rgba(51,153,153,.05); border: 1px solid rgba(51,153,153,.1); border-radius: var(--radius); padding: 24px; }
.stat__number { font-size: 2rem; font-weight: 800; color: var(--gold); font-family: var(--text-family-bold); }
.stat__label { font-size: .85rem; color: var(--gray); margin-top: 4px; }

/* =====================================================================
   SERVIÇOS
   ===================================================================== */
.services { background: var(--dark); }
.services__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.service-card {
    background: var(--dark-alt); border: 1px solid rgba(255,255,255,.05);
    border-radius: var(--radius); padding: 36px 28px;
    transition: all var(--transition); position: relative; overflow: hidden;
}
.service-card::before {
    content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 3px;
    background: linear-gradient(90deg, var(--gold), transparent);
    opacity: 0; transition: opacity var(--transition);
}
.service-card:hover { transform: translateY(-4px); border-color: rgba(51,153,153,.15); }
.service-card:hover::before { opacity: 1; }
.service-card__icon {
    width: 52px; height: 52px; border-radius: 10px; background: rgba(51,153,153,.1);
    display: flex; align-items: center; justify-content: center; margin-bottom: 20px;
    font-size: 1.4rem; color: var(--gold);
}
.service-card__title { font-size: 1.1rem; font-weight: 700; color: var(--white); margin-bottom: 12px; }
.service-card__text { font-size: .9rem; color: var(--gray); line-height: 1.7; }

/* =====================================================================
   REACH4YOU
   ===================================================================== */
.reach { background: linear-gradient(180deg, var(--dark-alt) 0%, var(--dark) 100%); }
.reach__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }
.reach__features { display: flex; flex-direction: column; gap: 16px; margin-top: 24px; }
.reach__feature { display: flex; gap: 12px; align-items: flex-start; }
.reach__feature-icon {
    flex-shrink: 0; width: 28px; height: 28px; border-radius: 6px; background: rgba(51,153,153,.12);
    display: flex; align-items: center; justify-content: center; color: var(--gold);
    font-size: .85rem; margin-top: 2px;
}
.reach__feature-text { font-size: .92rem; color: var(--text); }
.reach__feature-text strong { color: var(--white); }
.reach__video-wrapper {
    position: relative; border-radius: var(--radius); overflow: hidden;
    border: 1px solid rgba(51,153,153,.12); box-shadow: 0 20px 60px rgba(0,0,0,.4);
    background: var(--dark-alt);
}
.reach__video-wrapper video { width: 100%; display: block; border-radius: var(--radius); }
.reach__video-placeholder {
    aspect-ratio: 16 / 10; display: flex; flex-direction: column; gap: 10px;
    align-items: center; justify-content: center; color: var(--gray);
    background:
        radial-gradient(circle at 30% 30%, rgba(51,153,153,.12), transparent 60%),
        linear-gradient(160deg, var(--dark-alt), var(--dark));
}
.reach__video-placeholder i { font-size: 2.6rem; color: var(--gold); }

/* =====================================================================
   CONTACTO
   ===================================================================== */
.contact { background: var(--dark-alt); }
.contact__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: start; }
.contact__info { display: flex; flex-direction: column; gap: 28px; }
.contact__item { display: flex; gap: 16px; align-items: center; }
.contact__item-icon {
    flex-shrink: 0; width: 48px; height: 48px; border-radius: 10px; background: rgba(51,153,153,.1);
    display: flex; align-items: center; justify-content: center; font-size: 1.2rem; color: var(--gold);
}
.contact__item-label { font-size: .8rem; color: var(--gray); margin-bottom: 2px; }
.contact__item-value { font-size: 1rem; color: var(--white); font-weight: 600; }
.contact__item-value a:hover { color: var(--gold); }
.contact__cta { background: var(--dark); border: 1px solid rgba(255,255,255,.06); border-radius: var(--radius); padding: 40px; }
.contact__cta h3 { font-size: 1.3rem; font-weight: 700; color: var(--white); margin-bottom: 12px; }
.contact__cta p { font-size: .92rem; color: var(--gray); margin-bottom: 24px; }

/* =====================================================================
   PÁGINA DE CONTACTO — formulário
   ===================================================================== */
.contact-page { background: var(--dark-alt); }
.contact-page__form-wrapper .form-control {
    background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.12);
    color: var(--white); border-radius: var(--radius); padding: 12px 16px;
    transition: border-color var(--transition), box-shadow var(--transition);
}
.contact-page__form-wrapper .form-control:focus {
    background: rgba(255,255,255,.1); border-color: var(--gold);
    box-shadow: 0 0 0 3px rgba(51,153,153,.15); color: var(--white);
}
.contact-page__form-wrapper .form-control::placeholder { color: var(--gray); }
.contact-page__form-wrapper label { color: var(--gray-light); font-size: .85rem; font-weight: 600; margin-bottom: 4px; }
.contact-page__form-wrapper .required { color: var(--gold); }
.contact-page__form-wrapper textarea.form-control { resize: vertical; min-height: 120px; }
.contact-page__form-wrapper .mgb15 { margin-bottom: 15px; }

/* =====================================================================
   ANIMAÇÃO fade-up (scroll reveal)
   ===================================================================== */
.fade-up { opacity: 0; transform: translateY(30px); transition: opacity .7s ease, transform .7s ease; }
.fade-up.visible { opacity: 1; transform: translateY(0); }

/* =====================================================================
   CARTÕES — grelha de itens (global: notícias, documentos, etc.)
   ===================================================================== */
/* Estilo OpenAI: sem caixa, thumbnail arredondado + título + categoria/data */

/* Efeito "silk": distorce o gradiente (veios) e sobrepreenche para as bordas
   não abrirem com a distorção. O media (overflow:hidden) recorta. */
.item-card-placeholder {
    position: absolute; inset: -10%; width: auto; height: auto;
    overflow: hidden;
    will-change: transform;
    backface-visibility: hidden;
    transform: translateZ(0);
}
@keyframes iu-placeholder-lines {
    0%, 100% { transform: translate3d(-2%, -0.5%, 0); }
    50% { transform: translate3d(2%, 0.5%, 0); }
}
/* Desloca o silk sem alterar a escala das formas. */
.item-card:hover .item-card-placeholder,
.item-card-media:hover .item-card-placeholder {
    animation: iu-placeholder-lines 6s ease-in-out infinite;
}
.item-card-placeholder::before {
    content: ""; position: absolute; inset: -8%; pointer-events: none;
    background: conic-gradient(from 120deg at 48% 52%, rgba(255,255,255,.34), rgba(255,255,255,0), rgba(255,255,255,.22), rgba(255,255,255,0));
    opacity: .18;
    will-change: transform;
    backface-visibility: hidden;
}
/* Brilho suave sobre a thumbnail no hover (sem tocar no filtro silk) */
.item-card-media::after {
    content: ""; position: absolute; inset: 0; z-index: 4; pointer-events: none;
    border-radius: inherit; opacity: 0; transition: opacity .35s ease;
    background: radial-gradient(120% 80% at 50% 0%, rgba(255,255,255,.16), transparent 62%);
}
.item-card:hover .item-card-media::after { opacity: 1; }

@media (prefers-reduced-motion: reduce) {
    .item-card-placeholder { filter: none !important; }
    .item-card-placeholder::before { animation: none !important; }
}

/* =====================================================================
   NOTÍCIAS — página de listagem
   ===================================================================== */
/* Cabeçalho da página de notícias — título à esquerda + categorias em linha */
.noticias-page-header { padding: 88px 0 0; }
.noticias-page-title { text-align: left; font-size: clamp(2rem, 4.5vw, 3rem); font-weight: 700; color: var(--white); margin: 0 0 22px; line-height: 1.08; }

.noticias-intro { color: var(--gray); }
.noticias-intro h1, .noticias-intro h2, .noticias-intro h3 { color: var(--white); }

/* Categorias — nav de texto (estilo OpenAI) com linha inferior */
.noticias-cats {
    display: flex; flex-wrap: wrap; align-items: center; gap: 8px 26px;
    border-bottom: 1px solid rgba(255,255,255,.1); padding-bottom: 9px;
}
.noticias-cat {
    color: var(--gray); font-size: .95rem; font-weight: 500;
    text-decoration: none; white-space: nowrap; transition: color var(--transition);
}
.noticias-cat:hover { color: var(--white); }
.noticias-cat.active { color: var(--white); font-weight: 600; }
@media (max-width: 575.98px) {
    .noticias-cats { flex-wrap: nowrap; overflow-x: auto; gap: 22px; scrollbar-width: none; }
    .noticias-cats::-webkit-scrollbar { display: none; }
}

/* Espaço entre o cabeçalho e a lista (padrão em todas as listagens) */
.noticias-lista, .documentos-lista, .galerias-lista { margin-top: 14px; margin-bottom: 2rem; }

/* Botão "Carregar mais" + notícias ocultas */
.noticia-item.is-hidden-item { display: none; }
.noticias-loadmore { display: flex; justify-content: center; margin-top: 22px; }

/* Grelha estilo OpenAI: sem caixa, thumbnail arredondado + título + meta */
.noticias-grid, .documentos-grid, .galerias-grid { --bs-gutter-x: 28px; margin-left: calc(var(--bs-gutter-x) * -.5); margin-right: calc(var(--bs-gutter-x) * -.5); }

/* ===== Cartão base — global (notícias, documentos, outros itens) ===== */
.item-card {
    display: flex; flex-direction: column; height: 100%;
    background: none; border: 0; border-radius: 0; box-shadow: none; text-decoration: none;
    transition: transform .3s ease;
}
.item-card:hover { box-shadow: none; }
.item-card-media {
    position: relative; aspect-ratio: 6 / 5; overflow: hidden;
    border-radius: 6px; background: var(--dark-alt);
}
.item-card-media img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.item-card:hover .item-card-media img { transform: scale(1.05); }
.item-card-body { display: flex; flex-direction: column; gap: 6px; padding: 16px 2px 0; flex: 1; }
.item-card-head { display: flex; align-items: center; gap: 12px; }
.item-card-head .item-card-title { flex: 1 1 auto; min-width: 0; }
.item-card-title { font-size: 1.1rem; font-weight: 700; color: var(--white); margin: 0; line-height: 1.35; transition: color var(--transition); }
.item-card:hover .item-card-title { color: var(--gold); }
.item-card-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; font-size: .78rem; color: var(--gray); }
.item-card-cat { color: var(--gold); font-weight: 700; text-transform: uppercase; letter-spacing: .05em; }
.item-card-sep { color: var(--gray); opacity: .5; }
.item-card-reading { display: inline-flex; align-items: center; gap: 4px; margin-left: auto; flex-shrink: 0; white-space: nowrap; text-transform: none; letter-spacing: 0; font-size: .78rem; font-weight: 500; color: var(--gray); }
.item-card-reading .bi { font-size: .95em; opacity: .85; }
/* descrição + "ler mais" sempre visíveis nos cartões */
.item-card-desc { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: .88rem; color: var(--gray); margin: 0; line-height: 1.5; }
.item-card-cta { display: inline-flex; align-items: center; gap: 4px; color: var(--gold); font-weight: 600; font-size: .9rem; margin-top: 4px; }
.item-card:hover .item-card-cta { color: var(--gold-light); }

/* ===== Cartão de galeria — mosaico de imagens (extende .item-card) =====
   Técnica CSS Grid mosaic: grelha de 6 colunas, tiles com spans
   (ref: medium.com/@axel/mosaic-layouts-with-css-grid) */
.galeria-mosaic {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    grid-auto-rows: 1fr;
    gap: 2px;
    width: 100%;
    height: 100%;
}
.galeria-mosaic .tile { position: relative; overflow: hidden; min-height: 0; }
.galeria-mosaic .tile:nth-child(1) { grid-column: span 4; grid-row: span 2; }
.galeria-mosaic .tile:nth-child(2),
.galeria-mosaic .tile:nth-child(3) { grid-column: span 2; }
.galeria-mosaic .tile:only-child { grid-column: span 6; }
.galeria-mosaic .tile img {
    position: absolute; inset: 0;
    display: block; width: 100%; height: 100%;
    object-fit: cover; transition: transform .5s ease;
}
.item-card--galeria .item-card-media { background: var(--dark-alt); }
.galeria-card-count {
    position: absolute; top: 10px; right: 10px; z-index: 2;
    display: inline-flex; align-items: center; gap: 5px;
    padding: 4px 10px; border-radius: 999px;
    background: rgba(35,42,49,.85); color: #fff;
    font-size: .72rem; font-weight: 600;
    backdrop-filter: blur(4px);
}
.galeria-card-count .bi { font-size: .85em; }

/* ===== Galeria detail — carousel imagem + thumbnails ===== */
.image-thumbnail-carousel {
    display: flex;
    flex-direction: column;
    gap: .9rem;
    margin-top: 24px;
}
.image-display {
    border-radius: var(--radius);
    overflow: hidden;
    /* Altura calculada para o detail da galeria caber no viewport:
       100vh - (header fixo + breadcrumb + título/meta + strip de thumbs + margens) */
    height: clamp(260px, calc(100dvh - 434px), 640px);
    background: var(--dark-alt);
    box-shadow: 0 12px 28px rgba(0,0,0,.3);
}
.image-display .screen { height: 100%; }
.image-display .screen img {
    display: block; width: 100%; height: 100%;
    object-fit: cover;
    transition: opacity .25s ease;
}
.thumbnail-carousel {
    display: flex;
    align-items: center;
    gap: .6rem;
}
.carousel__btn {
    flex: 0 0 2.5rem;
    display: flex; align-items: center; justify-content: center;
    background: transparent; border: 0;
    color: var(--muted); font-size: 1.6rem; line-height: 1;
    cursor: pointer; padding: 0;
    transition: color .2s ease, opacity .2s ease;
}
.carousel__btn:hover { color: var(--gold-light); }
.carousel__btn:disabled { opacity: .15; pointer-events: none; }
.carousel__slider {
    flex: 1 1 auto;
    display: flex;
    gap: .6rem;
    margin: 0; padding: .25rem;
    list-style: none;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
}
.carousel__slider::-webkit-scrollbar { display: none; }
.carousel__slide {
    flex: 1 1 calc((100% / 6) - 10px);
    min-width: 84px;
    max-width: 170px;
    scroll-snap-align: center;
    border-radius: 8px;
    overflow: hidden;
    cursor: pointer;
    opacity: .5;
    transition: opacity .2s ease, outline-color .2s ease;
    outline: 2px solid transparent;
}
.carousel__slide .thumbnail { aspect-ratio: 16 / 9; }
.carousel__slide img { display: block; width: 100%; height: 100%; object-fit: cover; }
.carousel__slide.active { opacity: 1; outline-color: var(--gold); }
.carousel__slide:hover { opacity: .85; }
@media (max-width: 680px) {
    .carousel__slide { flex-basis: calc((100% / 3) - 10px); min-width: 84px; }
    .carousel__btn { flex-basis: 2rem; font-size: 1.3rem; }
}

/* ===== Document Card (extends item-card; variante documento) ===== */
/* Cartão de documento: sóbrio, como uma entrada de registo — sem barra
   lateral, sombra nem elevação; no hover só muda a borda e o título */
.document-card { display: flex; flex-direction: column; height: 100%; padding: 22px 24px 18px; color: inherit; background: #fff; border: 1px solid #e4e8ed; border-radius: 10px; text-decoration: none; transition: border-color .2s ease; }
.document-card:hover { color: inherit; border-color: #b9d6d6; }
.document-card-head { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.document-card-icon { display: flex; align-items: center; justify-content: center; flex: 0 0 34px; width: 34px; height: 34px; border-radius: 8px; color: #237d7d; background: #eef5f5; font-size: 1rem; line-height: 1; }
.document-card-icon i { color: inherit; }
.document-card-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 10px; color: #6b7a84; font-size: .78rem; }
.document-card-cat { color: #237d7d; font-weight: 600; }
.document-card-meta span + span::before { content: ""; display: inline-block; width: 3px; height: 3px; margin-right: 10px; border-radius: 50%; background: #c3cbd1; vertical-align: middle; }
body.page-salvador .document-card h2 { color: #1F3B4A; font-size: 1.08rem; font-weight: 600; line-height: 1.35; margin: 0 0 8px; text-transform: none; transition: color .2s ease; }
body.page-salvador .document-card:hover h2 { color: #237d7d; }
.document-card p { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; color: #6b7a84; font-size: .88rem; line-height: 1.55; margin: 0 0 18px; }
.document-card-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: auto; padding-top: 14px; border-top: 1px solid #edf0f3; color: #6b7a84; font-size: .78rem; }
.document-card-link { display: inline-flex; align-items: center; gap: 6px; color: #237d7d; font-weight: 600; font-size: .82rem; }
.document-card-link .bi { font-size: .7rem; transition: transform .2s ease; }
.document-card:hover .document-card-link .bi { transform: translateX(2px); }
@media (prefers-reduced-motion: reduce) {
    .document-card, .document-card h2, .document-card-link .bi { transition: none; }
}

/* =====================================================================
   NOTÍCIAS — artigo (detalhe)
   ===================================================================== */
/* Coluna do artigo alinhada ao container (sem o padding de 12px da coluna) */
.post-single { padding-left: 0; padding-right: 0; }

/* Hero do artigo: imagem do utilizador OU gradiente gerado, com título sobreposto */
.post-hero-banner {
    position: relative; display: flex; align-items: flex-end;
    border-radius: var(--radius); overflow: hidden;
    aspect-ratio: 21 / 8; min-height: 260px; max-height: 440px;
    margin: 6px 0 36px; background: var(--dark-alt);
}
.post-hero-banner-img { position: absolute; inset: 0; z-index: 0; width: 100%; height: 100%; object-fit: cover; }
.post-hero-banner-bg { position: absolute; inset: -14%; z-index: 0; width: auto; height: auto; }
.post-hero-banner::after {
    content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none;
    border-radius: inherit;
    background:
        linear-gradient(to top, rgba(35,42,49,1) 0%, rgba(35,42,49,1) 11%, rgba(35,42,49,.80) 30%, rgba(35,42,49,.34) 58%, rgba(35,42,49,.04) 85%, transparent 100%),
        linear-gradient(rgba(35,42,49,.12), rgba(35,42,49,.12));
}
.post-hero-banner--gradient::before {
    content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
    opacity: .32; mix-blend-mode: overlay;
}
.post-hero-banner-content { position: relative; z-index: 3; padding: 36px; max-width: 860px; }
.post-hero-cat { display: inline-block; color: var(--gold); font-weight: 700; text-transform: uppercase; letter-spacing: .08em; font-size: .8rem; margin-bottom: 14px; }
.post-hero-title { color: #fff; font-size: clamp(1.8rem, 4.2vw, 3rem); font-weight: 800; line-height: 1.1; margin: 0 0 16px; }
.post-hero-meta { display: flex; align-items: center; gap: 10px; color: rgba(255,255,255,.85); font-size: .85rem; }
.post-hero-reading { display: inline-flex; align-items: center; gap: 5px; }
@media (max-width: 767.98px) {
    .post-hero-banner { aspect-ratio: 4 / 3; min-height: 0; }
    .post-hero-banner-content { padding: 22px; }
}
/* Byline no fim do artigo (autor + data) — minimalista */
.post-byline {
    display: flex; align-items: center; gap: 14px;
    margin-top: 44px; padding-top: 28px;
    border-top: 1px solid rgba(255,255,255,.08);
}
.post-byline-avatar {
    flex-shrink: 0; width: 46px; height: 46px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, var(--gold), var(--gold-light));
    color: var(--dark); font-weight: 700; font-size: 1.05rem; line-height: 1;
}
.post-byline-info { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.post-byline-name { color: var(--white); font-weight: 600; font-size: .95rem; }
.post-byline-meta { color: var(--gray); font-size: .82rem; }
.post-byline-dot { opacity: .6; }

/* Share row on article detail page - dark theme */
.post-share { border-top-color: rgba(255,255,255,.08); }
.post-share-label { color: var(--gray); }
.post-share-btn { color: var(--gray); background: rgba(255,255,255,.06); border-color: rgba(255,255,255,.1); }
.post-share-btn:hover { color: #fff; }
.post-share-btn[href*="facebook"]:hover,
.post-share-btn[title="Facebook"]:hover { background: #1877F2; }
.post-share-btn[href*="twitter"]:hover,
.post-share-btn[title="X (Twitter)"]:hover { background: #000; }
.post-share-btn[href*="whatsapp"]:hover,
.post-share-btn[title="WhatsApp"]:hover { background: #25D366; }
.post-share-btn[href*="linkedin"]:hover,
.post-share-btn[title="LinkedIn"]:hover { background: #0A66C2; }
.post-share-btn--copy:hover { background: var(--dark-alt); color: var(--gold); }
.post-share-btn--copy.copied { background: var(--gold); color: var(--dark); border-color: var(--gold); }

/* Secção "Continue a ler" no fundo do artigo */
.post-related { margin-top: 56px; margin-bottom: 24px; }
.post-related-head { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 28px; }
.post-related-title { font-size: 1.5rem; font-weight: 700; color: var(--white); margin: 0; }
.post-related-all { color: var(--gold); font-weight: 600; font-size: .9rem; display: inline-flex; align-items: center; gap: 6px; text-decoration: none; white-space: nowrap; }
.post-related-all:hover { color: var(--gold-light); }

.post-breadcrumb { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: .82rem; color: var(--gray); margin-bottom: 20px; }
.post-breadcrumb a { color: var(--gray); text-decoration: none; }
.post-breadcrumb a:hover { color: var(--gold); }
.post-breadcrumb-current { color: var(--gold); }
.post-title { font-size: clamp(1.8rem, 4vw, 2.6rem); font-weight: 800; color: var(--white); line-height: 1.15; margin-bottom: 24px; }
.post-hero { margin: 0 0 32px; border-radius: var(--radius); overflow: hidden; border: 1px solid rgba(51,153,153,.12); }
.post-hero img { width: 100%; display: block; }
.post-content { color: var(--text); font-size: 1.02rem; line-height: 1.8; }
.post-content h2, .post-content h3, .post-content h4 { color: var(--white); margin: 32px 0 14px; }
.post-content a { color: var(--gold); text-decoration: underline; }
.post-content img { border-radius: var(--radius); margin: 20px 0; }
.post-content blockquote { border-left: 3px solid var(--gold); padding-left: 20px; margin: 24px 0; color: var(--gray); font-style: italic; }
.post-gallery { margin-top: 40px; }
.post-gallery h3 { color: var(--white); margin-bottom: 16px; }
.post-footer { margin-top: 40px; padding-top: 24px; border-top: 1px solid rgba(255,255,255,.08); }
.post-meta-row { display: flex; flex-wrap: wrap; gap: 28px; }
.post-meta-item { display: flex; flex-direction: column; gap: 2px; }
.post-meta-label { font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; color: var(--gray); }
.post-meta-value { font-size: .95rem; color: var(--white); font-weight: 600; }

/* =====================================================================
   FOOTER  (layout do Explora Mais: marca + 3 colunas + barra de base)
   ===================================================================== */
footer.footer, body.page-salvador footer.footer { background: #1d303b; color: rgba(243, 247, 246, .62); font-size: .92rem; border-top: 0; }
body.page-salvador footer.footer .footer-desc { color: rgba(243, 247, 246, .62); }
.footer-links-wrap { padding: clamp(56px, 7vw, 88px) 0 clamp(40px, 5vw, 56px); border-bottom: 1px solid rgba(243, 247, 246, .1); }
.footer-grid { display: grid; grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0, 1fr)); gap: 32px clamp(24px, 4vw, 56px); }
.footer-brand-link { display: inline-block; }
.footer-logo { display: block; height: 42px; width: auto; max-width: 220px; object-fit: contain; }
.footer-desc { margin: 18px 0 0; max-width: 34ch; line-height: 1.55; color: inherit; }
.footer-col { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
body.page-salvador footer.footer .footer-title { margin: 0 0 6px; font-size: .75rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: #8de0dc; }
footer.footer .footer-col a, footer.footer .footer-col span { color: rgba(243, 247, 246, .62); font-weight: 400; text-decoration: none; transition: color .15s; }
footer.footer .footer-col a:hover { color: #fff; }
.footer-base { padding: 22px 0; font-size: .85rem; }
.footer-base .iu-container { display: flex; flex-wrap: wrap; gap: 10px 28px; justify-content: space-between; align-items: center; }
footer.footer .footer-base a { color: rgba(243, 247, 246, .8); font-weight: 600; text-decoration: none; }
footer.footer .footer-base a:hover { color: #fff; }
@media (max-width: 860px) {
    .footer-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .footer-brand { grid-column: 1 / -1; }
}
@media (max-width: 520px) {
    .footer-grid { grid-template-columns: 1fr 1fr; }
    /* alvos de toque maiores (a altura passa do gap para o próprio link) */
    .footer-col { gap: 0; }
    body.page-salvador footer.footer .footer-title { margin-bottom: 4px; }
    footer.footer .footer-col a, footer.footer .footer-col span { padding: 7px 0; }
    footer.footer .footer-col a[href^="mailto"] { overflow-wrap: anywhere; }
}

/* =====================================================================
   PÁGINA SOBRE NÓS
   ===================================================================== */
.sobre-page { background: var(--dark); }
.sobre-page__head { max-width: 760px; margin-bottom: 40px; }
.sobre-page__intro { font-size: 1.08rem; color: var(--text); }
.sobre-page__content { color: var(--text); font-size: 1.02rem; line-height: 1.8; }
.sobre-page__content h2, .sobre-page__content h3 { color: var(--white); margin: 32px 0 14px; }
.sobre-page__content a { color: var(--gold); text-decoration: underline; }
.sobre-page__content img { border-radius: var(--radius); margin: 20px 0; max-width: 100%; }
.sobre-page__fallback .cta-button { margin-top: 10px; }

/* =====================================================================
   MAPA DA FREGUESIA (MapLibre + OpenFreeMap) — página A Freguesia
   ===================================================================== */
.sobre-map-section { padding-top: 0; }

/* Bloco de localização dentro do container da página */
.sobre-map-block {
    margin-top: 56px;
    padding-top: 40px;
    border-top: 1px solid #e4e8ed;
}
/* Descrição breve que interliga as secções da página */
.sobre-section-lead {
    margin: 0 0 24px;
    max-width: 68ch;
    font-size: .98rem;
    line-height: 1.65;
    color: #647b87;
}
.sobre-map-block .mapa-freguesia { margin-bottom: 20px; }

.mapa-freguesia {
    height: 480px;
    border-radius: var(--radius);
    border: 1px solid var(--border);
    box-shadow: var(--shadow, 0 10px 28px rgba(24,60,80,.08));
    z-index: 1; /* abaixo do header fixo */
}
/* Barra de info por baixo do mapa (morada, atendimento, Google Maps) */
.sobre-map-info {
    display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
    gap: 12px 32px; margin-top: 20px; padding: 16px 24px;
    background: var(--surface); border: 1px solid var(--border);
    border-radius: var(--radius); box-shadow: var(--shadow, 0 10px 28px rgba(24,60,80,.08));
}
.sobre-map-info__item {
    display: inline-flex; align-items: center; gap: 8px;
    font-size: .92rem; font-weight: 600; color: var(--ink);
}
.sobre-map-info__item .bi { color: var(--gold); font-size: 1.05rem; }
.sobre-map-info__link { text-decoration: none; color: var(--gold-light); transition: color .2s ease; }
.sobre-map-info__link:hover { color: var(--gold); text-decoration: underline; }
/* Locais de referência: cards clicáveis (focam o mapa) + botão Google Maps */
.sobre-feature-link {
    position: relative;
    display: flex; flex-direction: column;
    height: 100%;
    text-decoration: none; padding: 8px; border-radius: var(--radius);
    transition: background .2s ease, transform .2s ease;
}
.sobre-feature-link:hover,
.sobre-feature-link:focus-visible {
    background: rgba(51,153,153,.06);
    transform: translateY(-2px);
    outline: none;
}
.sobre-feature-link:hover .sobre-feature-icon { background: var(--gold); color: #fff; }
/* Categoria (etiqueta) */
.sobre-feature-cat {
    display: inline-block; align-self: center;
    margin-bottom: 10px; padding: 3px 10px;
    font-size: .68rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
    color: var(--gold);
    background: rgba(51,153,153,.14);
    border-radius: 999px;
}
.sobre-feature-link h4 { margin: 0 0 8px; }
.sobre-feature-link p { margin: 0 0 12px; line-height: 1.6; }
.sobre-feature-media { display: block; margin-bottom: 14px; }
/* Botão "Abrir no Google Maps" no canto do card */
.sobre-feature-gmaps {
    position: absolute; top: 6px; right: 6px;
    display: inline-flex; align-items: center; justify-content: center;
    width: 30px; height: 30px; border-radius: 50%;
    background: rgba(51,153,153,.14); color: var(--gold);
    font-size: .8rem; text-decoration: none;
    opacity: .7; transition: opacity .2s ease, background .2s ease, color .2s ease, transform .2s ease;
}
.sobre-feature-gmaps:hover {
    opacity: 1; background: var(--gold); color: #fff; transform: scale(1.08);
}
.sobre-feature-gmaps:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }
.sobre-feature-more {
    display: inline-flex; align-items: center; justify-content: center; gap: 6px; margin-top: auto;
    font-size: .82rem; font-weight: 600; color: var(--gold-light);
    opacity: 0; transform: translateY(4px); transition: opacity .2s ease, transform .2s ease;
}
.sobre-feature-link:hover .sobre-feature-more { opacity: 1; transform: translateY(0); }
.sobre-feature-more .bi { transition: transform .2s ease; }
.sobre-feature-link:hover .sobre-feature-more .bi { transform: translateX(3px); }

/* Marcadores dos locais de referência no mapa */
.ss-marker { cursor: pointer; }
.ss-marker__pin {
    display: block; width: 18px; height: 18px; border-radius: 50% 50% 50% 0;
    transform: rotate(-45deg);
    background: var(--gold, #c9a227);
    border: 2px solid #fff;
    box-shadow: 0 3px 10px rgba(10, 30, 42, .35);
    transition: transform .2s ease, background .2s ease;
}
.ss-marker:hover .ss-marker__pin { background: #339999; transform: rotate(-45deg) scale(1.15); }
/* Pin da Junta de Freguesia: sempre visível, maior e em teal */
.ss-marker--junta .ss-marker__pin {
    width: 22px; height: 22px;
    background: #339999;
    box-shadow: 0 4px 14px rgba(51, 153, 153, .5);
}
.ss-marker--junta:hover .ss-marker__pin { background: #237d7d; }
.mapa-freguesia .maplibregl-popup-content {
    padding: 10px 14px; border-radius: 10px; font-family: var(--text-family);
    box-shadow: 0 8px 24px rgba(10, 30, 42, .2); color: #183c50;
}
/* Popup Leaflet ajustado ao tema */
.mapa-freguesia .leaflet-popup-content-wrapper { border-radius: 8px; }
.mapa-freguesia .leaflet-popup-content { margin: 12px 16px; font-family: var(--text-family); }
@media (max-width: 768px) {
    .mapa-freguesia { height: 340px; }
}

/* =====================================================================
   HOMEPAGE — Preview "Sobre Nós" (substitui a antiga secção Serviços)
   ===================================================================== */
.sobre-preview { background: var(--dark); }
.sobre-preview__grid { display: grid; grid-template-columns: 1.5fr 1fr; gap: 64px; align-items: center; }
.sobre-preview__text h2 { color: #fff; font-size: clamp(2rem, 4vw, 3.1rem); margin-bottom: 18px; }
.sobre-preview__desc { font-size: 1.08rem; color: var(--muted); max-width: 560px; }
.sobre-preview__desc p { margin-bottom: 12px; }
.sobre-preview__text .cta-button { margin-top: 26px; }
.sobre-preview__text .cta-button .bi { transition: transform .2s ease; }
.sobre-preview__text .cta-button:hover .bi { transform: translateX(4px); }
.sobre-preview__stats {
    list-style: none; margin: 0; padding: 0;
    display: grid; grid-template-columns: 1fr; gap: 18px;
}
.sobre-preview__stats li {
    display: flex; align-items: baseline; gap: 14px;
    padding: 18px 22px;
    background: var(--surface); border: 1px solid var(--border); border-left: 4px solid var(--gold);
    border-radius: 8px;
}
.sobre-preview__stat-number {
    font-size: 1.9rem; font-weight: 800; color: var(--gold-light);
    font-family: var(--text-family-bold); line-height: 1; min-width: 110px;
}
.sobre-preview__stat-label { font-size: .95rem; color: var(--muted); }
@media (max-width: 900px) {
    .sobre-preview__grid { grid-template-columns: 1fr; gap: 36px; }
    .sobre-preview__stats { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
    .sobre-preview__stats { grid-template-columns: 1fr; }
}

/* =====================================================================
   HOMEPAGE — Backgrounds alternados por secção (oscilação)
   ===================================================================== */
/* Base: --dark (#2c343d) — hero e secções sem classe */
/* bg-alt: --dark-alt (#232a31) */
.home-section.bg-alt { background: var(--dark-alt); }
/* bg-teal: --dark com gradiente radial teal subtil */
.home-section.bg-teal {
    background:
        radial-gradient(circle at 85% 15%, rgba(51,153,153,.14), transparent 45%),
        radial-gradient(circle at 10% 85%, rgba(51,153,153,.10), transparent 45%),
        var(--dark);
}
/* bg-teal-alt: --dark-alt com gradiente radial teal subtil */
.home-section.bg-teal-alt {
    background:
        radial-gradient(circle at 15% 20%, rgba(51,153,153,.14), transparent 45%),
        radial-gradient(circle at 85% 80%, rgba(51,153,153,.10), transparent 45%),
        var(--dark-alt);
}
/* Separador subtil entre secções alternadas */
.home-section.bg-alt + .home-section,
.home-section.bg-teal + .home-section,
.home-section.bg-teal-alt + .home-section { border-top: 1px solid rgba(255,255,255,.04); }

/* Títulos com sublinhado dourado (estilo "underline" do site antigo) */
.sobre-underline {
    display: flex; align-items: center; gap: 20px;
    font-size: clamp(1.6rem, 3vw, 2.2rem); font-weight: 800; color: var(--white);
    margin: 56px 0 32px;
}
.sobre-underline:first-child { margin-top: 0; }
.sobre-underline span { position: relative; padding-bottom: 12px; }
.sobre-underline span::after {
    content: ""; position: absolute; left: 0; bottom: 0; width: 64px; height: 3px;
    background: var(--gold); border-radius: 2px;
}

/* Layout 50x50 */
.sobre-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; }
.sobre-col h3 { font-size: 1.25rem; color: var(--gold-light); margin: 0 0 16px; }
.sobre-justify { text-align: justify; }
.sobre-subheader {
    font-size: .82rem; font-weight: 800; color: var(--gold);
    text-transform: uppercase; letter-spacing: .12em; margin: 32px 0 16px;
}
.sobre-col > p { color: var(--text); }

/* Listas (equipa / assembleia / membros) */
.sobre-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 14px; }
.sobre-list h4 { font-size: 1rem; color: var(--white); margin: 0 0 2px; }
.sobre-list p { margin: 0; color: var(--gray); font-size: .95rem; }
.sobre-list a { color: var(--gold); text-decoration: none; }
.sobre-list a:hover { color: var(--gold-light); text-decoration: underline; }
.sobre-list-inline { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 24px; }
.sobre-list-inline li { color: var(--text); font-size: .95rem; }

/* Locais de referência (features) */
.sobre-features {
    margin: 48px 0; padding: 48px 32px;
    background:
        radial-gradient(circle at 15% 20%, rgba(51,153,153,.16), transparent 45%),
        radial-gradient(circle at 85% 80%, rgba(51,153,153,.12), transparent 45%),
        var(--dark-alt);
    border: 1px solid rgba(51,153,153,.12); border-radius: var(--radius);
}
.sobre-features-list {
    list-style: none; margin: 0; padding: 0;
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 32px; text-align: center;
}
.sobre-feature-icon {
    display: inline-flex; align-items: center; justify-content: center;
    width: 64px; height: 64px; margin-bottom: 16px; border-radius: 50%;
    background: rgba(51,153,153,.14); color: var(--gold); font-size: 1.6rem;
}
.sobre-features-list h4 { font-size: 1.05rem; color: var(--white); margin: 0 0 6px; }
.sobre-features-list p { font-size: .9rem; color: var(--gray); margin: 0; }
@media (max-width: 900px) {
    .sobre-cols { grid-template-columns: 1fr; gap: 32px; }
    .sobre-features-list { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
    .sobre-features-list { grid-template-columns: 1fr; }
    .sobre-list-inline { grid-template-columns: 1fr; }
}

/* =====================================================================
   RESPONSIVE
   ===================================================================== */
@media (max-width: 1024px) {
    .about__grid, .reach__grid, .contact__grid { grid-template-columns: 1fr; gap: 40px; }
    .services__grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 768px) {
    .services__grid { grid-template-columns: 1fr; }
    .iu-section { padding: 72px 0; }
    .hero { min-height: auto; padding: 120px 0 80px; }
    @keyframes heroSlideIn { from { opacity: 0; transform: translateX(30px); } to { opacity: 1; transform: translateX(0); } }
}

/* Preferência de movimento reduzido */
@media (prefers-reduced-motion: reduce) {
    .hero__badge, .hero__title, .hero__subtitle, .hero__actions,
    .fade-up { animation: none !important; opacity: 1 !important; transform: none !important; }
}

/* =====================================================================
   COMPONENTES GERAIS — botões, formulários, acessibilidade
   ===================================================================== */
.btn-primary {
    background: var(--color-primary); border-color: var(--color-primary); color: #fff;
}
.btn-primary:hover, .btn-primary:focus { background: #4db6b6; border-color: #4db6b6; color: #fff; }
.btn-outline-primary { color: var(--color-primary); border-color: var(--color-primary); }
.btn-outline-primary:hover { background: var(--color-primary); border-color: var(--color-primary); color: #fff; }
.btn-link, a.link-primary { color: var(--color-primary); }

.form-control {
    background: rgba(255,255,255,.06);
    border-color: rgba(255,255,255,.14);
    color: #fff;
}
.form-control:focus {
    background: rgba(255,255,255,.1);
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(51,153,153,.18);
    color: #fff;
}
.form-control::placeholder { color: rgba(255,255,255,.45); }

/* ===== Documentos — lista vazia ===== */
.documentos-empty { text-align: center; padding: 60px 20px; color: var(--gray); }
.documentos-empty p { font-size: 1.1rem; }

/* ===== Document Detail ===== */
.documento-detail { max-width: 800px; margin: 0 auto; }
.documento-detail-header { display: flex; align-items: flex-start; gap: 24px; margin-bottom: 32px; }
.documento-detail-icon { flex: 0 0 80px; display: flex; flex-direction: column; align-items: center; justify-content: center; background: rgba(255,255,255,.04); border: 1px solid var(--border); border-radius: 16px; padding: 20px 12px; gap: 6px; }
.documento-detail-icon i { font-size: 2.5rem; color: var(--doc-color, var(--gold)); }
.documento-detail-ext { font-size: .7rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--doc-color, var(--gold)); background: rgba(255,255,255,.06); padding: 2px 8px; border-radius: 4px; }
.documento-detail-info { flex: 1; min-width: 0; }
.documento-detail-title { font-size: clamp(1.5rem, 3vw, 2rem); font-weight: 700; color: var(--white); margin: 0 0 8px; line-height: 1.2; }
.documento-detail-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; font-size: .85rem; color: var(--gray); }
.documento-detail-cat { color: var(--gold); font-weight: 700; text-transform: uppercase; letter-spacing: .05em; }
.documento-detail-date { }
.documento-detail-author { }
.documento-detail-content { margin-bottom: 32px; color: var(--gray); line-height: 1.7; font-size: .95rem; }
.documento-detail-content p { margin-bottom: 16px; }
.documento-detail-file { margin-top: 24px; }
.documento-detail-files { display: flex; flex-direction: column; gap: 12px; }
.documento-detail-files-title { font-size: 1.1rem; font-weight: 700; color: var(--white); margin-bottom: 4px; }
.documento-detail-file-card { position: relative; display: flex; align-items: center; gap: 16px; padding: 18px 22px; background: var(--surface); border: 1px solid var(--border); border-left: 4px solid var(--color-secondary); border-radius: 8px; box-shadow: 0 8px 24px rgba(0,0,0,.25); transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease; }
.documento-detail-file-card:hover { border-color: var(--color-secondary); box-shadow: 0 14px 30px rgba(0,0,0,.35); transform: translateY(-3px); }
.documento-detail-file-icon { flex: 0 0 2.75rem; width: 2.75rem; height: 2.75rem; display: flex; align-items: center; justify-content: center; border-radius: 8px; background: rgba(77, 182, 182, .12); }
.documento-detail-file-icon i { font-size: 1.25rem; line-height: 1; color: var(--doc-color, var(--color-secondary)); }
.documento-detail-file-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.documento-detail-file-name { font-size: .9rem; color: var(--white); font-weight: 600; word-break: break-all; }
.documento-detail-file-size { font-size: .8rem; color: var(--gray); }
.documento-detail-file-actions { flex: 0 0 auto; display: flex; gap: 10px; }
.documento-detail-btn { display: inline-flex; align-items: center; gap: 6px; padding: 10px 20px; border-radius: 8px; font-size: .85rem; font-weight: 600; text-decoration: none; transition: all .25s ease; }
.documento-detail-btn--outline { border: 1px solid var(--border); color: var(--white); background: transparent; }
.documento-detail-btn--outline:hover { border-color: var(--color-primary); color: var(--color-primary); }
.documento-detail-btn--primary { background: var(--gold); color: var(--dark); border: 1px solid var(--gold); }
.documento-detail-btn--primary:hover { background: var(--gold-light); border-color: var(--gold-light); }

@media (max-width: 600px) {
    .documento-detail-header { flex-direction: column; align-items: center; text-align: center; }
    .documento-detail-file-card { flex-direction: column; text-align: center; }
    .documento-detail-file-actions { width: 100%; justify-content: center; }
}

/* ===== Document Detail — biblioteca pública (tema escuro) ===== */
.document-detail { margin-top: 24px; background: #fff; border: 1px solid #e4e8ed; border-radius: var(--radius); overflow: hidden; box-shadow: 0 8px 24px rgba(24,39,57,.06); }
.document-detail-header { display: flex; gap: 1.25rem; align-items: flex-start; padding: 1.75rem 2rem; background: linear-gradient(135deg, #fff 0%, #fff8f7 100%); border-bottom: 1px solid #e4e8ed; }
.document-detail-icon { display: flex; align-items: center; justify-content: center; flex: 0 0 4rem; width: 4rem; height: 4rem; border-radius: 10px; color: var(--doc-color, var(--color-secondary)); background: #fff0ee; font-size: 2rem; line-height: 1; }
.document-detail-icon i { color: inherit; }
.document-detail-heading { min-width: 0; flex: 1; }
.document-detail-heading h1 { color: #123b57; font-size: clamp(1.5rem, 3vw, 2rem); line-height: 1.2; margin: .25rem 0 .75rem; text-transform: none; }
.document-kicker { color: var(--color-secondary); font-weight: 700; font-size: .75rem; letter-spacing: .12em; text-transform: uppercase; }
.document-meta { display: flex; flex-wrap: wrap; gap: .5rem 1rem; color: #667684; font-size: .85rem; }
.document-meta span { display: inline-flex; align-items: center; gap: .35rem; }
.document-meta .bi { color: var(--color-secondary); opacity: .9; }
.document-detail-description { padding: 1.75rem 2rem; color: #444; border-bottom: 1px solid #e4e8ed; }
.document-detail-description > :last-child { margin-bottom: 0; }
.document-files { padding: 1.75rem 2rem; }
.document-section-heading { display: flex; align-items: center; justify-content: space-between; margin-bottom: .75rem; }
.document-section-heading h2 { color: #123b57; font-size: 1.25rem; margin: 0; text-transform: none; }
.document-section-heading > span { display: inline-flex; align-items: center; justify-content: center; min-width: 1.75rem; height: 1.75rem; padding: 0 .35rem; color: #fff; background: var(--color-secondary); border-radius: 8px; font-size: .75rem; }
.document-file-list { border-top: 1px solid #e4e8ed; }
.document-file-row { display: flex; align-items: center; gap: 1rem; padding: 1rem 0; border-bottom: 1px solid #e4e8ed; }
.document-file-row:last-child { border-bottom: 0; }
.document-file-type { display: flex; align-items: center; justify-content: center; flex: 0 0 2.5rem; width: 2.5rem; height: 2.5rem; border-radius: 8px; color: var(--doc-color, var(--color-secondary)); background: #f7f8fa; font-size: 1.25rem; }
.document-file-type i { color: inherit; }
.document-file-info { flex: 1; min-width: 0; }
.document-file-info strong { display: block; color: #123b57; font-size: .95rem; overflow-wrap: anywhere; }
.document-file-info span { display: block; color: #667684; font-size: .75rem; margin-top: .2rem; }
.document-file-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .45rem; }
.document-file-action { display: inline-flex; align-items: center; gap: .35rem; padding: .45rem .75rem; border: 1px solid #dce2e6; border-radius: 8px; color: var(--color-secondary); font-weight: 700; font-size: .76rem; text-transform: uppercase; white-space: nowrap; text-decoration: none; transition: all .2s ease; }
.document-file-action:hover { color: #fff; background: var(--color-secondary); border-color: var(--color-secondary); }
.document-file-action-primary { color: #fff; background: var(--color-secondary); border-color: var(--color-secondary); }
.document-file-action-primary:hover { color: #fff; background: var(--color-primary); border-color: var(--color-primary); }
@media (max-width: 600px) {
    .document-detail-header { flex-direction: column; align-items: flex-start; text-align: left; }
    .document-detail-description, .document-files { padding: 1.25rem; }
    .document-file-row { align-items: flex-start; flex-wrap: wrap; }
    .document-file-info { flex-basis: calc(100% - 4rem); }
    .document-file-actions { width: 100%; justify-content: flex-start; padding-left: 3.5rem; }
}
@media (prefers-reduced-motion: reduce) {
    .document-card, .document-card-link .bi, .document-file-action { transition: none; }
}

@media (max-width: 900px) {
    .documentos-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
    .documentos-grid { grid-template-columns: 1fr; }
}

:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }

/* =====================================================================
   LIGHT THEME REFRESH
   Public São Salvador theme: light surfaces, dark readable text and teal
   accents. Kept at the end of this file so the older shared-theme rules
   remain compatible with the existing templates while this layer provides
   one consistent visual source of truth for page-salvador.
   ===================================================================== */
:root {
    --page: #ffffff;
    --surface: #ffffff;
    --surface-alt: #eef4f7;
    --heading: #183c50;
    --ink: #314f5e;
    --muted: #647b87;
    --border: #dce8ed;
    --shadow: 0 10px 28px rgba(24, 60, 80, .08);

    /* Preserve the existing teal brand colour. */
    --gold: #339999;
    --gold-light: #237d7d;
    --dark: #ffffff;
    --dark-alt: #ffffff;
    --light: #ffffff;
    --white: #183c50;
    --gray: #647b87;
    --text: #314f5e;

    /* Compatibility tokens consumed by appv2.css and legacy components. */
    --color-primary: #339999;
    --color-secondary: #237d7d;
    --color-alt: #eef4f7;
    --color-dark: #183c50;
    --color-darker: #102f42;
    --color-black: #183c50;
    --color-btn: #339999;
    --color-white: #ffffff;
    --color-gray: #ffffff;
    --color-gray-medium: #e7eff3;
    --color-gray-dark: #647b87;
    --color-gold: #339999;
    --color-text: #314f5e;
    --color-header: #ffffff;
}

html,
body,
body.page-inup,
body.page-salvador {
    background: var(--page);
    color: var(--ink);
}

body.page-salvador {
    --surface: #ffffff;
    --border: #dce8ed;
    --ink: #314f5e;
    --muted: #647b87;
}

body.page-salvador h1,
body.page-salvador h2,
body.page-salvador h3,
body.page-salvador h4,
body.page-salvador h5,
body.page-salvador h6,
body.page-salvador .h1,
body.page-salvador .h2,
body.page-salvador .h3,
body.page-salvador .h4,
body.page-salvador .h5,
body.page-salvador .h6 {
    color: var(--heading);
}

body.page-salvador a { color: inherit; }
body.page-salvador a:hover { color: var(--gold-light); }
body.page-salvador ::selection { color: #fff; background: var(--gold); }
body.page-salvador ::-moz-selection { color: #fff; background: var(--gold); }

/* Homepage hero: image-led and tall, with only enough overlay for text. */
body.page-salvador .home-hero {
    background: var(--page);
    color: #fff;
}

body.page-salvador .home-hero .carousel-banner,
body.page-salvador .home-hero .carousel-inner,
body.page-salvador .home-hero .carousel-item,
body.page-salvador .home-hero .fullwidth {
    min-height: clamp(560px, 76vh, 820px);
}
/* Desktop: o banner enche o ecrã todo abaixo do header */
@media (min-width: 992px) {
    body.page-salvador .home-hero .carousel-banner,
    body.page-salvador .home-hero .carousel-inner,
    body.page-salvador .home-hero .carousel-item,
    body.page-salvador .home-hero .fullwidth,
    body.page-salvador .home-hero-fallback {
        min-height: clamp(640px, calc(100vh - var(--header-h, 120px)), 1080px);
        min-height: clamp(640px, calc(100svh - var(--header-h, 120px)), 1080px);
    }
}

body.page-salvador .home-hero .carousel-banner { max-height: none; }
body.page-salvador .home-hero .fullwidth { max-height: none; }

body.page-salvador .home-hero .carousel-slide-content {
    background: linear-gradient(90deg, rgba(14, 45, 62, .44) 0%, rgba(14, 45, 62, .24) 42%, rgba(14, 45, 62, 0) 78%);
}

body.page-salvador .home-hero .banner-slide-title,
body.page-salvador .home-hero .banner-slide-content,
body.page-salvador .home-hero .banner-slide-content p,
body.page-salvador .home-hero .banner-slide-content li {
    color: #fff;
    text-shadow: 0 1px 10px rgba(10, 32, 44, .32);
}

body.page-salvador .home-hero .banner-slide-title { font-weight: 700; }

body.page-salvador .home-hero-fallback {
    min-height: clamp(560px, 76vh, 820px);
    background: radial-gradient(circle at 78% 24%, rgba(51, 153, 153, .12), transparent 42%);
    color: var(--ink);
}

body.page-salvador .home-hero-fallback h1 { color: var(--heading); }
body.page-salvador .home-hero-fallback p:not(.eyebrow) { color: var(--muted); }
body.page-salvador .home-hero .carousel-arrow-btn { color: #fff; text-shadow: 0 1px 8px rgba(10, 32, 44, .4); }

@media (max-width: 767.98px) {
    body.page-salvador .home-hero .carousel-banner,
    body.page-salvador .home-hero .carousel-inner,
    body.page-salvador .home-hero .carousel-item,
    body.page-salvador .home-hero .fullwidth,
    body.page-salvador .home-hero-fallback {
        min-height: clamp(520px, 78vh, 680px);
    }

    body.page-salvador .home-hero .carousel-slide-content {
        background: linear-gradient(90deg, rgba(14, 45, 62, .52) 0%, rgba(14, 45, 62, .24) 64%, rgba(14, 45, 62, .08) 100%);
    }
}

/* Light page sections and content surfaces */
body.page-salvador .home-section,
body.page-salvador .about,
body.page-salvador .services,
body.page-salvador .reach,
body.page-salvador .contact,
body.page-salvador .contact-page,
body.page-salvador .sobre-page,
body.page-salvador .sobre-preview {
    background: var(--page) !important;
    color: var(--ink);
}

body.page-salvador .home-section.bg-alt,
body.page-salvador .home-section.bg-teal,
body.page-salvador .home-section.bg-teal-alt,
body.page-salvador .about,
body.page-salvador .contact,
body.page-salvador .contact-page {
    background: var(--page) !important;
}

body.page-salvador .home-section + .home-section { border-top: 1px solid var(--border); }
body.page-salvador .section-heading h2,
body.page-salvador .about-section h2,
body.page-salvador .sobre-preview__text h2,
body.page-salvador .section-title,
body.page-salvador .post-related-title,
body.page-salvador .post-title { color: var(--heading); }

body.page-salvador .section-heading > p:not(.eyebrow),
body.page-salvador .section-desc,
body.page-salvador .sobre-preview__desc,
body.page-salvador .about__text p:not(.section-label),
body.page-salvador .post-content { color: var(--ink); }

body.page-salvador .shortcut-card,
body.page-salvador .listing-box,
body.page-salvador .service-card,
body.page-salvador .contact__cta,
body.page-salvador .sobre-preview__stats li,
body.page-salvador .emprego-candidatura,
body.page-salvador .documento-detail-file-card {
    background: var(--surface);
    border-color: var(--border);
    box-shadow: var(--shadow);
    color: var(--ink);
}

body.page-salvador .shortcut-card:hover,
body.page-salvador .listing-box:hover,
body.page-salvador .service-card:hover,
body.page-salvador .documento-detail-file-card:hover {
    border-color: rgba(51, 153, 153, .48);
    box-shadow: 0 14px 30px rgba(24, 60, 80, .12);
}

body.page-salvador .shortcut-card h3,
body.page-salvador .listing-box h3,
body.page-salvador .service-card__title,
body.page-salvador .contact__item-value,
body.page-salvador .contact__cta h3,
body.page-salvador .emprego-candidatura-title,
body.page-salvador .emprego-candidatura-modelo-title,
body.page-salvador .documento-detail-title,
body.page-salvador .documento-detail-files-title,
body.page-salvador .documento-detail-file-name {
    color: var(--heading);
}

body.page-salvador .shortcut-card p,
body.page-salvador .listing-box p,
body.page-salvador .service-card__text,
body.page-salvador .contact__cta p,
body.page-salvador .emprego-candidatura-desc,
body.page-salvador .documento-detail-content,
body.page-salvador .documento-detail-file-size {
    color: var(--muted);
}

body.page-salvador .listing-media,
body.page-salvador .item-card-media,
body.page-salvador .item-card--galeria .item-card-media,
body.page-salvador .image-display,
body.page-salvador .reach__video-wrapper,
body.page-salvador .reach__video-placeholder {
    background: var(--surface-alt);
}

body.page-salvador .item-card-title,
body.page-salvador .noticias-page-title,
body.page-salvador .noticias-intro h1,
body.page-salvador .noticias-intro h2,
body.page-salvador .noticias-intro h3,
body.page-salvador .sobre-col h4,
body.page-salvador .sobre-list h4,
body.page-salvador .sobre-features-list h4,
body.page-salvador .post-content h2,
body.page-salvador .post-content h3,
body.page-salvador .post-content h4,
body.page-salvador .post-gallery h3,
body.page-salvador .post-meta-value {
    color: var(--heading);
}

body.page-salvador .item-card-desc,
body.page-salvador .item-card-meta,
body.page-salvador .item-card-reading,
body.page-salvador .noticias-intro,
body.page-salvador .noticias-cat,
body.page-salvador .sobre-list p,
body.page-salvador .sobre-list-inline li,
body.page-salvador .post-breadcrumb,
body.page-salvador .post-breadcrumb a,
body.page-salvador .post-byline-meta,
body.page-salvador .post-share-label,
body.page-salvador .post-meta-label {
    color: var(--muted);
}

body.page-salvador .item-card:hover .item-card-title,
body.page-salvador .noticias-cat:hover,
body.page-salvador .noticias-cat.active { color: var(--gold-light); }

body.page-salvador .documento-detail-icon,
body.page-salvador .documento-detail-ext,
body.page-salvador .stat,
body.page-salvador .service-card__icon,
body.page-salvador .contact__item-icon {
    background: var(--surface-alt);
    border-color: var(--border);
}

/* Buttons, forms and focus states */
body.page-salvador .cta-button,
body.page-salvador .btn--primary,
body.page-salvador .btn-primary,
body.page-salvador .btn-gold,
body.page-salvador .btn-black,
body.page-salvador .btn-blue,
body.page-salvador .documento-detail-btn--primary {
    background: var(--gold);
    border-color: var(--gold);
    color: #fff;
}

body.page-salvador .cta-button:hover,
body.page-salvador .btn--primary:hover,
body.page-salvador .btn-primary:hover,
body.page-salvador .btn-gold:hover,
body.page-salvador .btn-black:hover,
body.page-salvador .btn-blue:hover,
body.page-salvador .documento-detail-btn--primary:hover {
    background: var(--gold-light);
    border-color: var(--gold-light);
    color: #fff;
}

body.page-salvador .btn--outline,
body.page-salvador .btn-outline,
body.page-salvador .btn-outline-light,
body.page-salvador .documento-detail-btn--outline {
    background: transparent;
    border-color: var(--border);
    color: var(--heading);
}

body.page-salvador .btn--outline:hover,
body.page-salvador .btn-outline:hover,
body.page-salvador .btn-outline-light:hover,
body.page-salvador .documento-detail-btn--outline:hover {
    border-color: var(--gold);
    color: var(--gold-light);
}

body.page-salvador .form-control,
body.page-salvador .form-select,
body.page-salvador .contact-page__form-wrapper .form-control,
body.page-salvador .emprego-candidatura .form-control {
    background: var(--surface);
    border-color: var(--border);
    color: var(--ink);
}

body.page-salvador .form-control:focus,
body.page-salvador .form-select:focus,
body.page-salvador .contact-page__form-wrapper .form-control:focus,
body.page-salvador .emprego-candidatura .form-control:focus {
    background: var(--surface);
    border-color: var(--gold);
    box-shadow: 0 0 0 3px rgba(51, 153, 153, .16);
    color: var(--ink);
}

body.page-salvador .form-control::placeholder,
body.page-salvador .contact-page__form-wrapper .form-control::placeholder {
    color: #82949d;
}

body.page-salvador .contact-page__form-wrapper label,
body.page-salvador .emprego-candidatura-field label { color: var(--ink); }

/* Internal page banners retain white text over imagery but gain a soft veil. */
body.page-salvador .banner-page { overflow: hidden; }
body.page-salvador .banner-page::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(14, 45, 62, .34), rgba(14, 45, 62, .08));
}
body.page-salvador .banner-page .banner-title { color: #fff; text-shadow: 0 1px 10px rgba(10, 32, 44, .36); }

/* Article/detail controls stay light outside image-led article heroes. */
body.page-salvador .post-hero { border-color: var(--border); }
body.page-salvador .post-byline,
body.page-salvador .post-share,
body.page-salvador .post-footer { border-top-color: var(--border); }
body.page-salvador .post-share-btn {
    color: var(--ink);
    background: var(--surface);
    border-color: var(--border);
}
body.page-salvador .post-share-btn:hover { color: #fff; }
body.page-salvador .post-share-btn--copy:hover { background: var(--surface-alt); color: var(--gold-light); }
body.page-salvador .post-share-btn--copy.copied { color: #fff; background: var(--gold); border-color: var(--gold); }

@media (prefers-reduced-motion: reduce) {
    body.page-salvador .item-card-media img,
    body.page-salvador .shortcut-card,
    body.page-salvador .listing-box,
    body.page-salvador .service-card,
    body.page-salvador .documento-detail-file-card { transition: none; }
}

/* Dark contrast bands requested for the homepage and footer. */
body.page-salvador .home-section.sobre-preview {
    background: #233640 !important;
    color: rgba(255, 255, 255, .78);
}
body.page-salvador .sobre-preview .eyebrow,
body.page-salvador .sobre-preview__text h2 {
    color: #ffffff;
}
body.page-salvador .sobre-preview__desc { color: rgba(255, 255, 255, .78); }
body.page-salvador .sobre-preview__stats li {
    background: rgba(255, 255, 255, .06);
    border-color: rgba(255, 255, 255, .14);
    border-left-color: var(--gold);
    box-shadow: 0 8px 24px rgba(8, 25, 34, .16);
}
body.page-salvador .sobre-preview__stat-number { color: #78d1d0; }
body.page-salvador .sobre-preview__stat-number { font-variant-numeric: tabular-nums; }
body.page-salvador .sobre-preview__stat-label { color: rgba(255, 255, 255, .72); }

/* Date badges need a dark foreground even on very pale teal surfaces. */
body.page-salvador .documento-detail-date {
    color: var(--heading) !important;
    background: #e4f1f2;
    border: 1px solid #c9e1e2;
    font-weight: 700;
}
body.page-salvador .item-card-date .bi,
body.page-salvador .documento-detail-date .bi { color: var(--gold-light) !important; }
/* Cartões (notícias, galeria, documentos): data em texto simples, sem caixa */
body.page-salvador .item-card-date {
    padding: 0; background: none; border: 0;
    color: var(--muted) !important; font-weight: 500;
}

/* Image-backed news banners must always keep their title readable. */
body.page-salvador .post-hero-banner .post-hero-title {
    color: #ffffff !important;
    text-shadow: 0 2px 12px rgba(8, 25, 34, .72);
}
body.page-salvador .post-hero-banner .post-hero-cat {
    color: #8de0dc !important;
    text-shadow: 0 1px 8px rgba(8, 25, 34, .58);
}
body.page-salvador .post-hero-banner .post-hero-meta {
    color: rgba(255, 255, 255, .92) !important;
    text-shadow: 0 1px 8px rgba(8, 25, 34, .58);
}

/* ===== Emprego Candidatura Form ===== */
.emprego-candidatura {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 16px;
    padding: 36px 32px;
    margin-top: 40px;
}
.emprego-candidatura-title {
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--white);
    margin-bottom: 8px;
}
.emprego-candidatura-desc {
    font-size: .92rem;
    color: var(--gray);
    margin-bottom: 28px;
}
.emprego-candidatura-alert {
    padding: 14px 18px;
    border-radius: 8px;
    font-size: .9rem;
    font-weight: 600;
    margin-bottom: 24px;
}
.emprego-candidatura-alert--error {
    background: rgba(220, 53, 69, .15);
    border: 1px solid rgba(220, 53, 69, .3);
    color: #f87171;
}
.emprego-candidatura-alert--success {
    background: rgba(34, 197, 94, .15);
    border: 1px solid rgba(34, 197, 94, .3);
    color: #4ade80;
}
.emprego-candidatura-modelo {
    margin-bottom: 28px;
    padding-bottom: 24px;
    border-bottom: 1px solid var(--border);
}
.emprego-candidatura-modelo-title {
    font-size: 1rem;
    font-weight: 700;
    color: var(--white);
    margin-bottom: 14px;
}
.emprego-candidatura-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 18px 24px;
}
.emprego-candidatura-field label {
    display: block;
    font-size: .85rem;
    font-weight: 600;
    color: var(--gray);
    margin-bottom: 6px;
}
.emprego-candidatura-field label .required {
    color: var(--gold);
}
.emprego-candidatura-field--full {
    grid-column: 1 / -1;
}
.emprego-candidatura-actions {
    margin-top: 28px;
    text-align: right;
}
@media (max-width: 600px) {
    .emprego-candidatura {
        padding: 24px 18px;
        border-radius: 12px;
    }
    .emprego-candidatura-grid {
        grid-template-columns: 1fr;
    }
    .emprego-candidatura-actions {
        text-align: center;
    }
}

/* Center homepage hero copy over the image while retaining CMS slide variants. */
body.page-salvador .home-hero .carousel-slide-content {
    align-items: center;
    justify-content: center;
    text-align: center;
}
body.page-salvador .home-hero .carousel-slide-content > .row {
    align-items: center;
    justify-content: center;
    width: 100%;
    margin-left: 0;
    margin-right: 0;
}
body.page-salvador .home-hero .carousel-slide-content > .row > [class*="col-"] {
    width: min(100%, 820px);
    max-width: 820px;
    margin-left: auto !important;
    margin-right: auto !important;
}
body.page-salvador .home-hero .carousel-slide-content .banner-slide-content {
    max-width: 680px;
    margin-left: auto;
    margin-right: auto;
    float: none !important;
}
body.page-salvador .home-hero-fallback {
    align-items: center;
    text-align: center;
}

body.page-salvador .home-hero .banner-slide-title {
    font-size: clamp(2.5rem, 4.8vw, 4.5rem);
    line-height: .98;
    letter-spacing: .02em;
    text-transform: uppercase;
}

@media (max-width: 767.98px) {
    body.page-salvador .home-hero .banner-slide-title {
        font-size: clamp(2rem, 8vw, 3.2rem);
    }
}

@keyframes salvadorHeroTextIn {
    from {
        opacity: 0;
        transform: translateY(28px) scale(.98);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

@media (prefers-reduced-motion: no-preference) {
    body.page-salvador .home-hero .carousel-item.hero-intro-pending:first-child.active .carousel-slide-content > .row > [class*="col-"],
    body.page-salvador .home-hero .carousel-item.hero-intro-pending:first-child.active > .pd20 > .row > .col-lg-5 {
        animation: salvadorHeroTextIn 1.05s cubic-bezier(.22, .75, .25, 1) both;
    }
}


/* =====================================================================
   HOMEPAGE — passagem do banner para a primeira secção
   A secção sobe por cima do fim do banner como uma folha (cantos de cima
   arredondados + sombra suave), em vez de um corte seco foto → cinzento.
   ===================================================================== */
body.page-salvador .home-hero + .home-section {
    position: relative; z-index: 2;
    margin-top: -48px;
    padding-top: 112px; /* mais ar por baixo do símbolo, antes do título */
    border-radius: 16px 16px 0 0;
    box-shadow: 0 -10px 26px rgba(10, 30, 42, .12);
}
/* "Ver todas" alinhado com a base do título da secção */
/* grelha: a etiqueta ocupa a linha de cima; o "Ver todas" alinha ao centro do título */
body.page-salvador .section-heading.heading-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; column-gap: 20px; }
body.page-salvador .section-heading.heading-row > div:first-child { display: contents; }
body.page-salvador .section-heading.heading-row .eyebrow { grid-column: 1 / -1; }
@media (max-width: 600px) {
    body.page-salvador .section-heading.heading-row { display: block; }
}
body.page-salvador .section-heading.heading-row h2 { margin-bottom: 0; }
body.page-salvador .section-heading.heading-row .text-link { white-space: nowrap; }
@media (max-width: 767.98px) {
    body.page-salvador .home-hero + .home-section { margin-top: -28px; padding-top: 84px; border-radius: 16px 16px 0 0; }
}

/* =====================================================================
   MAPA — controlos e créditos (MapLibre)
   ===================================================================== */
.mapa-freguesia {
    overflow: hidden;
    /* o canvas WebGL ignora border-radius + overflow nalguns browsers: recorta com clip-path */
    isolation: isolate;
    clip-path: inset(0 round var(--radius, 12px));
    /* força o recorte das camadas compostas (canvas na GPU) pelo border-radius */
    -webkit-mask-image: radial-gradient(#fff, #000);
            mask-image: radial-gradient(#fff, #000);
}
/* e arredonda o próprio canvas, para não depender do recorte do pai */
.mapa-freguesia .maplibregl-canvas-container,
.mapa-freguesia .maplibregl-canvas { border-radius: inherit; }
/* controlos e créditos mais discretos */
.mapa-freguesia .maplibregl-ctrl-top-right { margin: 12px 12px 0 0; }
.mapa-freguesia .maplibregl-ctrl-top-right .maplibregl-ctrl { margin: 0; }
.mapa-freguesia .maplibregl-ctrl-group { border-radius: 8px; overflow: hidden; box-shadow: 0 4px 14px rgba(10, 30, 42, .14); }
.mapa-freguesia .maplibregl-ctrl-group button { width: 34px; height: 34px; }
.mapa-freguesia .maplibregl-ctrl-attrib { opacity: .7; font-size: 10px; }

.mapa-freguesia .maplibregl-ctrl-group { border-radius: 10px; overflow: hidden; box-shadow: 0 4px 14px rgba(10, 30, 42, .18); }
.mapa-freguesia .maplibregl-popup-content { padding: 10px 14px; border-radius: 10px; box-shadow: 0 8px 24px rgba(10, 30, 42, .2); font-family: inherit; font-weight: 600; color: #183c50; }

/* =====================================================================
   HOMEPAGE — "A freguesia": o mapa é o fundo da metade direita da secção
   e funde-se com o escuro; números em linha por baixo do texto
   ===================================================================== */
body.page-salvador .home-section.sobre-preview { position: relative; overflow: hidden; padding: 110px 0; }
/* (o MapLibre põe position: relative no contentor; aqui ganha a regra da secção) */
body.page-salvador .sobre-preview .sobre-preview__mapbg {
    position: absolute; z-index: 0; top: 0; right: 0; bottom: 0;
    width: 58%;
    -webkit-mask-image: linear-gradient(90deg, transparent 0, rgba(0, 0, 0, .55) 22%, #000 48%);
            mask-image: linear-gradient(90deg, transparent 0, rgba(0, 0, 0, .55) 22%, #000 48%);
    opacity: 0; transition: opacity .5s ease;
}
body.page-salvador .sobre-preview .sobre-preview__mapbg.is-ready { opacity: 1; }
.sobre-preview__mapbg .maplibregl-ctrl-bottom-right { opacity: .6; }
body.page-salvador .sobre-preview .site-container { position: relative; z-index: 1; pointer-events: none; }
body.page-salvador .sobre-preview .sobre-preview__text { max-width: 540px; pointer-events: auto; }

.sobre-preview__facts {
    display: grid; grid-template-columns: repeat(3, auto); justify-content: start;
    margin: 32px 0 0; padding: 0;
}
.sobre-preview__facts > div { margin: 0; padding: 2px 28px; border-left: 1px solid rgba(255, 255, 255, .14); }
.sobre-preview__facts > div:first-child { padding-left: 0; border-left: 0; }
.sobre-preview__facts dt {
    margin: 0 0 6px;
    color: #78d1d0; font-size: .68rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
}
.sobre-preview__facts dd {
    display: flex; align-items: baseline; gap: 4px;
    margin: 0;
    color: #fff; font-size: 1.75rem; font-weight: 700; line-height: 1; letter-spacing: -.01em;
    font-variant-numeric: tabular-nums;
}
.sobre-preview__facts dd small { color: rgba(255, 255, 255, .55); font-size: .8rem; font-weight: 500; letter-spacing: 0; }

.sobre-preview__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 26px; margin-top: 34px; }
body.page-salvador .sobre-preview__actions .cta-button {
    display: inline-flex; align-items: center; gap: 6px;
    margin-top: 0; padding: 0 18px; height: 42px;
    border-radius: 8px;
    font-size: .88rem; line-height: 1;
}
body.page-salvador .sobre-preview__actions .cta-button .bi,
body.page-salvador .sobre-preview__actions .text-link .bi { font-size: .8em; }
body.page-salvador .sobre-preview__actions .text-link { display: inline-flex; align-items: center; gap: 6px; color: #fff; font-weight: 600; }
body.page-salvador .sobre-preview__actions .text-link:hover { color: #78d1d0; }

@media (max-width: 900px) {
    body.page-salvador .home-section.sobre-preview { padding: 0 0 72px; }
    body.page-salvador .sobre-preview .sobre-preview__mapbg {
        position: relative; width: 100%; height: 280px;
        -webkit-mask-image: linear-gradient(180deg, #000 55%, transparent 100%);
                mask-image: linear-gradient(180deg, #000 55%, transparent 100%);
    }
    body.page-salvador .sobre-preview .site-container { margin-top: -40px; }
    .sobre-preview__facts > div { padding: 2px 18px; }
    .sobre-preview__facts dd { font-size: 1.35rem; }
}

/* Homepage: a secção de Documentos (última antes do footer) leva a fotografia
   e funde-se em baixo com a cor do footer (#1d303b), como no Explora Mais. */
body.page-salvador .home-section#documentos {
    position: relative;
    padding-bottom: clamp(110px, 12vw, 170px);
    border-top: 0;
    background:
        linear-gradient(to bottom, rgba(29, 48, 59, .62) 0%, rgba(29, 48, 59, .38) 35%, rgba(29, 48, 59, .72) 72%, #1d303b 100%),
        #1d303b url('/img/footer-bg.jpg') center 68% / cover no-repeat !important;
}
body.page-salvador #documentos .section-heading h2 { color: #fff; }
body.page-salvador #documentos .eyebrow { color: #8de0dc; }
body.page-salvador #documentos .text-link { color: #fff; }
body.page-salvador #documentos .text-link:hover { color: #8de0dc; }
body.page-salvador #documentos .document-card { border-color: transparent; box-shadow: 0 18px 40px -22px rgba(0, 20, 30, .55); }

/* Cartões (documentos / emprego): em forma de pasta — aba no canto superior
   esquerdo (SVG, para a curva ficar nítida) a encaixar no topo do cartão.
   Data à direita, como num email. Hover discreto: borda e título. */
.document-card { position: relative; margin-top: 18px; height: calc(100% - 18px); border-top-left-radius: 0; }
.document-card::before {
    content: ""; position: absolute; left: -1px; top: -19px; /* -1px da borda do cartão */
    width: 124px; height: 19px; pointer-events: none;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='124' height='19' viewBox='0 0 124 19'%3E%3Cpath d='M0 19V7Q0 0 7 0H92Q98 0 102 5L111 15Q114 19 120 19Z' fill='%23fff'/%3E%3Cpath d='M.5 19V7Q.5 .5 7 .5H92Q97.6 .5 101.6 5.3L110.6 15.3Q113.8 18.5 120 18.5' fill='none' stroke='%23e4e8ed'/%3E%3C/svg%3E") no-repeat;
}
.document-card:hover::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='124' height='19' viewBox='0 0 124 19'%3E%3Cpath d='M0 19V7Q0 0 7 0H92Q98 0 102 5L111 15Q114 19 120 19Z' fill='%23fff'/%3E%3Cpath d='M.5 19V7Q.5 .5 7 .5H92Q97.6 .5 101.6 5.3L110.6 15.3Q113.8 18.5 120 18.5' fill='none' stroke='%23b9d6d6'/%3E%3C/svg%3E"); }
body.page-salvador #documentos .document-card::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='124' height='19' viewBox='0 0 124 19'%3E%3Cpath d='M0 19V7Q0 0 7 0H92Q98 0 102 5L111 15Q114 19 120 19Z' fill='%23fff'/%3E%3Cpath d='M.5 19V7Q.5 .5 7 .5H92Q97.6 .5 101.6 5.3L110.6 15.3Q113.8 18.5 120 18.5' fill='none' stroke='%23ffffff'/%3E%3C/svg%3E"); }
/* Emprego: mesmo cartão, mas sem a aba de pasta (só os documentos são "pastas") */
.document-card.job-card { margin-top: 0; height: 100%; border-radius: 10px; }
.document-card.job-card::before { content: none; }
.document-card-meta { flex: 1; justify-content: space-between; }
.document-card-meta span + span::before { content: none; }
.document-card-meta > span:last-child { font-variant-numeric: tabular-nums; }
/* ícone: azul-escuro da navbar com símbolo ciano */
.document-card-icon, body.page-salvador .document-card-icon { background: #1f3b4a; color: #8de0dc; }

/* =====================================================================
   AGENDA "A Acontecer" (homepage) — mês, fila de dias e cartões do dia
   ===================================================================== */
body.page-salvador .home-section.agenda-section { border-top: 0; }
/* separador ofertas → agenda: duas ondas em oposição (uma invertida), a cruzarem-se */
.home-waves { height: 40px; margin: -20px 0; position: relative; z-index: 1;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='40' viewBox='0 0 240 40' fill='none' stroke-width='1.5' stroke-linecap='round'%3E%3Cpath d='M0 20.0 Q30 2 60 20.0 Q90 38 120 20.0 Q150 2 180 20.0 Q210 38 240 20.0' stroke='%23339999'/%3E%3Cpath d='M0 20.0 Q30 38 60 20.0 Q90 2 120 20.0 Q150 38 180 20.0 Q210 2 240 20.0' stroke='%231f3b4a' stroke-opacity='.35'/%3E%3C/svg%3E") center / 240px 40px repeat-x;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 15%, #000 85%, transparent);
            mask-image: linear-gradient(90deg, transparent, #000 15%, #000 85%, transparent); }

.ag-bar { display: flex; align-items: center; gap: 10px; }
.ag-month { min-width: 150px; margin: 0; text-align: center; font-size: 1.05rem; font-weight: 600; color: #1f3b4a; text-transform: capitalize; }
.ag-month span { color: #9aabb4; font-weight: 400; }
.ag-nav {
    display: inline-grid; place-items: center; width: 36px; height: 36px; padding: 0;
    border: 1px solid #dce5e9; border-radius: 8px; background: #fff; color: #1f3b4a; cursor: pointer;
    transition: border-color .2s ease, background-color .2s ease;
}
.ag-nav:hover { border-color: #1f3b4a; background: #f4f8f9; }
.agenda-section .section-heading { margin-bottom: 28px; }

/* Fila de dias: números grandes numa linha, como no Lumiar */
.ag-strip { position: relative; display: flex; align-items: center; gap: 4px; padding: 6px 0 18px; border-bottom: 1px solid #e4e8ed; }
.ag-strip__btn { flex: 0 0 auto; display: inline-grid; place-items: center; width: 32px; height: 32px; padding: 0; border: 0; background: none; color: #1f3b4a; font-size: 1.1rem; cursor: pointer; }
.ag-strip__btn:hover { color: #339999; }
.ag-days {
    flex: 1; display: flex; gap: 4px; overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none;
    padding: 0 20px;
    /* pontas a esbater: os dias desaparecem suavemente junto às setas */
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 40px, #000 calc(100% - 40px), transparent);
            mask-image: linear-gradient(90deg, transparent, #000 40px, #000 calc(100% - 40px), transparent);
}
.ag-days::-webkit-scrollbar { display: none; }
.ag-day {
    flex: 0 0 60px; display: flex; flex-direction: column; align-items: center; gap: 4px;
    padding: 10px 0; border: 0; border-radius: 14px; background: none; scroll-snap-align: center;
    font: inherit; color: #1f3b4a; cursor: pointer; transition: background-color .15s ease, color .15s ease;
}
.ag-day__wd { font-size: .68rem; font-weight: 500; text-transform: uppercase; letter-spacing: .06em; color: #8a9ba4; }
.ag-day__n { font-size: 1.6rem; font-weight: 600; line-height: 1; font-variant-numeric: tabular-nums; }
.ag-day:hover:not(:disabled):not([aria-pressed="true"]) { background: #eef4f6; }
.ag-day:disabled { cursor: default; color: #c9d3d8; }
.ag-day:disabled .ag-day__wd { color: #d3dbdf; }
.ag-day.is-today .ag-day__wd { color: #237d7d; font-weight: 700; }
.ag-day[aria-pressed="true"] { background: #1f3b4a; color: #fff; }
.ag-day[aria-pressed="true"] .ag-day__wd { color: #8de0dc; }
.ag-day:focus-visible, .ag-nav:focus-visible, .ag-strip__btn:focus-visible { outline: 2px solid #339999; outline-offset: 2px; }

/* Resultados: imagem arredondada, data por extenso e título — sem caixa */
.ag-results { margin-top: 36px; }
.ag-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px 32px; }
.ag-card { display: flex; flex-direction: column; color: inherit; text-decoration: none; }
a.ag-card:hover { color: inherit; }
.ag-card__media { aspect-ratio: 16 / 10; overflow: hidden; border-radius: 16px; background: #dfe8ec; }
.ag-card__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ag-card__date { margin: 18px 0 6px; font-size: .9rem; font-weight: 300; color: #237d7d; }
body.page-salvador .ag-card__title { margin: 0; font-size: 1.2rem; font-weight: 700; line-height: 1.3; color: #1f3b4a; text-transform: none; }
a.ag-card:hover .ag-card__title { text-decoration: underline; text-underline-offset: 3px; }
.ag-card__meta { margin: 8px 0 0; font-size: .85rem; color: #6b7a84; }
.ag-empty__msg { margin: 0; color: #647b87; }
.ag-subtitle { margin: 24px 0 18px; font-size: .75rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: #237d7d; }

@media (max-width: 991.98px) { .ag-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px 24px; } }
@media (max-width: 600px) {
    .ag-grid { grid-template-columns: 1fr; }
    .agenda-section .ag-bar { margin-top: 16px; }
    .ag-month { min-width: 0; flex: 1; text-align: left; }
    .ag-strip__btn { display: none; }
    .ag-day { flex-basis: 52px; }
    .ag-day__n { font-size: 1.35rem; }
}
@media (prefers-reduced-motion: reduce) {
    .ag-day, .ag-nav { transition: none; }
}

/* =====================================================================
   A FREGUESIA — página de entrada (números + cartões das subpáginas) e
   ligação "Continuar a ler" no fim de História / Executivo
   ===================================================================== */
.sobre-hub-facts {
    display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
    margin: 0 0 40px; padding: 0;
    border: 1px solid #e4e8ed; border-radius: 14px;
}
.sobre-hub-facts > div { padding: 20px 24px; }
.sobre-hub-facts > div + div { border-left: 1px solid #e4e8ed; }
.sobre-hub-facts dt { margin-bottom: 4px; font-size: .74rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: #6b7a84; }
.sobre-hub-facts dd { margin: 0; font-size: clamp(1.6rem, 3vw, 2.2rem); font-weight: 700; line-height: 1.1; color: #1f3b4a; font-variant-numeric: tabular-nums; }
.sobre-hub-facts small { margin-left: 4px; font-size: .5em; font-weight: 600; color: #237d7d; }

.sobre-hub-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; margin-bottom: 56px; }
body.page-salvador .sobre-page__content a.sobre-hub-card {
    display: flex; flex-direction: column; align-items: flex-start; gap: 6px;
    padding: 26px 26px 22px;
    border: 1px solid #e4e8ed; border-radius: 14px;
    background: #fff; color: #1f3b4a; text-decoration: none;
    transition: border-color .2s ease, box-shadow .25s ease, transform .25s ease;
}
.sobre-hub-card__icon {
    display: grid; place-items: center; width: 44px; height: 44px; margin-bottom: 8px;
    border-radius: 12px; background: #eef6f7; color: #237d7d; font-size: 1.15rem;
    transition: background-color .25s ease, color .25s ease;
}
.sobre-hub-card__title { font-size: 1.25rem; font-weight: 700; line-height: 1.2; }
.sobre-hub-card__desc { font-size: .92rem; line-height: 1.55; color: #647b87; }
.sobre-hub-card__more { display: inline-flex; align-items: center; gap: 6px; margin-top: 8px; font-size: .86rem; font-weight: 600; color: #237d7d; }
.sobre-hub-card__more .bi { transition: transform .25s ease; }
body.page-salvador .sobre-page__content a.sobre-hub-card:hover,
body.page-salvador .sobre-page__content a.sobre-hub-card:focus-visible {
    border-color: #b9d6d6; box-shadow: 0 14px 30px rgba(15, 35, 46, .08); transform: translateY(-2px);
}
body.page-salvador a.sobre-hub-card:hover .sobre-hub-card__icon { background: #339999; color: #fff; }
body.page-salvador a.sobre-hub-card:hover .sobre-hub-card__more .bi { transform: translateX(4px); }

body.page-salvador a.sobre-next {
    display: flex; flex-direction: column; align-items: flex-end; gap: 2px;
    margin-top: 56px; padding: 22px 0 0;
    border-top: 1px solid #e4e8ed;
    color: #1f3b4a; text-decoration: none; text-align: right;
}
.sobre-next__label { font-size: .74rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: #6b7a84; }
.sobre-next__title { display: inline-flex; align-items: center; gap: 8px; font-size: 1.4rem; font-weight: 700; }
.sobre-next__title .bi { color: #339999; transition: transform .25s ease; }
body.page-salvador a.sobre-next:hover { color: #237d7d; }
body.page-salvador a.sobre-next:hover .sobre-next__title .bi { transform: translateX(4px); }

@media (max-width: 767.98px) {
    .sobre-hub-facts > div { padding: 16px 14px; }
    .sobre-hub-cards { grid-template-columns: 1fr; }
}

/* título comprido no banner (ex.: nome de um evento): letra mais pequena */
body.page-salvador .page-atalhos__title.is-long { max-width: 900px; margin: 0 auto; font-size: clamp(1.9rem, 4.2vw, 3.4rem); line-height: 1.1; }

/* =====================================================================
   AGENDA — página de um evento (agenda.tpl)
   ===================================================================== */
/* o título está no banner: o h1 fica para leitores de ecrã / SEO */
.evento-page__h1 {
    position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0;
    overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.evento-page { padding-top: 56px; }
.evento-layout { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 56px; align-items: start; }
body.page-salvador a.evento-voltar {
    display: inline-flex; align-items: center; gap: 8px; margin-bottom: 22px;
    color: #237d7d; font-size: .88rem; font-weight: 600; text-decoration: none;
}
body.page-salvador a.evento-voltar .bi { transition: transform .25s ease; }
body.page-salvador a.evento-voltar:hover { color: #1f3b4a; }
body.page-salvador a.evento-voltar:hover .bi { transform: translateX(-3px); }
.evento-descricao { max-width: 680px; color: #4d6370; font-size: 1.05rem; line-height: 1.75; }
.evento-descricao p { margin: 0 0 16px; }

.evento-info {
    position: sticky; top: calc(var(--header-h, 102px) + 24px);
    padding: 24px; border: 1px solid #e4e8ed; border-radius: 14px; background: #fff;
}
.evento-info__list { margin: 0 0 22px; }
.evento-info__list > div + div { margin-top: 16px; padding-top: 16px; border-top: 1px solid #edf0f3; }
.evento-info__list dt {
    display: flex; align-items: center; gap: 8px; margin-bottom: 4px;
    font-size: .72rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: #6b7a84;
}
.evento-info__list dt .bi { color: #339999; font-size: .9rem; }
.evento-info__list dd { margin: 0; font-size: 1rem; font-weight: 600; line-height: 1.4; color: #1f3b4a; }
.evento-info__actions { display: flex; flex-direction: column; gap: 10px; }
body.page-salvador a.evento-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    height: 44px; padding: 0 16px; border: 1px solid #dce5e9; border-radius: 8px;
    background: #fff; color: #1f3b4a; font-size: .88rem; font-weight: 600; text-decoration: none;
    transition: background-color .2s ease, border-color .2s ease;
}
body.page-salvador a.evento-btn .bi { color: #339999; }
body.page-salvador a.evento-btn:hover { background: #f5f9fa; border-color: #b9d6d6; color: #1f3b4a; }
body.page-salvador a.evento-btn--primary { background: #1f3b4a; border-color: #1f3b4a; color: #fff; }
body.page-salvador a.evento-btn--primary .bi { color: #8de0dc; }
body.page-salvador a.evento-btn--primary:hover { background: #27495b; border-color: #27495b; color: #fff; }

.evento-outros { margin-top: 80px; padding-top: 40px; border-top: 1px solid #e4e8ed; }
body.page-salvador .evento-outros__titulo { margin: 0 0 28px; font-size: clamp(1.5rem, 2.6vw, 2rem); font-weight: 700; color: #1f3b4a; text-transform: none; }

@media (max-width: 991.98px) {
    .evento-layout { grid-template-columns: 1fr; gap: 32px; }
    .evento-info { position: static; }
}
@media (max-width: 767.98px) {
    .evento-page { padding-top: 36px; }
    .evento-outros { margin-top: 56px; }
}

/* =====================================================================
   NA MINHA RUA — publicações dos fregueses
   ===================================================================== */
.nmr-intro { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-bottom: 26px; }
body.page-salvador .nmr-header .noticias-page-title { margin-bottom: 10px; }
.nmr-lead { max-width: 620px; margin: 0; font-size: 1.02rem; line-height: 1.6; color: #647b87; }
.nmr-cats { margin-bottom: 0; min-width: 0; }
button.noticias-cat { border: 0; background: none; padding: 0; font: inherit; cursor: pointer; }

.nmr-share-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px; flex-shrink: 0;
    height: 44px; padding: 0 18px; border: 0; border-radius: 8px;
    background: #1f3b4a; color: #fff; font: inherit; font-size: .9rem; font-weight: 600; cursor: pointer;
    transition: background-color .2s ease;
}
.nmr-share-btn:hover { background: #27495b; }
.nmr-share-btn .bi { color: #8de0dc; }
.nmr-share-btn--full { width: 100%; }

.nmr-page { padding-top: 32px; padding-bottom: 88px; }
.nmr-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 40px; align-items: start; }
.nmr-feed { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; align-content: start; }
.nmr-feed > [hidden] { display: none; }

.nmr-post { display: flex; flex-direction: column; padding: 20px 22px 16px; border: 1px solid #e4e8ed; border-radius: 12px; background: #fff; }
.nmr-post__head { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.nmr-avatar { display: grid; place-items: center; flex: 0 0 40px; width: 40px; height: 40px; border-radius: 50%; background: #1f3b4a; color: #8de0dc; font-size: .8rem; font-weight: 700; letter-spacing: .02em; }
.nmr-post__who { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.nmr-post__author { font-size: .88rem; font-weight: 600; color: #1f3b4a; }
.nmr-post__street { display: inline-flex; align-items: center; gap: 4px; font-size: .78rem; color: #6b7a84; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nmr-post__street .bi { color: #339999; }
.nmr-post__date { display: flex; flex-direction: column; align-items: center; min-width: 46px; padding: 6px 0; border-radius: 8px; background: #f1f6f7; font-size: .66rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: #237d7d; line-height: 1; }
.nmr-post__date strong { font-size: 1.15rem; letter-spacing: 0; color: #1f3b4a; margin-bottom: 3px; }
body.page-salvador .nmr-post__title { margin: 0 0 8px; font-size: 1.08rem; font-weight: 600; line-height: 1.35; color: #1f3b4a; text-transform: none; }
.nmr-post__text { margin: 0 0 16px; font-size: .9rem; line-height: 1.55; color: #647b87; }
.nmr-post__foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: auto; padding-top: 12px; border-top: 1px solid #edf0f3; }
.nmr-post__cat { display: inline-flex; align-items: center; gap: 6px; font-size: .78rem; color: #6b7a84; }
.nmr-post__cat .bi { color: #339999; }
.nmr-like { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; border: 1px solid #dce5e9; border-radius: 8px; background: #fff; color: #1f3b4a; font: inherit; font-size: .78rem; font-weight: 600; cursor: pointer; transition: border-color .2s ease, background-color .2s ease, color .2s ease; white-space: nowrap; }
.nmr-like b { font-weight: 700; color: #237d7d; }
.nmr-like:hover { border-color: #b9d6d6; }
.nmr-like[aria-pressed="true"] { background: #1f3b4a; border-color: #1f3b4a; color: #fff; }
.nmr-like[aria-pressed="true"] .bi, .nmr-like[aria-pressed="true"] b { color: #8de0dc; }
.nmr-empty { grid-column: 1 / -1; margin: 0; padding: 28px 4px; color: #647b87; }

.nmr-side { position: sticky; top: calc(var(--header-h, 84px) + 24px); display: flex; flex-direction: column; gap: 16px; }
.nmr-box { padding: 22px; border: 1px solid #e4e8ed; border-radius: 12px; background: #fff; }
body.page-salvador .nmr-box__title { margin: 0 0 14px; font-size: 1.05rem; font-weight: 700; color: #1f3b4a; text-transform: none; }
.nmr-steps { margin: 0 0 18px; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 12px; }
.nmr-steps li { display: flex; gap: 12px; font-size: .88rem; line-height: 1.5; color: #647b87; }
.nmr-steps b { display: grid; place-items: center; flex: 0 0 24px; height: 24px; border-radius: 50%; background: #e6f4f4; color: #237d7d; font-size: .75rem; }
.nmr-box--note { background: #f4f8f9; border-color: transparent; }
.nmr-box--note p { margin: 0 0 10px; font-size: .86rem; line-height: 1.55; color: #647b87; }
.nmr-box--note strong { color: #1f3b4a; }
.nmr-box--note a { font-size: .85rem; font-weight: 600; color: #237d7d; text-decoration: none; }

/* Modal */
html.nmr-modal-open { overflow: hidden; }
.nmr-modal { position: fixed; inset: 0; z-index: 1200; display: grid; place-items: center; padding: 16px; }
.nmr-modal[hidden] { display: none; }
.nmr-modal__backdrop { position: absolute; inset: 0; background: rgba(15, 30, 40, .55); }
.nmr-modal__dialog { position: relative; width: min(560px, 100%); max-height: calc(100dvh - 32px); overflow-y: auto; padding: 28px; border-radius: 14px; background: #fff; box-shadow: 0 30px 60px -20px rgba(10, 30, 42, .5); }
.nmr-modal__close { position: absolute; top: 14px; right: 14px; display: grid; place-items: center; width: 36px; height: 36px; border: 0; border-radius: 8px; background: #f1f6f7; color: #1f3b4a; cursor: pointer; }
.nmr-form h2, .nmr-done h2 { margin: 0 0 4px; font-size: 1.3rem; color: #1f3b4a; text-transform: none; }
.nmr-form__lead { margin: 0 0 20px; font-size: .88rem; color: #647b87; }
.nmr-form__row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.nmr-field { display: flex; flex-direction: column; gap: 6px; margin-bottom: 14px; }
.nmr-field span { font-size: .78rem; font-weight: 600; color: #1f3b4a; }
.nmr-field input, .nmr-field select, .nmr-field textarea { display: block; width: 100%; min-height: 46px; margin: 0; padding: 10px 12px; border: 1px solid #dce5e9; border-radius: 8px; background-color: #fff; font: inherit; font-size: .92rem; line-height: 1.4; color: #1f3b4a; }
.nmr-field input::placeholder, .nmr-field textarea::placeholder { color: #9aa9b2; }
/* select com seta própria: mesma altura/recuo que os inputs em todos os browsers */
.nmr-field select { -webkit-appearance: none; appearance: none; padding-right: 36px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%231f3b4a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='m2 5 6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 14px center; cursor: pointer; }
.nmr-field select:invalid { color: #9aa9b2; }
.nmr-field select option { color: #1f3b4a; }
/* date/time: no iOS ficam sem altura quando vazios e com o valor centrado */
.nmr-field input[type="date"], .nmr-field input[type="time"] { -webkit-appearance: none; appearance: none; }
.nmr-field input::-webkit-date-and-time-value { min-height: 1.4em; text-align: left; }
.nmr-field input::-webkit-calendar-picker-indicator { cursor: pointer; opacity: .6; }
.nmr-field textarea { min-height: 96px; resize: vertical; }
/* contador dentro da textarea, no canto inferior direito (não ocupa linha própria) */
.nmr-field:has(.nmr-field__count) { position: relative; }
.nmr-field__count { position: absolute; right: 22px; bottom: 8px; font-size: .72rem; line-height: 1; color: #9aa9b2; pointer-events: none; }
.nmr-field textarea { padding-bottom: 24px; }
.nmr-field input:focus, .nmr-field select:focus, .nmr-field textarea:focus { outline: 0; border-color: #339999; box-shadow: 0 0 0 3px rgba(51, 153, 153, .15) !important; }
.nmr-form.was-validated .nmr-field :invalid, .nmr-field [aria-invalid="true"] { border-color: #d9534f; }
.nmr-form__hint { margin: -6px 0 14px; font-size: .78rem; line-height: 1.45; color: #6b7a84; }
.nmr-check { display: flex; align-items: flex-start; gap: 10px; margin: 0 0 16px; font-size: .82rem; line-height: 1.45; color: #4d6370; cursor: pointer; }
.nmr-check input { flex: 0 0 auto; width: 18px; height: 18px; margin: 1px 0 0; padding: 0; accent-color: #339999; cursor: pointer; }
.nmr-check a { color: #237d7d; font-weight: 600; text-decoration: underline; }
.nmr-form.was-validated .nmr-check input:invalid, .nmr-check input[aria-invalid="true"] { box-shadow: 0 0 0 2px #fff, 0 0 0 4px #d9534f !important; border-radius: 3px; }
.nmr-form__error { margin: 0 0 14px; padding: 10px 12px; border-radius: 8px; background: #fdf0ef; font-size: .86rem; color: #b52f2b; }
.nmr-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; opacity: 0; }
.nmr-done { text-align: center; padding: 12px 0 4px; }
.nmr-done .bi { font-size: 2.4rem; color: #339999; }
.nmr-done p { margin: 6px 0 20px; color: #647b87; }

@media (max-width: 1100px) {
    .nmr-layout { grid-template-columns: 1fr; }
    .nmr-side { position: static; display: grid; grid-template-columns: 1fr 1fr; }
}
@media (max-width: 767.98px) {
    .nmr-intro { flex-direction: column-reverse; align-items: stretch; gap: 18px; }
    .nmr-feed { grid-template-columns: 1fr; }
    .nmr-side { grid-template-columns: 1fr; }
    .nmr-form__row { grid-template-columns: 1fr; gap: 0; }
    /* 16px evita o zoom automático do iOS ao focar */
    .nmr-field input, .nmr-field select, .nmr-field textarea { font-size: 16px; }
    .nmr-modal__dialog { padding: 22px 18px; }
}

/* =====================================================================
   ATALHOS (homepage) — aba branca que nasce da "folha" da primeira secção
   e sobe por cima do fundo do banner. Mesma cor da folha e cantos de baixo
   côncavos (::before/::after), por isso parece a própria folha a subir.
   A sombra só existe para cima (clip-path corta-a em baixo).
   Compacta: ícone + nome numa linha. Mobile: desliza para o lado.
   ===================================================================== */
body.page-salvador .home-hero { position: relative; }
.home-atalhos {
    --sob: 48px;  /* = quanto a secção seguinte sobe por cima do banner */
    --curva: 16px;
    position: absolute; left: 50%; z-index: 3;
    bottom: calc(var(--sob) - 1px); /* 1px por baixo da borda: sem frincha */
    width: max-content; max-width: 94%;
    padding: 8px 8px 4px;
    transform: translateX(-50%);
    background: var(--page, #fff); color: #1f3b4a;
    border-radius: 16px 16px 0 0;
    box-shadow: 0 -10px 26px rgba(10, 30, 42, .12);
    clip-path: inset(-60px -60px 0 -60px);
}
/* cantos côncavos: ligam os lados da aba à borda da folha */
.home-atalhos::before,
.home-atalhos::after {
    content: ""; position: absolute; bottom: 0;
    width: var(--curva); height: var(--curva);
    pointer-events: none;
}
.home-atalhos::before { right: 100%; background: radial-gradient(circle at 0 0, transparent var(--curva), var(--page, #fff) calc(var(--curva) + .5px)); }
.home-atalhos::after  { left: 100%;  background: radial-gradient(circle at 100% 0, transparent var(--curva), var(--page, #fff) calc(var(--curva) + .5px)); }

.home-atalhos__list {
    display: flex; justify-content: center;
    margin: 0; padding: 0;
    list-style: none;
}
.home-atalhos__list li { position: relative; flex: 0 0 auto; }
/* separadores finos entre atalhos */
.home-atalhos__list li + li::before {
    content: ""; position: absolute; left: 0; top: 16px; bottom: 16px;
    width: 1px; background: #e7eef1;
}
body.page-salvador .home-atalhos a {
    display: grid; grid-template-columns: auto auto; grid-template-rows: auto auto;
    column-gap: 10px; row-gap: 2px; align-items: center;
    padding: 10px 16px 10px 12px;
    border-radius: 12px;
    color: #1f3b4a; text-decoration: none; white-space: nowrap;
    transition: background-color .2s ease;
}
.home-atalhos__icon {
    grid-row: 1 / 3;
    display: grid; place-items: center;
    width: 36px; height: 36px; border-radius: 10px;
    background: #eef6f7; color: #237d7d;
    font-size: 1rem; line-height: 1;
    transition: background-color .25s ease, color .25s ease, transform .35s cubic-bezier(.22, .8, .24, 1);
}
.home-atalhos__icon .bi { display: block; }
.home-atalhos__label { align-self: end; font-size: .84rem; font-weight: 600; line-height: 1.15; }
.home-atalhos__sub { align-self: start; font-size: .7rem; line-height: 1.2; color: #6b7a84; }
/* Hover: o ícone enche-se de teal e roda ligeiramente */
body.page-salvador .home-atalhos a:hover,
body.page-salvador .home-atalhos a:focus-visible,
body.page-salvador .home-atalhos a[aria-current="page"] { background: #f5f9fa; color: #237d7d; }
body.page-salvador .home-atalhos a:hover .home-atalhos__icon,
body.page-salvador .home-atalhos a:focus-visible .home-atalhos__icon { background: #339999; color: #fff; transform: rotate(-6deg) scale(1.05); }
body.page-salvador .home-atalhos a:focus-visible { outline: 2px solid #339999; outline-offset: -2px; }
@media (max-width: 1279.98px) {
    .home-atalhos__sub { display: none; }
    .home-atalhos__label { grid-row: 1 / 3; align-self: center; }
    body.page-salvador .home-atalhos a { padding: 8px 12px 8px 8px; }
}

/* Telemóvel/tablet: fila de pílulas (ícone + nome) que desliza para o lado;
   a da página atual fica preenchida a teal; esbatido à direita = há mais */
@media (max-width: 991.98px) {
    .home-atalhos { padding: 10px 0 6px; }
    .home-atalhos__list {
        justify-content: flex-start; gap: 8px;
        padding: 0 14px;
        overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch;
        scroll-padding: 0 14px;
        -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 36px), transparent);
                mask-image: linear-gradient(90deg, #000 calc(100% - 36px), transparent);
    }
    .home-atalhos__list::-webkit-scrollbar { display: none; }
    .home-atalhos__list.is-end { -webkit-mask-image: none; mask-image: none; }
    /* o padding da direita não conta para o scroll: espaço no fim da fila */
    .home-atalhos__list::after { content: ""; flex: 0 0 16px; }
    .home-atalhos__list li + li::before { content: none; }
    body.page-salvador .home-atalhos a {
        display: flex; align-items: center; gap: 7px;
        height: 36px; padding: 0 14px 0 12px;
        border: 1px solid #dce5e9; border-radius: 999px;
        background: #fff;
        white-space: nowrap;
        transition: background-color .2s ease, border-color .2s ease, color .2s ease;
    }
    .home-atalhos__icon {
        display: inline-flex; width: auto; height: auto; margin: 0;
        background: none; border-radius: 0;
        color: #339999; font-size: .85rem;
    }
    .home-atalhos__label { grid-row: auto; font-size: .8rem; font-weight: 600; }
    .home-atalhos__sub { display: none; }
    body.page-salvador .home-atalhos a:hover,
    body.page-salvador .home-atalhos a:focus-visible { background: #f5f9fa; border-color: #b9d6d6; }
    body.page-salvador .home-atalhos a:hover .home-atalhos__icon { background: none; color: #237d7d; transform: none; }
    body.page-salvador .home-atalhos a[aria-current="page"] { background: #339999; border-color: #339999; color: #fff; }
    body.page-salvador .home-atalhos a[aria-current="page"] .home-atalhos__icon { background: none; color: #fff; }
}
@media (max-width: 767.98px) {
    /* a toda a largura: a faixa passa a ser o próprio topo da folha */
    /* desce 16px para tapar os cantos arredondados da folha */
    .home-atalhos { --sob: 28px; bottom: calc(var(--sob) - 17px); width: 100%; max-width: none; padding: 12px 0 17px; border-radius: 16px 16px 0 0; }
    .home-atalhos::before, .home-atalhos::after { content: none; }
}


/* Páginas interiores: faixa com fotografia de São Salvador por baixo do
   header (--pa-img, ver atalhos.tpl); a aba branca sai da página e sobe por
   cima da foto, como na homepage */
/* um pouco mais baixo que o banner da homepage (~75% da parte visível) */
.page-atalhos {
    display: flex; flex-direction: column; justify-content: flex-end;
    min-height: clamp(440px, 58vh, 620px);
    padding-top: 40px;
    background:
        radial-gradient(ellipse at 50% 50%, rgba(18, 38, 48, .4), transparent 65%),
        linear-gradient(180deg, rgba(18, 38, 48, .1), rgba(18, 38, 48, .4)),
        var(--pa-img, none) center 60% / cover no-repeat,
        #cfe3e6;
}
@media (min-width: 992px) {
    .page-atalhos {
        min-height: clamp(480px, calc((100vh - var(--header-h, 120px)) * .75 - 36px), 810px);
        min-height: clamp(480px, calc((100svh - var(--header-h, 120px)) * .75 - 36px), 810px);
    }
}
/* título da secção centrado na foto (ocupa o espaço por cima da aba) */
.page-atalhos__head {
    flex: 1; display: flex; flex-direction: column; justify-content: center; align-items: center;
    width: 90%; max-width: var(--iu-max-w, 1160px); margin: 0 auto; padding-bottom: 24px;
    text-align: center;
}
.page-atalhos__eyebrow {
    margin: 0 0 6px;
    color: #8de0dc; font-size: .78rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase;
    text-shadow: 0 1px 10px rgba(10, 30, 42, .45);
}
body.page-salvador .page-atalhos__title {
    margin: 0;
    color: #fff; font-size: clamp(2.6rem, 7vw, 5.2rem); font-weight: 700; line-height: 1.02;
    text-shadow: 0 2px 18px rgba(10, 30, 42, .45);
}
body.page-salvador .page-atalhos__lead {
    max-width: 620px; margin: 16px auto 0;
    color: rgba(255, 255, 255, .9); font-size: clamp(.98rem, 1.6vw, 1.12rem); line-height: 1.55;
    text-shadow: 0 1px 12px rgba(10, 30, 42, .5);
}
/* o título já está na foto: o título da listagem fica só para leitores de
   ecrã/SEO (continua a ser o h1 da página) */
.page-atalhos ~ .noticias-page-header .noticias-page-title,
.page-atalhos ~ .sobre-page .sobre-page__head > .section-title {
    position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0;
    overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.page-atalhos ~ .noticias-page-header { padding-top: 72px; }
@media (max-width: 767.98px) { .page-atalhos ~ .noticias-page-header { padding-top: 48px; } }
.page-atalhos .home-atalhos {
    position: relative; left: auto; bottom: auto;
    margin: 0 auto -1px; /* -1px: assenta na página, sem frincha */
    transform: none;
    box-shadow: 0 -8px 22px rgba(10, 30, 42, .07);
}
/* página atual: igual ao hover, fixo */
body.page-salvador .home-atalhos a[aria-current="page"] .home-atalhos__icon { background: #339999; color: #fff; }
@media (max-width: 767.98px) {
    .page-atalhos { min-height: clamp(390px, 58vh, 510px); }
    .page-atalhos__head { padding-bottom: 12px; }
    .page-atalhos .home-atalhos { bottom: auto; padding-bottom: 4px; }
}

/* =====================================================================
   ATALHOS (topo do footer) — integrados no footer escuro: 6 colunas com o
   nome + descrição à frente e o ícone em marca de água, grande e quase
   transparente, cortado no canto de baixo à direita. As linhas entre colunas
   nascem invisíveis em cima e ficam visíveis em baixo.
   ===================================================================== */
.atalhos-rodape { border-bottom: 1px solid rgba(243, 247, 246, .1); }
.atalhos-rodape__list {
    display: grid; grid-template-columns: repeat(6, minmax(0, 1fr));
    margin: 0 auto; padding: 0; list-style: none;
}
.atalhos-rodape__list li { position: relative; overflow: hidden; } /* corta a marca de água */
.atalhos-rodape__list li + li::before {
    content: ""; position: absolute; left: 0; top: 0; bottom: 0; z-index: 1; width: 1px;
    background: linear-gradient(180deg, rgba(243, 247, 246, 0), rgba(243, 247, 246, .14));
    pointer-events: none;
}
body.page-salvador .atalhos-rodape a {
    position: relative;
    display: flex; flex-direction: column; justify-content: flex-end;
    height: 100%; min-height: 128px; padding: 34px 20px 26px;
    color: #fff; text-decoration: none;
}
.atalhos-rodape__icon {
    position: absolute; right: -14px; bottom: -24px; z-index: 0;
    color: #fff; font-size: 5.4rem; line-height: 1;
    opacity: .05;
    transform: rotate(-8deg);
    pointer-events: none;
    transition: opacity .35s ease, color .35s ease, transform .5s cubic-bezier(.22, .8, .24, 1);
}
.atalhos-rodape__icon .bi { display: block; }
.atalhos-rodape__text { position: relative; z-index: 1; display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.atalhos-rodape__label { font-size: .95rem; font-weight: 600; line-height: 1.25; transition: color .2s ease; }
.atalhos-rodape__sub { color: rgba(243, 247, 246, .55); font-size: .78rem; font-weight: 400; line-height: 1.4; }
/* hover: a marca de água acende em teal e endireita-se; o nome fica teal */
body.page-salvador .atalhos-rodape a:hover .atalhos-rodape__icon,
body.page-salvador .atalhos-rodape a:focus-visible .atalhos-rodape__icon { opacity: .2; color: #5cc2c2; transform: rotate(0) scale(1.06); }
body.page-salvador .atalhos-rodape a:hover,
body.page-salvador .atalhos-rodape a:focus-visible { color: #fff; }
body.page-salvador .atalhos-rodape a:hover .atalhos-rodape__label,
body.page-salvador .atalhos-rodape a:focus-visible .atalhos-rodape__label { color: #8de0dc; }
body.page-salvador .atalhos-rodape a:focus-visible { outline: 2px solid #8de0dc; outline-offset: -4px; }
@media (prefers-reduced-motion: reduce) {
    .atalhos-rodape__icon { transition: none; }
}
@media (max-width: 1199.98px) {
    .atalhos-rodape__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .atalhos-rodape__list li:nth-child(3n + 1)::before { content: none; }
    .atalhos-rodape__list li:nth-child(n + 4) { border-top: 1px solid rgba(243, 247, 246, .1); }
}
@media (max-width: 575.98px) {
    .atalhos-rodape__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .atalhos-rodape__list li { border-top: 1px solid rgba(243, 247, 246, .1); }
    .atalhos-rodape__list li:nth-child(-n + 2) { border-top: 0; }
    .atalhos-rodape__list li::before { content: none !important; }
    .atalhos-rodape__list li:nth-child(even)::before { content: "" !important; }
    body.page-salvador .atalhos-rodape a { min-height: 84px; padding: 18px 14px; }
    .atalhos-rodape__icon { font-size: 4rem; right: -10px; bottom: -18px; }
    .atalhos-rodape__sub { display: none; }
}
