/**
 * Tema UnISCED: layout editorial para a Revista Africana de Pesquisa e
 * Desenvolvimento Sustentável. Carregado depois dos estilos do healthSciences.
 *
 * Fontes: PT Serif (títulos) e Fira Sans (texto), já incluídas no tema-pai.
 */

/* ============================================================
   1. Tokens
   ============================================================ */
:root {
    --u-red: #bb0000;
    --u-red-dark: #8f0000;
    --u-red-soft: #fbeeee;
    --u-ink: #1c1b1a;
    --u-text: #3b3936;
    --u-muted: #6d6a66;
    --u-line: #e8e4df;
    --u-paper: #faf8f5;
    --u-white: #ffffff;
    --u-radius: 10px;
    --u-shadow: 0 1px 2px rgba(28, 27, 26, .05), 0 4px 16px rgba(28, 27, 26, .06);
    --u-shadow-hover: 0 2px 4px rgba(28, 27, 26, .06), 0 12px 32px rgba(28, 27, 26, .10);
    --u-serif: 'PT Serif', Georgia, 'Times New Roman', serif;
    --u-sans: 'Fira Sans', 'Open Sans', system-ui, -apple-system, 'Segoe UI', Arial, sans-serif;
}

/* ============================================================
   2. Base e tipografia
   ============================================================ */
body {
    font-family: var(--u-sans);
    color: var(--u-text);
    background: var(--u-white);
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}
h1, h2, h3, .h1, .h2, .h3 {
    font-family: var(--u-serif);
    color: var(--u-ink);
    font-weight: 700;
    letter-spacing: -.01em;
}
h4, h5, h6, .h4, .h5, .h6 {
    font-family: var(--u-sans);
    color: var(--u-ink);
}
a {
    color: var(--u-red);
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
}
a:hover, a:focus {
    color: var(--u-red-dark);
}
::selection {
    background: var(--u-red);
    color: var(--u-white);
}
:focus-visible {
    outline: 3px solid rgba(187, 0, 0, .35);
    outline-offset: 2px;
}

.rapds-eyebrow {
    display: block;
    font-family: var(--u-sans);
    font-size: .75rem;
    font-weight: 600;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--u-red);
    margin-bottom: .5rem;
}

/* ============================================================
   3. Botões
   ============================================================ */
.btn {
    font-family: var(--u-sans);
    font-weight: 600;
    font-size: .9375rem;
    border-radius: 999px;
    padding: .6rem 1.35rem;
    border: 1.5px solid var(--u-red);
    color: var(--u-red);
    background: transparent;
    transition: background-color .15s, color .15s, border-color .15s, box-shadow .15s;
}
.btn:hover, .btn:focus {
    background: var(--u-red);
    border-color: var(--u-red);
    color: var(--u-white);
    box-shadow: 0 6px 16px rgba(187, 0, 0, .22);
    transform: translateY(-1px);
}
.btn:active {
    transform: translateY(0);
    box-shadow: none;
}
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    line-height: 1.2;
    transition: background-color .15s, color .15s, border-color .15s, box-shadow .15s, transform .15s;
}
.btn-primary,
.btn-primary:not(:disabled):not(.disabled) {
    background: var(--u-red);
    border-color: var(--u-red);
    color: var(--u-white) !important;
}
.btn-primary:hover, .btn-primary:focus, .btn-primary:active {
    background: var(--u-red-dark) !important;
    border-color: var(--u-red-dark) !important;
    color: var(--u-white) !important;
}
.btn-outline {
    background: transparent;
    color: var(--u-red);
}

/* ============================================================
   4. Header (logótipo grande e centrado + barra de menus)
   ============================================================ */
.main-header {
    background: var(--u-red) !important;
    border-bottom: 0;
    font-family: var(--u-sans);
}
.main-header > .container {
    padding: 0 1rem;
}
@media (min-width: 992px) {
    .main-header > .container {
        padding-top: 1.25rem;
    }
    .main-header .navbar-logo {
        display: block;
        max-width: 60%;
        margin: 0 auto;
        padding: .5rem 0 1.25rem;
        text-align: center;
    }
    .main-header .navbar-logo img {
        width: auto;
        max-width: 100%;
        max-height: 104px;
    }
}
.main-header .navbar {
    background: transparent !important;
    border-top: 1px solid rgba(255, 255, 255, .22);
    padding: 0;
}
@media (min-width: 992px) {
    .main-header #main-navbar {
        justify-content: center !important;
    }
    .main-header #primaryNav {
        justify-content: center;
        gap: 1.75rem;
        border-top: 0;
        width: auto;
    }
}
.main-header .nav-link {
    position: relative;
    color: var(--u-white) !important;
    font-size: .8125rem;
    font-weight: 600;
    letter-spacing: .06em;
    text-transform: uppercase;
    padding: 1rem 1.25rem !important;
    border: 0 !important;
    background: transparent !important;
}
/* Sublinhado branco no hover/activo (em ::before, porque ::after é a seta do submenu) */
.main-header #primaryNav > li > .nav-link::before {
    content: '';
    position: absolute;
    left: 1.25rem;
    right: 1.25rem;
    bottom: .55rem;
    height: 2px;
    background: var(--u-white);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform .2s ease;
}
.main-header #primaryNav > li > .nav-link:hover::before,
.main-header #primaryNav > li > .nav-link:focus::before,
.main-header #primaryNav > li.show > .nav-link::before,
.main-header #primaryNav > li > .nav-link.nmi_type_current::before {
    transform: scaleX(1);
}
/* Seta dos menus com submenu: chevron que roda quando abre */
.main-header #primaryNav .dropdown-toggle::after {
    content: '';
    display: inline-block;
    width: .6em;
    height: .6em;
    margin-left: .45em;
    vertical-align: .12em;
    border: 0 !important;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E%3Cpath d='M1.5 3.5 5 7l3.5-3.5' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
            mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E%3Cpath d='M1.5 3.5 5 7l3.5-3.5' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
    transition: transform .2s ease;
}
.main-header #primaryNav .show > .dropdown-toggle::after,
.main-header #primaryNav .dropdown-toggle[aria-expanded="true"]::after {
    transform: rotate(180deg);
}
.main-header .nav-link:hover,
.main-header .nav-link:focus,
.main-header .show > .nav-link {
    background: transparent !important;
    color: var(--u-white) !important;
}
.main-header .dropdown-toggle::after {
    border-top-color: var(--u-white);
}
/* Registo / Acesso */
.main-header #userNav .nav-link {
    font-size: .75rem;
    padding: .4rem .9rem !important;
    border-radius: 999px;
}
.main-header #userNav .nav-link::after {
    display: none;
}
.main-header #userNav > li:last-child > .nav-link {
    border: 1px solid rgba(255, 255, 255, .6) !important;
}
.main-header #userNav > li:last-child > .nav-link:hover {
    background: var(--u-white) !important;
    color: var(--u-red) !important;
}

/* Submenus */
.main-header .dropdown-menu,
.main-header .dropdown-menu.show,
#primaryNav .dropdown-menu.show {
    background: var(--u-white) !important;
    border: 0;
    border-radius: var(--u-radius);
    box-shadow: var(--u-shadow-hover);
    padding: .5rem;
    min-width: 14rem;
}
@media (min-width: 992px) {
    #primaryNav .dropdown-menu.show {
        display: block;
    }
}
.main-header .dropdown-menu .dropdown-item,
#primaryNav .dropdown-menu.show .dropdown-item {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    color: var(--u-ink) !important;
    font-size: .9375rem;
    font-weight: 500;
    text-transform: none;
    letter-spacing: 0;
    white-space: nowrap;
    border: 0 !important;
    border-radius: 8px;
    padding: .65rem .9rem .65rem 1.1rem;
    transition: background-color .18s ease, color .18s ease, padding .18s ease;
}
/* barra vermelha à esquerda que cresce no hover */
.main-header .dropdown-menu .dropdown-item::before {
    content: '';
    position: absolute;
    left: .35rem;
    top: 50%;
    width: 3px;
    height: 0;
    border-radius: 3px;
    background: var(--u-red);
    transform: translateY(-50%);
    transition: height .18s ease;
}
/* seta que aparece no hover */
.main-header .dropdown-menu .dropdown-item::after {
    content: '\2192';
    font-size: .9rem;
    color: var(--u-red);
    opacity: 0;
    transform: translateX(-6px);
    transition: opacity .18s ease, transform .18s ease;
}
.main-header .dropdown-menu .dropdown-item:hover,
.main-header .dropdown-menu .dropdown-item:focus,
#primaryNav .dropdown-item:hover,
#primaryNav .dropdown-item:focus {
    background: var(--u-red-soft) !important;
    color: var(--u-red) !important;
    border: 0 !important;
    padding-left: 1.35rem;
}
.main-header .dropdown-menu .dropdown-item:hover::before,
.main-header .dropdown-menu .dropdown-item:focus::before {
    height: 60%;
}
.main-header .dropdown-menu .dropdown-item:hover::after,
.main-header .dropdown-menu .dropdown-item:focus::after {
    opacity: 1;
    transform: translateX(0);
}
/* submenu abre com um pequeno deslizar */
@media (min-width: 992px) {
    .main-header .dropdown-menu.show {
        animation: rapds-dropdown .18s ease-out;
        margin-top: .25rem;
    }
}
@keyframes rapds-dropdown {
    from { opacity: 0; transform: translateY(-6px); }
    to   { opacity: 1; transform: translateY(0); }
}
.main-header .navbar-toggler {
    border-color: rgba(255, 255, 255, .6);
    margin: .75rem 0;
}
.main-header .navbar-toggler-icon {
    filter: invert(1) brightness(2);
}
.main-header .navbar-brand img {
    max-height: 48px;
}

/* ============================================================
   5. Página inicial
   ============================================================ */
.rapds-hero {
    background:
        radial-gradient(1200px 400px at 85% -10%, rgba(187, 0, 0, .06), transparent 60%),
        var(--u-paper);
    border-bottom: 1px solid var(--u-line);
    padding: 4rem 0 4.5rem;
}
.rapds-hero-title {
    font-size: clamp(2rem, 3.4vw, 3rem);
    line-height: 1.12;
    margin: 0 0 1.25rem;
}
.rapds-hero-description {
    font-size: 1.125rem;
    line-height: 1.7;
    color: var(--u-text);
    max-width: 40rem;
}
.rapds-hero-description p:last-child {
    margin-bottom: 0;
}
.rapds-badges {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    padding: 0;
    margin: 1.75rem 0 2rem;
}
.rapds-badges li {
    font-size: .8125rem;
    font-weight: 500;
    color: var(--u-ink);
    background: var(--u-white);
    border: 1px solid var(--u-line);
    border-radius: 999px;
    padding: .35rem .85rem .35rem 1.6rem;
    position: relative;
}
.rapds-badges li::before {
    content: '';
    position: absolute;
    left: .75rem;
    top: 50%;
    width: .45rem;
    height: .45rem;
    margin-top: -.225rem;
    border-radius: 50%;
    background: var(--u-red);
}
.rapds-hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
}
.rapds-hero-issue {
    margin-top: 3rem;
}
@media (min-width: 992px) {
    .rapds-hero-issue {
        margin-top: 0;
        display: flex;
        justify-content: flex-end;
    }
}
.rapds-issue-card {
    display: flex;
    gap: 1.5rem;
    align-items: center;
    background: var(--u-white);
    border: 1px solid var(--u-line);
    border-radius: 14px;
    padding: 1.25rem;
    box-shadow: var(--u-shadow);
    text-decoration: none !important;
    color: var(--u-text);
    max-width: 30rem;
    transition: box-shadow .2s, transform .2s;
}
.rapds-issue-card:hover {
    box-shadow: var(--u-shadow-hover);
    transform: translateY(-2px);
    color: var(--u-text);
}
.rapds-issue-cover {
    width: 42%;
    max-width: 170px;
    border-radius: 4px;
    box-shadow: 0 10px 24px rgba(0, 0, 0, .18);
    flex-shrink: 0;
}
.rapds-issue-info {
    display: flex;
    flex-direction: column;
    gap: .35rem;
}
.rapds-issue-series {
    font-family: var(--u-serif);
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--u-ink);
}
.rapds-issue-title {
    font-size: 1rem;
    line-height: 1.4;
}
.rapds-issue-date {
    font-size: .8125rem;
    color: var(--u-muted);
}

