/* =====================================================================================
   CAPS (nov/2026) — módulo único na fundação mm-* (mc-modulo.css). Aqui só o que é próprio do CAPS:
   cabeçalho do prontuário, termômetros de regime, linha do tempo clínica, PTS (metas e ações), escalas, fila do
   acolhimento e agenda. Container raiz: .psi (além de .mm). Nenhuma cor literal: tudo vem das variáveis --p-*.
   ===================================================================================== */

/* Rodapé dos indicadores: os textos do CAPS são mais longos que a média do módulo; quebra em vez de cortar com "…". */
.psi .mm-kpi-foot { white-space: normal; overflow: visible; text-overflow: clip; line-height: 1.3; }

/* ---------- colunas das grades (mm-grade) ---------- */
.psi .psi-g-usuarios { --cols: minmax(250px, 1.7fr) minmax(130px, .9fr) 112px minmax(150px, 1fr) minmax(150px, 1fr) 104px 40px; }
.psi .psi-g-atend    { --cols: 84px minmax(220px, 1.5fr) minmax(190px, 1.2fr) minmax(150px, 1fr) minmax(170px, 1.3fr) 98px 40px; }
.psi .psi-g-fila     { --cols: 120px minmax(250px, 1.7fr) minmax(170px, 1.1fr) minmax(170px, 1.2fr) 110px 150px; }
.psi .psi-g-pts      { --cols: minmax(240px, 1.6fr) minmax(150px, 1fr) 70px 110px minmax(160px, 1.1fr) 120px 40px; }
.psi .psi-g-busca    { --cols: minmax(250px, 1.6fr) 96px minmax(170px, 1.1fr) minmax(190px, 1.3fr) minmax(130px, .9fr) 150px; }
.psi .psi-g-alertas  { --cols: 150px minmax(230px, 1.4fr) minmax(260px, 2fr) 90px 120px; }
.psi .mm-grade-l { min-height: 56px; contain-intrinsic-size: auto 60px; }

