/* gcs-ui.css · v20260924a · GCS RegTech · 24/09/2026
   ---------------------------------------------------------------------------------------------------------------
   Motivo: em 24/09/2026 o Boss aprovou o redesenho de "Dados Cadastrais da Gestora" (gestora-cadastro.js
   v20260924d) e pediu o mesmo padrão no sistema inteiro ("replique para o resto do sistema" e "aprimoramentos
   nesse sentido"). Esta camada leva o padrão da gestora às classes que as telas já usam (.page-head, .card, .kpi,
   table, .btn, .badge, modais e diálogos), sem reescrever tela nenhuma. Substitui a identidade.css e o
   identidade.js da onda 2 (a parte B abaixo é a identidade adaptada).
   Especificação: design_sistema/spec/GCS_UI_SPEC.md, com as 19 correções da revisão adversária (seção 10).

   Interruptor: TUDO aqui vale só com a classe gcs-ui no <html> (posta pelo gcs-ui.js quando este arquivo carrega).
     . tokens --rt-*, componentes rt-*, identidade, padrão da gestora, ajustes por tela, celular e impressão;
     . a única regra que olha a ausência da classe esconde os realces ([data-rt-realce]) com a camada desligada;
     . @keyframes e @page são nomes (usados só por regras sob html.gcs-ui).
   Desligar: gcsUI.desligar() no console (só esta aba) ou localStorage.setItem('gcs_ui_off','1') (só este navegador).

   Nada aqui alcança div.__lamHost (lâmina do cotista e carta mensal, levadas a PDF pelo html2canvas): toda regra
   das partes D e E começa em #main-content, .modal, .drawer, .ui-modal ou no escopo de diálogo, que exclui o host
   pelo nome; as regras globais da parte B trazem :not(.__lamHost, .__lamHost *) e a seção 1b devolve ao host as
   variáveis e o corpo de texto do index.

   Partes: A tokens · B identidade da onda 2 adaptada · C componentes rt-* (marcação nova e realces)
           · D o sistema no padrão da gestora · E por tela (html[data-rt-rota]) · F celular, impressão, movimento.
   Contraste: WCAG AA (texto 4,5:1; texto grande, contorno de campo e foco 3:1). Mínimo de 11 px, fora gráficos,
   lâmina e a grade de Parcelas (table.cvx-grid, exceção aprovada em 23/09/2026).
   Escopo de diálogo (spec 3.4): .modal, .drawer, .ui-modal e os diálogos montados com estilo inline
   (position:fixed + inset:0, nas duas grafias: a do HTML e a que o style.cssText escreve).
   Revisão visual de 27/09/2026 (Fundos e Clientes): painel com tabela rola por dentro e, até 900 px, painéis empilham
   (D2 e F; Risco de Liquidez em 390); faixa de 5 caixas em 3 ou 2 colunas (F; CADM em 390); dinheiro sem reticências
   (D3 e gcs-ui.js); título branco em cabeçalho escuro de diálogo (D9); VaR sem vermelho fixo (E9); ficha do Cliente 360
   em 2 x 2 abaixo de 1400 px (E10).
   Revisão visual r2 de 27/09/2026 (todas as áreas): filho de grade encolhe só em grade de painéis, nunca em linha com
   trilha "auto" (D2; Lista do Calendário, e no celular a linha vira duas em E13); campo inativo vence a regra de campo
   (D8); um só rótulo nos diálogos e título de diálogo inline em Playfair (D8); título branco também no degradê escrito
   com variável (D9; mudança normativa e Treinamentos); linha e cartão apagados por opacidade inline voltam a 1 e ficam
   cinza (D4, D14); nowrap do app respeitado na célula de ações, Fundos com até 2 botões por linha (D4); apagar em
   vermelho (D5); quadro de Operações de crédito (E3); coluna fixa da grade de Parcelas (E5); Contrapartes (E11);
   Segurança e Autenticação de e-mail (7b e E12).
   Confirmação de 27/09/2026 (r3, Crédito e Compliance): o <label> que é botão fica fora da regra de rótulo ("+ anexar"
   da gaveta da operação, D8); os cinco níveis do selo de Risco com a mesma forma (D6); a grade de Parcelas fora da regra
   de mono (seção 3); respiro lateral de 8 px na tabela da aba Originação entre 901 e 1320 px (E11). E três acertos
   pequenos: título de Políticas em 22 px no celular e piso de 20 px no valor do KPI no celular (F); rótulos de campo do
   diálogo de mudança normativa no rótulo único (D8).
   --------------------------------------------------------------------------------------------------------------- */

/* =====================================================================================
   A. TOKENS (atrás do interruptor, como todo o resto: só nomes novos --rt-*, que nada do index nem da lâmina usa)
   Paleta e tipografia oficiais da identidade (onda 2); forma, ritmo e escala da página da gestora.
   Contraste conferido com gcs_ui/contraste.js (WCAG 2.x).
   ===================================================================================== */
html.gcs-ui {
  /* marca */
  --rt-navy:            #0F1B2D;   /* texto principal 17,28:1; primário; superfícies escuras */
  --rt-navy-2:          #1E3049;   /* links, hover do primário, fim do degradê 13,34:1 */
  --rt-ouro:            #A98A4F;   /* filetes, barras, bordas. Nunca texto pequeno no claro (3,26:1) */
  --rt-ouro-claro:      #C9B183;   /* texto e foco sobre navy (8,31:1) */
  --rt-ouro-texto:      #7E673B;   /* texto dourado no claro e FOCO no claro (5,40 branco; 4,86 página) */
  --rt-ouro-tinta:      #F5F1EA;   /* fundo de ícone de seção e de etiqueta dourada */
  --rt-ouro-tinta-2:    #EEE8DC;
  --rt-ouro-a06:        rgba(169,138,79,.06);
  --rt-ouro-a12:        rgba(169,138,79,.12);
  --rt-ouro-a25:        rgba(169,138,79,.25);
  --rt-ouro-claro-a35:  rgba(201,177,131,.35);
  --rt-cinza:           #5B6675;   /* texto secundário: rótulo, metadado, nota (5,83 branco; 5,25 página) */
  --rt-cinza-claro:     #98A2B1;   /* só decorativo no claro; texto sobre navy (6,70:1) */
  --rt-icone:           #8391A5;   /* traço de ícone em repouso (nunca texto) */

  /* superfícies e linhas */
  --rt-pagina:          #F2F3F6;   /* fundo do app (o mesmo do neo-soft e da lâmina) */
  --rt-sup:             #FFFFFF;   /* cartão */
  --rt-sup-2:           #F7F9FB;   /* faixa de ferramentas, cabeçalho de tabela, hover */
  --rt-zebra:           #FAFBFC;
  --rt-linha:           #E6EAF0;   /* borda de cartão e divisória (decorativa) */
  --rt-linha-2:         #C9D2DD;   /* borda em hover */
  --rt-campo-borda:     #858F9E;   /* contorno de campo: 3,27 no branco, 3,10 na faixa (WCAG 1.4.11) */
  --rt-placeholder:     #6B7686;   /* 4,60:1 */

  /* estados (texto sobre a própria tinta, todos acima de 5:1) */
  --rt-ok:        #137048;  --rt-ok-tinta:     #E8F4EE;
  --rt-alerta:    #7A5E18;  --rt-alerta-tinta: #FBF4E2;
  --rt-crit:      #A13B40;  --rt-crit-tinta:   #FBEDEE;
  --rt-info:      #1D4E89;  --rt-info-tinta:   #E8F1FB;
  --rt-neutra:    #475569;  --rt-neutra-tinta: #EEF1F5;
  --rt-roxa:      #5B3A87;  --rt-roxa-tinta:   #F1ECF7;

  /* tipografia */
  --rt-serif: 'Playfair Display', Georgia, 'Times New Roman', serif;
  --rt-sans:  'Archivo', Inter, system-ui, -apple-system, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
  --rt-mono:  'JetBrains Mono', ui-monospace, Menlo, Consolas, monospace;
  --rt-fs-min:   11px;    /* etiqueta, contador, cabeçalho de tabela */
  --rt-fs-meta:  12px;    /* rótulo, metadado, botão pequeno */
  --rt-fs-btn:   12.5px;  /* botão, corpo pequeno */
  --rt-fs-corpo: 13.5px;  /* corpo, valor, título de linha */
  --rt-fs-bloco: 14px;    /* título de cartão */
  --rt-fs-secao: 15px;    /* título de seção fora de cartão */
  --rt-fs-hero:  24px;    /* nome no cartão de identidade */
  --rt-fs-titulo: 28px;   /* título de página (22px no celular) */

  /* forma */
  --rt-r-cartao: 14px; --rt-r-lg: 12px; --rt-r-menu: 10px; --rt-r-ctl: 8px; --rt-r-sm: 6px; --rt-r-pilula: 999px;
  --rt-sh-cartao: 0 1px 2px rgba(15,23,42,.04);
  --rt-sh-pop:    0 12px 32px rgba(15,23,42,.12);
  --rt-sh-modal:  0 24px 64px rgba(15,23,42,.22);
  --rt-anel:      0 0 0 3px rgba(169,138,79,.22);
  --rt-foco:      2px solid var(--rt-ouro-texto);
  --rt-foco-escuro: 2px solid var(--rt-ouro-claro);

  /* ritmo (múltiplos de 2, âncoras 4 8 12 16 18 24) */
  --rt-e1: 4px; --rt-e2: 8px; --rt-e3: 12px; --rt-e4: 16px; --rt-e5: 18px; --rt-e6: 24px;
  --rt-cab-mb: 18px;      /* cabeçalho de página até o conteúdo */
  --rt-gap: 16px;         /* entre cartões */
  --rt-pad: 18px;         /* respiro lateral de cartão, seção, lista */

  /* alturas */
  --rt-h-ctl: 34px; --rt-h-ctl-sm: 30px; --rt-h-campo: 36px; --rt-h-ic: 28px;

  /* movimento */
  --rt-t: .15s;
}

/* =====================================================================================
   B. IDENTIDADE DA ONDA 2 (adaptada; atrás do interruptor)
   ===================================================================================== */
/* =====================================================================================
   1. VARIÁVEIS: paleta oficial e mapa das variáveis antigas (bloco único)
   ===================================================================================== */
html.gcs-ui {
  /* paleta oficial */
  /* derivados da paleta (mesmo matiz, só para cumprir contraste ou fazer fundo) */
  /* fontes */

  /* ---- mapa das variáveis antigas ---- */
  /* fontes (brand-typography, cgc-inspired-theme, gcs-typography-unified) */
  --font-serif:      var(--rt-serif);
  --font-sans:       var(--rt-sans);
  --font-mono:       var(--rt-mono);
  --gcs-font:        var(--rt-sans);
  --gcs-font-serif:  var(--rt-serif);
  --gcs-font-mono:   var(--rt-mono);

  /* navy (bloco base, brand-typography, gcs-depth-upgrade) */
  --navy-900:        var(--rt-navy);
  --navy-800:        var(--rt-navy);
  --navy-700:        var(--rt-navy-2);
  --navy-600:        var(--rt-navy-2);
  --pb-navy:         var(--rt-navy);
  --pb-navy-deep:    var(--rt-navy);
  --pb-navy-soft:    var(--rt-navy-2);
  --gcs-navy:        var(--rt-navy);
  --gcs-navy-2:      var(--rt-navy-2);
  --gcs-navy-3:      var(--rt-navy-2);

  /* dourado (bloco base B8860B/DAA520, brand-typography e master C9A961, depth B8975A) */
  --gold:            var(--rt-ouro);
  --gold-bright:     var(--rt-ouro-claro);
  --gold-50:         var(--rt-ouro-tinta);
  --gold-100:        var(--rt-ouro-tinta-2);
  --pb-gold:         var(--rt-ouro);
  --pb-gold-bright:  var(--rt-ouro-claro);
  --pb-gold-deep:    var(--rt-ouro-texto);
  --pb-gold-tint:    var(--rt-ouro-tinta);
  --gcs-gold:        var(--rt-ouro);
  --gcs-gold-2:      var(--rt-ouro);
  --gcs-gold-soft:   var(--rt-ouro-tinta);
  --shadow-gold:     0 4px 16px var(--rt-ouro-a25);
  --ring:            0 0 0 3px rgba(169,138,79,.35);

  /* texto (bloco base, brand-typography, master) */
  --text-900:        var(--rt-navy);
  --text-700:        var(--rt-navy-2);
  --text-500:        var(--rt-cinza);
  --text-400:        var(--rt-cinza);        /* era 98A2B1 (2,58:1): o index usa --text-400 como cor de texto */
  --gcs-text:        var(--rt-navy);
  --gcs-text-2:      var(--rt-cinza);
  --gcs-text-3:      var(--rt-cinza);        /* era 94A3B8 (2,5:1) em rótulos e estados vazios */
  --gcs-text-muted:  var(--rt-cinza-claro);  /* placeholders e rótulos decorativos */
  --pb-slate-900:    var(--rt-navy);
  --pb-slate-700:    var(--rt-navy-2);
  --pb-slate-500:    var(--rt-cinza);
  --pb-slate-300:    var(--rt-cinza-claro);

  /* ficam como estão, de propósito: superfícies e bordas do neo-soft (--bg F2F3F6 é o mesmo fundo
     do modelo da lâmina), semânticas crit/warn/ok e azul de informação (--azul-*). */
}


/* =====================================================================================
   1b. LÂMINA DO COTISTA E CARTA MENSAL: ficam como estão nesta onda (decisão de 19/09/2026)
   O html2canvas desenha o div.__lamHost dentro do documento do app, com as regras do index.
   As variáveis do bloco 1 são herdadas: aqui elas voltam, dentro da lâmina, aos valores
   efetivos do index de 19/09/2026 (extraídos dos blocos :root/html na ordem da cascata), e o
   corpo de texto volta ao do body original (espaçamento, recursos da Inter, síntese).
   ===================================================================================== */
html.gcs-ui .__lamHost {
  --gold:            #B8860B;
  --gold-bright:     #DAA520;
  --gold-50:         #FAF5E6;
  --gold-100:        #F4E5B8;
  --navy-900:        #0A1A2E;
  --navy-800:        #0D2137;
  --navy-700:        #14304A;
  --navy-600:        #1B3D5C;
  --text-900:        #0F172A;
  --text-700:        #334155;
  --text-500:        #64748B;
  --text-400:        #94A3B8;
  --pb-navy:         #0A1F3D;
  --pb-navy-deep:    #061429;
  --pb-navy-soft:    #1B3D5C;
  --pb-gold:         #C9A961;
  --pb-gold-bright:  #D4B96E;
  --pb-gold-deep:    #A8843D;
  --pb-gold-tint:    #F5EDD8;
  --pb-slate-300:    #CBD5E1;
  --pb-slate-500:    #64748B;
  --pb-slate-700:    #334155;
  --pb-slate-900:    #0F172A;
  --font-serif:      'Playfair Display', Georgia, serif;
  --font-sans:       'Inter Tight', 'Inter', system-ui, sans-serif;
  --font-mono:       'JetBrains Mono', 'Menlo', monospace;
  --gcs-text:        #0A0A0A;
  --gcs-text-2:      #475569;
  --gcs-text-3:      #94A3B8;
  --gcs-text-muted:  #CBD5E1;
  --gcs-gold:        #C9A961;
  --gcs-gold-soft:   #F5EDD8;
  --gcs-font:        "Inter Tight", Inter, -apple-system, BlinkMacSystemFont, system-ui, "Segoe UI", Roboto, sans-serif;
  --gcs-font-serif:  "Playfair Display", Georgia, serif;
  --gcs-font-mono:   "JetBrains Mono", "SF Mono", Menlo, Consolas, monospace;
  --gcs-navy:        #0A1628;
  --gcs-navy-2:      #111E33;
  --gcs-navy-3:      #1A2942;
  --gcs-gold-2:      #B8975A;
  --shadow-gold:     0 4px 16px rgba(201,169,97,0.25);
  --ring:            0 0 0 3px rgba(201,169,97,.30);
  letter-spacing: -0.011em !important;
  font-feature-settings: 'cv02', 'cv03', 'cv04', 'cv11', 'tnum' !important;
  font-synthesis: initial !important;
}
:where(html.gcs-ui) .__lamHost { color: var(--gcs-text); }  /* dentro da lâmina --gcs-text volta a 0A0A0A */


/* =====================================================================================
   2. TIPOGRAFIA BASE: Archivo no texto
   A troca de fonte do app inteiro já acontece pelo mapa de variáveis acima, porque a regra
   universal do gcs-typography-unified usa var(--gcs-font). Aqui só o acerto fino do corpo.
   ===================================================================================== */
html.gcs-ui body {
  font-feature-settings: "tnum" 1 !important;   /* tira os cv02/cv03/cv04/cv11, que são da Inter; mantém números tabulares */
  letter-spacing: 0 !important;                 /* o -0.011em era ajuste para Inter */
  /* pesos: Archivo vem em 400/500/600/700 e Playfair em 500/600/700; a mono continua 400/500, e o
     negrito sintético fica desligado para ela não sair "borrada". */
  font-synthesis: style;
}