/* Secções da página inicial */
.container-homepage-issue {
    padding-top: 1rem;
}
.rapds-section {
    padding: 3.5rem 0 1rem;
}
.rapds-section-header {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
    border-bottom: 1px solid var(--u-line);
    padding-bottom: .9rem;
    margin-bottom: 1.75rem;
}
.rapds-section-title {
    font-size: 1.75rem;
    margin: 0;
    position: relative;
}
.rapds-section-title::after {
    content: '';
    position: absolute;
    left: 0;
    bottom: calc(-.9rem - 1px);
    width: 3.5rem;
    height: 3px;
    background: var(--u-red);
}
.rapds-section-link {
    font-size: .875rem;
    font-weight: 600;
    text-decoration: none;
    white-space: nowrap;
}

/* Notícias */
.rapds-news-card {
    display: block;
    height: 100%;
    background: var(--u-white);
    border: 1px solid var(--u-line);
    border-radius: var(--u-radius);
    padding: 1.5rem;
    margin-bottom: 1.5rem;
    text-decoration: none !important;
    color: var(--u-text);
    transition: box-shadow .2s, border-color .2s, transform .2s;
}
.rapds-news-card:hover {
    border-color: transparent;
    box-shadow: var(--u-shadow-hover);
    transform: translateY(-2px);
    color: var(--u-text);
}
.rapds-news-date {
    display: block;
    font-size: .8125rem;
    font-weight: 600;
    color: var(--u-red);
    margin-bottom: .5rem;
}
.rapds-news-title {
    font-size: 1.2rem;
    line-height: 1.35;
    margin-bottom: .6rem;
}
.rapds-news-summary {
    font-size: .9375rem;
    line-height: 1.6;
    color: var(--u-muted);
}

/* Apresentação do número */
.rapds-issue-intro {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem;
    background: var(--u-paper);
    border-left: 4px solid var(--u-red);
    border-radius: 0 var(--u-radius) var(--u-radius) 0;
    padding: 1.75rem 2rem;
    margin-bottom: 2.25rem;
}
@media (min-width: 992px) {
    .rapds-issue-intro {
        grid-template-columns: 1fr auto;
        align-items: center;
    }
}
.rapds-issue-intro-title {
    font-size: 1.35rem;
    margin-bottom: .75rem;
}
.rapds-issue-intro-text p {
    line-height: 1.7;
    margin-bottom: 0;
}
.rapds-issue-intro-galleys {
    text-align: center;
}
.rapds-more {
    margin-top: 2rem;
}

/* ============================================================
   6. Índice de artigos (página inicial, número, pesquisa)
   ============================================================ */
.issue-toc-section {
    margin-bottom: 2.5rem;
}
.issue-toc-section-title,
h2.issue-toc-section-title,
h3.issue-toc-section-title {
    font-family: var(--u-sans) !important;
    font-size: .8125rem !important;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--u-red) !important;
    border: 0;
    margin: 0 0 1rem;
    padding: 0;
}
.article-summary {
    display: flex;
    flex-direction: column;
    background: var(--u-white) !important;
    border: 1px solid var(--u-line) !important;
    border-left: 1px solid var(--u-line) !important;
    border-radius: var(--u-radius);
    padding: 1.35rem 1.5rem !important;
    margin-bottom: 1rem !important;
    box-shadow: none;
    transition: box-shadow .2s, border-color .2s;
}
.article-summary:hover {
    border-color: transparent !important;
    box-shadow: var(--u-shadow-hover);
}
.article-summary-title {
    order: -1;
    font-family: var(--u-serif);
    font-size: 1.2rem;
    line-height: 1.4;
    margin-bottom: .45rem;
}
.article-summary-title a {
    color: var(--u-ink);
    text-decoration: none;
}
.article-summary-title a:hover {
    color: var(--u-red);
}
.article-summary-authors {
    font-size: .9rem;
    color: var(--u-muted);
    margin-bottom: .85rem;
}
.article-summary-date,
.article-summary-pages {
    font-size: .8125rem;
    color: var(--u-muted);
}
.article-summary-galleys {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}
.article-summary-galleys .btn {
    font-size: .8125rem;
    padding: .35rem .9rem;
    background: transparent !important;
    color: var(--u-red) !important;
    border: 1.5px solid var(--u-red) !important;
}
.article-summary-galleys .btn:hover {
    background: var(--u-red) !important;
    color: var(--u-white) !important;
}

/* ============================================================
   7. Cabeçalhos de página (Sobre, Notícias, Arquivo...)
   ============================================================ */
.page-header {
    border: 0 !important;
    text-align: center;
    padding: 3rem 0 1rem;
    margin-bottom: 1.5rem;
}
.page-header h1,
.page-header .h1 {
    font-size: clamp(1.9rem, 3vw, 2.6rem);
    margin: 0;
}
.page-header h1::after {
    content: '';
    display: block;
    width: 3.5rem;
    height: 3px;
    background: var(--u-red);
    margin: 1rem auto 0;
}
.page-header hr {
    display: none;
}

/* Páginas de texto: largura de leitura confortável */
.page-about .page-content,
.page-submissions .page-content,
.page-editorial-team .page-content,
.page-contact .page-content,
.page-privacy .page-content,
.page-static .page-content,
.page-announcement .page-content {
    font-size: 1.0625rem;
    line-height: 1.8;
    max-width: 46rem;
    margin: 0 auto 4rem;
}
.page-content h2,
.page-content h3 {
    margin-top: 2.5rem;
    margin-bottom: 1rem;
}
.page-content strong:only-child {
    display: inline-block;
    font-family: var(--u-serif);
    font-size: 1.2rem;
    color: var(--u-ink);
    margin-top: 1rem;
}
.page-content blockquote {
    border-left: 4px solid var(--u-red);
    background: var(--u-paper);
    padding: 1rem 1.5rem;
    margin: 1.5rem 0;
}
.page-content table {
    width: 100%;
    border-collapse: collapse;
    margin: 1.5rem 0;
}
.page-content th,
.page-content td {
    border-bottom: 1px solid var(--u-line);
    padding: .6rem .75rem;
}
.page-editorial-team .page-content p {
    border-left: 3px solid var(--u-red);
    padding-left: 1rem;
}

/* ============================================================
   8. Arquivo de números
   ============================================================ */
.page-archives .row {
    gap: 2rem 0;
    justify-content: flex-start !important;
}
.issue-summary.card {
    border: 0;
    background: transparent;
    height: 100%;
}
.issue-summary-cover {
    border-radius: 4px;
    box-shadow: 0 8px 22px rgba(0, 0, 0, .14);
    transition: transform .2s, box-shadow .2s;
    border: 0 !important;
}
.issue-summary:hover .issue-summary-cover {
    transform: translateY(-4px);
    box-shadow: 0 16px 34px rgba(0, 0, 0, .2);
}
.issue-summary .card-body {
    padding: 1rem 0 0;
}
.issue-summary-series {
    font-family: var(--u-serif);
    font-size: 1.15rem !important;
}
.issue-summary-series a {
    color: var(--u-ink);
    text-decoration: none;
}
.issue-summary-date {
    font-size: .8125rem;
    color: var(--u-red);
    font-weight: 600;
    margin-bottom: .35rem;
}
.issue-summary-title {
    font-size: .9rem;
    color: var(--u-muted);
    line-height: 1.5;
}

/* ============================================================
   9. Página de um número
   ============================================================ */
.page-issue-header {
    padding-bottom: .5rem;
}
.page-issue-date {
    font-size: .875rem;
    color: var(--u-muted);
    margin-top: .75rem;
}
.page-issue-details {
    background: var(--u-paper);
    border-radius: 14px;
    padding: 2rem 1rem;
    margin: 0 0 3rem !important;
    align-items: center;
}
.page-issue-description .h2 {
    font-size: 1.5rem;
}
.page-issue-description p {
    line-height: 1.75;
}
.page-issue-cover {
    border-radius: 4px;
    box-shadow: 0 10px 26px rgba(0, 0, 0, .18);
}

/* ============================================================
   10. Página do artigo
   ============================================================ */
.page-article .page-header {
    max-width: 58rem;
    margin: 0 auto 2rem;
    padding-top: 3rem;
}
.article-details-issue-identifier,
.article-details-issue-section {
    font-family: var(--u-sans);
    font-size: .8125rem;
    font-weight: 600;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--u-red);
}
.article-details-issue-identifier a {
    color: var(--u-red);
    text-decoration: none;
}
.article-details-fulltitle {
    font-size: clamp(1.75rem, 3vw, 2.4rem) !important;
    line-height: 1.2;
    margin: .75rem 0 1rem;
}
.article-details-fulltitle::after {
    display: none !important;
}
.article-details-published {
    font-size: .875rem;
    color: var(--u-muted);
}
.authors-string {
    font-size: 1.05rem;
    margin-top: .75rem;
}
.authors-string .author-string-href {
    color: var(--u-ink);
    font-weight: 500;
}
.article-details-author {
    background: var(--u-paper);
    border-radius: var(--u-radius);
    padding: 1rem 1.25rem;
    margin-top: .75rem;
    text-align: left;
}
.article-details-main {
    background: transparent !important;
    padding: 0 !important;
}
.article-details-block {
    margin-bottom: 2.25rem;
}
.article-details-heading,
.page-article h2.label {
    font-family: var(--u-sans) !important;
    font-size: .8125rem !important;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--u-red) !important;
    border-bottom: 1px solid var(--u-line);
    padding-bottom: .6rem;
    margin-bottom: 1.25rem;
}
.article-details-abstract {
    font-family: var(--u-serif);
    font-size: 1.0625rem;
    line-height: 1.85;
    color: var(--u-ink);
    background: var(--u-paper);
    border-radius: var(--u-radius);
    padding: 2rem 2.25rem;
}
.article-details-abstract .article-details-heading {
    border-bottom: 0;
    padding-bottom: 0;
}
.article-details-abstract p:last-child {
    margin-bottom: 0;
}
.article-details-abstract strong {
    font-family: var(--u-sans);
    font-size: .9375rem;
}
.article-details-keywords,
.article-details-abstract p:has(> strong:first-child) {
    font-family: var(--u-sans);
}
@media (min-width: 992px) {
    .article-details-sidebar {
        position: sticky;
        top: 1.5rem;
    }
}
.article-details-cover img {
    border-radius: 4px;
    box-shadow: 0 10px 26px rgba(0, 0, 0, .16);
}
.article-details-galleys .btn,
.article-details-galley .btn {
    display: block;
    width: 100%;
    text-align: center;
    margin-bottom: .5rem;
}
.article-details-galleys-sidebar {
    margin-top: 1.25rem;
}
.downloads_chart {
    background: var(--u-white);
    border: 1px solid var(--u-line);
    border-radius: var(--u-radius);
    padding: 1.5rem;
}

/* ============================================================
   11. Notícias
   ============================================================ */
.announcement-summary {
    border: 1px solid var(--u-line);
    border-radius: var(--u-radius);
    padding: 1.5rem 1.75rem;
    margin-bottom: 1.25rem;
    transition: box-shadow .2s;
}
.announcement-summary:hover {
    box-shadow: var(--u-shadow-hover);
}
.announcement-summary h2,
.announcement-summary h3 {
    font-size: 1.3rem;
    margin: .25rem 0 .5rem;
}
.announcement-summary h2 a,
.announcement-summary h3 a {
    color: var(--u-ink);
    text-decoration: none;
}
.announcement-summary-date {
    font-size: .8125rem;
    font-weight: 600;
    color: var(--u-red);
}
.announcement-summary-description {
    color: var(--u-muted);
    font-size: 1rem;
}
.page-announcement .page-content img {
    border-radius: var(--u-radius);
    margin: .5rem 0 1rem;
}