.psi .psi-sub { font-size: .7rem; color: var(--p-faint); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.psi .psi-mono { font-family: var(--p-mono, ui-monospace, monospace); font-size: .7rem; font-weight: 700; color: var(--p-muted); white-space: nowrap; }
.psi .psi-dias { display: inline-flex; align-items: baseline; gap: 3px; font-weight: 800; color: var(--tom, var(--p-ink)); font-variant-numeric: tabular-nums; }
.psi .psi-dias small { font-size: .64rem; font-weight: 700; color: var(--p-faint); }
.psi-selos { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 3px; }
.psi .psi-quebra { white-space: normal; overflow: visible; text-overflow: clip; }
.psi .psi-linha-risco { box-shadow: inset 3px 0 0 var(--p-red); }
.psi .psi-linha-busca { box-shadow: inset 3px 0 0 var(--p-orange); }
.psi .psi-linha-urgente { box-shadow: inset 3px 0 0 var(--p-red); background: color-mix(in srgb, var(--p-red-soft) 45%, var(--p-surface)); }
.psi .psi-linha-prioritario { box-shadow: inset 3px 0 0 var(--p-orange); }

/* ---------- indicador de regime (termômetro: dias com atendimento no mês × referência) ---------- */
.psi .psi-regime { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.psi .psi-regime-top { display: flex; align-items: center; gap: 6px; }
.psi .psi-termo { height: 5px; border-radius: 50px; background: var(--p-soft2); overflow: hidden; }
.psi .psi-termo > div { height: 100%; border-radius: 50px; background: var(--tom, var(--p-blue-light)); }

/* ---------- cabeçalho do prontuário ---------- */
.psi .psi-pront-cab {
    display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 16px; align-items: center;
    padding: 16px 18px; border-radius: 16px; background: var(--p-surface); border: 1px solid var(--p-border); box-shadow: var(--p-shadow-sm);
}
.psi .psi-pront-cab.risco { border-color: var(--p-red-line); background: linear-gradient(0deg, var(--p-surface), color-mix(in srgb, var(--p-red-soft) 55%, var(--p-surface))); }
.psi .psi-pront-quem { display: flex; gap: 14px; align-items: center; min-width: 0; }
.psi .psi-pront-nome { font-size: 1.28rem; font-weight: 800; color: var(--p-ink); letter-spacing: -.4px; line-height: 1.2; overflow-wrap: anywhere; }
.psi .psi-pront-linha { display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: 4px; font-size: .74rem; color: var(--p-muted); }
.psi .psi-pront-linha b { color: var(--p-text); font-weight: 700; }
.psi .psi-pront-chips { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; }
.psi .psi-pront-acoes { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; }

.psi-abas { display: flex; gap: 2px; flex-wrap: wrap; border-bottom: 1px solid var(--p-border); }
.psi-aba {
    display: inline-flex; align-items: center; gap: 6px; height: 40px; padding: 0 14px; border: none; background: none; cursor: pointer;
    font: inherit; font-size: .78rem; font-weight: 600; color: var(--p-muted); border-bottom: 2.5px solid transparent; margin-bottom: -1px;
}
.psi-aba:hover { color: var(--p-blue); }
.psi-aba.on { color: var(--p-blue); font-weight: 800; border-bottom-color: var(--p-blue-light); }
.psi-aba i { font-size: 16px; }
.psi-aba .mm-tab-badge { margin-left: 2px; }

/* ---------- linha do tempo clínica ---------- */
.psi .psi-tl-sig { color: var(--p-faint); font-style: italic; }
.psi .psi-tl-mais { display: flex; justify-content: center; padding: 12px 0 2px; }
.psi-evo { padding: 10px 12px; border-radius: 0 10px 10px 0; border-left: 3px solid var(--tom, var(--p-blue)); background: var(--p-soft); }
.psi-evo + .psi-evo { margin-top: 8px; }
.psi-evo-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; font-size: .68rem; color: var(--p-muted); }
.psi-evo-meta b { color: var(--p-ink); font-weight: 800; font-size: .76rem; }
.psi-evo-txt { margin-top: 5px; font-size: .78rem; color: var(--p-text); white-space: pre-wrap; line-height: 1.55; }

/* ---------- faixa de risco e avisos ---------- */
.psi .psi-aviso-risco {
    display: flex; align-items: center; gap: 10px; padding: 10px 14px; border-radius: 12px;
    background: var(--p-red-soft); border: 1px solid var(--p-red-line); color: var(--p-red); font-size: .78rem; font-weight: 700;
}
.psi .psi-aviso-risco i { font-size: 20px; }
.psi .psi-aviso-risco .mm-flex1 { color: var(--p-text); font-weight: 600; }
.psi .psi-aviso-risco b { color: var(--p-red); }

/* ---------- PTS ---------- */
.psi .psi-pts-meta { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; gap: 10px; align-items: start; padding: 10px 12px; border-radius: 12px; background: var(--p-soft); border: 1px solid var(--p-border-soft); }
.psi .psi-pts-meta + .psi-pts-meta { margin-top: 8px; }
.psi .psi-pts-num {
    width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: .74rem; font-weight: 800;
    background: var(--tom-soft, var(--p-blue-soft)); color: var(--tom, var(--p-blue)); border: 1px solid var(--tom-line, var(--p-blue-line-soft));
}
.psi .psi-pts-desc { font-size: .8rem; font-weight: 600; color: var(--p-ink); white-space: pre-wrap; }
.psi .psi-pts-sub { font-size: .68rem; color: var(--p-faint); margin-top: 2px; display: flex; flex-wrap: wrap; gap: 3px 10px; }
.psi .psi-pts-acao { display: flex; gap: 8px; align-items: baseline; padding: 6px 0; border-top: 1px dashed var(--p-border); font-size: .74rem; color: var(--p-text); }
.psi .psi-pts-acao:first-child { border-top: none; }
.psi .psi-pts-acao b { color: var(--p-ink); }
.psi .psi-prazo-grupo { display: flex; flex-direction: column; gap: 8px; }
.psi .psi-ed-meta { display: grid; grid-template-columns: 74px minmax(0, 1fr) 110px 40px; gap: 8px; align-items: start; padding: 10px; border-radius: 12px; background: var(--p-soft); border: 1px solid var(--p-border-soft); }
.psi .psi-ed-acao { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr) minmax(0, .9fr) 120px 40px; gap: 8px; align-items: start; padding: 10px; border-radius: 12px; background: var(--p-soft); border: 1px solid var(--p-border-soft); }
.psi .psi-ed-meta + .psi-ed-meta, .psi .psi-ed-acao + .psi-ed-acao { margin-top: 8px; }

/* ---------- escalas ---------- */
.psi-esc-resultado { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: 12px; background: var(--tom-soft); border: 1px solid var(--tom-line); }
.psi-esc-nota { font-size: 1.7rem; font-weight: 800; color: var(--tom); line-height: 1; font-variant-numeric: tabular-nums; }
.psi-esc-pergunta { padding: 10px 12px; border-radius: 12px; background: var(--p-soft); border: 1px solid var(--p-border-soft); }
.psi-esc-pergunta + .psi-esc-pergunta { margin-top: 8px; }
.psi-esc-pergunta.off { opacity: .45; }
.psi-esc-q { font-size: .78rem; font-weight: 600; color: var(--p-ink); margin-bottom: 6px; }
.psi-esc-dica { font-size: .68rem; color: var(--p-faint); margin-bottom: 6px; }
.psi-esc-ops { display: flex; flex-wrap: wrap; gap: 6px; }
.psi-esc-op {
    height: 32px; padding: 0 12px; border-radius: 9px; border: 1px solid var(--p-border); background: var(--p-surface); color: var(--p-text);
    font: inherit; font-size: .72rem; font-weight: 600; cursor: pointer; transition: all .14s;
}
.psi-esc-op:hover { border-color: var(--p-blue-line); background: var(--p-blue-soft); }
.psi-esc-op.on { border-color: var(--p-blue-light); background: var(--p-blue-soft); color: var(--p-blue); font-weight: 800; box-shadow: 0 0 0 2px var(--p-blue-line-soft); }
.psi-esc-hist { display: grid; grid-template-columns: 90px 1fr auto; gap: 10px; align-items: center; padding: 7px 0; border-top: 1px solid var(--p-border-soft); font-size: .74rem; }
.psi-esc-hist:first-child { border-top: none; }
/* grupos do usuário (resumo do prontuário) */
.psi-grp-user { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-top: 1px solid var(--p-border-soft); text-decoration: none; color: inherit; font-size: .78rem; }
.psi-grp-user:first-of-type { border-top: none; }
.psi-grp-user:hover b { color: var(--p-blue); }
.psi-grp-user b { display: block; font-weight: 700; color: var(--p-text); }
.psi-grp-user .psi-sub { display: block; }
.psi-grp-user.off { opacity: .6; }
.psi-spark { display: flex; align-items: flex-end; gap: 3px; height: 34px; }
.psi-spark > i { display: block; width: 8px; border-radius: 3px 3px 1px 1px; background: var(--tom, var(--p-blue-light)); min-height: 3px; }

