:root {
    --fundo-externo: #081824;
    --fundo-painel: #f4f8fc;
    --fundo-cartao: #ffffff;
    --fundo-escuro: #0d2234;
    --fundo-escuro-secundario: #123149;
    --texto: #173042;
    --texto-suave: #6d8192;
    --texto-claro: #eaf7ff;
    --borda: rgba(15, 53, 79, 0.10);
    --borda-escura: rgba(110, 219, 255, 0.14);
    --primaria: #18b5da;
    --primaria-escura: #0d6f8c;
    --primaria-clara: #d8f7ff;
    --sucesso: #dff8eb;
    --sucesso-texto: #176244;
    --alerta: #fff4d6;
    --sombra-forte: 0 24px 80px rgba(2, 18, 31, 0.32);
    --sombra-card: 0 18px 40px rgba(9, 33, 51, 0.08);
    --raio-grande: 28px;
    --raio-medio: 20px;
    --raio-pequeno: 14px;
}

* {
    box-sizing: border-box;
}

html {
    font-size: 16px;
}

body {
    margin: 0;
    font-family: "Bahnschrift", "Trebuchet MS", "Segoe UI", sans-serif;
    color: var(--texto);
    background:
        radial-gradient(circle at top left, rgba(24, 181, 218, 0.18), transparent 28%),
        radial-gradient(circle at top right, rgba(59, 132, 246, 0.12), transparent 24%),
        linear-gradient(180deg, #0a1b28 0%, #06131d 100%);
}

.pagina-login {
    min-height: 100vh;
    padding: 22px;
    background:
        radial-gradient(circle at top left, rgba(23, 198, 191, 0.16), transparent 26%),
        radial-gradient(circle at bottom right, rgba(13, 99, 231, 0.16), transparent 24%),
        linear-gradient(135deg, #081a29 0%, #0f2940 52%, #0a1f31 100%);
}

.login-shell {
    min-height: calc(100vh - 44px);
    display: grid;
    grid-template-columns: minmax(0, 1.18fr) minmax(360px, 0.82fr);
    border-radius: 36px;
    overflow: hidden;
    border: 1px solid rgba(117, 213, 255, 0.18);
    box-shadow: var(--sombra-forte);
    background: rgba(255, 255, 255, 0.03);
    backdrop-filter: blur(16px);
}

.login-hero {
    display: grid;
    align-items: center;
    padding: 48px;
    background:
        radial-gradient(circle at top left, rgba(255, 255, 255, 0.12), transparent 32%),
        linear-gradient(135deg, rgba(9, 28, 44, 0.92), rgba(11, 44, 68, 0.86));
}

.login-hero__conteudo {
    display: grid;
    gap: 30px;
    justify-items: center;
}

.login-hero__logo {
    width: min(420px, 100%);
    height: auto;
    filter: drop-shadow(0 24px 40px rgba(2, 18, 31, 0.18));
}

.login-hero__texto {
    max-width: 560px;
    text-align: center;
    color: var(--texto-claro);
}

.login-hero__texto h1 {
    margin: 10px 0 0;
    font-family: "Franklin Gothic Medium", "Arial Narrow", Arial, sans-serif;
    font-size: clamp(2rem, 4vw, 3.35rem);
    line-height: 1.08;
}

.login-hero__texto p {
    margin: 18px 0 0;
    font-size: 1.05rem;
    line-height: 1.75;
    color: rgba(234, 247, 255, 0.78);
}

.etiqueta-login {
    display: inline-block;
    color: #8bdcf1;
    font-size: 0.82rem;
    text-transform: uppercase;
    letter-spacing: 0.16em;
}

.login-card {
    display: grid;
    align-content: center;
    gap: 20px;
    padding: 48px;
    background:
        radial-gradient(circle at top right, rgba(24, 181, 218, 0.08), transparent 22%),
        linear-gradient(180deg, #f3f8fc 0%, #ffffff 100%);
}

.login-card__topo h2 {
    margin: 10px 0 0;
    font-family: "Franklin Gothic Medium", "Arial Narrow", Arial, sans-serif;
    font-size: 2.4rem;
    color: #102b3d;
}

.login-card__topo p {
    margin: 14px 0 0;
    color: var(--texto-suave);
    line-height: 1.7;
}

.formulario-login {
    display: grid;
    gap: 18px;
}

.alerta-login {
    padding: 16px 18px;
    border-radius: 18px;
    border: 1px solid transparent;
    font-weight: 700;
    line-height: 1.5;
}

.alerta-login--erro {
    background: #fff0ed;
    border-color: rgba(221, 74, 58, 0.18);
    color: #a9362b;
}

.alerta-login--sucesso {
    background: #e8fbf1;
    border-color: rgba(23, 140, 84, 0.18);
    color: #176244;
}

.alerta-moderno--erro {
    background: #fff1ee;
    border-color: rgba(221, 74, 58, 0.18);
    color: #a33d33;
}

.botao--login {
    min-height: 54px;
    font-size: 1rem;
}

.pagina-app {
    min-height: 100vh;
    padding: 18px;
}

.app-shell {
    min-height: calc(100vh - 36px);
    display: grid;
    grid-template-columns: 280px minmax(0, 1fr);
    background: linear-gradient(180deg, rgba(9, 24, 37, 0.98), rgba(5, 16, 25, 0.98));
    border: 1px solid rgba(117, 213, 255, 0.12);
    border-radius: 34px;
    overflow: hidden;
    box-shadow: var(--sombra-forte);
}

.barra-lateral {
    padding: 28px 22px;
    background:
        radial-gradient(circle at top left, rgba(24, 181, 218, 0.24), transparent 38%),
        linear-gradient(180deg, #0b1f31 0%, #071522 100%);
    border-right: 1px solid var(--borda-escura);
    display: flex;
    flex-direction: column;
    gap: 28px;
}

.marca-app {
    display: flex;
    align-items: center;
    gap: 14px;
    color: var(--texto-claro);
}

.marca-app strong {
    display: block;
    font-size: 1.5rem;
    letter-spacing: 0.01em;
}

.marca-app span {
    color: rgba(234, 247, 255, 0.72);
    font-size: 0.95rem;
}

.marca-app__simbolo {
    width: 52px;
    height: 52px;
    border-radius: 16px;
    display: grid;
    place-items: center;
    padding: 7px;
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.96), rgba(233, 247, 255, 0.92));
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.18);
}

.marca-app__logo {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: contain;
}

.menu-lateral {
    display: grid;
    gap: 8px;
}

.menu-lateral__form {
    margin: 0;
}

.grupo-menu {
    border-radius: 18px;
    border: 1px solid transparent;
    overflow: hidden;
    transition: background 160ms ease, border-color 160ms ease;
}

.grupo-menu[open],
.grupo-menu--ativo {
    background: rgba(24, 181, 218, 0.08);
    border-color: rgba(84, 217, 255, 0.18);
}

.grupo-menu__titulo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 50px;
    padding: 0 16px;
    border-radius: 16px;
    color: rgba(234, 247, 255, 0.92);
    cursor: pointer;
    list-style: none;
    font-weight: 700;
}

.grupo-menu__titulo::-webkit-details-marker {
    display: none;
}

.grupo-menu__titulo::after {
    content: "+";
    color: rgba(234, 247, 255, 0.70);
    font-size: 1rem;
    transition: transform 160ms ease, color 160ms ease;
}

.grupo-menu[open] .grupo-menu__titulo::after {
    content: "-";
    color: #ffffff;
}

.grupo-menu__titulo:hover {
    background: rgba(24, 181, 218, 0.10);
}

.menu-lateral__item {
    display: flex;
    align-items: center;
    min-height: 50px;
    padding: 0 16px;
    border-radius: 16px;
    color: rgba(234, 247, 255, 0.86);
    text-decoration: none;
    border: 1px solid transparent;
    transition: transform 160ms ease, background 160ms ease, border-color 160ms ease;
}

.menu-lateral__item--botao {
    width: 100%;
    border: none;
    background: rgba(255, 255, 255, 0.04);
    text-align: left;
    font: inherit;
}

