/* ==========================================
   COMPONENTES REUTILIZÁVEIS
   Botões, cards, badges, avisos, tabelas, avatares, seções de
   conteúdo específicas de cada tipo de página (equipe, disciplinas,
   projetos, notícias, editais, contato, infraestrutura).
   Depende de: tokens.css
========================================== */

.botoes-hero{
    margin-top:35px;
    display:flex;
    justify-content:center;
    flex-wrap:wrap;
    gap:12px;
}

.botoes-hero a{
    background:var(--color-accent);
    color:#fff;
    text-decoration:none;
    padding:var(--space-3) var(--space-5);
    border-radius:var(--radius-sm);
    font-weight:bold;
    font-size:var(--text-sm);
    transition:background-color var(--transition-base), color var(--transition-base);
}

.botoes-hero a:hover{
    background:#fff;
    color:var(--color-accent-ink);
}

/* ==========================================
   CONTEÚDO GERAL
========================================== */

.conteudo,
.noticias-area,
.projetos-area{
    max-width:1200px;
    margin:70px auto;
    padding:0 20px;
}

.conteudo h2{
    text-align:center;
    font-size:var(--text-2xl);
    line-height:var(--leading-tight);
    margin-bottom:var(--space-6);
    color:var(--color-secondary);
}

.conteudo p{
    font-size:var(--text-md);
    line-height:var(--leading-relaxed);
    text-align:center;
    max-width:var(--container-prose);
    margin-left:auto;
    margin-right:auto;
}

/* ==========================================
   LINHAS DE PESQUISA / CARDS GENÉRICOS
========================================== */

.linhas{
    max-width:1200px;
    margin:70px auto;
    padding:0 20px;
}

.linhas h2{
    text-align:center;
    font-size:var(--text-2xl);
    line-height:var(--leading-tight);
    margin-bottom:var(--space-6);
    color:var(--color-secondary);
}

.cards{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr));
    gap:25px;
}

.card{
    background:var(--color-bg);
    border-top:5px solid var(--color-accent);
    border-radius:var(--radius-lg);
    padding:30px;
    box-shadow:var(--shadow-md);
    transition:transform var(--transition-fast);
}

.card:hover{
    transform:translateY(-4px);
}

.card h3{
    font-size:var(--text-md);
    margin-bottom:var(--space-3);
    color:var(--color-secondary);
}

.card p{
    font-size:var(--text-base);
    color:var(--color-muted);
    line-height:var(--leading-normal);
}

.etiqueta-card{
    display:inline-block;
    font-size:var(--text-xs);
    font-weight:800;
    letter-spacing:.4px;
    text-transform:uppercase;
    color:var(--color-accent-ink);
    margin-bottom:var(--space-2);
}

/* ==========================================
   SEÇÕES DE DESTAQUE DA PÁGINA INICIAL
========================================== */

.titulo-secao-central{
    text-align:center;
    font-size:var(--text-2xl);
    line-height:var(--leading-tight);
    margin-bottom:var(--space-6);
    color:var(--color-secondary);
}

.faixa-equipe{
    background:var(--color-bg-alt);
    border-radius:var(--radius-lg);
    padding:var(--space-8) var(--space-5);
}

.cta-colaboracao{
    max-width:var(--container-max);
    margin:var(--space-9) auto var(--space-10) auto;
    padding:var(--space-8) var(--space-5);
    background:linear-gradient(135deg,var(--color-secondary),var(--color-primary));
    color:#fff;
    text-align:center;
    border-radius:var(--radius-lg);
}

.cta-colaboracao h2{
    font-family:var(--font-titulos);
    font-size:var(--text-xl);
    color:#fff;
    margin-bottom:var(--space-3);
}

.cta-colaboracao p{
    max-width:var(--container-prose);
    margin:0 auto var(--space-5) auto;
    font-size:var(--text-md);
    line-height:var(--leading-relaxed);
    color:rgba(255,255,255,.9);
}

