/* ============================================================================
   core.css — folha do core.js (compartilhada mobile + desktop).
   Emitida à mão, NÃO gerada: o CSS morava em strings dentro do core.ts e saiu de
   lá para caber em folha de verdade (novos estilos entram aqui, não no .ts).
   Cor = SEMPRE token do theme.css; nunca literal.
   Ordem das seções = ordem original de injeção no <head> (a cascata não mudou).
   ========================================================================= */

/* ==================== TOGGLE DE TEMA (dia/noite/auto) ==================== */
.tema-tgl{display:inline-flex;gap:2px;border:1px solid var(--line);border-radius:999px;padding:2px;background:var(--card)}
.tema-tgl button{display:inline-flex;align-items:center;gap:5px;min-height:30px;padding:4px 11px;border:none;background:transparent;color:var(--mut);border-radius:999px;font:inherit;font-size:12px;cursor:pointer}
.tema-tgl button svg{width:15px;height:15px}
.tema-tgl button.on{background:var(--acc);color:var(--on-acc);font-weight:700}

/* ==================== AUDITORIA (navegação de versões) ==================== */
.audit-nav{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding-bottom:8px;border-bottom:1px solid var(--line);margin-bottom:10px}
.audit-b{min-width:34px;min-height:32px;padding:4px 10px;border:1px solid rgba(var(--acc-rgb),.22);background:var(--card);color:inherit;border-radius:8px;cursor:pointer;font-size:15px}
.audit-b:disabled{opacity:.35;cursor:default}
/* o "×" é quadrado pequeno — o min-width da barra é para os botões com rótulo */
.audit-b.fechar{min-width:auto}

/* ==================== VÉU DA SOBREPOSIÇÃO ====================
   As mesmas oito declarações estavam copiadas em cinco cssText (core, anamnese,
   cirurgias). O `display:flex` fica aqui de propósito: quem ABRE e FECHA continua
   escrevendo style.display na fiação, e o inline sempre ganha da folha — a classe
   só diz como o véu é quando está de pé. */
.ov-veu{position:fixed;inset:0;z-index:1100;background:var(--overlay);display:flex;align-items:flex-start;justify-content:center;padding:14px}
/* dois véus nasceram com 1000: ficam ABAIXO dos de 1100 quando os dois estão
   abertos. Preservado como estava — mexer nisso é mexer em empilhamento. */
.ov-veu.z1000{z-index:1000}
.ov-veu.rolagem{overflow:auto}
.ov-veu.folgado{padding:20px 14px}

/* ==================== CARTÃO DA SOBREPOSIÇÃO ====================
   A caixa que flutua no centro do véu: visor de auditoria (core) e histórico da
   evolução das cirurgias. Nasceu no core e foi COPIADA declaração por declaração
   para a folha do mod; um nome só, aqui, para as duas não divergirem. */
.ov-card{width:560px;max-width:96vw;max-height:90vh;overflow:auto;background:linear-gradient(135deg,var(--bg),var(--bg2));border:1px solid rgba(var(--acc-rgb),.3);border-radius:14px;padding:16px 18px}
.ov-card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.audit-pos{min-width:64px;text-align:center;font-weight:700;font-size:13px;opacity:.85}
.audit-cab{font-size:13px;opacity:.9;margin:0 0 10px;font-weight:600}
.audit-sec{margin-bottom:10px}
.audit-sec h4{font-size:12.5px;color:var(--acc);margin:0 0 2px;font-weight:700}
.audit-cont{line-height:1.5;font-size:14px;white-space:pre-wrap}

/* ==================== LIXEIRA INLINE (padrão desktop) ==================== */
.lixinline-top{display:flex;align-items:center;gap:8px;background:var(--warn);color:var(--on-warn);font-weight:700;border-radius:9px;padding:8px 92px 8px 12px;margin-bottom:10px}
.lixinline-top .audit-b{background:rgba(var(--shade-rgb),.12);color:var(--on-warn);border-color:rgba(var(--shade-rgb),.25)}
.lixinline-rec{border-color:var(--acc) !important}
/* a caixa do modal: é mais larga que o .ov-card (a lixeira lista itens em
   colunas) e sem gradiente — o desenho vinha em cssText no core.ts. */
