: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;
}

.alerta-moderno--info {
    background: #eef9fd;
    border-color: rgba(16, 156, 194, 0.2);
    color: #135f78;
}

.alerta-moderno--atencao {
    background: #fff3d4;
    border-color: rgba(232, 163, 41, 0.28);
    color: #8c5e0c;
}

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

.checklist-senha {
    display: grid;
    gap: 6px;
    margin: -6px 0 4px;
    padding: 0;
    list-style: none;
}

.checklist-senha li {
    position: relative;
    padding-left: 26px;
    font-size: 0.86rem;
    font-weight: 600;
    color: #9aa9b4;
    transition: color 160ms ease;
}

.checklist-senha li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 2px;
    width: 16px;
    height: 16px;
    border-radius: 999px;
    border: 2px solid #c7d3da;
    box-sizing: border-box;
    transition: border-color 160ms ease, background 160ms ease;
}

.checklist-senha li.checklist-senha__ok {
    color: #176244;
}

.checklist-senha li.checklist-senha__ok::before {
    border-color: #17b56a;
    background: #17b56a;
}

.checklist-senha li.checklist-senha__ok::after {
    content: "";
    position: absolute;
    left: 5px;
    top: 5px;
    width: 6px;
    height: 3px;
    border-left: 2px solid #ffffff;
    border-bottom: 2px solid #ffffff;
    transform: rotate(-45deg);
}

.link-login-secundario {
    display: block;
    text-align: center;
    margin-top: 2px;
    color: #0f86a8;
    font-weight: 700;
    font-size: 0.9rem;
    text-decoration: none;
}

.link-login-secundario:hover {
    text-decoration: underline;
}

.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);
}

.app-shell--central {
    grid-template-columns: minmax(0, 1fr);
    background:
        radial-gradient(circle at top left, rgba(24, 181, 218, 0.14), transparent 24%),
        radial-gradient(circle at bottom right, rgba(13, 99, 231, 0.10), transparent 28%),
        linear-gradient(180deg, #edf5fb 0%, #f7fbfe 100%);
}

.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;
}

.marca-app--central {
    display: grid;
    gap: 12px;
}

.marca-app__logo-ampla {
    width: min(220px, 100%);
    height: auto;
    display: block;
    filter: drop-shadow(0 14px 26px rgba(2, 18, 31, 0.20));
}

.marca-app--central span {
    color: rgba(234, 247, 255, 0.72);
    font-size: 0.92rem;
    line-height: 1.45;
}

.barra-lateral__topo-mobile {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}

.menu-mobile-alternador {
    display: none;
    flex-shrink: 0;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 12px;
    border: 1px solid rgba(84, 217, 255, 0.22);
    background: rgba(255, 255, 255, 0.06);
    color: #eaf7ff;
    cursor: pointer;
}

.menu-mobile-alternador svg {
    width: 22px;
    height: 22px;
    stroke: currentColor;
    stroke-width: 1.9;
    fill: none;
    stroke-linecap: round;
}

.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: none;
    gap: 6px;
    padding: 0 8px 10px 8px;
}

.grupo-menu[open] .submenu {
    display: grid;
}

.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;
}

.submenu-aninhado {
    display: grid;
    gap: 5px;
    margin-left: 10px;
    padding: 8px;
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.025);
    border: 1px solid transparent;
}

.submenu-aninhado--ativo {
    border-color: rgba(84, 217, 255, 0.14);
    background: rgba(24, 181, 218, 0.08);
}

.submenu-aninhado__titulo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 2px 8px 5px;
    color: rgba(234, 247, 255, 0.92);
    font-size: 0.94rem;
    font-weight: 800;
    cursor: pointer;
    list-style: none;
}

.submenu-aninhado__titulo::-webkit-details-marker {
    display: none;
}

.submenu-aninhado__titulo::after {
    content: "+";
    color: rgba(234, 247, 255, 0.60);
    font-size: 0.9rem;
    font-weight: 700;
}

.submenu-aninhado[open] .submenu-aninhado__titulo::after {
    content: "-";
    color: #ffffff;
}

.submenu-aninhado__itens {
    display: none;
    gap: 5px;
    margin-top: 3px;
}

.submenu-aninhado[open] .submenu-aninhado__itens {
    display: grid;
}

.submenu__item--nivel-dois {
    min-height: 38px;
    margin-left: 0;
    padding-left: 18px;
    font-size: 0.9rem;
    justify-content: flex-start;
}

.submenu__item--nivel-dois::before {
    content: "•";
    margin-right: 8px;
    color: rgba(84, 217, 255, 0.72);
}

.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;
}

.area-principal--central {
    padding: 32px;
    background: transparent;
}

.grade-central {
    display: grid;
    grid-template-columns: minmax(360px, 0.92fr) minmax(0, 1.25fr);
    gap: 20px;
    margin-top: 22px;
    align-items: start;
}

.painel--central-formulario {
    position: sticky;
    top: 24px;
}

.painel--central-lista {
    min-height: 760px;
}

.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__contexto {
    display: block;
    margin-bottom: 6px;
    color: #4c8aa2;
    font-size: 0.82rem;
    font-weight: 800;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}

.topo-app p {
    margin: 8px 0 0;
    color: var(--texto-suave);
}