.cta-colaboracao .botoes-hero{
    justify-content:center;
    margin-top:0;
}

/* ==========================================
   EDITAIS
========================================== */

.edital-card{
    background:var(--color-bg);
    border-left:6px solid var(--color-accent-dark);
    border-radius:var(--radius-lg);
    padding:35px;
    margin-bottom:35px;
    box-shadow:var(--shadow-md);
}

.edital-card h3{
    font-size:28px;
    margin-bottom:15px;
}

.edital-card p{
    font-size:18px;
    margin-bottom:25px;
}

.edital-card a{
    display:inline-block;
    background:var(--color-secondary);
    color:white;
    text-decoration:none;
    padding:14px 28px;
    border-radius:8px;
    font-weight:bold;
}

.edital-card a:hover{
    background:var(--color-accent);
    color:var(--color-primary);
}

/* ==========================================
   NOTÍCIAS
========================================== */

.noticia-card{
    background:var(--color-bg);
    border-left:6px solid var(--color-accent-dark);
    border-radius:var(--radius-lg);
    padding:35px;
    margin-bottom:35px;
    box-shadow:var(--shadow-md);
}

.data-noticia{
    color:var(--color-accent-ink);
    font-weight:bold;
    text-transform:uppercase;
    margin-bottom:10px;
}

.noticia-card h2,
.noticia-card h3{
    font-size:var(--text-lg);
    font-family:var(--font-base);
    color:var(--color-secondary);
    margin-bottom:var(--space-3);
}

.noticia-card p{
    color:#444;
}

.noticia-card a{
    display:inline-block;
    margin-top:20px;
    background:var(--color-secondary);
    color:white;
    text-decoration:none;
    padding:12px 22px;
    border-radius:8px;
}

.noticia-card a:hover{
    background:var(--color-accent);
    color:var(--color-primary);
}

/* ==========================================
   PROJETOS
========================================== */

.projeto-bloco{
    background:var(--color-bg);
    border-top:5px solid var(--color-accent);
    border-radius:var(--radius-lg);
    padding:35px;
    margin-bottom:40px;
    box-shadow:var(--shadow-md);
}

.projeto-bloco h2{
    font-size:var(--text-xl);
    color:var(--color-secondary);
    margin:var(--space-3) 0 var(--space-3);
}

.projeto-bloco p{
    color:#444;
}

.badge-projeto-status{
    background:var(--color-secondary-soft);
    color:var(--color-secondary);
}

.badge-projeto-pdi{
    background:var(--color-accent-soft);
    color:var(--color-accent-ink);
}

.fases{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:20px;
    margin-top:30px;
}

.fase{
    background:var(--color-bg-soft);
    border-top:5px solid var(--color-accent-dark);
    border-radius:var(--radius-md);
    padding:20px;
}

.fase b{
    color:var(--color-accent-ink);
    text-transform:uppercase;
    font-size:12px;
}

.fase h3{
    margin:10px 0;
}

/* ==========================================
   CONTATO
========================================== */

.contato-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr));
    gap:30px;
}

.contato-card{
    background:var(--color-bg);
    border-top:5px solid var(--color-accent-dark);
    border-radius:var(--radius-lg);
    padding:30px;
    text-align:center;
    box-shadow:var(--shadow-md);
}

.contato-card h3{
    font-size:22px;
    margin-bottom:12px;
    color:var(--color-secondary);
}

.contato-card p{
    font-size:16px;
    color:#444;
    text-align:center;
    margin-bottom:12px;
}

.contato-card > a{
    display:inline-block;
    background:var(--color-secondary);
    color:white;
    text-decoration:none;
    padding:10px 20px;
    border-radius:8px;
    font-weight:bold;
    word-break:break-word;
}

.contato-card > a.link-rede{
    display:inline-flex;
    justify-content:center;
}

.contato-card > a:hover{
    background:var(--color-accent);
    color:var(--color-primary);
}