/* ============================================================
   12. Formulários (acesso, registo, pesquisa)
   ============================================================ */
.form-control {
    border: 1px solid #d6d1cb;
    border-radius: 8px;
    padding: .6rem .85rem;
}
.form-control:focus {
    border-color: var(--u-red);
    box-shadow: 0 0 0 3px rgba(187, 0, 0, .15);
}
.page-login .page-content,
.page-register .page-content,
.page-lost-password .page-content {
    background: var(--u-white);
    border: 1px solid var(--u-line);
    border-radius: 14px;
    box-shadow: var(--u-shadow);
    padding: 2rem 2.25rem;
    margin-bottom: 4rem;
}
.search-filters {
    background: var(--u-paper);
    border-radius: var(--u-radius);
    padding: 1.5rem;
}
.pagination .page-link {
    border-radius: 6px;
    margin: 0 .15rem;
}

/* ============================================================
   13. Rodapé
   ============================================================ */
.site-footer {
    background: #161514 !important;
    border-top: 4px solid var(--u-red);
    color: rgba(255, 255, 255, .72);
    font-family: var(--u-sans);
    margin-top: 4rem;
}
.site-footer > .container > hr:first-child,
.site-footer hr {
    border-color: rgba(255, 255, 255, .1);
}
.site-footer h6,
.site-footer .h6 {
    color: var(--u-white);
    font-size: .8125rem;
    letter-spacing: .1em;
}
.site-footer a {
    color: rgba(255, 255, 255, .72);
    text-decoration: none;
}
.site-footer a:hover {
    color: var(--u-white) !important;
    text-decoration: underline;
}

/* ============================================================
   14. Telemóvel
   ============================================================ */
@media (max-width: 991.98px) {
    .rapds-hero {
        padding: 2.5rem 0 3rem;
    }
    .rapds-issue-card {
        max-width: none;
    }
    .main-header .navbar-collapse {
        padding-bottom: 1rem;
    }
    .main-header .nav-link {
        padding: .7rem .25rem !important;
    }
    .main-header #primaryNav > li > .nav-link::before {
        display: none;
    }
    .article-details-abstract {
        padding: 1.5rem;
    }
    .rapds-section-header {
        flex-direction: column;
        align-items: flex-start;
    }
}

/* ============================================================
   15. Ajustes
   ============================================================ */
/* Botões de PDF nas listas: .btn-primary tem mais especificidade, por isso repetimos a classe */
.article-summary-galleys .btn.btn-primary,
.article-summary-galleys .btn.btn-primary:not(:disabled):not(.disabled) {
    font-size: .8125rem;
    padding: .4rem 1rem;
    background: transparent !important;
    color: var(--u-red) !important;
    border: 1.5px solid var(--u-red) !important;
}
.article-summary-galleys .btn.btn-primary:hover,
.article-summary-galleys .btn.btn-primary:focus {
    background: var(--u-red) !important;
    color: var(--u-white) !important;
}
.article-summary-galleys .btn::before {
    content: '';
    width: .85em;
    height: 1em;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 16'%3E%3Cpath d='M1 0h7l4 4v11a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1zm6 1v4h4M3 9h6M3 12h6' fill='none' stroke='black' stroke-width='1.4'/%3E%3C/svg%3E") center / contain no-repeat;
            mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 16'%3E%3Cpath d='M1 0h7l4 4v11a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1zm6 1v4h4M3 9h6M3 12h6' fill='none' stroke='black' stroke-width='1.4'/%3E%3C/svg%3E") center / contain no-repeat;
}
.article-summary-title {
    font-weight: 700;
}

/* Espaços depois do destaque */
.container-homepage-issue.page-content {
    padding-top: 0 !important;
    margin-top: 0 !important;
}
.container-homepage-issue > .rapds-section:first-child {
    padding-top: 3rem;
}
.rapds-issue-intro-text p:empty,
.rapds-issue-intro-text p:has(> br:only-child) {
    display: none;
}
.rapds-issue-intro-text > :last-child {
    margin-bottom: 0;
}
.rapds-issue-intro {
    padding: 1.75rem 2rem;
}
.rapds-news-card .rapds-news-title {
    margin-top: 0;
}
.rapds-issue-intro .rapds-issue-intro-title {
    margin-top: 0;
}

/* Página do número: sem caixa dentro da caixa, índice centrado */
.page-issue-description-wrapper {
    background: transparent !important;
    padding: 0 1rem !important;
    margin: 0 !important;
}
.page-issue-description .h2 {
    text-align: left;
    margin-bottom: .85rem;
}
.page-issue-description p:last-child {
    margin-bottom: 0;
}
.page-issue > .row:last-child,
.issue-wrapper,
.row.issue-wrapper {
    justify-content: center;
}
.page-issue > .row:last-child > [class*="col-"] {
    flex: 0 0 100%;
    max-width: 58rem;
}

/* Arquivo: grelha centrada com capas da mesma proporção */
.page-archives .row {
    display: flex;
    flex-wrap: wrap;
    justify-content: center !important;
    gap: 2.5rem 2rem;
    margin: 0 0 3rem;
}
.page-archives .row > [class*="col-"] {
    flex: 0 0 220px;
    max-width: 220px;
    padding: 0;
}
.issue-summary-cover {
    width: 100%;
    aspect-ratio: 3 / 4;
    object-fit: cover;
    object-position: top;
}

/* O tema-pai põe uma linha e um espaço grande por cima do conteúdo */
.page-content {
    border-top: 0 !important;
    padding-top: .5rem;
    font-size: 1.0625rem;
    line-height: 1.8;
}
/* Introdução da página de notícias */
.page-announcement .page-content > p:first-child {
    font-size: 1.15rem;
    color: var(--u-muted);
    text-align: center;
    margin-bottom: 2rem;
}
/* o tema acrescenta colunas vazias para "encher" a linha; escondê-las centra as capas */
.page-archives .row > [class*="col-"]:empty {
    display: none;
}

/* Submenu: alinhado por baixo do item e com a largura do conteúdo */
@media (min-width: 992px) {
    /* o tema-pai põe "#primaryNav .nav-item { position: static }" */
    #primaryNav .nav-item.dropdown {
        position: relative;
    }
    #primaryNav .dropdown-menu,
    #primaryNav .dropdown-menu.show {
        left: 0 !important;
        right: auto !important;
        width: auto !important;
        min-width: 15rem;
        transform: none !important;
        flex-direction: column;
    }
}
/* texto vermelho no hover (o tema-pai usa #primaryNav, por isso é preciso a mesma especificidade) */
#primaryNav .dropdown-menu.show .dropdown-item:hover,
#primaryNav .dropdown-menu.show .dropdown-item:focus {
    color: var(--u-red) !important;
}

/* ============================================================
   16. Cartão do artigo (v2) e botões de download
   ============================================================ */
.rapds-icon {
    width: 1em;
    height: 1em;
    flex-shrink: 0;
}
.rapds-article-card.article-summary {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: .6rem;
    padding: 1.6rem 1.75rem 1.25rem !important;
    border-radius: 14px;
    overflow: hidden;
    transition: box-shadow .22s ease, transform .22s ease, border-color .22s ease;
}
/* barra vermelha que aparece à esquerda no hover */
.rapds-article-card.article-summary::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 4px;
    background: var(--u-red);
    transform: scaleY(0);
    transform-origin: top;
    transition: transform .25s ease;
}
.rapds-article-card.article-summary:hover {
    transform: translateY(-3px);
}
.rapds-article-card.article-summary:hover::before {
    transform: scaleY(1);
}
.rapds-article-card .article-summary-title {
    order: 0;
    font-size: 1.3rem;
    line-height: 1.35;
    margin: 0;
}
.rapds-article-card .article-summary-title a {
    background-image: linear-gradient(var(--u-red), var(--u-red));
    background-size: 0 1px;
    background-position: 0 100%;
    background-repeat: no-repeat;
    transition: background-size .3s ease, color .2s;
}
.rapds-article-card:hover .article-summary-title a {
    color: var(--u-red);
    background-size: 100% 1px;
}
.rapds-article-card .article-summary-authors {
    display: flex;
    align-items: center;
    gap: .45rem;
    font-size: .9375rem;
    font-weight: 500;
    color: var(--u-text);
    margin: 0;
}
.rapds-article-card .article-summary-authors .rapds-icon {
    color: var(--u-red);
}
.rapds-article-abstract {
    font-size: .9375rem;
    line-height: 1.65;
    color: var(--u-muted);
    margin: .1rem 0 0;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.rapds-article-meta {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .4rem .5rem;
    padding: 0;
    margin: .2rem 0 0;
    font-size: .8125rem;
    color: var(--u-muted);
}
.rapds-article-meta:empty {
    display: none;
}
.rapds-article-meta li {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
}
.rapds-article-meta li + li::before {
    content: '·';
    margin-right: .15rem;
    color: #b9b3ac;
}
.rapds-meta-oa {
    color: #1f7a4d;
    font-weight: 600;
}
.rapds-meta-doi a {
    color: var(--u-muted);
}

/* Rodapé do cartão */
.rapds-article-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .75rem 1rem;
    border-top: 1px solid var(--u-line);
    margin-top: .6rem;
    padding-top: 1rem;
}
.rapds-read-link {
    font-size: .9rem;
    font-weight: 600;
    color: var(--u-ink);
    text-decoration: none;
}
.rapds-read-link span {
    display: inline-block;
    transition: transform .2s ease;
}
.rapds-read-link:hover {
    color: var(--u-red);
}
.rapds-read-link:hover span {
    transform: translateX(4px);
}
.rapds-article-card .article-summary-galleys {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    margin: 0;
}

/* Grupo de botões: Descarregar (principal) + Ler online (secundário) */
.rapds-galley {
    display: inline-flex;
    align-items: stretch;
    flex-wrap: wrap;
    gap: .5rem;
}
.btn.rapds-btn-download,
.article-summary-galleys .btn.btn-primary.rapds-btn-download,
.article-summary-galleys .btn.btn-primary.rapds-btn-download:not(:disabled):not(.disabled) {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    font-size: .875rem;
    font-weight: 600;
    padding: .55rem 1.1rem .55rem 1rem;
    border-radius: 999px;
    background: var(--u-red) !important;
    border: 1.5px solid var(--u-red) !important;
    color: var(--u-white) !important;
    box-shadow: 0 2px 6px rgba(187, 0, 0, .18);
}
.btn.rapds-btn-download:hover,
.btn.rapds-btn-download:focus,
.article-summary-galleys .btn.btn-primary.rapds-btn-download:hover {
    background: var(--u-red-dark) !important;
    border-color: var(--u-red-dark) !important;
    color: var(--u-white) !important;
    box-shadow: 0 8px 20px rgba(187, 0, 0, .28);
    transform: translateY(-1px);
}
.rapds-btn-download .rapds-icon {
    transition: transform .2s ease;
}
.rapds-btn-download:hover .rapds-icon {
    transform: translateY(2px);
}
.rapds-filetype {
    font-size: .6875rem;
    font-weight: 700;
    letter-spacing: .06em;
    background: rgba(255, 255, 255, .2);
    border-radius: 4px;
    padding: .1rem .35rem;
}
/* o ícone de documento antigo (secção 15) já não é preciso */
.article-summary-galleys .btn::before {
    content: none !important;
}
.btn.rapds-btn-view,
.article-summary-galleys .btn.rapds-btn-view {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    font-size: .875rem;
    font-weight: 600;
    padding: .55rem 1rem;
    border-radius: 999px;
    background: var(--u-white) !important;
    border: 1.5px solid var(--u-line) !important;
    color: var(--u-ink) !important;
}
.btn.rapds-btn-view:hover,
.btn.rapds-btn-view:focus {
    background: var(--u-red-soft) !important;
    border-color: var(--u-red) !important;
    color: var(--u-red) !important;
    box-shadow: none;
}