.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--duas {
    grid-template-columns: repeat(2, 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;
}

.grade-kpis--central {
    gap: 20px;
}

.cartao-kpi--central {
    position: relative;
    padding: 24px;
    border-radius: 26px;
    overflow: hidden;
    background:
        radial-gradient(circle at top right, rgba(24, 181, 218, 0.12), transparent 34%),
        linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(246, 250, 253, 0.98));
    border: 1px solid rgba(24, 181, 218, 0.10);
    box-shadow: 0 18px 38px rgba(9, 33, 51, 0.09);
}

.cartao-kpi--central::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: 5px;
    border-radius: 26px 0 0 26px;
    background: linear-gradient(180deg, rgba(24, 181, 218, 0.92), rgba(23, 116, 154, 0.72));
}

.cartao-kpi__topo {
    display: flex;
    justify-content: space-between;
    gap: 16px;
    align-items: flex-start;
}

.cartao-kpi__icone {
    width: 52px;
    height: 52px;
    display: inline-grid;
    place-items: center;
    border-radius: 18px;
    background: linear-gradient(135deg, rgba(24, 181, 218, 0.14), rgba(15, 134, 168, 0.08));
    border: 1px solid rgba(24, 181, 218, 0.14);
    color: #137ea1;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72);
}

.cartao-kpi__icone svg {
    width: 24px;
    height: 24px;
    stroke: currentColor;
    stroke-width: 1.9;
    fill: none;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.cartao-kpi__rodape {
    margin-top: 18px;
    padding-top: 14px;
    border-top: 1px solid rgba(15, 53, 79, 0.08);
    color: #597488;
    font-size: 0.86rem;
    font-weight: 700;
    letter-spacing: 0.02em;
}

.cartao-kpi--clientes::before {
    background: linear-gradient(180deg, #18b5da 0%, #1285a9 100%);
}

.cartao-kpi--ativos::before {
    background: linear-gradient(180deg, #1cc98c 0%, #149766 100%);
}

.cartao-kpi--financeiro::before {
    background: linear-gradient(180deg, #ffb547 0%, #e4871b 100%);
}

.cartao-kpi--travados::before {
    background: linear-gradient(180deg, #ff7a6a 0%, #dd4a3a 100%);
}

.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;
    margin-bottom: 16px;
}

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

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

.filtro-listagem__grade--datas {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: end;
}

.filtro-listagem__grade--datas-triplo {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    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--central-listagem {
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(247, 251, 254, 0.98));
    border: 1px solid rgba(24, 181, 218, 0.10);
    box-shadow: 0 22px 42px rgba(9, 33, 51, 0.09);
}

.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;
}

.painel__topo--central {
    margin-bottom: 22px;
}

.painel__descricao {
    margin: 10px 0 0;
    color: #678093;
    line-height: 1.7;
}

.filtro-listagem--central {
    padding: 18px;
    margin-bottom: 22px;
    border-radius: 22px;
    background:
        linear-gradient(180deg, rgba(24, 181, 218, 0.05), rgba(255, 255, 255, 0.96));
    border: 1px solid rgba(24, 181, 218, 0.10);
}

.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;
}

.campo__obrigatorio {
    color: #b02222;
    text-decoration: none;
    cursor: help;
    margin-left: 2px;
    font-weight: 700;
}

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

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

.permissoes-por-modulo > .campo__ajuda {
    display: block;
    margin: -2px 0 14px;
}

.permissoes-abas {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    padding: 6px;
    border: 1px solid rgba(15, 53, 79, 0.10);
    border-radius: 16px;
    background: #f1f7fb;
    scrollbar-width: thin;
}

.permissoes-aba {
    flex: 0 0 auto;
    padding: 11px 18px;
    border: 0;
    border-radius: 12px;
    background: transparent;
    color: #547083;
    font: inherit;
    font-weight: 800;
    cursor: pointer;
}

.permissoes-aba:hover {
    color: #123145;
    background: rgba(255, 255, 255, 0.7);
}

.permissoes-aba--ativa {
    color: #ffffff;
    background: linear-gradient(135deg, #11b8d4, #118eae);
    box-shadow: 0 8px 18px rgba(17, 142, 174, 0.22);
}

.permissoes-painel {
    display: none;
    margin-top: 14px;
    padding: 20px;
    border: 1px solid rgba(15, 53, 79, 0.10);
    border-radius: 20px;
    background: #fbfdff;
}

.permissoes-painel--ativo {
    display: block;
}

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

.permissoes-painel__topo > div {
    display: grid;
    gap: 4px;
}

.permissoes-painel__topo strong {
    color: #123145;
    font-size: 1.08rem;
}

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

.botao-selecao-modulo {
    flex: 0 0 auto;
    padding: 9px 13px;
    border: 1px solid rgba(17, 142, 174, 0.24);
    border-radius: 10px;
    background: #edf9fc;
    color: #087f9c;
    font: inherit;
    font-size: 0.84rem;
    font-weight: 800;
    cursor: pointer;
}

.botao-selecao-modulo:hover {
    background: #dff4f9;
}

.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;
}

.permissao-pill--vazia {
    background: #f1f3f5;
    color: #71808b;
}

.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);
}

.odontograma-plano {
    display: grid;
    gap: 10px;
    margin: 4px 0 6px;
}

.odontograma-plano__arco {
    display: flex;
    justify-content: center;
    gap: 6px;
    flex-wrap: wrap;
    padding: 10px 12px;
    border-radius: 20px;
    background: rgba(238, 241, 246, 0.5);
}

.odontograma-plano__dente {
    display: grid;
    justify-items: center;
    gap: 6px;
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    transition: transform 150ms ease;
    font-family: inherit;
}

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

