/* Integra_Tokens.html — camada 0 do ecossistema Integra Farmácia HRN. Entra ANTES de qualquer estilo da ferramenta.
     Origem: tokens do PGA HRN (PLANO_VISUAL v5, aprovado em 02/10/2026), os mesmos do portal Integra e do MEMORANDO.
     Não editar dentro de cada ferramenta: atualizar na skill integra-ecossistema e copiar de novo.

     O que é igual em TODAS as ferramentas (nomes e valores): cores, fonte, raios, sombras, movimento.
     O que NÃO se sobrescreve: --fs-* e --esp-* de cada ferramenta (PGA e portal usam escalas diferentes
     com o mesmo nome). Os componentes do kit usam a escala própria --eco-fs-* / --eco-esp-*.

     Identidade da ferramenta: <body data-frente="CAF|SUP|FC|GES|SIS">. A frente só pinta a marca do topo,
     o selo da ferramenta e a aba ativa. Botão principal, foco e links continuam no teal HRN (--primaria):
     é ele que faz todas as ferramentas parecerem do mesmo sistema. */
  :root {
    color-scheme: light;
    /* superfícies e texto */
    --fundo: #f3f5f7; --superficie: #ffffff; --superficie-2: #f7f8fa; --raia: #e9edf1; --linha: #edf0f3;
    --texto: #111827; --suave: #4b5563; --borda: #e1e5ea; --borda-campo: #848f9c; --borda-hover: #c4ccd5;
    --hover: #f1f4f7; --campo-fundo: #ffffff;
    /* marca HRN (igual em todas as ferramentas) */
    --primaria: #0f766e; --primaria-hover: #0b5e58; --primaria-texto: #ffffff; --primaria-f: #dcf3ef; --foco: #0f766e;
    /* sinais: cada cor tem um significado só, sempre com ícone + texto */
    --vermelho: #b42318; --vermelho-f: #fef1ef; --vermelho-borda: #f3b4ab; --vermelho-hover: #8f1e18; --vermelho-texto: #ffffff; /* risco / erro */
    --ambar: #8a4b00; --ambar-f: #fff6e3; --ambar-borda: #efcb84;                                      /* falta algo / atrasado */
    --azul: #1d4ed8; --azul-f: #edf3ff; --azul-borda: #b8cdfa;                                         /* informação / novo */
    --verde: #166534; --verde-f: #eaf7ee; --verde-borda: #a9dcb8;                                      /* concluído / funcionando */
    --estrela: #b7791f;
    /* frentes (identidade de cada ferramenta; contraste >= 4.5:1 sobre o fundo -f e sobre branco) */
    --frente-CAF: #15803d; --frente-CAF-f: #ecf8ef;
    --frente-SUP: #4338ca; --frente-SUP-f: #eceefd;
    --frente-FC:  #0369a1; --frente-FC-f:  #e3f1fa;
    --frente-GES: #6d28d9; --frente-GES-f: #f0eafd;
    --frente-SIS: #0f766e; --frente-SIS-f: #dcf3ef;
    /* geometria, elevação, movimento */
    --r-cartao: 14px; --r-bloco: 10px; --r-pilula: 999px;
    --sombra: 0 1px 2px rgba(16,24,40,.04), 0 3px 10px rgba(16,24,40,.035);
    --sombra-hover: 0 2px 4px rgba(16,24,40,.05), 0 8px 22px rgba(16,24,40,.07);
    --sombra-modal: 0 20px 25px -5px rgba(15,23,42,.15), 0 10px 10px -5px rgba(15,23,42,.04);
    --curva: cubic-bezier(.32,.72,0,1); --mov: 180ms var(--curva);
    --fonte: "Figtree", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
    /* escala própria do kit (não colide com a da ferramenta) */
    --eco-fs-xs: 12.5px; --eco-fs-sm: 13.5px; --eco-fs-md: 15px; --eco-fs-lg: 17px; --eco-fs-xl: 20px;
    --eco-esp-1: 4px; --eco-esp-2: 8px; --eco-esp-3: 12px; --eco-esp-4: 16px; --eco-esp-5: 20px; --eco-esp-6: 24px; --eco-esp-7: 32px;
    --eco-alvo: 44px; /* altura mínima de tudo que se clica */
    /* frente ativa (o body troca com data-frente) */
    --frente: var(--frente-SIS); --frente-f: var(--frente-SIS-f);
  }
  @media (prefers-color-scheme: dark) {
    :root {
      color-scheme: dark;
      --fundo: #0d1117; --superficie: #1a2029; --superficie-2: #1f2630; --raia: #131920; --linha: #222a35;
      --texto: #e9eef4; --suave: #b0bac6; --borda: #2a333f; --borda-campo: #718096; --borda-hover: #3e4a59;
      --hover: #222a35; --campo-fundo: #151b23;
      --primaria: #2dd4bf; --primaria-hover: #5eead4; --primaria-texto: #04201e; --primaria-f: #10302c; --foco: #5eead4;
      --vermelho: #ff8f84; --vermelho-f: #351614; --vermelho-borda: #7d2c25; --vermelho-hover: #ffb3ab; --vermelho-texto: #2a0b08;
      --ambar: #f7c26b; --ambar-f: #30230b; --ambar-borda: #6e5114;
      --azul: #93b4ff; --azul-f: #142039; --azul-borda: #2c4479;
      --verde: #7fd69b; --verde-f: #12281a; --verde-borda: #285c39;
      --estrela: #f0b429;
      --frente-CAF: #86efac; --frente-CAF-f: #10291a;
      --frente-SUP: #a5b4fc; --frente-SUP-f: #1e2142;
      --frente-FC:  #7dd3fc; --frente-FC-f:  #0f2533;
      --frente-GES: #c4b5fd; --frente-GES-f: #251a3f;
      --frente-SIS: #2dd4bf; --frente-SIS-f: #10302c;
      --sombra: none; --sombra-hover: 0 0 0 1px var(--borda-hover); --sombra-modal: 0 8px 24px rgba(0,0,0,.6);
    }
  }
  body[data-frente="CAF"] { --frente: var(--frente-CAF); --frente-f: var(--frente-CAF-f); }
  body[data-frente="SUP"] { --frente: var(--frente-SUP); --frente-f: var(--frente-SUP-f); }
  body[data-frente="FC"]  { --frente: var(--frente-FC);  --frente-f: var(--frente-FC-f); }
  body[data-frente="GES"] { --frente: var(--frente-GES); --frente-f: var(--frente-GES-f); }
  body[data-frente="SIS"] { --frente: var(--frente-SIS); --frente-f: var(--frente-SIS-f); }