/* Página do artigo: botões a toda a largura na barra lateral */
.article-details-galleys .rapds-galley {
    display: flex;
    flex-direction: column;
    width: 100%;
}
.article-details-galleys .rapds-galley .btn {
    display: flex !important;
    justify-content: center;
    width: 100%;
    padding: .75rem 1rem;
    font-size: .9375rem;
}
.article-details-galleys-btm .rapds-galley {
    flex-direction: row;
    width: auto;
}
.article-details-galleys-btm .rapds-galley .btn {
    width: auto;
}
/* Número completo (página inicial) */
.rapds-issue-intro-galleys .rapds-galley {
    flex-direction: column;
    align-items: center;
}

@media (max-width: 575.98px) {
    .rapds-article-card.article-summary {
        padding: 1.25rem 1.25rem 1rem !important;
    }
    .rapds-article-actions {
        flex-direction: column;
        align-items: flex-start;
    }
    .rapds-btn-view-label {
        display: none;
    }
}

/* Página do artigo: botões por baixo da capa no computador, por baixo do resumo no telemóvel */
@media (min-width: 992px) {
    .article-details-galleys-sidebar {
        display: block !important;
        background: var(--u-white);
        border: 1px solid var(--u-line);
        border-radius: 14px;
        box-shadow: var(--u-shadow);
        padding: 1rem;
    }
    .article-details-galleys-btm {
        display: none !important;
    }
}
@media (max-width: 991.98px) {
    .article-details-galleys-sidebar {
        display: none !important;
    }
    .article-details-galleys-btm {
        display: block !important;
    }
}
.article-details-cover img {
    width: 100%;
}
/* Barra lateral do artigo: capa e botões com a largura da coluna */
.article-details-sidebar .article-details-cover,
.article-details-sidebar .article-details-galley {
    width: 100%;
    max-width: none;
}
.article-details-sidebar .article-details-cover img {
    width: 100%;
    max-width: none;
}
.article-details-galleys-sidebar .rapds-galley {
    align-items: stretch;
}
/* Na página inicial o cartão está dentro de .page-content, que muda tamanhos e margens */
.rapds-article-card .rapds-article-abstract {
    font-size: .9375rem !important;
    line-height: 1.65 !important;
    margin: .1rem 0 0 !important;
}
.rapds-article-card .rapds-article-meta,
.rapds-article-card .rapds-article-meta li {
    font-size: .8125rem !important;
    line-height: 1.4 !important;
    margin-bottom: 0 !important;
}
.rapds-article-card .rapds-meta-oa {
    font-weight: 600 !important;
}

/* Item activo do menu (ex.: "Início" na página inicial) */
.main-header #primaryNav > li.rapds-nav-active > .nav-link::before {
    transform: scaleX(1);
}

/* ============================================================
   17. Rodapé (v2)
   ============================================================ */
/* Faixa de chamada para submissões */
.rapds-cta {
    background:
        radial-gradient(800px 300px at 90% 0%, rgba(255, 255, 255, .12), transparent 60%),
        linear-gradient(120deg, var(--u-red) 0%, var(--u-red-dark) 100%);
    color: var(--u-white);
    margin-top: 5rem;
    padding: 3rem 0;
}
.rapds-cta-inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem 3rem;
}
.rapds-cta-title {
    color: var(--u-white);
    font-size: clamp(1.5rem, 2.4vw, 2rem);
    margin: 0 0 .5rem;
}
.rapds-cta-text p {
    color: rgba(255, 255, 255, .85);
    font-size: 1.0625rem;
    margin: 0;
    max-width: 38rem;
}
.rapds-cta-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
}
.btn.rapds-btn-light {
    background: var(--u-white);
    border-color: var(--u-white);
    color: var(--u-red) !important;
}
.btn.rapds-btn-light:hover,
.btn.rapds-btn-light:focus {
    background: var(--u-white);
    border-color: var(--u-white);
    color: var(--u-red-dark) !important;
    box-shadow: 0 8px 20px rgba(0, 0, 0, .2);
}
.btn.rapds-btn-ghost {
    background: transparent;
    border-color: rgba(255, 255, 255, .7);
    color: var(--u-white) !important;
}
.btn.rapds-btn-ghost:hover,
.btn.rapds-btn-ghost:focus {
    background: rgba(255, 255, 255, .12);
    border-color: var(--u-white);
    color: var(--u-white) !important;
    box-shadow: none;
}

/* Rodapé principal */
.site-footer.rapds-footer {
    background: #141312 !important;
    border-top: 0;
    margin-top: 0;
    padding: 0;
    color: rgba(255, 255, 255, .68);
    font-size: .9375rem;
}
.rapds-cta + .site-footer.rapds-footer,
.site-footer.rapds-footer {
    margin-top: 0;
}
body:not(:has(.rapds-cta)) .site-footer.rapds-footer {
    margin-top: 4rem;
}
.rapds-footer .site-footer-sidebar:not(:has(*:not(.row))) {
    display: none;
}
.rapds-footer-main {
    padding: 4rem 1rem 3rem;
}
.rapds-footer-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2.5rem;
}
@media (min-width: 768px) {
    .rapds-footer-grid {
        grid-template-columns: repeat(3, 1fr);
    }
    .rapds-footer-about {
        grid-column: 1 / -1;
    }
}
@media (min-width: 1200px) {
    .rapds-footer-grid {
        grid-template-columns: 1.6fr 1fr 1fr 1.3fr;
        gap: 3rem;
    }
    .rapds-footer-about {
        grid-column: auto;
    }
}
.rapds-footer-logo {
    width: 100%;
    max-width: 260px;
    height: auto;
    margin-bottom: 1.25rem;
}
.rapds-footer-about p {
    line-height: 1.7;
    max-width: 26rem;
    margin-bottom: 1.25rem;
}
.rapds-footer ul {
    list-style: none;
    padding: 0;
    margin: 0;
}
.rapds-footer-tags {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
}
.rapds-footer-tags li {
    font-size: .75rem;
    font-weight: 600;
    letter-spacing: .03em;
    color: rgba(255, 255, 255, .85);
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 999px;
    padding: .25rem .7rem;
}
.rapds-footer h6 {
    color: var(--u-white);
    font-family: var(--u-sans);
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
    margin: 0 0 1.25rem;
    padding-bottom: .75rem;
    position: relative;
}
.rapds-footer h6::after {
    content: '';
    position: absolute;
    left: 0;
    bottom: 0;
    width: 1.75rem;
    height: 2px;
    background: var(--u-red);
}
.rapds-footer-col li {
    margin-bottom: .7rem;
}
.rapds-footer a {
    color: rgba(255, 255, 255, .68);
    text-decoration: none;
    transition: color .15s ease;
}
.rapds-footer a:hover,
.rapds-footer a:focus {
    color: var(--u-white) !important;
    text-decoration: none !important;
}
.rapds-footer-col:not(.rapds-footer-contacts) li a {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
}
.rapds-footer-col:not(.rapds-footer-contacts) li a::before {
    content: '';
    width: 0;
    height: 1px;
    background: var(--u-red);
    transition: width .2s ease;
}
.rapds-footer-col:not(.rapds-footer-contacts) li a:hover::before {
    width: .75rem;
}

/* Contactos com ícones */
.rapds-footer-contacts li {
    position: relative;
    padding-left: 1.75rem;
    margin-bottom: 1rem;
    line-height: 1.6;
}
.rapds-footer-contacts li::before {
    content: '';
    position: absolute;
    left: 0;
    top: .2rem;
    width: 1.05rem;
    height: 1.05rem;
    background: #e05252;
    -webkit-mask: var(--rapds-ic) center / contain no-repeat;
            mask: var(--rapds-ic) center / contain no-repeat;
}
.rapds-ic-mail { --rapds-ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M2 3.5h12v9H2zM2 4l6 5 6-5' fill='none' stroke='black' stroke-width='1.4' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.rapds-ic-phone { --rapds-ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M5.5 2 3 2.5C3 9 7 13 13.5 13l.5-2.5-3-1.5-1.5 1.5C8 10 6 8 5.5 6.5L7 5z' fill='none' stroke='black' stroke-width='1.4' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.rapds-ic-pin { --rapds-ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 14.5s5-4.5 5-8.5a5 5 0 0 0-10 0c0 4 5 8.5 5 8.5z' fill='none' stroke='black' stroke-width='1.4'/%3E%3Ccircle cx='8' cy='6' r='1.8' fill='none' stroke='black' stroke-width='1.4'/%3E%3C/svg%3E"); }

/* Barra inferior */
.rapds-footer-bottom {
    border-top: 1px solid rgba(255, 255, 255, .08);
    padding: 1.25rem 0;
    font-size: .8125rem;
}
.rapds-footer-bottom-inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .75rem 1.5rem;
}
.rapds-footer-copy {
    margin: 0;
    color: rgba(255, 255, 255, .55);
}
.rapds-footer-copy a {
    color: rgba(255, 255, 255, .85);
}
.rapds-footer-legal {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem 1.5rem;
}
.rapds-footer-pkp img {
    height: 26px;
    width: auto;
    opacity: .55;
    transition: opacity .15s;
}
.rapds-footer-pkp:hover img {
    opacity: .9;
}
.rapds-back-to-top {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    color: var(--u-white) !important;
    border: 1px solid rgba(255, 255, 255, .2);
    border-radius: 999px;
    padding: .3rem .8rem;
}
.rapds-back-to-top:hover {
    border-color: var(--u-white);
}
@media (max-width: 767.98px) {
    .rapds-cta-actions,
    .rapds-cta-actions .btn {
        width: 100%;
    }
    .rapds-footer-bottom-inner {
        flex-direction: column;
        align-items: flex-start;
    }
}
/* links do rodapé alinhados com o título; o traço vermelho só ocupa espaço no hover */
.rapds-footer-col:not(.rapds-footer-contacts) li a {
    gap: 0;
}
.rapds-footer-col:not(.rapds-footer-contacts) li a::before {
    transition: width .2s ease, margin-right .2s ease;
}
.rapds-footer-col:not(.rapds-footer-contacts) li a:hover::before {
    width: .75rem;
    margin-right: .4rem;
}
.rapds-footer-pkp img {
    height: 34px;
    opacity: .7;
}

/* ============================================================
   18. Largura do conteúdo: tudo centrado numa coluna de 1140px
   ============================================================ */
@media (min-width: 1200px) {
    .container,
    .container-lg,
    .container-md,
    .container-sm,
    .container-xl,
    .container-xxl {
        max-width: 1140px;
    }
}
/* páginas de texto e listas ainda mais estreitas, para leitura confortável */
.page-issue > .row:last-child > [class*="col-"],
.rapds-current-issue .issue-wrapper > [class*="col-"] {
    max-width: 58rem;
    margin-left: auto;
    margin-right: auto;
}
/* Lista de artigos alinhada com a coluna de 1140px (sem recuo em relação aos títulos) */
.page-issue > .row:last-child > [class*="col-"],
.rapds-current-issue .issue-wrapper > [class*="col-"] {
    max-width: 100%;
    flex: 0 0 100%;
}

/* O widget "Fale connosco" ocupa ~300x110px no canto inferior direito, mesmo fechado:
   deixar espaço para não tapar "Voltar ao topo" e os links da barra inferior */
.rapds-footer-bottom {
    padding-bottom: 7rem;
}
@media (max-width: 767.98px) {
    .rapds-footer-bottom {
        padding-bottom: 8rem;
    }
}

/* ============================================================
   19. Cartões dos artigos: fundo cinzento neutro
   (o vermelho só aparece como destaque: barra no hover, botão Descarregar)
   ============================================================ */
.rapds-article-card.article-summary {
    background: #f7f7f6 !important;
    border: 1px solid #e6e4e1 !important;
    border-left: 4px solid #d6d3cf !important;
}
.rapds-article-card.article-summary::before {
    display: none;
}
.rapds-article-card.article-summary:hover {
    background: #f3f2f0 !important;
    border-color: #dcd9d5 !important;
    border-left-color: var(--u-red) !important;
    box-shadow: 0 12px 28px rgba(28, 27, 26, .08);
}
.rapds-article-card .rapds-article-actions {
    border-top-color: #e3e0dc;
}
.rapds-article-card .rapds-meta-oa {
    background: #e6f3ec;
    border-radius: 999px;
    padding: .15rem .6rem;
}
.rapds-article-card .btn.rapds-btn-view {
    background: var(--u-white) !important;
}

/* ============================================================
   20. Login ("Entrar"): modal do "Acesso" e página /login
   ============================================================ */
/* Modal: cartão branco (o tema-pai pinta-o de vermelho) */
#loginModal .modal-dialog {
    max-width: 440px;
    margin-top: 6vh;
}
#loginModal .modal-content {
    background: var(--u-white) !important;
    color: var(--u-text) !important;
    border: 0;
    border-radius: 18px;
    box-shadow: 0 24px 60px rgba(0, 0, 0, .28);
}
#loginModal .modal-body {
    padding: 2.25rem 2.25rem 1.75rem;
}
#loginModal .modal-content .close {
    position: absolute;
    top: 1rem;
    right: 1rem;
    width: 2.25rem;
    height: 2.25rem;
    border: 0;
    border-radius: 50%;
    background: #f4efeb !important;
    color: var(--u-ink) !important;
    font-size: 1.35rem;
    line-height: 1;
    opacity: 1;
    transition: background-color .15s, color .15s;
}
#loginModal .modal-content .close:hover {
    background: var(--u-red-soft) !important;
    color: var(--u-red) !important;
}
.modal-backdrop.show {
    opacity: .55;
    backdrop-filter: blur(2px);
}