.endereco{
    margin-bottom:16px;
}

.endereco p{
    font-size:14px;
    line-height:1.5;
    margin-bottom:2px;
    color:#666;
}

.endereco-instituicao{
    font-size:16px !important;
    font-weight:bold;
    color:var(--color-secondary) !important;
    margin-bottom:6px !important;
}

/* ==========================================
   COORDENAÇÃO
========================================== */

/* padding-top (não o atalho "padding") de propósito: esta classe é
   sempre combinada com .conteudo no HTML (class="coordenacao-area
   conteudo"), e ambas têm a mesma especificidade — um atalho "padding"
   aqui sobrescreveria também o padding lateral de 20px de .conteudo,
   zerando-o e deixando o conteúdo colado nas bordas da tela. */
.coordenacao-area{
    padding-top:60px;
}

.coordenador-card{
    background:var(--color-bg);
    border-radius:18px;
    padding:40px;
    margin-top:35px;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:40px;
    box-shadow:var(--shadow-lg);
    border:2px solid var(--color-accent);
}

.coordenador-card img{
    width:220px;
    height:220px;
    aspect-ratio:1/1;
    object-fit:cover;
    object-position:center;
    border-radius:50%;
    border:4px solid var(--color-secondary);
    flex-shrink:0;
}

.coordenador-info{
    text-align:center;
}

.coordenador-info h3{
    font-size:28px;
    color:var(--color-secondary);
    line-height:1.3;
    margin-bottom:10px;
}

@media(max-width:600px){
    .coordenador-card{
        flex-direction:column;
        padding:30px;
        gap:25px;
    }
}

/* ==========================================
   EQUIPE
========================================== */

/* padding-top/padding-bottom (não o atalho "padding") pelo mesmo motivo
   de .coordenacao-area acima: esta classe é combinada com .conteudo no
   HTML e um atalho "padding" zeraria o padding lateral de 20px dele. */
.equipe-area{
    padding-top:60px;
    padding-bottom:60px;
}

.equipe-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));
    gap:35px;
    margin-top:35px;
}

.membro-card{
    background:#ffffff;
    border-radius:15px;
    padding:30px;
    text-align:center;
    box-shadow:var(--shadow-sm);
    display:flex;
    flex-direction:column;
    align-items:center;
}

.membro-card img{
    width:220px;
    height:220px;
    aspect-ratio:1/1;
    object-fit:cover;
    object-position:center;
    border-radius:50%;
    border:4px solid var(--color-secondary);
    display:block;
    margin:0 auto 20px auto;
}

.membro-card h3{
    font-size:22px;
    color:var(--color-secondary);
    line-height:1.3;
    margin-bottom:10px;
    min-height:58px;
    display:flex;
    align-items:center;
}

.cargo{
    display:inline-block;
    text-align:center;
    color:var(--color-secondary);
    background:var(--color-secondary-soft);
    font-weight:800;
    font-size:13px;
    letter-spacing:0.5px;
    padding:6px 16px;
    border-radius:20px;
    margin:0 auto 20px auto;
    text-transform:uppercase;
}

.cargo-pva{
    color:var(--color-accent-ink);
    background:var(--color-accent-soft);
}

.equipe-subtitulo{
    text-align:center;
    color:#666;
    font-size:16px;
    max-width:700px;
    margin:-10px auto 10px auto;
}

.equipe-area + .equipe-area{
    border-top:1px solid var(--color-border);
}

/* ==========================================
   DISCIPLINAS — ÍNDICE
========================================== */

.disciplinas-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));
    gap:28px;
    margin-top:10px;
}

.disciplina-card{
    background:var(--color-bg);
    border-radius:var(--radius-lg);
    padding:30px;
    box-shadow:var(--shadow-md);
    border-top:5px solid var(--color-accent);
    display:flex;
    flex-direction:column;
    transition:transform var(--transition-fast);
}

