/* Katabasis Clínica · estilo
   Todas as cores e medidas moram nas variáveis abaixo: mudar o visual é mexer aqui. */

:root {
  --escala: 1;
  --fundo: #060D16;
  --fundo-grad: linear-gradient(180deg, #12243A 0%, #0A1726 45%, #060D16 100%);
  --bloco: linear-gradient(160deg, #16293D 0%, #0F1F30 60%, #0B1826 100%);
  --bloco-liso: #102133;
  --linha: #1A2E44;
  --linha-hover: #1E3650;
  --borda: #20364D;
  --texto: #F4EEE2;
  --apoio: #D3DEE8;
  --suave: #8396AA;
  --ouro: #E0B855;
  --ouro2: #B8902F;
  --ouro-fundo: rgba(224, 184, 85, .12);
  --verde: #7FC29B;
  --verm: #E06A5A;
  --azul: #6FA3D9;
  --lilas: #B79CE8;
  --rosa: #E59BB8;
  --agua: #5CC2B8;
  --btn: linear-gradient(180deg, #2A4059 0%, #1A2C40 100%);
  --relevo: inset 0 1px 0 rgba(255,255,255,.09), inset 0 -1px 0 rgba(0,0,0,.5), 0 2px 4px rgba(0,0,0,.55);
  --afundado: inset 0 2px 4px rgba(0,0,0,.5), inset 0 0 0 1px rgba(0,0,0,.35);
  --sombra-painel: -12px 0 32px rgba(0,0,0,.45);
  --forte: linear-gradient(180deg, #EBC66A 0%, #C99B36 100%); /* botão principal */
  --forte-texto: #1B1405;
  --forte-borda: #C99B36;
  --sombra-palco: inset 0 0 60px rgba(0,0,0,.25);
  --raio: 10px;
  --alvo: 44px; /* tamanho mínimo de toque */
  color-scheme: dark;
}
/* Quatro estilos (pedido de 29/10, inspirados nos humores do Mandala, sem copiar):
   Katabasis (o clássico azul-noite e dourado, acima), Escuro (grafite), Claro (branco limpo) e Zen (sálvia).
   Os três novos são planos: sem relevo, elegância pela calma. */

:root[data-tema="escuro"] {
  --fundo: #101214;
  --fundo-grad: linear-gradient(180deg, #1A1D20 0%, #131517 50%, #0E0F11 100%);
  --bloco: #1A1D21;
  --bloco-liso: #1D2024;
  --linha: #1C1F23;
  --linha-hover: #24282D;
  --borda: #2D3238;
  --texto: #EDEDEC;
  --apoio: #C9CDD2;
  --suave: #8C939B;
  --ouro: #D9BD7A;
  --ouro2: #A58C52;
  --ouro-fundo: rgba(217, 189, 122, .10);
  --verde: #86C59F;
  --verm: #E27D6E;
  --azul: #8DB3DD;
  --lilas: #BBA6E6;
  --rosa: #E5A5BF;
  --agua: #6CC5BB;
  --btn: #23272C;
  --relevo: 0 1px 2px rgba(0,0,0,.4);
  --afundado: inset 0 1px 2px rgba(0,0,0,.45);
  --sombra-painel: -12px 0 32px rgba(0,0,0,.5);
  --forte: #D9BD7A;
  --forte-texto: #16130B;
  --forte-borda: #D9BD7A;
  --sombra-palco: inset 0 0 50px rgba(0,0,0,.3);
}

/* Quinto estilo (04/11/2026, avaliação de UX): "Máscara", o preto com relevo e ouro em degradê da Clínica Virtual,
   que o Jayson acha mais bonita e intuitiva. Só variáveis, nada de regra nova. */
/* 04/11, com as duas telas lado a lado: a máscara em uso é a azul-noite (desde 22/10), não a preta.
   O estilo segue a dela: fundo mais claro no topo e mais escuro embaixo, blocos em degradê, ouro em relevo. */
:root[data-tema="mascara"] {
  --fundo: #060D16;
  --fundo-grad: linear-gradient(180deg, #1C3652 0%, #10223A 35%, #08131F 75%, #050B13 100%);
  --bloco: linear-gradient(160deg, #16293D 0%, #0F1F30 60%, #0B1826 100%);
  --bloco-liso: #0F1F30;
  --linha: #102133;
  --linha-hover: #18304A;
  --borda: #20364D;
  --texto: #F4EEE2;
  --apoio: #D3DEE8;
  --suave: #8396AA;
  --btn: linear-gradient(180deg, #2A4059 0%, #1A2C40 100%);
  --relevo: inset 0 1px 0 rgba(255,255,255,.09), inset 0 -1px 0 rgba(0,0,0,.5), 0 2px 4px rgba(0,0,0,.55), 0 1px 1px rgba(0,0,0,.6);
  --afundado: inset 0 2px 4px rgba(0,0,0,.6), inset 0 0 0 1px rgba(0,0,0,.4);
  --forte: linear-gradient(180deg, #EDCB72 0%, #D4A944 55%, #B8902F 100%);
  --forte-texto: #1A1406;
  --forte-borda: #7A5E1E;
}

:root[data-tema="claro"] {
  --fundo: #F6F6F4;
  --fundo-grad: linear-gradient(180deg, #FFFFFF 0%, #F6F6F4 100%);
  --bloco: #FFFFFF;
  --bloco-liso: #FFFFFF;
  --linha: #FFFFFF;
  --linha-hover: #F5F3EE;
  --borda: #E4E2DC;
  --texto: #1F2328;
  --apoio: #3A4047;
  --suave: #6B7178;
  --ouro: #8A6A1F;
  --ouro2: #B8963F;
  --ouro-fundo: rgba(176, 138, 58, .09);
  --verde: #2F7A50;
  --verm: #B3402F;
  --azul: #2E64A0;
  --lilas: #6F52B0;
  --rosa: #A8466F;
  --agua: #1D7F75;
  --btn: #FFFFFF;
  --relevo: 0 1px 2px rgba(20,20,20,.08);
  --afundado: inset 0 1px 2px rgba(20,20,20,.06);
  --sombra-painel: -12px 0 32px rgba(20,20,20,.10);
  --forte: #D9B865;
  --forte-texto: #1B1405;
  --forte-borda: #C8A453;
  --sombra-palco: inset 0 0 40px rgba(0,0,0,.035);
  color-scheme: light;
}

:root[data-tema="zen"] {
  /* Lote 16: areia e verde-oliva, com menos brilho, para não parecer o Claro. */
  --fundo: #E2DAC8;
  --fundo-grad: linear-gradient(180deg, #E6DFCE 0%, #DCD3C0 100%);
  --bloco: #ECE5D6;
  --bloco-liso: #EFE9DB;
  --linha: #ECE5D6;
  --linha-hover: #E1D9C7;
  --borda: #C9BFA8;
  --texto: #2E2C22;
  --apoio: #45412F;
  --suave: #5C5744;
  --ouro: #5E6B35;
  --ouro2: #8C9560;
  --ouro-fundo: rgba(94, 107, 53, .13);
  --verde: #56702F;
  --verm: #A34A33;
  --azul: #4A6B7F;
  --lilas: #75618F;
  --rosa: #9A5570;
  --agua: #4C7A6C;
  --btn: #EFE9DB;
  --relevo: 0 1px 2px rgba(60,52,30,.10);
  --afundado: inset 0 1px 2px rgba(60,52,30,.09);
  --sombra-painel: -12px 0 32px rgba(60,52,30,.16);
  --forte: #5E6B35;
  --forte-texto: #F5F1E6;
  --forte-borda: #5E6B35;
  --sombra-palco: inset 0 0 40px rgba(60,52,30,.05);
  --raio: 14px;
  color-scheme: light;
}

:root[data-contraste="alto"] {
  --suave: #B9C7D6;
  --apoio: #FFFFFF;
  --borda: #4B6A8A;
}
:root[data-tema="escuro"][data-contraste="alto"] { --borda: #5A626C; }
:root[data-tema="claro"][data-contraste="alto"],
:root[data-tema="zen"][data-contraste="alto"] {
  --suave: #3D4A58;
  --apoio: #000000;
  --borda: #8C8C80;
}

* { box-sizing: border-box; }
html { font-size: calc(15px * var(--escala)); }
body {
  margin: 0; min-height: 100vh; color: var(--texto);
  background: var(--fundo); background-image: var(--fundo-grad); background-attachment: fixed;
  font-family: 'IBM Plex Sans', system-ui, sans-serif; line-height: 1.45;
}
h1, h2, h3 { font-family: Spectral, Georgia, serif; font-weight: 600; margin: 0; }
button, input, select, textarea { font: inherit; color: inherit; }
svg.lucide { width: 1.15em; height: 1.15em; stroke-width: 1.8; flex: none; }
.oculto { display: none !important; }

/* faixa do modo teste */
.faixa-teste {
  display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem;
  padding: .4rem 1rem; font-size: .85rem; color: #1B1405; background: var(--ouro);
}
.faixa-teste strong { letter-spacing: .04em; }
.faixa-teste select { background: rgba(255,255,255,.55); border: 0; border-radius: 6px; padding: .2rem .4rem; max-width: 100%; color: #1B1405; }
.faixa-teste .dor { opacity: .85; font-style: italic; }

/* topo */
.topo {
  display: flex; align-items: center; gap: 1rem; padding: .7rem 1.25rem;
  border-bottom: 1px solid var(--borda); position: sticky; top: 0; z-index: 20;
  background: color-mix(in srgb, var(--fundo) 85%, transparent); backdrop-filter: blur(8px);
}
.marca { display: flex; align-items: baseline; gap: .45rem; white-space: nowrap; }
.marca h1 { font-size: 1.35rem; color: var(--ouro); letter-spacing: .02em; }
.marca span { color: var(--suave); font-size: .9rem; }
.nav { display: flex; gap: .25rem; margin: 0 auto; padding: .25rem; border-radius: 999px; background: var(--bloco-liso); box-shadow: var(--afundado); }
.nav button {
  display: flex; align-items: center; gap: .4rem; border: 0; background: none; cursor: pointer;
  padding: .45rem .9rem; border-radius: 999px; color: var(--apoio); min-height: 36px;
}
.nav button:hover { color: var(--texto); }
.nav button[aria-current="page"] { background: var(--btn); color: var(--ouro); box-shadow: var(--relevo); }
.nav button.breve { opacity: .45; }
.ajustes { display: flex; gap: .3rem; }

/* botões */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .45rem;
  min-height: 38px; padding: .4rem .85rem; border-radius: 8px; cursor: pointer;
  border: 1px solid var(--borda); background: var(--btn); box-shadow: var(--relevo); color: var(--texto);
  white-space: nowrap; text-decoration: none;
}
.btn:hover { border-color: var(--ouro2); }
.btn:active { box-shadow: var(--afundado); }
.btn.ouro { color: var(--forte-texto); background: var(--forte); border-color: var(--forte-borda); font-weight: 600; }
.btn.icone { padding: .4rem; min-width: 38px; }
.btn.leve { background: none; box-shadow: none; border-color: transparent; color: var(--apoio); }
.btn.leve:hover { border-color: var(--borda); color: var(--texto); }
.btn[disabled] { opacity: .4; cursor: not-allowed; }
:focus-visible { outline: 2px solid var(--ouro); outline-offset: 2px; }

/* página */
main { max-width: 1180px; margin: 0 auto; padding: 1.25rem; }
.barra { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; margin-bottom: 1rem; }
.busca {
  flex: 1 1 320px; display: flex; align-items: center; gap: .6rem;
  background: var(--bloco-liso); border: 1px solid var(--borda); border-radius: 12px;
  padding: 0 .9rem; min-height: 48px; box-shadow: var(--afundado);
}
.busca input { flex: 1; border: 0; background: none; outline: none; font-size: 1.05rem; min-width: 0; }
.busca kbd { font-size: .75rem; color: var(--suave); border: 1px solid var(--borda); border-radius: 4px; padding: 0 .35rem; }
.chips { display: flex; gap: .35rem; flex-wrap: wrap; }
.chip {
  border: 1px solid var(--borda); background: none; border-radius: 999px; padding: .3rem .8rem;
  cursor: pointer; color: var(--apoio); min-height: 34px;
}
.chip[aria-pressed="true"] { background: var(--ouro-fundo); color: var(--ouro); border-color: var(--ouro2); }
.chip b { font-weight: 600; margin-left: .2rem; }

/* lista de pacientes */
.grupo { margin-bottom: 1.25rem; }
.grupo h2 {
  font-family: 'IBM Plex Sans', sans-serif; font-size: .78rem; letter-spacing: .12em; text-transform: uppercase;
  color: var(--suave); font-weight: 600; margin: 0 0 .4rem .25rem; display: flex; gap: .5rem; align-items: center;
}
.grupo h2 .hoje { color: var(--ouro); letter-spacing: .05em; }
.lista { border: 1px solid var(--borda); border-radius: var(--raio); overflow: hidden; background: var(--bloco); }
.pac {
  display: grid; grid-template-columns: 4.2rem minmax(0, 1fr) 11rem 6rem auto; align-items: center; gap: .9rem;
  padding: .6rem .9rem; border-top: 1px solid var(--borda); cursor: pointer; min-height: 58px;
}
.pac:first-child { border-top: 0; }
.pac:hover, .pac.sel { background: var(--linha-hover); }
.pac.sel { box-shadow: inset 3px 0 0 var(--ouro); }
.pac .hora { font-variant-numeric: tabular-nums; font-size: 1.1rem; color: var(--ouro); font-weight: 500; }
.pac .hora.sem { color: var(--suave); font-size: .85rem; }
.pac .nome { font-size: 1.02rem; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pac .sub { display: flex; gap: .4rem; flex-wrap: wrap; margin-top: .1rem; font-size: .8rem; color: var(--suave); }
.etq { display: inline-flex; align-items: center; gap: .25rem; border: 1px solid var(--borda); border-radius: 5px; padding: 0 .35rem; font-size: .75rem; color: var(--apoio); }
.etq.pausa { color: var(--azul); border-color: color-mix(in srgb, var(--azul) 50%, transparent); }
.etq.encerrado { color: var(--suave); }
.etq.alerta { color: var(--ouro); border-color: var(--ouro2); }
.pac .lugar { display: flex; align-items: center; gap: .4rem; color: var(--apoio); font-size: .9rem; }
.pac .lugar.falta { color: var(--ouro); }
.pac .valor { text-align: right; font-variant-numeric: tabular-nums; color: var(--apoio); }
.pac .acoes { display: flex; gap: .3rem; justify-content: flex-end; }
.pac.inativo .nome, .pac.inativo .hora { opacity: .6; }
.vazio { text-align: center; padding: 3rem 1rem; color: var(--suave); }
.vazio .btn { margin-top: 1rem; }

/* ficha (painel lateral) */
.veu { position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 30; }
.ficha {
  position: fixed; top: 0; right: 0; bottom: 0; width: min(620px, 100vw); z-index: 31;
  background: var(--fundo); background-image: var(--fundo-grad); border-left: 1px solid var(--borda);
  box-shadow: var(--sombra-painel); display: flex; flex-direction: column;
}
.ficha-topo { padding: 1rem 1.25rem .75rem; border-bottom: 1px solid var(--borda); }
.ficha-topo .linha1 { display: flex; align-items: flex-start; gap: .75rem; }
.ficha-topo h2 { font-size: 1.55rem; line-height: 1.2; flex: 1; }
.ficha-topo .resumo { color: var(--suave); margin-top: .25rem; font-size: .9rem; }
.ficha-topo .rapidas { display: flex; gap: .4rem; flex-wrap: wrap; margin-top: .75rem; }
.ficha-corpo { overflow-y: auto; padding: .5rem 1.25rem 2rem; flex: 1; }
.secao { padding: 1rem 0; border-bottom: 1px solid var(--borda); }
.secao:last-child { border-bottom: 0; }
.secao h3 { font-size: 1.05rem; color: var(--ouro); margin-bottom: .7rem; display: flex; align-items: center; gap: .5rem; }
.secao h3 small { font-family: 'IBM Plex Sans', sans-serif; font-weight: 400; font-size: .78rem; color: var(--suave); }
.campos { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem 1rem; }
.campo { display: flex; flex-direction: column; gap: .25rem; min-width: 0; }
.campo.largo { grid-column: 1 / -1; }
.campo label { font-size: .8rem; color: var(--suave); }
.campo input, .campo select, .campo textarea {
  width: 100%; min-height: 40px; padding: .45rem .65rem; border-radius: 8px;
  border: 1px solid var(--borda); background: var(--bloco-liso); box-shadow: var(--afundado);
}
.campo textarea { min-height: 84px; resize: vertical; }
.campo input:focus, .campo select:focus, .campo textarea:focus { outline: none; border-color: var(--ouro2); }
.campo .dica { font-size: .75rem; color: var(--suave); }
.campo .com-botao { display: flex; gap: .4rem; }
.campo .com-botao input { flex: 1; }
.segmento { display: flex; gap: 0; border: 1px solid var(--borda); border-radius: 8px; overflow: hidden; }
.segmento button { flex: 1; border: 0; background: none; padding: .5rem .4rem; cursor: pointer; color: var(--apoio); min-height: 40px; border-left: 1px solid var(--borda); }
.segmento button:first-child { border-left: 0; }
.segmento button[aria-pressed="true"] { background: var(--ouro-fundo); color: var(--ouro); font-weight: 600; }
.acrescentar { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; padding: .9rem 0; border-bottom: 1px solid var(--borda); color: var(--suave); font-size: .85rem; }
.consent { display: flex; align-items: center; gap: .75rem; padding: .5rem 0; border-top: 1px dashed var(--borda); }
.consent:first-of-type { border-top: 0; }
.consent .qual { flex: 1; }
.consent .qual small { display: block; color: var(--suave); font-size: .78rem; }
.consent .estado { font-size: .85rem; }
.consent .estado.ok { color: var(--verde); }
.consent .estado.nao { color: var(--verm); }
.consent.desligado { opacity: .55; }
.historico { font-size: .85rem; color: var(--apoio); }
.historico li { padding: .3rem 0; border-top: 1px dashed var(--borda); list-style: none; }
.historico ul { padding: 0; margin: 0; }
.historico time { color: var(--suave); margin-right: .5rem; font-variant-numeric: tabular-nums; }

/* perfil */
.cartao { background: var(--bloco); border: 1px solid var(--borda); border-radius: var(--raio); padding: 1.25rem; margin-bottom: 1rem; }
.cartao h2 { font-size: 1.25rem; color: var(--ouro); margin-bottom: .25rem; }
.cartao > p { color: var(--suave); margin: 0 0 1rem; font-size: .9rem; }
.modulos { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: .6rem; }
.modulo { display: flex; gap: .7rem; align-items: flex-start; padding: .7rem .8rem; border: 1px solid var(--borda); border-radius: 8px; background: var(--bloco-liso); cursor: pointer; }
.modulo input { margin-top: .25rem; width: 18px; height: 18px; accent-color: var(--ouro2); }
.modulo small { display: block; color: var(--suave); font-size: .78rem; }
.modulo .de { color: var(--ouro); font-size: .72rem; }
.breve-tela { text-align: center; padding: 4rem 1rem; color: var(--suave); }
.breve-tela h2 { color: var(--ouro); margin-bottom: .5rem; }

.cartao h3.sub-titulo { font-size: 1.05rem; color: var(--texto); margin: 0 0 .25rem; }
.dica-cartao { color: var(--suave); font-size: .85rem; margin: .25rem 0 .9rem; }
.proximas { display: flex; align-items: flex-start; gap: .5rem; margin: .9rem 0 0; font-size: .88rem; color: var(--apoio); }
.proximas small { color: var(--suave); }

/* agenda: cores da situação (sempre junto com nome ou ícone, nunca só a cor) */
.sit-pendente { --cor-sit: var(--borda); }
.sit-compareceu { --cor-sit: var(--verde); }
.sit-falta_justificada { --cor-sit: var(--azul); }
.sit-falta_injustificada { --cor-sit: var(--verm); }
.sit-cancelado { --cor-sit: var(--suave); }

/* compromissos: cor por tipo (sempre com ícone e nome do tipo junto) */
.tipo-compromisso { --cor-tipo: var(--azul); }
.tipo-evento { --cor-tipo: var(--ouro); }
.tipo-tarefa { --cor-tipo: var(--verde); }
.tipo-minha_supervisao { --cor-tipo: var(--lilas); }
.tipo-minha_analise { --cor-tipo: var(--rosa); }
.tipo-grupo { --cor-tipo: var(--agua); }
.tipo-sessao { --cor-tipo: var(--apoio); }
.gev { --cor-tipo: var(--suave); }
.bloco.gev { cursor: pointer; border-style: dashed; border-left-style: solid; }
.sess.gev .nome { font-weight: 400; color: var(--apoio); }
.sess.comp { box-shadow: inset 4px 0 0 var(--cor-tipo); background: color-mix(in srgb, var(--cor-tipo) 6%, transparent); }
.sess.comp .lugar-mini svg { color: var(--cor-tipo); }
.sess.comp .hora small { color: var(--suave); }
.sess.comp.feita .nome, .tarefa.feita .tarefa-tit { text-decoration: line-through; opacity: .6; }
.bloco.comp { background: color-mix(in srgb, var(--cor-tipo) 16%, var(--bloco-liso)); border-left-color: var(--cor-tipo); }
.bloco.comp svg { color: var(--cor-tipo); margin: 0; }
.bloco.comp.feita { opacity: .55; text-decoration: line-through; }
.sem-todo { padding: .25rem; border-left: 1px solid var(--borda); border-bottom: 1px solid var(--borda); display: flex; flex-direction: column; gap: .2rem; min-width: 0; }
.sem-todo.canto { border-left: 0; text-align: right; color: var(--suave); font-size: .7rem; padding-right: .4rem; }
.chip-comp {
  display: flex; align-items: center; gap: .25rem; width: 100%; min-width: 0; padding: .1rem .35rem; cursor: pointer; text-align: left;
  border: 1px solid color-mix(in srgb, var(--cor-tipo) 50%, transparent); border-radius: 5px; font-size: .74rem; color: var(--texto);
  background: color-mix(in srgb, var(--cor-tipo) 14%, transparent);
}
.chip-comp span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chip-comp svg { width: .9em; height: .9em; color: var(--cor-tipo); }
.chip-comp.feita span { text-decoration: line-through; opacity: .6; }
.tarefas { margin-bottom: 1rem; padding: .8rem 1rem; border: 1px solid var(--borda); border-radius: var(--raio); background: var(--bloco); box-shadow: inset 4px 0 0 var(--verde); }
.tarefas h3 { display: flex; align-items: center; gap: .5rem; font-size: 1.05rem; color: var(--ouro); margin-bottom: .4rem; }
.tarefas h3 small { font-family: 'IBM Plex Sans', sans-serif; font-weight: 400; font-size: .8rem; color: var(--suave); }
.tarefa { display: flex; align-items: center; gap: .6rem; padding: .3rem 0; border-top: 1px dashed var(--borda); min-height: 40px; }
.tarefa:first-of-type { border-top: 0; }
.tarefa input { width: 20px; height: 20px; accent-color: var(--verde); flex: none; cursor: pointer; }
.tarefa-tit { flex: 1; min-width: 0; text-align: left; border: 0; background: none; cursor: pointer; padding: .2rem 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tarefa-tit:hover { color: var(--ouro); }
.tarefa small { color: var(--suave); font-size: .78rem; white-space: nowrap; }
.tarefa.atrasada small { color: var(--verm); }
.tipos { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .5rem; margin-bottom: 1rem; }
.tipo-btn { justify-content: flex-start; min-height: 46px; box-shadow: var(--relevo), inset 4px 0 0 var(--cor-tipo); }
.tipo-btn svg { color: var(--cor-tipo); }
.tipos.pequenos { display: flex; flex-wrap: wrap; gap: .35rem; margin: 0; }
.tipos.pequenos .chip { display: inline-flex; align-items: center; gap: .3rem; }
.tipos.pequenos .chip svg { color: var(--cor-tipo); }
.tipos.pequenos .chip[aria-pressed="true"] { border-color: var(--cor-tipo); background: color-mix(in srgb, var(--cor-tipo) 16%, transparent); color: var(--texto); }
label.marca { display: flex; align-items: center; gap: .4rem; font-size: .85rem; color: var(--apoio); cursor: pointer; margin-top: .3rem; }
label.marca.largo { grid-column: 1 / -1; }
label.marca input { width: 18px; height: 18px; accent-color: var(--ouro2); }
.secao.botoes { display: flex; flex-wrap: wrap; gap: .5rem; border-bottom: 0; }
.legenda .leg-comp::before { background: linear-gradient(90deg, var(--azul), var(--lilas), var(--agua)); }

.navdata { flex-wrap: nowrap; }
.barra.rodape { margin-top: 1rem; flex-wrap: wrap; }
.navdata h2 { font-size: 1.3rem; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.navdata .conta { margin-left: auto; color: var(--suave); font-size: .9rem; white-space: nowrap; }
.etq.hoje-etq { color: var(--ouro); border-color: var(--ouro2); }
.etq.verm { color: var(--verm); border-color: var(--verm); }
.faixa-info { display: flex; align-items: center; gap: .6rem; padding: .6rem .9rem; margin-bottom: 1rem; border: 1px solid var(--borda); border-radius: var(--raio); background: var(--bloco); }
/* Lote 25: certificado em ordem. */
.faixa-info.cert-ok { border-color: var(--verde); background: color-mix(in srgb, var(--verde) 12%, var(--bloco)); }
.faixa-info.cert-ok svg { color: var(--verde); flex: none; }
.faixa-info span { flex: 1; }
.faixa-info.feriado { color: var(--azul); }
.faixa-info.lembrete { border-color: var(--ouro2); }
.faixa-info.conflito { border-color: var(--verm); color: var(--apoio); }
.faixa-info.conflito svg { color: var(--verm); }

.proxima {
  display: grid; grid-template-columns: auto minmax(0, 1fr); gap: .3rem 1.25rem; align-items: center;
  padding: 1rem 1.25rem; margin-bottom: 1rem; border: 1px solid var(--ouro2); border-radius: var(--raio);
  background: var(--bloco); box-shadow: var(--relevo);
}
.proxima.agora { box-shadow: var(--relevo), inset 4px 0 0 var(--ouro); }
.proxima .p-rotulo { grid-column: 1 / -1; font-size: .75rem; letter-spacing: .12em; text-transform: uppercase; color: var(--ouro); font-weight: 600; }
.proxima .p-hora { font-size: 2.3rem; line-height: 1; font-variant-numeric: tabular-nums; color: var(--ouro); }
.proxima .p-nome { font-family: Spectral, Georgia, serif; font-size: 1.6rem; line-height: 1.15; }
.proxima .p-sub { display: flex; align-items: center; gap: .35rem; flex-wrap: wrap; color: var(--suave); font-size: .9rem; margin-top: .15rem; }
.proxima .rapidas { grid-column: 1 / -1; display: flex; gap: .5rem; flex-wrap: wrap; margin-top: .6rem; }

.sess > .situacoes { grid-column: 2 / -1; margin-top: 0; }
.sess {
  display: grid; grid-template-columns: 4.6rem minmax(0, 1fr) auto; gap: .35rem .9rem; align-items: center;
  padding: .6rem .9rem; border-top: 1px solid var(--borda); cursor: pointer; box-shadow: inset 4px 0 0 var(--cor-sit);
}
.sess:first-child { border-top: 0; }
.sess:hover { background: var(--linha-hover); }
.sess .hora { font-variant-numeric: tabular-nums; font-size: 1.1rem; color: var(--ouro); font-weight: 500; }
.sess .hora small { display: block; font-size: .72rem; color: var(--suave); font-weight: 400; }
.sess .nome { font-size: 1.02rem; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sess .sub { display: flex; gap: .45rem; flex-wrap: wrap; align-items: center; margin-top: .1rem; font-size: .8rem; color: var(--suave); }
.sess .sub .nota { font-style: italic; color: var(--apoio); }
.sess .acoes { display: flex; gap: .3rem; justify-content: flex-end; }
.sess.sit-cancelado .nome { text-decoration: line-through; opacity: .6; }
.lugar-mini { display: inline-flex; align-items: center; gap: .25rem; }
.situacoes { display: flex; flex-wrap: wrap; gap: .3rem; margin-top: .4rem; }
.sit-btn {
  display: inline-flex; align-items: center; gap: .3rem; min-height: 30px; padding: .15rem .6rem; cursor: pointer;
  border: 1px solid var(--borda); border-radius: 999px; background: none; color: var(--apoio); font-size: .8rem;
}
.sit-btn:hover { border-color: var(--cor-sit); }
.sit-btn[aria-pressed="true"] { background: color-mix(in srgb, var(--cor-sit) 20%, transparent); border-color: var(--cor-sit); color: var(--texto); font-weight: 600; }
.sit-btn svg { color: var(--cor-sit); }
.situacoes.grande .sit-btn { min-height: 42px; padding: .35rem .85rem; font-size: .92rem; }

.legenda { display: flex; flex-wrap: wrap; gap: .4rem 1rem; margin-top: .75rem; font-size: .8rem; color: var(--suave); }
.legenda span::before { content: ''; display: inline-block; width: .75rem; height: .75rem; border-radius: 3px; background: var(--cor-sit); margin-right: .35rem; vertical-align: -1px; }
.legenda span.sit-pendente::before { background: none; border: 1px dashed var(--suave); }
.legenda em { flex: 1 1 100%; }

/* semana (computador) */
.semana {
  display: grid; grid-template-columns: 3rem repeat(var(--colunas), minmax(0, 1fr));
  border: 1px solid var(--borda); border-radius: var(--raio); background: var(--bloco); overflow: hidden;
}
.sem-cab { padding: .45rem .4rem; text-align: center; font-size: .85rem; color: var(--apoio); border-left: 1px solid var(--borda); border-bottom: 1px solid var(--borda); }
.sem-cab.canto { border-left: 0; }
.sem-cab.hoje { color: var(--ouro); background: var(--ouro-fundo); }
.sem-cab small { display: block; font-size: .7rem; color: var(--azul); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sem-horas { position: relative; }
.sem-horas span { position: absolute; right: .4rem; margin-top: .15rem; font-size: .72rem; color: var(--suave); font-variant-numeric: tabular-nums; }
.sem-col {
  position: relative; border-left: 1px solid var(--borda); cursor: cell;
  background-image: repeating-linear-gradient(to bottom, var(--borda) 0 1px, transparent 1px var(--h-hora));
}
.sem-col.feriado { background-color: color-mix(in srgb, var(--azul) 8%, transparent); }
.sem-col.hoje { background-color: var(--ouro-fundo); }
.bloco {
  position: absolute; overflow: hidden; padding: .15rem .35rem; border-radius: 6px; cursor: grab;
  font-size: .78rem; line-height: 1.25; background: var(--bloco-liso); border: 1px solid var(--borda);
  border-left: 4px solid var(--cor-sit); box-shadow: var(--relevo);
}
.bloco:hover { border-color: var(--ouro2); border-left-color: var(--cor-sit); z-index: 2; }
.bloco .b-hora { color: var(--ouro); font-variant-numeric: tabular-nums; }
.bloco svg { width: .9em; height: .9em; color: var(--cor-sit); vertical-align: -1px; margin-left: .15rem; }
.bloco.baixo { white-space: nowrap; text-overflow: ellipsis; }
.bloco.sit-cancelado { opacity: .5; text-decoration: line-through; }
.bloco.arrastando { opacity: .35; }
.fantasma { position: absolute; left: 2px; right: 2px; z-index: 3; pointer-events: none; border: 2px dashed var(--ouro); border-radius: 6px; padding: 0 .3rem; font-size: .75rem; color: var(--ouro); background: var(--ouro-fundo); }
.agora-linha { position: absolute; left: 0; right: 0; height: 2px; background: var(--verm); z-index: 1; pointer-events: none; }
.agora-linha::before { content: ''; position: absolute; left: -4px; top: -3px; width: 8px; height: 8px; border-radius: 50%; background: var(--verm); }

/* semana (celular): faixa de dias */
.faixa-dias { display: flex; gap: .3rem; margin-bottom: 1rem; }
.faixa-dias button {
  flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; align-items: center; gap: .05rem; padding: .35rem .1rem;
  border: 1px solid var(--borda); border-radius: 8px; background: none; color: var(--apoio); cursor: pointer;
}
.faixa-dias button b { font-size: 1.05rem; }
.faixa-dias button small { font-size: .68rem; color: var(--suave); }
.faixa-dias button.hoje b { color: var(--ouro); }
.faixa-dias button[aria-pressed="true"] { border-color: var(--ouro2); background: var(--ouro-fundo); color: var(--ouro); }

/* grade de horários */
.grade-rolagem { overflow-x: auto; }
.grade {
  display: grid; grid-template-columns: 3rem repeat(var(--colunas), minmax(0, 1fr));
  border: 1px solid var(--borda); border-radius: var(--raio); background: var(--bloco); overflow: hidden;
}
.g-cab { padding: .5rem .4rem; text-align: center; font-weight: 600; font-size: .88rem; color: var(--apoio); border-left: 1px solid var(--borda); border-bottom: 1px solid var(--borda); }
.g-cab:first-child { border-left: 0; }
.g-cab small { font-weight: 400; color: var(--suave); }
.g-hora { padding: .35rem .4rem 0 0; text-align: right; font-size: .75rem; color: var(--suave); border-top: 1px solid var(--borda); font-variant-numeric: tabular-nums; }
.g-cel { min-height: 2.5rem; padding: .2rem; display: flex; flex-direction: column; gap: .2rem; border-left: 1px solid var(--borda); border-top: 1px solid var(--borda); }
.g-cel.alvo, .g-bandeja.alvo { background: var(--ouro-fundo); outline: 2px dashed var(--ouro2); outline-offset: -2px; }
.g-pac {
  display: flex; flex-wrap: wrap; align-items: center; gap: .25rem; padding: .2rem .4rem; cursor: grab;
  border: 1px solid var(--borda); border-radius: 6px; background: var(--bloco-liso); box-shadow: var(--relevo); font-size: .8rem;
}
.g-pac:hover { border-color: var(--ouro2); }
.g-pac .g-nome { flex: 1 1 auto; min-width: 0; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.g-pac small { font-size: .7rem; color: var(--suave); }
.g-pac .etq { font-size: .66rem; padding: 0 .25rem; }
.g-pac.movido { border: 1px dashed var(--ouro); background: var(--ouro-fundo); }
.g-pac.conflito { border-color: var(--verm); box-shadow: inset 0 0 0 1px var(--verm); }
.g-bandeja { display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; min-height: 3rem; padding: .6rem .8rem; margin-bottom: .8rem; border: 1px dashed var(--borda); border-radius: var(--raio); }
.g-bandeja > b { font-size: .85rem; color: var(--apoio); margin-right: .4rem; }
.g-bandeja .dica-cartao { margin: 0; }
.grade, .g-bandeja, .semana { user-select: none; }
.g-mudancas {
  margin-bottom: .8rem; display: flex; flex-wrap: wrap; gap: .75rem 1.25rem; align-items: flex-end;
  padding: .9rem 1rem; border: 1px solid var(--ouro2); border-radius: var(--raio); background: var(--bloco-liso); box-shadow: var(--relevo);
}
.g-mudancas .g-lista { flex: 1 1 280px; }
.g-mudancas ul { margin: .3rem 0 0; padding-left: 1.1rem; max-height: 6.5rem; overflow: auto; font-size: .85rem; color: var(--apoio); }
.g-mudancas .campo input { min-height: 40px; padding: .4rem .6rem; border-radius: 8px; border: 1px solid var(--borda); background: var(--bloco); }
.botoes { display: flex; gap: .5rem; flex-wrap: wrap; }

/* janela de pergunta */
dialog.pergunta {
  width: min(440px, calc(100vw - 2rem)); padding: 1.25rem; color: var(--texto);
  border: 1px solid var(--ouro2); border-radius: 12px; background: var(--bloco-liso); box-shadow: 0 16px 48px rgba(0,0,0,.5);
}
dialog.pergunta.larga { width: min(520px, calc(100vw - 2rem)); }
dialog.pergunta::backdrop { background: rgba(0,0,0,.5); }
dialog.pergunta h3 { color: var(--ouro); margin-bottom: .75rem; font-size: 1.2rem; }
dialog.pergunta > p { margin: 0 0 1rem; }
dialog.pergunta .dica { color: var(--suave); font-size: .85rem; margin-top: -.5rem; }
dialog.pergunta .campos { margin-bottom: 1.1rem; }

/* aviso (salvo, desfazer) */
.aviso {
  position: fixed; left: 50%; bottom: 1.25rem; transform: translateX(-50%); z-index: 50;
  display: flex; align-items: center; gap: .75rem; padding: .55rem .6rem .55rem 1rem; border-radius: 10px;
  background: var(--bloco-liso); border: 1px solid var(--ouro2); box-shadow: 0 8px 24px rgba(0,0,0,.35);
  max-width: calc(100vw - 2rem);
}
.aviso.erro { border-color: var(--verm); }

/* prontuário (módulo 3): janela larga por cima de tudo */
.pront-veu { position: fixed; inset: 0; background: rgba(0,0,0,.55); z-index: 40; }
.pront {
  position: fixed; top: 2vh; bottom: 2vh; left: 50%; transform: translateX(-50%); width: min(1040px, 96vw); z-index: 41;
  background: var(--fundo); background-image: var(--fundo-grad); border: 1px solid var(--borda); border-radius: 14px;
  box-shadow: 0 20px 60px rgba(0,0,0,.5); display: flex; flex-direction: column; overflow: hidden;
}
.pront-topo { padding: 1rem 1.25rem .6rem; border-bottom: 1px solid var(--borda); display: flex; flex-direction: column; gap: .6rem; }
.pront-topo .linha1 { display: flex; align-items: flex-start; gap: .5rem; }
.pront-topo .quem { flex: 1; min-width: 0; }
.pront-topo .quem small { display: block; color: var(--ouro); font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; }
.pront-topo h2 { font-size: 1.5rem; line-height: 1.2; }
.pront-topo .resumo { color: var(--suave); font-size: .88rem; }
.pront-ferr { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.pront-ferr .busca { flex: 1 1 260px; }
.pront-ferr .periodo { display: flex; align-items: center; gap: .35rem; font-size: .8rem; color: var(--suave); }
.pront-ferr .periodo input { min-height: 38px; padding: .3rem .5rem; border-radius: 8px; border: 1px solid var(--borda); background: var(--bloco-liso); color: var(--texto); }
.pront-expansao { display: flex; align-items: center; gap: .4rem; font-size: .82rem; color: var(--suave); }
.pront-expansao:empty { display: none; }
.pront-expansao svg { width: 1em; height: 1em; color: var(--ouro); flex: none; }
.pront-corpo { overflow-y: auto; padding: 1rem 1.25rem 2rem; flex: 1; }
.regs { display: flex; flex-direction: column; gap: .75rem; }
.reg { background: var(--bloco); border: 1px solid var(--borda); border-radius: var(--raio); padding: .85rem 1rem; }
.reg.rascunho { border-color: var(--ouro2); border-style: dashed; }
.reg.retirado { opacity: .7; background: none; }
.reg.pisca { animation: pisca 1.6s ease; }
@keyframes pisca { 0%, 60% { box-shadow: 0 0 0 3px var(--ouro); } 100% { box-shadow: none; } }
.reg-cab { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; margin-bottom: .45rem; }
.reg-tipo { display: inline-flex; align-items: center; gap: .3rem; font-weight: 600; font-size: .85rem; color: var(--cor-reg, var(--ouro)); }
.reg-tipo svg { width: 1.05em; height: 1.05em; }
.reg-data { color: var(--suave); font-size: .82rem; }
.reg-titulo { font-family: 'Spectral', serif; font-size: 1.05rem; }
.reg .etq.assinado { color: var(--verde); border-color: color-mix(in srgb, var(--verde) 50%, transparent); }
.reg .etq svg { width: .85em; height: .85em; }
.reg-texto { white-space: pre-wrap; line-height: 1.55; color: var(--apoio); }
.reg-texto.curto { display: -webkit-box; -webkit-line-clamp: 6; -webkit-box-orient: vertical; overflow: hidden; }
.reg-campos { display: flex; flex-direction: column; gap: .3rem; margin-top: .5rem; font-size: .92rem; color: var(--apoio); }
.reg-campos b { color: var(--suave); font-weight: 500; }
.reg-resumo { margin-top: .6rem; padding: .45rem .7rem; border-left: 3px solid var(--ouro2); background: var(--ouro-fundo); border-radius: 0 8px 8px 0; }
.reg-resumo small { display: block; color: var(--ouro); font-size: .72rem; letter-spacing: .05em; text-transform: uppercase; }
.reg-marca { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; margin-top: .55rem; font-size: .8rem; color: var(--suave); }
.reg-marca svg { width: 1em; height: 1em; }
.reg-acoes { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; margin-top: .7rem; }
.reg mark { background: color-mix(in srgb, var(--ouro) 35%, transparent); color: inherit; border-radius: 3px; padding: 0 .1em; }
.btn.mini, .chip.mini { min-height: 30px; padding: .15rem .5rem; font-size: .78rem; }
.btn.perigo { color: #fff; background: var(--verm); border-color: var(--verm); }
.reg-editor .campos { margin-top: .4rem; }
.reg-editor textarea { font-size: 1rem; line-height: 1.5; }
.reg-editor.corrigindo { border-color: var(--azul); }
.rotulo-linha { display: flex; align-items: center; gap: .5rem; justify-content: space-between; }
.editor-estado { font-size: .8rem; color: var(--suave); margin-left: auto; }
.erro-txt { color: var(--verm) !important; }
.tipo-reg-evolucao { --cor-reg: var(--ouro); }
.tipo-reg-sonho { --cor-reg: var(--lilas); }
.tipo-reg-imagem { --cor-reg: var(--rosa); }
.tipo-reg-marco { --cor-reg: var(--agua); }
.tipo-reg-demanda, .tipo-reg-encaminhamento, .tipo-reg-documento, .tipo-reg-anotacao, .tipo-reg-encerramento { --cor-reg: var(--azul); }
.menu-caixa { position: relative; }
.menu-caixa .menu { display: none; position: absolute; right: 0; top: calc(100% + 4px); z-index: 45; min-width: 230px; padding: .3rem;
  background: var(--bloco-liso); border: 1px solid var(--borda); border-radius: 10px; box-shadow: 0 12px 32px rgba(0,0,0,.4); }
.menu-caixa.aberto .menu { display: flex; flex-direction: column; }
.menu button { display: flex; align-items: center; gap: .5rem; text-align: left; padding: .55rem .7rem; border: 0; background: none; color: var(--texto); border-radius: 7px; cursor: pointer; min-height: 40px; }
.menu button:hover { background: var(--ouro-fundo); }
.menu button svg { width: 1.05em; height: 1.05em; color: var(--ouro); }
.linha-tempo { position: relative; padding-left: .25rem; }
.lt-ano { font-family: 'Spectral', serif; font-size: 1.4rem; color: var(--ouro); margin: 1rem 0 .25rem; }
.lt-mes { color: var(--suave); font-size: .85rem; text-transform: capitalize; margin: .6rem 0 .3rem 1.9rem; }
.lt-mes small { text-transform: none; }
.lt-item { display: flex; align-items: flex-start; gap: .7rem; width: 100%; text-align: left; background: none; border: 0; color: var(--texto); padding: .35rem 0; cursor: pointer;
  border-left: 2px solid var(--borda); margin-left: .75rem; padding-left: 1rem; position: relative; }
.lt-item .lt-ponto { position: absolute; left: -.8rem; top: .35rem; width: 1.5rem; height: 1.5rem; border-radius: 50%; display: grid; place-items: center;
  background: var(--bloco-liso); border: 2px solid var(--cor-reg, var(--ouro)); color: var(--cor-reg, var(--ouro)); }
.lt-item .lt-ponto svg { width: .8rem; height: .8rem; }
.lt-item > div { margin-left: .9rem; display: flex; flex-direction: column; }
.lt-item small { color: var(--suave); font-size: .8rem; }
.lt-item:hover strong { color: var(--ouro); }
.lt-item.inicio .lt-ponto { background: var(--ouro); }
.img-sonhos { margin-bottom: 1rem; padding: .8rem 1rem; border: 1px solid var(--borda); border-radius: var(--raio); }
.img-sonhos h3 { font-size: 1rem; color: var(--rosa); margin-bottom: .5rem; }
.img-chip { display: inline-flex; align-items: center; gap: .15rem; }
.dialog-versoes, .versoes { display: flex; flex-direction: column; gap: .75rem; max-height: 55vh; overflow-y: auto; margin-bottom: 1rem; }
.versao { border: 1px solid var(--borda); border-radius: 8px; padding: .6rem .75rem; }
.versao.excluida { opacity: .75; border-style: dashed; }
dialog.pergunta.doc { width: min(860px, calc(100vw - 2rem)); }
.doc-quadro { width: 100%; height: 70vh; border: 1px solid var(--borda); border-radius: 8px; background: #fff; margin-bottom: .75rem; }
.assocs { display: flex; flex-direction: column; gap: .4rem; }
.assoc { display: grid; grid-template-columns: minmax(90px, 160px) auto 1fr auto; gap: .4rem; align-items: center; }
.assoc input { min-height: 38px; padding: .35rem .55rem; border-radius: 8px; border: 1px solid var(--borda); background: var(--bloco-liso); color: var(--texto); min-width: 0; }
.cartao.desligado .modulo { opacity: .6; }
.pend-reg .acoes { display: flex; }
h3.sub-titulo small { font-family: 'IBM Plex Sans', sans-serif; font-weight: 400; color: var(--suave); font-size: .8rem; }

/* texto clínico: letra de leitura, maior (decisão de 29/10) */
.reg-texto, .reg-resumo div, .reg-editor textarea, .t-escrita { font-family: 'Spectral', Georgia, serif; font-size: 1.08rem; line-height: 1.6; }

/* telas que ocupam a altura inteira: Atendimento e Prontuário */
body[data-tela="trabalho"], body[data-tela="prontuario"] { display: flex; flex-direction: column; height: 100dvh; min-height: 0; }
body[data-tela="trabalho"] main, body[data-tela="prontuario"] main { flex: 1; min-height: 0; display: flex; flex-direction: column; width: 100%; }
body[data-tela="trabalho"] main { max-width: none; padding: .6rem .9rem .8rem; }
body[data-tela="prontuario"] main { max-width: 1120px; padding: .8rem 1rem; }
.pront.pagina { position: static; transform: none; width: 100%; flex: 1; min-height: 0; top: auto; bottom: auto; left: auto; box-shadow: none; border-radius: 14px; }
.pront-escolha { font-family: 'Spectral', serif; font-size: 1.45rem; font-weight: 600; color: var(--texto); background: none; border: 0; border-bottom: 1px dashed var(--borda);
  padding: 0 1.4rem 0 0; max-width: 100%; cursor: pointer; appearance: none;
  background-image: linear-gradient(45deg, transparent 50%, var(--ouro) 50%), linear-gradient(135deg, var(--ouro) 50%, transparent 50%);
  background-position: right .4rem center, right .1rem center; background-size: 5px 5px; background-repeat: no-repeat; }
.pront-escolha option { font-family: 'IBM Plex Sans', sans-serif; font-size: 1rem; background: var(--bloco-liso); color: var(--texto); }
.modo-foco .faixa-teste, .modo-foco .topo, .modo-foco .pront-ferr, .modo-foco .pront-abas, .modo-foco .pront-expansao { display: none !important; }
.modo-foco body[data-tela="prontuario"] main { max-width: 860px; }
.modo-foco .reg-texto, .modo-foco .reg-editor textarea { font-size: 1.22rem; }

/* escolha do estilo, com amostra de cor */
.estilos { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .6rem; }
.estilo { display: flex; flex-direction: column; align-items: flex-start; gap: .3rem; padding: .6rem; border: 1px solid var(--borda); border-radius: var(--raio);
  background: var(--bloco-liso); color: var(--texto); cursor: pointer; text-align: left; transition: border-color .2s, box-shadow .2s; }
.estilo:hover { border-color: var(--ouro2); }
.estilo[aria-checked="true"] { border-color: var(--ouro); box-shadow: 0 0 0 2px var(--ouro-fundo); }
.estilo small { color: var(--suave); font-size: .75rem; line-height: 1.3; }
.estilo-nome { font-weight: 600; }
.amostra { position: relative; width: 100%; height: 48px; border-radius: 8px; border: 1px solid rgba(128,128,128,.25); overflow: hidden; }
.amostra i { position: absolute; left: 10%; top: 22%; width: 52%; height: 56%; border-radius: 5px; }
.amostra b { position: absolute; right: 10%; top: 34%; width: 22%; height: 32%; border-radius: 999px; }

/* ir para uma data */
.escolhe-data { position: relative; display: inline-flex; }
.escolhe-data input { position: absolute; inset: 0; opacity: 0; pointer-events: none; width: 100%; }

/* lista suspensa de várias escolhas */
.multi { position: relative; max-width: 520px; }
.multi-botao { width: 100%; display: flex; align-items: center; gap: .5rem; justify-content: space-between; min-height: 44px; padding: .45rem .8rem;
  border: 1px solid var(--borda); border-radius: 10px; background: var(--bloco-liso); color: var(--texto); cursor: pointer; text-align: left; }
.multi-botao:hover { border-color: var(--ouro2); }
.multi-rotulo { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.multi-botao svg { width: 1rem; height: 1rem; color: var(--ouro); flex: none; transition: transform .2s; }
.multi.aberta .multi-botao svg { transform: rotate(180deg); }
.multi-lista { display: none; position: absolute; z-index: 25; left: 0; right: 0; top: calc(100% + 4px); max-height: 300px; overflow-y: auto; padding: .3rem;
  background: var(--bloco-liso); border: 1px solid var(--borda); border-radius: 10px; box-shadow: 0 12px 32px rgba(0,0,0,.35); }
.multi.aberta .multi-lista { display: block; }
.botoes-horario { margin-top: .75rem; flex-wrap: wrap; gap: .5rem; }
/* Lote 21: arrastar até a borda da agenda vira a semana; a faixa mostra que vai virar. */
.vira-faixa { position: fixed; width: 36px; z-index: 60; display: flex; align-items: center; justify-content: center; pointer-events: none;
  background: var(--ouro-fundo); border: 1px dashed var(--ouro2); border-radius: 10px; color: var(--ouro); animation: vira-pulso .55s ease-out; }
.vira-faixa svg { width: 1.4rem; height: 1.4rem; }
@keyframes vira-pulso { from { opacity: .3; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .vira-faixa { animation: none; } }
/* Lote 21: o cartão da lista aberta vem para a frente e não pula; antes os títulos dos cartões de baixo passavam por cima. */
.cartao:has(.multi.aberta), .secao:has(.multi.aberta) { position: relative; z-index: 30; transform: none !important; }
.multi-item { display: flex; align-items: center; gap: .6rem; padding: .5rem .6rem; border-radius: 7px; cursor: pointer; min-height: 40px; }
.multi-item:hover { background: var(--ouro-fundo); }
.multi-item input { accent-color: var(--ouro); width: 1.05rem; height: 1.05rem; }

/* busca única (Ctrl+K) */
dialog.paleta { width: min(620px, calc(100vw - 2rem)); padding: .9rem; align-self: start; margin-top: 12vh; }
.paleta .busca { min-height: 50px; }
.paleta-lista { max-height: 52vh; overflow-y: auto; margin: .6rem 0 .3rem; }
.paleta-grupo { font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; color: var(--ouro); margin: .6rem .4rem .25rem; }
.paleta-item { display: flex; align-items: center; gap: .7rem; width: 100%; text-align: left; padding: .5rem .6rem; border: 0; border-radius: 8px; background: none; color: var(--texto); cursor: pointer; }
.paleta-item small { display: block; color: var(--suave); font-size: .8rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 46ch; }
.paleta-item svg { width: 1.05rem; height: 1.05rem; color: var(--suave); flex: none; }
.paleta-item.marcado { background: var(--ouro-fundo); }
.paleta-item.marcado svg { color: var(--ouro); }

/* Tela de Trabalho (Atendimento) */
.trabalho { flex: 1; min-height: 0; display: flex; flex-direction: column; gap: .7rem; }
.t-faixa { display: flex; align-items: center; gap: .8rem; min-height: 46px; }
.t-dia { display: flex; align-items: center; gap: .4rem; white-space: nowrap; font-family: 'Spectral', serif; font-size: 1.1rem; }
/* faixa do dia: linha do tempo proporcional ao relógio, só os nomes, sem caixas (31/10) */
.t-faixa { --hora: 6rem; } /* só "Claudia C." por hora, sem a hora escrita: a régua mostra mais do dia */
.t-rolo { flex: 1; min-width: 0; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; position: relative;
  mask-image: linear-gradient(90deg, transparent, #000 3%, #000 95%, transparent); }
.t-rolo::-webkit-scrollbar { display: none; }
/* uma raia só desde 04/11: a régua ficou mais baixa e a tela ganhou altura */
.t-trilho { position: relative; height: 2.85rem; } /* folga entre o sublinhado do nome e a hora embaixo (04/11) */
.t-hora { position: absolute; bottom: 0; transform: translateX(-50%); font-size: .74rem; color: var(--suave); pointer-events: none; }
/* cada hora cheia ganha uma linha vertical discreta, de cima a baixo da régua (pedido de 31/10) */
/* douradas e mais marcadas desde 04/11 (pedido dele) */
.t-hora::before { content: ''; position: absolute; left: 50%; bottom: 1.05rem; width: 1px; height: 1.45rem; background: var(--ouro); opacity: .7; }
.t-meia { position: absolute; bottom: 1.05rem; width: 1px; height: .7rem; background: var(--ouro); opacity: .4; pointer-events: none; }
.t-item-nome { overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.t-item { z-index: 1; }
.t-agora { position: absolute; top: 0; bottom: .9rem; width: 2px; margin-left: -1px; background: var(--ouro); border-radius: 2px; box-shadow: 0 0 8px var(--ouro-fundo); }
.t-agora::before { content: ''; position: absolute; top: -2px; left: -3px; width: 8px; height: 8px; border-radius: 50%; background: var(--ouro); }
.t-item { position: absolute; display: inline-flex; align-items: baseline; gap: .3rem; padding: .1rem .2rem; margin-top: .15rem; border: 0; background: none;
  color: var(--apoio); font: inherit; font-size: .86rem; white-space: nowrap; cursor: pointer; border-radius: 6px; touch-action: pan-x; user-select: none; transition: opacity .3s, color .2s; }
.t-item b { font-weight: 600; color: var(--texto); font-variant-numeric: tabular-nums; }
.t-item:hover { color: var(--texto); }
.t-item.sel { color: var(--ouro); }
.t-item.sel b { color: var(--ouro); }
.t-item.sel::after { content: ''; position: absolute; left: .2rem; right: .2rem; bottom: -.1rem; height: 2px; border-radius: 2px; background: var(--ouro); }
.t-item.passou { opacity: .55; }
.t-item.falta { text-decoration: line-through; text-decoration-color: var(--suave); }
.t-item.falta small { text-decoration: none; color: var(--suave); }
.t-item.sit-compareceu b { color: var(--verde); }
.t-item.comp { cursor: default; font-style: italic; color: var(--suave); }
.t-item.arrasta { cursor: grab; }
.t-item.arrastando { cursor: grabbing; z-index: 3; color: var(--ouro); }
.t-item.arrastando::before { content: attr(data-hora); position: absolute; top: -1.15rem; left: 0; font-size: .72rem; font-weight: 600; color: var(--ouro); font-style: normal; }
/* o sininho vivo */
.t-pend { display: inline-flex; align-items: center; gap: .3rem; border: 0; border-radius: 999px; background: none; color: var(--suave); padding: .35rem .55rem; cursor: pointer; }
.t-pend svg { width: 1.1rem; height: 1.1rem; }
.t-pend b { font-variant-numeric: tabular-nums; }
.t-pend.dorme { opacity: .45; }
.t-pend.calmo { color: var(--ouro); }
.t-pend.novo { color: var(--ouro); background: var(--ouro-fundo); }
.t-pend.novo svg { animation: balanca 1.2s ease-in-out 3; transform-origin: 50% 10%; }
.t-pend.atrasado { color: #1B0A06; background: var(--verm); } /* texto escuro: o branco não passava no contraste */
.t-pend.atrasado svg { animation: agita 4s ease-in-out infinite; transform-origin: 50% 10%; }
@keyframes balanca { 0%, 100% { transform: rotate(0); } 25% { transform: rotate(14deg); } 75% { transform: rotate(-14deg); } }
@keyframes agita { 0%, 86%, 100% { transform: rotate(0); } 88% { transform: rotate(16deg); } 90% { transform: rotate(-16deg); } 92% { transform: rotate(12deg); } 94% { transform: rotate(-12deg); } 96% { transform: rotate(6deg); } }
@media (prefers-reduced-motion: reduce) { .t-pend svg, .t-bloco.aberto .t-corpo { animation: none !important; } }
.t-vazio { color: var(--suave); font-size: .9rem; }
/* as colunas têm largura fixa: os blocos só crescem para baixo e o atendimento nunca se desloca (31/10) */
.t-meio { flex: 1; min-height: 0; display: grid; grid-template-columns: var(--col-esq, 300px) minmax(0, 1fr) var(--col-dir, 330px); gap: .9rem; }
.t-col { min-height: 0; display: flex; flex-direction: column; gap: .6rem; overflow-y: auto; overflow-x: hidden; scrollbar-width: thin; padding-right: 2px; }
.t-col > .t-bloco, .t-col > .t-bloco.aberto { flex: 0 0 auto; }
.t-col > .t-bloco.aberto .t-corpo { overflow: visible; }
.t-bloco { display: flex; flex-direction: column; min-height: 0; border-radius: 12px; background: var(--bloco); border: 1px solid transparent;
  transition: flex-grow .3s ease, border-color .2s, box-shadow .2s; flex: 0 1 auto; overflow: hidden; }
.t-bloco:hover { border-color: var(--borda); }
.t-bloco.aberto { flex: 1 1 auto; border-color: var(--ouro2); box-shadow: 0 10px 30px rgba(0,0,0,.25); }
.t-cab { display: flex; align-items: center; gap: .5rem; padding: .65rem .85rem .35rem; cursor: pointer; color: var(--suave); font-size: .78rem; letter-spacing: .06em; text-transform: uppercase; }
.t-cab svg { width: .95rem; height: .95rem; color: var(--ouro); }
.t-titulo { flex: 1; }
.t-alfinete { border: 0; background: none; color: var(--suave); cursor: pointer; padding: .15rem; border-radius: 6px; opacity: 0; transition: opacity .2s; }
.t-bloco:hover .t-alfinete, .t-bloco.fixado .t-alfinete, .t-alfinete:focus-visible { opacity: 1; }
@media (hover: none) { .t-alfinete { opacity: 1; } } /* tablet sem mouse: sempre à vista (01/11) */
.t-bloco.fixado .t-alfinete { color: var(--ouro); }
.t-resumo { padding: 0 .85rem .75rem; display: flex; flex-direction: column; gap: .2rem; }
.t-corpo { display: none; padding: .2rem .85rem .85rem; overflow-y: auto; overflow-x: hidden; min-height: 0; flex-direction: column; gap: .6rem; }
.t-corpo > *, .t-corpo .campo, .t-corpo input { min-width: 0; }
.t-corpo .sit-btn { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.t-bloco.aberto .t-corpo { display: flex; animation: desliza .25s ease; }
.t-bloco.aberto .t-resumo { display: none; }
.t-bloco.recolhido .t-resumo { display: none; }
.t-bloco.recolhido .t-cab { padding-bottom: .6rem; }
@keyframes desliza { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
.t-nome { font-family: 'Spectral', serif; font-size: 1.2rem; line-height: 1.25; }
.t-lembrete { display: flex; gap: .35rem; align-items: flex-start; color: var(--ouro); font-size: .85rem; }
.t-lembrete svg { width: .9rem; height: .9rem; flex: none; margin-top: .15rem; }
.t-linha { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.t-estado { display: inline-flex; align-items: center; gap: .3rem; font-weight: 500; }
.t-estado svg { width: 1rem; height: 1rem; }
.t-estado.sit-compareceu { color: var(--verde); }
.t-estado.sit-falta_injustificada { color: var(--verm); }
.t-estado.sit-falta_justificada, .t-estado.sit-cancelado { color: var(--suave); }
.t-trecho { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; color: var(--apoio); font-size: .92rem; }
.t-trecho svg { width: .85rem; height: .85rem; color: var(--lilas); vertical-align: -1px; margin-right: .2rem; }
.dica.ok { color: var(--verde); display: inline-flex; align-items: center; gap: .3rem; }
.dica.ok svg { width: .9rem; height: .9rem; }
.t-lista { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: .2rem; color: var(--apoio); font-size: .92rem; }
.t-proximas { font-size: .9rem; font-weight: 600; }
.t-proximas ul { list-style: none; margin: .2rem 0 0; padding: 0; display: flex; flex-direction: column; gap: .1rem; font-variant-numeric: tabular-nums; }
.t-proximas li.fora { color: var(--suave); }
.t-corpo .situacoes.grande { display: grid; grid-template-columns: 1fr 1fr; gap: .35rem; }
.t-corpo .situacoes.grande .sit-btn { justify-content: center; }
/* situação empilhada, botões menores; Compareceu em destaque por ser o mais usado (31/10) */
.t-corpo .situacoes.pilha { display: flex; flex-direction: column; gap: .3rem; }
.t-corpo .situacoes.pilha .sit-btn { justify-content: flex-start; min-height: 34px; padding: .25rem .7rem; font-size: .86rem; border-radius: 9px; }
.t-corpo .situacoes.pilha .sit-compareceu { min-height: 40px; font-weight: 600; font-size: .92rem; }
.t-quem-reg { text-transform: none; letter-spacing: 0; color: var(--texto); font-weight: 600; }
.t-quem-reg.alerta { color: var(--verm, #e06c6c); }
/* lembretes: lista numerada, a letra diminui conforme cresce (com mínimo e máximo) */
.lembrete-lista { margin: 0; padding-left: 1.3rem; display: flex; flex-direction: column; gap: .15rem; font-size: 1rem; line-height: 1.35; }
.lembrete-lista.tam-3 { font-size: .95rem; } .lembrete-lista.tam-4 { font-size: .91rem; } .lembrete-lista.tam-5, .lembrete-lista.tam-6 { font-size: .87rem; }
.lembrete-lista li { position: relative; padding-right: 1.3rem; }
.lembrete-lista li::marker { color: var(--ouro); font-weight: 600; }
.lembrete-lista li.sug { color: var(--suave); font-style: italic; }
.lembrete-lista li.sug::marker { color: var(--suave); }
.lembrete-lista li.vencido { color: var(--verm); }
.lembrete-x { position: absolute; right: 0; top: 0; border: 0; background: none; color: var(--suave); cursor: pointer; font-size: 1rem; line-height: 1; padding: .1rem .25rem; opacity: 0; transition: opacity .2s; border-radius: 4px; }
li:hover > .lembrete-x, .lembrete-x:focus-visible, .tema:hover > .lembrete-x { opacity: 1; }
@media (hover: none) { .lembrete-x { opacity: .6; } }
.lembrete-mais { margin-top: .2rem; padding-left: 0; }
.lembrete-novo, .tema-novo, .t-lembrete-rapido { width: 100%; margin-top: .35rem; border: 0; border-bottom: 1px dashed var(--borda); background: none; color: var(--texto); padding: .3rem .1rem; font: inherit; font-size: .88rem; }
.lembrete-novo:focus, .tema-novo:focus, .t-lembrete-rapido:focus { outline: none; border-bottom-color: var(--ouro); }
/* temas em trabalho */
.temas { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; }
.temas-rot { font-size: .75rem; color: var(--suave); text-transform: uppercase; letter-spacing: .05em; }
.tema { position: relative; display: inline-flex; align-items: center; gap: .2rem; padding: .1rem .55rem; border-radius: 999px; background: color-mix(in srgb, var(--lilas) 16%, transparent); color: var(--lilas); font-size: .85rem; }
.tema .lembrete-x { position: static; opacity: .5; font-size: .9rem; }
.temas .tema-novo { width: auto; flex: 1 1 140px; margin-top: 0; }
.t-temas { display: flex; flex-wrap: wrap; gap: .3rem; margin-bottom: .2rem; }
.pront-vivos { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: .5rem 1.5rem; }
/* fuso de quem mora fora */
.t-fuso { display: inline-flex; align-items: center; gap: .3rem; color: var(--azul); font-size: .85rem; }
.t-fuso svg { width: .9rem; height: .9rem; }
.aviso-fuso { display: flex; color: var(--azul); }
.etq.fuso { color: var(--azul); border-color: color-mix(in srgb, var(--azul) 45%, transparent); }
.etq.sino { color: var(--ouro); border-color: var(--ouro2); }
.etq svg { width: .8rem; height: .8rem; }
/* só do analista: velado até um clique */
.reg-reservado { margin-top: .5rem; padding: .45rem .7rem; border-left: 3px solid var(--lilas); border-radius: 0 8px 8px 0; background: color-mix(in srgb, var(--lilas) 8%, transparent); }
.reg-reservado small { display: inline-flex; align-items: center; gap: .3rem; color: var(--lilas); font-size: .72rem; letter-spacing: .05em; text-transform: uppercase; }
.reg-reservado small svg { width: .8rem; height: .8rem; }
.veu-texto { filter: blur(5px); cursor: pointer; transition: filter .2s; white-space: pre-wrap; user-select: none; }
.veu-texto.visivel { filter: none; cursor: auto; user-select: text; }
.t-reservado summary { cursor: pointer; display: inline-flex; align-items: center; gap: .35rem; color: var(--lilas); font-size: .82rem; }
.t-reservado summary svg { width: .85rem; height: .85rem; }
.t-reservado textarea { margin-top: .35rem; }
/* financeiro no bloco */
.t-saldo { display: flex; align-items: baseline; gap: .5rem; flex-wrap: wrap; }
.fin-saldo.grande { font-family: 'Spectral', serif; font-size: 1.5rem; }
.ext.acordo { background: var(--ouro-fundo); }
.ext.clicavel { cursor: pointer; }
.ext.clicavel:hover { background: var(--linha-hover); }
.marca-ext { color: var(--azul) !important; }
/* a agenda da semana por cima do atendimento (lote 17): só para olhar */
dialog.agenda-janela { width: min(1280px, 96vw); height: 92vh; max-height: 92vh; max-width: 96vw; padding: .75rem 1rem 1rem; color: var(--texto); border: 1px solid var(--ouro2); border-radius: 14px;
  background: var(--fundo); background-image: var(--fundo-grad); box-shadow: 0 24px 70px rgba(0,0,0,.55); display: flex; flex-direction: column; gap: .5rem; }
dialog.agenda-janela:not([open]) { display: none; }
dialog.agenda-janela::backdrop { background: rgba(0,0,0,.55); }
.agenda-janela .barra { margin: 0; flex-wrap: wrap; }
.agenda-janela .barra h2 { margin: 0; }
.agenda-janela .aj-fechar { margin-left: auto; }
.aj-corpo { flex: 1; min-height: 0; overflow: auto; }
.agenda-janela .semana { overflow: visible; min-width: 760px; }
.agenda-janela .sem-cab { position: sticky; top: 0; z-index: 3; background: var(--bloco-liso); }
.agenda-janela .sem-cab.hoje { color: var(--ouro); }
.agenda-janela .bloco, .agenda-janela .sem-col { cursor: default; }
.agenda-janela.discreta .bloco:not(:hover) .b-nome { filter: blur(5px); }
.agenda-janela .ag-cartao .dica { display: none; } /* "clique para abrir" não vale aqui */

/* o prontuário grande, por cima de tudo */
dialog.leitor { width: min(980px, 94vw); height: 90vh; max-height: 90vh; padding: 1rem 1.25rem; color: var(--texto); border: 1px solid var(--ouro2); border-radius: 14px;
  background: var(--fundo); background-image: var(--fundo-grad); box-shadow: 0 24px 70px rgba(0,0,0,.55); display: flex; flex-direction: column; gap: .6rem; }
dialog.leitor:not([open]) { display: none; }
dialog.leitor::backdrop { background: rgba(0,0,0,.55); }
.leitor-topo { display: flex; align-items: center; gap: .6rem; }
.leitor-topo > div { flex: 1; min-width: 0; }
.leitor-topo small { color: var(--ouro); font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; }
.leitor-topo h2 { font-size: 1.4rem; }
.leitor-ferr { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.leitor-ferr .busca { flex: 1 1 260px; min-height: 42px; }
.leitor-lista { flex: 1; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: .6rem; padding-right: .3rem; }
.t-corpo textarea, .t-corpo input[type="text"], .t-corpo input[type="date"], .t-corpo input[type="time"], .t-corpo input[type="search"], .t-link input {
  width: 100%; border: 1px solid var(--borda); border-radius: 9px; background: var(--bloco-liso); color: var(--texto); padding: .5rem .65rem; font: inherit; }
.t-corpo textarea { resize: vertical; }
/* Lote 24: a caixa de escrever das Mensagens tem sempre duas linhas; texto maior rola dentro dela. */
.t-corpo textarea.z-texto, textarea.z-texto { flex: none; box-sizing: border-box; line-height: 1.4; padding: .4rem .6rem;
  height: calc(2.8em + .8rem + 2px); min-height: calc(2.8em + .8rem + 2px); resize: none; overflow-y: auto; }
.t-escrita { min-height: 180px; flex: 1; }
.t-corpo .t-busca { flex: none; min-height: 40px; }
.t-corpo .t-busca input { border: 0; background: none; padding: 0; }
.t-corpo h4 { margin: .2rem 0 0; font-size: .78rem; color: var(--suave); text-transform: uppercase; letter-spacing: .06em; font-weight: 500; }
.t-pends { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .35rem; }
.t-pends li { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.t-pends li small { display: block; color: var(--suave); font-size: .78rem; }
/* Lote 30: ações novas ao lado, só ícone com dica; o texto encolhe e quebra, o botão principal não é empurrado. */
.t-pends .t-pend-txt { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.t-pends .t-pend-acoes { display: flex; align-items: center; gap: .25rem; flex: none; }
.t-remarcar { grid-template-columns: 1fr 1fr; }
.t-ferr { align-items: center; }
.t-sonho { display: flex; flex-direction: column; gap: .4rem; padding: .6rem; border: 1px dashed var(--lilas); border-radius: 10px; }
.t-regs { display: flex; flex-direction: column; gap: .5rem; }
.t-reg { padding: .5rem .6rem; border-radius: 9px; background: var(--bloco-liso); }
.t-reg .reg-texto { font-size: .98rem; -webkit-line-clamp: 4; }
.t-reg .reg-tipo { color: var(--cor-reg, var(--ouro)); }
.t-msg { display: flex; flex-direction: column; gap: .3rem; }
.t-msg label { display: flex; align-items: center; gap: .35rem; font-size: .8rem; color: var(--suave); }
.t-msg label svg { width: .9rem; height: .9rem; }
.t-icones { gap: .35rem; }
.t-palco { min-height: 0; min-width: 0; display: flex; align-items: center; justify-content: center; }
.t-video { width: 100%; height: 100%; border-radius: 16px; /* toda a altura livre desde 04/11, como o Meet */ display: grid; place-items: center; text-align: center; padding: 1.5rem;
  background: radial-gradient(120% 90% at 50% 0%, color-mix(in srgb, var(--ouro) 10%, transparent), transparent 60%), var(--bloco-liso);
  border: 1px solid var(--borda); box-shadow: var(--sombra-palco); transition: width .32s ease; }
/* espelho da sala dentro do quadro (31/10) */
.t-video.com-espelho { padding: 0; background: #000; overflow: hidden; }
.t-espelho { position: relative; width: 100%; height: 100%; }
.t-espelho-video { width: 100%; height: 100%; object-fit: contain; display: block; background: #000; }
.t-espelho-barra { position: absolute; left: .6rem; right: .6rem; bottom: .6rem; display: flex; align-items: center; gap: .4rem; padding: .3rem .5rem;
  border-radius: 10px; background: rgba(0,0,0,.55); color: #fff; opacity: .35; transition: opacity .25s; backdrop-filter: blur(4px); }
.t-espelho:hover .t-espelho-barra, .t-espelho-barra:focus-within { opacity: 1; }
.t-espelho-barra .btn.leve { color: #fff; }
.t-espelho-quem { flex: 1; font-size: .9rem; }
.t-cronometro.mini { font-size: 1.15rem; font-family: 'Spectral', serif; color: #fff; }
.t-cronometro.mini.folga { color: #F5C542; }
.t-cronometro.mini.fim { color: #ff8a7a; }
.t-roda { display: flex; flex-direction: column; align-items: center; gap: .55rem; max-width: 520px; }
.t-roda small { color: var(--suave); letter-spacing: .08em; text-transform: uppercase; font-size: .75rem; }
.t-relogio { font-family: 'Spectral', serif; font-size: clamp(2.2rem, 5vw, 3.6rem); color: var(--ouro); line-height: 1; }
.t-quem { font-family: 'Spectral', serif; font-size: clamp(1.3rem, 2.6vw, 2rem); line-height: 1.2; }
.t-cronometro { font-family: 'Spectral', serif; font-size: clamp(2.8rem, 7vw, 4.6rem); line-height: 1; color: var(--texto); font-variant-numeric: tabular-nums; }
.t-cronometro.folga { color: var(--folga, #E5B100); }
.t-cronometro.fim { color: var(--verm); }
.t-roda .botoes { justify-content: center; margin-top: .4rem; }
.btn.grande { padding: .7rem 1.4rem; font-size: 1.05rem; }
.t-link { width: min(420px, 100%); }
.t-roda .t-estado { font-size: 1.05rem; }
.t-ultimas { list-style: none; margin: 0 0 .35rem; padding: 0; display: grid; gap: .4rem; }
.t-ultimas li { display: grid; gap: .05rem; border-left: 2px solid var(--ouro2); padding-left: .55rem; }
.t-ultimas small { color: var(--ouro); font-size: .68rem; letter-spacing: .06em; text-transform: uppercase; }
.t-ultimas span { font-size: .9rem; color: var(--apoio); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
/* Meet dentro do programa (04/11): por cima do palco, do mesmo tamanho; em outra tela, janelinha no canto. */
.meet-caixa { position: fixed; z-index: 30; display: flex; flex-direction: column; border-radius: 16px; overflow: hidden;
  background: #000; border: 1px solid var(--borda); box-shadow: var(--relevo); }
.meet-frame { flex: 1; width: 100%; min-height: 0; border: 0; background: #000; }
.meet-barra { display: flex; align-items: center; gap: .4rem; padding: .25rem .5rem; background: var(--bloco-liso); border-top: 1px solid var(--borda); }
.meet-relogio { font-family: 'Spectral', serif; font-size: 1.05rem; color: var(--ouro); font-variant-numeric: tabular-nums; min-width: 3.2rem; }
.meet-relogio.folga { color: #F5C542; font-weight: 600; }
.meet-relogio.fim { color: #ff8a7a; font-weight: 600; }
.meet-quem { flex: 1; font-size: .9rem; color: var(--apoio); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.meet-caixa.mini { right: 1rem; bottom: 1rem; width: 24rem; height: 15rem; z-index: 60; box-shadow: 0 8px 28px rgba(0,0,0,.5); }
.meet-caixa.grande { z-index: 80; border-radius: 12px; }
.meet-hora { font-family: 'Spectral', serif; font-size: 1.05rem; color: var(--apoio); font-variant-numeric: tabular-nums; }
/* Lote 8: a hora junto do cronômetro, na roda. */
.t-relogio.em-curso { font-size: clamp(1.5rem, 3vw, 2.2rem); }
/* Prontuário ao passar o mouse: a lista anda com a rodinha, sem levar a coluna junto. */
.t-regs { max-height: min(56vh, 620px); overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; padding-right: 4px; }
/* WhatsApp no bloco Mensagens. */
.z-selo { display: inline-grid; place-items: center; min-width: 1.15rem; height: 1.15rem; margin-left: .35rem; padding: 0 .25rem; border-radius: 999px; background: var(--ouro); color: #10202f; font-size: .7rem; }
.z-selo.esperando { background: none; color: var(--ouro); border: 1px solid var(--ouro2); }
.z-estado { font-size: .85rem; color: var(--apoio); }
/* Lote 18: "Esperando sua resposta" */
.z-pend { display: flex; flex-direction: column; gap: .45rem; flex: none; max-height: min(52vh, 520px); overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; }
.z-pend .fila-quem { align-items: baseline; }
.z-pend-assunto { margin: 0; font-size: .86rem; line-height: 1.35; color: var(--apoio); overflow-wrap: anywhere; }
.z-pend-linha.caiu { border-color: var(--ouro2); }
.z-pend-motivo { display: flex; gap: .35rem; align-items: flex-start; margin: 0; font-size: .82rem; line-height: 1.35; color: var(--texto); }
.z-pend-motivo svg { flex: none; width: 15px; height: 15px; margin-top: .1rem; color: var(--ouro); }
.z-pend-feita { display: flex; align-items: center; gap: .35rem; margin: 0; font-size: .82rem; color: var(--suave); }
.z-pend-feita svg { width: 14px; height: 14px; }
.z-estado img { display: block; width: 180px; margin-top: .4rem; background: #fff; border-radius: 6px; }
.z-chips { display: flex; gap: .3rem; overflow-x: auto; padding-bottom: .2rem; scrollbar-width: thin; flex: none; }
.z-chip { display: inline-flex; align-items: center; gap: .3rem; flex: none; padding: .15rem .5rem; border-radius: 999px; border: 1px solid var(--borda); background: none; color: var(--apoio); font-size: .8rem; cursor: pointer; }
.z-chip.on { border-color: var(--ouro2); color: var(--texto); }
.z-chip b { color: var(--ouro); }
.z-conversa { display: flex; flex-direction: column; gap: .3rem; height: min(34vh, 340px); overflow-y: auto; overscroll-behavior: contain; padding: .35rem; border-radius: 8px; background: var(--bloco-liso); flex: none; }
.z-bal { max-width: 88%; padding: .3rem .5rem; border-radius: 9px; font-size: .9rem; white-space: pre-wrap; overflow-wrap: anywhere; background: var(--bloco); align-self: flex-start; }
.z-bal.eu { align-self: flex-end; background: color-mix(in srgb, var(--ouro) 18%, var(--bloco)); }
.z-bal small { display: block; text-align: right; font-size: .66rem; color: var(--suave); }
.z-prontas { gap: .25rem; }
/* Fila de envio: lembretes e avisos, um clique por pessoa. */
dialog.fila-dlg { width: min(640px, calc(100vw - 2rem)); }
.fila { display: flex; flex-direction: column; gap: .6rem; max-height: 60vh; overflow-y: auto; }
.fila-item { display: grid; gap: .3rem; padding: .5rem .6rem; border: 1px solid var(--borda); border-radius: 9px; }
.fila-item.feito { opacity: .55; }
.fila-quem { display: flex; justify-content: space-between; gap: .5rem; }
.fila-quem small { color: var(--suave); }
.fila-item textarea { width: 100%; }
/* Perfil: mensagens prontas. */
.at-linha.msg-linha { grid-template-columns: auto minmax(6rem, 9rem) minmax(10rem, 1fr) auto; }
.at-linha.msg-linha textarea { width: 100%; min-width: 0; }
.msg-fixo { display: grid; gap: .2rem; margin-top: .5rem; font-size: .88rem; color: var(--apoio); }
.msg-fixo textarea { width: 100%; }
.msg-fixo input[type="number"] { width: 5rem; }
/* Fechamento do dia e presença sugerida. */
.fd-conferir { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .9rem; margin: .75rem 0; padding: .55rem .8rem; border: 1px solid var(--ouro2); border-radius: 10px; font-size: .88rem; color: var(--apoio); }
.fd-conferir b { display: inline-flex; align-items: center; gap: .3rem; color: var(--ouro); }
.fd-lista { display: flex; flex-direction: column; gap: .35rem; margin-top: .75rem; }
.fd-linha { display: grid; grid-template-columns: 3.2rem minmax(9rem, 1.1fr) minmax(13rem, 1.4fr) 5rem minmax(6rem, .7fr) minmax(7.5rem, .8fr) minmax(9rem, auto); gap: .6rem; align-items: center; padding: .45rem .7rem; border-radius: 10px; background: var(--bloco); }
.fd-linha.atencao { box-shadow: inset 3px 0 0 var(--ouro); }
.fd-linha.apagada { opacity: .5; }
.fd-nome { display: grid; text-align: left; background: none; border: 0; padding: 0; color: var(--texto); cursor: pointer; font: inherit; }
.fd-nome small, .fd-cel small { display: block; color: var(--suave); font-size: .74rem; }
.fd-sit { margin-top: 0; }
.fd-sit .sit-btn { min-height: 30px; padding: .15rem .5rem; font-size: .8rem; }
.fd-ok { color: var(--verde, #6FBF8E); display: inline-flex; flex-wrap: wrap; align-items: center; gap: .25rem; }
.fd-pronto { color: var(--ouro); }
.fd-falta { color: var(--verm); }
.fd-acoes { display: flex; gap: .3rem; justify-content: flex-end; flex-wrap: wrap; }
@media (max-width: 1100px) { .fd-linha { grid-template-columns: 3.2rem 1fr; } .fd-linha > * { grid-column: 2; } .fd-linha > .fd-hora { grid-column: 1; } .fd-acoes { justify-content: flex-start; } }
.pres-linha { display: grid; gap: .1rem; }
.pres-sinal { display: inline-flex; align-items: center; gap: .25rem; color: var(--ouro); font-size: .78rem; padding-left: .75rem; }
/* Roda de atalhos no palco vazio (04/11, como na máscara): o relógio e a sessão da vez no centro, os atalhos em volta. */
.t-video.com-roda { container-type: inline-size; padding: 0; }
.roda-at { position: relative; width: 100%; height: 100%; display: grid; place-items: center; }
.roda-at > .t-roda { max-width: 56%; gap: .35rem; }
.roda-at .t-relogio { font-size: clamp(2rem, 4vw, 3rem); }
.roda-at .t-quem { font-size: clamp(1.05rem, 2vw, 1.45rem); }
.roda-at .dica { font-size: .85rem; }
.roda-item { position: absolute; transform: translate(-50%, -50%); width: 4.1rem; height: 4.1rem; border-radius: 50%; padding: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .15rem; cursor: pointer;
  background: var(--btn); border: 1px solid var(--borda); box-shadow: var(--relevo); color: var(--apoio); font: inherit; font-size: .62rem; line-height: 1.1; }
.roda-item svg { width: 18px; height: 18px; color: var(--ouro); }
.roda-item:hover, .roda-item:focus-visible { color: var(--texto); border-color: var(--ouro); }
.at-lista { display: flex; flex-direction: column; gap: .5rem; }
.at-linha { display: grid; grid-template-columns: auto minmax(7rem, 10rem) minmax(10rem, 1fr) auto auto; gap: .5rem; align-items: center; }
.at-linha input[type="text"], .at-linha input[type="url"] { width: 100%; min-width: 0; }
.at-janela { display: inline-flex; align-items: center; gap: .3rem; font-size: .85rem; color: var(--apoio); white-space: nowrap; }
.at-ordem { display: inline-flex; gap: .15rem; }
.at-pe { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; margin-top: .25rem; }
@media (max-width: 640px) { .at-linha { grid-template-columns: auto 1fr; } .at-linha input[type="url"] { grid-column: 1 / -1; } }
.roda-item span { max-width: 3.8rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@container (max-width: 600px) { .roda-item { display: none; } .roda-at > .t-roda { max-width: 100%; } }

/* financeiro (módulo 4) */
.receber { color: var(--verm); }
.credito { color: var(--verde); }
.emdia { color: var(--apoio); }
.etq.receber { border-color: color-mix(in srgb, var(--verm) 50%, transparent); }
.etq.credito { border-color: color-mix(in srgb, var(--verde) 50%, transparent); }
.fin-kpis { display: flex; gap: .6rem; flex-wrap: wrap; margin-top: .6rem; }
.fin-kpis .kpi { flex: 1 1 110px; padding: .55rem .75rem; border: 1px solid var(--borda); border-radius: var(--raio); background: var(--bloco-liso); }
.fin-kpis .kpi small { display: block; color: var(--suave); font-size: .75rem; }
.fin-kpis .kpi b { font-size: 1.15rem; font-variant-numeric: tabular-nums; }
.fin-kpis.grandes { margin: 0 0 1rem; }
.fin-kpis.grandes .kpi b { font-family: 'Spectral', serif; font-size: 1.5rem; }
.fin-sel { display: inline-flex; align-items: center; gap: .4rem; color: var(--suave); font-size: .85rem; }
.fin-sel select { min-height: 44px; border: 1px solid var(--borda); border-radius: 10px; background: var(--bloco-liso); color: var(--texto); padding: .3rem .6rem; }
.fin-lista { display: flex; flex-direction: column; gap: .5rem; }
.fin-linha { display: grid; grid-template-columns: minmax(200px, 1.6fr) minmax(130px, 1.1fr) repeat(3, minmax(80px, .6fr)) auto auto; gap: .5rem 1rem; align-items: center;
  padding: .65rem .9rem; border-radius: var(--raio); background: var(--bloco); border: 1px solid var(--borda); }
.fin-nome { display: flex; flex-direction: column; align-items: flex-start; gap: .15rem; background: none; border: 0; color: var(--texto); text-align: left; cursor: pointer; padding: 0; min-width: 0; }
.fin-nome b { font-weight: 600; }
.fin-nome:hover b { color: var(--ouro); }
.fin-nome small, .fin-sess small { color: var(--suave); font-size: .8rem; }
.fin-sess b { font-size: 1.05rem; }
.fin-num { display: flex; flex-direction: column; font-variant-numeric: tabular-nums; }
.fin-num small { color: var(--suave); font-size: .72rem; }
.fin-acoes { display: flex; gap: .35rem; align-items: center; }
.passos { display: inline-flex; align-items: center; gap: .15rem; }
.passo { width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; border: 1px solid var(--borda); background: none; color: var(--suave); cursor: pointer; }
span.passo { cursor: default; }
.passo svg { width: .95rem; height: .95rem; }
.passo.on { background: var(--ouro-fundo); border-color: var(--ouro); color: var(--ouro); }
.passos .seta { width: 10px; height: 1px; background: var(--borda); }
.extrato { list-style: none; margin: 0; padding: 0; }
.ext { display: grid; grid-template-columns: 5.6rem 1fr 6rem 6rem 2rem; gap: .5rem; align-items: center; padding: .45rem 0; border-bottom: 1px solid var(--borda); font-size: .92rem; }
.ext.cab { color: var(--suave); font-size: .75rem; text-transform: uppercase; letter-spacing: .05em; }
.ext-data { color: var(--suave); font-variant-numeric: tabular-nums; }
.ext-desc small { display: block; color: var(--suave); font-size: .78rem; }
.ext-valor, .ext-saldo { text-align: right; font-variant-numeric: tabular-nums; }
.ext-valor.pos { color: var(--verde); }
.ext-valor.neg { color: var(--verm); }
.ext.cancelado .ext-desc, .ext.cancelado .ext-valor { text-decoration: line-through; opacity: .6; }
.t-recebido { display: grid; grid-template-columns: minmax(5.5rem, 1fr) auto auto; gap: .35rem; align-items: stretch; }
.t-recebido input { min-width: 0; font-variant-numeric: tabular-nums; }
.t-recebido select { border: 1px solid var(--borda); border-radius: 9px; background: var(--bloco-liso); color: var(--texto); padding: .3rem .25rem; width: auto; font-size: .85rem; }
.btn.vertical { flex-direction: column; gap: .05rem; padding: .25rem .5rem; min-height: 0; line-height: 1.1; }
.btn.vertical svg { width: 1rem; height: 1rem; }
.btn.vertical span { font-size: .68rem; }
.t-mini-ext { display: grid; grid-template-columns: auto 1fr auto; column-gap: .6rem; row-gap: .15rem; font-size: .88rem; }
.t-mini-ext .linha { display: contents; }
.t-mini-ext .d { color: var(--suave); font-variant-numeric: tabular-nums; }
.t-mini-ext .v { text-align: right; font-variant-numeric: tabular-nums; font-weight: 600; }
.t-mini-ext .linha.riscado > span { text-decoration: line-through; opacity: .55; }
.fin-saldo { font-size: 1.1rem; font-variant-numeric: tabular-nums; }
.t-lista li.riscado { text-decoration: line-through; opacity: .6; }
.previa-texto { width: 100%; border: 1px solid var(--borda); border-radius: 10px; background: var(--bloco-liso); color: var(--texto); padding: .7rem; font: inherit; line-height: 1.5; resize: vertical; }

/* telas médias: as abas mostram o nome só da que está aberta */
@media (max-width: 1280px) {
  .nav button span { display: none; }
  .nav button[aria-current="page"] span { display: inline; }
  .t-meio { --col-esq: 270px; --col-dir: 295px; }
}

/* celular e tablet */
@media (max-width: 1100px) {
  .fin-linha { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .fin-linha > .fin-nome, .fin-linha > .fin-sess { grid-column: 1 / -1; }
  .fin-linha > .passos { grid-column: 1 / 3; }
  .fin-linha > .fin-acoes { justify-self: end; }
}
@media (max-width: 860px) {
  .ext { grid-template-columns: 4.6rem 1fr 5rem 2rem; }
  .ext .ext-saldo { display: none; }
  .fin-sel span { display: none; }
  body[data-tela="trabalho"] { display: block; height: auto; }
  body[data-tela="trabalho"] main { display: block; padding: .75rem; }
  .t-faixa { flex-wrap: wrap; gap: .5rem; }
  .t-faixa { --hora: 5.5rem; }
  .t-rolo { order: 3; flex-basis: 100%; }
  .pront-vivos { grid-template-columns: 1fr; }
  .t-meio { display: flex; flex-direction: column; gap: .6rem; }
  .t-palco { order: -1; }
  .t-video { aspect-ratio: auto; min-height: 220px; padding: 1.2rem 1rem; }
  .t-col { overflow: visible; }
  .t-alfinete { opacity: 1; }
  body[data-tela="prontuario"] main { padding: 0; }
  .pront.pagina { border-radius: 0; border: 0; }
  .pront-escolha { font-size: 1.15rem; }
  .pront { top: 0; bottom: 0; left: 0; transform: none; width: 100vw; border-radius: 0; border: 0; }
  .pront-topo { padding: .75rem 1rem .5rem; }
  .pront-topo h2 { font-size: 1.2rem; }
  .pront-topo .so-largo-txt { display: none; }
  .pront-ferr .periodo { flex: 1 1 40%; }
  .pront-ferr .periodo input { flex: 1; min-width: 0; }
  .pront-abas { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
  .pront-corpo { padding: .75rem 1rem 2rem; }
  .menu-caixa .menu { right: auto; left: 0; }
  .menu-caixa:last-of-type .menu { left: auto; right: 0; }
  .assoc { grid-template-columns: 1fr auto; }
  .assoc > span { display: none; }
  .assoc input:nth-of-type(2) { grid-column: 1 / 2; }
  .topo { flex-wrap: wrap; padding: .6rem 1rem; gap: .5rem; }
  .nav { order: 3; width: 100%; margin: 0; justify-content: space-between; overflow-x: auto; }
  .nav button { padding: .45rem .6rem; }
  .nav button span { display: none; }
  .nav button[aria-current="page"] span { display: inline; }
  .ajustes { margin-left: auto; }
  main { padding: 1rem; }
  .faixa-teste label { display: flex; align-items: center; gap: .4rem; min-width: 0; flex: 1 1 100%; }
  .faixa-teste select { flex: 1; min-width: 0; }
  .barra { flex-wrap: nowrap; gap: .5rem; }
  .barra .chips { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; min-width: 0; }
  .barra .chips + .chips { flex: none; }
  .chip { white-space: nowrap; }
  .busca { flex: 1 1 0; min-width: 0; }
  .busca kbd, .novo-txt { display: none; }
  .pac { grid-template-columns: 3.4rem minmax(0, 1fr) auto; gap: .6rem; padding: .55rem .7rem; }
  .pac .valor, .pac .lugar { display: none; }
  .pac .acoes .so-largo { display: none; }
  .pac .hora { font-size: 1rem; }
  .campos { grid-template-columns: 1fr; }
  .ficha { width: 100vw; }
  .navdata h2 { font-size: 1.05rem; }
  .navdata .btn.leve { padding: .4rem .5rem; }
  .sess { grid-template-columns: 3.4rem minmax(0, 1fr) auto; gap: .35rem .6rem; padding: .55rem .7rem; }
  .sess .acoes .so-largo { display: none; }
  /* celular: os quatro botões numa linha inteira, só com o nome escrito (mais claro que o ícone) */
  .sess > .situacoes { grid-column: 1 / -1; flex-wrap: nowrap; gap: .25rem; }
  .sess > .situacoes .sit-btn { flex: 1 1 0; justify-content: center; min-width: 0; min-height: 36px; padding: .15rem .3rem; font-size: .74rem; }
  .sess > .situacoes .sit-btn svg { display: none; }
  .proxima { padding: .9rem 1rem; gap: .2rem .9rem; }
  .proxima .p-hora { font-size: 1.8rem; }
  .proxima .p-nome { font-size: 1.25rem; }
  .grade { min-width: 640px; }
  dialog.pergunta .campos { grid-template-columns: 1fr 1fr; }
  dialog.pergunta .campo.largo { grid-column: 1 / -1; }
}


/* ============ Lote de 01/11/2026: entrada, Hoje em três colunas, Agenda nova, cadastro pelo link ============ */

/* Cores das CLASSES do atendimento (a cor diz só a classe; público e lugar vão em ícones).
   Blocos cheios com texto escuro, contraste forte nos quatro estilos (lição da agenda do Psicoplanner). */
:root {
  --k-psicoterapia: #B4A3EE; --k-supervisao: #86BBEA; --k-grupo: #6FCDBB; --k-curso: #E6BE68; --k-evento: #EBA397;
  --k-texto: #0F1722; --k-passado: 62%;
  --fora-exp: color-mix(in srgb, var(--fundo) 55%, var(--bloco-liso));
}
:root[data-tema="claro"] { --k-psicoterapia: #D9CFFA; --k-supervisao: #CFE3F7; --k-grupo: #C9EEE6; --k-curso: #F6E3B0; --k-evento: #F8D5CD; --k-texto: #1F2328; --k-passado: 55%; --fora-exp: #EFEEEA; }
:root[data-tema="zen"] { --k-psicoterapia: #D6CEDA; --k-supervisao: #CBD7D5; --k-grupo: #CBD8B8; --k-curso: #E5D6A6; --k-evento: #E4C9B2; --k-texto: #2E2C22; --k-passado: 55%; --fora-exp: #D9D0BD; }
.classe-psicoterapia { --k: var(--k-psicoterapia); }
.classe-supervisao { --k: var(--k-supervisao); }
.classe-grupo { --k: var(--k-grupo); }
.classe-curso { --k: var(--k-curso); }
.classe-evento { --k: var(--k-evento); }

/* ---------- entrada e tela bloqueada ---------- */
body.sem-entrada > header, body.sem-entrada > main, body.sem-entrada > #faixa-teste { display: none; }
.entrada, .bloqueio { position: fixed; inset: 0; z-index: 200; display: grid; place-items: center; padding: 16px; background: var(--fundo-grad, var(--fundo)); overflow-y: auto; }
.bloqueio { background: color-mix(in srgb, var(--fundo) 82%, transparent); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); }
html.bloqueada body > *:not(.bloqueio):not(dialog) { filter: blur(14px); pointer-events: none; user-select: none; }
.en-cartao { width: min(420px, 100%); display: flex; flex-direction: column; gap: .35rem; padding: 2rem 1.75rem; border: 1px solid var(--borda); border-radius: 16px; background: var(--bloco); box-shadow: var(--relevo); }
.en-cartao .marca { display: flex; align-items: baseline; gap: .4rem; margin-bottom: 1rem; }
.en-cartao .marca h1 { font-size: 1.6rem; color: var(--ouro); }
.en-cartao .marca span { color: var(--suave); }
.en-cartao h2 { font-size: 1.25rem; margin-bottom: .25rem; }
.en-cartao .dica { margin: 0 0 .5rem; }
.en-campos { display: flex; flex-direction: column; gap: .25rem; }
.en-campos label { margin-top: .5rem; font-size: .88rem; color: var(--apoio); }
.en-campos input, .bloqueio input { min-height: 44px; font-size: 1rem; }
.en-erro { color: var(--verm); min-height: 1.2em; margin: .5rem 0 0; font-size: .9rem; }
.en-confiar { display: flex; align-items: flex-start; gap: .55rem; margin-top: .8rem; cursor: pointer; font-size: .95rem; }
.en-confiar input { width: 1.1rem; height: 1.1rem; margin-top: .15rem; accent-color: var(--ouro); flex: 0 0 auto; }
.en-confiar small { display: block; color: var(--suave); font-size: .8rem; margin-top: .15rem; }
.en-cartao .botoes { display: flex; flex-direction: column; gap: .5rem; margin-top: .75rem; }
.en-cartao .botoes .btn { justify-content: center; }
.en-teste { margin: 1rem 0 0; padding-top: .75rem; border-top: 1px solid var(--borda); font-size: .8rem; color: var(--suave); }
.bl-icone { display: grid; place-items: center; width: 52px; height: 52px; border-radius: 50%; background: var(--ouro-fundo); color: var(--ouro); margin-bottom: .5rem; }
.chave-totp { margin: .5rem 0 .25rem; padding: .6rem .8rem; border: 1px dashed var(--ouro2); border-radius: 8px; font: 600 1.05rem/1.3 ui-monospace, Consolas, monospace; letter-spacing: .08em; word-break: break-all; color: var(--texto); }
ol.passos { display: block; padding-left: 1.2rem; color: var(--apoio); }  /* lista numerada, não a barra de passos do Financeiro */
ol.passos li { margin: .4rem 0; }
ul.entradas { list-style: none; padding: 0; margin: .25rem 0 .75rem; font-size: .88rem; }
ul.entradas li { padding: .3rem 0; border-bottom: 1px solid var(--borda); }
ul.entradas small { color: var(--suave); }

/* ---------- Hoje em três colunas ---------- */
.hoje3 { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr) minmax(260px, .85fr); gap: 1rem; align-items: start; }
.hoje3.sem-atrasos { grid-template-columns: minmax(0, 1.6fr) minmax(260px, .9fr); }
@media (max-width: 1180px) { .hoje3 { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); } .hoje3 .h-painel { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: .75rem; } .hoje3 .h-painel > .h-tit { grid-column: 1 / -1; } }
@media (max-width: 760px) { .hoje3, .hoje3.sem-atrasos { grid-template-columns: 1fr; } }
.h-col { min-width: 0; }
.h-tit { display: flex; align-items: center; gap: .45rem; font-size: 1.05rem; color: var(--ouro); margin: 0 0 .6rem; }
.h-dia-todo { display: flex; flex-wrap: wrap; gap: .3rem; margin-bottom: .5rem; }
.h-dia-todo .chip-comp { width: auto; }
.h-lista { border: 1px solid var(--borda); border-radius: var(--raio); background: var(--bloco); overflow: hidden; }
.h-item { display: grid; grid-template-columns: 3.4rem minmax(0, 1fr) auto auto; gap: .5rem; align-items: center; min-height: 48px; padding: .4rem .7rem; border-top: 1px solid var(--borda); cursor: pointer; }
.h-item:first-child { border-top: 0; }
.h-item:hover { background: var(--linha-hover); }
.h-item .h-hora { font-variant-numeric: tabular-nums; color: var(--ouro); font-weight: 600; }
.h-item .h-nome { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; }
.h-item .h-nome .etq { margin-left: .35rem; }
.h-item .h-icones { display: inline-flex; gap: .3rem; align-items: center; color: var(--suave); }
.h-item .h-icones svg { width: 1rem; height: 1rem; }
.h-item .sino { display: inline-flex; align-items: center; gap: .1rem; font-size: .75rem; color: var(--ouro); }
.h-item.sessao { box-shadow: inset 4px 0 0 var(--k); }
.h-item.comp, .h-item.gev { grid-template-columns: 3.4rem minmax(0, 1fr) auto; color: var(--apoio); }
.h-item.comp .h-nome, .h-item.gev .h-nome { font-weight: 400; }
.h-item.foi { opacity: .5; }
.h-item.foi .h-hora { color: var(--suave); }
.h-item.foi:hover, .h-item.foi:focus-within { opacity: .85; }
.h-item.sit-falta_justificada .h-nome, .h-item.sit-falta_injustificada .h-nome, .h-item.sit-cancelado .h-nome { text-decoration: line-through; }
.h-item.alvo, .h-fantasmas.alvo { outline: 2px dashed var(--ouro); outline-offset: -2px; background: var(--ouro-fundo); }
.sit-menu { gap: .3rem; min-height: 34px; }
.sit-menu svg { color: var(--cor-sit); }
.h-agora { display: flex; align-items: center; gap: .45rem; height: 1.2rem; padding: 0 .7rem; }
.h-agora::after { content: ''; flex: 1; height: 2px; border-radius: 1px; background: var(--ouro); }
.h-agora span { font-size: .72rem; font-weight: 600; color: var(--ouro); font-variant-numeric: tabular-nums; }
.h-fantasmas { display: flex; flex-direction: column; gap: .35rem; margin-bottom: .5rem; min-height: 4px; border-radius: var(--raio); }
.h-item.h-tarefa, .h-fantasmas .h-item { grid-template-columns: auto auto minmax(0, 1fr) auto auto; border: 1px dashed color-mix(in srgb, var(--suave) 60%, transparent); border-radius: 10px; background: transparent; cursor: grab; }
.h-lista .h-item.h-tarefa { border-radius: 0; border-width: 1px 0 0; border-style: dashed; }
.h-item.h-tarefa .h-nome { font-style: italic; font-weight: 400; color: var(--apoio); text-align: left; border: 0; background: none; cursor: pointer; padding: 0; }
.h-item.h-tarefa input[type=checkbox] { width: 20px; height: 20px; accent-color: var(--verde); }
.h-item.h-tarefa.feita .h-nome { text-decoration: line-through; opacity: .6; }
body.arrastando-tarefa .h-fantasmas { min-height: 2.6rem; outline: 1px dashed var(--borda); outline-offset: 2px; }

.h-atrasos .h-tit { color: var(--verm); }
.h-atrasos.calmo .h-tit { color: var(--verde); }
.h-calmo { padding: 1.5rem 1rem; text-align: center; color: var(--suave); border: 1px solid var(--borda); border-radius: var(--raio); background: var(--bloco); }
.h-atraso { padding: .7rem .85rem; margin-bottom: .6rem; border: 1px solid color-mix(in srgb, var(--verm) 45%, var(--borda)); border-radius: var(--raio); background: color-mix(in srgb, var(--verm) 7%, var(--bloco)); box-shadow: inset 4px 0 0 var(--verm); }
.h-atraso h4 { display: flex; align-items: center; gap: .4rem; margin: 0 0 .4rem; font-size: .92rem; color: var(--texto); }
.h-atraso h4 svg { color: var(--verm); width: 1.05rem; height: 1.05rem; }
.h-at-item { display: flex; justify-content: space-between; align-items: center; gap: .6rem; padding: .35rem 0; border-top: 1px solid color-mix(in srgb, var(--verm) 18%, transparent); }
.h-at-item:first-of-type { border-top: 0; }
.h-at-item b { display: block; font-weight: 500; }
.h-at-item small { display: block; color: var(--suave); font-size: .8rem; }
.h-at-acoes { display: flex; gap: .3rem; flex: none; align-items: center; }
/* Lotes 28 e 30: ações novas discretas (ícone com dica); o nome nunca é empurrado, ele que quebra a linha. */
.h-at-item > div:first-child { min-width: 0; }
.h-at-item b { overflow-wrap: anywhere; }
.h-at-rodape { display: flex; flex-wrap: wrap; gap: .4rem; padding-top: .35rem; }
.h-at-acoes label.btn { display: inline-flex; align-items: center; gap: .3rem; }

.h-painel { display: flex; flex-direction: column; gap: .75rem; }
.h-cartao { padding: .75rem .85rem; border: 1px solid var(--borda); border-radius: var(--raio); background: var(--bloco); }
.h-cartao h4 { display: flex; align-items: center; gap: .4rem; margin: 0 0 .5rem; font-size: .88rem; color: var(--apoio); letter-spacing: .02em; }
.h-cartao h4 svg { color: var(--ouro); width: 1rem; height: 1rem; }
.h-p-item { display: flex; align-items: center; justify-content: space-between; gap: .5rem; min-height: 36px; font-size: .9rem; border-top: 1px solid var(--borda); }
.h-p-item:first-child { border-top: 0; }
.h-p-item small { color: var(--suave); }
.h-p-item .h-quando { min-width: 3.6rem; color: var(--ouro); }
.h-p-item.hoje .h-quando { font-weight: 600; }
.h-p-item > span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.h-mes { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
.h-mes small { display: block; color: var(--suave); font-size: .78rem; }
.h-mes b { font-size: 1.1rem; font-variant-numeric: tabular-nums; }
.h-cal h4 { justify-content: space-between; }
.h-cal h4 span { flex: 1; text-align: center; color: var(--texto); }
.h-cal-grade { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; text-align: center; }
.h-cal-sem { font-size: .7rem; color: var(--suave); padding-bottom: .2rem; }
.h-cal-dia { position: relative; min-height: 34px; border: 0; border-radius: 8px; background: none; color: var(--apoio); font: inherit; font-size: .85rem; cursor: pointer; font-variant-numeric: tabular-nums; }
.h-cal-dia:hover { background: var(--linha-hover); }
.h-cal-dia.tem { color: var(--texto); font-weight: 500; }
.h-cal-dia i { position: absolute; left: 50%; bottom: 3px; width: calc(4px + var(--n) * 1.5px); height: 4px; transform: translateX(-50%); border-radius: 2px; background: var(--k-psicoterapia); }
.h-cal-dia.hoje { box-shadow: inset 0 0 0 1.5px var(--ouro); color: var(--ouro); font-weight: 600; }
.h-cal-dia.sel { background: var(--ouro-fundo); }

/* ---------- Agenda nova ---------- */
.semana .sem-col { background-color: var(--fora-exp); }
.sem-exp { position: absolute; left: 0; right: 0; background: var(--bloco-liso); pointer-events: none; z-index: 0; }
.sem-col.hoje .sem-exp { background: color-mix(in srgb, var(--ouro) 5%, var(--bloco-liso)); }
.semana .bloco { z-index: 1; }
.bloco.sessao, .bloco.classe-grupo, .bloco.classe-curso, .bloco.classe-evento {
  background: var(--k); color: var(--k-texto); border: 0; border-left: 3px solid color-mix(in srgb, var(--k) 55%, #000); box-shadow: none; }
:root[data-tema="claro"] .bloco.sessao, :root[data-tema="zen"] .bloco.sessao,
:root[data-tema="claro"] .bloco.classe-grupo, :root[data-tema="zen"] .bloco.classe-grupo,
:root[data-tema="claro"] .bloco.classe-curso, :root[data-tema="zen"] .bloco.classe-curso,
:root[data-tema="claro"] .bloco.classe-evento, :root[data-tema="zen"] .bloco.classe-evento { border-left-color: color-mix(in srgb, var(--k) 35%, #000); }
.bloco.sessao .b-hora, .bloco.classe-grupo .b-hora, .bloco.classe-curso .b-hora, .bloco.classe-evento .b-hora { color: inherit; opacity: .75; }
.bloco.sessao svg, .bloco.classe-grupo svg, .bloco.classe-curso svg, .bloco.classe-evento svg { color: inherit; opacity: .85; }
.bloco.sessao .b-nome { font-weight: 600; }
.bloco.alto { display: flex; flex-direction: column; gap: .05rem; padding: .25rem .4rem; }
.bloco .b-l1 { display: flex; align-items: center; gap: .3rem; min-width: 0; }
.bloco .b-l1 .b-nome { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bloco .b-l2 { font-size: .72rem; opacity: .8; font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; }
.bloco .b-ics { display: inline-flex; gap: .15rem; margin-left: auto; flex: none; }
.bloco .b-ics svg { margin: 0; }
.bloco.passou.sessao, .bloco.passou.classe-grupo, .bloco.passou.classe-curso, .bloco.passou.classe-evento { background: color-mix(in srgb, var(--k) var(--k-passado), var(--bloco-liso)); }
.bloco.passou > * { opacity: .78; }
.bloco.sit-falta_justificada .b-nome, .bloco.sit-falta_injustificada .b-nome { text-decoration: line-through; }
.bloco.sit-cancelado { opacity: .45; }
/* Pessoal e Google: só contorno, não disputam o olhar com o trabalho */
.bloco.classe-pessoal, .bloco.classe-google { background: color-mix(in srgb, var(--bloco-liso) 70%, transparent); color: var(--suave); border: 1px solid var(--borda); box-shadow: none; }
.bloco.classe-pessoal svg, .bloco.classe-google svg { color: var(--suave); }
.bloco.classe-pessoal .b-hora, .bloco.classe-google .b-hora { color: var(--suave); }
.bloco.livre { border-style: dotted; }
.bloco.passou.classe-pessoal > *, .bloco.passou.classe-google > * { opacity: .6; }
.bloco.fant { background: transparent; border: 1px dashed color-mix(in srgb, var(--suave) 60%, transparent); color: var(--suave); font-style: italic; box-shadow: none; z-index: 0; }
.bloco.fant svg { color: var(--suave); }
.bloco.conf { box-shadow: 0 0 0 2px var(--verm); z-index: 2; }
.bloco:hover { z-index: 3; }
.bloco.sessao:hover, .bloco.classe-grupo:hover, .bloco.classe-curso:hover, .bloco.classe-evento:hover { filter: brightness(1.06); }
.conflito-etq { display: inline-flex; align-items: center; gap: .3rem; cursor: pointer; background: none; font: inherit; font-size: .8rem; padding: .15rem .6rem; border-radius: 999px; border: 1px solid var(--verm); color: var(--verm); }
.ag-legenda { align-items: center; margin: 0 0 .6rem; }
.ag-legenda span::before { content: none; }
.leg-cor { display: inline-flex; align-items: center; gap: .35rem; border: 0; background: none; color: var(--apoio); font: inherit; font-size: .8rem; cursor: pointer; padding: .2rem .1rem; }
.leg-cor i { width: 1.3rem; height: .75rem; border-radius: 4px; background: var(--k); }
.leg-cor.apagada { opacity: .4; text-decoration: line-through; }
.leg-sep { width: 1px; height: 1rem; background: var(--borda); }
.leg-ic { display: inline-flex; align-items: center; gap: .2rem; }
.leg-ic svg { width: .9rem; height: .9rem; }
.leg-contorno i, .leg-trac i { display: inline-block; width: 1.3rem; height: .75rem; border-radius: 4px; border: 1px solid var(--suave); margin-right: .35rem; vertical-align: -1px; }
.leg-trac i { border-style: dashed; }
.leg-filtro { display: inline-flex; align-items: center; gap: .4rem; margin-left: auto; }
.ag-legenda em { order: 99; }
.ag-cartao { position: fixed; z-index: 150; width: 260px; padding: .75rem .9rem; border: 1px solid var(--borda); border-radius: 10px; background: var(--bloco-liso); box-shadow: var(--sombra-painel); color: var(--apoio); font-size: .85rem; pointer-events: none; }
.ag-cartao b { display: block; font-family: Spectral, Georgia, serif; font-size: 1.05rem; color: var(--texto); }
.ag-cartao small { display: block; color: var(--suave); }
.ag-cartao p { margin: .35rem 0 0; display: flex; align-items: center; gap: .3rem; }
.ag-cartao p svg { width: .95rem; height: .95rem; }
.ag-cartao ul { margin: .4rem 0 0; padding-left: 1rem; }
.ag-cartao .ag-sit svg { color: var(--cor-sit); }
.ag-cartao .ag-conf { color: var(--verm); }

/* ---------- Atendimento: modo discreto ---------- */
/* 04/11, pedido dele: fica à vista só o menu de cima, a data, Paciente, Lembretes e o centro; o resto borra (passar o mouse mostra). */
.trabalho.discreto .t-rolo, .trabalho.discreto .t-pend,
.trabalho.discreto .t-bloco:not([data-bloco="paciente"], [data-bloco="lembretes"]) { filter: blur(7px); transition: filter .2s; }
.trabalho.discreto .t-rolo:hover, .trabalho.discreto .t-pend:hover, .trabalho.discreto .t-pend:focus-visible,
.trabalho.discreto .t-bloco:hover, .trabalho.discreto .t-bloco:focus-within { filter: none; }
.t-dia .btn[aria-pressed="true"] { color: var(--ouro); }

/* ---------- cadastro pelo link: revisão ---------- */
.rev-tabela { display: grid; grid-template-columns: auto minmax(7rem, .8fr) minmax(0, 1fr) minmax(0, 1.2fr); border: 1px solid var(--borda); border-radius: 8px; overflow: hidden; font-size: .88rem; }
.rev-cab, .rev-linha { display: contents; }
.rev-cab > span { padding: .4rem .5rem; font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; color: var(--suave); background: var(--bloco-liso); }
.rev-linha > * { padding: .45rem .5rem; border-top: 1px solid var(--borda); min-width: 0; overflow-wrap: anywhere; }
.rev-linha input { width: 18px; height: 18px; accent-color: var(--ouro2); margin: .55rem .5rem; padding: 0; }
.rev-linha.igual > * { color: var(--suave); }
.rev-linha b { font-weight: 600; color: var(--texto); }
.rev-ativar { display: flex; align-items: center; gap: .4rem; margin: .75rem 0 .25rem; font-size: .9rem; }
.revisao .botoes { margin-top: .75rem; }

/* ---------- acessibilidade: foco visível nos menus ---------- */
.menu [role="menuitem"]:focus-visible { outline: 2px solid var(--ouro); outline-offset: -2px; }
@media (hover: none) { .passo { width: 44px; height: 44px; } }

.h-item.pacote { grid-template-columns: 3.4rem minmax(0, 1fr) auto; }
.h-item.pacote .h-nome small { color: var(--suave); font-weight: 400; }
.h-pacote-lista { display: none; grid-column: 2 / -1; font-size: .82rem; color: var(--suave); }
.h-item.pacote[aria-expanded="true"] .h-pacote-lista { display: block; }

/* ---------- Lote 4 (01/11/2026): direitos do paciente, proteção de dados ---------- */
.faixa-info.bloqueio { border-color: var(--verm); margin: .75rem 0 0; }
.faixa-info.bloqueio svg { color: var(--verm); flex: none; }
.secao.falta h3 small { color: var(--verm); }
.etq.ok { color: var(--verde); border-color: var(--verde); }
.pedidos { list-style: none; margin: .5rem 0 .75rem; padding: 0; }
.pedido { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; padding: .5rem 0; border-top: 1px dashed var(--borda); }
.pedido:first-child { border-top: 0; }
.pedido > div:first-child { flex: 1; min-width: 12rem; }
.pedido small { color: var(--suave); }
.pedido.aberto strong { color: var(--texto); }
.botoes-linha { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .75rem; }
.direitos .dica { margin: 0 0 .25rem; }
.aviso-reservado { grid-column: 1 / -1; display: flex; gap: .5rem; align-items: flex-start; margin: -.25rem 0 0; font-size: .8rem; color: var(--suave); }
.aviso-reservado svg { width: 16px; height: 16px; flex: none; color: var(--ouro); margin-top: .1rem; }
.cartao .campos + .sub-titulo, .cartao .campos + h3 { margin-top: 1.25rem; }

/* ---------- Lote 5 (01/11/2026): aplicativo do paciente e notas fiscais ---------- */
.app-pac h4.sub-titulo { font-size: .9rem; margin: 1rem 0 .25rem; color: var(--texto); display: flex; align-items: center; gap: .4rem; }
.app-pac h4.sub-titulo small { font-weight: 400; color: var(--suave); }
.pedido .feita { text-decoration: line-through; color: var(--suave); }
.recebido-texto { white-space: pre-wrap; margin-top: .2rem; }
.pedido.cancelada strong { text-decoration: line-through; color: var(--suave); }
.notas-pac { margin-top: .5rem; }

/* Lote 6: importar pacientes de uma planilha (importa.js) */
dialog.importa .rev-tabela select { width: 100%; min-width: 10rem; }
.imp-rolagem { max-height: 45vh; overflow: auto; border: 1px solid var(--borda); border-radius: 8px; margin: .5rem 0; }
.imp-linhas { border-collapse: collapse; width: 100%; font-size: .85rem; }
.imp-linhas th { position: sticky; top: 0; background: var(--bloco-liso); color: var(--suave); font-size: .72rem; text-transform: uppercase; letter-spacing: .04em; text-align: left; padding: .4rem .5rem; white-space: nowrap; }
.imp-linhas td { padding: .35rem .5rem; border-top: 1px solid var(--borda); white-space: nowrap; max-width: 16rem; overflow: hidden; text-overflow: ellipsis; }
.imp-linhas tr.repetido td { background: color-mix(in srgb, var(--ouro) 8%, transparent); }
.imp-linhas tr.fora td:not(:first-child) { opacity: .45; }
.imp-linhas .etq { white-space: nowrap; }
.imp-linhas input { width: 18px; height: 18px; accent-color: var(--ouro2); }
/* ---------- Lote 7 (04/11/2026): câmera da entrada, como na máscara (bloco fixo, clique amplia, botão liga e desliga) ---------- */
/* Encaixada (04/11, como na máscara): o último bloco da coluna, empurrado para o pé e preso nele ao rolar. */
.cam-entrada { flex: 0 0 auto; margin-top: auto; position: sticky; bottom: 0; z-index: 2; width: 100%; background: var(--bloco); border: 1px solid var(--borda); border-radius: var(--raio); overflow: hidden; box-shadow: var(--relevo); }
.cam-topo { text-transform: uppercase; letter-spacing: .06em; }
.cam-topo { display: flex; align-items: center; gap: .4rem; padding: .2rem .3rem .2rem .6rem; font-size: .78rem; color: var(--suave); }
.cam-topo svg { width: 14px; height: 14px; }
.cam-topo .btn { margin-left: auto; min-height: 1.8rem; min-width: 1.8rem; padding: 0; }
.cam-ponto { width: .5rem; height: .5rem; border-radius: 50%; background: var(--suave); }
.cam-ponto.vivo { background: var(--verde); box-shadow: 0 0 6px var(--verde); }
.cam-tela { position: relative; aspect-ratio: 16 / 9; background: #000; }
.cam-tela img { width: 100%; height: 100%; object-fit: cover; display: block; cursor: zoom-in; }
.cam-tela img:not([src]) { visibility: hidden; }
.cam-msg { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; text-align: center; padding: .5rem; font-size: .75rem; color: var(--apoio); background: rgba(0,0,0,.55); }
.cam-msg[hidden] { display: none; }
.cam-entrada.desligada .cam-tela { display: none; }
.cam-grande { position: fixed; inset: 0; z-index: 900; display: none; align-items: center; justify-content: center; background: rgba(0,0,0,.85); cursor: zoom-out; }
.cam-grande.on { display: flex; }
.cam-grande img { max-width: 94vw; max-height: 90vh; border-radius: var(--raio); }
@media (max-width: 899px) { .cam-entrada, .cam-grande { display: none !important; } }
.ajustes #atalhos-menu, .ajustes #tema-alterna { display: inline-flex; }

/* Lote 9: baixa pelo extrato */
.ext-grupo { margin: 1rem 0; }
.ext-grupo h3 { margin: 0 0 .25rem; }
.ext-linha { display: grid; grid-template-columns: 1.5rem 5.2rem minmax(0, 1.2fr) minmax(0, 1.2fr) 6.5rem; gap: .6rem; align-items: center; padding: .5rem .25rem; border-bottom: 1px solid var(--linha); }
.ext-linha small { display: block; color: var(--suave); }
.ext-linha select { width: 100%; min-width: 0; }
.ext-quem, .ext-paciente { min-width: 0; overflow-wrap: anywhere; }
.ext-valor { text-align: right; white-space: nowrap; }
/* Lote 29: créditos do banco. O número a conferir fica num ponto pequeno no botão; a dica do que está em aberto, sob o nome. */
.conta-banco { display: inline-grid; place-items: center; min-width: 1.15rem; height: 1.15rem; padding: 0 .3rem; margin-left: .15rem; border-radius: 999px;
  background: var(--ouro-fundo); color: var(--ouro); border: 1px solid var(--ouro2); font-size: .7rem; font-weight: 600; line-height: 1; }
.ext-paciente small { margin-top: .2rem; font-size: .76rem; }
.ext-paciente small.ext-fecha { color: var(--verde); }
.ext-dobra { margin: .75rem 0; }
.ext-dobra summary { cursor: pointer; color: var(--suave); padding: .4rem 0; }
.ext-fim { position: sticky; bottom: 0; background: var(--fundo); padding: .75rem 0; }
@media (max-width: 720px) {
  .ext-linha { grid-template-columns: 1.5rem minmax(0, 1fr) auto; }
  .ext-quem { grid-column: 2 / 4; }
  .ext-linha select, .ext-paciente { grid-column: 1 / 4; }
}

/* Lote 10: câmera da entrada no centro, no presencial em sessão */
.t-roda.em-sessao:has(.cam-palco) { gap: .3rem; }
.cam-palco { width: min(440px, 100%); margin-top: .6rem; }
.cam-palco .cam-entrada { position: static; margin: 0; width: 100%; }
/* Lote 11: grupo de supervisão. Lista de presença e cadastro. */
.gp-dlg { max-height: calc(100vh - 2rem); overflow-y: auto; }
.gp-lista { display: flex; flex-direction: column; gap: .4rem; margin-bottom: .6rem; }
.gp-linha { display: grid; grid-template-columns: minmax(0, 1fr) minmax(11.5rem, auto); gap: .6rem; align-items: center; }
.gp-linha small { color: var(--suave); font-size: .78rem; }
.gp-quem { margin: .9rem 0 .6rem; }
.gp-quem small { display: block; margin-top: .35rem; }
.gp-remarcar { margin: .5rem 0 .9rem; color: var(--apoio); font-size: .9rem; }
.gp-remarcar summary { cursor: pointer; }
.gp-remarcar .campos { margin: .6rem 0; }
.gp-erro { color: var(--verm); font-size: .88rem; margin: .4rem 0 .8rem; }
.gp-item { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .5rem .9rem; padding: .55rem 0; border-top: 1px solid var(--borda); }
.gp-item:last-of-type { margin-bottom: .75rem; border-bottom: 1px solid var(--borda); }
.gp-item small { display: block; color: var(--suave); font-size: .82rem; }
.gp-item .botoes { margin: 0; }
.gp-item.apagada { opacity: .6; }
.gp-dlg .busca { flex: 0 0 auto; }
.gp-pessoas { display: grid; grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr)); gap: .2rem .8rem; max-height: 11rem; overflow-y: auto; margin: .5rem 0 .3rem; padding: .3rem; border: 1px solid var(--borda); border-radius: 8px; }
.gp-pessoas label { display: flex; align-items: center; gap: .4rem; min-height: 32px; font-size: .9rem; color: var(--texto); }
.gp-pessoas input, .gp-ativo input { width: 1.05rem; height: 1.05rem; min-height: 0; flex: none; }
.gp-ativo { display: flex; align-items: center; gap: .4rem; margin: .6rem 0; }
@media (max-width: 480px) { .gp-linha { grid-template-columns: 1fr; gap: .2rem; } .leg-filtro { max-width: 100%; min-width: 0; margin-left: 0; } .leg-filtro .multi { min-width: 0; flex: 1 1 auto; } }

/* Lote 12: ficha com seções que recolhem. Primeiro o cadastro; depois o que é da clínica. */
.ficha-grupo { display: flex; align-items: baseline; gap: .5rem; flex-wrap: wrap; padding: 1.1rem 0 .35rem; border-bottom: 2px solid var(--borda); }
.ficha-grupo span { font-family: Spectral, Georgia, serif; font-weight: 600; font-size: 1.15rem; color: var(--texto); }
.ficha-grupo small { color: var(--suave); font-size: .78rem; }
.ficha-grupo .btn { margin-left: auto; }
.secao.convite:empty { display: none; }
.secao.dobravel { padding: 0; }
.secao.dobravel > h3 { cursor: pointer; margin: 0; padding: .75rem .1rem; min-height: 44px; flex-wrap: wrap; border-radius: 6px; user-select: none; }
.secao.dobravel > h3:hover { background: var(--ouro-fundo); }
.secao.dobravel > h3:focus-visible { outline: 2px solid var(--ouro2); outline-offset: -2px; }
.secao.dobravel > h3 svg { flex: none; }
.secao.dobravel.fechada > h3::after { transform: rotate(-45deg); }
.secao.dobravel > :not(h3) { margin-bottom: .9rem; }
.secao.dobravel.fechada > :not(h3) { display: none; }
@media (prefers-reduced-motion: reduce) { .secao.dobravel > h3::after { transition: none; } }

/* Lote 12: outros recebimentos, no fim do Financeiro. */
.fin-outros { margin-top: 1.5rem; }
.fin-outros h3 { color: var(--ouro); font-size: 1.05rem; margin-bottom: .5rem; }
.fo-linha { display: grid; grid-template-columns: 6rem 1fr auto 2.2rem; gap: .25rem .75rem; align-items: center; padding: .55rem .25rem; border-top: 1px solid var(--borda); }
.fo-desc { min-width: 0; }
.fo-desc small { display: block; color: var(--suave); }
.fo-linha.cancelado .fo-desc b, .fo-linha.cancelado .fo-valor { text-decoration: line-through; opacity: .6; }
@media (max-width: 599px) { .fo-linha { grid-template-columns: 1fr auto 2.2rem; } .fo-linha .ext-data { grid-column: 1 / -1; color: var(--suave); font-size: .8rem; } }

/* Lote 13: a ficha na página toda; em tela larga, cadastro à esquerda e clínica à direita. */
.ficha.pagina { width: 100%; left: 0; border-left: 0; }
.ficha.pagina .ficha-topo, .ficha.pagina .ficha-corpo { padding-left: max(1.25rem, calc((100% - 1240px) / 2)); padding-right: max(1.25rem, calc((100% - 1240px) / 2)); }
.ficha.pagina .ficha-colunas { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 0 2.5rem; align-items: start; }
@media (max-width: 999px) { .ficha.pagina .ficha-colunas { display: block; } }

/* Lote 14: férias dentro de Feriados. */
.ferias-linha { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin-bottom: .6rem; max-width: 44rem; }
.ferias-linha input { flex: 1 1 9rem; min-width: 0; min-height: 40px; }

/* Lote 16: elemento escondido fica escondido, mesmo em botão com display próprio. */
[hidden] { display: none !important; }

/* Lote 16: retorno de cada ação. */
.aviso { animation: aviso-sobe .28s cubic-bezier(.34, 1.56, .64, 1); }
.aviso svg { flex: none; width: 20px; height: 20px; color: var(--verde); }
.aviso.erro svg { color: var(--verm); }
@keyframes aviso-sobe { from { opacity: 0; transform: translate(-50%, 10px); } }

/* Lote 16: ajuda ao parar o mouse no título. Sem mouse (celular), segue à vista, como texto comum. */
.ajuda-bolha { font: 400 .8rem/1.4 'IBM Plex Sans', sans-serif; color: var(--suave); flex-basis: 100%; order: 3; }
@media (hover: hover) {
  .cartao h2, .cartao h3, .cartao h4, .secao > h3, .ext-grupo > h3, [data-ajuda], .ficha-grupo { position: relative; }
  .ajuda-bolha { position: absolute; left: 0; top: 100%; z-index: 20; width: max-content; max-width: min(34rem, 80vw); padding: .5rem .7rem; border-radius: 8px;
    color: var(--apoio); background: var(--bloco-liso); border: 1px solid var(--borda); box-shadow: 0 6px 18px rgba(0,0,0,.22);
    opacity: 0; transform: translateY(4px); pointer-events: none; transition: opacity .15s, transform .15s; }
  :hover > .ajuda-bolha, :focus-visible > .ajuda-bolha { opacity: 1; transform: none; transition-delay: .25s; }
  #tela .campo, #camada-ficha .campo { position: relative; }
  #tela .campo > .dica, #camada-ficha .campo > .dica { position: absolute; left: 0; top: 100%; z-index: 20; max-width: 22rem; padding: .35rem .55rem; border-radius: 6px;
    color: var(--apoio); background: var(--bloco-liso); border: 1px solid var(--borda); box-shadow: 0 6px 18px rgba(0,0,0,.22); opacity: 0; pointer-events: none; transition: opacity .15s; }
  #tela .campo:hover > .dica, #tela .campo:focus-within > .dica, #camada-ficha .campo:hover > .dica, #camada-ficha .campo:focus-within > .dica { opacity: 1; }
  .ficha-grupo small { opacity: 0; transition: opacity .15s; }
  .ficha-grupo:hover small { opacity: 1; }
}

/* Lote 16: recolher e abrir, com seta > e v e um pulinho leve. */
.cartao.dobra-c { transition: transform .2s, box-shadow .2s; }
.cartao.dobra-c:hover { transform: translateY(-1px); box-shadow: var(--relevo); }
.cartao.dobra-c > h2 { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; margin: 0; cursor: pointer; user-select: none; border-radius: 6px; }
.cartao.dobra-c > h2:focus-visible { outline: 2px solid var(--ouro2); outline-offset: 3px; }
.cartao.dobra-c > h2::after, .secao.dobravel > h3::after { content: ''; flex: none; width: .55rem; height: .55rem; margin: 0 .35rem 0 auto; border-right: 2px solid var(--ouro2); border-bottom: 2px solid var(--ouro2);
  transform: rotate(45deg); transition: transform .32s cubic-bezier(.34, 1.56, .64, 1); }
.cartao.dobra-c.fechado > h2::after, .secao.dobravel.fechada > h3::after { transform: rotate(-45deg); }
.cartao.dobra-c.fechado > h2:hover::after, .secao.dobravel.fechada > h3:hover::after { transform: rotate(-45deg) translate(2px, 2px); }
.cartao-corpo { display: grid; grid-template-rows: 1fr; transition: grid-template-rows .32s cubic-bezier(.3, .9, .4, 1); }
.cartao.fechado .cartao-corpo { grid-template-rows: 0fr; }
.cartao-miolo { min-height: 0; padding-top: 1rem; transition: opacity .25s, padding-top .25s; }
.cartao.fechado .cartao-miolo { overflow: hidden; opacity: 0; padding-top: 0; visibility: hidden; transition: opacity .2s, padding-top .25s, visibility 0s .3s; }
.cartao.animando .cartao-miolo { overflow: hidden; }
.secao.dobravel.abrindo:not(.fechada) > :not(h3) { animation: dobra-abre .3s cubic-bezier(.34, 1.3, .64, 1); }
@keyframes dobra-abre { from { opacity: 0; transform: translateY(-6px); } }
@media (prefers-reduced-motion: reduce) {
  .aviso, .secao.dobravel.abrindo > * { animation: none !important; }
  .cartao.dobra-c, .cartao-corpo, .cartao-miolo, .cartao.dobra-c > h2::after, .secao.dobravel > h3::after { transition: none !important; }
}

/* ---------- lote 19 (06/11/2026) ---------- */
/* grade de horários: risco sutil na hora cheia, mais fino nos 30 minutos. Vai por cima do fundo do expediente e por baixo dos blocos. */
.sem-col { background-image: none; }
.sem-col::after { content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image: linear-gradient(to bottom, color-mix(in srgb, var(--texto) 15%, transparent) 1px, transparent 1px),
    linear-gradient(to bottom, color-mix(in srgb, var(--texto) 6%, transparent) 1px, transparent 1px);
  background-size: 100% var(--h-hora), 100% var(--h-hora); background-position: 0 0, 0 calc(var(--h-hora) / 2); }
/* almoço: ao fundo, listrado de leve; não disputa com as sessões */
.semana .bloco.pausa { z-index: 0; font-style: italic; color: var(--suave); box-shadow: none; border-style: dashed; border-left-width: 1px;
  background: repeating-linear-gradient(135deg, color-mix(in srgb, var(--suave) 10%, transparent) 0 6px, transparent 6px 12px); }
.semana .bloco.pausa:hover { z-index: 1; }
/* barra da agenda: duas linhas, colunas por assunto */
.ag-legenda { display: flex; flex-wrap: wrap; align-items: stretch; gap: .35rem 1.4rem; }
.leg-col { display: grid; gap: .1rem .9rem; align-content: center; padding-left: 1.4rem; border-left: 1px solid var(--borda); }
.leg-col:first-child { padding-left: 0; border-left: 0; }
.leg-3 { grid-template-columns: repeat(3, auto); }
.leg-2 { grid-template-columns: repeat(2, auto); }
.leg-1 { grid-template-columns: auto; }
.leg-cor.leg-contorno i, .leg-cor.leg-trac i { background: none; border: 1px solid var(--suave); margin: 0; }
.leg-cor.leg-trac i { border-style: dashed; }
.leg-ic { color: var(--suave); gap: .3rem; }
/* janela da agenda: abas Dia, Semana e Mês, e o arrastar */
.agenda-janela .aj-abas { margin-right: .4rem; }
.agenda-janela .aj-gerenciar { margin-left: auto; }
.agenda-janela .aj-fechar { margin-left: 0; }
.agenda-janela .bloco[draggable="true"] { cursor: grab; }
.agenda-janela .aviso { z-index: 5; }
/* durante o atendimento, 30% de transparência: a chamada aparece de leve por trás (19.5). Os blocos ficam sólidos, para ler. */
dialog.agenda-janela.transparente { background: color-mix(in srgb, var(--fundo) 70%, transparent); background-image: none; }
dialog.agenda-janela.transparente::backdrop { background: transparent; }
.agenda-janela.transparente .semana, .agenda-janela.transparente .mes { background: transparent; }
.agenda-janela.transparente .semana .sem-col { background-color: color-mix(in srgb, var(--fora-exp) 45%, transparent); }
.agenda-janela.transparente .sem-exp { background: color-mix(in srgb, var(--bloco-liso) 45%, transparent); }
.agenda-janela.transparente .sem-cab { background: color-mix(in srgb, var(--bloco-liso) 85%, transparent); }
.agenda-janela.transparente .mes-dia { background: color-mix(in srgb, var(--bloco-liso) 45%, transparent); }
/* o mês */
.mes { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); border: 1px solid var(--borda); border-radius: var(--raio); overflow: hidden; background: var(--bloco); user-select: none; }
.mes-sem { position: sticky; top: 0; z-index: 3; padding: .35rem; text-align: center; font-size: .8rem; color: var(--apoio); background: var(--bloco-liso); border-bottom: 1px solid var(--borda); border-left: 1px solid var(--borda); }
.agenda-janela .mes { overflow: visible; }
.agenda-janela.transparente .mes-sem { background: color-mix(in srgb, var(--bloco-liso) 85%, transparent); }
.mes-sem:first-child { border-left: 0; }
.mes-dia { min-height: 8.5rem; padding: .2rem .25rem; border-left: 1px solid var(--borda); border-bottom: 1px solid var(--borda); background: var(--bloco-liso); display: flex; flex-direction: column; min-width: 0; }
.mes-dia:nth-child(7n + 1) { border-left: 1px solid var(--borda); }
.mes-dia.fora { opacity: .55; }
.mes-dia.hoje { background: var(--ouro-fundo); }
.mes-dia.feriado { background: color-mix(in srgb, var(--azul) 8%, var(--bloco-liso)); }
.mes-dia.alvo { outline: 2px dashed var(--ouro); outline-offset: -2px; }
.mes-cab { display: flex; align-items: baseline; gap: .3rem; min-width: 0; }
.mes-cab small { font-size: .66rem; color: var(--azul); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mes-num { border: 0; background: none; color: var(--apoio); font: inherit; font-size: .85rem; cursor: pointer; padding: 0 .25rem; border-radius: 5px; }
.mes-num:hover { background: var(--ouro-fundo); color: var(--ouro); }
.mes-dia.hoje .mes-num { color: var(--ouro); font-weight: 600; }
.mes-itens { display: grid; gap: 1px; align-content: start; flex: 1; min-height: 0; }
.mes-item { display: flex; gap: .25rem; align-items: baseline; padding: 0 .25rem; border-radius: 4px; font-size: .72rem; line-height: 1.35; color: var(--k-texto, inherit); background: var(--k, transparent); overflow: hidden; white-space: nowrap; }
.mes-item[draggable="true"] { cursor: grab; }
.mes-item b { font-weight: 600; opacity: .8; font-variant-numeric: tabular-nums; }
.mes-item .b-nome { overflow: hidden; text-overflow: ellipsis; }
.mes-item.classe-pessoal, .mes-item.classe-google, .mes-item.classe-tarefa { background: none; color: var(--suave); border: 1px solid var(--borda); }
.mes-item.classe-tarefa { border-style: dashed; }
.mes-item.sit-cancelado { opacity: .45; text-decoration: line-through; }
.mes-item.sit-falta_justificada .b-nome, .mes-item.sit-falta_injustificada .b-nome { text-decoration: line-through; }
.mes-item.conf { box-shadow: inset 0 0 0 1px var(--verm); }
.mes-item.arrastando { opacity: .35; }
.agenda-janela.discreta .mes-item:not(:hover) .b-nome { filter: blur(4px); }
/* régua do Atendimento: segurar e arrastar anda com ela */
.t-rolo { cursor: grab; }
.t-rolo.panorama, .t-rolo.panorama .t-item { cursor: grabbing; user-select: none; }
/* blocos livres */
.t-cab[draggable="true"] { cursor: grab; }
.t-bloco.arrastando { opacity: .4; }
.t-marca { flex: none; height: 3px; border-radius: 2px; background: var(--ouro); }
.t-col { min-height: 3rem; }
/* cápsula de mensagens */
.kc-msg { position: fixed; right: 1rem; bottom: 1rem; z-index: 85; display: flex; flex-direction: column; align-items: flex-end; }
.kc-msg[hidden] { display: none; }
.kc-pilula { display: inline-flex; align-items: center; gap: .4rem; padding: .5rem .85rem; border: 1px solid var(--ouro2); border-radius: 999px; background: var(--bloco-liso); color: var(--texto); font: inherit; font-size: .88rem; cursor: pointer; box-shadow: 0 8px 26px rgba(0,0,0,.4); touch-action: none; user-select: none; }
.kc-pilula svg { width: 1.05rem; height: 1.05rem; color: var(--ouro); }
.kc-pilula:hover { border-color: var(--ouro); }
.kc-msg.aberta .kc-pilula { box-shadow: none; }
.kc-painel { position: absolute; width: min(390px, 92vw); max-height: min(76vh, 720px); display: flex; flex-direction: column; border: 1px solid var(--ouro2); border-radius: 14px; background: var(--bloco-liso); box-shadow: 0 18px 50px rgba(0,0,0,.5); animation: desliza .2s ease; }
.kc-painel[hidden] { display: none; }
.kc-msg .kc-painel { top: calc(100% + .5rem); left: 0; }
.kc-msg.abre-cima .kc-painel { top: auto; bottom: calc(100% + .5rem); }
.kc-msg.abre-esq .kc-painel { left: auto; right: 0; }
.kc-cab { display: flex; align-items: center; gap: .45rem; padding: .5rem .7rem .4rem; color: var(--suave); font-size: .78rem; letter-spacing: .06em; text-transform: uppercase; cursor: move; touch-action: none; user-select: none; }
.kc-cab svg { width: .95rem; height: .95rem; color: var(--ouro); }
.kc-cab span { flex: 1; }
.kc-corpo { display: flex; flex-direction: column; gap: .6rem; min-height: 0; overflow-y: auto; padding: .2rem .8rem .8rem; }
.kc-msg.discreto .kc-corpo { filter: blur(7px); transition: filter .2s; }
.kc-msg.discreto .kc-corpo:hover, .kc-msg.discreto .kc-corpo:focus-within { filter: none; }
/* editor do prontuário */
.reg-texto, .reg-reservado .veu-texto, .reg-campos > div { text-align: justify; }
.rico { white-space: normal; }
.rico p { margin: 0 0 .15rem; }
.rico ul, .rico ol { margin: .15rem 0; padding-left: 1.4rem; }
.rico-caixa { display: flex; flex-direction: column; gap: .2rem; min-width: 0; flex: 1; }
.rico-topo { display: flex; align-items: flex-start; justify-content: flex-end; gap: .25rem; min-height: 1.7rem; }
.rico-barra { display: none; flex: 1; flex-wrap: wrap; align-items: center; gap: .15rem .5rem; }
.rico-caixa.aberta .rico-barra, .rico-caixa.selecao .rico-barra { display: flex; }
.rb-grupo { display: inline-flex; align-items: center; gap: .1rem; }
.rb { display: inline-grid; place-items: center; width: 1.65rem; height: 1.65rem; border: 0; border-radius: 6px; background: none; color: var(--apoio); cursor: pointer; padding: 0; }
.rb svg { width: .95rem; height: .95rem; }
.rb:hover { background: var(--ouro-fundo); color: var(--ouro); }
.rb.on, .rico-alterna[aria-pressed="true"] { background: var(--ouro-fundo); color: var(--ouro); }
.rb.cor { width: 1.2rem; height: 1.2rem; border-radius: 50%; background: var(--c); border: 2px solid transparent; background-clip: padding-box; }
.rb.cor.padrao { background: var(--texto); }
.rico-area { width: 100%; padding: .55rem .7rem; border: 1px solid var(--borda); border-radius: 8px; background: var(--campo, var(--bloco-liso)); color: var(--texto); font-family: 'Spectral', Georgia, serif; font-size: 1.08rem; line-height: 1.6; text-align: justify; overflow-wrap: anywhere; outline: none; cursor: text; }
.rico-area:focus { border-color: var(--ouro2); }
.rico-area.vazia::before { content: attr(data-dica); color: var(--suave); float: left; height: 0; pointer-events: none; font-style: italic; }
.modo-foco .rico-area { font-size: 1.22rem; }
.t-escrita.rico-caixa { min-height: 180px; }