/* Títulos em Playfair Display */
html.gcs-ui .page-title:not(.__lamHost, .__lamHost *),
html.gcs-ui h1:not(.__lamHost *),
html.gcs-ui h2:not(.section-title):not(.__lamHost *),
html.gcs-ui .login-card h1:not(.__lamHost, .__lamHost *),
html.gcs-ui .drawer-head h3:not(.__lamHost, .__lamHost *),
html.gcs-ui .modal-head h3:not(.__lamHost, .__lamHost *),
html.gcs-ui .ui-modal-t:not(.__lamHost, .__lamHost *),
html.gcs-ui .brand-text strong:not(.__lamHost, .__lamHost *) {
  font-family: var(--rt-serif) !important;
  letter-spacing: -0.005em !important;
}
html.gcs-ui .page-title:not(.__lamHost, .__lamHost *),
html.gcs-ui .login-card h1:not(.__lamHost, .__lamHost *) {
  font-weight: 600 !important;
  color: var(--rt-navy) !important;
}
html.gcs-ui .brand-text strong:not(.__lamHost, .__lamHost *) { font-weight: 600 !important; color: #FFFFFF !important; }

/* Hubs (hubs.js) rebaixam o .page-title de cada tela empilhada a rótulo de seção, em caixa alta.
   Rótulo de seção é texto, não título: volta para Archivo. Tamanho, cor e caixa alta continuam
   vindo do estilo inline do hubs.js. */
html.gcs-ui .page-head[data-gcs-hub="1"] .page-title:not(.__lamHost, .__lamHost *) {
  font-family: var(--rt-sans) !important;
  letter-spacing: .07em !important;
}

/* Rótulos de seção: Archivo 600 em caixa alta, como no modelo da lâmina (navy, espaçado) */
html.gcs-ui .section-title:not(.__lamHost, .__lamHost *),
html.gcs-ui h2.section-title:not(.__lamHost, .__lamHost *),
html.gcs-ui .section-header h3:not(.__lamHost, .__lamHost *) {
  font-family: var(--rt-sans) !important;
  color: var(--rt-navy) !important;
}
html.gcs-ui .section-title:not(.__lamHost, .__lamHost *)::after,
html.gcs-ui h2.section-title:not(.__lamHost, .__lamHost *)::after {
  background: var(--rt-ouro) !important;
  box-shadow: none !important;
}

/* Estilo inline que pede Playfair volta a ser Playfair. Fora da lâmina do cotista: lá o título
   continua como hoje (decisão de 19/09/2026). */
html.gcs-ui [style*="Playfair Display"]:not(.__lamHost, .__lamHost *) {
  font-family: var(--rt-serif) !important;
}
/* Número grande do medidor DMARC (dmarc-cockpit.js) pede Georgia por atributo SVG: vira Playfair */
html.gcs-ui svg [font-family*="Georgia"]:not(.__lamHost, .__lamHost *) {
  font-family: var(--rt-serif) !important;
}


/* =====================================================================================
   3. MONO: JetBrains Mono só onde o código já pede mono
   As classes (.mono, code, pre, kbd, samp, .tabular, td.num, .num, .code) já usam
   var(--gcs-font-mono) no gcs-typography-unified; o rodapé da sidebar e o .nav-badge pedem
   'JetBrains Mono' direto. Nada disso muda.
   Estilo inline com font-family monospace ou var(--font-mono) (68 no index: CNPJ, valores em
   tabela, código MFA, atalhos de teclado) hoje sai em Inter, porque a regra universal com
   !important vence o inline. Com a classe gcs-ui-mono no <html> (ligada no gcs-ui.js,
   constante MONO_INLINE) esses trechos voltam a ser mono.
   Fora a grade de Parcelas (table.cvx-grid, exceção aprovada: fica como está). Na célula Operação a segunda linha pede
   var(--font-mono); em JetBrains Mono ela ia de 256 para 287 px e o selo "dia N" saía 33 px da coluna fixa, por cima do
   selo do primeiro mês, em 12 de 12 linhas (confirmação de 27/09/2026, r3)
   ===================================================================================== */
html.gcs-ui.gcs-ui-mono :is(
  [style*="font-family:monospace"], [style*="font-family: monospace"],
  [style*="font-family:var(--font-mono)"], [style*="font-family: var(--font-mono)"],
  [style*="font-family:ui-monospace"], [style*="font-family: ui-monospace"],
  [style*="font-family:'JetBrains Mono'"], [style*="font-family: 'JetBrains Mono'"]
):not(.__lamHost *):not(.cvx-grid *) {
  font-family: var(--rt-mono) !important;
  font-variant-numeric: tabular-nums;
}


/* =====================================================================================
   4. TOPBAR E SIDEBAR
   ===================================================================================== */
html.gcs-ui .topbar:not(.__lamHost, .__lamHost *) {
  background: linear-gradient(180deg, var(--rt-navy-2) 0%, var(--rt-navy) 100%) !important;
  border-bottom: 1px solid var(--rt-ouro-claro-a35) !important;
}
html.gcs-ui .topbar .brand-text small:not(.__lamHost, .__lamHost *),
html.gcs-ui .topbar .brand small:not(.__lamHost, .__lamHost *),
html.gcs-ui .topbar [class*="role"]:not(.__lamHost, .__lamHost *) {
  color: var(--rt-ouro-claro) !important;
}
html.gcs-ui .topbar .brand-text small:not(.__lamHost, .__lamHost *) {
  font-size: 11px !important;            /* era 9px */
  letter-spacing: .1em !important;       /* era .18em: mais largo não cabe ao lado do logo */
}
html.gcs-ui .user-info .role:not(.__lamHost, .__lamHost *) {
  color: var(--rt-ouro-claro) !important;
  background: rgba(201,177,131,.16) !important;
  font-size: 11px !important;            /* era 9,5px */
}
html.gcs-ui .ui-avatar:not(.__lamHost, .__lamHost *) {
  background: linear-gradient(135deg, var(--rt-ouro-claro), var(--rt-ouro)) !important;
  color: var(--rt-navy) !important;
}
html.gcs-ui .topbar button.logout-btn:not(.__lamHost, .__lamHost *) {
  color: var(--rt-ouro-claro) !important;
  border-color: rgba(201,177,131,.45) !important;
}
html.gcs-ui .topbar button.logout-btn:hover:not(.__lamHost, .__lamHost *) { background: rgba(201,177,131,.16) !important; color: #FFFFFF !important; }
html.gcs-ui .live-badge:not(.__lamHost, .__lamHost *) { font-size: 11px !important; }          /* era 10,5px (sobre navy) */

/* Sidebar */
html.gcs-ui .sidebar .nav-label:not(.__lamHost, .__lamHost *) {
  font-size: 11px !important;                                      /* era 9,5px */
  letter-spacing: .14em !important;
  color: var(--rt-cinza) !important;                           /* era CBD5E1, 1,5:1 */
}
html.gcs-ui .sidebar .nav-item:not(.__lamHost, .__lamHost *) {
  color: var(--rt-navy-2) !important;
}
html.gcs-ui .sidebar .nav-item.nav-sub:not(.__lamHost, .__lamHost *) { color: var(--rt-cinza) !important; }
html.gcs-ui .sidebar .nav-item:hover:not(.__lamHost, .__lamHost *) {
  color: var(--rt-navy) !important;
  background: rgba(15,27,45,.04) !important;
}
html.gcs-ui .sidebar .nav-item.active:not(.__lamHost, .__lamHost *),
html.gcs-ui .sidebar .nav-item.nav-sub.active:not(.__lamHost, .__lamHost *) {
  color: var(--rt-navy) !important;
  background: linear-gradient(90deg, var(--rt-ouro-a12) 0%, rgba(169,138,79,.04) 100%) !important;
  box-shadow: none !important;
}
html.gcs-ui .sidebar .nav-item.active:not(.__lamHost, .__lamHost *)::before { background: var(--rt-ouro) !important; }
html.gcs-ui .sidebar .nav-badge:not(.__lamHost, .__lamHost *),
html.gcs-ui .nav-badge:not(.__lamHost, .__lamHost *) { font-size: 11px !important; }            /* era 9px */
html.gcs-ui .sidebar .sidebar-footer:not(.__lamHost, .__lamHost *),
html.gcs-ui .sidebar-footer:not(.__lamHost, .__lamHost *) {
  font-size: 11px !important;                                      /* era 10,5px */
  color: var(--rt-cinza) !important;                           /* era 94A3B8 */
}

/* Barra inferior do celular (gcs-mob-v3) */
html.gcs-ui #gcs-tabs button:not(.__lamHost, .__lamHost *) { font-size: 11px !important; }      /* era 9,5px */
html.gcs-ui #gcs-tabs button.on:not(.__lamHost, .__lamHost *) { color: var(--rt-navy) !important; }


/* =====================================================================================
   5. SUPERFÍCIES: cartões, KPIs, tabelas, botões, formulários
   (fundo, raio e sombra do neo-soft ficam; muda cor de texto e acento)
   ===================================================================================== */

/* KPIs */
html.gcs-ui .kpi .lbl:not(.__lamHost, .__lamHost *),
html.gcs-ui .kpi .label:not(.__lamHost, .__lamHost *),
html.gcs-ui .kpi > div:first-child:not(.__lamHost, .__lamHost *),
html.gcs-ui .kpi-card .label:not(.__lamHost, .__lamHost *),
html.gcs-ui .kpi-card > div:first-child:not(.__lamHost, .__lamHost *) {
  font-size: 11px !important;                                      /* era 10,5px */
  color: var(--rt-cinza) !important;                           /* era 94A3B8 */
}
html.gcs-ui .kpi .sub:not(.__lamHost, .__lamHost *),
html.gcs-ui .kpi-card .sub:not(.__lamHost, .__lamHost *) { color: var(--rt-cinza) !important; }
/* Texto corrido de cartão (relatorios-compact fixa 475569) passa ao cinza oficial */
html.gcs-ui .card p:not(.__lamHost, .__lamHost *),
html.gcs-ui .card .desc:not(.__lamHost, .__lamHost *) { color: var(--rt-cinza) !important; }
/* "PRONTO" e textos curtos em .val.ok eram C9A961 (2,2:1). No desktop o valor do KPI é texto
   grande (28px, peso 600 do relatorios-luxo): o dourado oficial cabe (3,15:1 sobre FAFBFC). No
   celular (23px, peso 600) não é texto grande: vai o dourado escurecido (regra logo abaixo). */
html.gcs-ui .kpi .val.ok:not(.__lamHost, .__lamHost *),
html.gcs-ui .kpi-card .val.ok:not(.__lamHost, .__lamHost *) { color: var(--rt-ouro) !important; }
@media (max-width: 900px) {
  html.gcs-ui .kpi .val.ok:not(.__lamHost, .__lamHost *),
  html.gcs-ui .kpi-card .val.ok:not(.__lamHost, .__lamHost *) { color: var(--rt-ouro-texto) !important; }
}

/* Tabelas */
html.gcs-ui th:not(.__lamHost, .__lamHost *, .cvx-grid th),
html.gcs-ui table thead th:not(.__lamHost, .__lamHost *, .cvx-grid th) {
  font-size: 11px !important;                                      /* era 10,5px */
  color: var(--rt-cinza) !important;
}
html.gcs-ui table td:not(.__lamHost, .__lamHost *, .cvx-grid td) { color: var(--rt-navy-2) !important; }   /* era 374151 */
/* estado vazio ("Nenhum voto registrado", "Carregando") continua cinza, como no master */
html.gcs-ui table td.empty:not(.__lamHost, .__lamHost *) { color: var(--rt-cinza) !important; }
html.gcs-ui table tbody tr:hover td:last-child:not(.__lamHost, .__lamHost *)::after { color: var(--rt-ouro) !important; }

/* Botões */
html.gcs-ui .btn:not(.__lamHost, .__lamHost *) { color: var(--rt-navy-2) !important; }
html.gcs-ui .btn:hover:not(.__lamHost, .__lamHost *) {
  color: var(--rt-navy) !important;
  border-color: rgba(169,138,79,.45) !important;
}
html.gcs-ui .btn.primary:not(.__lamHost, .__lamHost *),
html.gcs-ui button.primary:not(.__lamHost, .__lamHost *),
html.gcs-ui .btn.btn-primary:not(.__lamHost, .__lamHost *),
html.gcs-ui .btn-primary:not(.__lamHost, .__lamHost *),
html.gcs-ui .card button.btn.primary.sm:not(.__lamHost, .__lamHost *),
html.gcs-ui #login-btn:not(.__lamHost, .__lamHost *) {
  background: linear-gradient(180deg, var(--rt-navy-2) 0%, var(--rt-navy) 100%) !important;
  color: #FFFFFF !important;
}
html.gcs-ui .btn.primary:hover:not(.__lamHost, .__lamHost *),
html.gcs-ui button.primary:hover:not(.__lamHost, .__lamHost *),
html.gcs-ui .btn-primary:hover:not(.__lamHost, .__lamHost *),
html.gcs-ui #login-btn:hover:not(.__lamHost, .__lamHost *) {
  background: var(--rt-navy-2) !important;
  color: #FFFFFF !important;
}
/* Botão dourado: navy sobre dourado (5,30:1) */
html.gcs-ui .btn-gold:not(.__lamHost, .__lamHost *),
html.gcs-ui .card button.btn.primary.sm:hover:not(.__lamHost, .__lamHost *) {
  background: var(--rt-ouro) !important;
  border-color: var(--rt-ouro) !important;
  color: var(--rt-navy) !important;
}
html.gcs-ui .btn-gold:hover:not(.__lamHost, .__lamHost *) { background: var(--rt-ouro-claro) !important; }

/* Formulários: hoje o campo de texto em foco não mostra borda nem anel, porque o poço do neo-soft
   (input[type=text] ... box-shadow var(--neo-in) !important) vem depois do foco do master. */
html.gcs-ui input:not([type=checkbox]):not([type=radio]):not([type=file]):focus:not(.__lamHost, .__lamHost *),
html.gcs-ui select:focus:not(.__lamHost, .__lamHost *),
html.gcs-ui textarea:focus:not(.__lamHost, .__lamHost *) {
  border-color: var(--rt-ouro) !important;
  box-shadow: var(--neo-in, 0 0 0 0 transparent), 0 0 0 3px rgba(169,138,79,.22) !important;
}
html.gcs-ui button:focus-visible:not(.__lamHost, .__lamHost *),
html.gcs-ui a:focus-visible:not(.__lamHost, .__lamHost *),
html.gcs-ui input:focus-visible:not(.__lamHost, .__lamHost *),
html.gcs-ui select:focus-visible:not(.__lamHost, .__lamHost *),
html.gcs-ui textarea:focus-visible:not(.__lamHost, .__lamHost *) {
  outline-color: var(--rt-ouro-texto) !important;   /* era A98A4F: 2,94:1 no fundo da página */
}
html.gcs-ui .lbl:not(.__lamHost, .__lamHost *),
html.gcs-ui label > div:not(.__lamHost, .__lamHost *),
html.gcs-ui .form-row label:not(.__lamHost, .__lamHost *),
html.gcs-ui .lbl-mini:not(.__lamHost, .__lamHost *),
html.gcs-ui #cfg-modal .lbl-mini:not(.__lamHost, .__lamHost *),
html.gcs-ui #task-modal .lbl-mini:not(.__lamHost, .__lamHost *) {
  font-size: 11px !important;                                      /* eram 9,5 e 10,5px */
  color: var(--rt-cinza) !important;
}

/* Badges e pílulas: tamanho mínimo; as cores semânticas ficam */
html.gcs-ui .badge:not(.__lamHost, .__lamHost *),
html.gcs-ui .pill:not(.__lamHost, .__lamHost *),
html.gcs-ui .status-pill:not(.__lamHost, .__lamHost *),
html.gcs-ui .b-crit:not(.__lamHost, .__lamHost *), html.gcs-ui .b-warn:not(.__lamHost, .__lamHost *), html.gcs-ui .b-ok:not(.__lamHost, .__lamHost *), html.gcs-ui .b-info:not(.__lamHost, .__lamHost *), html.gcs-ui .b-muted:not(.__lamHost, .__lamHost *) {
  font-size: 11px !important;                                      /* eram 10 a 10,5px */
}

/* O bloco brand-typography tem o seletor [class*="b-"], que casa com qualquer classe que contenha
   "b-". A seção de hub do hubs.js (gcs-hub-sec) cai nele e herda caixa alta, 10px, peso 600 e
   padding de etiqueta para a tela inteira empilhada. Aqui a seção volta a ser um contêiner neutro. */
html.gcs-ui .gcs-hub-sec:not(.__lamHost, .__lamHost *) {
  text-transform: none !important;
  font-size: inherit !important;
  font-weight: inherit !important;
  letter-spacing: inherit !important;
  padding: 0 !important;
  border-radius: 0 !important;
}

/* Detalhes de acento dourado que estavam em hexadecimal fixo (C9A961) */
html.gcs-ui .tip:not(.__lamHost, .__lamHost *), html.gcs-ui .hint:not(.__lamHost, .__lamHost *), html.gcs-ui .help-tip:not(.__lamHost, .__lamHost *) { border-left-color: var(--rt-ouro) !important; }
html.gcs-ui .org-card:hover:not(.__lamHost, .__lamHost *), html.gcs-ui .colab-card:hover:not(.__lamHost, .__lamHost *) { border-color: var(--rt-ouro) !important; }
html.gcs-ui .card[style*="border-left:4px"]:hover:not(.__lamHost, .__lamHost *) { border-left-color: var(--rt-ouro) !important; }
html.gcs-ui .gcs-highlight:not(.__lamHost, .__lamHost *) { border-color: var(--rt-ouro) !important; }
html.gcs-ui .info-banner [class*="icon"]:not(.__lamHost, .__lamHost *),
html.gcs-ui .help-banner [class*="icon"]:not(.__lamHost, .__lamHost *),
html.gcs-ui .tip [class*="icon"]:not(.__lamHost, .__lamHost *) {
  color: var(--rt-ouro-texto) !important;
  background: var(--rt-ouro-a12) !important;
}
html.gcs-ui *:hover > div[style*="width:46px"][style*="height:46px"]:not(.__lamHost, .__lamHost *) {
  color: var(--rt-ouro-texto) !important;
  background: var(--rt-ouro-a12) !important;
  border-color: var(--rt-ouro-a25) !important;
}
/* Ícones pequenos pintados pelo gcs-icon-neutralizer (style.color = '#C9A961' vira rgb no atributo) */
html.gcs-ui [data-gcs-luxo-icon][style*="color: rgb(201, 169, 97)"]:not(.__lamHost, .__lamHost *) {
  color: var(--rt-ouro-texto) !important;
  background-color: var(--rt-ouro-a12) !important;
  border-color: var(--rt-ouro-a25) !important;
}
/* Calendário: número do dia de hoje era branco sobre dourado (2,2:1). Navy sobre dourado: 5,30:1 */
html.gcs-ui .cal-day-today .cal-day-num:not(.__lamHost, .__lamHost *) { color: var(--rt-navy) !important; }


/* =====================================================================================
   6. DOURADO COMO TEXTO SOBRE FUNDO CLARO (estilo inline gerado pelo JS)
   Dourado claro como cor de texto pequeno sobre branco vira o dourado escurecido (5,40:1).
   Os seletores começam em ";color:" ou no início do atributo, para não pegar border-color
   nem background-color. Vale só nas superfícies claras do app.
   Casos no index: nível do cliente e ponto do score (Cliente 360), score 50 a 79 em C9A961,
   vínculo de treinamento com política, link "Abrir em nova aba" do kyc-preview.js.
   ===================================================================================== */
html.gcs-ui :is(#main-content, .drawer, .modal, [id*="modal"], .ui-modal) :is(
  [style^="color:#C9A961" i], [style*=";color:#C9A961" i], [style*="; color:#C9A961" i],
  [style^="color:#A98A4F" i], [style*=";color:#A98A4F" i], [style*="; color:#A98A4F" i],
  [style^="color:var(--gold" i], [style*=";color:var(--gold" i], [style*="; color:var(--gold" i],
  [style^="color: rgb(201, 169, 97)"], [style*="; color: rgb(201, 169, 97)"]
):not(.__lamHost, .__lamHost *) {
  color: var(--rt-ouro-texto) !important;
}
/* Dentro de cabeçalho escuro (ex.: "Dados de mercado" na ficha do fundo, fundo 0D2137) o dourado
   é permitido: fica o dourado claro oficial. Especificidade maior que a regra de cima. */
html.gcs-ui :is(#main-content, .drawer, .modal, [id*="modal"], .ui-modal) :is(
  [style*="background:#0D2137" i], [style*="background: #0D2137" i],
  [style*="background:#0A1A2E" i], [style*="background:#0F1B2D" i],
  [style*="linear-gradient(135deg,#0D2137" i], [style*="linear-gradient(135deg, #0D2137" i]
) :is(
  [style^="color:#C9A961" i], [style*=";color:#C9A961" i], [style*="; color:#C9A961" i],
  [style^="color:#A98A4F" i], [style*=";color:#A98A4F" i],
  [style^="color:var(--gold" i], [style*=";color:var(--gold" i]
):not(.__lamHost, .__lamHost *) {
  color: var(--rt-ouro-claro) !important;
}
/* Barras e pontos de score pintados de C9A961 passam ao dourado oficial (não é texto) */
html.gcs-ui :is(#main-content, .drawer, .modal) :is([style*="background:#C9A961" i]):not(.__lamHost, .__lamHost *) {
  background-color: var(--rt-ouro) !important;
}
/* Filetes dourados inline (seções das telas de fundos, liquidez e crédito) */
html.gcs-ui [style*="border-bottom:2px solid #C9A961" i]:not(.__lamHost, .__lamHost *) { border-bottom-color: var(--rt-ouro) !important; }
html.gcs-ui [style*="border-left:3px solid #C9A961" i]:not(.__lamHost, .__lamHost *)   { border-left-color: var(--rt-ouro) !important; }
/* Cabeçalho com fundo dourado e texto branco (ex.: assinatura de políticas): branco sobre
   dourado claro dava 2,1:1. Navy sobre o gradiente dourado: 5,3 a 8,3:1. Botões .btn já têm o
   fundo neutralizado pelo neo-soft e não entram aqui. */
html.gcs-ui [style*="background:linear-gradient(135deg,var(--gold),var(--gold-bright))"][style*="color:#fff"]:not(.btn):not(.__lamHost, .__lamHost *),
html.gcs-ui [style*="background:var(--gold)"][style*="color:#fff"]:not(.btn):not(.__lamHost, .__lamHost *) {
  color: var(--rt-navy) !important;
}
/* Texto de "atenção" em 9A7D0A sobre branco (3,95:1) vai para o warn-700 do neo-soft (7A5E18, 6,1:1) */
html.gcs-ui :is([style^="color:#9A7D0A" i], [style*=";color:#9A7D0A" i], [style*="; color:#9A7D0A" i]):not(.__lamHost, .__lamHost *) {
  color: var(--warn-700, #7A5E18) !important;
}
html.gcs-ui :is([style^="color:#8E6E1D" i], [style*=";color:#8E6E1D" i]):not(.__lamHost, .__lamHost *) {
  color: var(--rt-ouro-texto) !important;
}


/* =====================================================================================
   7. TAMANHO MÍNIMO DE 11px
   7a. Estilo inline abaixo de 11px (cerca de 480 no index e 90 nos patches). Fora: SVG (rótulos de
       gráfico) e a lâmina montada para o PDF (.__lamHost).
       Também ficam fora os elementos em que uma camada antiga já impõe, com !important, um tamanho
       MAIOR que o inline (td 13px do luxo-refinement, .btn 12,5px do master, campos 13px,
       .card strong/h3/p do relatorios-compact etc.). Sem essa exclusão a regra encolheria esses
       textos de 12,5 ou 13px para 11px.
   ===================================================================================== */
html.gcs-ui body :is(
  [style*="font-size:6.2px"], [style*="font-size:6.4px"], [style*="font-size:7px"],
  [style*="font-size:7.5px"], [style*="font-size:7.6px"], [style*="font-size:7.8px"],
  [style*="font-size:8px"], [style*="font-size:8.2px"], [style*="font-size:8.5px"],
  [style*="font-size:9px"], [style*="font-size:9.2px"], [style*="font-size:9.3px"],
  [style*="font-size:9.5px"], [style*="font-size:9.6px"], [style*="font-size:9.8px"],
  [style*="font-size:10px"], [style*="font-size:10.5px"],
  [style*="font-size: 7px"], [style*="font-size: 7.5px"], [style*="font-size: 8px"],
  [style*="font-size: 8.5px"], [style*="font-size: 9px"], [style*="font-size: 9.5px"],
  [style*="font-size: 10px"], [style*="font-size: 10.5px"]
):not(.__lamHost *):not(svg *):not(.cvx-grid *):not(
  td, th, .btn, input, select, textarea,
  .card :is(h3, h4, strong, b, p, .desc),
  .tab-pill, .tabs button, .tabset button, .tab-toggle button, .toggle-group button, .cfg-tab,
  .page-title, .page-sub, .section-title, .kpi .val, .kpi .sub, .nav-item, .sidebar a, .toast
) {
  font-size: 11px !important;
}

/* 7b. Classes com fonte abaixo de 11px (index, estilos injetados pelo JS e patches) */
html.gcs-ui :is(
  .notif-txt time, .data-source code,
  .cal-weekday, .cal-event, .cal-event-more,
  .org-role, .org-dept, .org-tag-mini, .org-subord-count, .org-assessoria-label, .org-subords-empty, .org-avatar-sm,
  .hash-cell, .coaf-legal, .reg-source, .des-role, .info-cell .lbl, .impact-cell .lbl, .alloc-card .cls,
  .slider-marks, .clause-text small, .dp-item .info .time, .export-menu button .ext, .wstep .lbl small,
  .vote-decision small, .reg-card .footer .ai-tag, .stress-bar .baseline, .stress-bar .stressed,
  .uni-tag, .uni-meta, .topbar kbd, .topbar .kbd,
  .cpo-kpi-l, .cpo-kpi-s, .cpo-selo, .cpo-cel-d, .cpo-hash, .cpo-nota, .cpo-tab th, .cpo-cod
):not(.__lamHost *) {
  font-size: 11px !important;
}
/* Central de Segurança (#secc, CSS injetado pela rota seguranca), a faixa DMARC que o dmarc.js injeta no topo dela
   (#gcs-dmarc-tile: "Autenticação de e-mail (DMARC)" e "Alertas abertos" saíam a 9 px) e Autenticação de e-mail (#dmc) */
html.gcs-ui #secc :is(.sc-k .l, .sc-k .s, .sc-h, .dcard .dn, .dcard .dc small, .dcard .dt, .dcard .dst,
  .row .rd, .row .rt, th, .tab, .pill):not(.__lamHost, .__lamHost *),