.lix-ovbox{width:640px;max-width:96vw;background:var(--panel);border:1px solid rgba(var(--acc-rgb),.3);border-radius:14px;padding:12px 14px}
/* no modal (mobile) não há botão Ajuda flutuante */
.lix-ovbox .lixinline-top{padding-right:14px}

/* ==================== MODAL DE ENVIO/IMPRESSÃO (documentos gerados) ======= */
.es-ov{position:fixed;inset:0;background:var(--overlay);display:flex;align-items:center;justify-content:center;z-index:10050;padding:2vh}
.es-dlg{width:min(680px,96vw);max-height:96vh;background:var(--panel);border:1px solid rgba(var(--acc-rgb),.22);border-radius:14px;padding:16px;display:flex;flex-direction:column;overflow:hidden;color:var(--txt);font-size:14px}
.es-tit{margin:0 0 6px;font-size:16px} .es-hint{opacity:.7;font-size:12px;margin-bottom:8px}
.es-list{flex:1;min-height:60px;overflow:auto;margin:2px 0 4px;border:1px solid var(--line);border-radius:8px;padding:4px 10px}
.es-item{display:flex;gap:8px;align-items:center;padding:5px 0;font-weight:normal;cursor:pointer}
.es-item input{width:auto;margin:0} .es-selo{opacity:.7}
.es-foot{flex-shrink:0;padding-top:8px;border-top:1px solid rgba(var(--acc-rgb),.14)}
.es-canais{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-bottom:2px}
.es-ch{display:flex;gap:6px;align-items:center;cursor:pointer} .es-ch input{width:auto}
.es-in{width:100%;margin:5px 0;padding:9px 11px;border-radius:8px;border:1px solid var(--line);background:var(--card);color:var(--txt)}
.es-st{font-size:12px;opacity:.85;min-height:16px;margin-top:6px} .es-st .es-err{color:var(--danger-fg)}
.es-btns{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:8px}
.es-go{min-height:38px;padding:8px 16px;border-radius:9px;border:1px solid var(--acc);background:var(--acc);color:var(--on-acc);font-weight:700;cursor:pointer}
.es-cancel{min-height:38px;padding:8px 14px;border:1px solid rgba(var(--acc-rgb),.2);background:var(--card);color:inherit;border-radius:9px;cursor:pointer}

/* ==================== TEXTO RICO LEVE (compartilhado) ====================
   tamanhos em em: o bloco herda a escala do campo do host */
.ricolv{line-height:1.5;cursor:text}
.ricolv:focus{outline:none}
.ricolv .l{min-height:1.5em}
.ricolv .h1{font-size:1.3em;font-weight:800;line-height:1.4}
.ricolv .h2{font-size:1.12em;font-weight:700;line-height:1.45}
.ricolv .li{padding-left:16px}
.ricolv .li::before{content:'• ';margin-left:-14px}
.ricolv .mn{font-size:.85em;opacity:.82}
.rl{color:var(--realce)} /* realce clínico (!!x!!) — cor por TOKEN, nunca literal */

/* ==================== VOCABULÁRIO COMPARTILHADO ====================
   Papéis de layout que os DOIS shells pedem, no lugar dos style="…" que estavam
   colados no HTML. Enquanto a medida mora no atributo ela vence qualquer folha —
   nenhum tema ou variante consegue mudá-la sem editar o HTML. Aqui, no fim da
   folha que mobile e desktop linkam DEPOIS da sua própria, ela fica no lugar
   certo da cascata: pesa uma classe e é sobreposta por quem for mais específico.
   Uma definição só para os dois shells — o mesmo nome não pode significar duas
   coisas em telas diferentes. */