.menu-lateral__item:hover {
    transform: translateX(4px);
    background: rgba(24, 181, 218, 0.10);
    border-color: rgba(24, 181, 218, 0.22);
}

.menu-lateral__item--ativo {
    background: linear-gradient(135deg, rgba(24, 181, 218, 0.32), rgba(24, 181, 218, 0.14));
    border-color: rgba(84, 217, 255, 0.28);
    color: #ffffff;
}

.submenu {
    display: grid;
    gap: 6px;
    padding: 0 8px 10px 8px;
}

.submenu__item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 42px;
    padding: 0 14px;
    margin-left: 10px;
    border-radius: 14px;
    color: rgba(234, 247, 255, 0.78);
    text-decoration: none;
    background: rgba(255, 255, 255, 0.03);
    border: 1px solid transparent;
    font-size: 0.95rem;
}

.submenu__item:hover {
    background: rgba(255, 255, 255, 0.08);
    border-color: rgba(84, 217, 255, 0.16);
}

.submenu__item--ativo {
    color: #ffffff;
    background: rgba(24, 181, 218, 0.20);
    border-color: rgba(84, 217, 255, 0.22);
}

.submenu__item--planejado {
    color: rgba(234, 247, 255, 0.86);
}

.submenu__item small {
    padding: 4px 8px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.10);
    color: rgba(234, 247, 255, 0.80);
    font-size: 0.72rem;
    letter-spacing: 0.04em;
}

.barra-lateral__rodape {
    margin-top: auto;
    display: grid;
    gap: 12px;
}

.barra-lateral__usuario {
    display: grid;
    gap: 6px;
    padding: 14px 16px;
    border-radius: 18px;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(84, 217, 255, 0.12);
}