html.gcs-ui #gcs-dmarc-tile :is(.t-l, .t-s),
html.gcs-ui #dmc :is(.d-k .l, .d-k .s, .d-h, .d-hint, .d-ref, .d-eixo, th, .tab, .pill, .mono, .row .rd, .d-passo .n, .btn-mini,
  .gcs-cp-eixo, .gcs-cp-lg, .gcs-cp-li .t):not(.__lamHost, .__lamHost *) {
  font-size: 11px !important;
}


/* =====================================================================================
   8. LINKS: navy claro 1E3049, sublinhado (decisão de 19/09/2026; eram azul 1A5276)
   Só o link de texto (a[href] sem classe), nas superfícies claras. Link com classe é
   componente (botão, cartão, etiqueta, item de menu) e fica como está. Dentro de cabeçalho
   escuro o link vai para o dourado claro, como o texto dourado da seção 6.
   ===================================================================================== */
html.gcs-ui :is(#main-content, .drawer, .modal, [id*="modal"], .ui-modal, .login-card) a[href]:not([class]):not(.__lamHost, .__lamHost *),
html.gcs-ui :is(#main-content, .drawer, .modal, [id*="modal"], .ui-modal, .login-card) a[href][class=""]:not(.__lamHost, .__lamHost *) {
  color: var(--rt-navy-2) !important;
  text-decoration: underline !important;
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
}
html.gcs-ui :is(#main-content, .drawer, .modal, [id*="modal"], .ui-modal, .login-card) a[href]:not([class]):hover:not(.__lamHost, .__lamHost *) {
  color: var(--rt-navy) !important;
}
html.gcs-ui :is(#main-content, .drawer, .modal, [id*="modal"], .ui-modal) :is(
  [style*="background:#0D2137" i], [style*="background: #0D2137" i],
  [style*="background:#0A1A2E" i], [style*="background:#0F1B2D" i],
  [style*="linear-gradient(135deg,#0D2137" i], [style*="linear-gradient(135deg, #0D2137" i]
) a[href]:not([class]):not(.__lamHost, .__lamHost *) {
  color: var(--rt-ouro-claro) !important;
}

/* =====================================================================================
   C. COMPONENTES rt-* (atrás do interruptor). Só valem para marcação que usa as classes rt-*
   (páginas novas, realces por tela e a gestora v2). Derivados de gestora-cadastro.js
   v20260924d (gc2-*), com as correções da seção 6 do padrao_gestora.md.
   Regra de nome: nenhuma classe com a sequência "b-" (o index tem [class*="b-"] que vira selo).
   Defesas contra o index (tags label, input, button e o * universal) com !important só onde medido.
   Os realces por tela (gcs-ui.js) usam estas classes; desligada a camada, o CSS esconde [data-rt-realce].
   ===================================================================================== */
html.gcs-ui .rt-escopo, html.gcs-ui .rt-escopo * { box-sizing: border-box; }
html.gcs-ui .rt-escopo [hidden], html.gcs-ui .rt-hero [hidden] { display: none !important; }
html.gcs-ui .rt-ic { width: 16px; height: 16px; flex: none; }

/* cabeçalho de página */
html.gcs-ui .rt-cabeca { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: var(--rt-cab-mb); }
html.gcs-ui .rt-cabeca > div:first-child { flex: 1 1 440px; min-width: 0; }
html.gcs-ui .rt-sobre { font-size: 11px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--rt-ouro-texto); margin-bottom: 4px; }
html.gcs-ui .rt-subtitulo { font-size: 13px; color: var(--rt-cinza); margin-top: 4px; max-width: 720px; line-height: 1.5; }
html.gcs-ui .rt-acoes { display: flex; gap: 8px; flex-wrap: wrap; margin-left: auto; }

/* botões */
html.gcs-ui .rt-btn { display: inline-flex; align-items: center; gap: 7px; height: var(--rt-h-ctl); padding: 0 13px; border-radius: var(--rt-r-ctl);
  border: 1px solid var(--rt-linha); background: var(--rt-sup); color: var(--rt-navy);
  font-family: inherit; font-size: var(--rt-fs-btn) !important; font-weight: 500 !important; line-height: 1;
  cursor: pointer; white-space: nowrap; text-decoration: none; box-shadow: none;
  transition: background var(--rt-t), border-color var(--rt-t), color var(--rt-t); }
html.gcs-ui .rt-btn:hover { border-color: var(--rt-linha-2); background: var(--rt-sup-2); }
html.gcs-ui .rt-btn.rt-pri { background: var(--rt-navy); border-color: var(--rt-navy); color: #fff; }
html.gcs-ui .rt-btn.rt-pri:hover { background: var(--rt-navy-2); border-color: var(--rt-navy-2); }
html.gcs-ui .rt-btn.rt-perigo { color: var(--rt-crit); border-color: rgba(161,59,64,.35); }
html.gcs-ui .rt-btn.rt-perigo:hover { background: var(--rt-crit-tinta); }
html.gcs-ui .rt-btn[disabled] { opacity: .45; cursor: not-allowed; }
html.gcs-ui .rt-btn.rt-sm { height: var(--rt-h-ctl-sm); padding: 0 10px; font-size: var(--rt-fs-meta) !important; }
html.gcs-ui .rt-btn-ic { display: inline-grid; place-items: center; width: var(--rt-h-ic); height: var(--rt-h-ic); min-width: 24px; border-radius: 7px;
  border: 1px solid transparent; background: transparent; color: var(--rt-icone); cursor: pointer; flex: none; transition: all var(--rt-t); }
html.gcs-ui .rt-btn-ic:hover { background: var(--rt-sup-2); border-color: var(--rt-linha); color: var(--rt-navy); }

/* cartão e grade */
html.gcs-ui .rt-cartao { background: var(--rt-sup); border: 1px solid var(--rt-linha); border-radius: var(--rt-r-cartao); box-shadow: var(--rt-sh-cartao); }
html.gcs-ui .rt-grade2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--rt-gap); margin-bottom: var(--rt-gap); }