/* linha de campos/controles lado a lado. .frow reparte espaço (rótulo em cima do
   campo); .lin alinha pelo meio (rótulo ao lado do campo). */
.frow{display:flex;gap:8px}
.lin{display:flex;align-items:center;gap:8px}
.lin.g6{gap:6px}
.wrap{flex-wrap:wrap}
.jend{justify-content:flex-end}
/* .f1 ocupa a sobra da linha; .mlauto empurra o resto para a esquerda */
.f1{flex:1}
.mlauto{margin-left:auto}
.ml8{margin-left:8px}

/* largura: a linha inteira, ou só o que o conteúdo pede */
.wfull{width:100%}
.wauto{width:auto}
/* checkbox dentro de <label>: sem isto ele herda o `input{width:100%}` do shell e
   vira uma barra atravessando a linha, com a margem do campo de texto junto. */
.chk-in{width:auto;margin:0}

/* Escala de espaçamento — o vocabulário com que o HTML pede folga. Mudar o ritmo
   das telas é mudar estes números, num lugar só. */
.mt0{margin-top:0}
.mt4{margin-top:4px}
.mt6{margin-top:6px}
.mt8{margin-top:8px}
.mt10{margin-top:10px}
.mt12{margin-top:12px}
.mt14{margin-top:14px}
.mb6{margin-bottom:6px}
.mb8{margin-bottom:8px}
.tcenter{text-align:center}
.tesq{text-align:left}
/* texto que preserva as quebras que o usuário digitou (evolução, descrição) */
.pre-wrap{white-space:pre-wrap}
.mb10{margin-bottom:10px}
.my10{margin:10px 0}
.m0{margin:0}
/* respiro da CAIXA DE ESTADO ("Carregando…", "Nada aqui", "Erro de rede"): o
   texto é filho direto do painel e sem isso encosta na borda. Quatro valores
   porque quatro tamanhos de painel, não porque alguém escolheu no olho. */
/* respiro só em cima e embaixo (linha de estado dentro de lista) */
.py6{padding:6px 0}
.py8{padding:8px 0}
.py10{padding:10px 0}
.py12{padding:12px 0}
.pt6{padding-top:6px}
.fs12{font-size:12px}
.fs13{font-size:13px}
.fs14{font-size:14px}
.p6{padding:6px}
.p8{padding:8px}
.p10{padding:10px}
.p12{padding:12px}
.p14{padding:14px}
.p16{padding:16px}
.p18{padding:18px}
/* tinta avulsa: um pedaço de texto que destoa do resto da linha (o estado
   "enviado" em verde, o "Erro" em vermelho). Só o token — quem dá tamanho e
   peso é a classe do bloco em volta. */
.c-acc{color:var(--acc)}
.c-danger{color:var(--danger)}
.col{display:flex;flex-direction:column}
.jcenter{justify-content:center}
.aend{align-items:flex-end}
.fwn{font-weight:normal}
.lin.g10{gap:10px}
.lin.g12{gap:12px}
/* não quebra a linha (data/hora, telefone, rótulo curto ao lado do campo).
   Morava na folha do desktop; o mobile pede o mesmo, e o mesmo nome não pode
   existir em duas folhas com o risco de divergirem. */
.nw{white-space:nowrap}
.frow.g6{gap:6px}
.frow.g12{gap:12px}
.frow.g18{gap:18px}

/* lista de documentos do modal de envio: é um <label> montado à mão, irmão do
   .es-item mas com respiro próprio — o checkbox precisa da regra escrita AQUI
   porque cada mod tem o seu `<contêiner> input{width:100%}` e um utilitário de
   uma classe perderia para eles. O compound (classe+classe) ganha de todos. */
.envio-lbl{display:flex;align-items:center;gap:8px;font-weight:normal;padding:4px 0}
.envio-lbl .envio-chk{width:auto;margin:0}

