/* AMOCAD — overrides modernos e compatíveis com a estrutura existente */


/* A camada de overrides deve ser carregada depois de amocad-modern.css. */

:root {
    --surface-raised: #fff;
    --focus-ring: 0 0 0 4px rgb(210 169 37 / .25);
}


/* Marca e cabeçalho */

.brand-mark {
    width: 2.6rem;
    height: 2.6rem;
}

.brand-name {
    font-size: clamp(1.55rem, 2vw, 1.9rem);
}

.header-right {
    gap: .5rem;
}

.header-right .button-red {
    min-height: 2.65rem;
    padding: .65rem 1rem;
    border-radius: .65rem;
    font-size: .78rem;
}


/* Melhor feedback de teclado para controlos interactivos */

.button:focus-visible,
.menu-toggle:focus-visible,
.main-nav a:focus-visible,
.lang-switch a:focus-visible,
.dropdown a:focus-visible,
.accordion-trigger:focus-visible,
.contact-form input:focus-visible,
.contact-form textarea:focus-visible,
.news-search input:focus-visible {
    outline: 0;
    box-shadow: var(--focus-ring);
}


/* Cards com maior clareza de hierarquia */

.value-card,
.news-card,
.partner-card {
    isolation: isolate;
}

.value-card::before,
.news-card::before,
.partner-card::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: -1;
    background: linear-gradient(140deg, rgb(255 255 255 / .9), transparent 55%);
    pointer-events: none;
}

.news-card.featured::before {
    background: linear-gradient(140deg, rgb(255 255 255 / .1), transparent 60%);
}


/* Pesquisa com estado vazio/oculto previsível */

.news-card.is-hidden {
    display: none !important;
}

.search-status {
    margin-top: .75rem;
    color: var(--muted);
    font-size: .9rem;
}


/* Editorial de imagem */

.home-editorial {
    padding-top: 0;
}

.home-editorial .container {
    position: relative;
}

.home-editorial-image {
    width: 100%;
    height: clamp(17rem, 38vw, 26rem);
    object-fit: cover;
    border-radius: 0 0 var(--radius-lg) var(--radius-lg);
    filter: saturate(.9) contrast(1.04);
}

.home-editorial-caption {
    position: absolute;
    right: 2rem;
    bottom: 2rem;
    left: 2rem;
    max-width: 31rem;
    padding: 1.25rem 1.5rem;
    color: #fff;
    background: rgb(18 59 40 / .94);
    border-left: 4px solid var(--gold);
    border-radius: 0 .75rem .75rem 0;
    box-shadow: var(--shadow-lg);
}

.home-editorial-caption .eyebrow {
    margin-bottom: .5rem;
    color: #b9dec4;
}

.home-editorial-caption strong {
    display: block;
    font: 700 clamp(1.8rem, 4vw, 2.8rem)/.92 var(--display);
}


/* Contacto e notas institucionais */

.contact-section {
    background-image: radial-gradient(circle at 90% 10%, rgb(31 107 67 / .06), transparent 25rem);
}

.reg-note {
    text-wrap: balance;
}

.dark-lead {
    text-wrap: pretty;
}


/* Tabelas e conteúdos editoriais, caso estejam presentes no markup */

.prose,
.article-content {
    max-width: 46rem;
}

.prose h2,
.article-content h2 {
    margin-top: 2.5rem;
    color: var(--green);
    font: 700 2.4rem/.95 var(--display);
}

.prose h3,
.article-content h3 {
    margin-top: 1.75rem;
    color: var(--green);
    font: 700 1.7rem/.95 var(--display);
}

.prose p,
.article-content p {
    margin: 1rem 0;
}

.prose blockquote,
.article-content blockquote {
    margin: 1.5rem 0;
    padding: 1rem 1.25rem;
    color: var(--green);
    background: var(--green-light);
    border-left: 4px solid var(--gold);
    border-radius: 0 .65rem .65rem 0;
}

.prose table,
.article-content table {
    width: 100%;
    border-collapse: collapse;
    margin: 1.5rem 0;
    background: var(--surface);
    border: 1px solid var(--line);
}

.prose th,
.prose td,
.article-content th,
.article-content td {
    padding: .75rem;
    border-bottom: 1px solid var(--line);
    text-align: left;
}

.prose th,
.article-content th {
    color: #fff;
    background: var(--green);
    font-weight: 700;
}


/* Estados de validação sem depender de JavaScript adicional */

.contact-form input:user-invalid,
.contact-form textarea:user-invalid {
    border-color: var(--red);
    background: var(--red-light);
}

.contact-form input:user-valid,
.contact-form textarea:user-valid {
    border-color: var(--green-2);
}