/* cartão de identidade (entidade: gestora, fundo, cliente, contraparte) */
html.gcs-ui .rt-hero { display: flex; gap: 20px; align-items: center; padding: 22px 24px; margin-bottom: var(--rt-gap); position: relative; overflow: hidden;
  border-radius: var(--rt-r-cartao); color: #fff; border: 0;
  background: linear-gradient(135deg, var(--rt-navy) 0%, #172640 60%, var(--rt-navy-2) 100%); }
html.gcs-ui .rt-hero::after { content: ""; position: absolute; right: -60px; top: -60px; width: 220px; height: 220px; border-radius: 50%; border: 1px solid rgba(201,177,131,.28); pointer-events: none; }
html.gcs-ui .rt-hero-logo { display: block; height: 58px; width: auto; flex: none; filter: drop-shadow(0 1px 2px rgba(0,0,0,.25)); }
html.gcs-ui .rt-hero-ic { width: 52px; height: 52px; border-radius: 12px; display: grid; place-items: center; flex: none; background: rgba(201,177,131,.14); color: var(--rt-ouro-claro); border: 1px solid rgba(201,177,131,.35); }
html.gcs-ui .rt-hero-ic .rt-ic { width: 26px; height: 26px; }
html.gcs-ui .rt-hero-div { width: 1px; align-self: stretch; margin: 4px 2px; flex: none; background: linear-gradient(180deg, rgba(201,177,131,0), rgba(201,177,131,.55), rgba(201,177,131,0)); }
html.gcs-ui .rt-hero-corpo { min-width: 0; flex: 1; }
html.gcs-ui .rt-hero-nome { font-family: var(--rt-serif) !important; font-weight: 500 !important; font-size: var(--rt-fs-hero); line-height: 1.15; color: #fff; margin: 0; }
html.gcs-ui .rt-hero-razao { font-size: 12.5px; color: rgba(255,255,255,.76); margin-top: 3px; letter-spacing: .01em; }
html.gcs-ui .rt-hero-fatos { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
html.gcs-ui .rt-pilula { display: inline-flex; align-items: center; gap: 6px; min-height: 28px; padding: 0 10px; border-radius: var(--rt-r-pilula);
  background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.14); font-size: 12px; color: #fff; white-space: nowrap; }
html.gcs-ui .rt-pilula b { font-weight: 600; color: var(--rt-ouro-claro); }
html.gcs-ui .rt-pilula.rt-ok { background: rgba(201,177,131,.14); border-color: rgba(201,177,131,.45); }
html.gcs-ui .rt-pilula.rt-crit { background: rgba(251,237,238,.12); border-color: rgba(244,160,164,.55); }
html.gcs-ui .rt-pilula.rt-crit b { color: #F6C7C9; }  /* 9,6:1 sobre navy */
html.gcs-ui .rt-hero :focus-visible { outline: var(--rt-foco-escuro) !important; outline-offset: 2px; }
html.gcs-ui .rt-hero a.rt-pilula { text-decoration: none; cursor: pointer; }
html.gcs-ui .rt-hero a.rt-pilula:hover { background: rgba(255,255,255,.14); }

/* cabeçalho de seção dentro de cartão */
html.gcs-ui .rt-secao-topo { display: flex; align-items: center; gap: 10px; padding: 14px var(--rt-pad); border-bottom: 1px solid var(--rt-linha); }
html.gcs-ui .rt-secao-ic { width: 30px; height: 30px; border-radius: var(--rt-r-ctl); display: grid; place-items: center; background: var(--rt-ouro-tinta); color: var(--rt-ouro-texto); flex: none; }
html.gcs-ui .rt-secao-t { font-size: var(--rt-fs-corpo); font-weight: 600; color: var(--rt-navy); }
html.gcs-ui .rt-secao-s { font-size: 12px; color: var(--rt-cinza); margin-top: 1px; }

/* campos rótulo / valor / copiar */
html.gcs-ui .rt-campos { padding: 4px var(--rt-pad) 8px; }
html.gcs-ui .rt-campo { display: grid; grid-template-columns: 150px minmax(0,1fr) 28px; gap: 12px; align-items: start; padding: 11px 0; border-bottom: 1px dashed var(--rt-linha); }
html.gcs-ui .rt-campo:last-child { border-bottom: 0; }
html.gcs-ui .rt-campo-l { font-size: 12px; color: var(--rt-cinza); padding-top: 2px; }
html.gcs-ui .rt-campo-v { font-size: var(--rt-fs-corpo); line-height: 1.5; color: var(--rt-navy); overflow-wrap: anywhere; }
html.gcs-ui .rt-campo-v small { display: block; font-size: 12px; color: var(--rt-cinza); margin-top: 2px; line-height: 1.45; }
html.gcs-ui .rt-campo .rt-btn-ic { opacity: 0; }
html.gcs-ui .rt-campo:hover .rt-btn-ic, html.gcs-ui .rt-campo .rt-btn-ic:focus-visible { opacity: 1; }
@media (hover: none) { html.gcs-ui .rt-campo .rt-btn-ic { opacity: 1; } }

/* mono e números */
html.gcs-ui .rt-mono { font-family: var(--rt-mono) !important; font-size: 12.5px; letter-spacing: .01em; font-variant-numeric: tabular-nums; }
html.gcs-ui .rt-num { font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }
html.gcs-ui .rt-link { color: var(--rt-navy-2); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 2px; text-decoration-color: rgba(30,48,73,.35); }
html.gcs-ui .rt-link:hover { color: var(--rt-navy); text-decoration-color: var(--rt-ouro); }

/* etiquetas, contador, hash */
html.gcs-ui .rt-etiqueta { display: inline-flex; align-items: center; min-height: 22px; padding: 0 9px; border-radius: var(--rt-r-pilula); font-size: 11px; font-weight: 600; letter-spacing: .01em; white-space: nowrap;
  background: var(--rt-neutra-tinta); color: var(--rt-neutra); }
html.gcs-ui .rt-etiqueta.rt-navy   { background: #E9EEF5; color: var(--rt-navy-2); }
html.gcs-ui .rt-etiqueta.rt-ouro   { background: var(--rt-ouro-tinta); color: var(--rt-ouro-texto); }
html.gcs-ui .rt-etiqueta.rt-ok     { background: var(--rt-ok-tinta); color: var(--rt-ok); }
html.gcs-ui .rt-etiqueta.rt-alerta { background: var(--rt-alerta-tinta); color: var(--rt-alerta); }
html.gcs-ui .rt-etiqueta.rt-crit   { background: var(--rt-crit-tinta); color: var(--rt-crit); }
html.gcs-ui .rt-etiqueta.rt-info   { background: var(--rt-info-tinta); color: var(--rt-info); }
html.gcs-ui .rt-etiqueta.rt-roxa   { background: var(--rt-roxa-tinta); color: var(--rt-roxa); }
html.gcs-ui .rt-contador { display: inline-grid; place-items: center; min-width: 22px; height: 20px; padding: 0 6px; border-radius: var(--rt-r-pilula); background: var(--rt-sup-2); border: 1px solid var(--rt-linha); font-size: 11px; font-weight: 600; color: var(--rt-cinza); margin-left: 6px; }
html.gcs-ui .rt-hash { display: inline-flex; align-items: center; gap: 4px; font-family: var(--rt-mono) !important; font-size: 11px; color: var(--rt-cinza); background: var(--rt-sup-2); border: 1px solid var(--rt-linha); border-radius: var(--rt-r-sm); padding: 1px 3px 1px 7px; }

/* KPI (novo; a gestora não tinha) */
html.gcs-ui .rt-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--rt-gap); margin-bottom: var(--rt-gap); }
html.gcs-ui .rt-kpi { container-type: inline-size; background: var(--rt-sup); border: 1px solid var(--rt-linha); border-radius: var(--rt-r-cartao); box-shadow: var(--rt-sh-cartao); padding: 16px var(--rt-pad); min-width: 0; }
html.gcs-ui .rt-kpi-l { font-size: 12px; font-weight: 500; color: var(--rt-cinza); }
html.gcs-ui .rt-kpi-v { font-size: clamp(17px, 11cqi, 28px); font-weight: 600; color: var(--rt-navy); line-height: 1.15; margin: 6px 0 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
html.gcs-ui .rt-kpi-s { font-size: 12px; color: var(--rt-cinza); }
html.gcs-ui .rt-kpi.rt-crit { box-shadow: inset 3px 0 0 var(--rt-crit), var(--rt-sh-cartao); } html.gcs-ui .rt-kpi.rt-crit .rt-kpi-v { color: var(--rt-crit); }
html.gcs-ui .rt-kpi.rt-alerta { box-shadow: inset 3px 0 0 #B7882B, var(--rt-sh-cartao); } html.gcs-ui .rt-kpi.rt-alerta .rt-kpi-v { color: var(--rt-alerta); }

/* busca e filtros */
html.gcs-ui .rt-ferramentas { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; padding: 12px var(--rt-pad); border-bottom: 1px solid var(--rt-linha); background: var(--rt-sup-2); }
html.gcs-ui .rt-busca { position: relative; flex: 1; min-width: 220px; max-width: 360px; display: block; }
html.gcs-ui .rt-busca .rt-ic { position: absolute; left: 11px; top: 50%; transform: translateY(-50%); color: var(--rt-cinza); pointer-events: none; z-index: 1; }
html.gcs-ui .rt-busca input { width: 100%; height: var(--rt-h-ctl) !important; padding: 0 10px 0 34px !important; border: 1px solid var(--rt-campo-borda) !important; border-radius: var(--rt-r-ctl) !important;
  background: #fff !important; box-shadow: none !important; font-size: var(--rt-fs-btn) !important; font-weight: 400 !important; color: var(--rt-navy) !important; }
html.gcs-ui .rt-filtros { display: flex; gap: 6px; flex-wrap: wrap; }
html.gcs-ui .rt-filtro { height: var(--rt-h-ctl-sm); padding: 0 11px; border-radius: var(--rt-r-pilula); border: 1px solid var(--rt-linha); background: #fff; font: inherit; font-size: 12px; color: var(--rt-cinza); cursor: pointer; display: inline-flex; align-items: center; gap: 6px; }
html.gcs-ui .rt-filtro:hover { border-color: var(--rt-linha-2); color: var(--rt-navy); }
html.gcs-ui .rt-filtro[aria-pressed="true"] { background: var(--rt-navy); border-color: var(--rt-navy); color: #fff; }
html.gcs-ui .rt-filtro small { font-size: 11px !important; color: inherit !important; opacity: .85; }

/* abas (novo) */
html.gcs-ui .rt-abas { display: inline-flex; gap: 2px; padding: 3px; background: var(--rt-neutra-tinta); border-radius: 10px; }
html.gcs-ui .rt-aba { height: 30px; padding: 0 12px; border: 0; border-radius: 8px; background: transparent; color: var(--rt-cinza); font: inherit; font-size: 12.5px; font-weight: 500; cursor: pointer; }
html.gcs-ui .rt-aba[aria-selected="true"], html.gcs-ui .rt-aba.rt-on { background: #fff; color: var(--rt-navy); box-shadow: 0 1px 2px rgba(15,23,42,.08); }

/* lista de registros */
html.gcs-ui .rt-lista { list-style: none; margin: 0; padding: 0; }
html.gcs-ui .rt-item { display: grid; grid-template-columns: 44px minmax(0,1fr) auto; gap: 14px; align-items: start; padding: 14px var(--rt-pad); border-bottom: 1px solid var(--rt-linha); transition: background var(--rt-t); }
html.gcs-ui .rt-item:hover { background: var(--rt-zebra); }
html.gcs-ui .rt-item:last-child { border-bottom: 0; }
html.gcs-ui .rt-item-t { font-size: var(--rt-fs-corpo); font-weight: 600; color: var(--rt-navy); line-height: 1.4; overflow-wrap: anywhere; }
html.gcs-ui .rt-item-m { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin-top: 5px; font-size: 12px; color: var(--rt-cinza); }
html.gcs-ui .rt-selo-arq { width: 40px; height: 48px; border-radius: var(--rt-r-ctl); display: flex; flex-direction: column; align-items: center; justify-content: flex-end; padding-bottom: 6px; font-size: 11px; font-weight: 700; letter-spacing: .02em; position: relative; background: #F1F4F8; color: #475569; border: 1px solid #E3E8EF; }
html.gcs-ui .rt-selo-arq.rt-pdf { background: #FDF1F0; color: #B42318; border-color: #F6D5D1; }
html.gcs-ui .rt-selo-arq.rt-docx { background: #EEF4FC; color: #1D4E89; border-color: #D4E2F4; }
html.gcs-ui .rt-selo-arq.rt-xlsx { background: #EDF7F1; color: #12683E; border-color: #CFE8DA; }

/* menu de ações */
html.gcs-ui .rt-menu { position: absolute; right: 0; top: 36px; z-index: 30; min-width: 190px; background: #fff; border: 1px solid var(--rt-linha); border-radius: var(--rt-r-menu); box-shadow: var(--rt-sh-pop); padding: 5px; }
html.gcs-ui .rt-menu button { display: flex; width: 100%; align-items: center; gap: 9px; padding: 8px 10px; border: 0; background: none; border-radius: 7px; font: inherit; font-size: 12.5px; color: var(--rt-navy); cursor: pointer; text-align: left; }
html.gcs-ui .rt-menu button:hover, html.gcs-ui .rt-menu button:focus-visible { background: var(--rt-sup-2); outline: none; }
html.gcs-ui .rt-menu button.rt-perigo { color: var(--rt-crit); }

/* estados */
html.gcs-ui .rt-vazio { padding: 34px var(--rt-pad); text-align: center; color: var(--rt-cinza); font-size: 13px; }
html.gcs-ui .rt-vazio b { display: block; color: var(--rt-navy); font-size: 14px; margin-bottom: 4px; }
html.gcs-ui .rt-esqueleto { height: 14px; border-radius: var(--rt-r-sm); background: linear-gradient(90deg, #EEF2F6 25%, #F6F8FA 50%, #EEF2F6 75%); background-size: 200% 100%; animation: rtsk 1.2s infinite; margin: 12px 0; }
@keyframes rtsk { 0% { background-position: 200% 0 } 100% { background-position: -200% 0 } }

/* aviso (novo) */
html.gcs-ui .rt-aviso { display: flex; gap: 12px; align-items: flex-start; padding: 12px 16px; border-radius: var(--rt-r-lg); border: 1px solid var(--rt-linha); background: #fff; font-size: 13px; color: var(--rt-navy); margin-bottom: var(--rt-gap); box-shadow: inset 3px 0 0 var(--rt-info); }
html.gcs-ui .rt-aviso.rt-ok { box-shadow: inset 3px 0 0 var(--rt-ok); } html.gcs-ui .rt-aviso.rt-alerta { box-shadow: inset 3px 0 0 #B7882B; background: #FFFCF5; } html.gcs-ui .rt-aviso.rt-crit { box-shadow: inset 3px 0 0 var(--rt-crit); background: #FFFAFA; }

/* rodapé */
html.gcs-ui .rt-nota { font-size: 12px; color: var(--rt-cinza); margin: 14px 2px 0; line-height: 1.5; }

/* foco (claro) */
html.gcs-ui :is(.rt-btn, .rt-btn-ic, .rt-filtro, .rt-aba, .rt-link, .rt-menu button):focus-visible { outline: var(--rt-foco); outline-offset: 2px; }

@media (max-width: 1100px) { html.gcs-ui .rt-grade2 { grid-template-columns: 1fr; } }
@media (max-width: 720px) { html.gcs-ui .rt-item { grid-template-columns: 40px minmax(0,1fr); } html.gcs-ui .rt-item > :last-child { grid-column: 2; } }
@media (max-width: 640px) {
  html.gcs-ui .rt-hero { flex-direction: column; align-items: flex-start; padding: 20px; }
  html.gcs-ui .rt-hero-logo { height: 46px; } html.gcs-ui .rt-hero-div { display: none; }
  html.gcs-ui .rt-pilula { white-space: normal; line-height: 1.35; padding: 5px 10px; } html.gcs-ui .rt-hero-nome { font-size: 22px; }
  html.gcs-ui .rt-campo { grid-template-columns: minmax(0,1fr) 28px; } html.gcs-ui .rt-campo-l { grid-column: 1 / -1; padding: 0; }
}
@media (prefers-reduced-motion: reduce) { html.gcs-ui .rt-esqueleto { animation: none; } html.gcs-ui .rt-escopo *, html.gcs-ui .rt-hero * { transition: none !important; } }

/* realces por tela: só existem com a camada ligada (única regra que olha a AUSÊNCIA do interruptor) */
html:not(.gcs-ui) [data-rt-realce] { display: none !important; }

/* =====================================================================================
   D. O SISTEMA INTEIRO NO PADRÃO DA GESTORA, PELAS CLASSES QUE AS TELAS JÁ USAM
   Tudo atrás do interruptor html.gcs-ui e dentro de #main-content, modais e gavetas
   (a lâmina e a carta mensal são montadas em div.__lamHost, filho direto do body: fora do alcance).
   Especificidade mínima (1,2,1) com !important. Das cerca de 1.300 regras !important do index, 24 usam
   #main-content (respiro de célula, grades do celular, margem do main): perdem porque aqui há mais classes no
   seletor. Estilo inline com !important (hubs.js, cliente360.js) NÃO é vencido: ver seção E.
   O que o app já decide continua valendo: fundo e cursor que a linha traz no estilo inline (zebra e cursor sem
   !important) e o que o app esconde ([hidden], .hidden, display:none inline: guarda D15, no fim desta parte).
   Exceção aprovada em 23/09: a grade de Parcelas (table.cvx-grid) fica como está.
   ===================================================================================== */

/* ---------- D1. cabeçalho de página ---------- */
html.gcs-ui #main-content .page-head:not([data-gcs-hub]) {
  display: flex !important; flex-direction: row !important; align-items: flex-end !important; justify-content: space-between !important;
  flex-wrap: wrap !important; gap: 12px 16px !important;
  padding: 0 !important; margin: 0 0 var(--rt-cab-mb) !important; border: 0 !important; background: none !important;
}
html.gcs-ui #main-content .page-head:not([data-gcs-hub]) > div:first-child { flex: 1 1 440px; min-width: 0; }
/* sobretítulo: área do menu, escrita pelo mapa da seção E (variável --rt-sobre-txt por rota) */
html.gcs-ui #main-content .page-head:not([data-gcs-hub]) > div:first-child::before {
  content: var(--rt-sobre-txt, none);
  display: block; font-size: 11px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase;
  color: var(--rt-ouro-texto); margin-bottom: 4px; line-height: 1.4;
}
html.gcs-ui #main-content .page-head:not([data-gcs-hub]) .page-title {
  font-family: var(--rt-serif) !important; font-size: var(--rt-fs-titulo) !important; font-weight: 600 !important;
  line-height: 1.15 !important; letter-spacing: -.005em !important; color: var(--rt-navy) !important;
  margin: 0 !important; text-shadow: none !important; display: block !important;
}
/* ícone pequeno antes do título (sobra do emoji convertido): some; a gestora não tem ícone no título */
html.gcs-ui #main-content .page-head:not([data-gcs-hub]) .page-title > svg:first-child { display: none !important; }
html.gcs-ui #main-content .page-head:not([data-gcs-hub]) .page-sub {
  font-size: 13px !important; line-height: 1.5 !important; color: var(--rt-cinza) !important;
  margin: 4px 0 0 !important; max-width: 720px;
}
html.gcs-ui #main-content .page-head .page-actions {
  display: flex !important; gap: 8px !important; flex-wrap: wrap !important; align-items: center !important;
  margin-left: auto !important; justify-content: flex-end;
}
/* bloco de texto que é ele mesmo linha flexível (Cotas diárias: selo da Vórtx + título): quebra, e o sobretítulo
   ocupa a linha de cima inteira (antes saía à esquerda do selo, no meio da altura) */
html.gcs-ui #main-content .page-head:not([data-gcs-hub]) > div:first-child:is([style*="display:flex"], [style*="display: flex"]) { flex-wrap: wrap !important; row-gap: 2px !important; }
html.gcs-ui #main-content .page-head:not([data-gcs-hub]) > div:first-child:is([style*="display:flex"], [style*="display: flex"])::before { flex: 0 0 100%; }
/* cabeçalho de página aninhado (tela antiga embutida dentro de outra: SSM em ANBIMA, abas de Administração) vira
   título de seção: sem repetir o sobretítulo e sem um segundo título de página de 28 px */
html.gcs-ui #main-content * .page-head:not([data-gcs-hub]) { margin-top: 6px !important; margin-bottom: 14px !important; }
html.gcs-ui #main-content * .page-head:not([data-gcs-hub]) > div:first-child::before { content: none; display: none; }
html.gcs-ui #main-content * .page-head:not([data-gcs-hub]) .page-title { font-size: 20px !important; }

/* seções empilhadas pelos hubs (hubs.js): contêiner neutro (o [class*="b-"] do index pega "gcs-hub-sec"
   e deixava a tela inteira em caixa alta, 10px e peso 600: é a causa da tabela de Fundos estourar) */
html.gcs-ui #main-content .gcs-hub-sec {
  text-transform: none !important; font-size: var(--rt-fs-corpo) !important; font-weight: 400 !important;
  letter-spacing: normal !important; padding: 0 !important; border-radius: 0 !important; background: none !important; border: 0 !important;
}
html.gcs-ui #main-content .page-head[data-gcs-hub] {
  margin: 28px 0 12px !important; padding: 0 !important; border: 0 !important;
  display: flex !important; align-items: center !important; gap: 12px !important;
}
html.gcs-ui #main-content .gcs-hub-sec:first-of-type .page-head[data-gcs-hub] { margin-top: 6px !important; }
html.gcs-ui #main-content .page-head[data-gcs-hub] .page-title > svg {
  width: 30px !important; height: 30px !important; padding: 7px; border-radius: var(--rt-r-ctl);
  background: var(--rt-ouro-tinta); color: var(--rt-ouro-texto); margin-right: 10px !important; vertical-align: middle; flex: none;
}
html.gcs-ui #main-content .page-head[data-gcs-hub] .page-title { display: flex !important; align-items: center !important; }

/* ---------- D2. cartões ---------- */
html.gcs-ui #main-content .card {
  background: var(--rt-sup) !important; border-radius: var(--rt-r-cartao) !important;
  box-shadow: var(--rt-sh-cartao) !important; backdrop-filter: none !important;
}
html.gcs-ui #main-content .card:not([style*="border-left"]) { border: 1px solid var(--rt-linha) !important; }
html.gcs-ui #main-content .card[style*="border-left"] {
  border-top: 1px solid var(--rt-linha) !important; border-right: 1px solid var(--rt-linha) !important; border-bottom: 1px solid var(--rt-linha) !important;
}
html.gcs-ui #main-content .card .card { box-shadow: none !important; }
html.gcs-ui #main-content .card:not([style*="padding"]) { padding: 16px var(--rt-pad) !important; }
/* cartão em que o próprio filho traz o respiro no estilo inline (faixa de cabeçalho + corpo, como em Treinamentos):
   o filho decide, como o index previa (".card { padding: 0 } mantém pra child decidir"). Sem isto o respiro dobrava e a
   faixa de cabeçalho ficava recuada, com a divisória sem encostar nas bordas */
html.gcs-ui #main-content .card:not([style*="padding"]):has(> [style*="padding"]) { padding: 0 !important; }
html.gcs-ui #main-content .card:has(> table:not(.cvx-grid)) { padding: 0 !important; }
html.gcs-ui #main-content .card:has(> table:not(.cvx-grid)) > :not(table) { padding-left: var(--rt-pad); padding-right: var(--rt-pad); }
html.gcs-ui #main-content .card:has(> table:not(.cvx-grid)) > :first-child:not(table) { padding-top: 16px; }
html.gcs-ui #main-content .card:has(> table:not(.cvx-grid)) > :last-child:not(table) { padding-bottom: 14px; }
/* tabela nunca corta dentro do cartão: rola na horizontal dentro dele */
html.gcs-ui #main-content .card:has(table:not(.cvx-grid)):not(:has(.card)) { overflow-x: auto !important; overflow-y: hidden !important; }
/* o invólucro de tabela do index (.table-wrap) também rola em vez de cortar (Contrapartes cortava 135 px em 1280) */
html.gcs-ui #main-content .table-wrap { overflow-x: auto !important; }
/* filho de grade montada com display:grid inline pode encolher em qualquer largura (Cliente 360 rolava 28 px em 1280; em
   390 a grade 320px 1fr, que o index põe em uma coluna, levava a página a 650 px sem esta regra).
   Só vale para grade de painéis e cartões (trilhas em fr ou px). Grade de LINHA, com trilha "auto" (lista do Calendário:
   auto 1fr auto auto auto), fica fora: com o mínimo zerado as trilhas auto encolhiam abaixo do conteúdo, o nome da entrega
   caía para 0 px por baixo do selo INTERNA e "CONCLUÍDO" encostava em "829d atraso" (revisão r2 de 27/09/2026). Selo
   (span) também fica com o mínimo do próprio texto */
html.gcs-ui #main-content :is([style*="display:grid"], [style*="display: grid"]):not([style*="1fr auto"], [style*="auto 1fr"], [style*="auto auto"], [style*="columns:auto"], [style*="columns: auto"]) > :not(span) { min-width: 0; }
/* ...mas a tabela que é filha direta do painel não pode vazar para baixo do painel vizinho: o painel rola por dentro
   (revisão de 27/09/2026). Em 390 a tabela do ativo em Risco de Liquidez (540 px mínimos do index) passava por baixo do
   passivo e % carteira, haircut e realizável ficavam cobertos. No celular e no tablet os painéis também empilham (seção F) */
html.gcs-ui #main-content :is([style*="display:grid"], [style*="display: grid"]) > :has(> table:not(.cvx-grid)):not(.__lamHost, .__lamHost *) { overflow-x: auto; }
/* título e subtítulo de cartão (h3 + p): o cabeçalho de seção da gestora */
html.gcs-ui #main-content .card h3 {
  font-family: var(--rt-sans) !important; font-size: var(--rt-fs-bloco) !important; font-weight: 600 !important;
  color: var(--rt-navy) !important; text-transform: none !important; letter-spacing: 0 !important; line-height: 1.35 !important;
}
html.gcs-ui #main-content .card h3 + p, html.gcs-ui #main-content .card h3 + .desc {
  font-size: 12px !important; color: var(--rt-cinza) !important; text-transform: none !important; letter-spacing: 0 !important;
}
/* faixa de cabeçalho dentro do cartão pintada em F8FAFC inline: vira a faixa clara do padrão */
html.gcs-ui #main-content .card > div[style*="border-bottom"][style*="background:#F8FAFC" i] { background: var(--rt-sup) !important; border-bottom-color: var(--rt-linha) !important; }

/* títulos de seção fora de cartão */
html.gcs-ui #main-content .section-head { margin: 26px 0 10px !important; align-items: center !important; gap: 12px; }
html.gcs-ui #main-content .section-title, html.gcs-ui #main-content h2.section-title, html.gcs-ui #main-content .section-header h3 {
  font-family: var(--rt-sans) !important; font-size: var(--rt-fs-secao) !important; font-weight: 600 !important;
  text-transform: none !important; letter-spacing: 0 !important; color: var(--rt-navy) !important; margin: 0 !important; padding: 0 !important;
}
html.gcs-ui #main-content .section-title::after, html.gcs-ui #main-content h2.section-title::after { display: none !important; }

/* ---------- D3. KPIs (.kpi .lbl/.val/.sub e .kpi-card) ---------- */
html.gcs-ui #main-content .kpi-grid { gap: var(--rt-gap) !important; margin-bottom: var(--rt-cab-mb) !important; }
html.gcs-ui #main-content :is(.kpi, .kpi-card) {
  container-type: inline-size; min-width: 0;
  background: var(--rt-sup) !important; border: 1px solid var(--rt-linha) !important; border-radius: var(--rt-r-cartao) !important;
  box-shadow: var(--rt-sh-cartao) !important; padding: 16px var(--rt-pad) !important; transform: none !important;
}
html.gcs-ui #main-content .kpi::before, html.gcs-ui #main-content .kpi::after { display: none !important; }
html.gcs-ui #main-content .kpi:has(.val.crit) { box-shadow: inset 3px 0 0 var(--rt-crit), var(--rt-sh-cartao) !important; }
html.gcs-ui #main-content .kpi:has(.val.warn) { box-shadow: inset 3px 0 0 #B7882B, var(--rt-sh-cartao) !important; }
html.gcs-ui #main-content .kpi[onclick]:hover, html.gcs-ui #main-content .kpi[style*="cursor:pointer"]:hover { border-color: var(--rt-linha-2) !important; }
html.gcs-ui #main-content :is(.kpi .lbl, .kpi .label, .kpi-card .label, .kpi-card > div:first-child) {
  font-size: 12px !important; font-weight: 500 !important; color: var(--rt-cinza) !important;
  text-transform: none !important; letter-spacing: 0 !important; white-space: normal !important;
  line-height: 1.35 !important; margin: 0 0 6px !important; overflow: visible !important;
}
html.gcs-ui #main-content :is(.kpi .val, .kpi-card > div:nth-child(2)) {
  font-family: var(--rt-sans) !important; font-size: clamp(17px, 11cqi, 28px) !important; font-weight: 600 !important;
  color: var(--rt-navy) !important; letter-spacing: -.01em !important; line-height: 1.15 !important;
  white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important;
  margin: 0 0 4px !important; font-variant-numeric: tabular-nums !important;
}
html.gcs-ui #main-content .kpi .val.crit { color: var(--rt-crit) !important; }
html.gcs-ui #main-content .kpi .val.warn { color: var(--rt-alerta) !important; }
html.gcs-ui #main-content .kpi .val.ok   { color: var(--rt-navy) !important; }   /* fim do dourado 2,17:1 */
/* dinheiro nunca com reticências (revisão de 27/09/2026): "R$ 2.151...." lê como dois mil reais. O gcs-ui.js marca com
   data-rt-moeda o valor em R$, US$ ou € que não coube; ele quebra a linha depois do "R$" e a letra pode descer até 14 px.
   O title com o valor inteiro continua */
html.gcs-ui #main-content :is(.kpi .val, .kpi-card > div:nth-child(2))[data-rt-moeda] {
  white-space: normal !important; text-overflow: clip !important; overflow-wrap: normal !important; word-break: normal !important;
  font-size: clamp(14px, 11cqi, 28px) !important; line-height: 1.2 !important;
}
html.gcs-ui #main-content :is(.kpi .sub, .kpi-card > div:nth-child(3)) {
  font-size: 12px !important; color: var(--rt-cinza) !important; line-height: 1.4 !important; margin: 0 !important;
  white-space: normal !important; overflow: hidden !important;
  display: -webkit-box !important; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
}

/* ---------- D4. tabelas ---------- */
html.gcs-ui #main-content table:not(.cvx-grid) {
  width: 100%; border-collapse: separate !important; border-spacing: 0 !important;
  background: var(--rt-sup) !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important;
  font-size: 13px !important;
}
html.gcs-ui #main-content table:not(.cvx-grid):not(.card *) {
  border: 1px solid var(--rt-linha) !important; border-radius: var(--rt-r-cartao) !important; overflow: hidden;
}
html.gcs-ui #main-content table:not(.cvx-grid) th {
  font-family: var(--rt-sans) !important; font-size: 11px !important; font-weight: 600 !important;
  letter-spacing: .06em !important; text-transform: uppercase !important; color: var(--rt-cinza) !important;
  background: var(--rt-sup-2) !important; padding: 10px 12px !important; border: 0 !important;
  border-bottom: 1px solid var(--rt-linha) !important; white-space: nowrap; vertical-align: bottom !important; text-align: left;
}
html.gcs-ui #main-content table:not(.cvx-grid) td {
  font-size: 13px !important; line-height: 1.45 !important; color: var(--rt-navy) !important;
  padding: 10px 12px !important; border: 0 !important; border-bottom: 1px solid #EEF1F5 !important;
  vertical-align: middle !important; text-transform: none !important; letter-spacing: 0 !important;
}
html.gcs-ui #main-content table:not(.cvx-grid) tbody tr:last-child > td { border-bottom: 0 !important; }
/* zebra discreta e hover neutro (sai o degradê dourado) */
html.gcs-ui #main-content table:not(.cvx-grid) tbody tr:nth-child(even) { background: var(--rt-zebra); }
html.gcs-ui #main-content table:not(.cvx-grid) tbody tr:nth-child(odd) { background: var(--rt-sup); }
html.gcs-ui #main-content table:not(.cvx-grid) tbody tr:hover { background: #F3F6F9 !important; }
/* seta "→" e cursor de clique só onde a linha abre algo (no Dashboard a linha leva ao calendário) */
html.gcs-ui #main-content table tbody tr { cursor: default; }
html.gcs-ui #main-content table tbody tr td:last-child { padding-right: 12px !important; }
html.gcs-ui #main-content table tbody tr td:last-child::after { content: none !important; display: none !important; }
/* a mão fica onde a linha declara clique: atributo onclick, cursor:pointer no estilo inline (vence o default acima,
   que é sem !important), data-rt-clicavel (para patch que liga clique por ouvinte) e a tabela do Dashboard */
html.gcs-ui #main-content table tbody tr[onclick],
html.gcs-ui #main-content table tbody tr[data-rt-clicavel],
html.gcs-ui[data-rt-rota="dashboard"] #main-content table tbody tr { cursor: pointer !important; }
/* nos diálogos (3.4 da spec) também sai a seta "→" do gcs-rows-clickable (a gaveta de mercado a mostrava em toda linha) */
html.gcs-ui :is(.modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) table tbody tr td:last-child::after { content: none !important; display: none !important; }
html.gcs-ui :is(.modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) table tbody tr td:last-child { padding-right: 12px !important; }
html.gcs-ui :is(.modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) table tbody tr:not([onclick]) { cursor: default; }
/* números à direita e tabulares (td.num do index e .rt-num marcado pelo gcs-ui.js) */
html.gcs-ui #main-content table:not(.cvx-grid) :is(td, th):is(.rt-num, .num) {
  text-align: right !important; font-variant-numeric: tabular-nums !important; white-space: nowrap !important;
}
html.gcs-ui #main-content table:not(.cvx-grid) td.mono { font-size: 12.5px !important; }
/* tabela densa (9 colunas ou mais no cabeçalho): 8 px de respiro lateral */
html.gcs-ui #main-content table:not(.cvx-grid):has(> thead > tr > :nth-child(9)) :is(td, th) { padding-left: 8px !important; padding-right: 8px !important; }
/* dentro de tabela o mono do estilo inline não vale: Archivo com algarismos tabulares (td.mono, .rt-mono e .rt-hash
   continuam mono). Foi a mono em valor e data que alargou o Crédito Monitoramento de 73 para 215 px escondidos */