.disciplina-card:hover{
    transform:translateY(-4px);
}

.disciplina-card-topo{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    margin-bottom:14px;
}

.badge{
    display:inline-block;
    font-size:12px;
    font-weight:800;
    letter-spacing:.4px;
    text-transform:uppercase;
    padding:5px 12px;
    border-radius:20px;
}

.badge-codigo{
    background:var(--color-secondary);
    color:white;
}

/* Selos em bloco sólido com letras brancas, no mesmo padrão das
   tarjas de editoria — mais legíveis e consistentes que texto
   colorido sobre fundo claro. */
.badge-obrigatoria{
    background:var(--color-ed-ensino);
    color:#fff;
}

.badge-optativa{
    background:var(--color-ed-ciencia);
    color:#fff;
}

.badge-ch{
    background:var(--color-muted);
    color:#fff;
}

.disciplina-card h3{
    font-size:21px;
    color:var(--color-secondary);
    margin-bottom:12px;
    line-height:1.35;
}

.disciplina-card p{
    color:#444;
    font-size:15px;
    line-height:1.7;
    flex-grow:1;
    text-align:left;
}

.disciplina-card .btn-ver-disciplina{
    display:inline-block;
    margin-top:20px;
    background:var(--color-secondary);
    color:white;
    text-decoration:none;
    padding:12px 22px;
    border-radius:var(--radius-sm);
    font-weight:bold;
    text-align:center;
}

.disciplina-card .btn-ver-disciplina:hover{
    background:var(--color-accent);
    color:var(--color-primary);
}

/* ==========================================
   DISCIPLINA — PÁGINA INDIVIDUAL
========================================== */

.disciplina-info-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(min(180px,100%),1fr));
    gap:18px;
    max-width:1000px;
    margin:0 auto 60px auto;
    padding:0 20px;
}

/* ==========================================
   ÍNDICE INTERNO DA DISCIPLINA (NAVEGAÇÃO POR ÂNCORAS)
========================================== */

.disciplina-indice{
    max-width:900px;
    margin:0 auto 50px auto;
    padding:var(--space-5);
    background:var(--color-bg);
    border:1px solid var(--color-border);
    border-radius:var(--radius-lg);
}

.disciplina-indice-titulo{
    font-size:var(--text-xs);
    font-weight:800;
    letter-spacing:.5px;
    text-transform:uppercase;
    color:var(--color-accent-ink);
    margin-bottom:var(--space-3);
}

.disciplina-indice ul{
    list-style:none;
    display:flex;
    flex-wrap:wrap;
    gap:var(--space-2) var(--space-5);
}

.disciplina-indice a{
    color:var(--color-secondary);
    text-decoration:none;
    font-size:var(--text-sm);
    font-weight:600;
    border-bottom:1px solid transparent;
}

.disciplina-indice a:hover{
    color:var(--color-accent-ink);
    border-bottom-color:var(--color-accent);
}

/* Deixa espaço acima de cada seção ao pular por âncora, para o
   título não ficar colado ao cabeçalho fixo (sticky) */
.disciplina-secao{
    scroll-margin-top:var(--header-height);
}

.disciplina-info-item{
    background:white;
    border-radius:12px;
    padding:20px;
    text-align:center;
    box-shadow:var(--shadow-sm);
}

.disciplina-info-item span{
    display:block;
    font-size:12px;
    text-transform:uppercase;
    letter-spacing:.5px;
    color:var(--color-accent-ink);
    font-weight:800;
    margin-bottom:8px;
}

.disciplina-info-item strong{
    font-size:16px;
    color:var(--color-secondary);
}

.disciplina-secao{
    max-width:900px;
    margin:0 auto 45px auto;
    padding:0 20px;
}

.disciplina-secao h2{
    font-size:28px;
    color:var(--color-secondary);
    margin-bottom:18px;
    border-left:5px solid var(--color-accent);
    padding-left:16px;
}