@media (max-width: 768px) {
    .home-editorial-caption {
        right: 1rem;
        bottom: 1rem;
        left: 1rem;
    }
    .home-editorial-caption strong {
        font-size: 2rem;
    }
}

@media (max-width: 520px) {
    .home-editorial-image {
        height: 18rem;
    }
    .home-editorial-caption {
        position: relative;
        right: auto;
        bottom: auto;
        left: auto;
        margin-top: -1rem;
        border-radius: .75rem;
    }
}


/* FAQ: respostas fechadas por defeito; só aparecem após clicar */

.accordion-panel[hidden] {
    display: none !important;
}

.accordion-panel:not([hidden]) {
    display: grid;
}

.accordion-trigger {
    cursor: pointer;
}

.accordion-trigger[aria-expanded="false"]+.accordion-panel {
    display: none !important;
}

.accordion-trigger[aria-expanded="true"]+.accordion-panel {
    display: grid;
}

@media (prefers-reduced-motion: reduce) {
    .accordion-panel {
        transition: none;
    }
}


/* FAQ: animação de abertura e fecho */

.accordion-panel {
    display: grid !important;
    grid-template-rows: none;
    max-height: 0;
    overflow: hidden;
    padding-top: 0;
    padding-bottom: 0;
    opacity: 0;
    visibility: hidden;
    transition: max-height 420ms var(--ease), opacity 240ms var(--ease), padding 420ms var(--ease), visibility 420ms var(--ease);
}

.accordion-panel[hidden] {
    display: none !important;
}

.accordion-panel.is-open {
    display: grid !important;
    max-height: 1000px;
    padding-bottom: 1.2rem;
    opacity: 1;
    visibility: visible;
}


/* Durante o fecho, o hidden só é aplicado pelo JavaScript depois da transição. */

.accordion-item.is-closing .accordion-panel {
    display: grid !important;
    max-height: 0;
    opacity: 0;
    visibility: hidden;
}

.accordion-item.is-closing .accordion-trigger,
.accordion-item.open .accordion-trigger {
    transition: background var(--transition-med), color var(--transition-med);
}

@media (prefers-reduced-motion: reduce) {
    .accordion-panel {
        transition: none;
    }
}


/* ---------- ENTRADA LEVE DE CADA PÁGINA ---------- */

@keyframes pageEnter {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: none;
    }
}

body {
    animation: pageEnter 420ms var(--ease) both;
}

.page-hero .container {
    animation: pageEnter 520ms 80ms var(--ease) both;
}

@media (prefers-reduced-motion: reduce) {
    body,
    .page-hero .container {
        animation: none;
    }
}


/* ============================================================
   BOTÃO VOLTAR AO TOPO — DESKTOP E MOBILE
   Fica fixo ao viewport, visível em todas as secções da página
   (não apenas no footer), com aparecimento suave ao fazer scroll.
   ============================================================ */

.back-to-top {
    position: fixed;
    right: clamp(1rem, 3vw, 2rem);
    bottom: clamp(1rem, 3vw, 2rem);
    z-index: 1200;
    display: grid;
    width: 3.15rem;
    height: 3.15rem;
    place-items: center;
    padding: 0;
    border: 1px solid rgb(255 255 255 / .42);
    border-radius: 50%;
    color: #fff;
    background: linear-gradient(145deg, var(--red), var(--red-dark));
    box-shadow: 0 10px 24px rgb(16 23 19 / .24), 0 0 0 6px rgb(213 45 53 / .08);
    cursor: pointer;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translateY(14px) scale(.86);
    transition: opacity var(--transition-med), visibility var(--transition-med), transform var(--transition-med), background var(--transition-fast), box-shadow var(--transition-fast);
}

.back-to-top.is-visible {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translateY(0) scale(1);
    animation: backToTopFloat 3s ease-in-out infinite;
}

@keyframes backToTopFloat {
    0%,
    100% {
        transform: translateY(0) scale(1);
    }
    50% {
        transform: translateY(-6px) scale(1.02);
    }
}

.back-to-top:hover,
.back-to-top:focus-visible {
    color: var(--green);
    background: linear-gradient(145deg, var(--gold), var(--gold-dark));
    box-shadow: 0 16px 34px rgb(18 59 40 / .3), 0 0 0 7px rgb(210 169 37 / .16);
    transform: translateY(-4px) scale(1.04);
    animation: none;
}

.back-to-top:active {
    transform: translateY(0) scale(.94);
    animation: none;
}

@media (max-width: 768px) {
    .back-to-top {
        right: 1rem;
        bottom: calc(1rem + env(safe-area-inset-bottom));
        width: 2.85rem;
        height: 2.85rem;
        z-index: 1200;
    }
}

@media (prefers-reduced-motion: reduce) {
    .back-to-top,
    .back-to-top.is-visible {
        transition: none;
        animation: none;
    }
}