html.gcs-ui.gcs-ui-mono #main-content table:not(.cvx-grid) :is([style*="font-family:var(--font-mono)"], [style*="font-family: var(--font-mono)"], [style*="font-family:monospace"], [style*="font-family: monospace"], [style*="font-family:ui-monospace"], [style*="font-family: ui-monospace"], [style*="JetBrains Mono"]):not(.mono, .rt-mono, .rt-hash) { font-family: var(--rt-sans) !important; font-variant-numeric: tabular-nums; }
/* ações sem corte: a célula de botões quebra linha em vez de empurrar a tabela. Célula em que o próprio app escreve
   white-space:nowrap fica em uma linha (o app decide, spec 1.2): em Lâminas "Prévia | Textos | Perfil | Aprovação &
   envio" cabia numa linha e passou a quebrar em duas, com linhas de 64 para 89 px (revisão r2 de 27/09/2026) */
html.gcs-ui #main-content table:not(.cvx-grid) td:has(> :is(.btn, a.btn, button)):not([style*="nowrap"]) { white-space: normal !important; }
html.gcs-ui #main-content table:not(.cvx-grid) td > :is(.btn, a.btn) { margin: 2px 0 2px 4px !important; vertical-align: middle; }
/* Fundos e o hub de Fundos: a célula de ações do app (nowrap, até 5 botões: Regulamento, Alteração, Monitoramento,
   Mercado, Editar) teria 565 px e empurraria a tabela. Quebra, mas com 232 px de largura mínima: até 2 botões por linha
   (Regulamento e Alteração, Monitoramento, Mercado e Editar), alinhados à direita, em vez de 5 botões em 4 linhas numa
   coluna de 197 px (linha do LOLO de 84 para 157 px). Com 260 px a tabela passava 18 px do cartão em 1440 */
html.gcs-ui:is([data-rt-rota="fundos"], [data-rt-rota="fundos-hub"]) #main-content table:not(.cvx-grid) td:has(> :is(.btn, a.btn, button))[style*="nowrap"] {
  white-space: normal !important; min-width: 232px; text-align: right !important;
}
/* linha que o app apaga com opacidade no estilo inline (Mudanças normativas arquivadas, opacity:.62): a opacidade levava
   30 textos para baixo do AA ("BACEN portal" 2,51:1, "arquivada" 2,52, selo BACEN 3,06). A linha volta a opacidade 1 e o
   arquivado aparece pela cor: texto cinza (5,83:1) e selos neutros (6,9:1) */
html.gcs-ui #main-content table:not(.cvx-grid) tbody tr:is([style*="opacity:."], [style*="opacity: ."], [style*="opacity:0."], [style*="opacity: 0."]):not(.__lamHost *) { opacity: 1 !important; }
html.gcs-ui #main-content table:not(.cvx-grid) tbody tr:is([style*="opacity:."], [style*="opacity: ."], [style*="opacity:0."], [style*="opacity: 0."]) > td,
html.gcs-ui #main-content table:not(.cvx-grid) tbody tr:is([style*="opacity:."], [style*="opacity: ."], [style*="opacity:0."], [style*="opacity: 0."]) > td :is(strong, b, div, small, span:not([style*="background"]):not(.badge, .pill)) { color: var(--rt-cinza) !important; }
html.gcs-ui #main-content table:not(.cvx-grid) tbody tr:is([style*="opacity:."], [style*="opacity: ."], [style*="opacity:0."], [style*="opacity: 0."]) > td :is(.badge, .pill, .status-pill, span[style*="background"]) { background: var(--rt-neutra-tinta) !important; color: var(--rt-neutra) !important; white-space: nowrap !important; }
/* linha única de estado vazio */
html.gcs-ui #main-content table:not(.cvx-grid) tbody tr:only-child > td[colspan],
html.gcs-ui #main-content table:not(.cvx-grid) td.empty {
  text-align: center !important; color: var(--rt-cinza) !important; padding: 28px 18px !important; font-size: 13px !important; background: var(--rt-sup) !important;
}
/* cor própria das células volta (o index forçava 374151 com !important em 166 células, inclusive vermelho de alerta) */
html.gcs-ui #main-content table:not(.cvx-grid) td:is([style*="color:#C0392B" i],[style*="color: #C0392B" i],[style*="color:#922B21" i],[style*="color:var(--crit" i],[style*="color: var(--crit" i]) { color: var(--rt-crit) !important; }
html.gcs-ui #main-content table:not(.cvx-grid) td:is([style*="color:#B45309" i],[style*="color: #B45309" i],[style*="color:#9A7D0A" i],[style*="color:var(--warn" i]) { color: var(--rt-alerta) !important; }
html.gcs-ui #main-content table:not(.cvx-grid) td:is([style*="color:#196F3D" i],[style*="color: #196F3D" i],[style*="color:var(--ok" i]) { color: var(--rt-ok) !important; }
html.gcs-ui #main-content table:not(.cvx-grid) td:is([style*="color:var(--text-4" i],[style*="color: var(--text-4" i],[style*="color:var(--text-5" i],[style*="color: var(--text-5" i],[style*="color:var(--text-6" i],[style*="color: var(--text-6" i],[style*="color:#64748B" i],[style*="color:#94A3B8" i],[style*="color:#7A8798" i],[style*="color:var(--sc-mut" i]) { color: var(--rt-cinza) !important; }
html.gcs-ui #main-content table:not(.cvx-grid) td:is([style*="color:var(--text-7" i],[style*="color:#0D2137" i]) { color: var(--rt-navy-2) !important; }
html.gcs-ui #main-content table:not(.cvx-grid) td:is([style*="color:#075985" i]) { color: var(--rt-info) !important; }

/* ---------- D5. botões ---------- */
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(.btn, .btn-export, .btn-primary, button.primary):not(.gc2 *) {
  display: inline-flex !important; align-items: center !important; justify-content: center; gap: 7px !important;
  min-height: var(--rt-h-ctl) !important; height: auto !important; padding: 0 13px !important;
  border-radius: var(--rt-r-ctl) !important; border: 1px solid var(--rt-linha) !important;
  background: var(--rt-sup) !important; color: var(--rt-navy) !important; box-shadow: none !important;
  font-family: var(--rt-sans) !important; font-size: var(--rt-fs-btn) !important; font-weight: 500 !important;
  line-height: 1.2 !important; letter-spacing: 0 !important; text-transform: none !important;
  text-decoration: none !important; transform: none !important; white-space: nowrap;
  transition: background var(--rt-t), border-color var(--rt-t), color var(--rt-t) !important;
}
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(.btn, .btn-export):not(.primary):not(.btn-primary):not(.gc2 *):hover {
  background: var(--rt-sup-2) !important; border-color: var(--rt-linha-2) !important; color: var(--rt-navy) !important;
}
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(.btn.primary, .btn-primary, button.primary, .btn.btn-primary):not(.gc2 *) {
  background: var(--rt-navy) !important; border-color: var(--rt-navy) !important; color: #fff !important;
}
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(.btn.primary, .btn-primary, button.primary):not(.gc2 *):hover {
  background: var(--rt-navy-2) !important; border-color: var(--rt-navy-2) !important; color: #fff !important;
}
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) .btn.sm:not(.gc2 *) {
  min-height: var(--rt-h-ctl-sm) !important; padding: 0 10px !important; font-size: var(--rt-fs-meta) !important;
}
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) .btn.success:not(.primary) { color: var(--rt-ok) !important; border-color: rgba(19,112,72,.35) !important; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) .btn.success:not(.primary):hover { background: var(--rt-ok-tinta) !important; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) .btn.danger:not(.primary) { color: var(--rt-crit) !important; border-color: rgba(161,59,64,.35) !important; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) .btn.danger:not(.primary):hover { background: var(--rt-crit-tinta) !important; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) .btn > svg { width: 15px !important; height: 15px !important; flex: none; display: inline-block !important; margin: 0 !important; }
/* seta automática do primário pequeno dentro de cartão: sai, e o ícone volta */
html.gcs-ui #main-content .card button.btn.primary.sm::after { content: none !important; display: none !important; }
/* botão que virou pílula vazia (o ✏️, o 👁 e o ⚖️ são apagados pela varredura de emojis do index): ícone de traço só
   por ação conhecida (tabela 3.5 da spec); ação desconhecida ganha três pontos e o nome "Mais opções" (gcs-ui.js) */
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) button.btn:empty { width: var(--rt-h-ctl-sm) !important; padding: 0 !important; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) button.btn:empty::before {
  content: ""; width: 15px; height: 15px; background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Ccircle cx='5' cy='12' r='1.8'/%3E%3Ccircle cx='12' cy='12' r='1.8'/%3E%3Ccircle cx='19' cy='12' r='1.8'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Ccircle cx='5' cy='12' r='1.8'/%3E%3Ccircle cx='12' cy='12' r='1.8'/%3E%3Ccircle cx='19' cy='12' r='1.8'/%3E%3C/svg%3E") center / contain no-repeat;
}
/* lápis: editar (openThirdPartyEditModal, openVoteEditModal, openTechModal, openChannelModal, openJurModal) e o ✏️ de Mudanças normativas (openRegChangeDetail) */
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) button.btn:empty:is([onclick*="Edit"], [onclick*="openTechModal"], [onclick*="openChannelModal"], [onclick*="openJurModal"], [onclick*="openRegChangeDetail"])::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20h9'/%3E%3Cpath d='M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4Z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20h9'/%3E%3Cpath d='M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4Z'/%3E%3C/svg%3E");
}
/* documento com visto: formalização extrajudicial (RTD) nas notificações de Tarefas */
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) button.btn:empty[onclick*="RTD"]::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 2v6h6'/%3E%3Cpath d='m9 15 2 2 4-4'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 2v6h6'/%3E%3Cpath d='m9 15 2 2 4-4'/%3E%3C/svg%3E");
}
/* olho: ver detalhe (Treinamentos, pedido de negociação); nunca lápis nem "Editar" */
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) button.btn:empty:is([onclick*="view"], [onclick*="View"], [onclick*="openTrainingDetail"])::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7S2 12 2 12z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7S2 12 2 12z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E");
}
/* lixeira em vermelho: apagar nunca pode parecer menu ou lápis (declarada por último, vence as outras) */
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) button.btn:empty:is([onclick*="Del("], [onclick*="delete"], [onclick*="excluir"], [onclick*="remov"]) { color: var(--rt-crit) !important; border-color: rgba(161,59,64,.35) !important; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) button.btn:empty:is([onclick*="Del("], [onclick*="delete"], [onclick*="excluir"], [onclick*="remov"])::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 6h18M8 6V4h8v2M19 6l-1 14H6L5 6'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 6h18M8 6V4h8v2M19 6l-1 14H6L5 6'/%3E%3C/svg%3E");
}
/* botão de apagar com ícone próprio (svg) ou texto, como o × de "remover candidato" da Análise de investimentos
   (window._iaDel): o app pede vermelho no estilo inline e o !important do .btn apagava a cor; ficava igual a um "fechar"
   (revisão r2). Vermelho com borda vermelha, como a lixeira (spec 3.5) */
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) button.btn[onclick*="Del("]:not(.primary, .btn-primary) { color: var(--rt-crit) !important; border-color: rgba(161,59,64,.35) !important; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) button.btn[onclick*="Del("]:not(.primary, .btn-primary):hover { background: var(--rt-crit-tinta) !important; border-color: var(--rt-crit) !important; color: var(--rt-crit) !important; }
/* botão de menu do celular (☰ também é apagado): ícone de traço */
html.gcs-ui #hamburger:empty::before {
  content: ""; display: block; width: 20px; height: 20px; margin: auto; background-color: #fff;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M4 7h16M4 12h16M4 17h16'/%3E%3C/svg%3E") center / contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M4 7h16M4 12h16M4 17h16'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* ---------- D6. selos (.badge .b-*, .pill .p-*) ---------- */
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(.badge, .pill, .status-pill):not(.gc2 *) {
  display: inline-flex !important; align-items: center !important; gap: 5px; min-height: 22px; padding: 0 9px !important;
  border-radius: var(--rt-r-pilula) !important; border: 0 !important; box-shadow: none !important;
  font-family: var(--rt-sans) !important; font-size: 11px !important; font-weight: 600 !important;
  letter-spacing: .01em !important; text-transform: none !important; line-height: 1.2 !important; white-space: nowrap;
  background: var(--rt-neutra-tinta) !important; color: var(--rt-neutra) !important;
}
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(.badge, .pill)::before { display: none !important; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(.badge.b-ok, .badge.ok, .pill.p-ok, .pill.ok)       { background: var(--rt-ok-tinta) !important; color: var(--rt-ok) !important; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(.badge.b-warn, .badge.warn, .pill.p-warn, .pill.warn) { background: var(--rt-alerta-tinta) !important; color: var(--rt-alerta) !important; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(.badge.b-crit, .badge.crit, .pill.p-crit, .pill.crit) { background: var(--rt-crit-tinta) !important; color: var(--rt-crit) !important; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(.badge.b-info, .badge.info, .pill.p-info)            { background: var(--rt-info-tinta) !important; color: var(--rt-info) !important; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(.badge.b-muted, .badge.muted, .pill.p-muted)         { background: var(--rt-neutra-tinta) !important; color: var(--rt-neutra) !important; }
/* selos inline que não passavam no contraste */
html.gcs-ui #main-content span[style*="background:#FEF9E7" i][style*="color:#9A7D0A" i] { color: var(--rt-alerta) !important; background: var(--rt-alerta-tinta) !important; text-transform: none !important; letter-spacing: .01em !important; font-size: 11px !important; border-radius: 999px !important; padding: 2px 9px !important; }
/* os outros níveis do mesmo selo (riskBadge do index: coluna Risco de Sistemas, Fundos, Canais e Jurisdições). Só o par
   âmbar tinha regra: "medio" virava pílula em caixa normal e "BAIXO" ficava em caixa alta com raio de 4 px, na mesma
   coluna. Agora os cinco níveis têm a mesma forma (pílula, 2px 9px, 11 px, caixa normal) e só a cor muda: baixo em ok
   (5,41:1), medio em alerta (5,56:1), alto e muito_alto em crítico (5,74:1), sem nível em neutro (6,69:1; no app era
   4,34:1) (confirmação de 27/09/2026, r3).
   Segunda volta da r3 (28/09/2026): as quatro regras valem só para o riskBadge, reconhecido pelo letter-spacing:0.3px
   do estilo inline. Sem isso elas pegavam qualquer span com o mesmo par de cores e criavam duas formas na mesma
   coluna: em Lâminas, "OK" e "pend." viravam pílula em caixa normal e "MULTA" (#FDEDEC com #B91C1C) ficava em caixa
   alta; em Contrapartes, "ATIVA" virava pílula e "CPF PENDENTE" ficava com raio de 4 px. Esses selos de estado voltam
   a ser desenhados como na camada anterior */
html.gcs-ui #main-content span[style*="letter-spacing:0.3px" i][style*="background:#E9F7EF" i][style*="color:#196F3D" i] { color: var(--rt-ok) !important; background: var(--rt-ok-tinta) !important; text-transform: none !important; letter-spacing: .01em !important; font-size: 11px !important; border-radius: 999px !important; padding: 2px 9px !important; }
html.gcs-ui #main-content span[style*="letter-spacing:0.3px" i][style*="background:#FDEDEC" i][style*="color:#C0392B" i] { color: var(--rt-crit) !important; background: var(--rt-crit-tinta) !important; text-transform: none !important; letter-spacing: .01em !important; font-size: 11px !important; border-radius: 999px !important; padding: 2px 9px !important; }
html.gcs-ui #main-content span[style*="letter-spacing:0.3px" i][style*="background:#FED7AA" i][style*="color:#7C2D12" i] { color: var(--rt-crit) !important; background: var(--rt-crit-tinta) !important; text-transform: none !important; letter-spacing: .01em !important; font-size: 11px !important; border-radius: 999px !important; padding: 2px 9px !important; }
html.gcs-ui #main-content span[style*="letter-spacing:0.3px" i][style*="background:#F1F5F9" i][style*="color:#64748B" i] { color: var(--rt-neutra) !important; background: var(--rt-neutra-tinta) !important; text-transform: none !important; letter-spacing: .01em !important; font-size: 11px !important; border-radius: 999px !important; padding: 2px 9px !important; }
html.gcs-ui #main-content span[style*="background:#F4E5B8" i][style*="color:#5D4037" i] { color: var(--rt-ouro-texto) !important; background: var(--rt-ouro-tinta) !important; font-size: 11px !important; border-radius: 999px !important; padding: 1px 8px !important; }
html.gcs-ui #main-content span[style*="background:#EBF5FB" i][style*="color:#1A5276" i] { color: var(--rt-info) !important; background: var(--rt-info-tinta) !important; border-radius: 999px !important; }

/* ---------- D7. abas e segmentados ---------- */
html.gcs-ui #main-content :is(.cvx-aba, .toggle-group button, .tab-toggle button, .tabset button) {
  height: 30px !important; min-height: 30px !important; padding: 0 12px !important; border-radius: 8px !important;
  border: 0 !important; background: transparent !important; color: var(--rt-cinza) !important; box-shadow: none !important;
  font-family: var(--rt-sans) !important; font-size: 12.5px !important; font-weight: 500 !important; text-transform: none !important; letter-spacing: 0 !important;
}
html.gcs-ui #main-content :is(.cvx-aba.on, .toggle-group button.active, .tab-toggle button.active, .tabset button.active) {
  background: #fff !important; color: var(--rt-navy) !important; box-shadow: 0 1px 2px rgba(15,23,42,.10) !important;
}
html.gcs-ui #main-content :is(.toggle-group, .tab-toggle, .tabset) { background: var(--rt-neutra-tinta) !important; border-radius: 10px !important; padding: 3px !important; border: 0 !important; box-shadow: none !important; }
/* abas de Administração e ANBIMA (.btn.sm dentro de um trilho montado com estilo inline). O index marca a aba ativa só
   com background navy no estilo inline, que o !important de .btn apagava (antes e com a camada, todas pareciam iguais):
   aqui viram o segmentado da gestora, e a ativa é achada pelo próprio estilo inline que o app escreve. Seletor com uma
   classe a mais que o de botão (D5), para vencer. */
html.gcs-ui #main-content .btn.sm:is(.adm-pill, .anb-pill) {
  min-height: 30px !important; height: 30px !important; padding: 0 12px !important; border-radius: 8px !important;
  border: 0 !important; background: transparent !important; color: var(--rt-cinza) !important; box-shadow: none !important;
  font-size: 12.5px !important; font-weight: 500 !important;
}
html.gcs-ui #main-content .btn.sm:is(.adm-pill, .anb-pill):hover { background: rgba(255,255,255,.6) !important; color: var(--rt-navy) !important; }
html.gcs-ui #main-content .btn.sm:is(.adm-pill, .anb-pill):is(.active, .on, [style*="background: var(--navy"], [style*="background:var(--navy"], [style*="background: rgb(13, 33, 55)"], [style*="background:#0D2137" i]) {
  background: #fff !important; color: var(--rt-navy) !important; box-shadow: 0 1px 2px rgba(15,23,42,.10) !important;
}
html.gcs-ui #main-content div:has(> .btn.sm:is(.adm-pill, .anb-pill)) { background: var(--rt-neutra-tinta) !important; border: 0 !important; border-radius: 10px !important; padding: 3px !important; gap: 2px !important; }
/* filtros em pílula (.tab de Segurança e de Autenticação de e-mail): o filtro da gestora, com o ativo em navy cheio
   (como segmentado, o ativo ficava branco sobre o cartão branco e sumia) */
html.gcs-ui #main-content .tab {
  display: inline-flex !important; align-items: center !important; height: 30px !important; min-height: 30px !important; padding: 0 11px !important;
  border-radius: var(--rt-r-pilula) !important; border: 1px solid var(--rt-linha) !important; background: #fff !important; color: var(--rt-cinza) !important;
  box-shadow: none !important; font-family: var(--rt-sans) !important; font-size: 12px !important; font-weight: 500 !important;
  text-transform: none !important; letter-spacing: 0 !important; cursor: pointer; white-space: nowrap;
}
html.gcs-ui #main-content .tab:hover { border-color: var(--rt-linha-2) !important; color: var(--rt-navy) !important; }
html.gcs-ui #main-content :is(.tab.on, .tab.active) { background: var(--rt-navy) !important; border-color: var(--rt-navy) !important; color: #fff !important; }