.barra-lateral__usuario span {
    color: rgba(234, 247, 255, 0.62);
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.barra-lateral__usuario strong {
    color: #ffffff;
    font-size: 0.95rem;
    word-break: break-word;
}

.area-principal {
    padding: 26px;
    background:
        radial-gradient(circle at top right, rgba(24, 181, 218, 0.08), transparent 26%),
        linear-gradient(180deg, #edf5fb 0%, #f7fbfe 100%);
    overflow: auto;
}

.topo-app,
.hero,
.cartao-kpi,
.painel,
.alerta-moderno {
    animation: subir 420ms ease both;
}

.topo-app {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 18px;
    margin-bottom: 22px;
}

.topo-app h1,
.hero h2,
.painel h3 {
    margin: 0;
    font-family: "Franklin Gothic Medium", "Arial Narrow", Arial, sans-serif;
    letter-spacing: 0.01em;
}

.topo-app h1 {
    font-size: clamp(2rem, 4vw, 2.8rem);
    color: #102b3d;
}

.topo-app__etiqueta,
.etiqueta {
    margin: 0 0 6px;
    font-size: 0.82rem;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: #4c8aa2;
}

.topo-app__acoes {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
}

.hero {
    display: grid;
    grid-template-columns: minmax(0, 1.7fr) minmax(280px, 0.9fr);
    gap: 22px;
    padding: 28px;
    border-radius: var(--raio-grande);
    background:
        radial-gradient(circle at top right, rgba(60, 202, 242, 0.16), transparent 30%),
        linear-gradient(135deg, #0d2436 0%, #12364f 55%, #164661 100%);
    color: var(--texto-claro);
    box-shadow: var(--sombra-card);
    overflow: hidden;
}

.hero--compacto {
    grid-template-columns: minmax(0, 1fr);
}

.hero__selo {
    display: inline-flex;
    align-items: center;
    min-height: 34px;
    padding: 0 14px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.10);
    border: 1px solid rgba(148, 227, 252, 0.24);
    font-size: 0.84rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.hero h2 {
    margin-top: 18px;
    font-size: clamp(1.7rem, 3vw, 2.5rem);
    line-height: 1.1;
}

.hero p {
    margin: 14px 0 0;
    max-width: 760px;
    color: rgba(234, 247, 255, 0.82);
    line-height: 1.7;
}

.hero__resumo {
    display: grid;
    gap: 14px;
}

.hero__resumo--unico {
    grid-template-columns: 1fr;
}

.hero__resumo div {
    padding: 18px 20px;
    border-radius: 20px;
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(148, 227, 252, 0.18);
    backdrop-filter: blur(10px);
}

.hero__resumo span {
    display: block;
    font-size: 0.86rem;
    text-transform: uppercase;
    letter-spacing: 0.11em;
    color: rgba(234, 247, 255, 0.68);
}

.hero__resumo strong {
    display: block;
    margin-top: 8px;
    font-size: 1.32rem;
    color: #ffffff;
}

.grade-kpis {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 18px;
    margin-top: 22px;
}

.grade-kpis--tres {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.grade-kpis--quatro {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.cartao-kpi {
    padding: 22px;
    border-radius: 22px;
    background: var(--fundo-cartao);
    border: 1px solid var(--borda);
    box-shadow: var(--sombra-card);
}

.cartao-kpi span {
    display: block;
    color: #5d7990;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: 0.77rem;
}

.cartao-kpi strong {
    display: block;
    margin: 14px 0 10px;
    font-size: clamp(1.8rem, 3vw, 2.3rem);
    color: #0d2d3f;
}

.cartao-kpi p {
    margin: 0;
    color: var(--texto-suave);
    line-height: 1.6;
}

.cartao-kpi--destaque {
    background: linear-gradient(180deg, #f8fdff 0%, #e7f9ff 100%);
    border-color: rgba(24, 181, 218, 0.22);
}

.grade-conteudo,
.grade-pacientes,
.grade-formulario {
    display: grid;
    gap: 18px;
    margin-top: 22px;
}

.grade-conteudo {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.grade-conteudo--prontuarios,
.grade-conteudo--prontuario-ficha {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.grade-pacientes,
.grade-formulario {
    grid-template-columns: minmax(0, 1.55fr) minmax(300px, 0.75fr);
}

.pilha-paineis {
    display: grid;
    gap: 18px;
    margin-top: 22px;
}

.filtro-listagem {
    margin-bottom: 18px;
}

.filtro-listagem__grade {
    display: grid;
    gap: 16px;
}

.filtro-listagem__grade--duplo,
.filtro-listagem__grade--orcamentos {
    grid-template-columns: minmax(0, 1fr) 320px;
    align-items: end;
}

.campo--data-filtro {
    max-width: 320px;
}

.filtro-listagem__linha {
    display: flex;
    gap: 12px;
    align-items: center;
}

.filtro-listagem__linha input {
    flex: 1 1 auto;
}

.painel-scroll-listagem {
    max-height: 760px;
    overflow: auto;
    padding-right: 4px;
}

.painel-scroll-listagem--dez {
    max-height: 620px;
}

.painel-scroll-listagem--vinte {
    max-height: 840px;
}

.tabela-responsiva--itens {
    max-height: 346px;
    overflow: auto;
    border-radius: 18px;
    padding: 2px 4px 4px;
}

.tabela-responsiva--orcamento-itens {
    overflow: auto;
}

.grade-agenda {
    display: grid;
    grid-template-columns: minmax(320px, 0.82fr) minmax(0, 1.6fr);
    gap: 18px;
    margin-top: 22px;
    align-items: start;
}

.area-principal--modal {
    display: grid;
    align-content: start;
}

.painel {
    padding: 24px;
    border-radius: var(--raio-grande);
    background: var(--fundo-cartao);
    border: 1px solid var(--borda);
    box-shadow: var(--sombra-card);
}

.painel--agenda {
    background:
        linear-gradient(180deg, rgba(24, 181, 218, 0.05), rgba(24, 181, 218, 0.01)),
        var(--fundo-cartao);
}

.painel--agenda-semanal {
    margin-top: 22px;
    padding: 18px;
    overflow: hidden;
}

.painel--tabela {
    overflow: hidden;
}

.painel__topo {
    display: flex;
    justify-content: space-between;
    gap: 16px;
    align-items: flex-start;
    margin-bottom: 18px;
}

.painel h3 {
    font-size: 1.45rem;
    color: #102d41;
}

.status-pill {
    display: inline-flex;
    align-items: center;
    min-height: 34px;
    padding: 0 14px;
    border-radius: 999px;
    background: #e7fbef;
    color: #156543;
    font-weight: 700;
    font-size: 0.86rem;
}

.lista-status,
.lista-check {
    margin: 0;
    padding: 0;
    list-style: none;
    display: grid;
    gap: 14px;
}

.lista-status li,
.lista-check li {
    padding: 16px 18px;
    border-radius: 18px;
    background: #f7fbfe;
    border: 1px solid rgba(15, 53, 79, 0.08);
}

.lista-status strong,
.lista-check li {
    color: #113146;
}

.lista-status span {
    display: block;
    margin-top: 6px;
    color: var(--texto-suave);
}

.blocos-mini {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
}

.blocos-mini--quatro {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.bloco-mini {
    padding: 18px;
    border-radius: 18px;
    background: #f7fbfe;
    border: 1px solid rgba(15, 53, 79, 0.08);
}

.bloco-mini strong {
    display: block;
    color: #12354a;
    margin-bottom: 8px;
}

.bloco-mini p,
.texto-painel {
    margin: 0;
    color: var(--texto-suave);
    line-height: 1.7;
}

.prontuario-cabecalho {
    display: grid;
    grid-template-columns: 240px minmax(0, 1fr);
    gap: 26px;
    align-items: start;
    margin-top: 22px;
}

.prontuario-cabecalho__dados {
    display: grid;
    gap: 16px;
}

.abas-prontuario {
    display: grid;
    gap: 18px;
    margin-top: 22px;
}

.abas-prontuario__navegacao {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.abas-prontuario__botao {
    min-height: 46px;
    padding: 0 18px;
    border-radius: 14px;
    border: 1px solid rgba(15, 53, 79, 0.10);
    background: #ffffff;
    color: #123145;
    cursor: pointer;
    font: inherit;
    font-weight: 700;
    transition: transform 160ms ease, border-color 160ms ease, background 160ms ease;
}

.abas-prontuario__botao:hover {
    transform: translateY(-1px);
    border-color: rgba(24, 181, 218, 0.24);
    background: #f4fbfe;
}

.abas-prontuario__botao--ativo {
    background: linear-gradient(135deg, #18b5da 0%, #0f86a8 100%);
    border-color: transparent;
    color: #ffffff;
    box-shadow: 0 14px 28px rgba(24, 181, 218, 0.20);
}

.abas-prontuario__painel {
    display: none;
}

.abas-prontuario__painel--ativo {
    display: block;
}

.lista-registros {
    display: grid;
    gap: 14px;
}

.lista-registros__item {
    padding: 18px 20px;
    border-radius: 18px;
    background: #f7fbfe;
    border: 1px solid rgba(15, 53, 79, 0.08);
}

.lista-registros__cabecalho {
    display: flex;
    justify-content: space-between;
    gap: 14px;
    align-items: flex-start;
}

.lista-registros__cabecalho strong {
    display: block;
    color: #123145;
    font-size: 1.02rem;
}

.lista-registros__cabecalho span {
    display: block;
    margin-top: 6px;
    color: var(--texto-suave);
}

.lista-registros__corpo {
    margin-top: 12px;
    color: #163345;
}

.lista-registros__corpo p {
    margin: 0;
    line-height: 1.7;
}

.lista-registros__meta {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-top: 12px;
}

.lista-registros__meta span {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 0 10px;
    border-radius: 999px;
    background: #eaf3f8;
    color: #4d6d81;
    font-size: 0.84rem;
}

.campo__ajuda {
    color: var(--texto-suave);
    font-size: 0.88rem;
}

.grupo-permissoes {
    margin: 0;
    padding: 0;
    border: none;
}

.grupo-permissoes legend {
    margin-bottom: 10px;
    padding: 0;
    font-weight: 700;
    color: #19384b;
}

.grade-permissoes {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
}

.grade-permissoes--duas {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.permissao-card {
    display: grid;
    gap: 10px;
    align-content: start;
    padding: 16px 18px;
    border-radius: 18px;
    border: 1px solid rgba(15, 53, 79, 0.10);
    background: #f8fbfe;
    cursor: pointer;
}

.permissao-card input {
    width: 18px;
    height: 18px;
    margin: 0;
}

.permissao-card span {
    font-weight: 700;
    color: #123145;
}

.permissao-card small {
    color: var(--texto-suave);
    line-height: 1.6;
}

.permissao-card--grande {
    min-height: 132px;
}

.lista-permissoes {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.permissao-pill {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 0 10px;
    border-radius: 999px;
    background: #edf7fc;
    color: #3f687f;
    font-size: 0.8rem;
    font-weight: 700;
}

.bloco-anamnese-personalizada {
    display: grid;
    gap: 16px;
    margin-top: 6px;
    padding: 20px;
    border-radius: 22px;
    background: #f8fbfe;
    border: 1px solid rgba(15, 53, 79, 0.08);
}

.bloco-anamnese-personalizada__topo {
    display: grid;
    gap: 6px;
}

.bloco-anamnese-personalizada__topo h4 {
    margin: 0;
    font-size: 1.1rem;
    color: #103045;
}

.bloco-anamnese-personalizada__topo p,
.bloco-anamnese-personalizada__vazio {
    margin: 0;
    color: var(--texto-suave);
    line-height: 1.6;
}

.lista-perguntas-anamnese {
    display: grid;
    gap: 14px;
}

.pergunta-anamnese-card {
    display: grid;
    gap: 12px;
    padding: 16px;
    border-radius: 18px;
    background: #ffffff;
    border: 1px solid rgba(15, 53, 79, 0.08);
}

.pergunta-anamnese-card__cabecalho {
    display: flex;
    justify-content: space-between;
    gap: 10px;
    align-items: center;
}

.pergunta-anamnese-card__cabecalho strong {
    color: #123145;
}

.pergunta-anamnese-card__cabecalho span {
    color: #5a7a8f;
    font-size: 0.84rem;
    font-weight: 700;
}

.odontograma-anamnese {
    display: grid;
    gap: 16px;
    margin-top: 6px;
    padding: 22px;
    border-radius: 22px;
    background:
        radial-gradient(circle at top left, rgba(24, 181, 218, 0.10), transparent 28%),
        linear-gradient(180deg, #fafdff 0%, #f2fbff 100%);
    border: 1px solid rgba(24, 181, 218, 0.18);
    box-shadow:
        inset 0 0 0 1px rgba(24, 181, 218, 0.04),
        0 10px 24px rgba(15, 53, 79, 0.05);
}

.odontograma-anamnese__painel {
    display: grid;
    gap: 14px;
}

.odontograma-anamnese__arcadas {
    display: grid;
    gap: 14px;
}

.odontograma-anamnese__arcada {
    position: relative;
    padding: 16px 18px 12px;
    border-radius: 28px;
    background: rgba(255, 255, 255, 0.78);
    border: 1px solid rgba(24, 181, 218, 0.10);
    overflow: hidden;
}

.odontograma-anamnese__arcada::before {
    content: "";
    position: absolute;
    left: 5%;
    right: 5%;
    height: 54px;
    border: 2px solid rgba(24, 181, 218, 0.22);
    border-bottom: none;
    border-radius: 999px 999px 0 0;
    pointer-events: none;
}

.odontograma-anamnese__arcada--superior::before {
    top: 12px;
}

.odontograma-anamnese__arcada--inferior::before {
    bottom: 12px;
    border: 2px solid rgba(24, 181, 218, 0.18);
    border-top: none;
    border-radius: 0 0 999px 999px;
}

.odontograma-anamnese__cabecalho,
.odontograma-anamnese__rodape {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px;
}

.odontograma-anamnese__lado {
    text-align: center;
    color: #5f90a7;
    font-weight: 700;
    font-size: 1rem;
}

.odontograma-anamnese__grupos {
    display: grid;
    grid-template-columns: 3fr 2fr 1fr 2fr 1fr 2fr 3fr;
    gap: 8px;
    align-items: end;
}

.odontograma-anamnese__grupo-titulo {
    position: relative;
    text-align: center;
    color: #4e7f95;
    font-size: 0.84rem;
    font-weight: 700;
    padding-bottom: 10px;
}

.odontograma-anamnese__grupo-titulo::after {
    content: "";
    position: absolute;
    left: 12%;
    right: 12%;
    bottom: 0;
    height: 2px;
    border-radius: 999px;
    background: linear-gradient(90deg, rgba(24, 181, 218, 0.12), rgba(24, 181, 218, 0.7), rgba(24, 181, 218, 0.12));
}

.odontograma-anamnese__linha {
    position: relative;
    display: grid;
    grid-template-columns: repeat(16, minmax(0, 1fr));
    gap: 10px;
}

.odontograma-anamnese__linha .odontograma-anamnese__dente:nth-child(8) {
    margin-right: 10px;
}

.odontograma-anamnese__linha .odontograma-anamnese__dente:nth-child(9) {
    margin-left: 10px;
}

.odontograma-anamnese__divisoria {
    height: 2px;
    border-radius: 999px;
    background: linear-gradient(90deg, rgba(24, 181, 218, 0.18), rgba(24, 181, 218, 0.8), rgba(24, 181, 218, 0.18));
    margin: 2px 0;
}

.odontograma-anamnese__dente {
    display: grid;
    justify-items: center;
    gap: 8px;
    transition: transform 180ms ease;
}

.odontograma-anamnese__dente:hover {
    transform: translateY(-3px);
}

.odontograma-anamnese__dente i {
    position: relative;
    display: block;
    width: 34px;
    height: 52px;
    background: linear-gradient(180deg, #fffef8 0%, #f6f0df 55%, #efe5c8 100%);
    border: 1px solid rgba(194, 183, 148, 0.82);
    box-shadow:
        inset 0 -6px 10px rgba(214, 203, 169, 0.36),
        0 6px 16px rgba(15, 53, 79, 0.08);
}

.odontograma-anamnese__dente span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 38px;
    min-height: 24px;
    padding: 0 8px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.9);
    border: 1px solid rgba(15, 53, 79, 0.08);
    color: #123145;
    font-weight: 700;
    font-size: 0.84rem;
}

.odontograma-anamnese__dente--molar i {
    width: 38px;
    clip-path: polygon(18% 4%, 32% 0, 44% 6%, 56% 0, 70% 4%, 82% 16%, 80% 46%, 70% 64%, 60% 100%, 48% 78%, 36% 100%, 26% 64%, 18% 46%, 16% 16%);
    border-radius: 12px 12px 18px 18px;
}

.odontograma-anamnese__dente--premolar i {
    width: 32px;
    clip-path: polygon(24% 4%, 38% 0, 50% 8%, 62% 0, 76% 4%, 80% 26%, 74% 50%, 62% 68%, 52% 100%, 40% 72%, 28% 100%, 18% 68%, 26% 50%, 20% 26%);
    border-radius: 12px 12px 18px 18px;
}

.odontograma-anamnese__dente--canino i {
    width: 28px;
    clip-path: polygon(48% 0, 74% 16%, 72% 48%, 58% 68%, 52% 100%, 42% 66%, 28% 48%, 26% 16%);
    border-radius: 14px 14px 20px 20px;
}

.odontograma-anamnese__dente--incisivo i {
    width: 24px;
    clip-path: polygon(28% 0, 72% 0, 76% 36%, 62% 74%, 52% 100%, 42% 74%, 24% 36%);
    border-radius: 12px 12px 18px 18px;
}

.odontograma-anamnese__dente--inferior i {
    transform: rotate(180deg);
}

.comparativo {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
    margin-top: 18px;
}

.comparativo__item {
    min-height: 140px;
    padding: 20px;
    border-radius: 20px;
    background:
        linear-gradient(180deg, rgba(24, 181, 218, 0.10), rgba(255, 255, 255, 0.96)),
        var(--fundo-cartao);
    border: 1px solid rgba(24, 181, 218, 0.18);
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
}

.comparativo__item span {
    color: #4d7e95;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-size: 0.74rem;
}

.comparativo__item strong {
    margin-top: 8px;
    font-size: 1.16rem;
    color: #123044;
}

.alerta-moderno {
    margin-top: 22px;
    padding: 20px 22px;
    border-radius: 20px;
    border: 1px solid rgba(41, 155, 97, 0.16);
    background: var(--sucesso);
    color: var(--sucesso-texto);
}

.alerta-moderno strong,
.alerta-moderno p {
    margin: 0;
}

.alerta-moderno p {
    margin-top: 6px;
}

.coluna-infos {
    display: grid;
    gap: 18px;
    align-content: start;
}

.tabela-responsiva {
    overflow-x: auto;
}

.tabela {
    width: 100%;
    border-collapse: collapse;
}

.tabela--moderna thead th {
    padding: 0 0 14px;
    text-align: left;
    color: #648296;
    font-size: 0.79rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    border-bottom: 1px solid rgba(15, 53, 79, 0.10);
}

.tabela--moderna tbody td {
    padding: 18px 0;
    border-bottom: 1px solid rgba(15, 53, 79, 0.08);
    color: #163345;
}

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

.tabela__acoes {
    width: 220px;
}

.tabela__descricao {
    margin-top: 8px;
    color: var(--texto-suave);
    line-height: 1.6;
}

.acoes-tabela {
    display: flex;
    gap: 8px;
    flex-wrap: nowrap;
    align-items: center;
}

.painel--interno {
    margin-top: 16px;
    background: rgba(245, 250, 255, 0.76);
}

.item-orcamento-editor {
    margin-bottom: 18px;
}

.item-orcamento-editor--topo {
    grid-template-columns: minmax(0, 1fr) minmax(240px, 0.55fr);
}

.orcamento-itens {
    display: grid;
    gap: 16px;
}

.orcamento-item {
    padding: 18px;
    border: 1px solid rgba(15, 53, 79, 0.1);
    border-radius: 20px;
    background: rgba(255, 255, 255, 0.88);
}

.orcamento-resumo {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
    margin-top: 20px;
}

.campo--acoes {
    justify-content: flex-end;
}

.campo--acoes .botao {
    align-self: flex-start;
}

.tabela-itens-orcamento td .botao-acao-tabela {
    margin-left: auto;
}

.tabela-itens-orcamento {
    min-width: 960px;
    width: 100%;
}

.tabela-itens-orcamento thead th:first-child,
.tabela-itens-orcamento tbody td:first-child {
    padding-left: 16px;
}

.tabela-itens-orcamento thead th:last-child,
.tabela-itens-orcamento tbody td:last-child {
    padding-right: 16px;
}

.orcamento-itens__vazio td {
    color: var(--texto-suave);
}

.tabela__apoio {
    margin-top: 6px;
    color: var(--texto-suave);
    font-size: 0.9rem;
}

.acoes-tabela form {
    margin: 0;
}

.acoes-tabela--linha {
    flex-wrap: nowrap;
}

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

.botao-acao-tabela {
    width: 38px;
    height: 38px;
    display: inline-grid;
    place-items: center;
    padding: 0;
    border-radius: 12px;
    border: 1px solid rgba(15, 53, 79, 0.12);
    background: #ffffff;
    color: #123145;
    cursor: pointer;
    text-decoration: none;
    box-shadow: 0 8px 16px rgba(9, 33, 51, 0.06);
    transition: transform 160ms ease, border-color 160ms ease, background 160ms ease, color 160ms ease;
}

.botao-acao-tabela:hover {
    transform: translateY(-1px);
    border-color: rgba(24, 181, 218, 0.30);
    background: #eef8fd;
}

.botao-acao-tabela svg {
    width: 18px;
    height: 18px;
    stroke: currentColor;
    stroke-width: 1.9;
    fill: none;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.botao-acao-tabela--primario {
    background: linear-gradient(135deg, #18b5da 0%, #0f86a8 100%);
    color: #ffffff;
    border-color: transparent;
}

.botao-acao-tabela--perigo {
    background: linear-gradient(135deg, #ff7a6a 0%, #dd4a3a 100%);
    color: #ffffff;
    border-color: transparent;
}

.botao-acao-tabela--perigo-suave {
    color: #c44a3d;
    background: #fff4f2;
    border-color: rgba(221, 74, 58, 0.18);
}

.status-tabela {
    display: inline-flex;
    align-items: center;
    min-height: 32px;
    padding: 0 12px;
    border-radius: 999px;
    font-size: 0.84rem;
    font-weight: 700;
}

.status-tabela--ativo {
    background: #e7fbef;
    color: #156543;
}

.status-tabela--inativo {
    background: #eef3f7;
    color: #60788c;
}

.link-tabela {
    color: #1188aa;
    text-decoration: none;
    font-weight: 700;
}

.link-tabela:hover {
    text-decoration: underline;
}

.formulario-moderno {
    display: grid;
    gap: 18px;
}

.grid-campos {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}

.campo {
    display: grid;
    gap: 8px;
}

.campo--largo {
    grid-column: 1 / -1;
}

.campo span {
    font-weight: 700;
    color: #19384b;
}

.campo input,
.campo select,
.campo textarea {
    width: 100%;
    padding: 14px 16px;
    border-radius: 16px;
    border: 1px solid rgba(15, 53, 79, 0.12);
    background: #f8fbfe;
    color: #123145;
    font: inherit;
    transition: border-color 160ms ease, box-shadow 160ms ease, background 160ms ease;
    resize: vertical;
}

.campo input:focus,
.campo select:focus,
.campo textarea:focus {
    outline: none;
    border-color: rgba(24, 181, 218, 0.60);
    box-shadow: 0 0 0 4px rgba(24, 181, 218, 0.12);
    background: #ffffff;
}

.acoes-formulario {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    flex-wrap: wrap;
}

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

.foto-paciente {
    display: grid;
    grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);
    gap: 26px;
    align-items: start;
}

.paciente-cabecalho-formulario {
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr);
    gap: 18px;
    align-items: start;
    padding: 18px;
}

.paciente-cabecalho-formulario__foto,
.paciente-cabecalho-formulario__dados {
    margin: 0;
}

.paciente-cabecalho-formulario__foto {
    padding: 6px 2px 6px 0;
}

.paciente-cabecalho-formulario__dados .painel__topo {
    margin-bottom: 14px;
}

.foto-paciente__coluna {
    display: grid;
    justify-items: center;
    gap: 12px;
}

.foto-paciente__moldura {
    width: min(100%, 210px);
    aspect-ratio: 3 / 4;
    border-radius: 24px;
    overflow: hidden;
    background:
        linear-gradient(180deg, rgba(24, 181, 218, 0.08), rgba(255, 255, 255, 0.96)),
        #f7fbfe;
    border: 1px solid rgba(15, 53, 79, 0.10);
    box-shadow: var(--sombra-card);
}

.foto-paciente__imagem {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
}

.foto-paciente__imagem--oculta {
    display: none;
}

.foto-paciente__placeholder {
    width: 100%;
    height: 100%;
    display: grid;
    place-items: center;
    text-align: center;
    gap: 6px;
    padding: 18px;
    color: #5d7990;
}

.foto-paciente__placeholder strong {
    font-size: 1.15rem;
    color: #153346;
}

.foto-paciente__placeholder span,
.foto-paciente__observacao {
    color: var(--texto-suave);
    line-height: 1.6;
}

.foto-paciente__placeholder--oculto {
    display: none;
}

.foto-paciente__acoes {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
}

.foto-paciente__acoes--icones {
    justify-content: center;
    gap: 10px;
}

.botao-icone {
    width: 44px;
    height: 44px;
    display: inline-grid;
    place-items: center;
    padding: 0;
    border-radius: 14px;
    border: 1px solid rgba(15, 53, 79, 0.12);
    background: #f8fbfe;
    color: #123145;
    cursor: pointer;
    box-shadow: 0 8px 16px rgba(9, 33, 51, 0.06);
    transition: transform 160ms ease, border-color 160ms ease, background 160ms ease;
}

.botao-icone:hover {
    transform: translateY(-1px);
    border-color: rgba(24, 181, 218, 0.32);
    background: #eef8fd;
}

.botao-icone svg {
    width: 19px;
    height: 19px;
    stroke: currentColor;
    stroke-width: 1.9;
    fill: none;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.botao-icone--primario {
    background: linear-gradient(135deg, #18b5da 0%, #0f86a8 100%);
    color: #ffffff;
    border-color: transparent;
}

.botao-icone--alerta {
    color: #b43d3d;
}

.modal-webcam {
    display: grid;
    gap: 18px;
}

.modal-webcam__conteudo {
    display: grid;
    gap: 14px;
}

.modal-webcam__video {
    width: 100%;
    aspect-ratio: 3 / 4;
    object-fit: cover;
    border-radius: 22px;
    background: #0d2234;
    box-shadow: var(--sombra-card);
}

.modal-webcam__mensagem {
    margin: 0;
    color: var(--texto-suave);
    line-height: 1.6;
}

.botao {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    padding: 0 20px;
    border-radius: 14px;
    border: none;
    cursor: pointer;
    background: linear-gradient(135deg, #18b5da 0%, #0f86a8 100%);
    color: #ffffff;
    text-decoration: none;
    font-weight: 700;
    box-shadow: 0 14px 28px rgba(24, 181, 218, 0.20);
    transition: transform 160ms ease, box-shadow 160ms ease, opacity 160ms ease;
}

.botao span {
    color: inherit;
}

.botao:hover {
    transform: translateY(-1px);
    box-shadow: 0 18px 34px rgba(24, 181, 218, 0.24);
}

.botao--secundario {
    background: #ffffff;
    color: #123145;
    border: 1px solid rgba(15, 53, 79, 0.12);
    box-shadow: none;
}

.botao--pequeno {
    min-height: 38px;
    padding: 0 14px;
    border-radius: 12px;
    font-size: 0.92rem;
    box-shadow: none;
}

.botao--perigo {
    background: linear-gradient(135deg, #ff7a6a 0%, #dd4a3a 100%);
    color: #ffffff;
    box-shadow: 0 12px 24px rgba(221, 74, 58, 0.16);
}

.painel__topo--agenda {
    align-items: end;
}

.agenda-semanal__topo {
    display: flex;
    justify-content: space-between;
    gap: 14px;
    flex-wrap: wrap;
    margin-bottom: 16px;
}

.agenda-semanal__navegacao,
.agenda-semanal__acoes {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.agenda-semanal__topo--com-filtros {
    align-items: center;
}

.agenda-semanal__acoes--com-filtros {
    justify-content: flex-end;
}

.grupo-modos {
    display: inline-flex;
    gap: 8px;
    padding: 4px;
    border-radius: 16px;
    background: #f4f8fc;
    border: 1px solid rgba(15, 53, 79, 0.08);
}

.agenda-semanal__navegacao strong {
    font-size: 1.15rem;
    color: #102d41;
}

.agenda-semanal__seta {
    width: 38px;
    height: 38px;
    border-radius: 12px;
    display: inline-grid;
    place-items: center;
    text-decoration: none;
    color: #123145;
    background: #f4f8fc;
    border: 1px solid rgba(15, 53, 79, 0.10);
}

.agenda-semanal {
    border: 1px solid rgba(15, 53, 79, 0.10);
    border-radius: 24px;
    overflow: hidden;
    background: #ffffff;
    --agenda-colunas: 5;
}

.agenda-semanal__cabecalho {
    display: grid;
    grid-template-columns: 76px repeat(var(--agenda-colunas), minmax(180px, 1fr));
    border-bottom: 1px solid rgba(15, 53, 79, 0.10);
    background: #ffffff;
}

.agenda-semanal__coluna-hora {
    border-right: 1px solid rgba(15, 53, 79, 0.10);
    background: #f8fbfe;
}

.agenda-semanal__dia {
    min-height: 78px;
    padding: 14px 14px 10px;
    border-right: 1px solid rgba(15, 53, 79, 0.10);
    display: grid;
    align-content: start;
    gap: 2px;
}

.agenda-semanal__dia:last-child {
    border-right: none;
}

.agenda-semanal__dia strong {
    font-size: 2rem;
    line-height: 1;
    color: #5a56cc;
}

.agenda-semanal__dia span {
    color: #4f6e82;
}

.agenda-semanal__dia--hoje {
    background: linear-gradient(180deg, rgba(90, 86, 204, 0.08), rgba(255, 255, 255, 0.88));
}

.agenda-semanal__corpo {
    display: grid;
    grid-template-columns: 76px minmax(0, 1fr);
    max-height: 980px;
    overflow: auto;
}

.agenda-semanal__horarios {
    background: #ffffff;
    border-right: 1px solid rgba(15, 53, 79, 0.10);
}

.agenda-semanal__horario {
    height: 44px;
    padding: 10px 10px 0;
    color: #698397;
    font-size: 0.84rem;
    border-bottom: 1px dashed rgba(15, 53, 79, 0.08);
}

.agenda-semanal__grade {
    position: relative;
    display: grid;
    grid-template-columns: repeat(var(--agenda-colunas), minmax(180px, 1fr));
    grid-template-rows: repeat(var(--agenda-linhas, 30), 44px);
    background:
        repeating-linear-gradient(
            to bottom,
            rgba(15, 53, 79, 0.08) 0,
            rgba(15, 53, 79, 0.08) 1px,
            transparent 1px,
            transparent 44px
        );
}

.agenda-semanal__grade::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
        linear-gradient(to right, rgba(15, 53, 79, 0.10) 1px, transparent 1px);
    background-size: calc(100% / var(--agenda-colunas)) 100%;
    pointer-events: none;
}

.agenda-semanal__slot {
    display: block;
    padding: 0;
    border: none;
    background: transparent;
    cursor: pointer;
    border-right: 1px solid rgba(15, 53, 79, 0.06);
    border-bottom: 1px dashed rgba(15, 53, 79, 0.05);
    z-index: 1;
}

.agenda-semanal__slot:hover {
    background: rgba(90, 86, 204, 0.08);
}

.agenda-semanal__evento {
    display: block;
    width: calc(100% - 10px);
    height: calc(100% - 2px);
    margin: 1px 5px;
    padding: 8px 10px;
    border-radius: 14px;
    border: none;
    background: linear-gradient(135deg, var(--evento-cor-principal, #5c63d7) 0%, var(--evento-cor-secundaria, #4b55c2) 100%);
    color: var(--evento-cor-texto, #ffffff);
    box-shadow: 0 10px 18px rgba(15, 53, 79, 0.18);
    z-index: 2;
    overflow: hidden;
    text-align: left;
    font: inherit;
    cursor: pointer;
    align-self: stretch;
    box-sizing: border-box;
}

.agenda-semanal__evento--compacto {
    padding: 6px 10px;
}

.agenda-semanal__evento--compacto p,
.agenda-semanal__evento--compacto .agenda-semanal__evento-meta {
    display: none;
}

.agenda-semanal__evento--compacto strong {
    margin-top: 2px;
    font-size: 0.9rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.agenda-semanal__evento--agendado {
    --evento-cor-principal: #5c63d7;
    --evento-cor-secundaria: #4b55c2;
    --evento-cor-texto: #ffffff;
}

.agenda-semanal__evento--confirmado {
    --evento-cor-principal: #26b56c;
    --evento-cor-secundaria: #1c9958;
    --evento-cor-texto: #ffffff;
}

.agenda-semanal__evento--em_atendimento {
    --evento-cor-principal: #f5a34a;
    --evento-cor-secundaria: #df8237;
    --evento-cor-texto: #102d41;
}

.agenda-semanal__evento--finalizado {
    --evento-cor-principal: #3c5a7f;
    --evento-cor-secundaria: #284461;
    --evento-cor-texto: #ffffff;
}

.agenda-semanal__evento--cancelado,
.agenda-semanal__evento--falta {
    --evento-cor-principal: #ef7163;
    --evento-cor-secundaria: #d94c3e;
    --evento-cor-texto: #ffffff;
}

.agenda-semanal__evento-horario {
    font-size: 0.82rem;
    opacity: 0.95;
}

.agenda-semanal__evento strong {
    display: block;
    margin-top: 4px;
    font-size: 0.96rem;
}

.agenda-semanal__evento p {
    margin: 6px 0 0;
    font-size: 0.88rem;
    line-height: 1.35;
    opacity: 0.94;
}

.agenda-semanal__evento-meta {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    margin-top: 10px;
}

.agenda-semanal__evento-meta span {
    display: inline-flex;
    align-items: center;
    min-height: 26px;
    padding: 0 8px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.18);
    font-size: 0.75rem;
}

.agenda-semanal__evento:hover {
    filter: brightness(1.03);
}

.janela-agendamento {
    background: rgba(255, 255, 255, 0.96);
    border: 1px solid rgba(15, 53, 79, 0.10);
    border-radius: 28px;
    box-shadow: var(--sombra-forte);
    overflow: hidden;
}

.janela-agendamento__barra {
    display: flex;
    justify-content: space-between;
    gap: 16px;
    align-items: center;
    padding: 18px 20px;
    border-bottom: 1px solid rgba(15, 53, 79, 0.10);
    background: #f8fbfe;
}

.janela-agendamento__barra strong {
    display: block;
    font-size: 1.25rem;
    color: #102d41;
}

.janela-agendamento__barra span {
    color: var(--texto-suave);
}

.janela-agendamento__acoes {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.janela-agendamento__conteudo {
    display: grid;
    grid-template-columns: minmax(0, 1.55fr) minmax(300px, 0.72fr);
    gap: 14px;
    padding: 16px;
}

.janela-agendamento__formulario,
.janela-agendamento__preview {
    padding: 16px;
    border-radius: 22px;
    border: 1px solid rgba(15, 53, 79, 0.10);
    background: #ffffff;
}

.janela-agendamento__preview-topo {
    display: grid;
    gap: 4px;
    margin-bottom: 14px;
}

.janela-agendamento__preview-topo strong {
    color: #102d41;
}

.janela-agendamento__preview-topo span {
    color: #5a56cc;
    font-weight: 700;
}

.preview-agenda {
    position: relative;
    display: grid;
    grid-template-columns: 70px minmax(0, 1fr);
    grid-template-rows: repeat(var(--preview-linhas, 30), 24px);
    border-radius: 18px;
    overflow: hidden;
    background:
        repeating-linear-gradient(
            to bottom,
            rgba(15, 53, 79, 0.08) 0,
            rgba(15, 53, 79, 0.08) 1px,
            transparent 1px,
            transparent 24px
        );
    border: 1px solid rgba(15, 53, 79, 0.10);
}

.preview-agenda__horario {
    grid-column: 1;
    padding: 4px 8px 0 10px;
    font-size: 0.76rem;
    color: #6a8295;
    border-right: 1px solid rgba(15, 53, 79, 0.08);
    border-bottom: 1px dashed rgba(15, 53, 79, 0.05);
    background: rgba(248, 251, 254, 0.82);
}

.preview-agenda__horario span {
    display: block;
}

.preview-agenda__evento {
    align-self: stretch;
    margin: 3px 8px;
    padding: 10px 12px;
    border-radius: 14px;
    background: linear-gradient(135deg, var(--preview-cor-principal, #5c63d7) 0%, var(--preview-cor-secundaria, #4b55c2) 100%);
    color: var(--preview-cor-texto, #ffffff);
    z-index: 2;
}

.preview-agenda__evento strong {
    display: block;
}

.preview-agenda__evento span {
    display: block;
    margin-top: 6px;
    font-size: 0.86rem;
}

.campo-busca {
    position: relative;
}

.campo-busca__lista {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    right: 0;
    display: none;
    padding: 8px;
    border-radius: 18px;
    border: 1px solid rgba(15, 53, 79, 0.10);
    background: #ffffff;
    box-shadow: 0 18px 36px rgba(9, 33, 51, 0.12);
    z-index: 20;
}

.campo-busca__lista--ativa {
    display: grid;
    gap: 6px;
}

.campo-busca__item {
    width: 100%;
    display: grid;
    gap: 4px;
    padding: 12px 14px;
    text-align: left;
    border: 1px solid transparent;
    border-radius: 14px;
    background: #f8fbfe;
    cursor: pointer;
    color: #123145;
    font: inherit;
}

.campo-busca__item:hover {
    background: #eef7ff;
    border-color: rgba(24, 181, 218, 0.18);
}

.campo-busca__item strong {
    font-size: 0.95rem;
}

.campo-busca__item span {
    font-size: 0.82rem;
    color: var(--texto-suave);
}

.campo-busca__fonte {
    display: none;
}

.campo__titulo-com-acao {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    align-items: center;
}

.campo__link-acao {
    font-size: 0.88rem;
    color: #1188aa;
    text-decoration: none;
    padding: 0;
    border: none;
    background: transparent;
    cursor: pointer;
    font: inherit;
}

.botao--ativo {
    background: linear-gradient(135deg, #18b5da 0%, #1a8fc4 100%);
    color: #ffffff;
    border-color: transparent;
}

.agenda-mensal {
    display: grid;
    gap: 14px;
}

.agenda-mensal__cabecalho,
.agenda-mensal__grade {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 10px;
}

.agenda-mensal__cabecalho span {
    min-height: 42px;
    display: grid;
    place-items: center;
    border-radius: 16px;
    background: #f4f8fc;
    color: #597284;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    font-size: 0.78rem;
}

.agenda-mensal__dia {
    min-height: 190px;
    display: grid;
    align-content: start;
    gap: 12px;
    padding: 14px;
    border-radius: 20px;
    border: 1px solid rgba(15, 53, 79, 0.10);
    background: #ffffff;
}

.agenda-mensal__dia--fora {
    opacity: 0.5;
    background: #f8fbfe;
}

.agenda-mensal__dia--hoje {
    border-color: rgba(24, 181, 218, 0.34);
    box-shadow: 0 12px 24px rgba(24, 181, 218, 0.10);
}

.agenda-mensal__topo-dia {
    display: flex;
    justify-content: space-between;
    gap: 10px;
    align-items: center;
}

.agenda-mensal__topo-dia strong {
    color: #123145;
    font-size: 1.15rem;
}

.agenda-mensal__botao-novo {
    width: 32px;
    height: 32px;
    display: inline-grid;
    place-items: center;
    border: none;
    border-radius: 10px;
    background: #18b5da;
    color: #ffffff;
    cursor: pointer;
    font-size: 1.1rem;
    line-height: 1;
}

.agenda-mensal__resumo {
    display: grid;
    gap: 10px;
}

.agenda-mensal__contador {
    font-size: 0.86rem;
    color: #58758a;
    font-weight: 700;
}

.agenda-mensal__lista {
    display: grid;
    gap: 8px;
    padding: 0;
    margin: 0;
    list-style: none;
}

.agenda-mensal__lista li,
.agenda-mensal__vazio {
    margin: 0;
    padding: 10px 12px;
    border-radius: 14px;
    background: #f8fbfe;
    color: #25465b;
    font-size: 0.86rem;
    line-height: 1.45;
}

.modal-app {
    position: fixed;
    inset: 0;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 24px;
    background: rgba(8, 25, 39, 0.56);
    z-index: 120;
}

.modal-app--aberto {
    display: flex;
}

.modal-app__janela {
    width: min(760px, 100%);
    max-height: calc(100vh - 48px);
    overflow: auto;
}

.modal-app__janela--larga {
    width: min(1320px, 100%);
}

.modal-app__janela--detalhe {
    width: min(560px, 100%);
}

.painel--modal {
    padding: 22px;
}

.painel__topo--modal {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    align-items: center;
}

.popover-evento {
    position: fixed;
    z-index: 60;
    width: min(430px, calc(100vw - 32px));
    display: none;
}

.popover-evento--aberto {
    display: block;
}

.modal-detalhe-evento {
    position: relative;
    padding: 18px 18px 16px;
    border-radius: 22px;
    background: #ffffff;
    box-shadow: 0 22px 48px rgba(9, 33, 51, 0.18);
    overflow: hidden;
}

.modal-detalhe-evento__faixa {
    position: absolute;
    inset: 0 0 auto 0;
    height: 4px;
    background: linear-gradient(90deg, var(--detalhe-cor-principal, #1f79db) 0%, var(--detalhe-cor-secundaria, #18b5da) 100%);
}

.modal-detalhe-evento__topo {
    display: flex;
    justify-content: space-between;
    gap: 16px;
    align-items: flex-start;
    padding-top: 10px;
}

.modal-detalhe-evento__etiqueta {
    display: inline-block;
    margin-bottom: 8px;
    color: #5c6f7f;
    font-weight: 800;
    font-size: 0.95rem;
}

.modal-detalhe-evento__topo h3 {
    margin: 0;
    color: #3d4d5a;
    font-size: 2rem;
    line-height: 1.18;
}

.modal-detalhe-evento__topo p {
    margin: 8px 0 0;
    color: #6f7d88;
    font-size: 1.02rem;
    font-weight: 700;
}

.modal-detalhe-evento__fechar {
    border: none;
    background: transparent;
    color: #657786;
    cursor: pointer;
    font-size: 2rem;
    line-height: 1;
}

.modal-detalhe-evento__bloco {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    padding: 16px 0;
    border-top: 1px solid rgba(15, 53, 79, 0.10);
}

.modal-detalhe-evento__bloco--coluna {
    display: block;
}

.modal-detalhe-evento__icone {
    color: #6f7d88;
    font-size: 1.25rem;
    line-height: 1;
}

.modal-detalhe-evento__bloco p {
    margin: 0;
    color: #5f6e7a;
    font-size: 1rem;
    line-height: 1.55;
}

.modal-detalhe-evento__linha {
    display: flex;
    gap: 12px;
    align-items: flex-start;
}

.modal-detalhe-evento__avatar {
    width: 36px;
    height: 36px;
    display: inline-grid;
    place-items: center;
    border-radius: 999px;
    background: #e8a3cf;
    color: #7b2559;
    font-size: 0.78rem;
    font-weight: 800;
    flex: 0 0 auto;
}

.modal-detalhe-evento__linha strong {
    display: block;
    margin-bottom: 6px;
    color: #4b5b68;
    font-size: 1rem;
}

.modal-detalhe-evento__rodape {
    padding-top: 6px;
}

.modal-detalhe-evento__status {
    display: inline-flex;
    align-items: center;
    min-height: 34px;
    padding: 0 14px;
    border-radius: 999px;
    background: linear-gradient(135deg, var(--detalhe-cor-principal, #edf6fb) 0%, var(--detalhe-cor-secundaria, #dbeef8) 100%);
    color: var(--detalhe-cor-texto, #ffffff);
    font-weight: 700;
}

.campo--sem-espacamento {
    gap: 6px;
}

.paleta-agenda__amostra {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 42px;
    min-width: 180px;
    padding: 0 18px;
    border-radius: 14px;
    background: linear-gradient(135deg, var(--paleta-principal, #5c63d7) 0%, var(--paleta-secundaria, #4b55c2) 100%);
    color: var(--paleta-texto, #ffffff);
    font-weight: 700;
    box-shadow: 0 10px 18px rgba(15, 53, 79, 0.12);
}

.filtro-agenda {
    display: flex;
    gap: 12px;
    align-items: end;
    flex-wrap: wrap;
}

.agenda-grade {
    display: grid;
    border: 1px solid rgba(15, 53, 79, 0.10);
    border-radius: 24px;
    overflow: hidden;
    background:
        linear-gradient(180deg, rgba(24, 181, 218, 0.05), rgba(255, 255, 255, 0.9)),
        #ffffff;
}

.agenda-faixa {
    display: grid;
    grid-template-columns: 88px minmax(0, 1fr);
    min-height: 88px;
    border-bottom: 1px solid rgba(15, 53, 79, 0.08);
}

.agenda-faixa:last-child {
    border-bottom: none;
}

.agenda-faixa__hora {
    padding: 18px 14px;
    background: rgba(244, 249, 252, 0.95);
    border-right: 1px solid rgba(15, 53, 79, 0.08);
    color: #58758a;
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.08em;
}

.agenda-faixa__conteudo {
    display: grid;
    gap: 12px;
    padding: 12px 14px;
    align-content: start;
}

.agenda-faixa__vazio {
    min-height: 62px;
    display: flex;
    align-items: center;
    padding: 0 16px;
    border: 1px dashed rgba(15, 53, 79, 0.10);
    border-radius: 18px;
    color: #8aa0b2;
    background: rgba(248, 251, 254, 0.88);
}

.agenda-evento {
    padding: 16px 18px;
    border-radius: 18px;
    border-left: 6px solid var(--primaria);
    background: #ffffff;
    box-shadow: 0 10px 22px rgba(9, 33, 51, 0.08);
}

.agenda-evento--agendado {
    border-left-color: #20b2d6;
}

.agenda-evento--confirmado {
    border-left-color: #31b96b;
}

.agenda-evento--em_atendimento {
    border-left-color: #ffb347;
}

.agenda-evento--finalizado {
    border-left-color: #355f7d;
}

.agenda-evento--cancelado,
.agenda-evento--falta {
    border-left-color: #dd4a3a;
}

.agenda-evento__cabecalho {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    align-items: center;
}

.agenda-evento__cabecalho strong {
    color: #123145;
}

.agenda-evento__cabecalho span {
    color: #4d7e95;
    font-size: 0.88rem;
    font-weight: 700;
}

.agenda-evento p {
    margin: 8px 0 0;
    color: #1a3a4e;
    font-weight: 700;
}

.agenda-evento__meta {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-top: 12px;
}

.agenda-evento__meta span {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 0 10px;
    border-radius: 999px;
    background: #eff5f9;
    color: #45687d;
    font-size: 0.84rem;
}

.painel-relatorio-preview {
    display: grid;
}

.configuracao-relatorio-personalizada {
    display: grid;
    gap: 22px;
}

.campo--cartao {
    display: grid;
    gap: 10px;
}

.permissao-card--compacta {
    min-height: auto;
    padding: 18px;
}

.is-hidden {
    display: none !important;
}

.painel-relatorio-preview__folha {
    position: relative;
    display: grid;
    gap: 18px;
    min-height: 520px;
    padding: 26px;
    border-radius: 24px;
    overflow: hidden;
    border: 1px solid rgba(15, 53, 79, 0.10);
    background:
        linear-gradient(180deg, rgba(24, 181, 218, 0.04), rgba(255, 255, 255, 0.96)),
        #ffffff;
}

.painel-relatorio-preview__folha--timbrada {
    min-height: 640px;
    padding: 118px 52px 104px;
}

.painel-relatorio-preview__timbrado {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center top;
    opacity: 1;
    pointer-events: none;
}

.painel-relatorio-preview__marca {
    position: absolute;
    inset: 50% auto auto 50%;
    transform: translate(-50%, -50%) rotate(-28deg);
    font-family: "Franklin Gothic Medium", "Arial Narrow", Arial, sans-serif;
    font-size: clamp(2rem, 4vw, 3.4rem);
    line-height: 1.1;
    color: rgba(48, 126, 158, 0.12);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    text-align: center;
    pointer-events: none;
}

.painel-relatorio-preview__topo {
    position: relative;
    z-index: 2;
    display: flex;
    justify-content: space-between;
    gap: 16px;
    align-items: flex-start;
}

.painel-relatorio-preview__folha--timbrada .painel-relatorio-preview__topo {
    margin-top: 8px;
}

.painel-relatorio-preview__topo strong {
    display: block;
    color: #123145;
    font-size: 1.18rem;
}

.painel-relatorio-preview__topo span {
    display: block;
    margin-top: 6px;
    color: #668296;
}

.painel-relatorio-preview__topo img {
    width: 96px;
    max-height: 96px;
    object-fit: contain;
}

.painel-relatorio-preview__corpo {
    position: relative;
    z-index: 2;
    display: grid;
    gap: 14px;
}

.painel-relatorio-preview__corpo h4 {
    margin: 0;
    font-size: 1.3rem;
    color: #123145;
}

.painel-relatorio-preview__corpo p {
    margin: 0;
    color: #587488;
    line-height: 1.7;
}

.painel-relatorio-preview__assinatura {
    position: relative;
    z-index: 2;
    margin-top: auto;
    padding: 16px 18px;
    border-radius: 18px;
    background: rgba(255, 255, 255, 0.82);
    border: 1px solid rgba(15, 53, 79, 0.10);
}

.painel-relatorio-preview__assinatura span,
.painel-relatorio-preview__assinatura small {
    display: block;
    color: #668296;
}

.painel-relatorio-preview__assinatura span {
    margin-bottom: 6px;
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.painel-relatorio-preview__assinatura strong {
    display: block;
    color: #123145;
    font-size: 1rem;
}

.painel-relatorio-preview__assinatura small {
    margin-top: 4px;
}

.painel-relatorio-preview__rodape {
    position: relative;
    z-index: 2;
    margin-top: auto;
    padding-top: 18px;
    border-top: 1px solid rgba(15, 53, 79, 0.10);
    color: #5a778a;
    line-height: 1.65;
}

.painel-relatorio-preview__folha--timbrada .painel-relatorio-preview__rodape {
    margin-bottom: 10px;
    background: rgba(255, 255, 255, 0.74);
    border-radius: 14px;
    padding: 12px 14px 0;
}

.erro {
    color: #b02222;
    min-height: 1rem;
    font-size: 0.92rem;
}

@keyframes subir {
    from {
        opacity: 0;
        transform: translateY(12px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@media (max-width: 1260px) {
    .grade-kpis,
    .grade-conteudo {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .blocos-mini,
    .comparativo {
        grid-template-columns: 1fr;
    }

    .blocos-mini--quatro {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 1080px) {
    .app-shell {
        grid-template-columns: 1fr;
    }

    .login-shell {
        grid-template-columns: 1fr;
    }

    .barra-lateral {
        border-right: none;
        border-bottom: 1px solid var(--borda-escura);
    }

    .grade-pacientes,
    .grade-formulario,
    .hero,
    .grade-agenda,
    .janela-agendamento__conteudo,
    .foto-paciente,
    .prontuario-cabecalho,
    .paciente-cabecalho-formulario {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 820px) {
    .pagina-app {
        padding: 10px;
    }

    .pagina-login {
        padding: 12px;
    }

    .app-shell {
        min-height: calc(100vh - 20px);
        border-radius: 24px;
    }

    .login-shell {
        min-height: calc(100vh - 24px);
        border-radius: 26px;
    }

    .area-principal,
    .barra-lateral {
        padding: 20px;
    }

    .login-hero,
    .login-card {
        padding: 24px;
    }

    .topo-app {
        flex-direction: column;
        align-items: flex-start;
    }

    .grade-kpis,
    .grade-conteudo,
    .grid-campos,
    .orcamento-resumo,
    .filtro-listagem__grade--duplo,
    .filtro-listagem__grade--orcamentos {
        grid-template-columns: 1fr;
    }

    .grade-permissoes,
    .grade-permissoes--duas,
    .odontograma-anamnese__linha {
        grid-template-columns: 1fr;
    }

    .odontograma-anamnese__arcada {
        padding: 18px 14px;
    }

    .odontograma-anamnese__arcada::before,
    .odontograma-anamnese__linha .odontograma-anamnese__dente:nth-child(8),
    .odontograma-anamnese__linha .odontograma-anamnese__dente:nth-child(9) {
        margin: 0;
    }

    .odontograma-anamnese__cabecalho,
    .odontograma-anamnese__rodape,
    .odontograma-anamnese__grupos {
        grid-template-columns: 1fr;
    }

    .acoes-tabela {
        flex-wrap: wrap;
    }

    .agenda-semanal__cabecalho,
    .agenda-semanal__corpo {
        min-width: 980px;
    }

    .agenda-faixa {
        grid-template-columns: 1fr;
    }

    .painel-relatorio-preview__topo {
        flex-direction: column;
    }

    .painel-relatorio-preview__folha--timbrada {
        min-height: 560px;
        padding: 96px 24px 90px;
    }

    .agenda-faixa__hora {
        border-right: none;
        border-bottom: 1px solid rgba(15, 53, 79, 0.08);
    }

    .hero,
    .painel,
    .cartao-kpi {
        padding: 20px;
    }
}