/* Página /login: o mesmo cartão, centrado */
.rapds-login-page {
    display: flex;
    justify-content: center;
    padding: 3.5rem 1rem 1rem;
}
.rapds-login-card {
    width: 100%;
    max-width: 440px;
    background: var(--u-white);
    border: 1px solid var(--u-line);
    border-radius: 18px;
    box-shadow: 0 18px 44px rgba(28, 27, 26, .10);
    padding: 2.25rem 2.25rem 1.75rem;
}
.page-login .page-content {
    all: unset;
}

/* Cabeçalho do cartão */
.rapds-login-head {
    text-align: center;
    margin-bottom: 1.75rem;
}
.rapds-login-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3.25rem;
    height: 3.25rem;
    border-radius: 50%;
    background: var(--u-red-soft);
    color: var(--u-red);
    margin-bottom: .9rem;
}
.rapds-login-badge svg {
    width: 1.6rem;
    height: 1.6rem;
}
.rapds-login-title {
    font-size: 1.75rem;
    margin: 0 0 .35rem;
    color: var(--u-ink) !important;
}
.rapds-login-title::after {
    display: none !important;
}
.rapds-login-subtitle {
    font-size: .9375rem;
    line-height: 1.5;
    color: var(--u-muted);
    margin: 0;
}

/* Campos */
.rapds-login fieldset {
    border: 0;
    padding: 0;
    margin: 0;
}
.rapds-login .form-group {
    margin-bottom: 1.1rem;
}
.rapds-login label {
    display: block;
    font-size: .875rem;
    font-weight: 600;
    color: var(--u-ink) !important;
    margin-bottom: .4rem;
}
.rapds-login label .required {
    color: var(--u-red);
}
.rapds-input {
    position: relative;
}
.rapds-input-icon {
    position: absolute;
    left: .9rem;
    top: 50%;
    width: 1.05rem;
    height: 1.05rem;
    transform: translateY(-50%);
    color: #9a928b;
    pointer-events: none;
    transition: color .15s;
}
.rapds-login .form-control {
    height: 2.9rem;
    padding: .5rem .9rem .5rem 2.6rem;
    font-size: 1rem;
    color: var(--u-ink) !important;
    background: var(--u-white) !important;
    border: 1px solid #d6cfc8 !important;
    border-radius: 10px !important;
    box-shadow: none !important;
    transition: border-color .15s, box-shadow .15s;
}
.rapds-login .form-group-password .form-control {
    padding-right: 2.9rem;
}
.rapds-login .form-control:hover {
    border-color: #b5aca5 !important;
}
.rapds-login .form-control:focus {
    border-color: var(--u-red) !important;
    box-shadow: 0 0 0 3px rgba(187, 0, 0, .14) !important;
    outline: none;
}
.rapds-input:focus-within .rapds-input-icon {
    color: var(--u-red);
}
.rapds-pw-toggle {
    position: absolute;
    right: .45rem;
    top: 50%;
    transform: translateY(-50%);
    width: 2.1rem;
    height: 2.1rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: #8a827b;
    cursor: pointer;
}
.rapds-pw-toggle svg {
    width: 1.1rem;
    height: 1.1rem;
}
.rapds-pw-toggle:hover,
.rapds-pw-toggle[aria-pressed="true"] {
    background: var(--u-red-soft);
    color: var(--u-red);
}

/* Manter-me conectado + Esqueceu a senha */
.rapds-login-options {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    flex-wrap: wrap;
    margin: .25rem 0 1.5rem;
    font-size: .875rem;
}
.rapds-login-options .form-check {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin: 0;
    padding: 0;
}
.rapds-login-options .form-check-input {
    float: none;
    margin: 0;
    width: 1.05rem;
    height: 1.05rem;
    border-color: #bdb4ad;
    border-radius: 4px;
}
.rapds-login-options .form-check-input:checked {
    background-color: var(--u-red);
    border-color: var(--u-red);
}
.rapds-login-options .form-check-label {
    font-weight: 400 !important;
    color: var(--u-text) !important;
    margin: 0;
}
.rapds-login-forgot {
    font-weight: 600;
    color: var(--u-red) !important;
    text-decoration: none;
}
.rapds-login-forgot:hover {
    text-decoration: underline;
}

/* Botão Entrar */
.btn.rapds-login-submit {
    display: flex;
    width: 100%;
    justify-content: center;
    padding: .8rem 1rem;
    font-size: 1rem;
    border-radius: 10px;
    background: var(--u-red) !important;
    border-color: var(--u-red) !important;
    color: var(--u-white) !important;
}
.btn.rapds-login-submit:hover,
.btn.rapds-login-submit:focus {
    background: var(--u-red-dark) !important;
    border-color: var(--u-red-dark) !important;
}
.rapds-login .form-group-buttons {
    margin-bottom: 0;
}

/* Registo */
.rapds-login-register {
    text-align: center;
    font-size: .9rem;
    color: var(--u-muted);
    border-top: 1px solid var(--u-line);
    margin-top: 1.5rem;
    padding-top: 1.25rem;
}
.rapds-login-register a {
    font-weight: 600;
    color: var(--u-red) !important;
}
.rapds-login-card .alert {
    border-radius: 10px;
    font-size: .9rem;
}
/* o tema-pai põe 64px de padding no .modal-content, que se somava ao do .modal-body */
#loginModal .modal-content {
    padding: 0 !important;
}
#loginModal .rapds-login a {
    text-decoration: none;
}
#loginModal .rapds-login a:hover {
    text-decoration: underline;
}

/* Mensagens do login: suaves, dentro do cartão, depois do título */
.rapds-login-alert {
    position: relative;
    font-size: .875rem;
    line-height: 1.5;
    border-radius: 10px;
    padding: .75rem .9rem .75rem 2.5rem;
    margin: -.5rem 0 1.25rem;
}
.rapds-login-alert::before {
    content: '!';
    position: absolute;
    left: .8rem;
    top: .75rem;
    width: 1.15rem;
    height: 1.15rem;
    border-radius: 50%;
    font-size: .75rem;
    font-weight: 700;
    line-height: 1.15rem;
    text-align: center;
    color: var(--u-white);
}
.rapds-login-alert-error {
    background: #fdf0f0;
    border: 1px solid #f3c9c9;
    color: #8f0000;
}
.rapds-login-alert-error::before {
    background: var(--u-red);
}
.rapds-login-alert-info {
    background: #f3f6fb;
    border: 1px solid #d6e0ee;
    color: #2d4a6b;
}
.rapds-login-alert-info::before {
    content: 'i';
    background: #4a6f99;
}

/* ============================================================
   21. Topo: Registo / Acesso e utilizador com sessão
   ============================================================ */
/* Registo: borda subtil; Acesso: borda branca mais marcada */
.main-header #userNav > li > .nav-link {
    border: 1.5px solid rgba(255, 255, 255, .28) !important;
    border-radius: 999px;
    padding: .4rem 1rem !important;
    transition: background-color .15s, color .15s, border-color .15s;
}
.main-header #userNav > li + li {
    margin-left: .5rem;
}
.main-header #userNav > li:not(.rapds-user) > .nav-link:hover {
    border-color: rgba(255, 255, 255, .8) !important;
    background: rgba(255, 255, 255, .1) !important;
}
.main-header #userNav > li:last-child:not(.rapds-user) > .nav-link {
    border: 1.5px solid rgba(255, 255, 255, .9) !important;
    font-weight: 700;
}
.main-header #userNav > li:last-child:not(.rapds-user) > .nav-link:hover {
    background: var(--u-white) !important;
    color: var(--u-red) !important;
}

/* Utilizador com sessão */
.main-header #userNav .rapds-user-toggle {
    display: inline-flex !important;
    align-items: center;
    gap: .55rem;
    padding: .25rem .8rem .25rem .3rem !important;
    border: 1.5px solid rgba(255, 255, 255, .45) !important;
    border-radius: 999px;
    background: rgba(0, 0, 0, .08) !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
    font-size: .8125rem !important;
    font-weight: 600;
}
.main-header #userNav .rapds-user-toggle:hover,
.main-header #userNav .show > .rapds-user-toggle {
    background: rgba(0, 0, 0, .18) !important;
    border-color: rgba(255, 255, 255, .8) !important;
}
.main-header #userNav .rapds-user-toggle::after {
    display: inline-block !important;
    margin-left: .1rem;
    border-top-color: var(--u-white);
}
.rapds-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.85rem;
    height: 1.85rem;
    border-radius: 50%;
    background: var(--u-white);
    color: var(--u-red);
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .02em;
    flex-shrink: 0;
}
.rapds-avatar-lg {
    width: 2.6rem;
    height: 2.6rem;
    font-size: .95rem;
    background: var(--u-red);
    color: var(--u-white);
}
/* contador de tarefas */
.main-header #userNav .badge,
.rapds-user-menu .badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.35rem;
    height: 1.35rem;
    padding: 0 .35rem;
    border-radius: 999px;
    background: var(--u-white) !important;
    color: var(--u-red) !important;
    font-size: .6875rem;
    font-weight: 700;
    margin-left: .35rem;
}
.rapds-user-menu .badge {
    background: var(--u-red-soft) !important;
    margin-left: auto;
}

