/* ==================================================
   PROTEÇÃO GLOBAL DE LAYOUT
   Impede textos e elementos de saírem dos cards
================================================== */


/* TAMANHOS SEMPRE INCLUEM BORDA E PADDING */

*,
*::before,
*::after {
    box-sizing: border-box;
}


/* EVITA ROLAGEM HORIZONTAL NA PÁGINA */

html,
body {
    width: 100%;
    max-width: 100%;

    overflow-x: hidden;
}


/* MÍDIAS RESPONSIVAS */

img,
video,
canvas,
iframe {
    max-width: 100%;
    height: auto;
}

svg {
    max-width: 100%;
}


/* ==================================================
   TODOS OS CARDS, PAINÉIS E BLOCOS
================================================== */

[class*="card"],
[class*="painel"],
[class*="cartao"],
[class*="bloco"],
.modal {
    min-width: 0;
    max-width: 100%;

    overflow-wrap: anywhere;
    word-break: break-word;
}


/* FILHOS DOS CARDS NÃO PODEM FORÇAR A LARGURA */

[class*="card"] > *,
[class*="painel"] > *,
[class*="cartao"] > *,
[class*="bloco"] > *,
.modal > * {
    min-width: 0;
    max-width: 100%;
}


/* ==================================================
   PROTEÇÃO PARA GRID E FLEX
================================================== */

[class*="grade"] > *,
[class*="grid"] > *,
[class*="coluna"] > *,
[class*="linha"] > *,
[class*="lista"] > * {
    min-width: 0;
    max-width: 100%;
}


/* ==================================================
   TEXTOS DENTRO DOS CARDS
================================================== */

[class*="card"] :is(
    h1,
    h2,
    h3,
    h4,
    h5,
    h6,
    p,
    span,
    strong,
    small,
    label,
    a,
    li
),
[class*="painel"] :is(
    h1,
    h2,
    h3,
    h4,
    h5,
    h6,
    p,
    span,
    strong,
    small,
    label,
    a,
    li
),
[class*="cartao"] :is(
    h1,
    h2,
    h3,
    h4,
    h5,
    h6,
    p,
    span,
    strong,
    small,
    label,
    a,
    li
),
[class*="bloco"] :is(
    h1,
    h2,
    h3,
    h4,
    h5,
    h6,
    p,
    span,
    strong,
    small,
    label,
    a,
    li
) {
    min-width: 0;
    max-width: 100%;

    overflow-wrap: anywhere;
    word-break: break-word;
}


/* LINKS E E-MAILS MUITO GRANDES */

a {
    overflow-wrap: anywhere;
    word-break: break-word;
}


/* CÓDIGOS OU TEXTOS SEM ESPAÇO */

pre,
code {
    max-width: 100%;

    white-space: pre-wrap;
    overflow-wrap: anywhere;
    word-break: break-word;
}


/* ==================================================
   CAMPOS E BOTÕES
================================================== */

input,
select,
textarea,
button {
    min-width: 0;
    max-width: 100%;
}


/* TEXTAREA NÃO PODE SER REDIMENSIONADA PARA FORA */

textarea {
    resize: vertical;
}


/* ==================================================
   TABELAS
================================================== */

table {
    width: 100%;
    max-width: 100%;

    table-layout: fixed;
    border-collapse: collapse;
}

th,
td {
    min-width: 0;
    max-width: 100%;

    overflow-wrap: anywhere;
    word-break: break-word;
}


/* ==================================================
   CLASSE MANUAL PARA CASOS ESPECÍFICOS
================================================== */

.conteudo-seguro {
    min-width: 0;
    max-width: 100%;

    overflow-wrap: anywhere;
    word-break: break-word;
}

/* Espaçamento padrão mais compacto dos cards */

[class*="card"],
[class*="painel"],
[class*="cartao"] {
    --espacamento-card: 18px;
}

/* Oculta o contador falso do sino de notificações */
.numero-notificacao {
    display: none !important;
}