/* Layout — container, grid e utilitários estruturais mínimos (sem framework) */

.container{
    width: 100%;
    max-width: var(--largura-container);
    margin-inline: auto;
    padding-inline: var(--espaco-lg);
}

.container-estreito{
    width: 100%;
    max-width: var(--largura-container-estreito);
    margin-inline: auto;
    padding-inline: var(--espaco-lg);
}

.secao{
    padding-block: var(--espaco-secao);
}

/* Flex utilitários — poucos, o suficiente pra montar header/footer/cards sem framework */
.u-flex{ display: flex; }
.u-flex-center{ display: flex; align-items: center; }
.u-flex-between{ display: flex; align-items: center; justify-content: space-between; }
.u-flex-wrap{ flex-wrap: wrap; }
.u-gap-sm{ gap: var(--espaco-sm); }
.u-gap-md{ gap: var(--espaco-md); }
.u-gap-lg{ gap: var(--espaco-lg); }

/* Grid fluido reutilizavel — cards de produto, institucional, etc.
   min define o menor card antes de quebrar linha; usar minmax por contexto. */
.u-grid{
    display: grid;
    gap: var(--espaco-lg);
}
.u-grid-auto{
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
}

.u-container-fluid{
    width: 100%;
    padding-inline: var(--espaco-lg);
}

.u-visually-hidden{
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* Estrutura global de página */
#site-header{
    position: sticky;
    top: 0;
    z-index: 100;
    background: var(--cor-branco);
}

#site-conteudo{
    min-height: 60vh;
}

#site-footer{
    background: var(--cor-linho-2);
}