/* Menu do utilizador */
.main-header .dropdown-menu.rapds-user-menu {
    right: 0 !important;
    left: auto !important;
    min-width: 17rem;
    margin-top: .5rem !important;
    padding: .5rem;
}
.rapds-user-head {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .6rem .6rem .85rem;
    margin-bottom: .35rem;
    border-bottom: 1px solid var(--u-line);
}
.rapds-user-head-text {
    display: flex;
    flex-direction: column;
    min-width: 0;
}
.rapds-user-head-text strong {
    color: var(--u-ink);
    font-size: .9375rem;
    line-height: 1.3;
}
.rapds-user-head-text small {
    color: var(--u-muted);
    font-size: .8125rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* ícones dos itens */
.main-header .rapds-user-menu .rapds-user-item {
    justify-content: flex-start !important;
    gap: .65rem !important;
    padding-left: .75rem !important;
}
.main-header .rapds-user-menu .rapds-user-item::before {
    position: static !important;
    display: inline-block;
    width: 1.05rem !important;
    height: 1.05rem !important;
    flex-shrink: 0;
    border-radius: 0 !important;
    transform: none !important;
    background: currentColor !important;
    opacity: .75;
    -webkit-mask: var(--rapds-ic) center / contain no-repeat;
            mask: var(--rapds-ic) center / contain no-repeat;
}
.main-header .rapds-user-menu .rapds-user-item::after {
    display: none !important;
}
.main-header .rapds-user-menu .rapds-user-item:hover {
    padding-left: .75rem !important;
}
.rapds-user-item.nmi_type_user_dashboard { --rapds-ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M2 2h5v6H2zM9 2h5v3H9zM9 7h5v7H9zM2 10h5v4H2z' fill='none' stroke='black' stroke-width='1.4' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.rapds-user-item.nmi_type_user_profile { --rapds-ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-5.5 6.5c0-2.5 2.5-4 5.5-4s5.5 1.5 5.5 4' fill='none' stroke='black' stroke-width='1.4' stroke-linecap='round'/%3E%3C/svg%3E"); }
.rapds-user-item.nmi_type_administration { --rapds-ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 1.5 2.5 3.5v4c0 3.3 2.3 5.8 5.5 7 3.2-1.2 5.5-3.7 5.5-7v-4z' fill='none' stroke='black' stroke-width='1.4' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.rapds-user-item.nmi_type_user_logout { --rapds-ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M6 2.5H3v11h3M10.5 5l3 3-3 3M13.5 8H6' fill='none' stroke='black' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.main-header .rapds-user-menu .nmi_type_user_logout {
    color: var(--u-red) !important;
    font-weight: 600 !important;
}
.rapds-user-menu .dropdown-divider {
    margin: .35rem 0;
    border-top-color: var(--u-line);
}
.main-header .rapds-user-menu .rapds-user-item .badge {
    margin-left: auto !important;
    background: var(--u-red-soft) !important;
    color: var(--u-red) !important;
    border-radius: 999px !important;
    min-width: 1.5rem;
    height: 1.35rem;
}

/* ============================================================
   22. Submenus abrem com hover (computador com rato)
   ============================================================ */
@media (min-width: 992px) and (hover: hover) {
    #primaryNav .nav-item.dropdown:hover > .dropdown-menu,
    #primaryNav .nav-item.dropdown:focus-within > .dropdown-menu {
        display: block !important;
        animation: rapds-dropdown .18s ease-out;
    }
    /* "ponte" invisível entre o menu e o submenu, para o hover não se perder no intervalo */
    #primaryNav .nav-item.dropdown > .dropdown-menu {
        margin-top: 0 !important;
        top: 100% !important;
    }
    #primaryNav .nav-item.dropdown > .dropdown-menu::before {
        content: '';
        position: absolute;
        left: 0;
        right: 0;
        top: -.6rem;
        height: .6rem;
    }
    /* seta roda e sublinhado aparece também no hover */
    .main-header #primaryNav .nav-item.dropdown:hover > .dropdown-toggle::after {
        transform: rotate(180deg);
    }
    .main-header #primaryNav .nav-item.dropdown:hover > .nav-link::before {
        transform: scaleX(1);
    }
}
/* itens do submenu iguais quer abra por hover quer por clique (algumas regras antigas só valiam com .show) */
#primaryNav .dropdown-menu .dropdown-item {
    text-transform: none !important;
    letter-spacing: 0 !important;
    font-size: .9375rem !important;
    font-weight: 500;
    color: var(--u-ink) !important;
    text-align: left !important;
    width: 100% !important;
}
#primaryNav .dropdown-menu .dropdown-item:hover,
#primaryNav .dropdown-menu .dropdown-item:focus {
    color: var(--u-red) !important;
}
#primaryNav .dropdown-menu {
    background: var(--u-white) !important;
}

/* ============================================================
   23. Registo ("Criar conta")
   ============================================================ */
.rapds-register-page {
    display: flex;
    justify-content: center;
    padding: 3.5rem 1rem 1rem;
}
.rapds-register-card {
    width: 100%;
    max-width: 760px;
    background: var(--u-white);
    border: 1px solid var(--u-line);
    border-radius: 18px;
    box-shadow: 0 18px 44px rgba(28, 27, 26, .10);
    padding: 2.5rem 2.75rem 2rem;
}
.page-register .page-content {
    all: unset;
}
.rapds-register-card .rapds-login-head {
    margin-bottom: 2rem;
}
.rapds-register-card .rapds-login-subtitle {
    max-width: 30rem;
    margin: 0 auto;
}

/* Passos */
.rapds-register .rapds-step {
    border: 0;
    border-top: 1px solid var(--u-line);
    padding: 1.5rem 0 .5rem;
    margin: 0;
}
.rapds-register .rapds-step:first-of-type {
    border-top: 0;
    padding-top: 0;
}
.rapds-step-title {
    display: flex;
    align-items: center;
    gap: .65rem;
    float: none;
    width: auto;
    font-family: var(--u-serif);
    font-size: 1.15rem !important;
    font-weight: 700;
    color: var(--u-ink);
    text-transform: none !important;
    letter-spacing: 0;
    margin: 0 0 1.1rem;
    padding: 0;
}
.rapds-step-num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 50%;
    background: var(--u-red);
    color: var(--u-white);
    font-family: var(--u-sans);
    font-size: .8125rem;
    font-weight: 700;
}
.rapds-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 1.25rem;
}
@media (max-width: 640px) {
    .rapds-grid {
        grid-template-columns: 1fr;
    }
    .rapds-register-card {
        padding: 2rem 1.25rem 1.5rem;
    }
}

/* Lista de países com seta */
.rapds-select select.form-control {
    appearance: none;
    -webkit-appearance: none;
    padding-right: 2.5rem;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 6l4 4 4-4' fill='none' stroke='%239a928b' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: right .85rem center !important;
    background-size: 1rem !important;
    cursor: pointer;
}
.rapds-select select.form-control:invalid {
    color: #9a928b !important;
}

/* Opções (consentimentos, revisor) como caixas clicáveis */
.rapds-options {
    display: flex;
    flex-direction: column;
    gap: .6rem;
}
.rapds-options-label {
    font-size: .875rem;
    font-weight: 600;
    color: var(--u-ink);
    margin: .5rem 0 0;
}
.rapds-option.form-check {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    margin: 0;
    padding: .8rem 1rem;
    background: #faf7f4;
    border: 1px solid var(--u-line);
    border-radius: 10px;
    transition: border-color .15s, background-color .15s;
}
.rapds-option.form-check:hover {
    border-color: #e2c9c4;
}
.rapds-option.form-check:has(input:checked) {
    background: var(--u-red-soft);
    border-color: #efc6c6;
}
.rapds-option .form-check-input {
    float: none;
    flex-shrink: 0;
    width: 1.1rem;
    height: 1.1rem;
    margin: .15rem 0 0;
    border-color: #bdb4ad;
    border-radius: 4px;
    cursor: pointer;
}
.rapds-option .form-check-input:checked {
    background-color: var(--u-red);
    border-color: var(--u-red);
}
.rapds-register .rapds-option .form-check-label {
    font-size: .9rem !important;
    font-weight: 400 !important;
    line-height: 1.5;
    color: var(--u-text) !important;
    margin: 0;
    cursor: pointer;
}
.rapds-option .form-check-label a {
    color: var(--u-red);
    font-weight: 600;
}
.rapds-register .reviewer_interests {
    margin-top: .5rem;
}
.rapds-register .form-group-buttons {
    margin-top: 1.5rem;
}
/* erros de validação do OJS */
.rapds-register .pkp_form_error,
.rapds-register .alert {
    border-radius: 10px;
    font-size: .9rem;
}
/* passos: sem a borda do fieldset a cortar o título; linha fina depois de cada título */
.rapds-register .rapds-step,
.rapds-register .rapds-step:first-of-type {
    border: 0 !important;
    padding: .75rem 0 .5rem;
}
.rapds-step-title {
    width: 100%;
}
.rapds-step-title::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--u-line);
    margin-left: .35rem;
}
/* lista de erros do registo: suave, como no login */
.rapds-register .alert-danger {
    background: #fdf0f0 !important;
    border: 1px solid #f3c9c9 !important;
    color: #8f0000 !important;
    border-radius: 12px;
    padding: 1rem 1.1rem 1rem 1.1rem;
    font-size: .9rem;
    margin-bottom: 1.5rem;
}
.rapds-register .alert-danger > :first-child {
    font-weight: 700;
}
.rapds-register .alert-danger ul {
    margin: .4rem 0 0;
    padding-left: 1.2rem;
}
.rapds-register .alert-danger li {
    margin: .15rem 0;
}
.rapds-register .alert-danger a {
    color: #8f0000 !important;
    text-decoration: none;
}
.rapds-register .alert-danger a:hover {
    text-decoration: underline;
}

/* ============================================================
   24. Páginas "Sobre" (Sobre, Serviços, Corpo Editorial,
       Privacidade, Contacto, FAQ, Instruções)
   ============================================================ */
.rapds-page-hero {
    background:
        radial-gradient(900px 300px at 90% -20%, rgba(187, 0, 0, .06), transparent 60%),
        var(--u-paper);
    border-bottom: 1px solid var(--u-line);
    padding: 2.75rem 0 2.5rem;
}
.rapds-page-title {
    font-size: clamp(1.9rem, 3vw, 2.6rem);
    margin: 0;
}
.rapds-about {
    padding-top: 2.5rem;
}
.rapds-about-layout {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2rem;
}
@media (min-width: 992px) {
    .rapds-about-layout {
        grid-template-columns: 250px minmax(0, 1fr);
        gap: 2.5rem;
        align-items: start;
    }
    .rapds-about-aside {
        position: sticky;
        top: 1.5rem;
    }
}

/* Menu lateral */
.rapds-about-nav,
.rapds-toc {
    background: var(--u-white);
    border: 1px solid var(--u-line);
    border-radius: 14px;
    padding: 1rem .6rem;
}
.rapds-toc {
    margin-top: 1rem;
}
.rapds-about-nav-title {
    font-size: .6875rem;
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: #9b928b;
    margin: 0 .6rem .5rem;
}
.rapds-about-nav-list,
.rapds-toc-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.rapds-about-nav a,
.rapds-toc a {
    position: relative;
    display: block;
    padding: .5rem .75rem;
    border-radius: 8px;
    font-size: .9rem;
    font-weight: 500;
    line-height: 1.35;
    color: var(--u-text);
    text-decoration: none;
    transition: background-color .15s, color .15s;
}
.rapds-about-nav a:hover,
.rapds-toc a:hover {
    background: #f6f2ef;
    color: var(--u-red);
}
.rapds-about-nav a.is-active {
    background: var(--u-red-soft);
    color: var(--u-red);
    font-weight: 600;
}
.rapds-about-nav a.is-active::before {
    content: '';
    position: absolute;
    left: 0;
    top: 22%;
    bottom: 22%;
    width: 3px;
    border-radius: 3px;
    background: var(--u-red);
}
.rapds-toc a {
    font-size: .85rem;
    color: var(--u-muted);
    padding: .35rem .75rem;
}
.rapds-toc a.is-active {
    color: var(--u-red);
    font-weight: 600;
}
@media (max-width: 991.98px) {
    .rapds-toc {
        display: none;
    }
    /* no telemóvel o menu lateral vira uma fila de "chips" deslizável */
    .rapds-about-nav {
        padding: .6rem;
    }
    .rapds-about-nav-title {
        display: none;
    }
    .rapds-about-nav-list {
        display: flex;
        gap: .4rem;
        overflow-x: auto;
        scrollbar-width: none;
    }
    .rapds-about-nav a {
        white-space: nowrap;
        border: 1px solid var(--u-line);
        border-radius: 999px;
        padding: .4rem .85rem;
    }
    .rapds-about-nav a.is-active::before {
        display: none;
    }
}