.odontograma-plano__dente i {
    position: relative;
    display: block;
    width: 30px;
    height: 44px;
    background: linear-gradient(180deg, #eef1f6 0%, #e3e7ee 100%);
    border: 1px solid #d7deea;
}

.odontograma-plano__dente span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 26px;
    min-height: 18px;
    padding: 0 5px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.9);
    border: 1px solid rgba(15, 53, 79, 0.08);
    color: #7c8aa0;
    font-weight: 700;
    font-size: 0.7rem;
}

.odontograma-plano__dente--molar i {
    width: 34px;
    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: 10px 10px 16px 16px;
}

.odontograma-plano__dente--premolar i {
    width: 28px;
    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: 10px 10px 16px 16px;
}

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

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

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

.odontograma-plano__dente--sem-item i {
    opacity: 0.45;
}

.odontograma-plano__dente--sem-agendamento i {
    background: linear-gradient(180deg, #fff3d4 0%, #f4d99f 100%);
    border-color: #e8a329;
}

.odontograma-plano__dente--agendado i {
    background: linear-gradient(180deg, #e3f6fb 0%, #b9e6f2 100%);
    border-color: #18b5da;
}

.odontograma-plano__dente--atrasado i {
    background: linear-gradient(180deg, #ffe1dc 0%, #f4b7b0 100%);
    border-color: #e05246;
}

.odontograma-plano__dente--realizado i {
    background: linear-gradient(180deg, #dff8e9 0%, #aee6c7 100%);
    border-color: #32ae69;
}

.odontograma-plano__dente--sem-agendamento span,
.odontograma-plano__dente--agendado span,
.odontograma-plano__dente--atrasado span,
.odontograma-plano__dente--realizado span {
    color: #123145;
}

.odontograma-plano__legenda {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 14px;
    font-size: 0.78rem;
    color: var(--texto-suave);
}

.odontograma-plano__legenda span {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.odontograma-plano__legenda i {
    display: inline-block;
    width: 12px;
    height: 12px;
    border-radius: 4px;
    border: 1px solid transparent;
}

.odontograma-plano__legenda i.odontograma-plano__dente--sem-item { background: #e3e7ee; opacity: 1; }
.odontograma-plano__legenda i.odontograma-plano__dente--sem-agendamento { background: #f4d99f; border-color: #e8a329; }
.odontograma-plano__legenda i.odontograma-plano__dente--agendado { background: #b9e6f2; border-color: #18b5da; }
.odontograma-plano__legenda i.odontograma-plano__dente--atrasado { background: #f4b7b0; border-color: #e05246; }
.odontograma-plano__legenda i.odontograma-plano__dente--realizado { background: #aee6c7; border-color: #32ae69; }

.linha-destacada {
    animation: destaque-linha 1.6s ease;
}

@keyframes destaque-linha {
    0% { background-color: rgba(24, 181, 218, 0.28); }
    100% { background-color: transparent; }
}

.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 20px 14px 0;
    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 thead th:last-child {
    padding-right: 0;
}

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

.tabela--moderna tbody td:last-child {
    padding-right: 0;
}

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

.tabela--moderna tbody tr:hover td {
    background: rgba(17, 136, 170, 0.045);
}

.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;
}

.campo--acoes .acoes-item-orcamento {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.orcamento-item-linha--em-edicao {
    background: rgba(24, 181, 218, 0.08);
}

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

.orcamento-item__valor-editavel {
    width: 110px;
    padding: 8px 10px;
    border-radius: 10px;
    border: 1px solid rgba(245, 163, 74, 0.55);
    background: #fff8ee;
    font: inherit;
    color: #123145;
}

.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--info {
    background: linear-gradient(135deg, #22c1c3 0%, #1a8f91 100%);
    color: #ffffff;
    border-color: transparent;
}

.botao-acao-tabela--sucesso {
    background: linear-gradient(135deg, #3ed17e 0%, #269a5b 100%);
    color: #ffffff;
    border-color: transparent;
}

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

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

.botao-acao-tabela--texto {
    width: auto;
    min-width: 74px;
    height: 34px;
    padding: 0 12px;
    font-size: 0.82rem;
    font-weight: 700;
}

.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;
}

.status-tabela--pendente {
    background: #fff4d9;
    color: #8a5a00;
}

.status-tabela--alerta {
    background: #fff1ee;
    color: #a33d33;
}

/* Destaques financeiros compartilhados pelo paciente e pelas contas a receber. */
.status-financeiro {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 0 11px;
    border-radius: 999px;
    font-size: 0.8rem;
    font-weight: 800;
    white-space: nowrap;
}

.status-financeiro--grande {
    min-height: 38px;
    padding: 0 15px;
    font-size: 0.86rem;
}

.status-financeiro--pago {
    color: #14633f;
    background: #dff8e9;
}

.status-financeiro--atrasado {
    color: #a33d33;
    background: #ffebe8;
}

.status-financeiro--parcial {
    color: #6632a4;
    background: #f0e7ff;
}

.status-financeiro--pendente {
    color: #875b0f;
    background: #fff3d4;
}

.status-financeiro--cancelado,
.status-financeiro--neutro {
    color: #60788c;
    background: #eef3f7;
}

.tabela--moderna tbody tr[class*="linha-financeira--"] td:first-child {
    padding-left: 14px;
}

.tabela--moderna tbody tr.linha-financeira--pago td {
    background: rgba(56, 190, 112, 0.075);
}

.tabela--moderna tbody tr.linha-financeira--pago td:first-child {
    box-shadow: inset 4px 0 #32ae69;
}

.tabela--moderna tbody tr.linha-financeira--atrasado td {
    background: rgba(230, 79, 67, 0.075);
}

.tabela--moderna tbody tr.linha-financeira--atrasado td:first-child {
    box-shadow: inset 4px 0 #e05246;
}

.tabela--moderna tbody tr.linha-financeira--parcial td {
    background: rgba(124, 69, 190, 0.075);
}

.tabela--moderna tbody tr.linha-financeira--parcial td:first-child {
    box-shadow: inset 4px 0 #7b45bd;
}

.tabela--moderna tbody tr.linha-financeira--pendente td {
    background: rgba(236, 169, 54, 0.055);
}

.tabela--moderna tbody tr.linha-financeira--pendente td:first-child {
    box-shadow: inset 4px 0 #e8a329;
}

.tabela--moderna tbody tr.linha-financeira--cancelado td {
    background: rgba(96, 120, 140, 0.045);
}

.topo-app--financeiro-paciente {
    align-items: flex-end;
}

.financeiro-paciente__sobrelinha {
    display: block;
    margin-bottom: 7px;
    color: var(--primaria-escura);
    font-size: 0.78rem;
    font-weight: 800;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.financeiro-paciente__identificacao {
    display: flex;
    gap: 9px;
    margin: 8px 0 0;
    color: var(--texto-suave);
}

.financeiro-paciente__acoes-topo {
    align-items: center;
}

.financeiro-paciente__kpis {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
    margin: 22px 0;
}

.financeiro-kpi {
    display: flex;
    align-items: center;
    gap: 14px;
    min-height: 112px;
    padding: 19px;
    border: 1px solid var(--borda);
    border-radius: 20px;
    background: #fff;
    box-shadow: var(--sombra-card);
}

.financeiro-kpi__icone,
.financeiro-pagamento__icone {
    display: inline-grid;
    flex: 0 0 auto;
    place-items: center;
    width: 44px;
    height: 44px;
    border-radius: 14px;
}

.financeiro-kpi svg,
.financeiro-pagamento__icone svg,
.aba-financeiro svg {
    width: 21px;
    height: 21px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.9;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.financeiro-kpi div {
    display: grid;
    min-width: 0;
    gap: 5px;
}

.financeiro-kpi div span {
    color: var(--texto-suave);
    font-size: 0.8rem;
    font-weight: 700;
}

.financeiro-kpi div strong {
    color: #153247;
    font-size: clamp(1.05rem, 1.5vw, 1.38rem);
}

.financeiro-kpi--pago { border-top: 4px solid #32ae69; }
.financeiro-kpi--pago .financeiro-kpi__icone { color: #177448; background: #dff8e9; }
.financeiro-kpi--atrasado { border-top: 4px solid #e05246; }
.financeiro-kpi--atrasado .financeiro-kpi__icone { color: #b13c33; background: #ffebe8; }
.financeiro-kpi--parcial { border-top: 4px solid #7b45bd; }
.financeiro-kpi--parcial .financeiro-kpi__icone { color: #6937a5; background: #f0e7ff; }
.financeiro-kpi--pendente { border-top: 4px solid #e8a329; }
.financeiro-kpi--pendente .financeiro-kpi__icone { color: #8c5e0c; background: #fff3d4; }

.abas-financeiro {
    display: inline-flex;
    gap: 6px;
    margin-bottom: 18px;
    padding: 6px;
    border: 1px solid var(--borda);
    border-radius: 16px;
    background: rgba(255, 255, 255, 0.76);
}

.aba-financeiro {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 42px;
    padding: 0 17px;
    border: 0;
    border-radius: 11px;
    color: var(--texto-suave);
    background: transparent;
    font: inherit;
    font-weight: 800;
    cursor: pointer;
}

.aba-financeiro.is-active {
    color: #fff;
    background: linear-gradient(135deg, var(--primaria), var(--primaria-escura));
    box-shadow: 0 8px 20px rgba(13, 111, 140, 0.18);
}

[data-painel-financeiro][hidden] {
    display: none !important;
}

.grade-financeiro-paciente {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
}

.financeiro-paciente__bloco {
    min-width: 0;
}

.financeiro-paciente__bloco-topo {
    align-items: center;
    gap: 16px;
}

.financeiro-paciente__bloco-topo h3,
.financeiro-paciente__bloco-topo p {
    margin: 0;
}

.financeiro-paciente__bloco-topo p {
    margin-top: 5px;
    color: var(--texto-suave);
    font-size: 0.88rem;
}

.financeiro-paciente__orcamentos,
.financeiro-paciente__historico {
    margin-top: 18px;
}

.financeiro-vazio {
    display: grid;
    justify-items: center;
    gap: 6px;
    padding: 38px 20px;
    border: 1px dashed rgba(15, 53, 79, 0.16);
    border-radius: 16px;
    color: var(--texto-suave);
    text-align: center;
}

.financeiro-vazio strong { color: var(--texto); }

.financeiro-lancamentos,
.financeiro-pagamentos {
    display: grid;
    gap: 10px;
}

.financeiro-lancamento {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    align-items: center;
    gap: 16px;
    padding: 14px 15px 14px 18px;
    border: 1px solid var(--borda);
    border-left: 4px solid #e8a329;
    border-radius: 15px;
    background: #fff;
}

.financeiro-lancamento--atrasado { border-left-color: #e05246; background: #fff9f8; }
.financeiro-lancamento--parcial { border-left-color: #7b45bd; background: #fcfaff; }
.financeiro-lancamento--pago { border-left-color: #32ae69; background: #f9fffb; }

.financeiro-lancamento__principal,
.financeiro-lancamento__vencimento {
    display: grid;
    gap: 5px;
}

.financeiro-lancamento__principal span,
.financeiro-lancamento__vencimento > span:first-child,
.financeiro-pagamento div span {
    color: var(--texto-suave);
    font-size: 0.8rem;
}

.financeiro-lancamento__valor { white-space: nowrap; }

.financeiro-pagamento {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto auto;
    align-items: center;
    gap: 12px;
    padding: 13px;
    border: 1px solid rgba(48, 173, 104, 0.15);
    border-radius: 15px;
    background: #f9fffb;
}

.financeiro-pagamento__icone { color: #177448; background: #dff8e9; }
.financeiro-pagamento div { display: grid; gap: 4px; }

.linha-tempo-financeira {
    margin: 4px 0 0;
    padding: 0;
    list-style: none;
}

.linha-tempo-financeira__item {
    position: relative;
    display: grid;
    grid-template-columns: 150px minmax(0, 1fr) auto auto;
    align-items: center;
    gap: 18px;
    min-height: 76px;
    margin-left: 8px;
    padding: 13px 0 13px 30px;
    border-left: 2px solid #d8e3eb;
}

.linha-tempo-financeira__marcador {
    position: absolute;
    left: -8px;
    top: 30px;
    width: 14px;
    height: 14px;
    border: 3px solid #fff;
    border-radius: 50%;
    background: #7c91a1;
    box-shadow: 0 0 0 2px #d8e3eb;
}

.linha-tempo-financeira__item--pago .linha-tempo-financeira__marcador { background: #32ae69; box-shadow: 0 0 0 2px #aee6c7; }
.linha-tempo-financeira__item--atrasado .linha-tempo-financeira__marcador { background: #e05246; box-shadow: 0 0 0 2px #f4b7b0; }
.linha-tempo-financeira__item--parcial .linha-tempo-financeira__marcador { background: #7b45bd; box-shadow: 0 0 0 2px #cfb9e9; }
.linha-tempo-financeira__item--pendente .linha-tempo-financeira__marcador { background: #e8a329; box-shadow: 0 0 0 2px #f4d99f; }

.linha-tempo-financeira__item time {
    color: var(--texto-suave);
    font-size: 0.8rem;
    font-weight: 700;
}

.linha-tempo-financeira__conteudo { display: grid; gap: 5px; }
.linha-tempo-financeira__conteudo span { color: var(--texto-suave); font-size: 0.88rem; }
.linha-tempo-financeira__valor { white-space: nowrap; }

.stepper-situacao {
    display: flex;
    align-items: flex-start;
    margin: 4px 0 20px;
}

.stepper-situacao__passo {
    display: flex;
    flex-direction: column;
    align-items: center;
    flex: 1;
    position: relative;
}

.stepper-situacao__linha {
    position: absolute;
    top: 16px;
    left: -50%;
    width: 100%;
    height: 2px;
    background: #d7deea;
    z-index: 0;
}

.stepper-situacao__passo:first-child .stepper-situacao__linha {
    display: none;
}

.stepper-situacao__bolha {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #eef1f6;
    color: #7c8aa0;
    font-weight: 700;
    font-size: 0.85rem;
    border: 2px solid #d7deea;
    position: relative;
    z-index: 1;
}

.stepper-situacao__passo--concluido .stepper-situacao__bolha {
    background: #32ae69;
    border-color: #32ae69;
    color: #fff;
}

.stepper-situacao__passo--concluido .stepper-situacao__linha {
    background: #32ae69;
}

.stepper-situacao__passo--ativo .stepper-situacao__bolha {
    background: #18b5da;
    border-color: #18b5da;
    color: #fff;
    box-shadow: 0 0 0 4px rgba(24, 181, 218, 0.18);
}

.stepper-situacao__passo--ativo .stepper-situacao__linha {
    background: #18b5da;
}

.stepper-situacao__rotulo {
    margin-top: 8px;
    font-size: 0.8rem;
    color: var(--texto-suave);
    text-align: center;
}

.stepper-situacao__passo--concluido .stepper-situacao__rotulo,
.stepper-situacao__passo--ativo .stepper-situacao__rotulo {
    color: #123145;
    font-weight: 600;
}

@media (max-width: 720px) {
    .stepper-situacao__rotulo { font-size: 0.72rem; }
}

@media (max-width: 1180px) {
    .financeiro-paciente__kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .grade-financeiro-paciente { grid-template-columns: 1fr; }
}

@media (max-width: 720px) {
    .topo-app--financeiro-paciente { align-items: stretch; }
    .financeiro-paciente__acoes-topo { align-items: stretch; }
    .financeiro-paciente__kpis { grid-template-columns: 1fr; }
    .financeiro-lancamento { grid-template-columns: 1fr; }
    .financeiro-pagamento { grid-template-columns: auto minmax(0, 1fr) auto; }
    .financeiro-pagamento > .botao-acao-tabela { grid-column: 2 / -1; }
    .linha-tempo-financeira__item { grid-template-columns: 1fr auto; gap: 8px 12px; }
    .linha-tempo-financeira__item time { grid-column: 1 / -1; }
}

.subtitulo-pagina {
    margin: 7px 0 0;
    color: var(--texto-suave);
    line-height: 1.45;
}

.cartao-kpi--perigo {
    border-top: 4px solid #e05246;
    background: linear-gradient(180deg, #fff 0%, #fff8f7 100%);
}

.cartao-kpi--sucesso {
    border-top: 4px solid #32ae69;
    background: linear-gradient(180deg, #fff 0%, #f6fff9 100%);
}

.texto-limitado {
    max-width: 420px;
    overflow: hidden;
    color: var(--texto-suave);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.texto-perigo { color: #b33e34 !important; font-weight: 800; }
.texto-sucesso { color: #177448 !important; font-weight: 800; }

.tabela-guia-itens {
    min-width: 1120px;
}

.tabela-guia-itens select,
.tabela-guia-itens input {
    width: 100%;
    min-width: 92px;
    padding: 10px 11px;
    border: 1px solid rgba(15, 53, 79, 0.14);
    border-radius: 11px;
    color: var(--texto);
    background: #f8fbfd;
    font: inherit;
}

.tabela-guia-itens td:first-child select { min-width: 245px; }
.tabela-guia-itens td { padding-top: 12px; padding-bottom: 12px; }

.convenio-guia-totais {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    flex-wrap: wrap;
    margin-top: 18px;
}

.convenio-guia-totais span {
    display: grid;
    gap: 4px;
    min-width: 165px;
    padding: 13px 16px;
    border: 1px solid var(--borda);
    border-radius: 14px;
    color: var(--texto-suave);
    background: #f8fbfd;
    font-size: 0.79rem;
}

.convenio-guia-totais strong {
    color: var(--texto);
    font-size: 1.02rem;
}

.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;
    align-content: start;
    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;
}

.central-status {
    display: grid;
    gap: 8px;
    justify-items: start;
}

.acoes-tabela--central {
    justify-content: flex-end;
    flex-wrap: nowrap;
    gap: 8px;
}

.tabela__acoes--central {
    width: 110px;
}

.menu-acoes-central {
    position: relative;
}

.menu-acoes-central__lista {
    display: none;
    position: fixed;
    z-index: 1000;
    min-width: 240px;
    padding: 8px;
    background: #ffffff;
    border: 1px solid rgba(15, 53, 79, 0.10);
    border-radius: 16px;
    box-shadow: 0 18px 40px rgba(9, 33, 51, 0.16);
}

.menu-acoes-central__lista form {
    margin: 0;
}

.menu-acoes-central__item {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 12px;
    border: none;
    border-radius: 10px;
    background: transparent;
    color: #163345;
    font-size: 0.88rem;
    font-weight: 600;
    text-align: left;
    cursor: pointer;
    transition: background 140ms ease, color 140ms ease;
}

.menu-acoes-central__item:hover {
    background: #eef8fd;
}

.menu-acoes-central__item svg {
    flex: none;
    width: 17px;
    height: 17px;
    stroke: currentColor;
    stroke-width: 1.9;
    fill: none;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.menu-acoes-central__item--positivo:hover {
    background: #e7fbef;
    color: #156543;
}

.menu-acoes-central__item--alerta:hover {
    background: #fff6e6;
    color: #a8650f;
}

.menu-acoes-central__item--perigo {
    color: #c44a3d;
}

.menu-acoes-central__item--perigo:hover {
    background: #fff4f2;
    color: #a8332a;
}

.menu-acoes-central__separador {
    height: 1px;
    margin: 6px 4px;
    background: rgba(15, 53, 79, 0.10);
}

.linha-central--paga td {
    background: rgba(23, 140, 84, 0.05);
}

.linha-central--devendo td {
    background: rgba(221, 74, 58, 0.07);
}

.linha-central--pendente td {
    background: rgba(255, 191, 71, 0.07);
}

.linha-central--paga td:first-child,
.linha-central--devendo td:first-child,
.linha-central--pendente td:first-child {
    padding-left: 14px;
    border-top-left-radius: 16px;
    border-bottom-left-radius: 16px;
}

.linha-central--paga td:last-child,
.linha-central--devendo td:last-child,
.linha-central--pendente td:last-child {
    padding-right: 14px;
    border-top-right-radius: 16px;
    border-bottom-right-radius: 16px;
}

.painel-scroll-listagem--central {
    max-height: 760px;
}

.central-resumo-rapido {
    display: grid;
    gap: 14px;
}

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

.central-resumo-rapido__item span {
    display: block;
    color: #597386;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.central-resumo-rapido__item strong {
    display: block;
    margin-top: 8px;
    color: #123145;
    line-height: 1.5;
}

.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;
    gap: 8px;
    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 svg {
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    stroke: currentColor;
    stroke-width: 1.9;
    fill: none;
    stroke-linecap: round;
    stroke-linejoin: round;
}

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

.botao--secundario {
    background: #e8f7fb;
    color: #0f6a86;
    border: 1px solid rgba(15, 134, 168, 0.18);
    box-shadow: none;
}

.botao--secundario:hover {
    background: #d8f0f7;
}

.botao--aviso {
    background: linear-gradient(135deg, #ffb74a 0%, #e8922a 100%);
    color: #ffffff;
    box-shadow: 0 14px 28px rgba(232, 146, 42, 0.22);
}

.botao--sucesso {
    background: linear-gradient(135deg, #3ed17e 0%, #269a5b 100%);
    color: #ffffff;
    box-shadow: 0 14px 28px rgba(38, 154, 91, 0.22);
}

.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--combobox::after {
    content: "";
    position: absolute;
    top: 50%;
    right: 18px;
    width: 0;
    height: 0;
    border-left: 5px solid transparent;
    border-right: 5px solid transparent;
    border-top: 7px solid #17384e;
    transform: translateY(-35%);
    pointer-events: none;
}

.campo-busca--combobox > input {
    padding-right: 48px;
}

/* Em layouts com vários paineis empilhados em grid (ex.: formulário + tabela na mesma tela),
   o painel que contém um combo digitável aberto precisa ficar acima dos paineis seguintes,
   senão o dropdown de sugestões renderiza atrás do próximo painel. */
.pilha-paineis > .painel:has(.campo-busca__lista--ativa) {
    position: relative;
    z-index: 5;
}

.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__lista--tuss {
    max-height: 300px;
    overflow-y: auto;
}

.campo-busca__lista--rolagem {
    max-height: 320px;
    overflow-y: auto;
}

.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--ativo {
    background: #eef7ff;
    border-color: rgba(24, 181, 218, 0.32);
}

.campo-busca__item--tuss {
    grid-template-columns: 92px minmax(0, 1fr);
    align-items: center;
    gap: 12px;
}

.campo-busca__item--tuss strong {
    color: #0d7898;
    letter-spacing: 0.02em;
}

.campo-busca__item--tuss span {
    font-size: 0.9rem;
    color: #29485c;
}

.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;
}

.integracao-tiss-portal {
    margin-top: 18px;
    padding: 18px 20px;
    border: 1px solid rgba(24, 181, 218, 0.2);
    border-radius: 16px;
    background: #f1fbfe;
    color: #17384e;
}

.integracao-tiss-portal p {
    margin: 6px 0 0;
    color: var(--texto-suave);
}

.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);
        gap: 16px;
    }

    .menu-mobile-alternador {
        display: inline-flex;
    }

    .menu-lateral,
    .barra-lateral__rodape {
        display: none;
    }

    .barra-lateral--menu-aberto .menu-lateral,
    .barra-lateral--menu-aberto .barra-lateral__rodape {
        display: grid;
    }

    .grade-pacientes,
    .grade-formulario,
    .grade-central,
    .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--triplo,
    .filtro-listagem__grade--duplo,
    .filtro-listagem__grade--orcamentos,
    .filtro-listagem__grade--datas,
    .filtro-listagem__grade--datas-triplo {
        grid-template-columns: 1fr;
    }

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

    .permissoes-painel {
        padding: 16px;
    }

    .permissoes-painel__topo {
        align-items: flex-start;
        flex-direction: column;
    }

    .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;
    }
}
input[type="text"]:not([readonly]):not([disabled]):not([data-caixa-alta="ignorar"]),
input:not([type]):not([readonly]):not([disabled]):not([data-caixa-alta="ignorar"]),
input[type="search"]:not([readonly]):not([disabled]):not([data-caixa-alta="ignorar"]),
input[type="tel"]:not([readonly]):not([disabled]):not([data-caixa-alta="ignorar"]),
textarea:not([readonly]):not([disabled]):not([data-caixa-alta="ignorar"]) {
    text-transform: uppercase;
}

.portal-orcamento__acoes {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
    margin-top: 16px;
}

.portal-orcamento__observacoes {
    margin: 18px 0;
    padding: 16px 18px;
    border: 1px solid #cfe4ed;
    border-radius: 14px;
    background: #f4fbfe;
    color: #16334a;
}

.portal-orcamento__observacoes strong {
    display: block;
    margin-bottom: 8px;
}

.portal-orcamento__observacoes p {
    margin: 0;
    white-space: pre-line;
}

.portal-orcamento__recusa {
    margin-top: 20px;
    padding: 20px;
    border: 1px solid rgba(201, 67, 67, 0.22);
    border-radius: 18px;
    background: rgba(255, 244, 244, 0.72);
}

.portal-orcamento__recusa fieldset {
    margin: 0;
    padding: 0;
    border: 0;
}

.portal-orcamento__recusa legend {
    color: var(--texto);
    font-size: 1rem;
    font-weight: 800;
}

.portal-orcamento__motivos {
    display: grid;
    gap: 10px;
    margin-top: 16px;
}

.portal-orcamento__motivo {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 12px 14px;
    border: 1px solid var(--borda);
    border-radius: 14px;
    background: var(--fundo-cartao);
    cursor: pointer;
}

.portal-orcamento__motivo input {
    margin-top: 3px;
}

.portal-orcamento__outros {
    margin-top: 16px;
}

.orcamento-recusado p span:first-child {
    font-weight: 700;
}

.baixa-composicao {
    display: grid;
    gap: 14px;
    padding: 16px;
    border: 1px solid var(--borda);
    border-radius: 16px;
    background: rgba(240, 249, 253, 0.7);
}

.baixa-composicao__topo,
.baixa-composicao__resumo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
}

.baixa-composicao__topo span,
.baixa-composicao__topo strong {
    display: block;
}

.baixa-composicao__topo span {
    margin-bottom: 3px;
    color: var(--texto-suave);
    font-size: 0.82rem;
    font-weight: 700;
}

.baixa-composicao__topo strong {
    color: var(--texto);
    font-size: 1.18rem;
}

#linhasPagamentoBaixa {
    display: grid;
    gap: 12px;
}

.baixa-composicao__linha {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(130px, 0.48fr) auto;
    align-items: end;
    gap: 10px;
    padding-top: 12px;
    border-top: 1px solid var(--borda);
}

.baixa-composicao__remover {
    margin-bottom: 2px;
}

.baixa-composicao__resumo {
    padding-top: 12px;
    border-top: 1px dashed var(--borda);
    color: var(--texto-suave);
    font-size: 0.88rem;
}

.baixa-composicao__resumo strong {
    color: var(--texto);
}

.baixa-composicao__excedente strong,
.baixa-composicao__erro {
    color: #b33939;
}

.baixa-composicao__erro {
    min-height: 18px;
    margin: 0;
    font-size: 0.82rem;
    font-weight: 700;
}

#confirmarBaixa:disabled {
    cursor: not-allowed;
    opacity: 0.48;
}

@media (max-width: 640px) {
    .baixa-composicao__linha {
        grid-template-columns: 1fr;
    }

    .baixa-composicao__remover {
        justify-self: start;
    }
}

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

.modal-app__janela--baixa .painel--modal {
    padding: 20px;
}

.modal-app__janela--baixa .formulario-moderno {
    gap: 14px;
}

.modal-app__janela--baixa .campo {
    gap: 6px;
}

.modal-app__janela--baixa .campo input,
.modal-app__janela--baixa .campo select {
    padding: 12px 14px;
    border-radius: 13px;
}

.modal-app__janela--baixa .baixa-composicao {
    gap: 12px;
    padding: 14px;
}

.baixa-parcial__opcao {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 15px 16px;
    border: 1px solid rgba(18, 166, 199, 0.28);
    border-radius: 15px;
    background: rgba(231, 249, 254, 0.72);
    cursor: pointer;
}

.baixa-parcial__opcao input {
    width: 18px;
    height: 18px;
    margin-top: 2px;
}

.baixa-parcial__opcao span,
.baixa-parcial__opcao strong,
.baixa-parcial__opcao small {
    display: block;
}

.baixa-parcial__opcao small {
    margin-top: 3px;
    color: var(--texto-suave);
    line-height: 1.4;
}

.baixa-parcial__saldo {
    padding: 15px;
    border: 1px solid var(--borda);
    border-radius: 16px;
    background: #f8fbfd;
}

.baixa-parcial__saldo-topo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 15px;
}

.baixa-parcial__saldo-topo strong {
    color: var(--primaria-escura);
    font-size: 1.12rem;
}

.baixa-parcial__saldo .grade-formulario {
    grid-template-columns: minmax(130px, 0.48fr) minmax(180px, 0.8fr) minmax(210px, 1fr);
    gap: 12px;
    margin-top: 0;
}

.baixa-parcial__saldo > p {
    margin: 12px 0 0;
    color: var(--texto-suave);
    font-size: 0.82rem;
}

@media (max-width: 760px) {
    .baixa-parcial__saldo .grade-formulario {
        grid-template-columns: 1fr;
    }
}

.historico-baixa__resumo {
    display: grid;
    grid-template-columns: minmax(0, 1.5fr) repeat(2, minmax(150px, 0.55fr));
    gap: 18px;
    margin-bottom: 18px;
}

.historico-baixa__resumo span,
.historico-baixa__resumo strong,
.historico-baixa__valores span,
.historico-baixa__valores strong {
    display: block;
}

.historico-baixa__resumo span,
.historico-baixa__valores span {
    margin-bottom: 4px;
    color: var(--texto-suave);
    font-size: 0.78rem;
    font-weight: 700;
}

.historico-baixa {
    position: relative;
    display: grid;
    gap: 16px;
    padding-left: 24px;
}

.historico-baixa::before {
    position: absolute;
    top: 18px;
    bottom: 18px;
    left: 8px;
    width: 2px;
    background: rgba(18, 166, 199, 0.25);
    content: "";
}

.historico-baixa__item {
    position: relative;
    padding: 20px;
}

.historico-baixa__marcador {
    position: absolute;
    top: 22px;
    left: -32px;
    display: grid;
    width: 32px;
    height: 32px;
    place-items: center;
    border: 3px solid var(--fundo-painel);
    border-radius: 50%;
    background: var(--primaria);
    color: #fff;
    font-size: 0.78rem;
    font-weight: 800;
}

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

.historico-baixa__topo > div > span {
    color: var(--texto-suave);
    font-size: 0.78rem;
}

.historico-baixa__topo h3 {
    margin: 4px 0 0;
}

.historico-baixa__valores {
    display: grid;
    grid-template-columns: repeat(4, minmax(120px, 1fr));
    gap: 14px;
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid var(--borda);
}

.historico-baixa__pagamentos {
    display: grid;
    gap: 8px;
    margin-top: 16px;
    padding: 14px;
    border-radius: 13px;
    background: #f4fafc;
}

.historico-baixa__pagamento {
    display: grid;
    grid-template-columns: 110px minmax(0, 1fr) auto;
    gap: 12px;
    color: var(--texto-suave);
    font-size: 0.86rem;
}

.historico-baixa__pagamento strong {
    color: var(--texto);
}

@media (max-width: 760px) {
    .historico-baixa__resumo,
    .historico-baixa__valores {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 520px) {
    .historico-baixa__resumo,
    .historico-baixa__valores,
    .historico-baixa__pagamento {
        grid-template-columns: 1fr;
    }
}