/* ---------- D8. formulários (fora da gestora, que tem os dela) ---------- */
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(input[type=text], input[type=search], input[type=email], input[type=number], input[type=date], input[type=tel], input[type=url], input[type=password], input:not([type]), select, textarea):not(.gc2 *):not(.rt-busca input) {
  background-color: #fff !important; border: 1px solid var(--rt-campo-borda) !important; border-radius: var(--rt-r-ctl) !important;
  box-shadow: none !important; color: var(--rt-navy) !important; font-family: var(--rt-sans) !important;
  font-size: 13px !important; font-weight: 400 !important; min-height: var(--rt-h-ctl);
}
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(input, select, textarea):not(.gc2 *):focus {
  border-color: var(--rt-ouro-texto) !important; box-shadow: var(--rt-anel) !important; outline: none !important;
}
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, .topbar, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(input, textarea)::placeholder { color: var(--rt-placeholder) !important; opacity: 1 !important; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(input[type=checkbox], input[type=radio]) { accent-color: var(--rt-navy); width: 16px; height: 16px; }
/* rótulo de campo: um só estilo nos diálogos (12 px, peso 500, cinza, caixa normal). Além do .form-row label, os outros
   três jeitos que o app usa: .lbl-mini (Nova e Editar tarefa), o <div> de texto antes do campo dentro de um <label>
   (Nova política, e o "E-mail de contato" que um patch insere no Editar colaborador) e o <label> com o campo dentro
   (Nova notificação, RTD). O index põe caixa alta com espaçamento em "label > div" e ".lbl-mini" (revisão r2).
   Fica de fora o <label> que é botão (label.btn com o campo de arquivo dentro: o "+ anexar" de Documentos na gaveta da
   operação de crédito saía cinza sobre navy, 2,96:1, com cara de desativado) e o campo de arquivo ou oculto não faz de
   um <label> um rótulo. As exclusões novas vão em :where(), que não pesa: a regra fica com a mesma força de antes
   (confirmação de 27/09/2026, r3) */
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(.form-row label:where(:not(.btn)), label.lbl, .lbl-mini, label > div:first-child:has(+ :is(input, select, textarea)), label:where(:not(.btn)):has(> :is(input:not([type=checkbox]):not([type=radio]):where(:not([type=file]):not([type=hidden])), select, textarea))):not(.gc2 *) { font-size: 12px !important; font-weight: 500 !important; color: var(--rt-cinza) !important; text-transform: none !important; letter-spacing: 0 !important; }
/* o index põe caixa alta e espaçamento em todo "label > div", inclusive no que não é rótulo (a caixa de nomes do CC em
   Nova tarefa herdava 0,1 em de espaçamento e cortava mais os nomes): caixa normal para todos */
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) label > div:not(.gc2 *) { text-transform: none !important; letter-spacing: 0 !important; }
/* Nova política: os rótulos vêm escritos em maiúsculas no próprio HTML ("CATEGORIA *", "CÓDIGO INTERNO", "FREQ. (meses)").
   Sem sigla entre eles: minúsculas com a primeira letra maiúscula ("Categoria *", "Código interno", "Freq. (meses)").
   Quando o patch da tela corrigir o texto (etapa 4a), esta regra não muda nada. O id repetido vence a regra de rótulo acima */
html.gcs-ui #new-pol-modal#new-pol-modal label > div:first-child:has(+ :is(input, select, textarea)) { text-transform: lowercase !important; }
html.gcs-ui #new-pol-modal#new-pol-modal label > div:first-child:has(+ :is(input, select, textarea))::first-letter { text-transform: uppercase !important; }
/* texto de ajuda depois do campo, dentro do mesmo <label> (nota "Usado pelos avisos internos..."): caixa normal, 11,5 px */
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) label > :is(input:not([type=checkbox]):not([type=radio]), select, textarea) ~ div:not(.gc2 *) { font-size: 11.5px !important; font-weight: 400 !important; text-transform: none !important; letter-spacing: 0 !important; line-height: 1.45 !important; }
/* mudança normativa (Calendário): os dois rótulos de campo ("Atualizar status" e "Anotação / Evidência de implementação")
   são <div> com estilo inline logo antes do campo e saíam em 11 px, peso 600, caixa alta. Passam ao rótulo único. As
   legendas de dado (Publicado, Vigência, Impacto, Resumo) não antecedem campo e ficam como estão (confirmação, r3) */
html.gcs-ui #rc-detail-modal div:is([style*="text-transform:uppercase"], [style*="text-transform: uppercase"]):has(+ :is(select, textarea)) { font-size: 12px !important; font-weight: 500 !important; color: var(--rt-cinza) !important; text-transform: none !important; letter-spacing: 0 !important; }
/* título de diálogo montado com estilo inline (faixa clara com o título e o × no fim: Nova tarefa, Nova política, Nova
   notificação, RTD, Central ONRTDPJ) no mesmo estilo do .modal-head h3: Playfair 19 px navy. Faixa escura fica de fora
   (o título dela é branco, regra do fim de D9) */
html.gcs-ui :is([style*="position: fixed"][style*="inset: 0"], [style*="position:fixed"][style*="inset:0"]):not(.__lamHost, .__lamHost *) > div > div:is([style*="justify-content:space-between"], [style*="justify-content: space-between"]):not([style*="gradient"], [style*="background:#0" i], [style*="background: #0" i], [style*="navy"]):has(> button:last-child) > :is(h2, h3, strong):first-child {
  font-family: var(--rt-serif) !important; font-size: 19px !important; font-weight: 600 !important; color: var(--rt-navy) !important;
  text-transform: none !important; letter-spacing: 0 !important; line-height: 1.3 !important; margin: 0 !important;
}
/* campo inativo continua parecendo inativo (só leitura ou desativado); botão inativo com opacidade e cursor de proibido.
   O :not(.rt-busca input) repetido deixa esta regra com a mesma força da regra de campo acima (que tem esse :not) e,
   declarada depois, ela vence: antes perdia por um elemento e Nome, E-mail e Role da gaveta Configurações ficavam brancos
   com texto navy, iguais ao seletor editável (revisão r2) */
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(input[type=text], input[type=search], input[type=email], input[type=number], input[type=date], input[type=tel], input[type=url], input[type=password], input:not([type]), select, textarea):is(:disabled, [readonly]):not(.gc2 *):not(.rt-busca input) { background-color: var(--rt-sup-2) !important; color: var(--rt-cinza) !important; border-color: var(--rt-linha-2) !important; cursor: not-allowed; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(input, textarea)[readonly]:not(:disabled):not(.gc2 *):not(.rt-busca input) { cursor: text; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(.btn, .btn-primary, button.primary):disabled:not(.gc2 *) { opacity: .5 !important; cursor: not-allowed !important; }

/* ---------- D9. modais e gavetas (sem escurecer o fundo: decisão antiga "force-light-mode" mantida) ---------- */
html.gcs-ui :is(.modal, .drawer):not(.gc2 *) {
  background: #fff !important; border: 1px solid var(--rt-linha) !important; box-shadow: var(--rt-sh-modal) !important;
}
html.gcs-ui .modal:not(.gc2 *) { border-radius: var(--rt-r-cartao) !important; }
html.gcs-ui .drawer { border-radius: 0 !important; border-width: 0 0 0 1px !important; }
html.gcs-ui :is(.modal-head, .drawer-head) { padding: 16px 20px !important; border-bottom: 1px solid var(--rt-linha) !important; background: #fff !important; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
html.gcs-ui :is(.modal-head, .drawer-head) :is(h2, h3) { font-family: var(--rt-serif) !important; font-size: 19px !important; font-weight: 600 !important; color: var(--rt-navy) !important; margin: 0 !important; text-transform: none !important; letter-spacing: 0 !important; }
html.gcs-ui :is(.modal-body, .drawer-body) { padding: 18px 20px !important; }
html.gcs-ui .modal-foot { padding: 14px 20px !important; border-top: 1px solid var(--rt-linha) !important; background: var(--rt-sup-2) !important; display: flex !important; justify-content: flex-end; gap: 8px !important; border-radius: 0 0 var(--rt-r-cartao) var(--rt-r-cartao); }
html.gcs-ui :is(.drawer-close, .modal-close) { width: 30px; height: 30px; border-radius: var(--rt-r-ctl) !important; color: var(--rt-cinza) !important; }
/* título em cabeçalho escuro montado com estilo inline (degradê ou fundo navy + color:#fff). O index tem
   "h1, h2, h3, h4 { color: var(--gcs-text) !important }", que vence o branco do contêiner: o título saía navy sobre navy
   (1,06:1 com a camada, 1,22:1 sem ela). Casos: Carta mensal (aprovação e envio: o nome do fundo não aparecia), Perfil da
   carta, Textos da carta, Ferramentas da lâmina, Operações Vórtx (Quem recebe os avisos) e Lançamentos (revisão de
   27/09/2026). A segunda linha vale dentro do #main-content, onde o h3 de cartão tem especificidade de id.
   Revisão r2: o degradê também vem escrito com variável (linear-gradient(135deg,var(--navy-800),var(--azul-700))) na
   mudança normativa do Calendário (#rc-detail-modal, título 1,00:1) e no detalhe de Treinamentos (#trn-detail) */
html.gcs-ui :is([style*="linear-gradient(135deg,#0D2137" i], [style*="linear-gradient(135deg, #0D2137" i], [style*="linear-gradient(135deg, rgb(13, 33, 55)"], [style*="linear-gradient(135deg,var(--navy" i], [style*="linear-gradient(135deg, var(--navy" i], [style*="background:#0D2137" i], [style*="background: #0D2137" i], [style*="background:#0F1B2D" i], [style*="background:#0A1A2E" i]):is([style^="color:#fff" i], [style*=";color:#fff" i], [style*="; color:#fff" i], [style*="; color: #fff" i], [style^="color: rgb(255, 255, 255)"], [style*="; color: rgb(255, 255, 255)"]) :is(h1, h2, h3, h4):not(.__lamHost, .__lamHost *),
html.gcs-ui #main-content :is([style*="linear-gradient(135deg,#0D2137" i], [style*="linear-gradient(135deg, #0D2137" i], [style*="linear-gradient(135deg, rgb(13, 33, 55)"], [style*="linear-gradient(135deg,var(--navy" i], [style*="linear-gradient(135deg, var(--navy" i], [style*="background:#0D2137" i], [style*="background: #0D2137" i], [style*="background:#0F1B2D" i], [style*="background:#0A1A2E" i]):is([style^="color:#fff" i], [style*=";color:#fff" i], [style*="; color:#fff" i], [style*="; color: #fff" i], [style^="color: rgb(255, 255, 255)"], [style*="; color: rgb(255, 255, 255)"]) :is(h1, h2, h3, h4):not(.__lamHost, .__lamHost *) {
  color: #fff !important;
}

/* ---------- D10. estados vazios, avisos, toast ---------- */
html.gcs-ui #main-content .empty { text-align: center !important; color: var(--rt-cinza) !important; font-size: 13px !important; font-style: normal !important; padding: 28px 18px !important; }
html.gcs-ui #main-content .empty :is(b, strong) { display: block; color: var(--rt-navy) !important; font-size: 14px !important; margin-bottom: 4px; }
html.gcs-ui #main-content .alert {
  background: #FFFAFA !important; background-image: none !important; color: var(--rt-navy) !important;
  border: 1px solid var(--rt-linha) !important; border-left: 0 !important; border-radius: var(--rt-r-lg) !important;
  box-shadow: inset 3px 0 0 var(--rt-crit), var(--rt-sh-cartao) !important; padding: 14px 18px !important; margin-bottom: var(--rt-cab-mb) !important;
}
html.gcs-ui #main-content .alert .alert-num { color: var(--rt-crit) !important; font-family: var(--rt-sans) !important; font-weight: 600 !important; }
html.gcs-ui #main-content .alert .alert-txt strong { color: var(--rt-crit) !important; font-size: 14px !important; font-weight: 600 !important; }
html.gcs-ui #main-content .alert .alert-txt small { color: var(--rt-cinza) !important; font-size: 12.5px !important; }
/* .alert que o app pinta de atenção (fundo inline com --warn, ex.: Verificação "Acesso somente leitura"): barra e número âmbar */
html.gcs-ui #main-content .alert:is([style*="--warn"], [style*="warn-"]) { box-shadow: inset 3px 0 0 var(--rt-alerta), var(--rt-sh-cartao) !important; background: #FFFCF5 !important; }
html.gcs-ui #main-content .alert:is([style*="--warn"], [style*="warn-"]) :is(.alert-num, .alert-txt strong) { color: var(--rt-alerta) !important; }
html.gcs-ui #main-content :is(.info-banner, .help-banner, .tip, .hint) {
  background: #fff !important; border: 1px solid var(--rt-linha) !important; border-left: 0 !important; border-radius: var(--rt-r-lg) !important;
  box-shadow: inset 3px 0 0 var(--rt-ouro), var(--rt-sh-cartao) !important; color: var(--rt-navy) !important;
}
html.gcs-ui #toast.toast { background: var(--rt-navy) !important; color: #fff !important; border-radius: var(--rt-r-menu) !important; box-shadow: var(--rt-sh-pop) !important; font-family: var(--rt-sans) !important; font-size: 13px !important; border: 0 !important; }
html.gcs-ui #toast.toast.error { background: var(--rt-crit) !important; box-shadow: var(--rt-sh-pop) !important; }   /* erro continua vermelho cheio (branco 6,53:1) */

/* ---------- D11. faixa "Deploy íntegro": sai da tela do Boss. A de arquivo truncado (.broken, "NÃO confie nesta
   versão") fica exatamente como o index a desenha, vermelha: nenhuma regra desta camada a alcança ---------- */
html.gcs-ui #integrity-banner:not(.broken) { display: none !important; }


/* ---------- D12. foco visível no claro (7E673B, 4,86:1 no fundo da página) ---------- */
html.gcs-ui :is(#main-content, .modal, .drawer, .sidebar, .topbar) :is(button, a, input, select, textarea, [tabindex]):focus-visible {
  outline: var(--rt-foco) !important; outline-offset: 2px !important;
}
html.gcs-ui .topbar :is(button, a, input, [tabindex]):focus-visible { outline: var(--rt-foco-escuro) !important; }
html.gcs-ui #main-content .rt-hero :is(button, a, [tabindex]):focus-visible { outline: var(--rt-foco-escuro) !important; }   /* sobre navy: C9B183 */

/* ---------- D13. ponte da gestora (gestora-cadastro.js v20260924d, classes gc2-*) até a gestora v2 usar rt-* ----------
   Protótipo design_sistema/identidade_onda2/site/ponte.css (medido em 24/09), trocado para os tokens --rt-*. */
