:root {
    --nutrifye-deep: #0F2D2A;
    --nutrifye-primary: #16C47F;
    --nutrifye-soft: #7EE2A6;
    --nutrifye-offwhite: #F2F6F4;
    --nutrifye-gray: #444443;

    --cor-primaria: #16C47F;
    --cor-corrida: #16C47F;
    --cor-descanso: #94a3b8;
    --cor-outros: #f59e0b;
}

body {
    background-color: var(--nutrifye-offwhite);
    font-family: 'DM Sans', sans-serif;
}

/* Rede de segurança: nenhuma imagem (foto de perfil, de evolução, etc.)
   pode estourar a largura do próprio container, mesmo se algum dia faltar
   a classe específica de tamanho (.avatar-*, .foto-evolucao-*). As classes
   específicas abaixo continuam mandando no tamanho normalmente, pois têm
   maior especificidade do que este seletor genérico. */
img {
    max-width: 100%;
    height: auto;
}

h1, h2, h3, h4, h5 {
    font-family: 'Poppins', sans-serif;
}

/* ------------------------------------------------------------------ */
/* Logo da navbar                                                      */
/* ------------------------------------------------------------------ */
/* A altura-base vem de brand_config.py (LOGO_HEIGHT_PX), aplicada via
   variável CSS "--logo-h" na tag <nav>. Em telas pequenas ela encolhe
   um pouco para não brigar com o botão de menu. */
.brand-logo {
    height: var(--logo-h, 44px);
    width: auto;
    display: block;
}

@media (max-width: 991.98px) {
    .brand-logo {
        height: calc(var(--logo-h, 44px) * 0.8);
    }
}

.brand-role-badge {
    font-family: 'DM Sans', sans-serif;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--nutrifye-deep);
    background-color: var(--nutrifye-soft);
    padding: 3px 10px;
    border-radius: 999px;
}

.app-navbar {
    background-color: var(--nutrifye-deep);
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.06);
}

.app-navbar .nav-link {
    font-weight: 500;
    color: rgba(242, 246, 244, 0.75);
    padding-top: 0.5rem;
    padding-bottom: 0.5rem;
}

.app-navbar .nav-link:hover,
.app-navbar .nav-link.active {
    color: var(--nutrifye-soft);
}

.btn-primary {
    background-color: var(--nutrifye-primary);
    border-color: var(--nutrifye-primary);
    color: var(--nutrifye-deep);
    font-weight: 600;
}

.btn-primary:hover, .btn-primary:focus, .btn-primary:active {
    background-color: #12a86c !important;
    border-color: #12a86c !important;
    color: var(--nutrifye-deep) !important;
}

a {
    color: var(--nutrifye-primary);
}

.modo-profissional-banner {
    background-color: var(--nutrifye-deep);
    color: white;
    padding: 8px 0;
    font-size: 0.9rem;
}

.card-resumo-paciente {
    border-radius: 14px;
    border: 1px solid #e5e7eb;
    transition: box-shadow .15s ease;
}

.card-resumo-paciente:hover {
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.08);
}

.paciente-inativo {
    opacity: 0.55;
}

.card-indicador {
    border: none;
    border-radius: 14px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
    height: 100%;
}

.card-indicador .valor {
    font-size: 1.8rem;
    font-weight: 700;
}

.card-indicador .rotulo {
    color: #6b7280;
    font-size: 0.85rem;
    text-transform: uppercase;
    letter-spacing: .03em;
}

.badge-tipo-musculacao { background-color: var(--cor-primaria); }
.badge-tipo-corrida { background-color: var(--cor-corrida); }
.badge-tipo-descanso { background-color: var(--cor-descanso); }
.badge-tipo-outros { background-color: var(--cor-outros); }

.progress { height: 1.1rem; border-radius: 8px; }

.conquista-card {
    border-radius: 14px;
    text-align: center;
    padding: 1.2rem;
    border: 1px solid #e5e7eb;
}

.conquista-card.bloqueada {
    opacity: 0.4;
    filter: grayscale(1);
}

.conquista-icone { font-size: 2.4rem; }

.calendario-dia {
    min-height: 90px;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    padding: 6px;
    background: white;
}

.calendario-dia .numero-dia {
    font-weight: 600;
    color: #374151;
}

.calendario-dia .badge {
    display: block;
    font-size: 0.65rem;
    margin-top: 2px;
    text-align: left;
}

.calendario-dia.fora-do-mes {
    background: #f1f5f9;
    opacity: 0.5;
}

table.table-registros td, table.table-registros th {
    vertical-align: middle;
}

.status-agendada { background-color: #2563eb; }
.status-confirmada { background-color: #0f766e; }
.status-realizada { background-color: #16a34a; }
.status-cancelada { background-color: #94a3b8; }
.status-falta { background-color: #dc2626; }

.consulta-badge {
    font-size: 0.68rem;
    white-space: normal;
    line-height: 1.2;
    padding: 3px 6px;
}

/* --- Evolução: fotos e análise automática -------------------------------- */

.foto-evolucao-thumb {
    width: 48px;
    height: 48px;
    object-fit: cover;
    border-radius: 6px;
    border: 1px solid #e5e7eb;
}

.foto-evolucao-grande {
    width: 100%;
    aspect-ratio: 3 / 4;
    object-fit: cover;
    border-radius: 10px;
    border: 1px solid #e5e7eb;
}

.analise-card {
    border-left: 5px solid #94a3b8;
}

.analise-card.analise-evolucao { border-left-color: #16a34a; }
.analise-card.analise-regressao { border-left-color: #dc2626; }
.analise-card.analise-estagnacao { border-left-color: #f59e0b; }

.analise-badge-evolucao { background-color: #16a34a; color: #fff; }
.analise-badge-regressao { background-color: #dc2626; color: #fff; }
.analise-badge-estagnacao { background-color: #f59e0b; color: #fff; }

/* --- Fotos de perfil ------------------------------------------------------ */

.avatar-navbar {
    width: 30px;
    height: 30px;
    object-fit: cover;
    border-radius: 50%;
    border: 1px solid rgba(255, 255, 255, 0.4);
}

.avatar-perfil {
    width: 110px;
    height: 110px;
    object-fit: cover;
    border-radius: 50%;
    border: 2px solid var(--nutrifye-soft);
}

.avatar-perfil-sm {
    width: 44px;
    height: 44px;
    object-fit: cover;
    border-radius: 50%;
    border: 1px solid #e5e7eb;
}

.avatar-placeholder {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--nutrifye-offwhite);
    color: var(--nutrifye-gray);
    border-radius: 50%;
    font-size: 1.4rem;
}