.disciplina-secao p{
    font-size:17px;
    line-height:1.8;
    text-align:justify;
    color:#333;
    margin-bottom:14px;
}

.programa-lista{
    counter-reset:unidade;
    padding-left:0;
    list-style:none;
}

.programa-lista li{
    counter-increment:unidade;
    position:relative;
    padding:16px 16px 16px 56px;
    margin-bottom:12px;
    background:var(--color-bg-soft);
    border-radius:10px;
    font-size:16px;
    line-height:1.65;
    color:#333;
}

.programa-lista li::before{
    content:counter(unidade);
    position:absolute;
    left:14px;
    top:14px;
    width:28px;
    height:28px;
    border-radius:50%;
    background:var(--color-accent);
    color:var(--color-primary);
    font-weight:800;
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:14px;
}

.biblio-lista{
    padding-left:0;
    list-style:none;
}

.biblio-lista li{
    padding:12px 0 12px 28px;
    position:relative;
    font-size:15px;
    line-height:1.6;
    color:#444;
    border-bottom:1px solid var(--color-border);
}

.biblio-lista li:last-child{
    border-bottom:none;
}

.biblio-lista li::before{
    content:"📘";
    position:absolute;
    left:0;
    font-size:14px;
}

.disciplina-link-atividades{
    max-width:900px;
    margin:0 auto;
    padding:0 20px;
    text-align:center;
    font-size:var(--text-sm);
    color:var(--color-muted);
}

.disciplina-link-atividades a{
    color:var(--color-accent-ink);
    font-weight:700;
}

.disciplina-voltar{
    max-width:900px;
    margin:20px auto 60px auto;
    padding:0 20px;
    text-align:center;
}

@media(max-width:600px){

    .disciplina-card{
        padding:22px;
    }

    .disciplina-secao h2{
        font-size:23px;
    }

    .disciplina-secao p,
    .programa-lista li{
        font-size:15px;
    }
}

/* ==========================================
   CRONOGRAMA (TABELA RESPONSIVA)
========================================== */

.tabela-dica-scroll{
    display:none;
    font-size:var(--text-xs);
    color:var(--color-muted);
    margin-bottom:var(--space-2);
}

.tabela-scroll{
    position:relative;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    border-radius:12px;
    box-shadow:var(--shadow-sm);
}

@media(max-width:768px){
    .tabela-dica-scroll{
        display:block;
    }

    /* Sombra sutil na borda direita, sinalizando que há mais
       conteúdo além da área visível — some quando o próprio
       navegador já rolou até o fim (max-width evita ficar preso). */
    .tabela-scroll::after{
        content:"";
        position:absolute;
        top:0;
        right:0;
        bottom:0;
        width:28px;
        pointer-events:none;
        background:linear-gradient(to right, rgba(7,24,45,0), rgba(7,24,45,.08));
    }
}

.tabela-cronograma{
    width:100%;
    border-collapse:collapse;
    background:white;
    min-width:560px;
}

.tabela-cronograma caption{
    caption-side:top;
    text-align:left;
    font-size:13px;
    color:var(--color-accent-ink);
    font-weight:800;
    text-transform:uppercase;
    padding:12px 20px 0 20px;
}

.tabela-cronograma th{
    background:var(--color-secondary);
    color:white;
    text-align:left;
    padding:14px 18px;
    font-size:13px;
    text-transform:uppercase;
    letter-spacing:.4px;
}

.tabela-cronograma td{
    padding:14px 18px;
    border-bottom:1px solid var(--color-border);
    font-size:15px;
    color:#333;
    vertical-align:top;
}

.tabela-cronograma td:first-child{
    font-weight:800;
    color:var(--color-secondary);
    white-space:nowrap;
}

.tabela-cronograma tr:last-child td{
    border-bottom:none;
}

.tabela-cronograma tr:hover td{
    background:var(--color-bg-soft);
}