/* rótulo que abraça o botão de tema: `label` é negrito e ganha folga em cima
   (regra de elemento nas duas cascas), e num rótulo com checkbox isso desalinha.
   O desktop só acrescenta o tamanho da letra, na folha dele. */
.tema-lbl{display:flex;align-items:center;gap:8px;font-weight:normal;
          margin:8px 0 4px;cursor:pointer}

/* o ditado é a MESMA tela nas duas cascas — a dica e a linha de status batem
   declaração por declaração, então a regra é uma só. A caixa de texto NÃO bate
   (o desktop usa o véu no lugar do card): fica na folha de cada casca. */
#ditadoDica{margin-bottom:10px;background:var(--aviso-bg);color:var(--aviso-fg);
            border:1px solid var(--aviso-line);border-radius:10px;padding:12px 14px;
            font-weight:600;line-height:1.5}
#ditadoStatus{min-height:16px;margin-bottom:6px}

/* recado ocupando a semana inteira do calendário ("Carregando…", "Nada nesta
   data"): a grade tem sete colunas, e sem o grid-column o texto ficaria espremido
   na primeira. O respiro é utilitário — 12px no toque, 8px no desktop. */
.cal-msg{grid-column:1/8;text-align:center}

/* rótulo miúdo em acento, acima do campo (DATA, TIPO DE LENTE). O form clínico e
   as lentes desenhavam o mesmo rótulo em style= cada um no seu arquivo. */
.rot-acc{font-size:12px;color:var(--acc)}
.rot-acc.bloco{margin:8px 0 4px}

/* texto DITADO (voz): preserva as quebras que a fala gerou e vem esmaecido —
   é a matéria-prima, não o registro. Anamnese e oftalmo pediam o mesmo par. */
.ditado{white-space:pre-wrap;opacity:.85}
/* ícone SVG gerado pelo IC.*: sobe um fio para sentar na linha de base do texto
   ao lado. Estava em style= dentro do gerador — repetido em CADA ícone da tela.
   NÃO chamar de .ic: esse nome já é do ícone-botão do shell mobile
   (mobile.css: 22px, display:block) — o contrato de tamanho é outro. */
.ic-inl{vertical-align:-.15em}
.selfc{align-self:center}

/* ==================== CARTÃO DE ITEM DE LISTA ====================
   A MESMA caixa em seis listas de busca (catálogo do receituário, memórias,
   posologias, resultados de medicação) do app e das prescrições. Estava
   copiada declaração por declaração em cada uma delas; as variantes só trocam
   a cor da borda e o fundo — o desenho é um só, e agora muda num lugar só. */
.cartao{padding:8px 10px;border:1px solid var(--line);border-radius:8px;margin-bottom:6px}
.cartao.clicavel{cursor:pointer}
.cartao.mem{border-color:rgba(var(--acc2-rgb),.35);background:rgba(var(--acc2-rgb),.06)}
.cartao.pos{border-color:rgba(var(--info-rgb),.3);background:rgba(var(--info-rgb),.06)}
.cartao.mini{padding:6px 9px;margin-bottom:5px}
/* dentro de sobreposição (retornos, mensagens do WhatsApp) o cartão respira dos
   dois lados e arredonda um pouco mais — é linha de lista, não item empilhado. */
.cartao.solto{border-radius:10px;margin:6px 0}
/* item de retorno já resolvido — desbota a linha inteira. Solta (não composta
   com .cartao) porque o desktop desenha a mesma lista com .ret-row. */
.resolvido{opacity:.55}

/* escala de espaçamento — complementos */
.mt3{margin-top:3px}
.mb4{margin-bottom:4px}
.my2{margin:2px 0}
.my4{margin:4px 0}
.my6{margin:6px 0}
.minw0{min-width:0}
.frow.g4{gap:4px}

/* ==================== LISTA DE BUSCA (medicação, memórias, catálogo) ========
   Mobile e desktop montam a MESMA lista em arquivos diferentes (puro-* e mod-*),
   e o desenho estava copiado nos dois. Um vocabulário só, na folha que as duas
   cascas linkam, para o par não voltar a divergir sem ninguém perceber. */