html.gcs-ui .gc2 {
  --gc2-navy: var(--rt-navy); --gc2-navy-2: var(--rt-navy-2); --gc2-gold: var(--rt-ouro); --gc2-gold-d: var(--rt-ouro-texto);
  --gc2-gold-t: var(--rt-ouro-tinta); --gc2-t1: var(--rt-navy); --gc2-t2: var(--rt-cinza); --gc2-t3: var(--rt-cinza);
}
html.gcs-ui .gc2 .gc2-hero { background: linear-gradient(135deg, var(--rt-navy) 0%, #172640 60%, var(--rt-navy-2) 100%); }
html.gcs-ui .gc2 .gc2-hero::after { border-color: rgba(201,177,131,.28); }
html.gcs-ui .gc2 .gc2-hero-sep { background: linear-gradient(180deg, rgba(201,177,131,0), rgba(201,177,131,.55), rgba(201,177,131,0)); }
html.gcs-ui .gc2 .gc2-hero .gc2-pill b { color: var(--rt-ouro-claro); }
html.gcs-ui .gc2 .gc2-hero .gc2-pill.ok { background: rgba(201,177,131,.14); border-color: rgba(201,177,131,.45); }
html.gcs-ui .gc2 .gc2-hero-name { font-weight: 500; }
html.gcs-ui .gc2 .gc2-tag.gold { background: var(--rt-ouro-tinta); color: var(--rt-ouro-texto); }
html.gcs-ui .gc2 .gc2-tag.navy { color: var(--rt-navy-2); }
html.gcs-ui .gc2 .gc2-ft { font-size: 11px; letter-spacing: .02em; }
html.gcs-ui .gc2 :is(.gc2-mono-t, .gc2-hash) { font-family: var(--rt-mono) !important; }
html.gcs-ui .gc2 .gc2-link { border-bottom: 0; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 2px; text-decoration-color: rgba(30,48,73,.35); }
html.gcs-ui .gc2 .gc2-link:hover { text-decoration-color: var(--rt-ouro); }
html.gcs-ui .gc2 :is(button, a, input, select, textarea, label, [tabindex]):focus-visible { outline: var(--rt-foco) !important; outline-offset: 2px; }
html.gcs-ui .gc2 .gc2-hero :is(button, a):focus-visible { outline: var(--rt-foco-escuro) !important; }
html.gcs-ui .gc2 label.gc2-drop > div { font-size: inherit !important; color: inherit !important; }
html.gcs-ui .gc2 label.gc2-drop > .gc2-drop-ic { color: var(--rt-navy-2) !important; }
html.gcs-ui .gc2 .gc2-chip small { color: inherit !important; opacity: 1; }   /* sem .85: a contagem saía a 4,17:1 (auditoria com opacidade, revisão r2) */
html.gcs-ui .gc2 .gc2-search input::placeholder { color: var(--rt-placeholder) !important; opacity: 1; }

/* ---------- D14. cor de texto escrita no estilo inline que não passa no AA (mesma técnica da seção 6 da identidade:
   só "color:" no início do atributo ou depois de ";", para não pegar border-color nem background-color) ---------- */
html.gcs-ui #main-content .card div[style*="display:flex"][style*="gap"][style*="font-size"] { color: var(--rt-cinza) !important; }  /* relatorios-compact forçava 64748B */
html.gcs-ui #main-content [data-gcs-luxo-icon][style*="color: rgb(201, 169, 97)"] { background-color: var(--rt-ouro-tinta) !important; }  /* iniciais: 4,79:1 */
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is([style^="color:#94A3B8" i],[style*=";color:#94A3B8" i],[style*="; color:#94A3B8" i],[style^="color: #94A3B8" i],[style*="; color: #94A3B8" i],[style^="color: rgb(148, 163, 184)"],[style*="; color: rgb(148, 163, 184)"],[style^="color:#64748B" i],[style*=";color:#64748B" i],[style*="; color:#64748B" i],[style^="color: #64748B" i],[style*="; color: #64748B" i],[style^="color: rgb(100, 116, 139)"],[style*="; color: rgb(100, 116, 139)"],[style^="color:#CBD5E1" i],[style*=";color:#CBD5E1" i],[style*="; color:#CBD5E1" i],[style^="color: #CBD5E1" i],[style*="; color: #CBD5E1" i],[style^="color: rgb(203, 213, 225)"],[style*="; color: rgb(203, 213, 225)"],[style^="color:#7A8798" i],[style*=";color:#7A8798" i],[style*="; color:#7A8798" i],[style^="color: #7A8798" i],[style*="; color: #7A8798" i],[style^="color:#8391A5" i],[style*=";color:#8391A5" i],[style*="; color:#8391A5" i],[style^="color: #8391A5" i],[style*="; color: #8391A5" i],[style^="color:#7F8C8D" i],[style*=";color:#7F8C8D" i],[style*="; color:#7F8C8D" i],[style^="color: #7F8C8D" i],[style*="; color: #7F8C8D" i],[style^="color:#95A5A6" i],[style*=";color:#95A5A6" i],[style*="; color:#95A5A6" i],[style^="color: #95A5A6" i],[style*="; color: #95A5A6" i]) { color: var(--rt-cinza) !important; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is([style^="color:#3498DB" i],[style*=";color:#3498DB" i],[style*="; color:#3498DB" i],[style^="color: #3498DB" i],[style*="; color: #3498DB" i],[style^="color: rgb(52, 152, 219)"],[style*="; color: rgb(52, 152, 219)"],[style^="color:#2980B9" i],[style*=";color:#2980B9" i],[style*="; color:#2980B9" i],[style^="color: #2980B9" i],[style*="; color: #2980B9" i],[style^="color:#0891B2" i],[style*=";color:#0891B2" i],[style*="; color:#0891B2" i],[style^="color: #0891B2" i],[style*="; color: #0891B2" i]) { color: var(--rt-info) !important; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is([style^="color:#F39C12" i],[style*=";color:#F39C12" i],[style*="; color:#F39C12" i],[style^="color: #F39C12" i],[style*="; color: #F39C12" i],[style^="color: rgb(243, 156, 18)"],[style*="; color: rgb(243, 156, 18)"],[style^="color:#B45309" i],[style*=";color:#B45309" i],[style*="; color:#B45309" i],[style^="color: #B45309" i],[style*="; color: #B45309" i],[style^="color:#D97706" i],[style*=";color:#D97706" i],[style*="; color:#D97706" i],[style^="color: #D97706" i],[style*="; color: #D97706" i],[style^="color:#B9770E" i],[style*=";color:#B9770E" i],[style*="; color:#B9770E" i],[style^="color: #B9770E" i],[style*="; color: #B9770E" i]) { color: var(--rt-alerta) !important; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is([style^="color:#27AE60" i],[style*=";color:#27AE60" i],[style*="; color:#27AE60" i],[style^="color: #27AE60" i],[style*="; color: #27AE60" i],[style^="color: rgb(39, 174, 96)"],[style*="; color: rgb(39, 174, 96)"],[style^="color:#178A57" i],[style*=";color:#178A57" i],[style*="; color:#178A57" i],[style^="color: #178A57" i],[style*="; color: #178A57" i],[style^="color:#16A34A" i],[style*=";color:#16A34A" i],[style*="; color:#16A34A" i],[style^="color: #16A34A" i],[style*="; color: #16A34A" i]) { color: var(--rt-ok) !important; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is([style^="color:#7E5BEF" i],[style*=";color:#7E5BEF" i],[style*="; color:#7E5BEF" i],[style^="color: #7E5BEF" i],[style*="; color: #7E5BEF" i]) { color: var(--rt-roxa) !important; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is([style^="color:#E74C3C" i],[style*=";color:#E74C3C" i],[style*="; color:#E74C3C" i],[style^="color: #E74C3C" i],[style*="; color: #E74C3C" i],[style^="color:#C4494F" i],[style*=";color:#C4494F" i],[style*="; color:#C4494F" i],[style^="color: #C4494F" i],[style*="; color: #C4494F" i],[style^="color: rgb(196, 73, 79)"],[style*="; color: rgb(196, 73, 79)"],[style*="color:var(--crit-700)"],[style*="color:var(--crit-600)"]) { color: var(--rt-crit) !important; }
/* verde e âmbar semânticos escritos com variável no estilo inline (o vermelho já está acima): "BAIXO" no Impacto da
   mudança normativa saía em var(--ok-600), 4,17:1 sobre a caixa F8FAFC (auditoria dos diálogos, revisão r2) */
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is([style^="color:var(--ok-6"], [style*=";color:var(--ok-6"], [style*="; color:var(--ok-6"], [style*="; color: var(--ok-6"], [style^="color:var(--ok-5"], [style*=";color:var(--ok-5"], [style*="; color: var(--ok-5"]):not(.__lamHost *) { color: var(--rt-ok) !important; }
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is([style^="color:var(--warn-6"], [style*=";color:var(--warn-6"], [style*="; color:var(--warn-6"], [style*="; color: var(--warn-6"], [style^="color:var(--warn-5"], [style*=";color:var(--warn-5"], [style*="; color: var(--warn-5"]):not(.__lamHost *) { color: var(--rt-alerta) !important; }
html.gcs-ui #main-content .card div[style*="color:#fff" i]:is([style*="font-size:12"],[style*="font-size:13"]) { color: #fff !important; }  /* avatar com fundo cheio: o relatorios-compact pintava 475569 por cima */
html.gcs-ui #main-content .page-subtitle { font-size: 13px !important; color: var(--rt-cinza) !important; }
/* auditoria com a opacidade acumulada (revisão r2): o selo TERCEIRIZADO do organograma (E65100 sobre FFF3E0, 3,46:1) vai ao
   âmbar de texto; o cartão de fundo não coberto em Fundos (opacity:.75 inline, "Não coberto pela API" a 3,39:1) fica com
   opacidade 1, fundo da faixa clara e texto cinza (o apagado aparece pela cor, como a linha arquivada) */
html.gcs-ui #main-content .org-tag-mini:is([style*="color:#E65100" i], [style*="color: #E65100" i]) { color: var(--rt-alerta) !important; }
html.gcs-ui #main-content div[style*="background:#fff" i][style*="border-radius"]:is([style*="opacity:.75"], [style*="opacity: 0.75"]) { opacity: 1 !important; background: var(--rt-sup-2) !important; }
html.gcs-ui #main-content div[style*="background:#fff" i][style*="border-radius"]:is([style*="opacity:.75"], [style*="opacity: 0.75"]) * { color: var(--rt-cinza) !important; }

/* ---------- D15. guarda: o que o app esconde continua escondido ([hidden], .hidden, display:none inline) ----------
   As regras acima põem display com !important em botão, selo, ações de cabeçalho e rodapé de modal; sem esta
   guarda, um botão escondido por JS ou um selo com .hidden reapareceria. Especificidade igual, declarada depois. */
html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(.btn, .btn-export, .btn-primary, button.primary, .badge, .pill, .status-pill, .page-actions, .modal-foot, .page-head):is([hidden], .hidden, [style*="display:none"], [style*="display: none"]) { display: none !important; }

/* =====================================================================================
   E. POR TELA (html[data-rt-rota], escrito pelo gcs-ui.js no hashchange; nenhum observador)
   E1 sobretítulo = área do menu. "Em desenvolvimento" não é área: as telas de lá levam a área real.
   ===================================================================================== */
html.gcs-ui:is([data-rt-rota="dashboard"],[data-rt-rota="calendario"],[data-rt-rota="tarefas"]) { --rt-sobre-txt: "Visão geral"; }
html.gcs-ui:is([data-rt-rota="qdd"],[data-rt-rota="anbima"],[data-rt-rota="equipe"],[data-rt-rota="governanca"],[data-rt-rota="comites"],[data-rt-rota="politicas"],[data-rt-rota="voto"],[data-rt-rota="cliente360"],[data-rt-rota="carteiras-cadm"],[data-rt-rota="contratos"],[data-rt-rota="treinamentos"]) { --rt-sobre-txt: "Gestora"; }
html.gcs-ui:is([data-rt-rota="fundos-hub"],[data-rt-rota="fundos"],[data-rt-rota="fundos-mercado"],[data-rt-rota="vortx-ops"],[data-rt-rota="fundos-laminas"],[data-rt-rota="enquadramento"],[data-rt-rota="risco-liquidez"],[data-rt-rota="pdd"],[data-rt-rota="relatorio-risco"],[data-rt-rota="onboarding-cotistas"],[data-rt-rota="estudo-mercado"]) { --rt-sobre-txt: "Fundos"; }
html.gcs-ui:is([data-rt-rota="carteira-operacoes"],[data-rt-rota="carteira-monitoramento"],[data-rt-rota="credito-hub"],[data-rt-rota="analise-investimentos"]) { --rt-sobre-txt: "Carteira & Ativos"; }
html.gcs-ui:is([data-rt-rota="credito-operacoes"],[data-rt-rota="credito-monitoramento"],[data-rt-rota="credito-contrapartes"]) { --rt-sobre-txt: "Crédito privado"; }
html.gcs-ui:is([data-rt-rota="pld"],[data-rt-rota="coaf"],[data-rt-rota="verificacao"],[data-rt-rota="air"]) { --rt-sobre-txt: "PLD e Compliance"; }
html.gcs-ui:is([data-rt-rota="relatorios"],[data-rt-rota="config-gestora"],[data-rt-rota="lgpd"],[data-rt-rota="seguranca"],[data-rt-rota="dmarc"],[data-rt-rota="sistemas"],[data-rt-rota="audit"],[data-rt-rota="backups"],[data-rt-rota="custos"],[data-rt-rota="google-integracao"],[data-rt-rota="usuarios"]) { --rt-sobre-txt: "Administração"; }

/* E2. Políticas: cabeçalho próprio (h1 inline 22px Inter) vira o cabeçalho padrão */
html.gcs-ui[data-rt-rota="politicas"] #main-content > div:first-child:has(> div > h1) { align-items: flex-end !important; margin-bottom: var(--rt-cab-mb) !important; gap: 16px; flex-wrap: wrap; }
html.gcs-ui[data-rt-rota="politicas"] #main-content > div:first-child > div:first-child::before {
  content: var(--rt-sobre-txt, none); display: block; font-size: 11px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--rt-ouro-texto); margin-bottom: 4px;
}
html.gcs-ui[data-rt-rota="politicas"] #main-content > div:first-child > div:first-child > h1 {
  font-family: var(--rt-serif) !important; font-size: var(--rt-fs-titulo) !important; font-weight: 600 !important; color: var(--rt-navy) !important; line-height: 1.15 !important; letter-spacing: -.005em !important;
}
html.gcs-ui[data-rt-rota="politicas"] #main-content > div:first-child > div:first-child > h1 + div { font-size: 13px !important; color: var(--rt-cinza) !important; }

/* E3. Originação: o quadro de 6 colunas cabe na largura (antes cortava "Decidido") e rola dentro do cartão se faltar espaço.
   Vale também em Crédito Privado, Operações (revisão r2): o mesmo quadro cortava a coluna Decidido em 52 px */
html.gcs-ui:is([data-rt-rota="credito-hub"], [data-rt-rota="credito-operacoes"]) #main-content div[style*="flex:1"][style*="min-width:180px"] { min-width: 150px !important; }
html.gcs-ui:is([data-rt-rota="credito-hub"], [data-rt-rota="credito-operacoes"]) #main-content div:has(> div[style*="min-width:180px"]) { overflow-x: auto; }

/* E4. Tarefas: coluna vazia do quadro ("Vazia" em itálico) no padrão de vazio */
html.gcs-ui[data-rt-rota="tarefas"] #main-content [style*="font-style:italic"] { font-style: normal !important; color: var(--rt-cinza) !important; }

/* E5. Crédito Monitoramento: o código da operação não quebra em 3 linhas. Sem o mínimo de 220 px da contraparte, com a
   tabela densa (D4) e sem mono nas colunas de valor e data, as 10 colunas cabem em 1440; em 1366 e 1280 a tabela rola
   dentro do cartão (juntar colunas de valor fica para o credito-vortx.js, etapa 4c) */
html.gcs-ui[data-rt-rota="credito-monitoramento"] #main-content table:not(.cvx-grid) td:first-child { white-space: nowrap !important; }
/* Parcelas, grade mês a mês: a coluna fixa "Operação" (td.op, position:sticky) não ficava fixa no computador. O index dá
   overflow:hidden à tabela, e a tabela virava o contêiner de rolagem do sticky: com a grade aberta no mês atual (rolada
   1.344 px) as 12 linhas apareciam sem o nome da operação. Pré-existente; no celular já funcionava (revisão r2). Só o
   overflow muda; o resto da grade continua como o app desenha (exceção de 23/09) */
html.gcs-ui[data-rt-rota="credito-monitoramento"] #main-content table.cvx-grid { overflow: visible !important; }
/* com a coluna fixa, o que passa da célula Operação fica por cima do primeiro mês. A segunda linha (código · fundo ·
   vencimento e o selo "dia N") sai da regra de mono (seção 3) e volta a caber em 10 de 12 operações; nas duas de código
   longo ela ainda passava 26 px (sem a camada, 47). No computador só essa linha pode quebrar: o selo desce para a linha
   de baixo, dentro da coluna. A coluna fica nos 270 px que já tinha (o mínimo era 232: com a quebra liberada ela
   encolhia e a segunda linha quebrava nas 12 operações) e a linha pode usar 12 dos 16 px de respiro da direita, como
   já usava: assim só as duas operações de código longo quebram. Tamanho de letra e o resto da grade não mudam; no
   celular a grade fica como o app desenha (confirmação de 27/09/2026, r3) */
@media (min-width: 901px) {
  html.gcs-ui[data-rt-rota="credito-monitoramento"] #main-content table.cvx-grid td.op { min-width: 270px !important; }
  html.gcs-ui[data-rt-rota="credito-monitoramento"] #main-content table.cvx-grid td.op > div:has(> .cvx-dia) { white-space: normal !important; margin-right: -12px !important; }
}


/* E6. REALCES (seção 4 da spec; montados pelo gcs-ui.js). Dashboard: o aviso vermelho vira pílula do cartão de situação
   (mesma informação). Só some quando o cartão existe: se o realce falhar, o aviso volta sozinho */
html.gcs-ui[data-rt-rota="dashboard"] #main-content:has(> [data-rt-realce="dashboard"]) > .alert { display: none !important; }

/* E7. Cliente 360: o cabeçalho da ficha (avatar, nome, selos, nota) vira cartão de identidade, por CSS sobre a estrutura
   que o index desenha. O gcs-ui.js só escreve data-rt-tipo="pf" ou "pj" nesse bloco (lido do selo PF/PJ da própria
   ficha, que é o c.tipo do cliente). Terceiro não tem logo nem monograma: ícone de traço da categoria. Enquanto não
   houver data-rt-tipo, sai o ícone neutro de ficha (nunca a pessoa para uma empresa). */
html.gcs-ui[data-rt-rota="cliente360"] #c360-detail > .card > div:first-child:has(> [data-gcs-luxo-icon][style*="52px"]) {
  background: linear-gradient(135deg, var(--rt-navy) 0%, #172640 60%, var(--rt-navy-2) 100%) !important;
  margin: -18px -20px 16px !important; padding: 20px 22px !important; border-radius: var(--rt-r-cartao) var(--rt-r-cartao) 0 0;
  position: relative; overflow: hidden; color: #fff;
}
html.gcs-ui[data-rt-rota="cliente360"] #c360-detail > .card > div:first-child:has(> [data-gcs-luxo-icon][style*="52px"])::after {
  content: ""; position: absolute; right: -60px; top: -60px; width: 220px; height: 220px; border-radius: 50%; border: 1px solid rgba(201,177,131,.28); pointer-events: none;
}
/* avatar de iniciais sai; entra o ícone de traço (neutro de ficha; pessoa para PF; prédio para PJ) */
html.gcs-ui[data-rt-rota="cliente360"] #c360-detail [data-gcs-luxo-icon][style*="52px"] {
  position: relative !important; color: transparent !important; -webkit-text-fill-color: transparent !important; border-radius: 12px !important; background: rgba(201,177,131,.14) !important; border: 1px solid rgba(201,177,131,.35) !important; color: var(--rt-ouro-claro) !important;
}
html.gcs-ui[data-rt-rota="cliente360"] #c360-detail [data-gcs-luxo-icon][style*="52px"]::before {
  content: ""; position: absolute; inset: 0; margin: auto; width: 26px; height: 26px; background-color: var(--rt-ouro-claro);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Ccircle cx='9' cy='11' r='2'/%3E%3Cpath d='M6.5 16a2.5 2.5 0 0 1 5 0M14 10h4M14 13h4'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Ccircle cx='9' cy='11' r='2'/%3E%3Cpath d='M6.5 16a2.5 2.5 0 0 1 5 0M14 10h4M14 13h4'/%3E%3C/svg%3E") center / contain no-repeat;
}
html.gcs-ui[data-rt-rota="cliente360"] #c360-detail > .card > div:first-child[data-rt-tipo="pf"] > [data-gcs-luxo-icon][style*="52px"]::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21a8 8 0 0 1 16 0'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M4 21a8 8 0 0 1 16 0'/%3E%3C/svg%3E");
}
html.gcs-ui[data-rt-rota="cliente360"] #c360-detail > .card > div:first-child[data-rt-tipo="pj"] > [data-gcs-luxo-icon][style*="52px"]::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16M16 9h2a2 2 0 0 1 2 2v10M2 21h20'/%3E%3Cpath d='M8 7h4M8 11h4M8 15h4'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16M16 9h2a2 2 0 0 1 2 2v10M2 21h20'/%3E%3Cpath d='M8 7h4M8 11h4M8 15h4'/%3E%3C/svg%3E");
}
html.gcs-ui[data-rt-rota="cliente360"] #c360-detail > .card > div:first-child:has(> [data-gcs-luxo-icon][style*="52px"]) > div:nth-child(2) > div:first-child {
  font-family: var(--rt-serif) !important; font-size: 22px !important; font-weight: 500 !important; color: #fff !important; letter-spacing: 0 !important;
}
html.gcs-ui[data-rt-rota="cliente360"] #c360-detail > .card > div:first-child:has(> [data-gcs-luxo-icon][style*="52px"]) > div:nth-child(2) > div:first-child span { color: var(--rt-ouro-claro) !important; font-family: var(--rt-sans) !important; }
html.gcs-ui[data-rt-rota="cliente360"] #c360-detail > .card > div:first-child:has(> [data-gcs-luxo-icon][style*="52px"]) .badge {
  background: rgba(255,255,255,.08) !important; border: 1px solid rgba(255,255,255,.18) !important; color: #fff !important; min-height: 26px; padding: 0 10px !important; font-weight: 500 !important;
}
html.gcs-ui[data-rt-rota="cliente360"] #c360-detail > .card > div:first-child:has(> [data-gcs-luxo-icon][style*="52px"]) > div:last-child {
  background: rgba(255,255,255,.06) !important; border: 1px solid rgba(201,177,131,.35) !important;
}
html.gcs-ui[data-rt-rota="cliente360"] #c360-detail > .card > div:first-child:has(> [data-gcs-luxo-icon][style*="52px"]) > div:last-child > div { color: rgba(255,255,255,.78) !important; font-size: 11px !important; }
html.gcs-ui[data-rt-rota="cliente360"] #c360-detail > .card > div:first-child:has(> [data-gcs-luxo-icon][style*="52px"]) > div:last-child > div:first-child { color: var(--rt-ouro-claro) !important; font-size: 34px !important; font-weight: 600 !important; }
html.gcs-ui[data-rt-rota="cliente360"] #c360-detail > .card > div:first-child:has(> [data-gcs-luxo-icon][style*="52px"]) > div:last-child > div:nth-child(2) { color: var(--rt-ouro-claro) !important; }
html.gcs-ui[data-rt-rota="cliente360"] #c360-detail > .card > div:first-child:has(> [data-gcs-luxo-icon][style*="52px"]) > div:last-child > div:last-child { color: #9FE0BE !important; }

/* E8. Calendário: dias do mês anterior e do seguinte em cinza legível (antes 98A2B1, 2,47:1) */
html.gcs-ui[data-rt-rota="calendario"] #main-content .cal-day-other .cal-day-num { color: var(--rt-cinza) !important; font-weight: 400 !important; }

/* E9. Relatório de risco (e a aba VaR da cota, #/var): as células de VaR têm vermelho (#C0392B, paramétrico 1 e 21 dias)
   e âmbar (#B45309, histórico) fixos no index, sem teste de limite. Sem a camada o index apagava a cor de toda célula;
   com a regra "cor própria volta" (D4), o VaR de 0,45% do LOLO saía em vermelho crítico ao lado do selo ENQUADRADO, e
   vermelho neste sistema é estouro ou multa. Fica navy, com o negrito do app. É o único vermelho ou âmbar incondicional em
   célula de tabela do #main-content (varredura do index e dos 33 patches em 27/09/2026; os outros dependem de condição,
   como atraso ou provisão maior que zero). Sai quando o index colorir o VaR pelo limite */
html.gcs-ui:is([data-rt-rota="relatorio-risco"], [data-rt-rota="var"]) #main-content table:not(.cvx-grid) td:is([style*="text-align:right;font-weight:700;color:#C0392B" i], [style*="text-align:right;font-weight:700;color:#B45309" i]) { color: var(--rt-navy) !important; }

/* E10. Cliente 360: os 4 indicadores da ficha (PL atual, receita anual, evolução, último contato) vêm numa grade inline de
   4 colunas. Abaixo de 1400 px cada cartão ficava estreito (134 px em 1280) e o PL saía "R$ 2.151...." (lido como dois
   mil reais). De 561 a 1399 px a grade vira 2 x 2; até 560 px o index já põe um por linha (revisão de 27/09/2026) */
@media (min-width: 561px) and (max-width: 1399px) {
  html.gcs-ui[data-rt-rota="cliente360"] #c360-detail div:is([style*="grid-template-columns:repeat(4,1fr)"], [style*="grid-template-columns: repeat(4, 1fr)"]):has(> .kpi) { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}

/* E11. Crédito Privado, Contrapartes (revisão r2 de 27/09/2026): no padrão das telas irmãs (Monitoramento, Operações,
   Originação). As abas 1 e 2 montam os KPIs com estilo inline (rótulo em caixa alta a 10,5 px) e a aba Originação usa as
   classes cpo-* do contrapartes-originacao.js */
html.gcs-ui #main-content :is(.cpo-kpi-l, #cp-content .card > div:first-child:is([style*="text-transform:uppercase"], [style*="text-transform: uppercase"])) {
  font-size: 12px !important; font-weight: 500 !important; color: var(--rt-cinza) !important; text-transform: none !important;
  letter-spacing: 0 !important; line-height: 1.35 !important; margin: 0 0 6px !important;
}
html.gcs-ui #main-content :is(.cpo-kpi-v, #cp-content .card:has(> div:first-child[style*="text-transform"]) > div:nth-child(2)) {
  font-weight: 600 !important; letter-spacing: -.01em !important; line-height: 1.15 !important; margin: 0 0 4px !important; font-variant-numeric: tabular-nums;
}
html.gcs-ui #main-content :is(.cpo-kpi-s, #cp-content .card:has(> div:first-child[style*="text-transform"]) > div:nth-child(3)) { font-size: 12px !important; color: var(--rt-cinza) !important; line-height: 1.4 !important; margin: 0 !important; }
html.gcs-ui #main-content :is(.cpo-kpi, #cp-content .card:has(> div:first-child[style*="text-transform"])) { padding: 16px var(--rt-pad) !important; }
/* abas do topo (Contrapartes, Marcação a mercado, Originação) e o seletor "Em andamento / Arquivadas": o trilho segmentado
   do Monitoramento (fundo neutro, ativa em branco), não mais botões com a ativa em navy cheio. A ativa é a que o app marca
   com .primary (abas) ou aria-pressed="true" (seletor) */