/* Integra_Base.html — camada 1 do ecossistema: a "casca" comum e os componentes que se repetem em todas as ferramentas.
     Entra logo depois de Integra_Tokens.html e ANTES dos estilos próprios da ferramenta.
     Tudo com prefixo eco- para não colidir com as classes que a ferramenta já tem.
     Não editar dentro de cada ferramenta: atualizar na skill integra-ecossistema e copiar de novo. */

  /* ---------- base ---------- */
  *, *::before, *::after { box-sizing: border-box; }
  [hidden] { display: none !important; }
  html, body { margin: 0; background: var(--fundo); color: var(--texto); font-family: var(--fonte); line-height: 1.5; }
  button, input, select, textarea { font: inherit; color: inherit; }
  :focus-visible { outline: 3px solid var(--foco); outline-offset: 2px; }
  ::selection { background: var(--primaria-f); color: var(--texto); }
  input, select, textarea { caret-color: var(--primaria); }
  * { scrollbar-color: var(--borda-campo) transparent; scrollbar-width: thin; }
  a { color: var(--primaria); text-underline-offset: 3px; }
  .ic { width: 1.1em; height: 1.1em; vertical-align: -.18em; flex: none; }
  .so-leitor { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden;
    clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
  @media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition: none !important; animation: none !important; } }

  /* ---------- casca: topo ---------- */
  .eco-topo { position: sticky; top: 0; z-index: 20; background: var(--superficie); border-bottom: 1px solid var(--borda);
    box-shadow: var(--sombra); }
  .eco-topo-dentro { display: flex; flex-wrap: wrap; align-items: center; gap: var(--eco-esp-3) var(--eco-esp-4);
    padding: var(--eco-esp-3) var(--eco-esp-5); max-width: var(--eco-largura, none); margin: 0 auto; }
  .eco-marca { display: flex; align-items: center; gap: var(--eco-esp-3); margin-right: auto; min-width: 0; }
  .eco-marca-ic { display: grid; place-items: center; width: 40px; height: 40px; flex: none; border-radius: var(--r-bloco);
    background: var(--frente-f); color: var(--frente); }
  .eco-marca-ic .ic { width: 22px; height: 22px; }
  .eco-marca-nome { margin: 0; font-size: var(--eco-fs-xl); font-weight: 700; letter-spacing: -.01em; line-height: 1.2; }
  .eco-marca-sub { display: block; color: var(--suave); font-size: var(--eco-fs-xs); font-weight: 500; }
  .eco-marca-sub b { color: var(--primaria); font-weight: 700; }
  .eco-simbolo { width: 14px; height: 14px; vertical-align: -2px; margin-right: 4px; }
  .eco-topo-acoes { display: flex; flex-wrap: wrap; align-items: center; gap: var(--eco-esp-2); }
  .eco-portal { display: inline-flex; align-items: center; gap: 6px; min-height: var(--eco-alvo); padding: 0 var(--eco-esp-4);
    border: 1px solid var(--borda); border-radius: var(--r-pilula); background: var(--superficie); color: var(--texto);
    font-size: var(--eco-fs-sm); font-weight: 600; text-decoration: none; transition: background var(--mov), border-color var(--mov); }
  .eco-portal:hover { background: var(--hover); border-color: var(--borda-hover); }
  .eco-portal .ic { color: var(--primaria); }
  .eco-usuario { color: var(--suave); font-size: var(--eco-fs-sm); }
  .eco-usuario strong { color: var(--texto); font-weight: 600; }

  /* ---------- casca: abas ---------- */
  /* a faixa ocupa a tela toda, mas as abas ficam na mesma coluna do topo e da página (--eco-largura):
     o texto da 1ª aba alinha com a marca (desconta o recuo da própria aba) */
  .eco-abas { display: flex; gap: var(--eco-esp-1); overflow-x: auto; border-top: 1px solid var(--borda);
    padding: 0 max(var(--eco-esp-1), calc((100% - var(--eco-largura, 100%)) / 2 + var(--eco-esp-5) - var(--eco-esp-4)));
    background: var(--superficie); }
  .eco-aba { display: inline-flex; align-items: center; gap: var(--eco-esp-2); min-height: 48px; padding: 0 var(--eco-esp-4);
    background: none; border: 0; border-bottom: 3px solid transparent; color: var(--suave); font-weight: 600;
    font-size: var(--eco-fs-md); white-space: nowrap; cursor: pointer; text-decoration: none;
    transition: color var(--mov), border-color var(--mov), background var(--mov); }
  .eco-aba:hover { color: var(--texto); background: var(--hover); }
  .eco-aba[aria-selected="true"], .eco-aba.ativa { color: var(--frente); border-bottom-color: var(--frente); font-weight: 700; }

  /* ---------- casca: página e rodapé ---------- */
  .eco-pagina { max-width: var(--eco-largura, 1180px); margin: 0 auto; padding: var(--eco-esp-5) var(--eco-esp-5) var(--eco-esp-7); }
  .eco-titulo { margin: 0 0 4px; font-size: var(--eco-fs-xl); font-weight: 700; }
  .eco-dica { margin: 0 0 var(--eco-esp-4); color: var(--suave); font-size: var(--eco-fs-sm); }
  .eco-rodape { display: flex; flex-wrap: wrap; gap: 4px var(--eco-esp-3); justify-content: center; align-items: center;
    padding: var(--eco-esp-4) var(--eco-esp-5) var(--eco-esp-6); color: var(--suave); font-size: var(--eco-fs-xs);
    border-top: 1px solid var(--borda); }
  .eco-rodape b { color: var(--texto); font-weight: 600; }
  /* "Sobre": discreto, no rodapé de toda ferramenta; abre a janela .eco-sobre com o nome da autora */
  .eco-sobre-btn { display: inline-flex; align-items: center; min-height: var(--eco-alvo); padding: 0 var(--eco-esp-2); border: 0;
    background: none; color: var(--suave); font-size: var(--eco-fs-xs); text-decoration: underline; text-decoration-color: var(--borda);
    text-underline-offset: 3px; cursor: pointer; transition: color var(--mov), text-decoration-color var(--mov); }
  .eco-sobre-btn:hover { color: var(--primaria); text-decoration-color: currentColor; }
  .eco-janela.eco-sobre { width: min(400px, calc(100% - 32px)); }
  .eco-sobre .eco-janela-corpo { justify-items: center; text-align: center; gap: var(--eco-esp-2); padding-block: var(--eco-esp-6) var(--eco-esp-5); }
  .eco-sobre .eco-marca-ic { width: 48px; height: 48px; margin-bottom: var(--eco-esp-2); }
  .eco-sobre h2 { margin: 0; font-size: var(--eco-fs-lg); }
  .eco-sobre p { margin: 0; color: var(--suave); font-size: var(--eco-fs-sm); }
  .eco-sobre-autora { margin-top: var(--eco-esp-4) !important; padding-top: var(--eco-esp-4); border-top: 1px solid var(--borda); width: 100%; }
  .eco-sobre-autora b { display: block; color: var(--texto); font-size: var(--eco-fs-md); font-weight: 700; }
  .eco-sobre .eco-janela-pe { justify-content: center; border-top: 0; padding-top: 0; }

  /* ---------- botões (tudo em pílula, altura mínima 44px) ---------- */
  .eco-btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--eco-esp-2);
    min-height: var(--eco-alvo); padding: 0 var(--eco-esp-5); border: 1px solid var(--borda); border-radius: var(--r-pilula);
    background: var(--superficie); color: var(--texto); font-size: var(--eco-fs-sm); font-weight: 600; text-decoration: none;
    cursor: pointer; white-space: nowrap; transition: background var(--mov), border-color var(--mov), box-shadow var(--mov); }
  .eco-btn:hover { background: var(--hover); border-color: var(--borda-hover); }
  .eco-btn.primario { background: var(--primaria); border-color: var(--primaria); color: var(--primaria-texto); font-weight: 700; }
  .eco-btn.primario:hover { background: var(--primaria-hover); border-color: var(--primaria-hover); }
  .eco-btn.perigo { background: var(--vermelho); border-color: var(--vermelho); color: var(--vermelho-texto); }
  .eco-btn.perigo:hover { background: var(--vermelho-hover); border-color: var(--vermelho-hover); }
  .eco-btn.discreto { border-color: transparent; background: none; color: var(--primaria); }
  .eco-btn.discreto:hover { background: var(--hover); }
  .eco-btn.icone { width: var(--eco-alvo); padding: 0; }
  .eco-btn .ic { width: 18px; height: 18px; }
  .eco-btn:disabled, .eco-btn[aria-busy="true"] { opacity: .6; cursor: wait; }

  /* ---------- filtros (pílula discreta; fundo colorido só quando ligado) ---------- */
  .eco-filtros { display: flex; flex-wrap: wrap; gap: var(--eco-esp-2); }
  .eco-filtro { display: inline-flex; align-items: center; gap: 6px; min-height: 40px; padding: 0 var(--eco-esp-4);
    border: 1px solid var(--borda); border-radius: var(--r-pilula); background: var(--superficie); color: var(--suave);
    font-size: var(--eco-fs-sm); font-weight: 600; cursor: pointer; transition: all var(--mov); }
  .eco-filtro:hover { border-color: var(--borda-hover); color: var(--texto); }
  .eco-filtro[aria-pressed="true"] { background: var(--primaria-f); border-color: var(--primaria); color: var(--primaria); }
  .eco-filtro .n { font-weight: 700; color: var(--texto); }

  /* ---------- campos ---------- */
  .eco-campo { display: grid; gap: var(--eco-esp-1); min-width: 0; font-size: var(--eco-fs-sm); font-weight: 600; }
  /* largura 100% e min-width 0: um setor de nome longo numa lista não alarga a coluna nem estoura a janela */
  .eco-campo input, .eco-campo select, .eco-campo textarea, .eco-input {
    width: 100%; min-width: 0; min-height: var(--eco-alvo); padding: var(--eco-esp-2) var(--eco-esp-3); font-size: 16px; font-weight: 400; /* 16px: o iPhone não dá zoom */
    background: var(--campo-fundo); border: 1px solid var(--borda-campo); border-radius: var(--r-bloco);
    transition: border-color var(--mov), box-shadow var(--mov); }
  .eco-campo input:focus, .eco-campo select:focus, .eco-campo textarea:focus, .eco-input:focus {
    outline: none; border-color: var(--primaria); box-shadow: 0 0 0 3px var(--primaria-f); }
  .eco-campo input[type=checkbox], .eco-campo input[type=radio] { width: auto; min-height: 0; padding: 0; } /* não esticam */
  .eco-campo .ajuda { font-weight: 400; color: var(--suave); font-size: var(--eco-fs-xs); }
  /* campo que não se altera: fundo da raia, sem parecer quebrado */
  .eco-campo input:disabled, .eco-campo select:disabled, .eco-campo textarea:disabled,
  .eco-campo input[readonly], .eco-campo textarea[readonly] {
    background: var(--superficie-2); border-color: var(--borda); color: var(--texto); cursor: not-allowed; opacity: 1; }
  .eco-busca { position: relative; display: flex; align-items: center; flex: 1 1 260px; max-width: 420px; }
  .eco-busca > .ic { position: absolute; left: 14px; color: var(--suave); pointer-events: none; }
  .eco-busca input { width: 100%; min-height: var(--eco-alvo); padding: 0 44px 0 40px; font-size: 16px; border-radius: var(--r-pilula);
    border: 1px solid var(--borda-campo); background: var(--campo-fundo); }
  .eco-busca input:focus { outline: none; border-color: var(--primaria); box-shadow: 0 0 0 3px var(--primaria-f); }
  .eco-busca kbd { position: absolute; right: 12px; min-width: 22px; padding: 1px 6px; border: 1px solid var(--borda);
    border-radius: 6px; color: var(--suave); font: 600 var(--eco-fs-xs)/1.4 var(--fonte); text-align: center; pointer-events: none; }

  /* ---------- cartões (o único elemento com contorno) ---------- */
  .eco-cartao { background: var(--superficie); border: 1px solid var(--borda); border-radius: var(--r-cartao);
    box-shadow: var(--sombra); padding: var(--eco-esp-4); }
  a.eco-cartao, button.eco-cartao { display: block; width: 100%; text-align: left; color: inherit; text-decoration: none; cursor: pointer;
    transition: border-color var(--mov), box-shadow var(--mov); }
  a.eco-cartao:hover, button.eco-cartao:hover { border-color: var(--borda-hover); box-shadow: var(--sombra-hover); }
  .eco-cartao.VERMELHO { border-color: var(--vermelho-borda); background: linear-gradient(var(--vermelho-f), var(--superficie) 70%); }
  .eco-cartao.AMARELO { border-color: var(--ambar-borda); }
  .eco-cartao h3 { margin: 0 0 var(--eco-esp-2); font-size: var(--eco-fs-md); font-weight: 700; display: flex; align-items: center; gap: var(--eco-esp-2); }
  .eco-grade { display: grid; gap: var(--eco-esp-3); grid-template-columns: repeat(auto-fill, minmax(min(280px, 100%), 1fr)); }
  .eco-raia { background: var(--raia); border-radius: var(--r-cartao); padding: var(--eco-esp-3); }

  /* ---------- cartão de ferramenta (portal e menus): ladrilho com o ícone da ferramenta na cor da frente ---------- */
  .eco-app { position: relative; display: grid; grid-template-columns: auto 1fr; gap: 4px var(--eco-esp-3); align-content: start;
    padding: var(--eco-esp-4); min-height: 112px; color: inherit; text-decoration: none; background: var(--superficie);
    border: 1px solid var(--borda); border-radius: var(--r-cartao); box-shadow: var(--sombra);
    transition: border-color var(--mov), box-shadow var(--mov); }
  .eco-app:hover { border-color: var(--borda-hover); box-shadow: var(--sombra-hover); }
  .eco-ladrilho { grid-row: span 3; display: grid; place-items: center; width: 44px; height: 44px; border-radius: var(--r-bloco);
    background: var(--frente-f); color: var(--frente); }
  .eco-ladrilho .ic { width: 24px; height: 24px; }
  [data-frente="CAF"] { --frente: var(--frente-CAF); --frente-f: var(--frente-CAF-f); }
  [data-frente="SUP"] { --frente: var(--frente-SUP); --frente-f: var(--frente-SUP-f); }
  [data-frente="FC"]  { --frente: var(--frente-FC);  --frente-f: var(--frente-FC-f); }
  [data-frente="GES"] { --frente: var(--frente-GES); --frente-f: var(--frente-GES-f); }
  [data-frente="SIS"] { --frente: var(--frente-SIS); --frente-f: var(--frente-SIS-f); }
  .eco-app-nome { font-weight: 700; font-size: var(--eco-fs-md); line-height: 1.3; }
  .eco-app-desc { color: var(--suave); font-size: var(--eco-fs-sm); line-height: 1.4; }
  .eco-app-pe { display: flex; flex-wrap: wrap; gap: var(--eco-esp-2); align-items: center; margin-top: var(--eco-esp-2); }

  /* ---------- cartão de paciente (quadro / kanban) ---------- */
  .eco-paciente { display: grid; gap: 6px; padding: var(--eco-esp-3); background: var(--superficie); border: 1px solid var(--borda);
    border-radius: var(--r-cartao); box-shadow: var(--sombra); }
  .eco-paciente.urgente { border-color: var(--vermelho-borda); background: linear-gradient(var(--vermelho-f), var(--superficie) 60%); }
  .eco-paciente-topo { display: flex; align-items: flex-start; gap: var(--eco-esp-2); }
  .eco-leito { display: inline-flex; align-items: center; gap: 5px; margin-right: auto; color: var(--suave); font-size: var(--eco-fs-xs); font-weight: 600; }
  .eco-alertas { display: flex; gap: 4px; }
  .eco-alertas .ic { width: 18px; height: 18px; }
  .eco-alertas .VERMELHO { color: var(--vermelho); }
  .eco-alertas .AMARELO { color: var(--ambar); }
  .eco-alertas .AZUL { color: var(--azul); }
  .eco-paciente-nome { font-weight: 700; font-size: var(--eco-fs-md); line-height: 1.3; overflow-wrap: anywhere; }

  /* ---------- chip de medicação (nome inteiro, quebra linha; nunca reticências) ---------- */
  .eco-med { display: flex; align-items: flex-start; gap: var(--eco-esp-2); padding: 6px 10px; border-radius: var(--r-bloco);
    background: var(--superficie-2); border: 1px solid var(--linha); font-size: var(--eco-fs-sm); }
  .eco-med-nome { flex: 1; min-width: 0; overflow-wrap: anywhere; }
  .eco-med-tipo { flex: none; display: grid; place-items: center; width: 20px; height: 20px; border-radius: 6px; font-size: 11px; font-weight: 800;
    color: var(--primaria); background: var(--primaria-f); }
  .eco-med-dia { flex: none; padding: 1px 8px; border-radius: var(--r-pilula); font-size: var(--eco-fs-xs); font-weight: 700;
    color: var(--azul); background: var(--azul-f); font-variant-numeric: tabular-nums; }

  /* ---------- números (KPI) ---------- */
  .eco-kpi { display: flex; flex-direction: column; gap: 4px; }
  .eco-kpi-num { font-size: 28px; font-weight: 800; line-height: 1; font-variant-numeric: tabular-nums; }
  .eco-kpi-rotulo { color: var(--suave); font-size: var(--eco-fs-sm); font-weight: 600; }

  /* ---------- sinais: cor + ícone + texto, sempre os três ---------- */
  .eco-sinal { display: inline-flex; align-items: center; gap: 5px; padding: 3px 10px; border-radius: var(--r-pilula);
    font-size: var(--eco-fs-xs); font-weight: 600; line-height: 1.4; }
  .eco-sinal.VERMELHO { color: var(--vermelho); background: var(--vermelho-f); }
  .eco-sinal.AMARELO  { color: var(--ambar); background: var(--ambar-f); }
  .eco-sinal.AZUL     { color: var(--azul); background: var(--azul-f); }
  .eco-sinal.VERDE    { color: var(--verde); background: var(--verde-f); }
  .eco-sinal.NEUTRO   { color: var(--suave); background: var(--hover); }
  .eco-selo { display: inline-flex; align-items: center; gap: 4px; padding: 2px 9px; border-radius: var(--r-pilula);
    font-size: var(--eco-fs-xs); font-weight: 700; color: var(--frente); background: var(--frente-f); }

  /* ---------- avisos ---------- */
  .eco-aviso { display: flex; gap: var(--eco-esp-3); align-items: flex-start; padding: var(--eco-esp-3) var(--eco-esp-4);
    border: 1px solid var(--borda); border-radius: var(--r-bloco); background: var(--superficie-2); font-size: var(--eco-fs-sm); }
  .eco-aviso > .ic { width: 20px; height: 20px; margin-top: 1px; }
  .eco-aviso.VERMELHO { color: var(--vermelho); background: var(--vermelho-f); border-color: var(--vermelho-borda); }
  .eco-aviso.AMARELO  { color: var(--ambar); background: var(--ambar-f); border-color: var(--ambar-borda); }
  .eco-aviso.AZUL     { color: var(--azul); background: var(--azul-f); border-color: var(--azul-borda); }
  .eco-aviso.VERDE    { color: var(--verde); background: var(--verde-f); border-color: var(--verde-borda); }
  .eco-aviso p { margin: 0; color: var(--texto); }
  .eco-toast { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); z-index: 50; max-width: min(520px, calc(100% - 32px));
    display: flex; gap: var(--eco-esp-2); align-items: center; padding: var(--eco-esp-3) var(--eco-esp-4);
    background: var(--aviso-fundo, #1d2733); color: #fff; border-radius: var(--r-bloco); box-shadow: var(--sombra-modal); font-size: var(--eco-fs-sm); }

  /* ---------- estados: vazio, erro, carregando ---------- */
  .eco-vazio { display: grid; justify-items: center; gap: var(--eco-esp-2); padding: 48px var(--eco-esp-4); text-align: center; color: var(--suave); }
  .eco-vazio > .ic { width: 32px; height: 32px; color: var(--borda-campo); }
  .eco-vazio strong { color: var(--texto); font-size: var(--eco-fs-md); }
  .eco-esq { border-radius: var(--r-bloco); background: var(--raia);
    background-image: linear-gradient(90deg, transparent, var(--superficie-2), transparent); background-size: 200% 100%;
    animation: eco-brilho 1.4s linear infinite; min-height: 18px; }
  .eco-esq.cartao { min-height: 112px; border-radius: var(--r-cartao); }
  @keyframes eco-brilho { from { background-position: 100% 0; } to { background-position: -100% 0; } }

  /* ---------- seções recolhíveis (seta em CSS, sem caractere ▾) ---------- */
  details.eco-recolhe > summary { display: flex; align-items: center; gap: var(--eco-esp-2); min-height: var(--eco-alvo);
    cursor: pointer; list-style: none; font-weight: 700; }
  details.eco-recolhe > summary::-webkit-details-marker { display: none; }
  details.eco-recolhe > summary::after { content: ""; width: 8px; height: 8px; margin-left: auto; border: solid var(--suave);
    border-width: 0 2px 2px 0; transform: rotate(45deg); transition: transform var(--mov); }
  details.eco-recolhe[open] > summary::after { transform: rotate(-135deg); }

  /* ---------- tabelas ---------- */
  .eco-tabela-caixa { overflow-x: auto; border: 1px solid var(--borda); border-radius: var(--r-cartao); background: var(--superficie); }
  .eco-tabela { width: 100%; border-collapse: collapse; font-size: var(--eco-fs-sm); }
  .eco-tabela th { position: sticky; top: 0; background: var(--superficie-2); color: var(--suave); text-align: left;
    font-size: var(--eco-fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: .04em; padding: 10px 12px;
    border-bottom: 1px solid var(--borda); }
  .eco-tabela td { padding: 10px 12px; border-bottom: 1px solid var(--linha); vertical-align: top; overflow-wrap: anywhere; }
  .eco-tabela tr:last-child td { border-bottom: 0; }
  .eco-tabela td.num, .eco-tabela th.num { text-align: right; font-variant-numeric: tabular-nums; }

  /* ---------- janela (modal) ---------- */
  .eco-janela { border: 0; padding: 0; border-radius: var(--r-cartao); box-shadow: var(--sombra-modal); background: var(--superficie);
    color: var(--texto); width: min(560px, calc(100% - 32px)); max-height: calc(100dvh - 32px); overflow: hidden; }
  /* topo e pé ficam sempre à vista; só o corpo rola (também quando um <form> envolve os três) */
  .eco-janela[open], .eco-janela > form { display: flex; flex-direction: column; min-height: 0; }
  .eco-janela > form { flex: 1 1 auto; }
  .eco-janela-topo, .eco-janela-pe { flex: none; }
  .eco-janela::backdrop { background: rgba(15,23,42,.45); }
  .eco-janela-topo { display: flex; align-items: center; gap: var(--eco-esp-3); padding: var(--eco-esp-4) var(--eco-esp-5); border-bottom: 1px solid var(--borda); }
  .eco-janela-topo h2 { margin: 0 auto 0 0; font-size: var(--eco-fs-lg); }
  .eco-janela-corpo { padding: var(--eco-esp-5); display: grid; gap: var(--eco-esp-4); align-content: start; min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
  .eco-janela-pe { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: var(--eco-esp-2); padding: var(--eco-esp-4) var(--eco-esp-5);
    border-top: 1px solid var(--borda); }

  /* ---------- celular ---------- */
  @media (max-width: 760px) { .eco-topo { position: static; } } /* no celular o topo tem 2–3 linhas: fixo, tomaria meia tela */
  @media (max-width: 560px) {
    .eco-topo-dentro { padding: var(--eco-esp-2) var(--eco-esp-4); }
    .eco-marca-nome { font-size: var(--eco-fs-lg); }
    .eco-portal span { display: none; } /* fica só o ícone, com aria-label no link */
    .eco-portal { width: var(--eco-alvo); padding: 0; justify-content: center; }
    .eco-busca { max-width: none; flex-basis: 100%; order: 3; }
    .eco-pagina { padding: var(--eco-esp-4); }
    .eco-abas { padding: 0; } /* o recuo da própria aba (16px) alinha o texto com a marca */
  }

/* Integra Farmácia HRN — estilos próprios do portal. Cores, fonte, raios, casca (eco-topo, eco-abas, eco-rodape) e
     componentes comuns vêm do kit do ecossistema (Integra_Tokens + Integra_Base, skill integra-ecossistema), que entra antes.
     Aqui fica só o que é do portal: frentes, cartões das ferramentas, saúde, entrada e diagnóstico.
     Cor só onde há sinal, sempre com ícone e texto; a cor da frente só no ladrilho da ferramenta; nenhum nome cortado com "…". */
  :root {
    /* escala do portal (a do PGA tem os mesmos nomes com outros valores: por isso não está no kit) */
    --fs-xs: 12.5px; --fs-sm: 13.5px; --fs-md: 15px; --fs-lg: 17px; --fs-xl: 20px;
    --esp-1: 4px; --esp-2: 8px; --esp-3: 12px; --esp-4: 16px; --esp-5: 20px; --esp-6: 24px; --esp-7: 32px;
    --largura: 1180px; --eco-largura: var(--largura);
  }
  body { font-size: var(--fs-md); }

  /* ---------- topo (ajustes do portal sobre a casca do kit) ---------- */
  .eco-marca-nome span { color: var(--primaria); }
  .eco-marca-ic .ic { width: 26px; height: 26px; }
  #hospital { min-height: var(--eco-alvo); padding: 0 var(--esp-3); border: 1px solid var(--borda-campo); border-radius: var(--r-pilula);
    background: var(--campo-fundo); }
  .quem { display: flex; align-items: center; gap: var(--esp-2); flex-wrap: wrap; }
  .eco-abas { max-width: none; }
  .eco-abas > * { flex: none; }
  .badge-alerta { display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 22px;
    padding: 0 6px; font-size: var(--fs-xs); font-weight: 700; border-radius: var(--r-pilula); }
  .badge-alerta.VERMELHO { background: var(--vermelho); color: var(--vermelho-texto); }
  .badge-alerta.AMARELO { background: var(--ambar); color: var(--superficie); }

  /* ---------- página ---------- */
  .pagina { max-width: var(--largura); margin: 0 auto; padding: var(--esp-5); } /* mesmo recuo do topo e das abas: tudo na mesma coluna */
  .eco-rodape a { color: var(--primaria); }
  .estado { text-align: center; color: var(--suave); padding: 56px var(--esp-4); }
  .esqueleto > * + * { margin-top: var(--esp-4); }

  /* ---------- seções e cartões das ferramentas ---------- */
  section { margin-bottom: var(--esp-6); }
  section > h2 { display: flex; align-items: center; gap: var(--esp-2); margin: 0 0 var(--esp-3);
    font-size: var(--fs-sm); font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--suave); }
  section > h2 .ic { color: var(--frente); }
  section > h2 .ponto { width: 10px; height: 10px; border-radius: var(--r-pilula); background: var(--frente); flex: none; }
  section > h2 .n, .outras > summary .n { font-weight: 500; }
  .grid { display: grid; gap: var(--esp-3); grid-template-columns: repeat(auto-fill, minmax(min(280px, 100%), 1fr)); }
  /* categorias lado a lado: uma coluna por frente, aplicativos empilhados; no celular viram uma embaixo da outra */
  .colunas { display: grid; gap: var(--esp-4); align-items: start; margin-bottom: var(--esp-6);
    grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr)); }
  .coluna { margin: 0; padding: var(--esp-3); border-radius: var(--r-cartao); background: var(--frente-f);
    border-top: 3px solid var(--frente); }
  .coluna > h2 { margin: var(--esp-1) var(--esp-1) var(--esp-3); color: var(--texto); }
  .coluna .grid { grid-template-columns: 1fr; gap: var(--esp-2); }
  /* cartão enxuto = eco-app do kit em uma linha: ladrilho, nome + frase curta, favorito à direita */
  .card { grid-template-columns: 44px 1fr; align-items: center; min-height: 0; padding: var(--esp-3) 56px var(--esp-3) var(--esp-4); }
  .card .eco-ladrilho { grid-row: auto; }
  .card-txt { display: grid; gap: 2px; min-width: 0; }
  .card .eco-app-pe { margin-top: 4px; }
  .card.VERMELHO { border-color: var(--vermelho-borda); }
  .card .eco-app-nome .ic { width: 14px; height: 14px; margin-left: 4px; color: var(--suave); vertical-align: -.05em; }
  .tag-planilha { display: inline-flex; align-items: center; gap: 4px; font-size: var(--fs-xs); font-weight: 600;
    color: var(--suave); background: var(--superficie-2); padding: 3px 10px; border-radius: var(--r-pilula); border: 1px solid var(--borda); }
  .fav { position: absolute; top: 50%; right: 6px; transform: translateY(-50%); opacity: .55; display: grid; place-items: center; width: var(--eco-alvo); height: var(--eco-alvo);
    border: 0; border-radius: var(--r-pilula); background: none; color: var(--borda-campo); cursor: pointer; }
  .fav:hover { background: var(--hover); }
  .card:hover .fav, .fav:focus-visible, .fav[aria-pressed="true"] { opacity: 1; }
  .fav .ic { width: 18px; height: 18px; }
  .fav[aria-pressed="true"] { color: var(--estrela); }
  .fav[aria-pressed="true"] .ic { fill: currentColor; }

  /* ---------- aba Aplicativos ---------- */
  .outras { margin-top: var(--esp-6); }
  .outras-desc { margin: 0 0 var(--esp-3); color: var(--suave); font-size: var(--fs-xs); }

  /* ---------- entrada (matrícula e PIN) ---------- */
  .entrada { max-width: 380px; margin: var(--esp-7) auto; display: grid; gap: var(--esp-3); padding: var(--esp-6); }
  .entrada .eco-ladrilho { grid-row: auto; }
  .entrada h2 { font-size: var(--fs-lg); margin: 0; }
  .entrada .dica { margin: 0; color: var(--suave); font-size: var(--fs-sm); }
  .entrada .aviso { margin: 0; color: var(--vermelho); font-size: var(--fs-sm); min-height: 1em; }
  .entrada .eco-btn.discreto { justify-self: start; padding: 0 var(--esp-2); text-decoration: underline; text-underline-offset: 3px; }

  /* ---------- aba de diagnóstico & saúde ---------- */
  .diag-painel { display: grid; gap: var(--esp-5); }
  .diag-topo { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: var(--esp-3); }
  .diag-titulo h2 { margin: 0; font-size: var(--fs-xl); font-weight: 700; }
  .diag-titulo p { margin: var(--esp-1) 0 0; color: var(--suave); font-size: var(--fs-sm); }
  .diag-acoes { display: flex; gap: var(--esp-2); flex-wrap: wrap; }
  .diag-kpis { display: grid; gap: var(--esp-3); grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
  .diag-kpi { display: flex; flex-direction: column; gap: var(--esp-1); }
  .diag-kpi.VERDE { border-top: 4px solid var(--verde); }
  .diag-kpi.AMARELO { border-top: 4px solid var(--ambar); }
  .diag-kpi.VERMELHO { border-top: 4px solid var(--vermelho); }
  .diag-kpi.PAUSA { border-top: 4px solid var(--borda-campo); }
  .diag-infra { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: var(--esp-3); font-size: var(--fs-sm); }
  .diag-infra > div { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
  .diag-bloco-desc { margin: -6px 0 var(--esp-3); color: var(--suave); font-size: var(--fs-xs); line-height: 1.4; }
  .diag-lista-rotinas, .diag-tabela-planilhas { display: grid; gap: var(--esp-2); }
  .diag-item-rotina { display: grid; grid-template-columns: auto 1fr auto; gap: var(--esp-2) var(--esp-3);
    padding: var(--esp-3); border: 1px solid var(--linha); border-radius: var(--r-bloco); align-items: center; background: var(--superficie-2); }
  .diag-item-rotina.VERMELHO { border-color: var(--vermelho-borda); background: var(--vermelho-f); }
  .diag-item-rotina.AMARELO { border-color: var(--ambar-borda); background: var(--ambar-f); }
  .diag-rotina-info { display: flex; flex-direction: column; gap: 2px; }
  .diag-rotina-nome { font-weight: 700; font-size: var(--fs-sm); }
  .diag-rotina-sub, .diag-rotina-id { font-size: var(--fs-xs); color: var(--suave); }
  .diag-rotina-msg { grid-column: 1 / -1; font-size: var(--fs-xs); color: var(--suave); margin-top: 4px; overflow-wrap: anywhere; }
  /* o que houve / o que fazer, e a ficha de detalhes: ocupam a linha toda do item */
  .diag-explica, .diag-detalhes { grid-column: 1 / -1; font-size: var(--fs-sm); line-height: 1.45; }
  .diag-explica p { margin: 0 0 var(--esp-1); }
  .diag-desde { display: flex; align-items: center; gap: 6px; color: var(--suave); font-size: var(--fs-xs); }
  .diag-desde .ic { width: 14px; height: 14px; }
  .diag-detalhes { display: grid; gap: var(--esp-3); padding-top: var(--esp-3); border-top: 1px solid var(--linha); }
  .diag-detalhes h4 { margin: 0 0 var(--esp-1); font-size: var(--fs-xs); color: var(--suave); text-transform: uppercase; letter-spacing: .04em; }
  .diag-ficha { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: var(--esp-2) var(--esp-4); margin: 0; }
  .diag-ficha dt { font-size: var(--fs-xs); color: var(--suave); }
  .diag-ficha dd { margin: 2px 0 0; overflow-wrap: anywhere; }
  .diag-historico { margin: 0; padding-left: 18px; font-size: var(--fs-xs); }
  .diag-links { display: flex; flex-wrap: wrap; gap: var(--esp-2); }
  .diag-item-planilha { display: flex; align-items: center; justify-content: space-between; gap: var(--esp-3); flex-wrap: wrap;
    padding: var(--esp-3); border: 1px solid var(--linha); border-radius: var(--r-bloco); background: var(--superficie-2); }
  .diag-planilha-info { display: flex; flex-direction: column; gap: 4px; min-width: 0; flex: 1 1 260px; }
  .diag-planilha-nome { font-weight: 700; font-size: var(--fs-sm); display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
  .diag-planilha-papel { font-size: var(--fs-xs); color: var(--suave); }

  /* ---------- aba Usuários ---------- */
  /* aba Satélites: farmácias à esquerda, setores da escolhida à direita */
  .sat-grade { display: grid; grid-template-columns: minmax(220px, 300px) minmax(0, 1fr); gap: var(--esp-4); align-items: start; }
  .sat-lista { display: grid; gap: 6px; position: sticky; top: 120px; }
  .sat-farm { display: flex; align-items: center; gap: 10px; min-height: 48px; padding: 8px 14px; border: 1px solid var(--borda);
    border-radius: var(--r-bloco); background: var(--superficie); color: var(--texto); font: inherit; text-align: left; cursor: pointer; }
  .sat-farm:hover { background: var(--hover); }
  .sat-farm[aria-pressed="true"] { border-color: var(--frente); background: var(--frente-f); color: var(--frente); font-weight: 700; }
  .sat-farm-nome { flex: 1; min-width: 0; overflow-wrap: anywhere; }
  .sat-farm-n { min-width: 28px; padding: 2px 8px; border-radius: var(--r-pilula); background: var(--superficie-2); color: var(--suave);
    font-size: var(--fs-sm); font-weight: 700; text-align: center; font-variant-numeric: tabular-nums; }
  .sat-sem { display: flex; align-items: center; gap: 6px; margin: 6px 0 0; color: var(--suave); font-size: var(--fs-sm); }
  .sat-painel { padding: var(--esp-4); display: grid; gap: var(--esp-3); }
  .sat-painel-topo { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
  .sat-painel-topo h3 { margin: 0; font-size: 18px; }
  .sat-n { color: var(--suave); font-size: var(--fs-sm); }
  .sat-ferramentas { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
  .sat-busca { flex: 1; min-width: 220px; }
  .sat-busca .eco-input { width: 100%; }
  .sat-filtros { display: flex; flex-wrap: wrap; gap: 6px; }
  .sat-filtros .eco-btn[aria-pressed="true"] { border-color: var(--primaria); background: var(--primaria-f); color: var(--primaria); }
  .sat-setores { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 6px; }
  .sat-setor { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 10px; min-height: 48px; padding: 8px 12px;
    border: 1px solid var(--borda); border-radius: var(--r-bloco); cursor: pointer; }
  .sat-setor:hover { background: var(--hover); }
  .sat-setor.marcado { border-color: var(--frente); background: var(--frente-f); }
  .sat-setor input { width: 20px; height: 20px; margin: 0; accent-color: var(--primaria); flex: none; }
  .sat-setor-nome { flex: 1; min-width: 140px; overflow-wrap: anywhere; }
  .sat-setor-nome small { display: block; color: var(--suave); font-size: 12px; }
  .sat-pe { display: flex; justify-content: flex-end; gap: 8px; position: sticky; bottom: 0; padding-top: 10px; background: var(--superficie);
    border-top: 1px solid var(--linha); }
  @media (max-width: 760px) {
    .sat-grade { grid-template-columns: 1fr; }
    .sat-lista { position: static; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
  }

  .us-topo { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: var(--esp-3); margin-bottom: var(--esp-4); }
  .us-topo h2 { margin: 0; }
  .us-topo p { margin: 4px 0 0; color: var(--suave); font-size: var(--fs-sm); max-width: 60ch; }
  .us-filtros { margin-bottom: var(--esp-3); }
  .us-topo-acoes { display: flex; flex-wrap: wrap; gap: var(--esp-2); }
  .us-acoes .eco-btn + .eco-btn, .us-acoes .eco-btn + .us-so-gerencia { margin-left: var(--esp-2); }
  .us-barra { display: flex; flex-wrap: wrap; gap: var(--esp-2) var(--esp-3); align-items: center; margin-bottom: var(--esp-3); }
  .us-barra .eco-busca { flex: 1 1 280px; max-width: 420px; }
  .us-barra select { min-height: var(--eco-alvo); padding: 0 12px; border: 1px solid var(--borda-campo); border-radius: var(--r-pilula);
    background: var(--campo-fundo); color: var(--texto); font: inherit; }
  .us-tabela td { vertical-align: middle; }
  .us-pessoa { min-width: 220px; }
  .us-pessoa b, .us-perfil b { display: block; }
  .us-perfil b { font-weight: 600; }
  .us-pessoa span, .us-perfil span { color: var(--suave); font-size: var(--fs-xs); }
  .us-tabela .eco-sinal { white-space: nowrap; }
  .us-acoes { text-align: right; white-space: nowrap; }
  .us-desativado td:not(.us-acoes) { color: var(--suave); } /* quem saiu fica na lista, mas sem disputar atenção */
  .us-so-gerencia { color: var(--suave); font-size: var(--fs-xs); }
  /* a janela decide as colunas pela própria largura (não pela da tela): com zoom ou tela estreita vira uma coluna */
  .us-janela { width: min(640px, calc(100% - 32px)); container-type: inline-size; }
  .us-janela .eco-janela-corpo { gap: var(--esp-4); }
  .us-secao { display: grid; gap: var(--esp-3); min-width: 0; }
  .us-secao + .us-secao { padding-top: var(--esp-4); border-top: 1px solid var(--linha); }
  .us-secao h3 { margin: 0; font-size: var(--fs-xs); font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--suave); }
  .us-form { display: grid; gap: var(--esp-4); grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
  .us-form .largo { grid-column: 1 / -1; display: grid; gap: var(--esp-2); min-width: 0; }
  .us-form [hidden] { display: none; }
  .us-form .obrig { color: var(--vermelho); }
  .us-ate input { max-width: 220px; } /* data: campo curto; a ajuda usa a linha toda */
  .us-infos { display: grid; gap: var(--esp-1); }
  .us-info { display: flex; gap: 8px; align-items: flex-start; font-size: var(--fs-sm); color: var(--suave); font-weight: 400; }
  .us-info .ic { width: 16px; height: 16px; flex: none; margin-top: 2px; }
  .us-erro { flex: none; margin: 0 var(--esp-5) var(--esp-4); }
  .us-erro p { margin: 0; font-weight: 600; }
  .us-erro[hidden] { display: none; }
  .us-confirmar { width: min(440px, calc(100% - 32px)); }
  .us-conf-texto { margin: 0; }
  .us-pe-esq { margin-right: auto; display: flex; gap: var(--esp-2); flex-wrap: wrap; }
  @container (max-width: 540px) {
    .us-form { grid-template-columns: minmax(0, 1fr); }
    .us-janela .eco-janela-pe { justify-content: stretch; }
    .us-janela .eco-janela-pe > .eco-btn { flex: 1 1 auto; }
    .us-pe-esq { flex: 1 1 100%; }
    .us-pe-esq .eco-btn { flex: 1 1 auto; }
  }
  @media (max-width: 700px) {
    .us-tabela thead { display: none; }
    .us-tabela, .us-tabela tbody, .us-tabela tr, .us-tabela td { display: block; }
    .us-tabela tr { display: grid; gap: 6px; padding: 12px 14px; border-bottom: 1px solid var(--borda); }
    .us-tabela td { padding: 0; border: 0; }
    .us-acoes { text-align: left; }
  }

  /* Seletor múltiplo de setores e sistemas */
  .us-seletor { display: grid; gap: var(--esp-2); min-width: 0; }
  .us-seletor-topo { display: flex; align-items: center; justify-content: space-between; gap: var(--esp-2); flex-wrap: wrap; }
  .us-seletor-topo-acoes { display: flex; align-items: center; gap: var(--esp-2); }
  .us-badge-cont { font-size: var(--fs-xs); font-weight: 600; padding: 2px 10px; border-radius: var(--r-pilula); background: var(--fundo); border: 1px solid var(--borda); color: var(--suave); }
  .us-btn-mini { min-height: 28px; padding: 0 10px; font-size: var(--fs-xs); border-radius: var(--r-pilula); }
  .us-busca-seletor { width: 100%; min-height: 38px; padding: 0 12px; border: 1px solid var(--borda-campo); border-radius: var(--r-pilula); background: var(--campo-fundo); color: var(--texto); font: inherit; font-size: var(--fs-sm); }
  .us-checklist-caixa { max-height: 180px; overflow-y: auto; border: 1px solid var(--borda-campo); border-radius: var(--r-cartao); padding: 6px; display: grid; gap: 2px; background: var(--campo-fundo); }
  .us-check-item { display: flex; align-items: center; gap: 10px; min-height: 40px; padding: 6px 10px; border-radius: 8px; cursor: pointer; transition: background .15s; font-size: var(--fs-sm); user-select: none; }
  .us-check-item:hover { background: var(--fundo-hover, rgba(0,0,0,.03)); }
  .us-check-item input[type="checkbox"] { width: 18px; height: 18px; flex: none; accent-color: var(--verde-fundo, #0f5e5a); cursor: pointer; }
  .us-check-item span { flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; }

  /* Seletor de sistemas */
  .us-todos-card { display: flex; align-items: flex-start; gap: 12px; padding: 12px 14px; border: 1px solid var(--borda-campo); border-radius: var(--r-cartao); background: var(--campo-fundo); cursor: pointer; transition: border-color .15s; }
  .us-todos-card:hover { border-color: var(--foco, #0f5e5a); }
  .us-todos-card input[type="checkbox"] { width: 20px; height: 20px; margin-top: 2px; flex: none; accent-color: var(--verde-fundo, #0f5e5a); cursor: pointer; }
  .us-todos-card strong { display: block; font-size: var(--fs-sm); font-weight: 600; color: var(--texto); }
  .us-todos-card span { display: block; font-size: var(--fs-xs); color: var(--suave); margin-top: 2px; }
  .us-sistemas-caixa { display: grid; gap: var(--esp-3); padding-top: var(--esp-2); }
  .us-frente-grupo { display: grid; gap: 6px; }
  .us-frente-titulo { font-size: var(--fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--suave); margin: 6px 0 2px; display: flex; align-items: center; gap: 6px; }
  .us-sistemas-grid { display: grid; gap: 6px; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
  .us-sistema-item { display: flex; align-items: flex-start; gap: 10px; padding: 8px 10px; border: 1px solid var(--borda); border-radius: 12px; background: var(--fundo); cursor: pointer; transition: all .15s; min-height: 44px; }
  .us-sistema-item:hover { border-color: var(--foco, #0f5e5a); background: var(--campo-fundo); }
  .us-sistema-item input[type="checkbox"] { width: 18px; height: 18px; margin-top: 2px; flex: none; accent-color: var(--verde-fundo, #0f5e5a); cursor: pointer; }
  .us-sistema-corpo { flex: 1 1 auto; min-width: 0; display: grid; gap: 2px; }
  .us-sis-nome { font-size: var(--fs-sm); font-weight: 600; line-height: 1.25; }
  .us-sis-desc { font-size: var(--fs-xs); color: var(--suave); line-height: 1.2; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .us-sistemas-resumo { font-size: var(--fs-sm); }
  .us-setores { max-width: 220px; font-size: var(--fs-sm); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .us-sistemas-td { max-width: 220px; }

  /* ---------- tablet e celular ---------- */
  @media (max-width: 560px) {
    .pagina { padding: var(--esp-4); } /* no celular o topo recua 16px */
    .diag-item-rotina { grid-template-columns: 1fr; }
    .diag-item-rotina > .eco-btn { justify-self: start; }
  }

  /* ---------- aba Automações (Servico_Automacoes.js): uma linha por etapa, cada informação na sua coluna ---------- */
  .au-quando { display: inline-flex; align-items: center; gap: 6px; color: var(--suave); font-size: var(--fs-sm); }
  .au-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 16px 0; }
  .au-kpi { display: flex; flex-direction: column; gap: 4px; padding: 14px 18px; }
  .au-kpi.VERDE .eco-kpi-num { color: var(--verde); }
  .au-kpi.AMARELO { border-color: var(--ambar-borda); background: var(--ambar-f); }
  .au-kpi.AMARELO .eco-kpi-num { color: var(--ambar); }
  .au-kpi.AZUL .eco-kpi-num { color: var(--azul); }
  .au-noar { padding: 14px 18px; margin-bottom: 16px; }
  .au-noar h3 { margin: 0 0 8px; font-size: 15px; display: flex; align-items: center; gap: 8px; }
  .au-pulso { width: 9px; height: 9px; border-radius: 50%; background: var(--primaria); box-shadow: 0 0 0 4px var(--primaria-f); }
  .au-robo { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 6px 0; border-top: 1px solid var(--linha); font-size: 14px; }
  .au-robo span { color: var(--suave); font-size: 13px; }
  .au-robo .ic { color: var(--primaria); }
  .au-robo.esperando, .au-robo.esperando .ic { color: var(--suave); }
  .au-tit { display: flex; align-items: center; gap: 8px; margin: 18px 0 8px; font-size: 15px; }
  .au-n { min-width: 24px; height: 22px; padding: 0 8px; border-radius: var(--r-pilula); display: inline-grid; place-items: center;
          font-size: 12px; background: var(--ambar-f); color: var(--ambar); border: 1px solid var(--ambar-borda); }

  .au-lista { background: var(--superficie); border: 1px solid var(--borda); border-radius: var(--r-cartao); overflow: hidden; }
  .au-cab, .au-linha { display: grid; grid-template-columns: minmax(260px, 1fr) 140px 140px 190px; }
  .au-cab { background: var(--superficie-2); border-bottom: 1px solid var(--borda); }
  .au-cab .au-c { min-height: 38px; font-size: 12px; font-weight: 600; color: var(--suave); }
  .au-c { display: flex; align-items: center; gap: 8px; padding: 0 14px; min-height: 50px; min-width: 0; }
  .au-c + .au-c { border-left: 1px solid var(--linha); }
  .au-li { border-top: 1px solid var(--borda); }
  .au-li:first-of-type { border-top: 0; }
  .au-ruim .au-linha { background: color-mix(in srgb, var(--ambar-f) 40%, var(--superficie)); }
  .au-falha .au-linha { background: color-mix(in srgb, var(--vermelho-f) 45%, var(--superficie)); }
  .au-st { width: 26px; height: 26px; border-radius: 8px; display: grid; place-items: center; flex: none; }
  .au-ok .au-st { background: var(--verde-f); color: var(--verde); }
  .au-ruim .au-st { background: var(--ambar-f); color: var(--ambar); }
  .au-falha .au-st { background: var(--vermelho-f); color: var(--vermelho); }
  .au-neutro .au-st { background: var(--superficie-2); color: var(--suave); }
  .au-st .ic { width: 15px; height: 15px; }
  .au-nm { font-weight: 600; font-size: 14px; }
  .au-sis { font-size: 12px; color: var(--suave); }
  .au-selo { flex: none; height: 22px; padding: 0 9px; border-radius: var(--r-pilula); display: inline-flex; align-items: center;
             font-size: 12px; font-weight: 700; color: var(--ambar); background: var(--ambar-f); border: 1px solid var(--ambar-borda); }
  .au-falha .au-selo { color: var(--vermelho); background: var(--vermelho-f); border-color: var(--vermelho-borda); }
  .au-val { display: inline-flex; align-items: center; gap: 6px; font-size: 13.5px; font-weight: 700; white-space: nowrap; }
  .au-val .ic { width: 15px; height: 15px; }
  .au-val.VERDE { color: var(--verde); } .au-val.AMARELO { color: var(--ambar); }
  .au-val.NEUTRO { color: var(--texto); font-weight: 500; } .au-val.NEUTRO .ic { color: var(--suave); }
  .au-prob { display: flex; gap: 8px; align-items: baseline; padding: 9px 14px 11px 54px; font-size: 13px; line-height: 1.45;
             background: var(--ambar-f); border-top: 1px solid var(--ambar-borda); }
  .au-prob b { color: var(--ambar); flex: none; }
  .au-falha .au-prob { background: var(--vermelho-f); border-top-color: var(--vermelho-borda); }
  .au-falha .au-prob b { color: var(--vermelho); }

  .au-sistema { margin-bottom: 8px; }
  .au-sistema > summary { display: flex; align-items: center; gap: 10px; min-height: 52px; padding: 0 16px; cursor: pointer;
                          list-style: none; background: var(--superficie); border: 1px solid var(--borda); border-radius: var(--r-cartao); }
  .au-sistema > summary::-webkit-details-marker { display: none; }
  .au-sistema[open] > summary { border-radius: var(--r-cartao) var(--r-cartao) 0 0; border-bottom: 0; }
  .au-sistema[open] > .au-lista { border-radius: 0 0 var(--r-cartao) var(--r-cartao); }
  .au-sis-ic { width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center; background: var(--primaria-f); color: var(--primaria); }
  .au-ver { margin-left: auto; color: var(--primaria); font-weight: 600; font-size: 13px; }
  .au-sistema[open] .au-ver { visibility: hidden; }

  @media (max-width: 760px) {
    .au-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .au-cab { display: none; }
    .au-linha { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .au-linha .au-nome { grid-column: 1 / -1; border-bottom: 1px solid var(--linha); flex-wrap: wrap; padding: 10px 14px; }
    .au-linha .au-c:nth-child(2) { border-left: 0; }
    .au-c[data-rotulo] { flex-direction: column; align-items: flex-start; justify-content: center; gap: 2px; }
    .au-c[data-rotulo]::before { content: attr(data-rotulo); font-size: 11.5px; color: var(--suave); }
    .au-prob { padding-left: 14px; }
    .au-c[data-rotulo] .au-val { white-space: normal; }
  }


/* ---------- Netlify SWR + Optimistic UI + Auth Institucional ---------- */
.sync-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 12px;
  border-radius: var(--r-pilula);
  font-size: var(--fs-xs);
  font-weight: 700;
  border: 1px solid var(--borda);
  background: var(--superficie-2);
  color: var(--suave);
  transition: all var(--mov);
}
.sync-pill::before {
  content: "";
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--suave);
}
.sync-pill[data-status="IDLE"] {
  background: var(--verde-f);
  color: var(--verde);
  border-color: var(--verde-borda);
}
.sync-pill[data-status="IDLE"]::before {
  background: var(--verde);
}
.sync-pill[data-status="SYNCING"],
.sync-pill[data-status="SAVING"] {
  background: var(--azul-f);
  color: var(--azul);
  border-color: var(--azul-borda);
}
.sync-pill[data-status="SYNCING"]::before,
.sync-pill[data-status="SAVING"]::before {
  background: var(--azul);
  animation: sync-pulse 1s ease-in-out infinite;
}
.sync-pill[data-status="ERROR"] {
  background: var(--ambar-f);
  color: var(--ambar);
  border-color: var(--ambar-borda);
}
.sync-pill[data-status="ERROR"]::before {
  background: var(--ambar);
}
@keyframes sync-pulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.35); opacity: 0.55; }
}
.auth-card {
  max-width: 440px;
  margin: var(--esp-7) auto;
  display: grid;
  gap: var(--esp-4);
  padding: var(--esp-6);
  text-align: center;
  justify-items: center;
}
.auth-card h2 { margin: 0; font-size: var(--fs-xl); }
.auth-card p { margin: 0; color: var(--suave); font-size: var(--fs-sm); }
.auth-gsi-box { min-height: 44px; display: grid; place-items: center; width: 100%; }

/* Nunca exibir pílula de sincronização em segundo plano / modo cache local */
.sync-pill, #sync-badge { display: none !important; }

/* Oculta automaticamente widgets flutuantes injetados pelo Netlify Drop / Deploy Preview ("Powered by Netlify") */
iframe[src*="app.netlify.com"],
div[data-netlify-deploy-id],
#netlify-drawer,
netlify-drawer,
a[href*="netlify.com"][target="_blank"][style*="fixed"] {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

/* ============================================================================
 * GAS TURBO LOADER — 60 FPS CSS VIRTUALIZATION & OPTIMISTIC UI CHOREOGRAPHY
 * ============================================================================ */
.us-tabela tbody tr,
.sat-setor,
.diag-item-rotina,
.au-li {
  content-visibility: auto;
  contain-intrinsic-size: 0 44px;
}

@keyframes optimisticFlash {
  0% { background-color: rgba(16, 185, 129, 0.22); }
  100% { background-color: transparent; }
}

@keyframes errorShake {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-4px); }
  75% { transform: translateX(4px); }
}

.row-just-saved {
  animation: optimisticFlash 900ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.row-sync-saving {
  opacity: 0.72;
}

.row-sync-error {
  animation: errorShake 250ms ease-in-out;
  background-color: rgba(244, 63, 94, 0.08);
  outline: 1px solid rgba(244, 63, 94, 0.4);
}