/* ==========================================
   FOTOS DE MEMBROS (picture com fallback WebP/JPEG)
========================================== */

picture.membro-foto{
    display:block;
    line-height:0;
}

/* ==========================================
   COMPONENTE: ESTADO VAZIO
========================================== */

.estado-vazio{
    background:var(--color-bg);
    border:1px dashed var(--color-border-strong);
    border-radius:var(--radius-lg);
    padding:var(--space-8) var(--space-5);
    text-align:center;
    color:var(--color-muted);
    font-size:var(--text-base);
}

.estado-vazio strong{
    display:block;
    color:var(--color-secondary);
    font-size:var(--text-md);
    margin-bottom:var(--space-2);
}

/* ==========================================
   COMPONENTE: MIGALHAS DE PÃO (BREADCRUMBS)
========================================== */

.breadcrumbs{
    max-width:var(--container-narrow);
    margin:var(--space-5) auto 0 auto;
    padding:0 20px;
    font-size:var(--text-xs);
    color:var(--color-muted);
}

.breadcrumbs ol{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:var(--space-1);
    list-style:none;
}

.breadcrumbs li:not(:last-child)::after{
    content:"/";
    margin-left:var(--space-1);
    color:var(--color-border-strong);
}

.breadcrumbs a{
    color:var(--color-muted);
    text-decoration:none;
}

.breadcrumbs a:hover{
    color:var(--color-accent-ink);
    text-decoration:underline;
}

.breadcrumbs [aria-current="page"]{
    color:var(--color-secondary);
    font-weight:600;
}

/* ==========================================
   AVATAR SEM FOTO (INICIAIS)
========================================== */

.avatar-placeholder{
    width:220px;
    height:220px;
    border-radius:50%;
    border:4px solid var(--color-secondary);
    display:flex;
    align-items:center;
    justify-content:center;
    margin:0 auto 20px auto;
    background:linear-gradient(135deg,var(--color-primary),var(--color-secondary));
    color:var(--color-accent);
    font-size:56px;
    font-weight:800;
    letter-spacing:1px;
    flex-shrink:0;
}

.coordenador-card .avatar-placeholder{
    margin:0;
}

/* ==========================================
   SELOS / STATUS
========================================== */

.selo-em-breve{
    display:inline-block;
    background:var(--color-bg-soft);
    color:var(--color-muted);
    border:1.5px dashed var(--color-border);
    padding:10px 22px;
    border-radius:8px;
    font-weight:bold;
    font-size:14px;
}

.selo-encerrado{
    display:inline-block;
    background:var(--color-border);
    color:var(--color-muted);
    padding:10px 22px;
    border-radius:8px;
    font-weight:bold;
    font-size:14px;
}

/* ==========================================
   INFRAESTRUTURA
========================================== */

.infra-bloco{
    background:var(--color-bg);
    border-radius:var(--radius-lg);
    padding:40px;
    margin-bottom:45px;
    box-shadow:var(--shadow-md);
}

.infra-bloco h2{
    font-size:30px;
    color:var(--color-secondary);
    margin-bottom:10px;
    text-align:center;
}

.infra-bloco .infra-sub{
    text-align:center;
    color:var(--color-accent-ink);
    font-weight:600;
    margin-bottom:30px;
}

.infra-bloco img{
    width:100%;
    height:auto;
    display:block;
    border-radius:12px;
}

.infra-lista{
    max-width:800px;
    margin:30px auto 0 auto;
    padding-left:0;
    list-style:none;
}

.infra-lista li{
    padding:12px 0 12px 32px;
    position:relative;
    font-size:17px;
    color:#333;
    border-bottom:1px solid var(--color-border);
}

.infra-lista li:last-child{
    border-bottom:none;
}

.infra-lista li::before{
    content:"✓";
    position:absolute;
    left:0;
    color:var(--color-accent-ink);
    font-weight:bold;
    font-size:18px;
}

