/* ==========================================================================
   PLATAFORMA — plataforma.css

   Tudo medido em rem: os botões A−/A+ mudam a letra da raiz (--escala) e a
   página inteira acompanha.

   Paleta da casa: vinho + verde-petróleo sobre marfim, com um fio de ouro
   como acento. Títulos em Cormorant Garamond; interface em Garet.
   ========================================================================== */

:root {
    --escala: 1;

    --vinho: #7a0b22;
    --vinho-escuro: #5c0718;
    --vinho-suave: rgba(122, 11, 34, .07);
    --petroleo: #04424f;
    --petroleo-medio: #0a6577;
    --petroleo-noite: #022a33;
    --petroleo-suave: rgba(10, 101, 119, .08);
    --ouro: #b08d57;
    --ouro-claro: #dcc8a3;

    --marfim: #f6f2eb;
    --marfim-claro: #fbf9f5;
    --superficie: #ffffff;
    --tinta: #1c2629;
    --tinta-2: #3b484c;
    --suave: #667276;
    --apagado: #98a1a4;
    --linha: #e8e1d5;
    --linha-forte: #d6ccbd;

    --verde: #3fa981;
    --ambar: #d99a2b;

    --serif: 'Cormorant Garamond', 'Cormorant', Georgia, 'Times New Roman', serif;
    --sans: 'Garet', 'Avenir Next', 'Segoe UI', Arial, sans-serif;

    --raio: 1.15rem;
    --sombra-1: 0 1px 2px rgba(28, 38, 41, .04), 0 8px 22px -14px rgba(28, 38, 41, .2);
    --sombra-2: 0 2px 6px rgba(28, 38, 41, .05), 0 30px 60px -28px rgba(28, 38, 41, .34);
    --ease: cubic-bezier(.22, .61, .36, 1);
}

*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }

html {
    font-size: calc(100% * var(--escala));
    scroll-behavior: smooth;
    -webkit-text-size-adjust: 100%;
}