/* ---------- escolha do tipo de atendimento ---------- */
.psi-tipos { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 8px; }
.psi-tipo {
    display: flex; align-items: center; gap: 9px; padding: 9px 10px; text-align: left; border-radius: 11px; cursor: pointer; font: inherit;
    border: 1px solid var(--p-border); background: var(--p-surface); color: var(--p-text); transition: all .14s;
}
.psi-tipo:hover { border-color: var(--tom-line, var(--p-blue-line)); background: var(--tom-soft, var(--p-blue-soft)); }
.psi-tipo.on { border-color: var(--tom, var(--p-blue-light)); background: var(--tom-soft, var(--p-blue-soft)); box-shadow: 0 0 0 2px var(--tom-line, var(--p-blue-line-soft)); }
.psi-tipo i { font-size: 18px; color: var(--tom, var(--p-blue)); flex: none; }
.psi-tipo span { font-size: .74rem; font-weight: 700; color: var(--p-ink); line-height: 1.25; }
.psi-tipo small { display: block; font-size: .62rem; font-weight: 600; color: var(--p-faint); }

/* ---------- conferência do modal (coluna da direita) ---------- */
.psi-conf { display: flex; flex-direction: column; gap: 6px; }
.psi-conf-it { display: flex; align-items: flex-start; gap: 8px; padding: 8px 10px; border-radius: 10px; font-size: .72rem; line-height: 1.4; color: var(--p-text); background: var(--p-soft); border: 1px solid var(--p-border-soft); }
.psi-conf-it > i { font-size: 16px; flex: none; margin-top: 1px; color: var(--p-faint); }
.psi-conf-it.ok > i { color: var(--p-green); }
.psi-conf-it.atencao { background: var(--p-yellow-soft); border-color: var(--p-yellow-line); }
.psi-conf-it.atencao > i { color: var(--p-yellow); }
.psi-conf-it.erro { background: var(--p-red-soft); border-color: var(--p-red-line); }
.psi-conf-it.erro > i { color: var(--p-red); }
.psi-conf-it b { color: var(--p-ink); font-weight: 800; }
.psi-quem { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 10px; background: var(--p-soft); border: 1px solid var(--p-border-soft); }
.psi-quem .mm-pessoa-sub { white-space: normal; }
.psi-grupo-opc { display: flex; flex-wrap: wrap; gap: 6px; }
.psi-sub-sec { margin-top: 14px; }