.grupo-tit{margin:8px 2px 4px;font-weight:700}
.grupo-tit.primeiro{margin-top:2px}
.vazio-busca{padding:6px 8px}
/* coluna vazia no lugar do checkbox, para as linhas continuarem alinhadas
   quando o item não é selecionável (suspenso / lixeira). */
.chk-vago{width:16px;display:inline-block}
.pres-pos{font-size:13px}

/* ==================== PRESCRIÇÕES: LINHA DO PLANO (mobile) ================
   O desktop desenha a MESMA linha com .mp-item, na folha dele. O mobile monta a
   sua em puro-prescricoes.ts — e a mod-prescricoes.css só é linkada na casca do
   desktop, então a regra do mobile tem de morar AQUI (a folha que as duas
   linkam), senão ela simplesmente não chega ao aparelho.
   .sel/.off eram estilo calculado dentro da string; e a seleção DEPOIS do
   clique era repintada à mão em app.ts com outro par de cores (--info-fg /
   rgba(--info-rgb,.12)), que só coincidia com --pres-sel no tema noite. Virando
   classe, o primeiro desenho e o clique passam a usar o MESMO par de tokens. */
.pres-item{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:8px;margin-bottom:8px;cursor:pointer}
.pres-item.sel{border-color:var(--pres-sel);background:var(--pres-sel-bg)}
.pres-item.off{opacity:.7}
.pres-item .pres-chk{width:auto;margin:2px 0 0}
/* "cadastrar como novo medicamento": última opção da busca, botão de linha
   inteira. Uma classe basta — nenhum `<contêiner> button` da casca alcança o
   #medResultados (conferido regra a regra). */
/* título da seção dos suspensos: separa da lista de cima sem virar seção. */
.pres-susp{margin:14px 0 6px}
.med-novo{margin-top:4px;width:100%;padding:9px;border-radius:8px;background:rgba(var(--acc2-rgb),.16);border:1px solid rgba(var(--acc2-rgb),.4);color:var(--txt);cursor:pointer;font-weight:700}

/* selo da memória automatizada por IA: a MESMA pílula em três estados, montada
   dos dois lados (mobile em puro-prescricoes.ts, desktop em mod-prescricoes.ts).
   O par fundo/tinta é token (theme.css) — na string ia só o desenho. */
.badge-ia{font-size:11px;border-radius:5px;padding:1px 6px;white-space:nowrap}
.badge-ia.rev{background:var(--mem-ia-revisar-bg);color:var(--mem-ia-revisar-fg)}
.badge-ia.ok{background:var(--mem-ia-ok-bg);color:var(--mem-ia-ok-fg)}
.badge-ia.rej{background:var(--mem-ia-rejeitada-bg);color:var(--mem-ia-rejeitada-fg)}

/* ==================== RECEITUÁRIO: LEITURA E EDIÇÃO DOS MEDICAMENTOS =====
   Quem monta é o puro-receituario.ts (camada pura), então a folha tem de ser a
   compartilhada. São três caixas: a linha da lista de leitura, a linha do
   receituário já gerado (mesmo fio embaixo) e o bloco de UM medicamento no
   editor. Os campos de dentro seguem no vocabulário comum (.wfull/.f1/.mt6) —
   nenhum `<contêiner> input` da casca alcança o #rxMedsEd (conferido). */
.rx-leitura{padding:8px 0;border-bottom:1px solid rgba(var(--tint-rgb),.08)}
.rx-uso{font-size:13px;white-space:pre-wrap}
.rx-gerado{padding:7px 0;border-bottom:1px solid rgba(var(--tint-rgb),.08)}
.rx-med{border:1px solid var(--line);border-radius:8px;padding:10px;margin-bottom:8px}
/* o botão do cartão é menor que o .icobtn da casca — peso 2 ganha dele */
.rx-med .icobtn{padding:5px 9px}