/* Cartão de conteúdo */
.rapds-about-content.page-content {
    background: var(--u-white);
    border: 1px solid var(--u-line);
    border-radius: 16px;
    box-shadow: 0 1px 2px rgba(28, 27, 26, .04), 0 10px 30px rgba(28, 27, 26, .05);
    padding: 2.5rem 2.75rem;
    margin: 0 0 3rem !important;
    max-width: none !important;
    font-size: 1.0625rem;
    line-height: 1.8;
    color: var(--u-text);
}
@media (max-width: 575.98px) {
    .rapds-about-content.page-content {
        padding: 1.5rem 1.25rem;
    }
}
.rapds-about-content > :first-child {
    margin-top: 0;
}
.rapds-about-content p {
    margin-bottom: 1.1rem;
}
.rapds-about-content h2,
.rapds-about-content h3,
.rapds-about-content .rapds-subheading {
    font-family: var(--u-serif);
    color: var(--u-ink);
    scroll-margin-top: 1.5rem;
}
.rapds-about-content h2 {
    font-size: 1.45rem;
    margin: 2.25rem 0 1rem;
    padding-bottom: .6rem;
    border-bottom: 1px solid var(--u-line);
}
.rapds-about-content h3 {
    font-size: 1.2rem;
    margin: 1.75rem 0 .75rem;
}
/* parágrafos só em negrito funcionam como subtítulos */
.rapds-about-content .rapds-subheading {
    display: flex;
    align-items: center;
    gap: .6rem;
    font-size: 1.2rem;
    margin: 2rem 0 .6rem;
}
.rapds-about-content .rapds-subheading::before {
    content: '';
    width: 4px;
    height: 1.15em;
    border-radius: 3px;
    background: var(--u-red);
    flex-shrink: 0;
}
.rapds-about-content .rapds-subheading strong,
.rapds-about-content .rapds-subheading b {
    font-weight: 700;
}
.rapds-about-content ul,
.rapds-about-content ol {
    padding-left: 1.4rem;
    margin-bottom: 1.25rem;
}
.rapds-about-content li {
    margin-bottom: .45rem;
}
.rapds-about-content li::marker {
    color: var(--u-red);
}
.rapds-about-content a {
    color: var(--u-red);
    font-weight: 500;
}
.rapds-about-content hr {
    border: 0;
    border-top: 1px solid var(--u-line);
    margin: 2rem 0;
}
.rapds-about-content img {
    max-width: 100%;
    height: auto;
    border-radius: 10px;
}
/* os "Editar" do OJS para gestores */
.rapds-about-content .btn-edit-link {
    font-size: .8125rem;
}

/* FAQ em acordeão */
.rapds-faq {
    border: 1px solid var(--u-line);
    border-radius: 12px;
    margin-bottom: .75rem;
    background: #fcfbfa;
    transition: border-color .15s, box-shadow .15s;
}
.rapds-faq[open] {
    background: var(--u-white);
    border-color: #e2c9c4;
    box-shadow: 0 6px 18px rgba(28, 27, 26, .06);
}
.rapds-faq summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    list-style: none;
    cursor: pointer;
    padding: 1rem 1.25rem;
    font-family: var(--u-serif);
    font-size: 1.075rem;
    font-weight: 700;
    color: var(--u-ink);
}
.rapds-faq summary::-webkit-details-marker {
    display: none;
}
.rapds-faq summary::after {
    content: '+';
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 50%;
    background: var(--u-red-soft);
    color: var(--u-red);
    font-family: var(--u-sans);
    font-size: 1.15rem;
    font-weight: 600;
    transition: transform .2s;
}
.rapds-faq[open] summary::after {
    content: '−';
}
.rapds-faq summary:hover {
    color: var(--u-red);
}
.rapds-faq-body {
    padding: 0 1.25rem 1.1rem;
    font-size: 1rem;
    color: var(--u-text);
}
.rapds-faq-body > :last-child {
    margin-bottom: 0;
}

/* Contacto */
.rapds-contact-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 1.25rem;
}
.rapds-contact-card {
    background: #faf8f6;
    border: 1px solid var(--u-line);
    border-radius: 14px;
    padding: 1.5rem;
}
.rapds-contact-card-wide {
    grid-column: 1 / -1;
}
.rapds-contact-card h2 {
    font-size: 1.1rem;
    border: 0;
    padding: 0;
    margin: .85rem 0 .5rem;
}
.rapds-contact-card p {
    margin: 0 0 .3rem;
    font-size: .975rem;
    line-height: 1.6;
}
.rapds-contact-name {
    font-weight: 600;
    color: var(--u-ink);
}
.rapds-contact-meta {
    color: var(--u-muted);
}
.rapds-contact-icon {
    display: inline-flex;
    width: 2.6rem;
    height: 2.6rem;
    border-radius: 12px;
    background: var(--u-red);
    position: relative;
}
.rapds-contact-icon::before {
    content: '';
    position: absolute;
    inset: .65rem;
    background: var(--u-white);
    -webkit-mask: var(--rapds-ic) center / contain no-repeat;
            mask: var(--rapds-ic) center / contain no-repeat;
}
.rapds-ic-support { --rapds-ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M2.5 9V8a5.5 5.5 0 0 1 11 0v1M2.5 9h2v4h-2zM11.5 9h2v4h-2zM13.5 13c0 1-1 1.5-2.5 1.5H9' fill='none' stroke='black' stroke-width='1.4' stroke-linejoin='round' stroke-linecap='round'/%3E%3C/svg%3E"); }

/* Corpo editorial */
.rapds-people {
    list-style: none;
    padding: 0 !important;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
    gap: .85rem;
    margin: 0 0 1.5rem !important;
}
.rapds-person {
    display: flex;
    align-items: center;
    gap: .85rem;
    background: #faf8f6;
    border: 1px solid var(--u-line);
    border-radius: 12px;
    padding: .9rem 1rem;
    margin: 0 !important;
    line-height: 1.4;
}
.rapds-person::marker {
    content: none;
}
.rapds-person-text {
    display: flex;
    flex-direction: column;
    min-width: 0;
}
.rapds-person-name {
    font-weight: 600;
    color: var(--u-ink);
    font-size: .975rem;
}
.rapds-person-affiliation {
    font-size: .85rem;
    color: var(--u-muted);
}
.rapds-person-since {
    font-size: .75rem;
    color: #9b928b;
}
.rapds-person .orcid svg {
    width: 1rem;
    height: 1rem;
    vertical-align: -2px;
}
.rapds-masthead-history {
    font-size: .95rem;
    color: var(--u-muted);
}

/* ============================================================
   25. Header fixo (sticky) que encolhe ao fazer scroll
   ============================================================ */
:root {
    --rapds-header-h: 72px; /* altura do header compacto: usada nos elementos "sticky" abaixo dele */
}
.main-header {
    position: sticky;
    top: 0;
    z-index: 1030;
    transition: box-shadow .25s ease;
}
.main-header.is-compact {
    box-shadow: 0 6px 20px rgba(0, 0, 0, .18);
}
@media (min-width: 992px) {
    .main-header > .container,
    .main-header .navbar-logo,
    .main-header .navbar-logo img,
    .main-header #userNav {
        transition: padding .25s ease, max-height .25s ease, margin .25s ease, top .25s ease;
    }
    /* Compacto: logótipo à esquerda, pequeno; menus na mesma linha */
    .main-header.is-compact > .container {
        display: flex;
        align-items: center;
        gap: 1.5rem;
        padding-top: 0;
        position: relative;
    }
    .main-header.is-compact .navbar-logo {
        margin: 0;
        padding: .6rem 0;
        max-width: none;
        flex-shrink: 0;
    }
    .main-header.is-compact .navbar-logo img {
        max-height: 44px;
    }
    .main-header.is-compact .navbar {
        border-top: 0;
        flex: 1;
    }
    .main-header.is-compact #main-navbar {
        justify-content: center !important;
    }
    .main-header.is-compact #primaryNav {
        gap: .75rem;
    }
    .main-header.is-compact #primaryNav > li > .nav-link {
        padding-top: 1.4rem !important;
        padding-bottom: 1.4rem !important;
    }
    .main-header.is-compact #primaryNav > li > .nav-link::before {
        bottom: .95rem;
    }
    /* Registo/Entrar (ou o utilizador) passam para a direita da mesma linha */
    .main-header.is-compact #userNav {
        position: static !important;
        flex-shrink: 0;
        margin: 0;
    }
}
/* com o header fixo, as âncoras e os blocos "sticky" ficam por baixo dele */
html {
    scroll-padding-top: calc(var(--rapds-header-h) + 1rem);
}
@media (min-width: 992px) {
    .rapds-about-aside,
    .article-details-sidebar {
        top: calc(var(--rapds-header-h) + 1.25rem) !important;
    }
}
@media (max-width: 991.98px) {
    :root {
        --rapds-header-h: 64px;
    }
    /* no telemóvel o header já é compacto; o menu aberto pode deslizar */
    .main-header .navbar-collapse.show {
        max-height: calc(100vh - var(--rapds-header-h));
        overflow-y: auto;
    }
}
/* altura real do header compacto no computador (~101px) */
@media (min-width: 992px) {
    :root {
        --rapds-header-h: 104px;
    }
}
/* o tema-pai centra todo o texto em .page-contact: nas páginas "Sobre" alinhamos à esquerda */
.rapds-about,
.rapds-about .rapds-contact-card {
    text-align: left;
}

/* ============================================================
   26. Página de notícias
   ============================================================ */
.rapds-page-hero-row {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1.5rem;
    flex-wrap: wrap;
}
.rapds-page-intro {
    max-width: 44rem;
    margin-top: .75rem;
    font-size: 1.075rem;
    line-height: 1.65;
    color: var(--u-muted);
}
.rapds-page-intro p {
    margin: 0;
}
/* botão "Editar" dos gestores, no topo */
.rapds-page-hero-actions:empty {
    display: none;
}
.rapds-page-hero-actions .btn-edit-link,
.rapds-page-hero-actions a {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    border: 1.5px solid var(--u-red);
    border-radius: 999px;
    padding: .5rem 1.1rem;
    background: var(--u-white);
    color: var(--u-red) !important;
    font-size: .875rem;
    font-weight: 600;
    text-decoration: none;
    transition: background-color .15s, color .15s;
}
.rapds-page-hero-actions .btn-edit-link::before,
.rapds-page-hero-actions a::before {
    content: '';
    width: .95rem;
    height: .95rem;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M10.5 2.5l3 3L6 13H3v-3z' fill='none' stroke='black' stroke-width='1.4' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
            mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M10.5 2.5l3 3L6 13H3v-3z' fill='none' stroke='black' stroke-width='1.4' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
}
.rapds-page-hero-actions .btn-edit-link:hover,
.rapds-page-hero-actions a:hover {
    background: var(--u-red);
    color: var(--u-white) !important;
}