body {
    min-height: 100vh;
    font-variant-numeric: lining-nums;
    font-family: var(--sans);
    font-size: 1rem;
    line-height: 1.55;
    color: var(--tinta);
    background-color: var(--marfim);
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

body.esta-trancado { overflow: hidden; }

/* luz ambiente + grão de papel */
body::before {
    content: '';
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background:
        radial-gradient(60rem 36rem at 6% -10%, rgba(122, 11, 34, .06), transparent 62%),
        radial-gradient(56rem 36rem at 102% 0%, rgba(4, 66, 79, .07), transparent 60%),
        radial-gradient(48rem 32rem at 50% 115%, rgba(176, 141, 87, .08), transparent 66%);
}
body::after {
    content: '';
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    opacity: .35;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.35 0 0 0 0 0.3 0 0 0 0 0.25 0 0 0 .05 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

[hidden] { display: none !important; }

a { color: inherit; }
button, input, select, textarea { font: inherit; color: inherit; }
svg { display: block; flex: none; }

:focus-visible {
    outline: 2px solid var(--petroleo-medio);
    outline-offset: 3px;
    border-radius: .35rem;
}

::selection { background: rgba(176, 141, 87, .28); }

/* ==========================================================================
   TRANCA (PIN)
   ========================================================================== */

.tranca {
    position: fixed;
    inset: 0;
    z-index: 100;
    display: grid;
    grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr);
    background: var(--marfim-claro);
    transition: opacity .5s var(--ease), transform .5s var(--ease);
}
.tranca.is-saindo { opacity: 0; transform: scale(1.015); pointer-events: none; }

.tranca-arte {
    position: relative;
    overflow: hidden;
    padding: 3.5rem 3.75rem;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    color: #f2ece1;
    background:
        radial-gradient(90% 70% at 18% 8%, rgba(16, 110, 128, .55), transparent 70%),
        radial-gradient(70% 60% at 100% 100%, rgba(122, 11, 34, .38), transparent 70%),
        linear-gradient(160deg, #055060 0%, #04424f 40%, #022a33 100%);
}
/* moldura de fio de ouro */
.tranca-arte::after {
    content: '';
    position: absolute;
    inset: 1.5rem;
    border: 1px solid rgba(220, 200, 163, .26);
    border-radius: .35rem;
    pointer-events: none;
}

.tranca-arte .sobretitulo { color: var(--ouro-claro); }

.tranca-titulo {
    position: relative;
    z-index: 1;
    font-family: var(--serif);
    font-weight: 400;
    font-size: clamp(2.6rem, 1.6rem + 2.6vw, 4.2rem);
    line-height: 1.02;
    letter-spacing: -.005em;
    margin-top: 1.4rem;
}
.tranca-titulo em {
    display: block;
    font-style: italic;
    color: var(--ouro-claro);
}
.tranca-legenda {
    position: relative;
    z-index: 1;
    margin-top: 1.5rem;
    max-width: 24rem;
    font-size: .95rem;
    line-height: 1.7;
    color: rgba(242, 236, 225, .72);
}
.tranca-rodape {
    position: relative;
    z-index: 1;
    font-size: .72rem;
    letter-spacing: .24em;
    text-transform: uppercase;
    color: rgba(242, 236, 225, .5);
}

/* letras e números soltos, como na logo */
.glifos { position: absolute; inset: 0; pointer-events: none; }
.glifos span {
    position: absolute;
    font-family: var(--serif);
    font-style: italic;
    color: var(--ouro-claro);
    opacity: .1;
    line-height: 1;
    user-select: none;
}

.tranca-painel {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 3rem 2rem;
    text-align: center;
    overflow-y: auto;
}
.tranca-fonte { position: absolute; top: 1.5rem; right: 1.5rem; }

.tranca-logo { width: min(17rem, 70%); height: auto; margin-bottom: 2.4rem; }

.tranca-painel h1 {
    font-family: var(--serif);
    font-weight: 500;
    font-size: 2.1rem;
    color: var(--vinho-escuro);
    line-height: 1.1;
}
.tranca-painel .tranca-instrucao {
    margin-top: .5rem;
    font-size: .92rem;
    color: var(--suave);
}

.pin-pontos {
    display: flex;
    gap: 1.1rem;
    margin: 2rem 0 .6rem;
    height: 1rem;
}
.pin-pontos span {
    width: .95rem;
    height: .95rem;
    border-radius: 50%;
    border: 1.5px solid var(--petroleo);
    transition: background-color .18s var(--ease), transform .18s var(--ease), border-color .18s;
}
.pin-pontos span.is-cheio { background: var(--petroleo); transform: scale(1.08); }
.pin-pontos.is-certo span { background: var(--verde); border-color: var(--verde); }
.pin-pontos.is-errado { animation: tremer .5s var(--ease); }
.pin-pontos.is-errado span { border-color: var(--vinho); background: var(--vinho); }

@keyframes tremer {
    0%, 100% { transform: translateX(0); }
    18% { transform: translateX(-.6rem); }
    36% { transform: translateX(.5rem); }
    54% { transform: translateX(-.35rem); }
    72% { transform: translateX(.2rem); }
}

.pin-erro {
    min-height: 1.4rem;
    font-size: .82rem;
    color: var(--vinho);
    opacity: 0;
    transition: opacity .2s;
}
.pin-erro.is-visivel { opacity: 1; }

.teclado {
    display: grid;
    grid-template-columns: repeat(3, 4.6rem);
    gap: 1rem 1.35rem;
    margin-top: 1rem;
}
.tecla {
    width: 4.6rem;
    height: 4.6rem;
    border-radius: 50%;
    border: 1px solid var(--linha-forte);
    background: var(--superficie);
    font-family: var(--serif);
    font-size: 1.95rem;
    font-weight: 500;
    color: var(--petroleo);
    cursor: pointer;
    display: grid;
    place-items: center;
    box-shadow: 0 1px 2px rgba(28, 38, 41, .04);
    transition: background-color .16s var(--ease), color .16s var(--ease), transform .12s var(--ease), border-color .16s;
}
.tecla:hover { border-color: var(--petroleo-medio); background: var(--petroleo-suave); }
.tecla:active, .tecla.is-pressionada {
    transform: scale(.93);
    background: var(--petroleo);
    border-color: var(--petroleo);
    color: #fff;
}
.tecla-apagar { border-color: transparent; background: transparent; box-shadow: none; color: var(--suave); }
.tecla-apagar svg { width: 1.6rem; height: 1.6rem; }
.tecla-apagar:hover { background: var(--vinho-suave); color: var(--vinho); border-color: transparent; }
.tecla-apagar:active, .tecla-apagar.is-pressionada { background: var(--vinho-suave); color: var(--vinho); border-color: transparent; }

.tranca-dica {
    margin-top: 2rem;
    font-size: .76rem;
    color: var(--apagado);
    letter-spacing: .04em;
}

/* ==========================================================================
   TOPO
   ========================================================================== */

#app { position: relative; z-index: 1; min-height: 100vh; display: flex; flex-direction: column; }

.topo {
    position: sticky;
    top: 0;
    z-index: 30;
    background: rgba(251, 249, 245, .84);
    backdrop-filter: saturate(160%) blur(14px);
    -webkit-backdrop-filter: saturate(160%) blur(14px);
    border-bottom: 1px solid rgba(214, 204, 189, .7);
}
.topo-dentro {
    width: min(92%, 78rem);
    margin: 0 auto;
    min-height: 4.9rem;
    display: flex;
    align-items: center;
    gap: 1.75rem;
}

.marca { display: flex; align-items: center; text-decoration: none; }
.marca img { height: 3.1rem; width: auto; display: block; }
.marca-texto { display: none; flex-direction: column; line-height: 1.05; }
.marca-texto small { font-size: .66rem; letter-spacing: .26em; text-transform: uppercase; color: var(--suave); }
.marca-texto strong { font-family: var(--serif); font-size: 1.35rem; color: var(--vinho-escuro); font-weight: 600; }
.marca.sem-logo img { display: none; }
.marca.sem-logo .marca-texto { display: flex; }

.nav { display: flex; gap: .3rem; padding-left: 1.5rem; border-left: 1px solid var(--linha); }
.nav a {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    padding: .6rem 1.05rem;
    border-radius: 999px;
    font-size: .84rem;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    text-decoration: none;
    color: var(--suave);
    transition: color .2s var(--ease), background-color .2s var(--ease);
}
.nav a svg { width: 1.1rem; height: 1.1rem; }
.nav a:hover { color: var(--petroleo); }
.nav a.is-ativo { color: var(--petroleo); background: var(--petroleo-suave); }

.topo-direita { margin-left: auto; display: flex; align-items: center; gap: .85rem; }

.chip-paciente {
    display: inline-flex;
    align-items: center;
    gap: .65rem;
    max-width: 17rem;
    padding: .3rem .95rem .3rem .3rem;
    border-radius: 999px;
    border: 1px solid rgba(63, 169, 129, .35);
    background: #fff;
    text-decoration: none;
    box-shadow: var(--sombra-1);
    transition: border-color .2s var(--ease), transform .2s var(--ease);
}
.chip-paciente:hover { border-color: var(--verde); transform: translateY(-1px); }
.chip-textos { display: flex; flex-direction: column; min-width: 0; line-height: 1.2; text-align: left; }
.chip-textos small { font-size: .6rem; letter-spacing: .2em; text-transform: uppercase; color: var(--verde); font-weight: 600; }
.chip-textos strong { font-size: .86rem; color: var(--tinta); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* A− 100% A+ */
.controle-fonte {
    display: inline-flex;
    align-items: stretch;
    border: 1px solid var(--linha-forte);
    border-radius: 999px;
    background: #fff;
    overflow: hidden;
}
.controle-fonte button {
    border: 0;
    background: none;
    cursor: pointer;
    padding: .4rem .8rem;
    font-family: var(--serif);
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--petroleo);
    line-height: 1;
    transition: background-color .18s var(--ease), color .18s;
}
.controle-fonte button sup { font-family: var(--sans); font-size: .62em; margin-left: .05em; }
.controle-fonte button:hover:not(:disabled) { background: var(--petroleo-suave); }
.controle-fonte button:disabled { color: var(--linha-forte); cursor: default; }
.controle-fonte .cf-valor {
    font-family: var(--sans);
    font-size: .7rem;
    font-weight: 600;
    letter-spacing: .06em;
    color: var(--suave);
    min-width: 3.4rem;
    border-left: 1px solid var(--linha);
    border-right: 1px solid var(--linha);
}

.btn-trancar {
    width: 2.6rem;
    height: 2.6rem;
    border-radius: 50%;
    border: 1px solid var(--linha-forte);
    background: #fff;
    color: var(--suave);
    cursor: pointer;
    display: grid;
    place-items: center;
    transition: color .2s, border-color .2s, background-color .2s;
}
.btn-trancar svg { width: 1.1rem; height: 1.1rem; }
.btn-trancar:hover { color: var(--vinho); border-color: var(--vinho); background: var(--vinho-suave); }

.aviso-demo {
    width: min(92%, 78rem);
    margin: 1.25rem auto 0;
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .75rem 1.1rem;
    border-radius: .8rem;
    border: 1px solid rgba(217, 154, 43, .35);
    background: rgba(217, 154, 43, .08);
    font-size: .84rem;
    color: #7a5716;
}
.aviso-demo svg { width: 1.1rem; height: 1.1rem; color: var(--ambar); }
.aviso-demo code { font-size: .8rem; background: rgba(255, 255, 255, .7); padding: .05rem .35rem; border-radius: .3rem; }

/* ==========================================================================
   PÁGINA
   ========================================================================== */

.conteudo {
    position: relative;
    flex: 1;
    width: min(92%, 78rem);
    margin: 0 auto;
    padding: 3rem 0 4.5rem;
}
.vista { animation: surgir .45s var(--ease) both; }

@keyframes surgir {
    from { opacity: 0; transform: translateY(.6rem); }
    to { opacity: 1; transform: none; }
}

.pagina-cab {
    position: relative;
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 2rem;
    padding-bottom: 1.9rem;
    margin-bottom: 2.1rem;
    border-bottom: 1px solid var(--linha);
}
.pagina-cab::after {
    content: '';
    position: absolute;
    left: 0;
    bottom: -1px;
    width: 5rem;
    height: 1px;
    background: var(--ouro);
}

.sobretitulo {
    display: inline-flex;
    align-items: center;
    gap: .65rem;
    font-size: .7rem;
    font-weight: 600;
    letter-spacing: .28em;
    text-transform: uppercase;
    color: var(--vinho);
}
.sobretitulo::before { content: ''; width: 1.5rem; height: 1px; background: currentColor; opacity: .55; }
.sobretitulo em { font-style: normal; color: var(--verde); }

.titulo-pagina {
    margin-top: .65rem;
    font-family: var(--serif);
    font-weight: 500;
    font-size: clamp(2.4rem, 1.7rem + 2.2vw, 3.5rem);
    line-height: 1.02;
    color: var(--vinho-escuro);
    letter-spacing: -.005em;
}
.titulo-pagina:focus, .ficha-nome:focus { outline: none; }

.pagina-sub { margin-top: .7rem; font-size: .95rem; color: var(--suave); }

/* ---------- botões ---------- */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .6rem;
    padding: .85rem 1.4rem;
    border-radius: 999px;
    border: 1px solid transparent;
    font-size: .78rem;
    font-weight: 600;
    letter-spacing: .12em;
    text-transform: uppercase;
    text-decoration: none;
    white-space: nowrap;
    cursor: pointer;
    transition: transform .22s var(--ease), box-shadow .22s var(--ease), filter .22s, border-color .2s, background-color .2s, color .2s;
}
.btn svg { width: 1.05rem; height: 1.05rem; }
.btn-primario {
    color: #fff;
    background: linear-gradient(135deg, var(--petroleo-medio), var(--petroleo));
    box-shadow: 0 12px 24px -14px rgba(4, 66, 79, .7), inset 0 1px 0 rgba(255, 255, 255, .12);
}
.btn-primario:hover { transform: translateY(-1px); filter: brightness(1.08); box-shadow: 0 16px 30px -14px rgba(4, 66, 79, .7); }
.btn-secundario { color: var(--petroleo); background: #fff; border-color: var(--linha-forte); }
.btn-secundario:hover { border-color: var(--petroleo-medio); background: var(--marfim-claro); }
.btn-perigo {
    color: #fff;
    background: linear-gradient(135deg, #8e1530, var(--vinho-escuro));
    box-shadow: 0 12px 24px -14px rgba(92, 7, 24, .7);
}
.btn-perigo:hover { filter: brightness(1.1); }
.btn:disabled { opacity: .6; cursor: progress; transform: none; filter: none; }
.btn-bloco { width: 100%; }

.btn-icone {
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 50%;
    border: 1px solid var(--linha-forte);
    background: #fff;
    color: var(--suave);
    display: inline-grid;
    place-items: center;
    cursor: pointer;
    flex: none;
    transition: color .2s, border-color .2s, background-color .2s;
}
.btn-icone svg { width: 1.15rem; height: 1.15rem; }
.btn-icone:hover { color: var(--petroleo); border-color: var(--petroleo-medio); }
.btn-icone.is-perigo:hover { color: var(--vinho); border-color: var(--vinho); background: var(--vinho-suave); }

/* ---------- busca e ordenação ---------- */
.barra-ferramentas {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1.4rem;
}
.busca {
    flex: 1;
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: 0 1.15rem;
    border: 1px solid var(--linha-forte);
    border-radius: 999px;
    background: #fff;
    color: var(--apagado);
    transition: border-color .2s, box-shadow .2s;
}
.busca svg { width: 1.15rem; height: 1.15rem; }
.busca:focus-within { border-color: var(--petroleo-medio); box-shadow: 0 0 0 4px rgba(10, 101, 119, .1); color: var(--petroleo); }
.busca input {
    flex: 1;
    min-width: 0;
    border: 0;
    outline: none;
    background: transparent;
    padding: .9rem 0;
    font-size: .95rem;
    color: var(--tinta);
}
.busca input::placeholder { color: var(--apagado); }

.alternador {
    display: inline-flex;
    padding: .25rem;
    border-radius: 999px;
    background: rgba(214, 204, 189, .35);
}
.alternador button {
    border: 0;
    background: none;
    cursor: pointer;
    padding: .55rem 1rem;
    border-radius: 999px;
    font-size: .76rem;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--suave);
    transition: background-color .2s, color .2s, box-shadow .2s;
}
.alternador button.is-ativo { background: #fff; color: var(--petroleo); box-shadow: 0 1px 3px rgba(28, 38, 41, .12); }

/* ==========================================================================
   LISTA DE PACIENTES
   ========================================================================== */

.lista-pacientes {
    list-style: none;
    background: var(--superficie);
    border: 1px solid var(--linha);
    border-radius: var(--raio);
    box-shadow: var(--sombra-1);
    overflow: hidden;
}
.lista-pacientes li + li { border-top: 1px solid var(--linha); }

.paciente-linha {
    position: relative;
    display: grid;
    grid-template-columns: auto minmax(0, 1.7fr) minmax(0, 1fr) minmax(0, .8fr);
    align-items: center;
    gap: 1.5rem;
    padding: 1.2rem 1.6rem;
    text-decoration: none;
    color: inherit;
    transition: background-color .2s var(--ease);
}
.paciente-linha::before {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: 3px;
    background: var(--ouro);
    transform: scaleY(0);
    transition: transform .28s var(--ease);
}
a.paciente-linha:hover { background: var(--marfim-claro); }
a.paciente-linha:hover::before { transform: scaleY(1); }
a.paciente-linha:hover .pl-seta { color: var(--petroleo); transform: translateX(3px); }

.monograma {
    --cor: var(--petroleo);
    width: 3.1rem;
    height: 3.1rem;
    border-radius: 50%;
    flex: none;
    display: grid;
    place-items: center;
    font-family: var(--serif);
    font-size: 1.3rem;
    font-weight: 600;
    letter-spacing: .03em;
    color: var(--cor);
    background: color-mix(in srgb, var(--cor) 9%, #fff);
    border: 1px solid color-mix(in srgb, var(--cor) 26%, #fff);
    box-shadow: inset 0 0 0 3px #fff;
}
.monograma-p { width: 2.3rem; height: 2.3rem; font-size: 1rem; box-shadow: inset 0 0 0 2px #fff; }
.monograma-g { width: 5.6rem; height: 5.6rem; font-size: 2.3rem; box-shadow: inset 0 0 0 5px #fff, 0 10px 26px -14px rgba(28, 38, 41, .4); }

.pl-principal { display: flex; flex-direction: column; min-width: 0; gap: .15rem; }
.pl-nome {
    font-family: var(--serif);
    font-size: 1.42rem;
    font-weight: 600;
    line-height: 1.15;
    color: var(--tinta);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.pl-meta { font-size: .84rem; color: var(--suave); }
.pl-sem { font-size: .82rem; color: var(--apagado); font-style: italic; }

.chip-diag {
    display: inline-block;
    max-width: 100%;
    padding: .32rem .8rem;
    border-radius: 999px;
    font-size: .78rem;
    color: var(--vinho);
    background: var(--vinho-suave);
    border: 1px solid rgba(122, 11, 34, .13);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: middle;
}

.pl-ultima { font-size: .88rem; color: var(--tinta-2); }
.pl-ultima small {
    display: block;
    font-size: .62rem;
    font-weight: 600;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--apagado);
    margin-bottom: .1rem;
}
.pl-seta { color: var(--linha-forte); transition: color .2s, transform .25s var(--ease); }
.pl-seta svg { width: 1.3rem; height: 1.3rem; }

.selo-ativo {
    display: inline-block;
    vertical-align: middle;
    margin-left: .5rem;
    padding: .15rem .55rem;
    border-radius: 999px;
    font-family: var(--sans);
    font-size: .6rem;
    font-weight: 600;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: #1f7a57;
    background: rgba(63, 169, 129, .12);
}

/* esqueleto de carregamento */
.esq {
    display: block;
    background: linear-gradient(90deg, #efe9df 0%, #f7f3ec 50%, #efe9df 100%);
    background-size: 200% 100%;
    animation: brilho 1.4s linear infinite;
    border-radius: .4rem;
}
.esq-circulo { width: 3.1rem; height: 3.1rem; border-radius: 50%; }
.esq-grande { width: 5.6rem; height: 5.6rem; }
.esq-texto { height: 1.05rem; margin: .25rem 0; }
.esq-fino { height: .7rem; }
.esq-titulo { height: 2.4rem; margin: .6rem 0; }
@keyframes brilho { to { background-position: -200% 0; } }

/* ---------- estados vazios ---------- */
.vazio {
    text-align: center;
    padding: 3.5rem 1.5rem;
    background: var(--superficie);
    border: 1px dashed var(--linha-forte);
    border-radius: var(--raio);
}
.vazio-grande { padding: 4.5rem 1.5rem; }
.vazio-bloco { background: transparent; border: 0; padding: 2.2rem 1rem 1.2rem; }
.vazio-icone {
    width: 3.8rem;
    height: 3.8rem;
    margin: 0 auto 1.2rem;
    border-radius: 50%;
    display: grid;
    place-items: center;
    color: var(--ouro);
    background: rgba(176, 141, 87, .09);
    border: 1px solid rgba(176, 141, 87, .25);
}
.vazio-icone svg { width: 1.6rem; height: 1.6rem; }
.vazio h3 {
    font-family: var(--serif);
    font-weight: 600;
    font-size: 1.5rem;
    color: var(--tinta);
    line-height: 1.2;
}
.vazio p {
    max-width: 28rem;
    margin: .55rem auto 0;
    font-size: .9rem;
    line-height: 1.65;
    color: var(--suave);
}
.vazio .btn { margin-top: 1.6rem; }
.vazio.is-erro .vazio-icone { color: var(--vinho); background: var(--vinho-suave); border-color: rgba(122, 11, 34, .2); }

/* ==========================================================================
   FICHA
   ========================================================================== */

.link-voltar {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    margin-bottom: 1.6rem;
    font-size: .76rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    text-decoration: none;
    color: var(--suave);
    transition: color .2s, gap .2s var(--ease);
}
.link-voltar svg { width: 1rem; height: 1rem; }
.link-voltar:hover { color: var(--petroleo); gap: .7rem; }

.ficha-cab {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
    padding: 2.2rem 2.4rem;
    background:
        radial-gradient(40rem 14rem at 100% 0%, rgba(176, 141, 87, .09), transparent 70%),
        linear-gradient(180deg, #fff, var(--marfim-claro));
    border: 1px solid var(--linha);
    border-radius: calc(var(--raio) + .25rem);
    box-shadow: var(--sombra-1);
    overflow: hidden;
}
.ficha-cab::before {
    content: '';
    position: absolute;
    top: 0; left: 2.4rem; right: 2.4rem;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--ouro), transparent);
}
.ficha-identidade { display: flex; align-items: center; gap: 1.6rem; min-width: 0; }
.ficha-nome {
    margin-top: .45rem;
    font-family: var(--serif);
    font-weight: 500;
    font-size: clamp(2.1rem, 1.5rem + 1.8vw, 3.1rem);
    line-height: 1.04;
    color: var(--vinho-escuro);
    overflow-wrap: anywhere;
}
.ficha-sub { margin-top: .45rem; font-size: .95rem; color: var(--suave); }
.ficha-acoes { display: flex; align-items: center; gap: .7rem; flex: none; }

.ficha-dados {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1rem;
    margin: 1.25rem 0 2.2rem;
}
.ficha-tile {
    padding: 1.3rem 1.4rem 1.35rem;
    background: var(--superficie);
    border: 1px solid var(--linha);
    border-radius: var(--raio);
}
.ficha-tile-icone {
    width: 2.3rem;
    height: 2.3rem;
    border-radius: 50%;
    display: grid;
    place-items: center;
    color: var(--petroleo-medio);
    background: var(--petroleo-suave);
    margin-bottom: .9rem;
}
.ficha-tile-icone svg { width: 1.1rem; height: 1.1rem; }
.ficha-tile dt {
    font-size: .64rem;
    font-weight: 600;
    letter-spacing: .22em;
    text-transform: uppercase;
    color: var(--apagado);
}
.ficha-tile dd {
    margin-top: .3rem;
    font-family: var(--serif);
    font-size: 1.32rem;
    font-weight: 600;
    line-height: 1.25;
    color: var(--tinta);
    overflow-wrap: anywhere;
}
.nao-informado { font-family: var(--sans); font-size: .88rem; font-weight: 400; font-style: italic; color: var(--apagado); }

/* uma seção embaixo da outra: as transcrições são diálogos e precisam de
   largura para serem lidas (também com a letra aumentada) */
.ficha-colunas {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.25rem;
    align-items: start;
}
.bloco {
    padding: 1.7rem 1.8rem 1.5rem;
    background: var(--superficie);
    border: 1px solid var(--linha);
    border-radius: var(--raio);
    box-shadow: var(--sombra-1);
}
.bloco-cab {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--linha);
}
.bloco-cab h2 {
    font-family: var(--serif);
    font-size: 1.6rem;
    font-weight: 600;
    color: var(--tinta);
    line-height: 1.15;
}
.contador {
    min-width: 2rem;
    padding: .2rem .65rem;
    border-radius: 999px;
    text-align: center;
    font-size: .76rem;
    font-weight: 600;
    color: var(--petroleo);
    background: var(--petroleo-suave);
}
.bloco-erro { padding: 1.5rem 0 .5rem; font-size: .88rem; color: var(--vinho); }

.linha-tempo { list-style: none; padding-top: .6rem; }
.linha-tempo li + li { border-top: 1px solid var(--linha); }
.lt-item {
    position: relative;
    display: grid;
    grid-template-columns: 5.2rem minmax(0, 1fr) auto;
    align-items: center;
    gap: 1.2rem;
    padding: 1rem .6rem;
    margin: 0 -.6rem;
    border-radius: .8rem;
    text-decoration: none;
    color: inherit;
    transition: background-color .2s var(--ease);
}
.lt-item:hover { background: var(--marfim-claro); }
.lt-item:hover .lt-teste { color: var(--petroleo); }
.lt-ver {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--apagado);
    transition: color .2s, gap .2s var(--ease);
}
.lt-ver svg { width: 1rem; height: 1rem; }
.lt-item:hover .lt-ver { color: var(--petroleo); gap: .5rem; }
.lt-data { font-size: .78rem; color: var(--suave); line-height: 1.3; text-transform: lowercase; }
.lt-data strong { display: block; font-family: var(--serif); font-size: 1.9rem; font-weight: 600; color: var(--vinho-escuro); line-height: 1; }
.lt-data small { display: block; color: var(--apagado); }
.lt-corpo { display: flex; flex-direction: column; justify-content: center; gap: .2rem; }
.lt-teste { font-size: 1rem; font-weight: 600; color: var(--tinta); }
.lt-meta { font-size: .82rem; color: var(--suave); }

.lista-transcricoes { list-style: none; padding-top: .4rem; }
.tr-item + .tr-item { border-top: 1px solid var(--linha); }
.tr-item summary {
    list-style: none;
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: .9rem .5rem;
    margin: 0 -.5rem;
    border-radius: .8rem;
    cursor: pointer;
    transition: background-color .2s var(--ease);
}
.tr-item summary::-webkit-details-marker { display: none; }
.tr-item summary:hover { background: var(--marfim-claro); }
.tr-icone {
    width: 2.4rem; height: 2.4rem; border-radius: 50%; flex: none;
    display: grid; place-items: center;
    color: var(--ouro); background: rgba(176, 141, 87, .1);
}
.tr-icone svg { width: 1.1rem; height: 1.1rem; }
.tr-corpo { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.tr-corpo strong { font-size: .95rem; color: var(--tinta); }
.tr-corpo small { font-size: .78rem; color: var(--suave); }
.tr-seta { color: var(--linha-forte); transition: transform .25s var(--ease), color .2s; }
.tr-seta svg { width: 1.1rem; height: 1.1rem; }
.tr-item details[open] .tr-seta { transform: rotate(90deg); color: var(--petroleo); }
.tr-chip {
    flex: none;
    padding: .2rem .6rem;
    border-radius: 999px;
    font-size: .66rem;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--suave);
    background: rgba(214, 204, 189, .4);
}
.tr-chip.is-erro { color: var(--vinho); background: var(--vinho-suave); }

.tr-conteudo { padding: .4rem 0 1.2rem 3.4rem; }
.tr-audio { width: 100%; height: 2.6rem; margin-bottom: .9rem; }
.tr-texto {
    padding: 1rem 1.1rem;
    border-radius: .8rem;
    background: var(--marfim-claro);
    border: 1px solid var(--linha);
}
.tr-texto:empty { display: none; }
.tr-fala { display: grid; grid-template-columns: 5.6rem minmax(0, 1fr); gap: .8rem; padding: .35rem 0; font-size: .93rem; line-height: 1.6; }
.tr-quem {
    padding-top: .15rem;
    font-size: .64rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--apagado);
}
.tr-fala.is-crianca .tr-quem { color: var(--petroleo-medio); }
.tr-fala:not(:has(.tr-quem)) { grid-template-columns: 1fr; }
.tr-dito { color: var(--tinta); white-space: pre-wrap; }
.tr-vazia { font-size: .88rem; font-style: italic; color: var(--suave); }
.tr-sem-voz { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .6rem; }
.tr-obs { margin-top: .7rem; font-size: .82rem; color: var(--suave); }
.tr-falha {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .6rem;
    margin-bottom: .9rem;
    padding: .75rem .9rem;
    border-radius: .8rem;
    background: var(--vinho-suave);
    font-size: .85rem;
    color: var(--vinho);
}
.tr-falha > svg { width: 1.05rem; height: 1.05rem; }
.tr-falha > span { flex: 1; min-width: 12rem; }
.tr-acoes { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .9rem; }
.btn-pequeno { padding: .55rem .95rem; font-size: .68rem; }
.btn-pequeno svg { width: .95rem; height: .95rem; }
.tr-rodape { margin-top: .7rem; font-size: .74rem; font-style: italic; color: var(--apagado); }

.resultado-falas { margin-top: 1.6rem; }

.ficha-rodape { margin-top: 2rem; text-align: center; font-size: .76rem; letter-spacing: .04em; color: var(--apagado); }

/* ==========================================================================
   RESULTADO (página final guardada)
   ========================================================================== */

.resultado-titulo { font-size: clamp(2rem, 1.4rem + 1.8vw, 2.9rem); }
.resultado-cab { align-items: center; }
.resultado-nota {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin: -.8rem 0 1rem;
    font-size: .8rem;
    color: var(--suave);
}
.resultado-nota svg { width: 1rem; height: 1rem; color: var(--verde); }
.resultado-moldura {
    padding: .55rem;
    background: linear-gradient(180deg, #fff, var(--marfim-claro));
    border: 1px solid var(--linha);
    border-radius: calc(var(--raio) + .3rem);
    box-shadow: var(--sombra-2);
}
.resultado-quadro {
    display: block;
    width: 100%;
    height: calc(100vh - 7rem);
    min-height: 30rem;
    border: 1px solid var(--linha);
    border-radius: var(--raio);
    background: #fff;
}
.resultado-carregando { display: flex; flex-direction: column; gap: .6rem; }
.resultado-esq-quadro { height: 60vh; border-radius: var(--raio); margin-top: 1.4rem; }

.tabela-resumo { width: 100%; border-collapse: collapse; margin-top: .6rem; font-size: .92rem; }
.tabela-resumo th, .tabela-resumo td { padding: .7rem .4rem; border-bottom: 1px solid var(--linha); text-align: left; vertical-align: top; }
.tabela-resumo th { width: 40%; font-weight: 600; color: var(--tinta-2); }
.tabela-resumo td { color: var(--tinta); overflow-wrap: anywhere; }

/* ==========================================================================
   CATÁLOGO DE TESTES
   ========================================================================== */

.faixa-paciente {
    position: relative;
    display: flex;
    align-items: center;
    gap: 1.3rem;
    padding: 1.3rem 1.6rem 1.3rem 1.8rem;
    margin-bottom: 3rem;
    background: linear-gradient(110deg, #fff 30%, var(--marfim-claro));
    border: 1px solid var(--linha);
    border-radius: var(--raio);
    box-shadow: var(--sombra-1);
    overflow: hidden;
}
.faixa-paciente::before {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: 4px;
    background: var(--verde);
}
.faixa-paciente.is-vazia::before { background: var(--ambar); }
.faixa-icone {
    width: 3.1rem; height: 3.1rem; border-radius: 50%;
    display: grid; place-items: center;
    color: var(--ambar); background: rgba(217, 154, 43, .1);
    flex: none;
}
.faixa-icone svg { width: 1.4rem; height: 1.4rem; }
.faixa-texto { flex: 1; min-width: 0; }
.faixa-paciente .sobretitulo { color: #1f7a57; }
.faixa-paciente.is-vazia .sobretitulo { color: #9a6a12; }
.faixa-texto p { margin-top: .25rem; font-size: .9rem; color: var(--suave); }
.faixa-texto .faixa-nome {
    margin-top: .2rem;
    font-family: var(--serif);
    font-size: 1.7rem;
    font-weight: 600;
    line-height: 1.1;
    color: var(--tinta);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.faixa-texto .faixa-meta { margin-top: .15rem; font-size: .85rem; }
.faixa-acoes { display: flex; gap: .6rem; flex: none; }

.catalogo { display: flex; flex-direction: column; gap: 3rem; }

.section-head { display: flex; align-items: baseline; gap: 1rem; margin-bottom: 1.3rem; }
.section-head h3 {
    font-family: var(--serif);
    font-size: 1.65rem;
    font-weight: 600;
    color: var(--tinta);
    white-space: nowrap;
    line-height: 1.1;
}
.section-head h3::before {
    content: '';
    display: inline-block;
    width: .55rem;
    height: .55rem;
    margin-right: .75rem;
    border-radius: 50%;
    background: var(--accent, var(--petroleo));
    vertical-align: middle;
    transform: translateY(-.12rem);
}
.section-head .rule { flex: 1; height: 1px; background: linear-gradient(90deg, var(--linha-forte), transparent); }
.section-head .count {
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--apagado);
    white-space: nowrap;
}

.buttons-container {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
}
.button {
    position: relative;
    min-height: 7rem;
    padding: 1.35rem 3rem 1.35rem 1.45rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: .4rem;
    font-size: 1.02rem;
    font-weight: 600;
    line-height: 1.3;
    color: var(--petroleo);
    text-decoration: none;
    background: var(--superficie);
    border: 1px solid var(--linha);
    border-radius: var(--raio);
    box-shadow: var(--sombra-1);
    overflow: hidden;
    transition: transform .28s var(--ease), box-shadow .28s var(--ease), border-color .28s var(--ease);
}
.button::before {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: 3px;
    background: var(--accent, var(--petroleo));
    transform: scaleY(0);
    transform-origin: top;
    transition: transform .3s var(--ease);
}
.button::after {
    content: '\2192';
    position: absolute;
    right: 1.3rem;
    top: 50%;
    transform: translateY(-50%) translateX(-.3rem);
    font-size: 1.1rem;
    color: var(--accent, var(--petroleo));
    opacity: 0;
    transition: opacity .26s var(--ease), transform .26s var(--ease);
}
.button:hover, .button:focus-visible {
    transform: translateY(-3px);
    border-color: color-mix(in srgb, var(--accent, var(--petroleo)) 45%, var(--linha));
    box-shadow: var(--sombra-2);
    outline: none;
}
.button:hover::before, .button:focus-visible::before { transform: scaleY(1); }
.button:hover::after, .button:focus-visible::after { opacity: 1; transform: translateY(-50%) translateX(0); }
.button-subtext { font-size: .8rem; font-weight: 400; color: var(--suave); letter-spacing: .01em; }

.arquivo { margin-top: 1.5rem; border-top: 1px dashed var(--linha-forte); padding-top: 1.1rem; }
.arquivo > summary {
    list-style: none;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: .6rem;
    font-size: .7rem;
    font-weight: 600;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--suave);
    transition: color .2s;
}
.arquivo > summary::-webkit-details-marker { display: none; }
.arquivo > summary::before { content: '\25B8'; font-size: .85rem; }
.arquivo[open] > summary::before { content: '\25BE'; }
.arquivo > summary:hover { color: var(--vinho); }
.arquivo .arquivo-nota { max-width: 46rem; margin: 1rem 0 1.15rem; font-size: .82rem; line-height: 1.65; color: var(--suave); }
.arquivo .buttons-container { opacity: .65; transition: opacity .3s var(--ease); }
.arquivo .buttons-container:hover { opacity: 1; }
.arquivo .button { min-height: 5.8rem; font-size: .92rem; background: var(--marfim-claro); box-shadow: none; }

/* ==========================================================================
   GAVETA E MODAL
   ========================================================================== */

.gaveta, .modal { position: fixed; inset: 0; z-index: 60; }
.modal { z-index: 70; }
.camada-fundo {
    position: absolute;
    inset: 0;
    background: rgba(2, 30, 36, .4);
    backdrop-filter: blur(3px);
    -webkit-backdrop-filter: blur(3px);
    opacity: 0;
    transition: opacity .26s var(--ease);
}
.is-aberta .camada-fundo { opacity: 1; }

.gaveta .camada-caixa {
    position: absolute;
    top: 0; right: 0; bottom: 0;
    width: min(35rem, 100%);
    background: var(--marfim-claro);
    box-shadow: -2rem 0 4rem -2rem rgba(2, 30, 36, .45);
    transform: translateX(100%);
    transition: transform .34s var(--ease);
    display: flex;
    flex-direction: column;
}
.gaveta.is-aberta .camada-caixa { transform: none; }

.form-paciente { display: flex; flex-direction: column; height: 100%; }
.gaveta-cab {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: 2rem 2.2rem 1.5rem;
    border-bottom: 1px solid var(--linha);
    background: #fff;
}
.gaveta-titulo {
    margin-top: .5rem;
    font-family: var(--serif);
    font-size: 2rem;
    font-weight: 500;
    line-height: 1.1;
    color: var(--vinho-escuro);
    overflow-wrap: anywhere;
}
.gaveta-corpo { flex: 1; overflow-y: auto; padding: 1.9rem 2.2rem; }
.gaveta-rodape {
    display: flex;
    justify-content: flex-end;
    gap: .75rem;
    padding: 1.2rem 2.2rem;
    border-top: 1px solid var(--linha);
    background: #fff;
}

.campo { margin-bottom: 1.35rem; }
.campo label {
    display: block;
    margin-bottom: .55rem;
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--petroleo);
}
.campo .opcional { font-size: .78rem; font-weight: 400; letter-spacing: .02em; text-transform: none; color: var(--apagado); }
.campo input, .campo select, .campo textarea {
    width: 100%;
    padding: .85rem 1rem;
    border: 1px solid var(--linha-forte);
    border-radius: .8rem;
    background: #fff;
    font-size: 1rem;
    color: var(--tinta);
    outline: none;
    transition: border-color .2s, box-shadow .2s, background-color .2s;
}
.campo textarea { resize: vertical; min-height: 5.5rem; line-height: 1.5; }
.campo select {
    appearance: none;
    -webkit-appearance: none;
    padding-right: 2.6rem;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2304424f' stroke-width='1.8' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 1rem center;
    background-size: 1rem;
}
.campo input:focus, .campo select:focus, .campo textarea:focus {
    border-color: var(--petroleo-medio);
    box-shadow: 0 0 0 4px rgba(10, 101, 119, .11);
}
.campo input[readonly] { background: var(--marfim); color: var(--tinta-2); }
.campo input::placeholder, .campo textarea::placeholder { color: #aab2b5; }
.campo-erro { display: none; margin-top: .45rem; font-size: .8rem; color: var(--vinho); }
.campo.tem-erro .campo-erro { display: block; }
.campo.tem-erro input { border-color: var(--vinho); box-shadow: 0 0 0 4px rgba(122, 11, 34, .08); }

.campos-duplos { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 1rem; }
.campo-dica-idade {
    display: flex;
    align-items: center;
    gap: .55rem;
    margin: -.6rem 0 1.4rem;
    font-size: .82rem;
    color: var(--suave);
    min-height: 1.2rem;
}
.campo-dica-idade svg { width: 1rem; height: 1rem; color: var(--ouro); }
.campo-dica-idade strong { color: var(--petroleo); }

.modal .camada-caixa {
    position: absolute;
    left: 50%;
    top: 50%;
    width: min(30rem, calc(100% - 2rem));
    max-height: calc(100% - 2rem);
    overflow-y: auto;
    background: #fff;
    border-radius: 1.3rem;
    box-shadow: var(--sombra-2);
    opacity: 0;
    transform: translate(-50%, -46%) scale(.98);
    transition: opacity .26s var(--ease), transform .3s var(--ease);
}
.modal.is-aberta .camada-caixa { opacity: 1; transform: translate(-50%, -50%); }

.modal-confirmar { padding: 2.2rem 2.2rem 1.8rem; text-align: center; }
.modal-icone {
    width: 3.6rem; height: 3.6rem; margin: 0 auto 1.1rem;
    border-radius: 50%;
    display: grid; place-items: center;
    color: var(--ambar); background: rgba(217, 154, 43, .1);
}
.modal-confirmar.is-perigo .modal-icone { color: var(--vinho); background: var(--vinho-suave); }
.modal-icone svg { width: 1.5rem; height: 1.5rem; }
.modal-titulo { font-family: var(--serif); font-size: 1.8rem; font-weight: 600; line-height: 1.15; color: var(--tinta); }
.modal-texto { margin-top: .6rem; font-size: .92rem; line-height: 1.65; color: var(--suave); }
.modal-texto strong { color: var(--tinta); }
.modal-acoes { display: flex; justify-content: center; gap: .75rem; margin-top: 1.8rem; flex-wrap: wrap; }

.modal:has(.modal-escolher) .camada-caixa { width: min(36rem, calc(100% - 2rem)); }
.modal-escolher { padding: 1.9rem 1.9rem 1.6rem; }
.modal-escolher-cab { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; margin-bottom: 1.3rem; }
.modal-escolher .modal-titulo { margin-top: .4rem; font-weight: 500; font-size: 1.9rem; color: var(--vinho-escuro); }
.modal-escolher .modal-texto { margin-top: .3rem; }
.busca-compacta { flex: none; margin-bottom: .9rem; }
.busca-compacta input { padding: .75rem 0; }
.escolher-lista { max-height: min(22rem, 50vh); overflow-y: auto; margin: 0 -.4rem 1.1rem; padding: 0 .4rem; }
.escolher-item {
    width: 100%;
    display: flex;
    align-items: center;
    gap: .9rem;
    padding: .7rem .8rem;
    border: 0;
    border-radius: .8rem;
    background: none;
    cursor: pointer;
    text-align: left;
    transition: background-color .18s;
}
.escolher-item:hover, .escolher-item:focus-visible { background: var(--marfim); }
.escolher-item > span:not(.monograma) { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.escolher-item strong { font-size: .95rem; color: var(--tinta); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.escolher-item small { font-size: .8rem; color: var(--suave); }
.escolher-item > svg { width: 1.1rem; height: 1.1rem; color: var(--linha-forte); }
.escolher-item:hover > svg { color: var(--petroleo); }
.escolher-vazio { padding: 1.5rem .5rem; text-align: center; font-size: .88rem; color: var(--suave); }

/* ---------- toast ---------- */
.toast {
    position: fixed;
    left: 50%;
    bottom: 1.8rem;
    z-index: 120;
    display: flex;
    align-items: center;
    gap: .65rem;
    max-width: calc(100% - 2rem);
    padding: .85rem 1.3rem;
    border-radius: 999px;
    background: var(--petroleo-noite);
    color: #f2ece1;
    font-size: .9rem;
    box-shadow: 0 18px 40px -18px rgba(2, 30, 36, .7);
    opacity: 0;
    transform: translate(-50%, 1rem);
    pointer-events: none;
    transition: opacity .3s var(--ease), transform .3s var(--ease);
}
.toast svg { width: 1.1rem; height: 1.1rem; color: var(--ouro-claro); }
.toast.is-visivel { opacity: 1; transform: translate(-50%, 0); }
.toast-erro { background: var(--vinho-escuro); border-radius: 1rem; }

/* ---------- rodapé ---------- */
.rodape {
    position: relative;
    border-top: 1px solid var(--linha);
    background: rgba(251, 249, 245, .6);
}
.rodape-dentro {
    width: min(92%, 78rem);
    margin: 0 auto;
    padding: 1.6rem 0 1.8rem;
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    font-size: .78rem;
    color: var(--apagado);
}
.rodape-dentro strong { font-family: var(--serif); font-size: 1rem; font-weight: 600; color: var(--vinho); }
.credito {
    padding: 0 0 1.4rem;
    text-align: center;
    font-family: var(--serif);
    font-style: italic;
    font-size: .8rem;
    letter-spacing: .03em;
    color: var(--apagado);
}
.credito-coracao { color: var(--vinho); font-style: normal; margin: 0 .1em; }

/* ==========================================================================
   ABAS, MENU ⋮ E SITUAÇÃO
   ========================================================================== */

.abas {
    display: flex;
    gap: 2rem;
    margin: 0 0 1.5rem;
    border-bottom: 1px solid var(--linha);
}
/* com abas logo abaixo, a linha das abas substitui a do cabeçalho */
.pagina-cab:has(+ .abas) { border-bottom: 0; padding-bottom: .4rem; margin-bottom: 1.1rem; }
.pagina-cab:has(+ .abas)::after { display: none; }
.abas button {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    padding: .7rem 0 .9rem;
    border: 0;
    background: none;
    cursor: pointer;
    font-size: .78rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--apagado);
    transition: color .2s;
}
.abas button svg { width: 1rem; height: 1rem; }
.abas button::after {
    content: '';
    position: absolute;
    left: 0; right: 0; bottom: -1px;
    height: 2px;
    background: var(--ouro);
    transform: scaleX(0);
    transition: transform .28s var(--ease);
}
.abas button:hover { color: var(--tinta-2); }
.abas button.is-ativa { color: var(--petroleo); }
.abas button.is-ativa::after { transform: scaleX(1); }
.aba-n {
    min-width: 1.6rem;
    padding: .1rem .5rem;
    border-radius: 999px;
    font-size: .72rem;
    letter-spacing: 0;
    text-align: center;
    background: rgba(214, 204, 189, .4);
    color: var(--suave);
}
.abas button.is-ativa .aba-n { background: var(--petroleo-suave); color: var(--petroleo); }

.pl-item { position: relative; }
.pl-item .paciente-linha { padding-right: 4.8rem; }
.btn-pontos {
    position: absolute;
    right: 1.2rem;
    top: 50%;
    transform: translateY(-50%);
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 50%;
    border: 1px solid transparent;
    background: none;
    color: var(--apagado);
    cursor: pointer;
    display: grid;
    place-items: center;
    transition: color .2s, background-color .2s, border-color .2s;
}
.btn-pontos svg { width: 1.3rem; height: 1.3rem; }
.btn-pontos:hover, .btn-pontos[aria-expanded="true"] {
    color: var(--petroleo);
    background: #fff;
    border-color: var(--linha-forte);
}

.menu-flutuante {
    position: fixed;
    z-index: 90;
    min-width: 14rem;
    padding: .4rem;
    background: #fff;
    border: 1px solid var(--linha);
    border-radius: .95rem;
    box-shadow: var(--sombra-2);
    animation: menu-surgir .18s var(--ease) both;
}
@keyframes menu-surgir {
    from { opacity: 0; transform: translateY(-.3rem) scale(.98); }
    to { opacity: 1; transform: none; }
}
.menu-flutuante button {
    width: 100%;
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .7rem .85rem;
    border: 0;
    border-radius: .65rem;
    background: none;
    cursor: pointer;
    text-align: left;
    font-size: .9rem;
    color: var(--tinta);
    transition: background-color .15s, color .15s;
}
.menu-flutuante button svg { width: 1.05rem; height: 1.05rem; color: var(--suave); }
.menu-flutuante button:hover, .menu-flutuante button:focus-visible { background: var(--marfim); outline: none; }
.menu-flutuante button:hover svg { color: var(--petroleo); }
.menu-flutuante button.is-perigo { color: var(--vinho); }
.menu-flutuante button.is-perigo svg { color: var(--vinho); }
.menu-flutuante button.is-perigo:hover { background: var(--vinho-suave); }
.menu-flutuante hr { border: 0; border-top: 1px solid var(--linha); margin: .35rem .5rem; }

.sobretitulo em.is-finalizado { color: var(--ouro); }

.faixa-finalizado {
    display: flex;
    align-items: center;
    gap: .9rem;
    margin-top: 1rem;
    padding: .9rem 1rem .9rem 1.3rem;
    border: 1px solid rgba(176, 141, 87, .35);
    border-radius: var(--raio);
    background: rgba(176, 141, 87, .08);
    font-size: .88rem;
    color: #6e5530;
}
.faixa-finalizado > svg { width: 1.2rem; height: 1.2rem; color: var(--ouro); }
.faixa-finalizado span { flex: 1; }
.faixa-finalizado .btn { padding: .6rem 1.1rem; }

/* ==========================================================================
   RESPONSIVO
   ========================================================================== */

@media (max-width: 68rem) {
    .buttons-container { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ficha-dados { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ficha-colunas { grid-template-columns: 1fr; }
    .paciente-linha { grid-template-columns: auto minmax(0, 1.6fr) minmax(0, 1fr); }
    .pl-ultima { display: none; }
    .chip-textos small { display: none; }
}

@media (max-width: 54rem) {
    .tranca { grid-template-columns: 1fr; grid-template-rows: auto 1fr; overflow-y: auto; }
    .tranca-arte { padding: 2rem 1.75rem 1.9rem; }
    .tranca-arte::after { inset: .8rem; }
    .tranca-titulo { font-size: 2.2rem; margin-top: .8rem; }
    .tranca-legenda, .tranca-rodape { display: none; }
    .tranca-painel { padding: 2.2rem 1rem 2.5rem; justify-content: flex-start; }
    .tranca-logo { margin-bottom: 1.6rem; width: min(14rem, 70%); }
    .tranca-fonte { position: static; margin-bottom: 1.4rem; }

    .topo-dentro { flex-wrap: wrap; gap: .6rem 1rem; padding: .7rem 0; min-height: 0; }
    .marca img { height: 2.5rem; }
    .nav { order: 3; width: 100%; padding-left: 0; border-left: 0; }
    .nav a { flex: 1; justify-content: center; }
    .chip-paciente { display: none; }

    .pagina-cab { flex-direction: column; align-items: flex-start; gap: 1.3rem; }
    .barra-ferramentas { flex-direction: column; align-items: stretch; }
    .alternador { align-self: flex-start; }

    .ficha-cab { flex-direction: column; align-items: flex-start; padding: 1.7rem 1.5rem; }
    .ficha-identidade { gap: 1.1rem; }
    .monograma-g { width: 4.2rem; height: 4.2rem; font-size: 1.8rem; }
    .ficha-acoes { flex-wrap: wrap; }

    .faixa-paciente { flex-wrap: wrap; }
    .faixa-acoes { width: 100%; }
    .faixa-acoes .btn { flex: 1; }
}

@media (max-width: 40rem) {
    .conteudo { padding: 2rem 0 3.5rem; }
    .buttons-container { grid-template-columns: 1fr; gap: .75rem; }
    .button { min-height: 5.8rem; }
    .paciente-linha { grid-template-columns: auto minmax(0, 1fr); gap: 1rem; padding: 1rem 1.1rem; }
    .pl-item .paciente-linha { padding-right: 3.6rem; }
    .btn-pontos { right: .5rem; }
    .paciente-linha > .monograma, .paciente-linha > .esq-circulo { grid-row: 1 / span 2; }
    .pl-diag { grid-column: 2; grid-row: 2; margin-top: -.5rem; }
    .abas { gap: 1.4rem; }
    .faixa-finalizado { flex-wrap: wrap; }
    .ficha-dados { grid-template-columns: 1fr; }
    .lt-item { grid-template-columns: 4.4rem minmax(0, 1fr); }
    .tr-conteudo { padding-left: 0; }
    .tr-fala { grid-template-columns: 1fr; gap: .1rem; }
    .lt-ver { display: none; }
    .campos-duplos { grid-template-columns: 1fr; gap: 0; }
    .gaveta-cab, .gaveta-corpo, .gaveta-rodape { padding-left: 1.4rem; padding-right: 1.4rem; }
    .bloco { padding: 1.4rem 1.2rem; }
    .section-head h3 { white-space: normal; font-size: 1.45rem; }
    .teclado { grid-template-columns: repeat(3, 4.2rem); gap: .9rem 1.1rem; }
    .tecla { width: 4.2rem; height: 4.2rem; }
    .rodape-dentro { justify-content: center; text-align: center; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
    html { scroll-behavior: auto; }
}