/* ---------- painel ---------- */
.psi .psi-painel { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 16px; align-items: start; }
.psi .psi-painel-col { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.psi .psi-agenda-it { display: grid; grid-template-columns: 52px minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 9px 14px; border-top: 1px solid var(--p-border-soft); cursor: pointer; }
.psi .psi-agenda-it:first-child { border-top: none; }
.psi .psi-agenda-it:hover { background: var(--p-soft); }
.psi .psi-agenda-hr { font-size: .8rem; font-weight: 800; color: var(--p-ink); font-variant-numeric: tabular-nums; }
.psi .psi-alerta-it { display: grid; grid-template-columns: 30px minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 9px 14px; border-top: 1px solid var(--p-border-soft); text-decoration: none; color: inherit; }
.psi .psi-alerta-it:first-child { border-top: none; }
.psi .psi-alerta-it:hover { background: var(--p-soft); }
.psi .psi-alerta-ico { width: 30px; height: 30px; border-radius: 9px; display: flex; align-items: center; justify-content: center; font-size: 16px; background: var(--tom-soft); color: var(--tom); }
.psi .psi-atalhos { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }
.psi .psi-atalho {
    display: flex; flex-direction: column; gap: 4px; padding: 12px 14px; border-radius: 14px; background: var(--p-surface); border: 1px solid var(--p-border);
    text-decoration: none; color: inherit; transition: all .15s; box-shadow: var(--p-shadow-sm);
}
.psi .psi-atalho:hover { border-color: var(--p-blue-line); box-shadow: var(--p-shadow); transform: translateY(-1px); }
.psi .psi-atalho i { font-size: 22px; color: var(--tom, var(--p-blue)); }
.psi .psi-atalho b { font-size: .8rem; color: var(--p-ink); font-weight: 800; }
.psi .psi-atalho span { font-size: .68rem; color: var(--p-faint); font-weight: 500; line-height: 1.35; }

/* ---------- campos ---------- */
.psi-fnota { font-size: .66rem; color: var(--p-faint); margin-top: 3px; }
.psi-cid-drop { position: absolute; left: 0; right: 0; top: 100%; z-index: 30; margin-top: 4px; max-height: 260px; overflow: auto; background: var(--p-surface); border: 1px solid var(--p-border); border-radius: 11px; box-shadow: var(--p-shadow-lg); }
.psi-cid-it { display: flex; gap: 8px; width: 100%; padding: 7px 11px; border: none; background: none; text-align: left; font: inherit; font-size: .74rem; color: var(--p-text); cursor: pointer; }
.psi-cid-it:hover, .psi-cid-it.kb { background: var(--p-blue-soft); }
.psi-cid-it b { color: var(--p-blue); font-weight: 800; min-width: 52px; }
.psi-rel { position: relative; }

/* ---------- semana (quadro de dias) ---------- */
.psi .psi-semana { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 10px; padding: 14px; }
.psi .psi-dia { display: flex; flex-direction: column; gap: 6px; min-width: 0; padding: 8px; border-radius: 12px; background: var(--p-soft2); border: 1px solid transparent; }
.psi .psi-dia.hoje { border-color: var(--p-blue-light); background: var(--p-blue-soft); }
.psi .psi-dia.fds { background: color-mix(in srgb, var(--p-soft2) 60%, var(--p-surface)); }
.psi .psi-dia-h { display: flex; align-items: center; gap: 6px; padding: 0 2px 4px; }
.psi .psi-dia-sem { font-size: .62rem; font-weight: 800; letter-spacing: .9px; text-transform: uppercase; color: var(--p-faint); }
.psi .psi-dia-h b { font-size: 1.05rem; font-weight: 800; color: var(--p-ink); }
.psi .psi-dia-vazio { text-align: center; font-size: .68rem; color: var(--p-faint); padding: 14px 0; }
.psi .psi-card-at {
    display: flex; flex-direction: column; gap: 1px; width: 100%; text-align: left; padding: 7px 9px; border-radius: 10px; cursor: pointer; font: inherit;
    background: var(--p-surface); border: 1px solid var(--p-border); border-left: 4px solid var(--tom, var(--p-blue)); transition: border-color .14s, box-shadow .14s;
}
.psi .psi-card-at:hover { border-color: var(--p-blue-line); box-shadow: var(--p-shadow); }
.psi .psi-card-at.pendente { background: var(--p-yellow-soft); }
.psi .psi-card-at.alerta { box-shadow: inset 0 0 0 1px var(--p-red-line); }
.psi .psi-card-hr { font-size: .7rem; font-weight: 800; color: var(--tom, var(--p-blue)); font-variant-numeric: tabular-nums; }
.psi .psi-card-nome { font-size: .76rem; font-weight: 700; color: var(--p-ink); line-height: 1.25; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.psi .psi-card-sub { font-size: .66rem; color: var(--p-faint); display: flex; align-items: center; gap: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.psi .psi-card-sub i { font-size: 12px; }

/* ---------- grupos e oficinas: chamada do encontro e participantes (dentro de modais: sem escopo .psi) ---------- */
.mm-layer .prmd-btn.psi-perigo { color: var(--p-red); border-color: var(--p-red-line); }
.mm-layer .prmd-btn.psi-perigo:hover:not(:disabled) { background: var(--p-red-soft); }
.psi-resumo-ch { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.psi-resumo-ch > div { display: flex; flex-direction: column; padding: 8px 10px; border-radius: 10px; background: var(--tom-soft); border: 1px solid var(--tom-line); }
.psi-resumo-ch b { font-size: 1.15rem; font-weight: 800; color: var(--tom); line-height: 1.1; font-variant-numeric: tabular-nums; }
.psi-resumo-ch span { font-size: .6rem; font-weight: 800; letter-spacing: .7px; text-transform: uppercase; color: var(--p-faint); }
.psi-chamada { display: flex; flex-direction: column; gap: 6px; }
.psi-ch-l {
    display: grid; grid-template-columns: 34px minmax(0, 1fr) auto auto; gap: 10px; align-items: center; padding: 8px 10px; border-radius: 12px;
    border: 1px solid var(--tom-line); border-left: 4px solid var(--tom); background: var(--tom-soft);
}
.psi-ch-l.vazia { background: var(--p-soft); border-color: var(--p-border-soft); border-left-color: var(--p-border); }
.psi-ch-quem { min-width: 0; }
.psi-ch-quem .mm-pessoa-sub { white-space: normal; }
.psi-ch-acoes { display: flex; gap: 4px; }
.psi-ch-acoes .prmd-iconbtn.tem { color: var(--p-blue); border-color: var(--p-blue-line); background: var(--p-blue-soft); }
.psi-ch-nota { grid-column: 2 / -1; }
.psi-ch-seg { background: var(--p-surface); }
.psi-ch-seg button { gap: 4px; }
.psi-ch-seg button.on.s-presente { background: var(--p-green); color: #fff; }
.psi-ch-seg button.on.s-ausente { background: var(--p-orange); color: #fff; }
.psi-ch-seg button.on.s-justificada { background: var(--p-blue); color: #fff; }
.psi-visita { display: flex; flex-direction: column; gap: 6px; padding: 8px; border-radius: 12px; background: var(--p-soft); border: 1px dashed var(--p-border); }
.psi-check {
    width: 20px; height: 20px; flex: none; border-radius: 6px; border: 1.5px solid var(--p-border); background: var(--p-surface);
    display: inline-flex; align-items: center; justify-content: center; color: transparent; font-size: 14px;
}
.psi-check.on { background: var(--p-blue); border-color: var(--p-blue); color: #fff; }

/* ---------- grupos e oficinas: lista, detalhe, quadro de frequência ---------- */
.psi .psi-g-srt       { --cols: minmax(260px, 1.7fr) minmax(190px, 1.3fr) 130px minmax(170px, 1fr) minmax(150px, 1fr) 120px 40px; }
.psi .psi-g-moradores { --cols: minmax(230px, 1.5fr) 110px minmax(160px, 1.1fr) minmax(150px, 1fr) minmax(150px, 1fr) minmax(150px, 1fr) 40px; }
.psi .psi-g-grupos    { --cols: minmax(250px, 1.8fr) minmax(170px, 1.1fr) minmax(130px, .9fr) 120px 130px 150px 40px; }
.psi .psi-g-encontros { --cols: 120px 110px minmax(180px, 1.5fr) minmax(150px, 1fr) 120px 120px 30px; }
.psi .psi-g-partic    { --cols: minmax(250px, 1.6fr) minmax(140px, .9fr) 120px minmax(190px, 1.3fr) 120px 50px; }
.psi .psi-esmaecida { opacity: .55; }
.psi .psi-link { color: inherit; text-decoration: none; }
.psi .psi-link:hover { color: var(--p-blue); text-decoration: underline; }
.psi-freq-wrap { overflow-x: auto; }
.psi .psi-freq { border-collapse: separate; border-spacing: 0; width: 100%; font-size: .74rem; }
.psi .psi-freq th, .psi .psi-freq td { padding: 6px 8px; text-align: center; border-bottom: 1px solid var(--p-border-soft); white-space: nowrap; }
.psi .psi-freq th { font-size: .62rem; font-weight: 800; letter-spacing: .6px; color: var(--p-faint); text-transform: uppercase; background: var(--p-soft); }
.psi .psi-freq .nome { text-align: left; position: sticky; left: 0; background: var(--p-surface); font-weight: 700; color: var(--p-ink); min-width: 230px; }
.psi .psi-freq thead .nome { background: var(--p-soft); }
.psi .psi-freq tfoot td { background: var(--p-soft); font-size: .68rem; color: var(--p-muted); }
.psi .psi-freq tfoot .nome { background: var(--p-soft); color: var(--p-faint); font-weight: 800; }
.psi .psi-freq .pct { min-width: 80px; }
.psi .psi-fq { width: 24px; height: 24px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 800; vertical-align: middle; }
.psi .psi-fq.p { background: var(--p-green-soft); color: var(--p-green); border: 1px solid var(--p-green-line); }
.psi .psi-fq.a { background: var(--p-orange-soft); color: var(--p-orange); border: 1px solid var(--p-orange-line); }
.psi .psi-fq.j { background: var(--p-blue-soft); color: var(--p-blue); border: 1px solid var(--p-blue-line); font-size: .66rem; }
.psi .psi-fq.n { background: var(--p-soft2); border: 1px dashed var(--p-border); width: 10px; height: 10px; }
.psi .psi-legenda { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 10px; font-size: .68rem; color: var(--p-muted); align-items: center; }
.psi .psi-legenda > span { display: inline-flex; align-items: center; gap: 6px; }

/* ---------- reuniões e matriciamento ---------- */
.psi .psi-g-reunioes  { --cols: 120px minmax(250px, 1.8fr) minmax(150px, 1fr) 100px 140px 130px 110px 40px; }
.psi .psi-g-encaminha { --cols: minmax(230px, 1.2fr) minmax(280px, 2fr) minmax(130px, .8fr) 120px minmax(170px, 1fr) 120px; }
.psi-caso { padding: 10px 12px; border-radius: 12px; background: var(--p-soft); border: 1px solid var(--p-border-soft); }
.psi-caso-cab { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }

/* ---------- produção e RAAS ---------- */
.psi .psi-g-producao { --cols: minmax(240px, 1.5fr) 110px minmax(170px, 1fr) minmax(200px, 1.4fr); }
.psi .psi-prod-it { display: flex; align-items: center; gap: 10px; padding: 9px 14px; border-top: 1px solid var(--p-border-soft); }
.psi .psi-prod-it:first-child { border-top: none; }
.psi .psi-prod-qtd { font-size: 1rem; font-weight: 800; color: var(--p-ink); font-variant-numeric: tabular-nums; min-width: 44px; text-align: right; }

/* ---------- residências terapêuticas ---------- */
.psi .psi-corta { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.psi .psi-tl-linha { display: flex; align-items: center; gap: 8px; }
.psi .psi-tl-acoes { margin-left: auto; display: inline-flex; gap: 2px; opacity: .5; transition: opacity .15s; }
.psi .mm-tl-item:hover .psi-tl-acoes, .psi .psi-tl-acoes:focus-within { opacity: 1; }

/* ---------- atenção ao TEA ---------- */
.psi .psi-g-tea { --cols: minmax(260px, 1.5fr) 150px 140px minmax(230px, 1.6fr) 150px 40px; }
.psi .psi-sticky { position: sticky; top: 8px; }
.psi .tea-sec { scroll-margin-top: 8px; }
.psi .tea-sns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 28px; }
.tea-sn { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 7px 0; border-bottom: 1px dashed var(--p-border-soft); }
.tea-sn-rot { font-size: .76rem; font-weight: 600; color: var(--p-text); line-height: 1.3; }
.tea-sn.vazio .tea-sn-rot { color: var(--p-faint); }
.tea-sn .mm-seg { flex: none; }
.psi .tea-nav { display: flex; flex-direction: column; gap: 2px; }
.psi .tea-nav a { display: flex; align-items: center; gap: 9px; padding: 6px 8px; border-radius: 8px; font-size: .74rem; font-weight: 600; color: var(--p-text); text-decoration: none; }
.psi .tea-nav a:hover { background: var(--p-soft); color: var(--p-blue); }
.psi .tea-nav a b { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border-radius: 50%; background: var(--p-blue-soft); color: var(--p-blue); font-size: .62rem; font-weight: 800; flex: none; }
.tea-mchat, .tea-cars { display: flex; flex-direction: column; gap: 6px; margin-bottom: 12px; }
.tea-mchat-it, .tea-cars-it { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 10px; background: var(--p-soft); border: 1px solid var(--p-border-soft); }
.tea-mchat-it.risco { background: var(--p-orange-soft); border-color: var(--p-orange-line); }
.tea-mchat-n { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 50%; background: var(--p-card); border: 1px solid var(--p-border); font-size: .66rem; font-weight: 800; color: var(--p-ink); flex: none; }
.tea-mchat-t { flex: 1; font-size: .74rem; line-height: 1.4; color: var(--p-text); }
.tea-mchat-it .mm-seg { flex: none; }
.tea-cars-notas { display: flex; gap: 3px; flex: none; }
.tea-cars-notas button { min-width: 36px; height: 28px; border-radius: 8px; border: 1px solid var(--p-border); background: var(--p-card); color: var(--p-text); font-size: .72rem; font-weight: 700; cursor: pointer; }
.tea-cars-notas button:hover { border-color: var(--p-blue-light); color: var(--p-blue); }
.tea-cars-notas button.on { background: var(--p-blue-soft); border-color: var(--p-blue-light); color: var(--p-blue); box-shadow: 0 0 0 2px var(--p-blue-line-soft); }
.tea-inst { display: flex; flex-direction: column; gap: 10px; }
.tea-inst-box { padding: 12px 14px; border-radius: 12px; border: 1px solid var(--p-border-soft); background: var(--p-soft); }
.tea-inst-box.on { background: var(--p-card); border-color: var(--p-blue-line); }
.tea-inst-cab { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.tea-inst-cab .mm-flex1 { min-width: 120px; }

/* ---------- indicadores (gráficos) ---------- */
/* cores das séries: azul e laranja validados (diferença de cor, daltonismo, contraste e faixa de luminosidade) para o fundo claro e o escuro */
.psi { --ind-s1: #2563eb; --ind-s2: #ea580c; }
[data-theme-mode="dark"] .psi { --ind-s1: #4a8fe7; --ind-s2: #d9742c; }
.ind-key { display: inline-block; width: 10px; height: 10px; border-radius: 3px; flex: none; }
.ind-key.s1, .ind-b.s1, .ind-bh-f.s1 { background: var(--ind-s1); }
.ind-key.s2, .ind-b.s2, .ind-bh-f.s2 { background: var(--ind-s2); }
.ind-leg { display: flex; flex-wrap: wrap; gap: 14px; margin-bottom: 10px; font-size: .72rem; font-weight: 600; color: var(--p-text); }
.ind-leg-i { display: inline-flex; align-items: center; gap: 6px; }
.ind-plot { position: relative; height: calc(var(--alt) + 26px); }
.ind-y { position: absolute; left: 0; top: 0; bottom: 26px; width: 36px; }
.ind-y span { position: absolute; right: 8px; transform: translateY(50%); font-size: .64rem; color: var(--p-faint); font-variant-numeric: tabular-nums; line-height: 1; }
.ind-area { position: absolute; left: 40px; right: 0; top: 0; bottom: 26px; display: grid; grid-template-columns: repeat(var(--n), minmax(0, 1fr)); }
.ind-grid { position: absolute; left: 0; right: 0; height: 0; border-top: 1px solid var(--p-border-soft); pointer-events: none; }
.ind-g { position: relative; outline: none; border-radius: 8px 8px 0 0; }
.ind-g:hover, .ind-g:focus-visible { background: var(--p-soft); }
.ind-barras { position: absolute; inset: 0 10% 0 10%; display: flex; align-items: flex-end; justify-content: center; gap: 2px; }
.ind-b { flex: 1 1 0; max-width: 24px; border-radius: 4px 4px 0 0; position: relative; transition: filter .12s; }
.ind-g:hover .ind-b, .ind-g:focus-visible .ind-b { filter: brightness(1.1); }
.ind-cap { position: absolute; bottom: 100%; left: 50%; transform: translateX(-50%); padding-bottom: 2px; font-size: .64rem; font-weight: 800; color: var(--p-ink); font-variant-numeric: tabular-nums; line-height: 1; }
.ind-x { position: absolute; left: 0; right: 0; top: 100%; margin-top: 7px; text-align: center; font-size: .64rem; color: var(--p-faint); white-space: nowrap; }
.ind-tip { display: none; position: absolute; z-index: 5; top: 6px; left: 50%; transform: translateX(-50%); min-width: 132px; padding: 8px 10px; border-radius: 10px; background: var(--p-surface); border: 1px solid var(--p-border); box-shadow: var(--p-shadow); font-size: .72rem; }
.ind-g:hover .ind-tip, .ind-g:focus-visible .ind-tip { display: block; }
.ind-g:first-child .ind-tip { left: 0; transform: none; }
.ind-g:last-child .ind-tip { left: auto; right: 0; transform: none; }
.ind-tip-t { font-weight: 800; color: var(--p-ink); margin-bottom: 4px; }
.ind-tip-l { display: flex; align-items: center; gap: 7px; color: var(--p-text); line-height: 1.5; }
.ind-tip-l b { color: var(--p-ink); font-size: .8rem; min-width: 22px; font-variant-numeric: tabular-nums; }
.ind-barras-h { display: flex; flex-direction: column; gap: 11px; }
.ind-bh { outline: none; border-radius: 8px; }
.ind-bh:hover .ind-bh-f, .ind-bh:focus-visible .ind-bh-f { filter: brightness(1.12); }
.ind-bh-l { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; font-size: .74rem; margin-bottom: 4px; }
.ind-bh-n { color: var(--p-text); font-weight: 600; min-width: 0; }
.ind-bh-v { color: var(--p-faint); white-space: nowrap; font-variant-numeric: tabular-nums; }
.ind-bh-v b { color: var(--p-ink); }
.ind-bh-t { border-left: 1px solid var(--p-border); }
.ind-bh-f { height: 10px; border-radius: 0 4px 4px 0; min-width: 2px; transition: filter .12s; }
.ind-tabela table { width: 100%; border-collapse: collapse; font-size: .74rem; }
.ind-tabela th, .ind-tabela td { padding: 6px 8px; border-bottom: 1px solid var(--p-border-soft); text-align: left; color: var(--p-text); }
.ind-tabela th { color: var(--p-faint); font-size: .64rem; text-transform: uppercase; letter-spacing: .4px; font-weight: 800; }
.ind-tabela .num { text-align: right; font-variant-numeric: tabular-nums; }
.ind-tabela tfoot td { font-weight: 800; color: var(--p-ink); border-bottom: none; }
.ind-vazio { padding: 22px 8px; text-align: center; color: var(--p-faint); font-size: .76rem; }
.ind-nota { margin-top: 10px; font-size: .68rem; color: var(--p-faint); line-height: 1.45; }

/* ---------- injetáveis de ação prolongada (agenda das aplicações) ---------- */
.psi .psi-g-lai { --cols: minmax(240px, 1.5fr) minmax(210px, 1.3fr) minmax(190px, 1.1fr) minmax(160px, 1fr) minmax(150px, 1fr) 150px 40px; }
.psi .lai-data { font-weight: 800; color: var(--p-ink); font-variant-numeric: tabular-nums; }
.psi .lai-prox { display: flex; flex-direction: column; gap: 3px; align-items: flex-start; }
.psi .lai-prox .psi-sub { white-space: normal; }
/* local da aplicação: quatro opções lado a lado, a sugerida pelo rodízio com selo */
.lai-locais { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.lai-locais .mm-opt { position: relative; }
.lai-locais .lai-sug { position: absolute; top: 6px; right: 6px; }
.lai-previa { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 12px; background: var(--p-blue-soft); border: 1px solid var(--p-blue-line); color: var(--p-ink); font-size: .78rem; }
.lai-previa i { font-size: 18px; color: var(--p-blue); flex: none; }
.lai-previa.aviso { background: var(--p-orange-soft); border-color: var(--p-orange-line); }
.lai-previa.aviso i { color: var(--p-orange); }
.lai-hist { display: flex; flex-direction: column; gap: 4px; }
.lai-hist-it { display: grid; grid-template-columns: 78px minmax(0, 1fr); gap: 10px; align-items: baseline; padding: 6px 10px; border-radius: 10px; background: var(--p-soft); border: 1px solid var(--p-border-soft); font-size: .72rem; color: var(--p-text); }
.lai-hist-it b { color: var(--p-ink); font-variant-numeric: tabular-nums; }
@media (max-width: 760px) { .lai-locais { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---------- acolhimento noturno: mapa dos leitos ---------- */
.psi .psi-g-leitos { --cols: minmax(240px, 1.5fr) 70px minmax(120px, .9fr) minmax(150px, 1fr) 120px minmax(170px, 1.2fr) minmax(190px, 1.3fr); }
.psi .lt-leitos { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; padding: 14px; }
.psi .lt-leito {
    display: flex; flex-direction: column; gap: 10px; padding: 14px; min-height: 196px; border-radius: 16px; position: relative;
    background: var(--p-surface); border: 1px solid var(--p-border); box-shadow: var(--p-shadow-sm);
}
.psi .lt-leito.ocupado { box-shadow: inset 3px 0 0 var(--tom, var(--p-blue)), var(--p-shadow-sm); }
.psi .lt-leito.livre { align-items: center; justify-content: center; text-align: center; gap: 8px; background: var(--p-soft); border-style: dashed; box-shadow: none; }
.psi .lt-leito.livre .lt-vazio-ico { width: 40px; height: 40px; border-radius: 12px; display: flex; align-items: center; justify-content: center; background: var(--p-surface); color: var(--p-faint); font-size: 22px; border: 1px solid var(--p-border-soft); }
.psi .lt-leito.livre b { font-size: .8rem; color: var(--p-text); }
.psi .lt-leito.livre span { font-size: .7rem; color: var(--p-faint); }
.psi .lt-cab { display: flex; align-items: center; gap: 8px; }
.psi .lt-num { display: inline-flex; align-items: center; gap: 6px; font-size: .68rem; font-weight: 800; letter-spacing: .6px; text-transform: uppercase; color: var(--p-faint); }
.psi .lt-num i { font-size: 16px; color: var(--tom, var(--p-blue)); }
.psi .lt-quem { display: flex; align-items: center; gap: 10px; min-width: 0; cursor: pointer; }
.psi .lt-quem .mm-pessoa-txt { min-width: 0; }
.psi .lt-selos { display: flex; flex-wrap: wrap; gap: 4px; }
.psi .lt-limite { display: flex; flex-direction: column; gap: 4px; }
.psi .lt-limite-txt { display: flex; justify-content: space-between; gap: 8px; font-size: .7rem; color: var(--p-muted); font-weight: 600; }
.psi .lt-limite-txt b { color: var(--p-ink); font-weight: 800; }
.psi .lt-termo { height: 6px; border-radius: 50px; background: var(--p-soft2); overflow: hidden; }
.psi .lt-termo > div { height: 100%; border-radius: 50px; background: var(--tom, var(--p-blue-light)); }
.psi .lt-meta { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 2px 10px; font-size: .7rem; color: var(--p-faint); }
.psi .lt-meta b { color: var(--p-text); font-weight: 700; }
.psi .lt-rodape { display: flex; align-items: center; gap: 6px; margin-top: auto; }
.psi .lt-noite-ok { display: inline-flex; align-items: center; gap: 5px; font-size: .72rem; font-weight: 700; color: var(--p-green); }
/* modal: noites do lote */
.lt-noites { display: flex; flex-direction: column; gap: 8px; }
.lt-noite-it { display: grid; grid-template-columns: 24px minmax(0, 1fr); gap: 4px 10px; padding: 10px 12px; border-radius: 12px; background: var(--p-soft); border: 1px solid var(--p-border-soft); }
.lt-noite-it.off { opacity: .65; }
.lt-noite-it.erro { border-color: var(--p-red-line); background: var(--p-red-soft); }
.lt-noite-it .lt-noite-corpo { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.lt-noite-it .lt-noite-topo { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.lt-noite-it .lt-noite-topo b { font-size: .8rem; color: var(--p-ink); }
.lt-leitos-esc { display: grid; grid-template-columns: repeat(auto-fill, minmax(86px, 1fr)); gap: 8px; }
.lt-leitos-esc button { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 8px 6px; border-radius: 12px; border: 1px solid var(--p-border); background: var(--p-surface); color: var(--p-text); font-size: .8rem; font-weight: 800; cursor: pointer; }
.lt-leitos-esc button small { font-size: .62rem; font-weight: 600; color: var(--p-faint); max-width: 74px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lt-leitos-esc button:hover:not(:disabled) { border-color: var(--p-blue-light); }
.lt-leitos-esc button.on { border-color: var(--p-blue-light); background: var(--p-blue-soft); color: var(--p-blue); box-shadow: 0 0 0 3px var(--p-blue-line-soft); }
.lt-leitos-esc button:disabled { opacity: .55; cursor: not-allowed; background: var(--p-soft); }