/* Grelha de notícias */
.rapds-news-page {
    padding-top: 2.5rem;
    padding-bottom: 1rem;
}
.rapds-news-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 1.75rem;
}
.rapds-news-item.announcement-summary {
    display: flex;
    flex-direction: column;
    padding: 0;
    margin: 0;
    overflow: hidden;
    background: var(--u-white);
    border: 1px solid var(--u-line);
    border-radius: 16px;
    transition: box-shadow .22s ease, transform .22s ease;
}
.rapds-news-item.announcement-summary:hover {
    transform: translateY(-3px);
    box-shadow: 0 16px 36px rgba(28, 27, 26, .12);
}
.rapds-news-media {
    display: block;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    background: #efebe7;
}
.rapds-news-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .5s ease;
}
.rapds-news-item:hover .rapds-news-media img {
    transform: scale(1.04);
}
/* sem imagem: fundo com o símbolo da revista */
.rapds-news-placeholder {
    display: block;
    width: 100%;
    height: 100%;
    background:
        url("/public/journals/1/pageHeaderLogoImage_pt.png") center / 55% auto no-repeat,
        linear-gradient(135deg, #bb0000 0%, #8f0000 100%);
}
.rapds-news-body {
    display: flex;
    flex-direction: column;
    gap: .6rem;
    flex: 1;
    padding: 1.4rem 1.5rem 1.5rem;
}
.rapds-news-date {
    align-self: flex-start;
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .04em;
    color: var(--u-red);
    background: var(--u-red-soft);
    border-radius: 999px;
    padding: .2rem .65rem;
}
.rapds-news-title {
    font-size: 1.3rem !important;
    line-height: 1.3;
    margin: 0 !important;
}
.rapds-news-title a {
    color: var(--u-ink);
    text-decoration: none;
}
.rapds-news-item:hover .rapds-news-title a {
    color: var(--u-red);
}
.rapds-news-summary {
    color: var(--u-muted);
    font-size: .95rem;
    line-height: 1.6;
    margin: 0;
    display: -webkit-box;
    -webkit-line-clamp: 4;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.rapds-news-body .rapds-read-link {
    margin-top: auto;
    padding-top: .4rem;
}
.rapds-empty {
    text-align: center;
    color: var(--u-muted);
    padding: 3rem 0;
}
/* A notícia mais recente em destaque: cartão largo, imagem à esquerda */
@media (min-width: 768px) {
    .rapds-news-grid > .rapds-news-item:first-child {
        grid-column: 1 / -1;
        flex-direction: row;
    }
    .rapds-news-grid > .rapds-news-item:first-child .rapds-news-media {
        flex: 0 0 55%;
        aspect-ratio: auto;
        min-height: 320px;
    }
    .rapds-news-grid > .rapds-news-item:first-child .rapds-news-body {
        justify-content: center;
        padding: 2rem 2.25rem;
    }
    .rapds-news-grid > .rapds-news-item:first-child .rapds-news-title {
        font-size: 1.7rem !important;
    }
    .rapds-news-grid > .rapds-news-item:first-child .rapds-news-summary {
        font-size: 1rem;
        -webkit-line-clamp: 6;
    }
    .rapds-news-grid > .rapds-news-item:first-child .rapds-read-link {
        margin-top: .5rem;
    }
}

/* ============================================================
   27. Tipografia académica: Source Serif 4 (títulos e leitura)
       + Source Sans 3 (interface). Ficheiros em fonts/, ver fonts.css
   ============================================================ */
:root {
    --u-serif: 'Source Serif 4', 'Source Serif Pro', Georgia, 'Times New Roman', serif;
    --u-sans: 'Source Sans 3', 'Source Sans Pro', system-ui, -apple-system, 'Segoe UI', Arial, sans-serif;
}
body {
    font-family: var(--u-sans);
    font-size: 1.0625rem;
    font-optical-sizing: auto;
}
h1, h2, h3, .h1, .h2, .h3,
.rapds-hero-title, .rapds-page-title, .rapds-section-title,
.article-summary-title, .rapds-news-title, .rapds-issue-series,
.rapds-login-title, .rapds-step-title, .rapds-cta-title {
    font-family: var(--u-serif) !important;
    font-weight: 600;
    letter-spacing: -.005em;
}
/* texto de leitura em serifa, como nas revistas científicas */
.article-details-abstract,
.rapds-about-content,
.page-announcement .page-content,
.rapds-issue-intro-text,
.page-issue-description,
.rapds-hero-description,
.rapds-article-abstract,
.rapds-faq-body {
    font-family: var(--u-serif) !important;
}
.article-details-abstract {
    font-size: 1.1rem;
    line-height: 1.8;
}
.rapds-about-content.page-content {
    font-size: 1.1rem;
    line-height: 1.75;
}
/* a interface (menus, botões, etiquetas, metadados) fica em Source Sans 3 */
.main-header, .btn, .rapds-eyebrow, .rapds-badges, .rapds-article-meta,
.rapds-news-date, .rapds-footer, .rapds-cta-text p, .form-control, label,
.issue-toc-section-title, .article-details-heading {
    font-family: var(--u-sans);
}

/* Cloudflare Turnstile no registo */
.rapds-captcha {
    margin: 1.25rem 0 .25rem;
    padding: 1rem;
    border: 1px solid var(--u-line);
    border-radius: 12px;
    background: #faf8f6;
}
.rapds-captcha .cf-turnstile {
    min-height: 65px;
}
.rapds-captcha-note {
    margin: .5rem 0 0;
    font-size: .8125rem;
    color: var(--u-muted);
}

/* ============================================================
   28. Selector de língua (PT / EN) no topo
   ============================================================ */
.main-header .language-toggle .btn.dropdown-toggle {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    border: 1.5px solid rgba(255, 255, 255, .28) !important;
    border-radius: 999px;
    background: transparent !important;
    color: #fff !important;
    font-size: .8125rem;
    font-weight: 600;
    text-transform: capitalize;
    padding: .35rem .85rem .35rem .7rem;
    box-shadow: none !important;
    transform: none !important;
}
.main-header .language-toggle .btn.dropdown-toggle::before {
    content: '';
    width: .95rem;
    height: .95rem;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='6.3' fill='none' stroke='black' stroke-width='1.4'/%3E%3Cpath d='M1.8 8h12.4M8 1.7c1.8 1.9 2.6 4 2.6 6.3S9.8 12.4 8 14.3C6.2 12.4 5.4 10.3 5.4 8S6.2 3.6 8 1.7z' fill='none' stroke='black' stroke-width='1.4'/%3E%3C/svg%3E") center / contain no-repeat;
            mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='6.3' fill='none' stroke='black' stroke-width='1.4'/%3E%3Cpath d='M1.8 8h12.4M8 1.7c1.8 1.9 2.6 4 2.6 6.3S9.8 12.4 8 14.3C6.2 12.4 5.4 10.3 5.4 8S6.2 3.6 8 1.7z' fill='none' stroke='black' stroke-width='1.4'/%3E%3C/svg%3E") center / contain no-repeat;
}
.main-header .language-toggle .btn.dropdown-toggle::after {
    border-top-color: #fff;
}
.main-header .language-toggle .btn.dropdown-toggle:hover,
.main-header .language-toggle.show .btn.dropdown-toggle {
    border-color: rgba(255, 255, 255, .8) !important;
    background: rgba(255, 255, 255, .1) !important;
}
.main-header .language-toggle .dropdown-menu {
    min-width: 10rem;
    margin-top: .4rem !important;
    padding: .4rem;
    border: 0;
    border-radius: 10px;
    background: #fff !important;
    box-shadow: 0 12px 28px rgba(0, 0, 0, .18);
}
.main-header .language-toggle .dropdown-item {
    border-radius: 6px;
    color: var(--u-ink) !important;
    text-transform: capitalize;
    font-size: .9rem;
    padding: .5rem .75rem;
}
.main-header .language-toggle .dropdown-item:hover {
    background: var(--u-red-soft) !important;
    color: var(--u-red) !important;
}
/* no header compacto (ao fazer scroll) o selector esconde-se para não tapar o logótipo */
@media (min-width: 992px) {
    .main-header.is-compact #languageLargeNav {
        display: none !important;
    }
}
/* telemóvel: dentro do menu */
#languageSmallNav .btn.dropdown-toggle {
    color: #fff !important;
    border: 1.5px solid rgba(255, 255, 255, .4) !important;
    border-radius: 999px;
    background: transparent !important;
}

/* ============================================================
   29. Faixa de destaque com padrão africano, em tons de terra (sem vermelho)
       Padrão original: images/padrao-africano-escuro.svg
   ============================================================ */
:root {
    --u-sand: #f4ece0;
    --u-sand-deep: #ead9c2;
    --u-umber: #6b4a2b;
    --u-ochre: #b07a1a;
}
.rapds-hero {
    position: relative;
    overflow: hidden;
    color: var(--u-ink);
    border-bottom: 0;
    padding: 4.5rem 0 5.5rem;
    background:
        radial-gradient(900px 500px at 12% 0%, rgba(255, 255, 255, .7), transparent 60%),
        linear-gradient(135deg, var(--u-sand) 0%, #efe2cf 60%, var(--u-sand-deep) 100%);
}
/* padrão geométrico, discreto, mais visível à direita */
.rapds-hero::before {
    content: '';
    position: absolute;
    inset: 0;
    background: url("../images/padrao-africano-escuro.svg") 0 0 / 160px 160px repeat;
    opacity: .11;
    -webkit-mask-image: linear-gradient(100deg, rgba(0, 0, 0, .15) 0%, rgba(0, 0, 0, .45) 45%, #000 78%);
            mask-image: linear-gradient(100deg, rgba(0, 0, 0, .15) 0%, rgba(0, 0, 0, .45) 45%, #000 78%);
    pointer-events: none;
}
/* faixa tipo kente em baixo: preto, ocre, castanho, creme */
.rapds-hero::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 12px;
    background:
        repeating-linear-gradient(90deg,
            #1c1b1a 0 24px, #c8901a 24px 32px, var(--u-umber) 32px 64px,
            #c8901a 64px 72px, #1c1b1a 72px 96px, #fbf5ea 96px 100px,
            #3d2a18 100px 132px, #fbf5ea 132px 136px);
    box-shadow: 0 -3px 0 #c8901a;
}
.rapds-hero > .container {
    position: relative;
    z-index: 1;
}
.rapds-hero .rapds-eyebrow {
    color: var(--u-ochre);
}
.rapds-hero .rapds-hero-title {
    color: var(--u-ink);
    text-shadow: none;
}
.rapds-hero .rapds-hero-description,
.rapds-hero .rapds-hero-description p {
    color: #4a3f36;
}
/* selos: brancos com ponto ocre */
.rapds-hero .rapds-badges li {
    background: rgba(255, 255, 255, .75);
    border-color: #e2d3bd;
    color: var(--u-ink);
}
.rapds-hero .rapds-badges li::before {
    background: var(--u-ochre);
}
/* botões: o principal mantém a cor da marca; o secundário em tom escuro */
.rapds-hero .rapds-hero-actions .btn-outline {
    border-color: #3d2a18;
    color: #3d2a18;
    background: rgba(255, 255, 255, .4);
}
.rapds-hero .rapds-hero-actions .btn-outline:hover {
    background: #3d2a18;
    border-color: #3d2a18;
    color: #fff;
    box-shadow: 0 8px 20px rgba(61, 42, 24, .2);
}
/* cartão do número actual */
.rapds-hero .rapds-issue-card {
    border-color: #eadcc8;
    box-shadow: 0 20px 44px rgba(61, 42, 24, .16);
}
.rapds-hero .rapds-issue-card:hover {
    box-shadow: 0 26px 54px rgba(61, 42, 24, .22);
}
.rapds-hero .rapds-issue-card .rapds-eyebrow {
    color: var(--u-ochre);
}
@media (max-width: 991.98px) {
    .rapds-hero {
        padding: 3rem 0 4rem;
    }
}

/* faixas de topo das outras páginas (Sobre, Notícias): o mesmo padrão, mais subtil */
.rapds-page-hero {
    position: relative;
    overflow: hidden;
}
.rapds-page-hero::before {
    content: '';
    position: absolute;
    inset: 0;
    background: url("../images/padrao-africano-escuro.svg") 0 0 / 120px 120px repeat;
    opacity: .06;
    -webkit-mask-image: linear-gradient(90deg, transparent 30%, #000 85%);
            mask-image: linear-gradient(90deg, transparent 30%, #000 85%);
    pointer-events: none;
}
.rapds-page-hero > .container {
    position: relative;
}



/* ============================================================
   30. Header fixo sem saltos
   O header passa a "position: fixed"; o espaço é reservado com a altura do
   header grande (medida em js/unisced.js), por isso encolher não mexe na página.
   ============================================================ */
html.rapds-header-fixed body {
    padding-top: var(--rapds-header-space, 241px);
}
html.rapds-header-fixed .main-header {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    width: 100%;
}
/* o browser não deve "compensar" o scroll quando o header muda */
html, body {
    overflow-anchor: none;
}
/* enquanto mede a altura, sem animações */
.main-header.is-measuring,
.main-header.is-measuring * {
    transition: none !important;
}
/* animação suave do conteúdo do header */
@media (min-width: 992px) {
    .main-header .navbar-logo img {
        transition: max-height .25s ease;
    }
}
/* logótipo com altura fixa: o header tem logo a altura final, antes de a imagem carregar */
@media (min-width: 992px) {
    .main-header .navbar-logo img {
        height: 104px;
        max-height: none;
        width: auto;
    }
    .main-header.is-compact .navbar-logo img {
        height: 44px;
    }
}