html.gcs-ui #main-content #cp-tabs { display: inline-flex !important; flex-wrap: wrap; gap: 2px; padding: 3px !important; background: var(--rt-neutra-tinta) !important; border-radius: 10px !important; }
html.gcs-ui #main-content #cp-tabs > :is(.btn, button) {
  margin: 0 !important; min-height: 30px !important; height: 30px !important; padding: 0 12px !important; border-radius: 8px !important;
  border: 0 !important; background: transparent !important; color: var(--rt-cinza) !important; box-shadow: none !important;
  font-size: 12.5px !important; font-weight: 500 !important;
}
html.gcs-ui #main-content #cp-tabs > :is(.btn, button):hover { background: rgba(255,255,255,.6) !important; color: var(--rt-navy) !important; }
html.gcs-ui #main-content #cp-tabs > :is(.btn, button):is(.primary, [aria-pressed="true"], .active, .on) { background: #fff !important; color: var(--rt-navy) !important; box-shadow: 0 1px 2px rgba(15,23,42,.10) !important; }
html.gcs-ui #main-content .cpo-seg { background: var(--rt-neutra-tinta) !important; border: 0 !important; border-radius: 10px !important; padding: 3px !important; gap: 2px; overflow: visible !important; }
html.gcs-ui #main-content .cpo-seg button {
  height: 30px; padding: 0 12px !important; border: 0 !important; border-radius: 8px !important; background: transparent !important;
  color: var(--rt-cinza) !important; font-family: var(--rt-sans) !important; font-size: 12.5px !important; font-weight: 500 !important; box-shadow: none !important;
}
html.gcs-ui #main-content .cpo-seg button:hover { background: rgba(255,255,255,.6) !important; color: var(--rt-navy) !important; }
html.gcs-ui #main-content .cpo-seg button[aria-pressed="true"] { background: #fff !important; color: var(--rt-navy) !important; box-shadow: 0 1px 2px rgba(15,23,42,.10) !important; }
/* rótulo da célula no celular (a tabela vira lista e cada célula ganha o nome da coluna a 9,5 px em caixa alta) */
html.gcs-ui #main-content .cpo-tab td[data-rot]::before { font-size: 11px !important; font-weight: 500 !important; text-transform: none !important; letter-spacing: 0 !important; color: var(--rt-cinza) !important; }
@media (max-width: 640px) {
  /* 4 KPIs em 2 colunas (spec 5.3), nas três abas; antes empilhavam em 1 coluna */
  html.gcs-ui #main-content #cp-content > div:is([style*="repeat(4,1fr)"], [style*="repeat(4, 1fr)"]),
  html.gcs-ui #main-content #cp-content .cpo-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 10px !important; }
}
/* aba Originação em notebook (1280 px): com o respiro padrão de 12 px por lado a tabela de 7 colunas media 939 px num
   cartão de 906 e os quatro botões de Ações ficavam cortados em 21 px ("Checagens padrã", "Fich"); sem a camada cabia
   inteira. Entre 901 e 1320 px o respiro lateral dessa tabela cai para 8 px (o patch da tela já pedia 9 px pelo mesmo
   motivo); de 1321 px em diante o padrão cabe (confirmação de 27/09/2026, r3) */
@media (min-width: 901px) and (max-width: 1320px) {
  html.gcs-ui #main-content table.cpo-tab:not(.cvx-grid) :is(th, td) { padding-left: 8px !important; padding-right: 8px !important; }
}

/* E12. Segurança e Autenticação de e-mail (CSS injetado pelas rotas, cinza #7A8798 a 3,65:1): o cinza do texto passa ao
   oficial (5,83:1) pela variável da própria tela; rótulo de KPI no padrão (12 px, caixa normal); cabeçalho de seção de
   cartão em navy, sem caixa alta (revisão r2 de 27/09/2026) */
html.gcs-ui #secc { --sc-mut: var(--rt-cinza); }
html.gcs-ui #dmc { --dm: var(--rt-cinza); }
html.gcs-ui #main-content :is(#secc, #dmc, #gcs-dmarc-tile) :is([style*="color:#7A8798" i], [style*="color: #7A8798" i], [style*="color:#9AA6B4" i], [style*="color: #9AA6B4" i], [style*="color: rgb(122, 135, 152)"]) { color: var(--rt-cinza) !important; }
html.gcs-ui #main-content #secc .row .rt { color: var(--rt-cinza) !important; }
/* eixo e legenda do medidor diário (dmarc-cockpit.js escreve #7A8798 direto na classe, sem a variável da tela) */
html.gcs-ui #main-content #dmc :is(.gcs-cp-eixo, .gcs-cp-lg) { color: var(--rt-cinza) !important; }
html.gcs-ui #main-content :is(#secc .sc-k .l, #dmc .d-k .l, #gcs-dmarc-tile .t-l) {
  font-size: 12px !important; font-weight: 500 !important; color: var(--rt-cinza) !important; text-transform: none !important; letter-spacing: 0 !important;
}
html.gcs-ui #main-content :is(#secc .sc-k .s, #dmc .d-k .s, #gcs-dmarc-tile .t-s) { font-size: 12px !important; color: var(--rt-cinza) !important; }
html.gcs-ui #main-content :is(#secc .sc-h, #dmc .d-h) { font-size: var(--rt-fs-corpo) !important; font-weight: 600 !important; color: var(--rt-navy) !important; text-transform: none !important; letter-spacing: 0 !important; }
html.gcs-ui #main-content #secc .dcard .dn { font-size: 12px !important; font-weight: 600 !important; text-transform: none !important; letter-spacing: 0 !important; }
/* "0/7 CONTROLES": o texto vem em maiúsculas no HTML; em minúsculas, sem espaçamento, lê como "0/7 controles" */
html.gcs-ui #main-content #secc .dcard .dc small { text-transform: lowercase !important; letter-spacing: 0 !important; font-weight: 500 !important; font-variant: normal !important; margin-left: 5px !important; }

/* E13. Calendário, vista Lista no celular: a linha (grade inline auto 1fr auto auto auto) não cabe em 390 px. Vira duas
   linhas: data e nome em cima, os selos e o prazo embaixo (revisão r2: o nome ficava com 0 px por baixo do selo) */
@media (max-width: 640px) {
  html.gcs-ui[data-rt-rota="calendario"] #cal-list-scroll div:is([style*="grid-template-columns:auto 1fr auto auto auto"], [style*="grid-template-columns: auto 1fr auto auto auto"]) {
    display: flex !important; flex-wrap: wrap !important; align-items: center !important; column-gap: 8px !important; row-gap: 6px !important;
  }
  html.gcs-ui[data-rt-rota="calendario"] #cal-list-scroll div:is([style*="grid-template-columns:auto 1fr auto auto auto"], [style*="grid-template-columns: auto 1fr auto auto auto"]) > :first-child { flex: none; }
  html.gcs-ui[data-rt-rota="calendario"] #cal-list-scroll div:is([style*="grid-template-columns:auto 1fr auto auto auto"], [style*="grid-template-columns: auto 1fr auto auto auto"]) > :nth-child(2) { flex: 1 1 calc(100% - 100px); min-width: 0; }
  html.gcs-ui[data-rt-rota="calendario"] #cal-list-scroll div:is([style*="grid-template-columns:auto 1fr auto auto auto"], [style*="grid-template-columns: auto 1fr auto auto auto"]) > :last-child { margin-left: auto; }
}

/* =====================================================================================
   F. CELULAR, IMPRESSÃO E MOVIMENTO
   ===================================================================================== */
@media (max-width: 900px) {
  html.gcs-ui #main-content .page-head:not([data-gcs-hub]) .page-title { font-size: 22px !important; }
  /* Políticas tem cabeçalho próprio (E2) e ficava em 28 px no celular, com as outras telas em 22 (confirmação, r3) */
  html.gcs-ui[data-rt-rota="politicas"] #main-content > div:first-child > div:first-child > h1 { font-size: 22px !important; }
  html.gcs-ui #main-content .page-head .page-actions { margin-left: 0 !important; justify-content: flex-start; }
  html.gcs-ui #main-content .kpi-grid:not([style*="grid-template-columns"]) { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 10px !important; }
  html.gcs-ui #main-content :is(.kpi, .kpi-card) { padding: 12px 14px !important; }
  /* valor do KPI no celular: piso de 20 px (era 17; no app, 23). Dinheiro que não couber continua quebrando depois do
     "R$" em letra menor, pela regra de [data-rt-moeda], que pesa mais que esta (confirmação, r3) */
  html.gcs-ui #main-content :is(.kpi .val, .kpi-card > div:nth-child(2)) { font-size: clamp(20px, 11cqi, 28px) !important; }
  html.gcs-ui #main-content table:not(.cvx-grid) :is(td, th) { padding: 9px 10px !important; }
  html.gcs-ui #main-content * .page-head:not([data-gcs-hub]) .page-title { font-size: 18px !important; }
  /* cartão que o app declara sem respiro (padding:0 inline: a faixa de cabeçalho e o corpo trazem o próprio) continua
     sem respiro no celular. O index põe 14 px !important em todo .card abaixo de 900 px, e o respiro dobrava: cabeçalho
     recuado, divisória sem encostar na borda e tabela sem chegar à beira (39 cartões nas 48 telas) */
  html.gcs-ui #main-content .card:is([style^="padding:0;"], [style="padding:0"], [style*=";padding:0;"], [style$=";padding:0"], [style^="padding: 0px;"], [style*="; padding: 0px;"]) { padding: 0 !important; }
  /* grade de KPIs com 4 colunas forçadas no estilo inline com !important (Calendário e Cliente 360): nenhuma folha de
     estilo vence esse inline, mas ele só fala de colunas de grade. Como linha flexível que quebra, a grade ignora as
     colunas e os KPIs saem 2 por linha, sem "R$ ..." cortado nem rótulo espremido */
  html.gcs-ui #main-content .kpi-grid[style*="grid-template-columns"][style*="!important"] { display: flex !important; flex-wrap: wrap !important; gap: 10px !important; }
  html.gcs-ui #main-content .kpi-grid[style*="grid-template-columns"][style*="!important"] > * { flex: 1 1 calc(50% - 5px); min-width: 0; }
  /* painéis lado a lado com tabela (grade inline de 2 colunas em fr; em Risco de Liquidez, ativo 1.4fr e passivo 1fr).
     Até 900 px o index põe 540 px mínimos em toda tabela do #main-content, então dois painéis com tabela nunca cabem lado a
     lado: empilham, e a tabela larga rola dentro do próprio painel. Antes, com o filho encolhido, a tabela do ativo vazava
     por baixo do passivo e cobria % carteira, haircut e realizável (revisão de 27/09/2026) */
  html.gcs-ui #main-content :is([style*="grid-template-columns:1fr 1fr"], [style*="grid-template-columns: 1fr 1fr"], [style*="grid-template-columns:1.4fr 1fr"], [style*="grid-template-columns: 1.4fr 1fr"], [style*="grid-template-columns:1.3fr 1fr"], [style*="grid-template-columns:1.5fr 1fr"], [style*="grid-template-columns:1.55fr .95fr"], [style*="grid-template-columns: 1.55fr 0.95fr"], [style*="grid-template-columns:2fr 1fr"], [style*="grid-template-columns: 2fr 1fr"], [style*="grid-template-columns:1fr 2fr"], [style*="grid-template-columns: 1fr 2fr"], [style*="grid-template-columns:repeat(2,1fr)"], [style*="grid-template-columns: repeat(2, 1fr)"]):not([style*="!important"]):has(table:not(.cvx-grid)):not(.__lamHost, .__lamHost *) { grid-template-columns: minmax(0, 1fr) !important; }
  /* filho que ocupava as duas colunas (grid-column:1/3 ou span 2) ocupa a coluna única: sem isto nasce uma coluna implícita e a
     primeira cai para 0 px (assinaturas do Relatório de Risco: rótulos por cima uns dos outros) */
  html.gcs-ui #main-content :is([style*="grid-template-columns:1fr 1fr"], [style*="grid-template-columns: 1fr 1fr"], [style*="grid-template-columns:1.4fr 1fr"], [style*="grid-template-columns: 1.4fr 1fr"], [style*="grid-template-columns:1.3fr 1fr"], [style*="grid-template-columns:1.5fr 1fr"], [style*="grid-template-columns:1.55fr .95fr"], [style*="grid-template-columns: 1.55fr 0.95fr"], [style*="grid-template-columns:2fr 1fr"], [style*="grid-template-columns: 2fr 1fr"], [style*="grid-template-columns:1fr 2fr"], [style*="grid-template-columns: 1fr 2fr"], [style*="grid-template-columns:repeat(2,1fr)"], [style*="grid-template-columns: repeat(2, 1fr)"]):not([style*="!important"]):has(table:not(.cvx-grid)) > [style*="grid-column"]:not(.__lamHost, .__lamHost *) { grid-column: 1 / -1 !important; }
  /* tabela de duas colunas (rótulo e valor, como o lado do passivo) cabe na tela: sem os 540 px mínimos do index, que
     levavam D+36, Matriz ANBIMA, 10,0% e 1,30x / 1,00x para fora da borda do cartão */
  html.gcs-ui #main-content table:not(.cvx-grid):not(:has(tr > :nth-child(3))):not(.__lamHost *) { min-width: 0 !important; }
  /* faixa de 5 caixas inline (Integração InvestorPro no CADM): 3 por linha no tablet, 2 no celular (abaixo) */
  html.gcs-ui #main-content :is([style*="grid-template-columns:repeat(5,1fr)"], [style*="grid-template-columns: repeat(5, 1fr)"]):not([style*="!important"]):not(.__lamHost, .__lamHost *) { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
}
@media (max-width: 640px) {
  /* marca no topo do celular (revisão de 27/09/2026): em 390 px o "RegTech 2026" saía cortado ("RegTech 202"; sem a
     camada, "RegTech 20"). Faltavam 8 px: o respiro entre a logo e o texto cai de 12 para 8 px, o da direita de 8
     para 4 px e o espaçamento das letras fecha um pouco. O tamanho da letra continua o mesmo (13 px) */
  html.gcs-ui .topbar .brand:not(.__lamHost, .__lamHost *) { gap: 8px !important; padding-right: 4px !important; }
  html.gcs-ui .topbar .brand-text strong:not(.__lamHost, .__lamHost *) { letter-spacing: -0.015em !important; }
  html.gcs-ui #main-content .card { max-width: 100%; }
  /* no celular a página nunca rola na lateral: grade inline com coluna mínima larga (300 px ou mais) vira uma coluna */
  html.gcs-ui #main-content :is([style*="minmax(300px"], [style*="minmax(320px"], [style*="minmax(340px"], [style*="minmax(360px"], [style*="minmax(380px"], [style*="minmax(400px"], [style*="minmax(420px"], [style*="minmax(440px"], [style*="minmax(460px"], [style*="minmax(480px"]):not([style*="!important"]) { grid-template-columns: minmax(0, 1fr) !important; }
  /* no celular todo painel lado a lado empilha (grade inline de 2 colunas em fr), com ou sem tabela: 2 colunas em 328 px
     davam 159 px por painel (revisão de 27/09/2026) */
  html.gcs-ui #main-content :is([style*="grid-template-columns:1fr 1fr"], [style*="grid-template-columns: 1fr 1fr"], [style*="grid-template-columns:1.4fr 1fr"], [style*="grid-template-columns: 1.4fr 1fr"], [style*="grid-template-columns:1.3fr 1fr"], [style*="grid-template-columns:1.5fr 1fr"], [style*="grid-template-columns:1.55fr .95fr"], [style*="grid-template-columns: 1.55fr 0.95fr"], [style*="grid-template-columns:2fr 1fr"], [style*="grid-template-columns: 2fr 1fr"], [style*="grid-template-columns:1fr 2fr"], [style*="grid-template-columns: 1fr 2fr"], [style*="grid-template-columns:repeat(2,1fr)"], [style*="grid-template-columns: repeat(2, 1fr)"]):not([style*="!important"]):not(.__lamHost, .__lamHost *) { grid-template-columns: minmax(0, 1fr) !important; }
  html.gcs-ui #main-content :is([style*="grid-template-columns:1fr 1fr"], [style*="grid-template-columns: 1fr 1fr"], [style*="grid-template-columns:1.4fr 1fr"], [style*="grid-template-columns: 1.4fr 1fr"], [style*="grid-template-columns:1.3fr 1fr"], [style*="grid-template-columns:1.5fr 1fr"], [style*="grid-template-columns:1.55fr .95fr"], [style*="grid-template-columns: 1.55fr 0.95fr"], [style*="grid-template-columns:2fr 1fr"], [style*="grid-template-columns: 2fr 1fr"], [style*="grid-template-columns:1fr 2fr"], [style*="grid-template-columns: 1fr 2fr"], [style*="grid-template-columns:repeat(2,1fr)"], [style*="grid-template-columns: repeat(2, 1fr)"]):not([style*="!important"]) > [style*="grid-column"]:not(.__lamHost, .__lamHost *) { grid-column: 1 / -1 !important; }
  /* faixa de 5 caixas inline: 2 por linha. No CADM cada caixa caía para 58 px e o valor saía "R$ 12.512." (outro número) */
  html.gcs-ui #main-content :is([style*="grid-template-columns:repeat(5,1fr)"], [style*="grid-template-columns: repeat(5, 1fr)"]):not([style*="!important"]):not(.__lamHost, .__lamHost *) { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  /* Estudo de mercado: busca (392 px) e ficha lado a lado, com altura presa à janela: empilham e crescem com o conteúdo */
  html.gcs-ui[data-rt-rota="estudo-mercado"] #main-content div[style*="grid-template-columns:392px 1fr"] { grid-template-columns: minmax(0, 1fr) !important; height: auto !important; }
  html.gcs-ui[data-rt-rota="estudo-mercado"] #main-content div[style*="grid-template-columns:392px 1fr"] > .card { min-height: 240px; }
  /* Segurança e Autenticação de e-mail (CSS injetado pelas rotas): as colunas da grade podem encolher e o cartão rola
     por dentro quando o conteúdo é mais largo que o telefone */
  html.gcs-ui #main-content :is(#secc .sc-grid, #dmc .d-grid) > * { min-width: 0; }
  html.gcs-ui #main-content :is(#secc .sc-card, #dmc .d-card) { min-width: 0; max-width: 100%; overflow-x: auto; }
}
@media (hover: none) {
  html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(.btn, button.primary) { min-height: 36px !important; }
}
@media (prefers-reduced-motion: reduce) {
  html.gcs-ui *:not(.__lamHost, .__lamHost *) { transition: none !important; animation-duration: .001ms !important; animation-iteration-count: 1 !important; }
}

/* impressão da tela (Ctrl+P): só o conteúdo, sem casca. Janelas de impressão próprias (ficha da gestora,
   comprovantes) são outros documentos e não recebem este CSS. A lâmina e a carta vão ao PDF pelo html2canvas, não por aqui. */
@media print {
  html.gcs-ui :is(.topbar, .sidebar, #gcs-tabs, #hamburger, .page-actions, #toast, .drawer-bg, #integrity-banner, #gcs-drawer-exit) { display: none !important; }
  html.gcs-ui body, html.gcs-ui main, html.gcs-ui #main-content { background: #fff !important; }
  html.gcs-ui #main-content { margin: 0 !important; padding: 0 !important; width: auto !important; max-width: none !important; }
  html.gcs-ui #main-content :is(.card, .kpi, .kpi-card) { box-shadow: none !important; break-inside: avoid; }
  html.gcs-ui #main-content .card:has(table) { overflow: visible !important; }
  html.gcs-ui #main-content table:not(.cvx-grid) tr { break-inside: avoid; }
  html.gcs-ui #main-content table:not(.cvx-grid) thead { display: table-header-group; }
  html.gcs-ui #main-content :is(.badge, .pill, .kpi, .rt-etiqueta, .rt-hero) { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  html.gcs-ui #main-content .page-head:not([data-gcs-hub]) { border-bottom: 2px solid var(--rt-ouro) !important; padding-bottom: 10px !important; }
  /* o index esconde todo botão na impressão, mas o display com id das regras D5 vencia: aqui a mesma força, depois */
  html.gcs-ui :is(#main-content, .modal, .drawer, .ui-modal, [style*="position: fixed"][style*="inset: 0"]:not(.__lamHost), [style*="position:fixed"][style*="inset:0"]:not(.__lamHost)) :is(button.btn, .btn, button.primary, .btn-export, .btn-primary):not(.gc2 *) { display: none !important; }
  html.gcs-ui #main-content .page-head .page-actions { display: none !important; }
  /* fundo próprio de linha (pendência, TOTAL, ciclo atual) sai no papel */
  html.gcs-ui #main-content table:not(.cvx-grid) tr { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  /* célula quebra linha (menos número) e respira menos: a tabela cabe na folha */
  html.gcs-ui #main-content table:not(.cvx-grid) :is(td, th) { white-space: normal !important; min-width: 0 !important; padding: 5px 6px !important; }
  html.gcs-ui #main-content table:not(.cvx-grid) :is(td, th):is(.rt-num, .num) { white-space: nowrap !important; }
  html.gcs-ui #main-content table:not(.cvx-grid) { width: 100% !important; }
  /* tabela de 8 colunas ou mais: A4 paisagem (classe posta pelo gcs-ui.js no beforeprint e tirada no afterprint) */
  html.gcs-ui.rt-imp-paisagem body { page: rt-paisagem; }
}
@page rt-paisagem { size: A4 landscape; margin: 10mm; }
