    /* ══ ACESSO: cargo system, plataforma, usuário logado ═══════════════════ */
    /* Esquema de cores oficial do sistema Link (o azul do ícone L·GD): vale para a tela de login e para
       o módulo Gestão da Plataforma. Base #3589ac do ícone, sombra #065980, luz #67b2cd. */
    :root[data-modulo="plataforma"] {
      --bg: #ebf2f7; --surface-2: #f2f7fa; --surface-3: #e4edf3; --border: #d8e4ec; --border-strong: #bccfdb;
      --accent: #2b7a9f; --accent-strong: #1d5f7f; --accent-soft: #e6f1f7; --accent-border: #b7d6e6;
      --ink: #0f2a3d; --ink-2: #183a52; --ink-line: #24475f; --ink-fg: #9db8c9; --ink-fg-2: #7d9bb0; --ink-icon: #8fc7e0;
    }

    /* Cartão expandido: cresce para cima (quase a tela toda) e cada módulo mostra uma descrição breve */
    /* O ícone da plataforma e o botão de expandir ficam FIXOS no canto de baixo à direita (bottom vem de --plat-b,
       calculado na abertura para centralizar na faixa): não mudam de lugar quando o cartão cresce ou encolhe. */
    .modulo-painel { padding-right: 116px; }
    html:not([data-modulos~="plataforma"]) .modulo-painel { padding-right: 56px; }
    .modulo-painel .modulo-plat { position: absolute; right: 10px; bottom: var(--plat-b, 9px); margin: 0; align-self: auto; }
    .modulo-expandir {
      position: absolute; right: 74px; bottom: calc(var(--plat-b, 9px) + 11px); width: 32px; height: 32px; padding: 0; border-radius: 10px;
      display: grid; place-items: center; cursor: pointer; color: var(--ink-fg);
      background: color-mix(in srgb, var(--ink) 55%, transparent); border: 1px solid var(--ink-line);
      transition: color .25s, border-color .25s, background .25s;
    }
    html:not([data-modulos~="plataforma"]) .modulo-expandir, html[data-multicliente="1"] .modulo-expandir { right: 10px; }   /* sem o escudo, o botão vai para o canto */
    .modulo-expandir:hover { color: #fff; border-color: var(--ink-icon); }
    .modulo-expandir svg { width: 16px; height: 16px; transform: rotate(180deg); transition: transform .4s var(--ease); }   /* seta para cima = expandir */
    .modulo-painel.expandido .modulo-expandir svg { transform: none; }
    .modulo-desc { display: none; }
    .modulo-painel.expandido .modulo-corpo { flex: 1; overflow-y: auto; align-items: flex-start; padding: 6px 2px 0 0; }
    .modulo-painel.expandido .modulo-lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; width: 100%; align-content: start; align-items: start; }
    .modulo-painel.expandido .modulo-item { width: auto; height: auto; padding: 16px; align-items: flex-start; text-align: left; }
    .modulo-painel.expandido .modulo-item .mark { width: 46px; height: 46px; }
    .modulo-painel.expandido .modulo-txt small { white-space: normal; }
    .modulo-painel.expandido .modulo-desc { display: block; margin-top: 8px; font-size: var(--fs-xs); line-height: 1.45; color: var(--ink-fg-2); white-space: normal; }

    /* ícone da plataforma no fim do cartão de módulos (só o system) */
    .modulo-plat {
      flex-shrink: 0; align-self: center; margin-left: auto; width: 54px; height: 54px; border-radius: 15px;
      display: grid; place-items: center; cursor: pointer; color: var(--ink-fg);
      background: color-mix(in srgb, var(--ink) 55%, transparent); border: 1px solid var(--ink-line);
      transition: background .3s, color .3s, border-color .3s, transform .3s var(--ease);
    }
    .modulo-plat svg { width: 26px; height: 26px; }
    .modulo-plat:hover { color: #fff; border-color: var(--ink-icon); transform: translateY(-2px); }
    /* Botões dos módulos com as duas versões, como o resto do menu: duotone em repouso, fill quando "ligado"
       (Módulos: com o cartão aberto; Gestão da Plataforma: quando é o módulo em uso) */
    .modulo-btn .ico-ativo, .modulo-plat .ico-ativo { display: none; }
    .modulo-btn.aberto .ico-normal { display: none; }
    .modulo-btn.aberto .ico-ativo { display: block; }
    .modulo-btn.aberto svg { color: #fff; }
    html[data-modulo="plataforma"] .modulo-plat .ico-normal { display: none; }
    html[data-modulo="plataforma"] .modulo-plat .ico-ativo { display: block; }
    html[data-modulo="plataforma"] .modulo-plat { color: #fff; background: color-mix(in srgb, var(--ink-icon) 20%, transparent); border-color: color-mix(in srgb, var(--ink-icon) 60%, transparent); }
    html:not([data-modulos~="plataforma"]) .modulo-plat { display: none; }
    html:not([data-modulos~="linkana"]) .modulo-item[data-modulo="linkana"],
    html:not([data-modulos~="fd"]) .modulo-item[data-modulo="fd"],
    html:not([data-modulos~="custos"]) .modulo-item[data-modulo="custos"] { display: none; }

    /* usuário logado no cabeçalho */
    .usr { position: relative; flex-shrink: 0; }
    .usr-btn { width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--accent-border); background: var(--accent-soft); color: var(--accent-strong); cursor: pointer; display: grid; place-items: center; font: inherit; transition: box-shadow .25s, transform .25s var(--ease); }
    .usr-btn:hover, .usr-btn[aria-expanded="true"] { box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent) 18%, transparent); }
    .usr-av { font-size: var(--fs-sm); font-weight: 700; text-transform: uppercase; }
    .usr-menu {
      position: absolute; right: 0; top: calc(100% + 10px); width: 250px; z-index: 60; padding: 6px;
      background: var(--surface); border: 1px solid var(--border); border-radius: 14px; box-shadow: 0 16px 40px rgba(23, 26, 43, .16);
      animation: rsEntra .28s var(--ease);
    }
    .usr-menu[hidden] { display: none; }
    .usr-info { padding: 10px 12px 12px; border-bottom: 1px solid var(--border); margin-bottom: 4px; }
    .usr-info b { display: block; font-size: var(--fs-md); }
    .usr-info small { display: block; margin-top: 2px; font-size: var(--fs-xs); color: var(--text-mut); }
    .usr-menu .acoes-item { width: 100%; }
    .usr-versao { margin-top: 6px; padding: 10px 12px 6px; border-top: 1px solid var(--border); font-size: var(--fs-xs); color: var(--text-mut); }

    /* perfil somente-leitura: sem Cadastros e sem os botões de escrever (o servidor recusa de qualquer jeito) */
    html[data-leitura="1"] .nav-cad,
    html[data-leitura="1"] .nav-op,
    html[data-leitura="1"] .nav-item[data-view="coleta"],
    html[data-leitura="1"] .nav-item[data-view^="cad-"],
    html[data-leitura="1"] .mat-import-acoes,
    html[data-leitura="1"] .mat-cad-topo .cd-b,
    html[data-leitura="1"] .conf-acoes,
    html[data-leitura="1"] .fx-conf,
    html[data-leitura="1"] .fx-lapis,
    html[data-leitura="1"] .dl-lin.editavel .dl-abrir,
    html[data-leitura="1"] #pd-copy-one,
    html[data-leitura="1"] .acoes-item[onclick*="verificarUnica"] { display: none !important; }
    /* TrialSystem: vê tudo (Cadastros inclusive), mas nenhum botão que escreve — e o servidor recusa toda escrita */
    html[data-perfil="trialsystem"] .mat-import-acoes,
    html[data-perfil="trialsystem"] .mat-cad-topo .cd-b,
    html[data-perfil="trialsystem"] .conf-acoes,
    html[data-perfil="trialsystem"] .fx-conf,
    html[data-perfil="trialsystem"] .fx-lapis,
    html[data-perfil="trialsystem"] .dl-lin.editavel .dl-abrir,
    html[data-perfil="trialsystem"] #pd-copy-one,
    html[data-perfil="trialsystem"] #us-novo,
    html[data-perfil="trialsystem"] #usr-ajuda,
    html[data-perfil="trialsystem"] #usr-senha,
    html[data-perfil="trialsystem"] .us-lin .dl-abrir,
    html[data-perfil="trialsystem"] .rq-chk input,
    html[data-perfil="trialsystem"] .acoes-item[onclick*="verificarUnica"] { display: none !important; }
    html[data-perfil="trialsystem"] .fx-item[data-etapa-editar],
    html[data-perfil="trialsystem"] .dl-lin.editavel,
    html[data-perfil="trialsystem"] .us-lin { cursor: default; }
        html[data-leitura="1"] .fx-item[data-etapa-editar],
    html[data-leitura="1"] .dl-lin.editavel { cursor: default; }

    /* Plataforma › Usuários */
    .pl-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 12px; margin-bottom: 16px; }
    .pl-kpi { display: flex; align-items: center; gap: 14px; padding: 16px 18px; border-radius: 14px; border: 1px solid var(--border); background: var(--surface); }
    .pl-kpi-i { flex: none; width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; background: var(--accent-soft); color: var(--accent-strong); }
    .pl-kpi-i svg { width: 22px; height: 22px; }
    .pl-kpi-t { display: flex; flex-direction: column; min-width: 0; }
    .pl-kpi-t small { font-size: var(--fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--text-mut); }
    .pl-kpi-t b { font-size: 26px; font-weight: 800; line-height: 1.15; letter-spacing: -.02em; }
    .pl-kpi-t em { font-style: normal; font-size: var(--fs-xs); color: var(--text-mut); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .pl-kpi.ok .pl-kpi-i { background: var(--ok-soft, rgba(46,160,90,.16)); color: var(--ok, #3fb37a); }
    .pl-kpi.warn .pl-kpi-i { background: var(--warn-soft, rgba(230,160,30,.16)); color: var(--warn, #e6a01e); }
    .pl-kpi.info .pl-kpi-i { background: var(--info-soft, rgba(60,140,220,.16)); color: var(--info, #4a9be0); }
    .us-barra { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; flex-wrap: wrap; }
    .us-barra .cd-busca { margin-left: auto; }
    .us-filtros { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 16px; }
    .us-filtros .subtab .n { margin-left: 4px; opacity: .7; font-weight: 700; }
    /* Lista de usuários: colunas de largura FIXA (cabeçalho e linhas usam a mesma grade), então tudo alinha embaixo do título */
    .us-cab, .us-lin {
      display: grid; align-items: center; column-gap: 16px;
      grid-template-columns: 44px minmax(130px, 1fr) 130px minmax(160px, 1.4fr) 140px 84px 110px 70px 64px;
    }
    .us-cab { padding: 0 18px 8px 20px; font-size: var(--fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--text-mut); }
    .us-lista { display: flex; flex-direction: column; gap: 8px; }
    .us-lin {
      --uc: var(--border-strong);
      padding: 12px 18px 12px 20px; background: var(--surface); border: 1px solid var(--border); border-radius: 14px; cursor: pointer;
      box-shadow: inset 4px 0 0 var(--uc);
      animation: rsEntra .5s var(--ease) backwards; animation-delay: calc(var(--n, 0) * 45ms);
      transition: transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s;
    }
    .us-lin:hover { transform: translateX(3px); border-color: var(--accent-border); box-shadow: inset 4px 0 0 var(--uc), 0 6px 18px rgba(23, 26, 43, .07); }
    .us-c { min-width: 0; display: inline-flex; align-items: center; gap: 7px; font-size: var(--fs-sm); color: var(--text-dim); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .us-c svg { width: 14px; height: 14px; flex: none; color: var(--text-mut); }
    .us-vazio { font-style: normal; color: var(--text-mut); opacity: .7; }
    .us-acesso { font-size: var(--fs-xs); }
    .us-lin.system { --uc: var(--accent); }
    .us-lin.trialsystem { --uc: var(--accent-border); }
    .us-lin.admin { --uc: var(--info-fill); }
    .us-lin.inativo { opacity: .6; }
    .us-lin.inativo .us-av { filter: grayscale(1); }
    .us-av { width: 44px; height: 44px; border-radius: 13px; display: grid; place-items: center; font-size: 18px; font-weight: 700; text-transform: uppercase; background: var(--accent-soft); color: var(--accent-strong); }
    .us-lin.system .us-av { background: var(--accent); color: #fff; }
    .us-lin.trialsystem .us-av { background: var(--accent-soft); color: var(--accent-strong); }
    .us-lin.admin .us-av { background: var(--info-bg); color: var(--info); }
    .us-nome { min-width: 0; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .us-nome small { display: inline-block; margin-left: 8px; padding: 1px 8px; border-radius: 999px; background: var(--accent-soft); font-weight: 700; font-size: 11px; color: var(--accent-strong); vertical-align: middle; }
    .us-mods { display: flex; gap: 6px; flex-wrap: wrap; }
    /* módulo com acesso: só o ícone, pequeno; o nome vai no balão */
    .us-mod { width: 24px; height: 24px; border-radius: 7px; display: grid; place-items: center; background: var(--surface); border: 1px solid var(--border); }
    .us-mod img { width: 16px; height: 16px; object-fit: contain; border-radius: 4px; }
    .us-mod svg { width: 14px; height: 14px; color: var(--accent-strong); }
    /* Lista de clientes (só consulta): as mesmas linhas dos usuários, com menos colunas e sem clique */
    .us-cab.cl-cab, .us-lin.cl-lin { grid-template-columns: 44px minmax(200px, 2fr) minmax(90px, 1fr) 140px 100px; }
    .us-lin.cl-lin { cursor: default; --uc: var(--accent); }
    .us-lin.cl-lin:hover { transform: none; }
    /* Assinaturas e faturas */
    .fa-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 12px; margin-bottom: 18px; }
    .fa-card { background: var(--surface); border: 1px solid var(--border); border-radius: 14px; padding: 14px 16px; box-shadow: inset 4px 0 0 var(--accent); display: flex; flex-direction: column; gap: 12px; }
    .fa-card-t { display: flex; align-items: center; gap: 10px; }
    .fa-kvs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 16px; }
    .fa-kv small { display: block; font-size: var(--fs-xs); color: var(--text-mut); text-transform: uppercase; letter-spacing: .05em; font-weight: 700; }
    .fa-kv b { font-size: var(--fs-md, 15px); }
    .fa-vazio { color: var(--text-mut); font-size: var(--fs-sm); }
    .fa-acoes, .fa-lin-acoes { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
    .us-cab.fa-cab, .us-lin.fa-lin { grid-template-columns: minmax(150px, 1.4fr) 190px 120px 110px 130px minmax(180px, 1.2fr); }
    .us-lin.fa-lin { cursor: default; --uc: var(--info-fill); }
    .us-lin.fa-lin:hover { transform: none; }
    /* Multi-cliente: clientes editáveis, menu da conta, minha equipe, bloqueio por assinatura */
    .us-lin.cl-edita { cursor: pointer; }
    .us-lin.cl-edita:hover { transform: translateX(3px); }
    .us-nome small.us-cli { background: var(--info-bg); color: var(--info); }
    .cl-acoes { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
    .mc-cab { padding: 8px 12px 2px; font-size: var(--fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--text-mut); border-top: 1px solid var(--border); margin-top: 4px; }
    .usr-menu .acoes-item.mc-atual { color: var(--accent-strong); font-weight: 700; }
    .mc-barra { display: flex; justify-content: flex-end; margin-bottom: 12px; }
    .mc-lista { display: flex; flex-direction: column; gap: 8px; }
    .mc-vazio { display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; padding: 42px 20px; border: 1px dashed var(--border); border-radius: 14px; background: var(--surface); }
    .mc-vazio svg { width: 34px; height: 34px; color: var(--accent-strong); }
    .mc-vazio b { font-size: var(--fs-md, 16px); } .mc-vazio span { color: var(--text-mut); font-size: var(--fs-sm); max-width: 380px; }
    .mc-lin { display: grid; grid-template-columns: 44px 1fr auto auto; align-items: center; gap: 12px; padding: 10px 14px; text-align: left; background: var(--surface); border: 1px solid var(--border); border-radius: 12px; cursor: pointer; font: inherit; color: inherit; }
    .mc-lin:hover { border-color: var(--accent-border); }
    .mc-lista .mc-lin { grid-template-columns: 44px minmax(120px, 1fr) auto auto auto; animation: rsEntra .5s var(--ease) backwards; animation-delay: calc(var(--n, 0) * 45ms); }
    /* Seletor de contexto (Plataforma / cliente), no topo */
    .ctx { position: relative; margin-right: 10px; }
    .ctx-btn { display: inline-flex; align-items: center; gap: 8px; height: 36px; padding: 0 12px; border-radius: 999px; border: 1px solid var(--accent-border); background: var(--accent-soft); color: var(--accent-strong); font: inherit; font-size: var(--fs-sm); font-weight: 600; cursor: pointer; max-width: 260px; }
    .ctx-btn:hover, .ctx-btn[aria-expanded="true"] { box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent) 18%, transparent); }
    .ctx-btn { position: relative; }
    .ctx-n { top: -6px; right: -4px; }
    .cd-campo[hidden] { display: none; }
    /* multi-cliente: o seletor de contexto do topo já leva à Plataforma, então o ícone do escudo no cartão de módulos sai */
    html[data-multicliente="1"] .modulo-plat { display: none !important; }
    /* a Gestão da Plataforma não tem módulos: no multi-cliente (onde o seletor do topo troca de contexto) o botão "Módulos" some nela */
    html[data-multicliente="1"][data-modulo="plataforma"] .modulo-btn { display: none; }
    .ctx-btn svg { width: 15px; height: 15px; flex: none; }
    .ctx-nome { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .ctx-menu { position: absolute; right: 0; top: calc(100% + 8px); z-index: 60; min-width: 300px; max-height: 70vh; overflow: auto; padding: 6px; background: var(--surface); border: 1px solid var(--border); border-radius: 14px; box-shadow: 0 16px 40px rgba(0, 0, 0, .18); }
    .ctx-menu[hidden] { display: none; }
    .ctx-cab { padding: 8px 10px 4px; font-size: var(--fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--text-mut); }
    .ctx-item { display: flex; align-items: center; gap: 10px; width: 100%; padding: 9px 10px; border: 0; border-radius: 10px; background: none; color: var(--text); text-align: left; font: inherit; cursor: pointer; }
    .ctx-item:hover { background: var(--surface-2); }
    .ctx-item.on { background: var(--accent-soft); }
    .ctx-item svg { width: 18px; height: 18px; flex: none; color: var(--accent-strong); }
    .ctx-mods { display: inline-flex; gap: 5px; margin-left: 8px; vertical-align: middle; } .ctx-mods img { width: 18px; height: 18px; border-radius: 5px; object-fit: cover; }
    .ctx-item b { display: block; font-size: var(--fs-sm); } .ctx-item small { display: block; font-size: var(--fs-xs); color: var(--text-mut); margin-top: 1px; }
    .mc-lin.inativo { opacity: .6; }
    .mc-n b { display: block; } .mc-n small { display: block; color: var(--text-mut); font-size: var(--fs-xs); margin-top: 2px; }
    .mc-bloqueio { position: fixed; inset: 0; z-index: 9999; display: grid; place-items: center; background: color-mix(in srgb, var(--surface) 92%, transparent); backdrop-filter: blur(6px); }
    .mc-bloqueio-cx { max-width: 420px; padding: 28px; text-align: center; background: var(--surface); border: 1px solid var(--border); border-radius: 16px; box-shadow: 0 20px 60px rgba(0,0,0,.2); }
    .mc-bloqueio-cx h2 { margin-bottom: 8px; } .mc-bloqueio-cx p { color: var(--text-dim); margin-bottom: 16px; }
    .us-acoes { display: flex; justify-content: flex-end; gap: 8px; }
    .us-entrar { border: 0; background: transparent; cursor: pointer; padding: 0; font: inherit; }
    .us-lin .us-entrar:hover, .us-lin .us-entrar:focus-visible { background: var(--accent); color: #fff; }
    html[data-perfil="trialsystem"] .us-entrar { display: none !important; }
    .us-lin .dl-abrir { opacity: .5; }
    .us-lin:hover .dl-abrir { opacity: 1; background: var(--accent-soft); color: var(--accent); }
    @media (max-width: 1250px) { .us-cab, .us-lin { grid-template-columns: 44px minmax(120px, 1fr) 120px minmax(140px, 1.3fr) 84px 70px 64px; } .us-cab > :nth-child(5), .us-cab > :nth-child(7), .us-lin > .us-tel, .us-lin > .us-acesso { display: none; } }

    /* Notificações: ficam até serem marcadas como vistas e excluídas */
    .log-acoes { flex-shrink: 0; display: flex; gap: 8px; padding: 4px 20px 10px; }
    .log-acoes[hidden] { display: none; }
    .log-acao-btn { font: inherit; font-size: var(--fs-xs); font-weight: 600; padding: 6px 12px; border-radius: 8px; cursor: pointer; border: 1px solid var(--border); background: var(--surface); color: var(--text-dim); transition: background .2s, color .2s, border-color .2s; }
    .log-acao-btn:hover:not(:disabled) { background: var(--accent-soft); border-color: var(--accent-border); color: var(--accent-strong); }
    .log-acao-btn:disabled { opacity: .45; cursor: default; }
    .log-lado { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; }
    .log-qtd { margin-left: 8px; font-size: var(--fs-xs); font-weight: 700; color: var(--text-mut); }
    .log-btn { width: 30px; height: 30px; border-radius: 8px; border: 1px solid var(--border); background: var(--surface); color: var(--text-dim); display: grid; place-items: center; cursor: pointer; transition: background .2s, color .2s, border-color .2s; }
    .log-btn svg { width: 15px; height: 15px; }
    .log-btn.ok:hover { background: var(--ok-bg); color: var(--ok); border-color: var(--ok-fill); }
    .log-btn.del:hover { background: var(--danger-bg); color: var(--danger); border-color: var(--danger-fill); }
    .log-item.vista .log-txt, .log-item.vista .log-ic, .log-item.vista .log-hora { opacity: .55; }

    /* ═══ Requisições (chamados) — só o cargo system; tudo aqui é propositalmente ALTO ═══ */
    .pl-largo { width: min(620px, 100vw); }
    .modulo-plat { position: relative; }
    .modulo-plat-n { position: absolute; top: -6px; right: -6px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; background: var(--danger-fill); color: #fff; font-size: 11px; font-weight: 800; display: grid; place-items: center; box-shadow: 0 0 0 2px var(--surface); animation: rqBatida 1.3s ease-in-out infinite; }
    .modulo-plat-n[hidden] { display: none; }
    .modulo-plat-n.so-normal { background: var(--info-fill); animation: none; }   /* só normais: azul e parada (a vermelha que pulsa é de alta prioridade) */
    @keyframes rqBatida { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.22); } }
    @keyframes rqPisca { 0%, 100% { opacity: 1; } 50% { opacity: .55; } }

    /* Balão de alta prioridade: o mesmo cartão dos avisos do sistema (.toast), só que no topo e fixo — flutua sobre a tela,
       não ocupa espaço nem empurra o layout. Fica enquanto houver requisição sem atendimento (não se fecha no clique). */
    .rq-faixa {
      --t-cor: var(--danger-fill);
      position: fixed; top: 14px; left: 50%; transform: translateX(-50%); z-index: 310; overflow: hidden;
      display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; gap: 12px; align-items: center;
      width: min(460px, calc(100vw - 24px)); padding: 11px 12px 11px 11px;
      background: color-mix(in srgb, var(--surface) 94%, transparent);
      -webkit-backdrop-filter: blur(14px) saturate(1.3); backdrop-filter: blur(14px) saturate(1.3);
      border: 1px solid color-mix(in srgb, var(--t-cor) 45%, var(--border)); border-radius: 16px;
      box-shadow: 0 16px 38px rgba(23, 26, 43, .22), 0 2px 8px rgba(23, 26, 43, .1), 0 0 0 3px color-mix(in srgb, var(--t-cor) 14%, transparent);
      animation: rqFaixaIn .34s cubic-bezier(.2, 1.1, .3, 1), rqFaixaAnel 2.6s ease-in-out .5s infinite;
    }
    .rq-faixa::before { content: ''; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(100deg, color-mix(in srgb, var(--t-cor) 14%, transparent), transparent 55%); }
    .rq-faixa[hidden] { display: none; }
    @keyframes rqFaixaIn { from { opacity: 0; transform: translate(-50%, -18px) scale(.94); } }
    @keyframes rqFaixaAnel { 50% { box-shadow: 0 16px 38px rgba(23, 26, 43, .22), 0 2px 8px rgba(23, 26, 43, .1), 0 0 0 6px color-mix(in srgb, var(--t-cor) 22%, transparent); } }
    .rq-sirene { position: relative; width: 34px; height: 34px; border-radius: 11px; background: var(--t-cor); color: #fff; display: grid; place-items: center; box-shadow: 0 4px 12px color-mix(in srgb, var(--t-cor) 42%, transparent); animation: rqBatida 1s ease-in-out infinite; }
    .rq-sirene svg { width: 19px; height: 19px; }
    .rq-faixa-txt { position: relative; min-width: 0; }
    .rq-faixa-tit { font-size: var(--fs-sm); font-weight: 700; color: var(--text); line-height: 1.3; }
    .rq-faixa-det { margin-top: 1px; font-size: var(--fs-xs); line-height: 1.4; color: var(--text-dim); }
    .rq-faixa-det b { color: var(--danger); }
    .rq-faixa-btn { position: relative; font: inherit; font-size: var(--fs-xs); font-weight: 700; white-space: nowrap; padding: 7px 13px; border-radius: 9px; cursor: pointer; border: 1px solid var(--t-cor); background: var(--t-cor); color: #fff; transition: transform .15s, filter .15s; }
    .rq-faixa-btn:hover { transform: scale(1.04); filter: brightness(1.08); }
    @media (max-width: 640px) { .rq-faixa { top: 10px; width: calc(100vw - 20px); } }

    .rq-alerta-veu { position: fixed; inset: 0; z-index: 400; display: grid; place-items: center; padding: 20px; background: rgba(120, 12, 8, .55); backdrop-filter: blur(4px); animation: rqVeu .25s ease; }
    @keyframes rqVeu { from { opacity: 0; } }
    .rq-alerta { width: 100%; max-width: 480px; text-align: center; padding: 30px 30px 24px; background: var(--surface); border-radius: 22px; border-top: 8px solid var(--danger-fill); box-shadow: 0 0 0 4px rgba(220, 58, 48, .35), 0 30px 90px rgba(0,0,0,.45); animation: rqAlertaEntra .5s var(--ease), rqTreme 4s ease-in-out .6s infinite; }
    @keyframes rqAlertaEntra { from { transform: scale(.85) translateY(20px); opacity: 0; } }
    @keyframes rqTreme { 0%, 90%, 100% { transform: none; } 92% { transform: translateX(-5px); } 94% { transform: translateX(5px); } 96% { transform: translateX(-4px); } 98% { transform: translateX(3px); } }
    .rq-alerta-ico { width: 64px; height: 64px; margin: 0 auto 10px; border-radius: 50%; background: var(--danger-fill); color: #fff; display: grid; place-items: center; animation: rqBatida 1s ease-in-out infinite; }
    .rq-alerta-ico svg { width: 34px; height: 34px; }
    .rq-alerta-alta { font-size: var(--fs-xs); font-weight: 800; letter-spacing: .14em; color: var(--danger); animation: rqPisca 1s infinite; }
    .rq-alerta h2 { font-size: 22px; margin: 4px 0 2px; letter-spacing: -.015em; }
    .rq-alerta-quem { color: var(--text-mut); font-size: var(--fs-sm); }
    .rq-alerta blockquote { margin: 14px 0 6px; padding: 12px 14px; text-align: left; background: var(--danger-soft); border-left: 4px solid var(--danger-fill); border-radius: 8px; font-size: var(--fs-md); line-height: 1.5; }
    .rq-alerta-mais { font-size: var(--fs-sm); color: var(--danger); margin-top: 8px; }
    .rq-alerta-acoes { display: flex; gap: 8px; margin-top: 18px; }
    .rq-alerta-acoes .cd-b { flex: 1; justify-content: center; padding: 11px 10px; }
    .rq-btn-forte { flex: 1.5 !important; background: var(--danger-fill) !important; border-color: var(--danger-fill) !important; color: #fff !important; font-weight: 800; }
    .rq-alerta-link { margin-top: 12px; border: none; background: none; color: var(--text-mut); font: inherit; font-size: var(--fs-xs); text-decoration: underline; cursor: pointer; }

    .rq-kpis { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; margin-bottom: 14px; }
    .rq-kpi { display: flex; flex-direction: column; gap: 2px; text-align: left; padding: 14px 16px; border-radius: 14px; border: 1px solid var(--border); background: var(--surface); font: inherit; cursor: pointer; transition: transform .2s, box-shadow .2s; }
    .rq-kpi:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(23,26,43,.1); }
    .rq-kpi .k { font-size: var(--fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--text-mut); }
    .rq-kpi .v { font-size: 30px; font-weight: 800; line-height: 1.1; letter-spacing: -.02em; }
    .rq-kpi .s { font-size: var(--fs-xs); color: var(--text-mut); }
    .rq-kpi.danger { background: var(--danger-soft); border-color: var(--danger-fill); } .rq-kpi.danger .v, .rq-kpi.danger .k { color: var(--danger); }
    .rq-kpi.info { background: var(--info-soft); border-color: var(--info-bg); } .rq-kpi.info .v { color: var(--info); }
    .rq-kpi.warn { background: var(--warn-soft); border-color: var(--warn-bg); } .rq-kpi.warn .v { color: var(--warn); }
    .rq-kpi.ok { background: var(--ok-soft); border-color: var(--ok-bg); } .rq-kpi.ok .v { color: var(--ok); }
    .rq-kpi.neutro { cursor: default; }
    .rq-kpi.pulsa { animation: rqPulsoKpi 1.6s ease-in-out infinite; }
    @keyframes rqPulsoKpi { 0%, 100% { box-shadow: 0 0 0 0 rgba(220,58,48,.45); } 50% { box-shadow: 0 0 0 8px rgba(220,58,48,0); } }

    .rq-barra { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; }
    .rq-abas .subtab .n { margin-left: 4px; opacity: .7; font-weight: 700; }
    .rq-filtros { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 12px; }
    .rq-filtros-dir { margin-left: auto; display: flex; gap: 8px; }
    .rq-bulk { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 10px 14px; margin-bottom: 10px; border-radius: 12px; background: var(--accent-soft); border: 1px solid var(--accent-border); }
    .rq-bulk[hidden] { display: none; }
    .rq-bulk b { margin-right: 6px; }

    .rq-lista { display: flex; flex-direction: column; gap: 8px; }
    .rq-cab-lista, .rq-lin { display: grid; grid-template-columns: 28px 130px minmax(140px, 1fr) minmax(160px, 2fr) 110px 130px 130px; gap: 12px; align-items: center; }
    .rq-cab-lista { padding: 0 14px; font-size: var(--fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--text-mut); }
    .rq-lin { padding: 12px 14px; border-radius: 12px; border: 1px solid var(--border); border-left: 5px solid var(--border); background: var(--surface); cursor: pointer; transition: transform .2s, box-shadow .2s; }
    .rq-lin:hover { transform: translateX(3px); box-shadow: 0 6px 18px rgba(23,26,43,.09); }
    .rq-lin.urgente { border-left-color: var(--danger-fill); } .rq-lin.alta { border-left-color: var(--warn-fill); } .rq-lin.normal { border-left-color: var(--info-fill); }
    .rq-lin.st-aberta { background: var(--danger-soft); }
    .rq-lin.critico { animation: rqPulsoKpi 1.6s ease-in-out infinite; }
    .rq-lin.st-resolvida { opacity: .7; }
    .rq-proto { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; }
    .rq-quem { display: flex; flex-direction: column; min-width: 0; }
    .rq-quem small { color: var(--text-mut); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .rq-quem b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .rq-msg { color: var(--text-dim); overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; font-size: var(--fs-sm); }
    .rq-espera { font-size: var(--fs-sm); font-weight: 600; }
    .rq-lin.critico .rq-espera { color: var(--danger); }
    .rq-resp { display: flex; align-items: center; gap: 6px; font-size: var(--fs-sm); min-width: 0; }
    .rq-resp em { color: var(--text-mut); }
    .rq-av { width: 22px; height: 22px; border-radius: 50%; background: var(--accent); color: #fff; font-style: normal; font-size: 11px; font-weight: 700; display: grid; place-items: center; flex: none; }
    .rq-chk { display: grid; place-items: center; }
    @media (max-width: 1000px) { .rq-kpis { grid-template-columns: repeat(2, 1fr); } .rq-cab-lista { display: none; } .rq-lin { grid-template-columns: 28px 1fr 1fr; } .rq-msg { grid-column: 2 / -1; } }

    .rq-det { display: flex; flex-direction: column; gap: 14px; }
    .rq-det-topo { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
    .rq-det-tempo { margin-left: auto; font-size: var(--fs-sm); font-weight: 700; color: var(--text-mut); }
    .rq-det-tempo.critico { color: var(--danger); } .rq-det-tempo.atencao { color: var(--warn); }
    .rq-card { padding: 14px 16px; border: 1px solid var(--border); border-radius: 14px; background: var(--surface); }
    .rq-card-t { font-size: var(--fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--text-mut); margin-bottom: 8px; }
    .rq-quem-g { font-size: var(--fs-lg); font-weight: 700; margin-bottom: 6px; }
    .rq-contato { display: flex; align-items: center; gap: 8px; font-size: var(--fs-sm); padding: 3px 0; flex-wrap: wrap; }
    .rq-contato svg { width: 15px; height: 15px; color: var(--text-mut); }
    .rq-contato a { color: var(--accent-strong); font-weight: 600; text-decoration: none; }
    .rq-contato a:hover { text-decoration: underline; }
    .rq-mini { border: 1px solid var(--border); background: var(--surface-2); border-radius: 7px; padding: 2px 9px; font: inherit; font-size: var(--fs-xs); font-weight: 600; color: var(--text-dim); cursor: pointer; text-decoration: none !important; }
    .rq-mini:hover { background: var(--accent-soft); color: var(--accent-strong) !important; }
    .rq-origem { margin-top: 6px; font-size: var(--fs-xs); color: var(--text-mut); }
    .rq-mensagem { white-space: pre-wrap; line-height: 1.6; font-size: var(--fs-md); padding: 12px 14px; background: var(--surface-2); border-radius: 10px; }
    .rq-resposta-acoes { margin-top: 10px; display: flex; gap: 8px; }
    .rq-resp-linha { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
    .rq-rot { font-size: var(--fs-xs); font-weight: 600; color: var(--text-mut); margin: 10px 0 5px; }
    .rq-seg { flex-wrap: wrap; }
    .rq-historico { display: flex; flex-direction: column; gap: 10px; margin-bottom: 12px; max-height: 260px; overflow-y: auto; }
    .rq-hist { display: flex; gap: 10px; font-size: var(--fs-sm); }
    .rq-hist .ponto { width: 9px; height: 9px; border-radius: 50%; background: var(--text-mut); margin-top: 5px; flex: none; }
    .rq-hist.nota .ponto { background: var(--accent); }
    .rq-hist.nota .t { background: var(--accent-soft); padding: 8px 10px; border-radius: 8px; white-space: pre-wrap; }
    .rq-hist .m { font-size: var(--fs-xs); color: var(--text-mut); margin-top: 2px; }
    @media (prefers-reduced-motion: reduce) { .rq-faixa, .rq-sirene, .rq-alerta, .rq-alerta-ico, .rq-alerta-alta, .rq-kpi.pulsa, .rq-lin.critico, .modulo-plat-n { animation: none !important; } }

    .rq-filtros .sel { flex: 0 0 auto; width: 200px; }

    /* Coleta desconectada (console, tecla C) */
    .live-progress-card.is-desconectada { border-color: var(--warn-fill); background: var(--warn-soft); }
    .live-progress-card.is-desconectada .lp-tag { color: var(--warn); font-weight: 700; }

    /* olho (exibir/ocultar) dos campos de senha dos painéis */
    .pl-senha { position: relative; }
    .pl-senha .cd-in { padding-right: 46px; }
    .pl-olho { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); width: 34px; height: 34px; border: none; background: none; border-radius: 8px; cursor: pointer; color: var(--text-mut); display: grid; place-items: center; }
    .pl-olho:hover { background: var(--surface-2); color: var(--text); }
    .pl-olho svg { width: 18px; height: 18px; }

    /* opção só com o ícone (módulos no cadastro de usuário): o nome vai no balão */
    .cd-chips .cd-chip.cd-chip-img { position: relative; width: 54px; height: 54px; padding: 8px; justify-content: center; border-radius: 15px; border: 2px solid var(--border); background: var(--surface); opacity: .55; filter: grayscale(.7); }
    .cd-chip-img img { width: 100%; height: 100%; object-fit: contain; border-radius: 8px; }
    .cd-chip-img .marca { position: absolute; right: -6px; top: -6px; width: 20px; height: 20px; border-radius: 50%; background: var(--accent); color: #fff; display: grid; place-items: center; opacity: 0; transform: scale(.5); transition: all .3s var(--ease); }
    .cd-chip-img .marca svg { width: 12px; height: 12px; }
    .cd-chips .cd-chip.cd-chip-img:hover { opacity: .9; filter: none; }
    .cd-chips .cd-chip.cd-chip-img.on { opacity: 1; filter: none; background: var(--surface); border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
    .cd-chip-img.on .marca { opacity: 1; transform: none; }

    /* seletor de idioma (bandeiras) — menu do perfil e tela de login */
    .idiomas { display: flex; gap: 8px; }
    .idioma-op { width: 30px; height: 30px; padding: 0; border-radius: 50%; border: 2px solid transparent; background: none; cursor: pointer; display: grid; place-items: center; opacity: .55; filter: grayscale(.5); transition: opacity .25s, filter .25s, transform .25s var(--ease), border-color .25s; }
    .idioma-op img { width: 100%; height: 100%; border-radius: 50%; display: block; }
    .idioma-op:hover { opacity: 1; filter: none; transform: translateY(-1px) scale(1.06); }
    .idioma-op.on { opacity: 1; filter: none; border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent-soft); }
    .usr-idioma { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 16px; border-bottom: 1px solid var(--border); margin: 0 0 6px; font-size: var(--fs-sm); color: var(--text-dim); font-weight: 600; }
    .lg-idiomas { position: fixed; top: 16px; right: 22px; z-index: 3; animation: lgSobe .8s var(--ease) .7s backwards; }

    /* selo "beta" do seletor de idioma: a tradução ainda não cobre tudo */
    .beta-tag { display: inline-block; font-style: normal; font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; padding: 2px 7px; border-radius: 999px; background: var(--warn-bg); color: var(--warn); vertical-align: middle; }
    .lg-idiomas { display: flex; align-items: center; gap: 10px; }
    .usr-idioma > span { white-space: nowrap; }
    .usr-idioma { padding-left: 12px; padding-right: 12px; gap: 8px; }
    .usr-idioma .idiomas { gap: 6px; }
    .usr-idioma .idioma-op { width: 26px; height: 26px; }

    /* card "Conclusão das unidades": anel + % alinhados à esquerda como os outros cards; legenda em 3 colunas, numa linha só */
    .rs-kpi-anel .rs-anel-caixa { flex: 1; justify-content: flex-start; gap: 24px; margin-top: 4px; }
    .rs-kpi-anel .rs-anel { width: 104px; height: 104px; }
    .rs-kpi-anel .rs-anel-txt .v { font-size: 44px; }
    .rs-kpi-anel .rs-anel-centro b { font-size: 19px; }
    .rs-kpi-anel .rs-anel-centro small { font-size: 11px; }
    .rs-kpi-anel .rs-legenda { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 10px; margin-top: 10px; }
    .rs-kpi-anel .rs-legenda span { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
    .rs-kpi-anel .rs-legenda b { font-size: 17px; line-height: 1.1; }
    .rs-kpi-anel .rs-legenda em { font-style: normal; display: inline-flex; align-items: center; gap: 6px; color: var(--text-dim); }

    /* excluir requisição resolvida (dois cliques) */
    .rq-excluir { display: flex; align-items: center; gap: 12px; margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--border); }
    .rq-excluir small { color: var(--text-mut); font-size: var(--fs-xs); }
    .cd-b.perigo.confirmando { background: var(--danger-fill); border-color: var(--danger-fill); color: #fff; animation: rqPisca 1s infinite; }

    /* ═══ Plataforma › Console: o console real do servidor + controles ═══ */
    .cn-painel { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-bottom: 14px; }
    .cn-cartao { display: flex; flex-direction: column; gap: 6px; align-items: flex-start; padding: 14px 16px; border: 1px solid var(--border); border-radius: 14px; background: var(--surface); box-shadow: inset 4px 0 0 var(--border-strong); }
    .cn-cartao.srv { box-shadow: inset 4px 0 0 var(--accent); }
    .cn-cartao.ok { box-shadow: inset 4px 0 0 var(--ok-fill); }
    .cn-cartao.aviso { box-shadow: inset 4px 0 0 var(--warn-fill); background: var(--warn-soft); }
    .cn-c-t { font-size: var(--fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--text-mut); }
    .cn-c-v { display: flex; align-items: center; gap: 8px; font-size: var(--fs-lg); font-weight: 700; }
    .cn-c-v small { font-size: var(--fs-xs); font-weight: 600; color: var(--text-mut); }
    .cn-c-s { font-size: var(--fs-sm); color: var(--text-dim); }
    .cn-cartao .cd-b { margin-top: auto; }
    .cn-luz { width: 9px; height: 9px; border-radius: 50%; background: var(--ok-fill); box-shadow: 0 0 0 3px color-mix(in srgb, var(--ok-fill) 25%, transparent); flex: none; }
    .cn-luz.off, .cn-origem.off .cn-luz { background: var(--danger-fill); box-shadow: 0 0 0 3px color-mix(in srgb, var(--danger-fill) 25%, transparent); }
    .cn-barra { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
    .cn-origem { display: inline-flex; align-items: center; gap: 8px; margin-right: auto; }
    .cn-origem small { color: var(--text-mut); }
    .cn-q { font-size: var(--fs-xs); color: var(--text-mut); }
    .cn-busca { width: 220px; }
    #cn-seguir.on { background: var(--accent-soft); border-color: var(--accent); color: var(--accent-strong); }
    .cn-terminal {
      height: calc(100vh - 330px); min-height: 300px; overflow: auto; padding: 14px 16px; border-radius: 14px; outline: none;
      background: #14212e; color: #c8ccd4; font: 12.5px/1.5 var(--mono); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .06);
    }
    .cn-terminal:focus-visible { box-shadow: 0 0 0 3px var(--accent-soft); }
    .cn-l { white-space: pre; }
    .cn-terminal::-webkit-scrollbar { width: 10px; } .cn-terminal::-webkit-scrollbar-thumb { background: #33475a; border-radius: 6px; }
    @media (max-width: 1000px) { .cn-painel { grid-template-columns: 1fr; } }

