/* ==========================================================================
   SIOG IDENTIDADE — tema próprio claro/escuro (2026-08-13).
   Camada final: carregada DEPOIS do siog-ultra.css no base.html e do <style>
   embutido do login.html. Vence a cascata sem editar nenhum arquivo existente.
   Reversível: remover os <link>/<script> e apagar este arquivo, o
   siog-identidade.js e /static/fonts.

   Arquitetura:
   - Tokens em :root com os valores ESCUROS (padrão).
   - html.tema-claro redefine só os tokens de cor -> modo claro.
   - Sidebar e topbar usam tokens --id-frame-* que NÃO mudam com o tema
     (moldura grafite fixa nos dois modos, decisão do dono).
   - O botão deslizante claro/escuro é montado pelo siog-identidade.js ao
     lado da busca; preferência por navegador em localStorage['siog-tema'].
   ========================================================================== */

/* ---- 0. Fonte ------------------------------------------------------------ */

@font-face{
  font-family:'InterVariable';
  src:url('/static/fonts/InterVariable.woff2') format('woff2');
  font-weight:100 900;
  font-style:normal;
  font-display:swap;
}

/* ---- 1. Tokens ----------------------------------------------------------- */

:root{
  /* fixos nos dois temas */
  --id-font:'InterVariable','Inter',ui-sans-serif,system-ui,'Segoe UI',sans-serif;
  --id-radius:12px; --id-radius-sm:8px;
  --id-accent:#5ca1f5;            /* preenchimentos (botões, item ativo) */
  --id-accent-strong:#77d4f9;
  --id-accent-ink:#081018;        /* texto sobre o acento */

  /* moldura (sidebar + topbar): grafite fixo nos dois temas */
  --id-frame-bg:#0d1119;
  --id-frame-hover:#141a25;
  --id-frame-border:#222a39;
  --id-frame-text:#dfe5ee;
  --id-frame-text-strong:#f8fafc;
  --id-frame-muted:#b9c3d0;
  /* topbar = MESMA cor da barra lateral, opaca (sem vidro): pedido do dono
     14/08. Mantidos os dois tokens porque o bloco @supports usa o segundo. */
  --id-frame-topbar:var(--id-frame-bg);
  --id-frame-topbar-glass:var(--id-frame-bg);

  /* tema ESCURO (padrão) */
  --id-bg:#080b12;
  --id-bg-2:#0d1119;
  --id-surface:#141a25;
  --id-surface-2:#1a2130;
  --id-inset:#0e1420;
  --id-border:#222a39;
  --id-border-strong:#323a49;
  --id-text:#e8edf5;
  --id-text-strong:#f8fafc;
  --id-muted:#b9c3d0;
  --id-faint:#8b98a9;
  --id-accent-text:#5ca1f5;       /* links e realces de texto */
  --id-accent-dim:rgba(92,161,245,.13);
  --id-success:#34c98a; --id-danger:#ef6a6e; --id-warning:#e8b93b;
  --id-th-bg:#101623;
  --id-zebra:#1a2130;
  /* hover de linha OPACO de propósito: o legado pinta a célula com cor sólida
     (siog-modern.css:983), então um realce translúcido deixaria o fundo claro
     dele atravessar por baixo e apagava o texto. */
  --id-hover-row:#1d2739;
  --id-scroll:rgba(154,166,183,.28);
  --id-scroll-hover:rgba(154,166,183,.45);
  --id-shadow-pop:0 16px 48px rgba(0,0,0,.5);
  --id-backdrop:#02040a;

  /* redefinição dos tokens legados (siog-theme.css) */
  --teal:var(--id-accent);
  --teal-d:#4a8ad8;
  --teal-dd:#3b74ba;
  --sidebar-active:#1a2332;
  --info:var(--id-accent); --success:var(--id-success);
  --danger:var(--id-danger); --warning:var(--id-warning);
  --txt:var(--id-text); --muted:var(--id-muted);
  --borda:var(--id-border); --focus:#233045;
  --cream:#20293c; --cream-b:#33415c;

  /* redefinição dos tokens do siog-ultra.css */
  --ultra-zebra:var(--id-zebra);
  --ultra-shadow-1:0 1px 3px rgba(0,0,0,.35);
  --ultra-shadow-2:0 10px 28px rgba(0,0,0,.4);
  --ultra-shadow-3:var(--id-shadow-pop);
  --siog-canvas:var(--id-bg); --siog-surface:var(--id-surface);
  --siog-text:var(--id-text); --siog-muted:var(--id-muted);
  --siog-border:var(--id-border); --siog-border-strong:var(--id-border-strong);
  --siog-radius:var(--id-radius); --siog-radius-sm:var(--id-radius-sm);
  /* tokens de cor do siog-modern que sobreviviam em teal dentro de regras
     :hover com !important (ícone da sidebar, menu do topo, ícones de ação) */
  --siog-accent:var(--id-accent);
  --siog-accent-strong:var(--id-accent-strong);
  --siog-accent-soft:var(--id-accent-dim);
  --siog-indigo:var(--id-accent);
  --siog-indigo-strong:var(--id-accent-strong);
  --siog-sidebar:var(--id-frame-bg);
  --siog-sidebar-deep:var(--id-frame-bg);
  --siog-sidebar-hover:var(--id-frame-hover);
  --siog-success:var(--id-success); --siog-warning:var(--id-warning);
  --siog-danger:var(--id-danger);
}

/* tema CLARO: mesma identidade, superfícies claras (moldura continua grafite).
   A classe vive no BODY (o JS legado do site sobrescreve o className do <html>
   com 'siog-ui-ready' e apagaria a classe); o html.tema-claro fica como apoio
   do primeiro paint, aplicado pelo siog-identidade.js antes do body existir. */
html.tema-claro,
body.tema-claro{
  /* no claro a topbar segue a mesma cor sólida da lateral (o vidro
     translúcido lavava o grafite sobre conteúdo branco) */
  --id-frame-topbar:var(--id-frame-bg);
  --id-frame-topbar-glass:var(--id-frame-bg);
  --id-bg:#f4f6fa;
  --id-bg-2:#eaeef5;
  --id-surface:#ffffff;
  --id-surface-2:#eef2f8;
  --id-inset:#f2f5fa;
  --id-border:#dfe5ee;
  --id-border-strong:#c7d1df;
  /* texto do claro puxado para o preto: cinza claro sobre fundo branco é
     ilegível na prática (feedback do dono 13/08). Mantida só a hierarquia
     mínima entre corrente, secundário e terciário. */
  --id-text:#101720;
  --id-text-strong:#000508;
  --id-muted:#333d4a;
  --id-faint:#55606e;
  --id-accent-text:#1f5cb0;
  --id-accent-dim:rgba(92,161,245,.16);
  --id-success:#1d9e69; --id-danger:#d9484c; --id-warning:#b98b1e;
  --id-th-bg:#eef2f8;
  --id-zebra:#f5f8fc;
  --id-hover-row:#e6eefb;
  --id-scroll:rgba(93,106,124,.35);
  --id-scroll-hover:rgba(93,106,124,.55);
  --id-shadow-pop:0 16px 48px rgba(13,20,32,.18);
  --id-backdrop:#0d1420;
  --focus:#dcebff;
  --cream:#eef2f8; --cream-b:#c7d1df;
}

/* ---- 2. Base ------------------------------------------------------------- */

html{color-scheme:dark}
html.tema-claro,body.tema-claro{color-scheme:light}

body.siog-modern{
  background:var(--id-bg)!important;
  color:var(--id-text);
  font-family:var(--id-font);
  font-size:13px;
  letter-spacing:.005em;
}

body.siog-modern ::selection{background:rgba(92,161,245,.32);color:var(--id-text-strong)}

body.siog-modern .wrapper,
body.siog-modern .content-wrapper{
  background:var(--id-bg)!important;
  color:var(--id-text);
}

/* ---- 3. Tipografia (menor e mais firme) ---------------------------------- */

body.siog-modern h1,body.siog-modern h2,body.siog-modern h3,
body.siog-modern h4,body.siog-modern h5,body.siog-modern h6{
  color:var(--id-text-strong);
  letter-spacing:-.02em;
}

body.siog-modern .content-header h1{
  font-size:19px!important;
  line-height:26px!important;
  font-weight:650;
}

body.siog-modern .content-header h1 span{
  font-size:14px!important;
  color:var(--id-muted)!important;
}

body.siog-modern a{color:var(--id-accent-text)}
body.siog-modern a:hover{color:var(--id-accent-strong)}

/* números tabulares: centavos alinhados na vertical */
body.siog-modern td,body.siog-modern th,
body.siog-modern input,body.siog-modern .text-right{
  font-variant-numeric:tabular-nums;
  font-feature-settings:"tnum";
}

/* ---- 4. Topbar (moldura fixa) --------------------------------------------- */

body.siog-modern .main-header,
body.siog-modern nav.main-header.navbar{
  background:var(--id-frame-topbar)!important;
  border-bottom:1px solid var(--id-frame-border)!important;
  box-shadow:none;
}

@supports (backdrop-filter:blur(1px)){
  body.siog-modern .main-header,
  body.siog-modern nav.main-header.navbar{
    background:var(--id-frame-topbar-glass)!important;
    backdrop-filter:none;
  }
}

/* Altura da topbar a 2/3 do original (68→45 no global, 57→38 dentro do
   orçamento). `--ultra-topbar-h` PRECISA acompanhar: o siog-ultra.css usa essa
   variável como `top:` dos cabeçalhos sticky — se ficar 68px, eles flutuam
   deslocados da barra. */
:root{--ultra-topbar-h:45px}
body.siog-modern.orcamento-shell{--ultra-topbar-h:45px}

body.siog-modern .main-header,
body.siog-modern nav.main-header.navbar{
  min-height:45px!important;
  height:45px!important;
  padding:0 14px!important;
}

body.siog-modern .main-header .nav-link{
  min-height:30px!important;
  padding-top:.2rem!important;
  padding-bottom:.2rem!important;
}

/* Altura ÚNICA de 45px também dentro do orçamento (o legado usava 57px lá).
   Não descer para 38px: o bloco do usuário tem 2 linhas e mede 40px. */
body.siog-modern.orcamento-shell nav.main-header.navbar{
  min-height:45px!important;
  height:45px!important;
  padding:0 12px!important;
}

body.siog-modern.orcamento-shell .main-header .nav-link{min-height:30px!important}

/* o bloco do usuário tem 2 linhas: compacta para caber na barra menor */
body.siog-modern .main-header a.siog-user-link{line-height:1.05!important}
body.siog-modern .siog-user-name{font-size:12px!important}
body.siog-modern .siog-user-company{font-size:9.5px!important;letter-spacing:.02em}

/* a seta ficava colada no nome */
body.siog-modern .siog-user-link .fa-caret-down{margin-left:10px!important}

/* mesma coisa nos menus do topo (Insumos & Composições, Orçamentos, Cadastros):
   o HTML só tem um espaço antes do <i>, e a seta encostava na palavra */
body.siog-modern .main-header a.top-menu .fa-caret-down,
body.siog-modern .main-header .top-menu > i.fas{margin-left:9px!important}

body.siog-modern .main-header.siog-scrolled{box-shadow:0 10px 30px rgba(0,0,0,.35)}
body.siog-modern .main-header a.top-menu.top-menu.top-menu:hover{
  color:var(--id-frame-text)!important;
  background:var(--id-frame-hover)!important;
  background-image:none!important;
}

/* hover do bloco do usuário: o legado pinta `#f1f6f8` (siog-modern.css), quase
   branco, e apagava o texto claro. Realce da moldura, opaco. */
body.siog-modern .main-header a.siog-user-link:hover,
body.siog-modern .main-header a.siog-user-link:focus,
body.siog-modern .main-header .user-menu.show > a.siog-user-link{
  background:var(--id-frame-hover)!important;
  border-radius:var(--id-radius-sm)!important;
}

/* busca da topbar (mora na moldura) */
body.siog-modern .siog-command-trigger{
  background:rgba(20,26,37,.9)!important;
  border:1px solid var(--id-frame-border)!important;
  border-radius:999px!important;
  color:var(--id-frame-muted)!important;
}

/* botão deslizante claro/escuro (montado pelo siog-identidade.js) */
.siog-tema-toggle{
  display:inline-flex;
  align-items:center;
  gap:6px;
  height:26px;
  padding:0 8px;
  margin-right:10px;
  border-radius:999px;
  border:1px solid var(--id-frame-border);
  background:rgba(20,26,37,.9);
  color:var(--id-frame-muted);
  cursor:pointer;
  font-size:11px;
  line-height:1;
  transition:border-color .18s ease;
}

.siog-tema-toggle:hover{border-color:var(--id-accent);color:var(--id-frame-text)}

.siog-tema-toggle .stt-trilho{
  position:relative;
  width:30px;
  height:14px;
  border-radius:999px;
  background:var(--id-frame-border);
  transition:background .18s ease;
}

.siog-tema-toggle .stt-knob{
  position:absolute;
  top:2px; left:2px;
  width:10px; height:10px;
  border-radius:50%;
  background:var(--id-accent);
  transition:left .18s ease;
}

html.tema-claro .siog-tema-toggle .stt-knob,
body.tema-claro .siog-tema-toggle .stt-knob{left:18px;background:#f6c445}
.siog-tema-toggle i{font-size:10px}
.siog-tema-toggle .stt-sol{color:#f6c445}
.siog-tema-toggle .stt-lua{color:var(--id-accent)}

/* ---- 5. Sidebar (moldura fixa) --------------------------------------------- */

body.siog-modern .main-sidebar,
body.siog-modern .main-sidebar .sidebar{
  background:var(--id-frame-bg)!important;
  border-right:1px solid var(--id-frame-border);
}

body.siog-modern .main-sidebar .nav-link{
  color:var(--id-frame-muted)!important;
  border-radius:var(--id-radius-sm);
  font-size:12.5px;
}

body.siog-modern .main-sidebar .nav-link p{font-size:12.5px}

body.siog-modern .main-sidebar .nav-link.active{
  background:var(--id-accent-dim)!important;
  background-image:none!important;
  color:var(--id-accent)!important;
  box-shadow:none!important;
}

body.siog-modern .brand-link{
  border-bottom:1px solid var(--id-frame-border)!important;
  color:var(--id-frame-text)!important;
}

/* A moldura dentro do orçamento usa `sidebar-dark-primary` do AdminLTE e vinha
   com bloco da marca CINZA (rgb(52,58,64)), borda direita clara (rgb(69,77,85)),
   cantos de 3px e texto mais apagado que na home. Igualadas as duas variantes,
   senão a mesma barra muda de cara ao entrar num orçamento. */
body.siog-modern .main-sidebar,
body.siog-modern .main-sidebar.sidebar-dark-primary,
body.siog-modern .main-sidebar.sidebar-light-primary,
body.siog-modern.orcamento-shell .main-sidebar{
  border-right:1px solid var(--id-frame-border)!important;
}

body.siog-modern .brand-link,
body.siog-modern .main-sidebar .brand-link,
body.siog-modern.orcamento-shell .brand-link{
  background:transparent!important;
  background-image:none!important;
  border-bottom:1px solid var(--id-frame-border)!important;
}

body.siog-modern .main-sidebar .nav-link,
body.siog-modern.orcamento-shell .nav-sidebar .nav-link:not(#siog-x){
  border-radius:var(--id-radius-sm)!important;
  color:var(--id-frame-text)!important;
}

body.siog-modern.orcamento-shell nav.main-header.navbar{padding:0 14px!important}

/* O menu do topo dentro do orçamento vinha menor e bem mais apagado que na home
   (12px/400/#5f6870 contra 13px/700/#b9c3d0). A home é a referência. */
body.siog-modern.orcamento-shell .main-header a.top-menu.top-menu.top-menu{
  color:var(--id-frame-muted)!important;
  font-size:13px!important;
  font-weight:700!important;
}

/* Bloco da marca também menor no orçamento (57px e cubo 44x35, contra 82px e
   58x43 na home). Igualado, para o canto superior esquerdo não mudar de
   tamanho ao entrar num orçamento. */
body.siog-modern.orcamento-shell .brand-link{
  height:82px!important;
  padding:0 18px!important;
}

/* O siog-ultra encolhe o cubo no orçamento com `flex:0 0 44px`, e em item flex
   a base do flex vence a largura — por isso só mexer em `width` não bastava.
   Valores copiados da regra da home (siog-modern: brand-video-cube). */
body.siog-modern.orcamento-shell .brand-cube,
body.siog-modern.orcamento-shell .brand-cube.brand-video-cube{
  width:58px!important;
  height:43px!important;
  flex:0 0 58px!important;
  border-radius:10px!important;
  overflow:hidden!important;
  background:#071923!important;
  box-shadow:0 4px 14px rgba(0,0,0,.24)!important;
}

body.siog-modern.orcamento-shell .brand-cube video,
body.siog-modern.orcamento-shell .brand-cube img{
  width:100%!important;
  height:100%!important;
  object-fit:cover;
}

/* Painel de Orçamentos Modelo: o tema antigo crava `height:456px` e esconde o
   excedente, então a lista de modelos ficava cortada e sem como rolar. Cresce
   com o conteúdo; a página rola normalmente. */
body.siog-modern .modelos-panel{
  height:auto!important;
  min-height:456px;
  overflow:visible!important;
}

body.siog-modern .modelos-content{overflow:visible!important}
body.siog-modern .main-header a,
body.siog-modern .main-header .dropdown-toggle,
body.siog-modern .main-header .nav-link,
body.siog-modern .main-header .navbar-nav > li > a,
body.siog-modern .main-header a.top-menu.top-menu.top-menu,
/* subtítulo da marca: mora na moldura, não segue o tema */
body.siog-modern .brand-link small,
body.siog-modern .main-sidebar .brand-link *{color:var(--id-frame-muted)!important}
/* bloco do usuário: SEMPRE claro, nos dois temas (mora na moldura grafite). O `*` é necessário porque o nome é um <b class="siog-user-name"> que herda o --id-text do tema e ficava escuro sobre a barra no modo claro. */
body.siog-modern .main-header a.siog-user-link,
body.siog-modern .main-header a.siog-user-link *,
body.siog-modern .main-header a.siog-user-link:hover *,
body.siog-modern .main-sidebar .brand-link b,
body.siog-modern .main-sidebar .brand-link .brand-text{color:var(--id-frame-text-strong)!important}

/* ---- 6. Cards / caixas (densidade) ---------------------------------------- */

body.siog-modern .card{
  background:var(--id-surface)!important;
  border:1px solid var(--id-border)!important;
  border-radius:var(--id-radius)!important;
  box-shadow:none!important;
  color:var(--id-text);
}

body.siog-modern .card-header{
  background:transparent!important;
  border-bottom:1px solid var(--id-border)!important;
  padding:.65rem 1rem;
}

body.siog-modern .card-header .card-title{
  font-size:13px;
  font-weight:600;
  color:var(--id-text-strong);
}

body.siog-modern .card-body{padding:.85rem 1rem}

/* ---- 7. Tabelas ------------------------------------------------------------ */

body.siog-modern .table,
body.siog-modern table{color:var(--id-text);background:transparent}

body.siog-modern table th{
  background:var(--id-th-bg)!important;
  background-image:none!important;
  color:var(--id-muted)!important;
  border-color:var(--id-border)!important;
  font-size:10.5px!important;
  font-weight:600;
  text-transform:uppercase;
  letter-spacing:.06em;
}
body.siog-modern .tbl-orc tbody td{font-size:12.5px!important}

body.siog-modern .table-striped tbody tr:nth-of-type(odd),
body.siog-modern .home-fontes tbody tr:nth-of-type(odd) td{background:var(--id-zebra)!important}

body.siog-modern .table-hover tbody tr:hover,
body.siog-modern tbody tr:hover td{background:var(--id-hover-row)!important}

/* o legado tem `body.siog-modern table tbody tr:hover>td{background:#edf7fa
   !important}` (siog-modern.css:983): especificidade maior que a regra acima,
   então precisa ser espelhada aqui para o hover não clarear a linha inteira. */
body.siog-modern table tbody tr:hover > td{background:var(--id-hover-row)!important}

/* ---- 8. Formulários -------------------------------------------------------- */

body.siog-modern .form-control,
body.siog-modern input:not([type=checkbox]):not([type=radio]),
body.siog-modern select,
body.siog-modern textarea,
body.siog-modern .content-wrapper input:not([type=checkbox]):not([type=radio]),
body.siog-modern .content-wrapper textarea,
body.siog-modern .content-wrapper select{
  background:var(--id-inset)!important;
  border:1px solid var(--id-border)!important;
  border-radius:var(--id-radius-sm)!important;
  color:var(--id-text)!important;
  font-size:12.5px;
}

body.siog-modern .form-control:focus,
body.siog-modern input:focus,
body.siog-modern select:focus,
body.siog-modern textarea:focus{
  border-color:var(--id-accent)!important;
  box-shadow:0 0 0 3px var(--id-accent-dim)!important;
  outline:none;
}

body.siog-modern ::placeholder{color:var(--id-faint)!important;opacity:1}

body.siog-modern input[type=checkbox],
body.siog-modern input[type=radio]{accent-color:var(--id-accent)}

body.siog-modern label{color:var(--id-muted);font-size:11.5px;font-weight:600}

/* ---- 9. Botões -------------------------------------------------------------- */

body.siog-modern button{background:var(--id-surface);border-color:var(--id-border-strong);color:var(--id-text)}

body.siog-modern .btn{
  border-radius:var(--id-radius-sm)!important;
  font-size:12.5px;
  font-weight:600;
  letter-spacing:.01em;
}

body.siog-modern .content-header .toolbar .btn{min-height:34px!important}

body.siog-modern .btn-primary:hover,
body.siog-modern .btn-info:hover,
body.siog-modern .btn.ok:hover{
  background:var(--id-accent-strong)!important;
  border-color:var(--id-accent-strong)!important;
}

body.siog-modern .btn-default,
body.siog-modern .btn-secondary,
body.siog-modern .btn-light,
body.siog-modern .btn-outline-secondary,
body.siog-modern .btn.sec,
body.siog-modern a.btn.sec,
body.siog-modern span.btn.sec{
  background:var(--id-surface)!important;
  border:1px solid var(--id-border-strong)!important;
  color:var(--id-text)!important;
}

body.siog-modern .btn-danger,
body.siog-modern a.btn.danger-outline,
body.siog-modern .btn.danger-outline{
  background:transparent!important;
  border:1px solid var(--id-danger)!important;
  color:var(--id-danger)!important;
}

body.siog-modern .btn:focus-visible{outline:3px solid var(--id-accent-dim);outline-offset:2px}

/* ---- 10. Dropdowns, modais, popovers ---------------------------------------- */

body.siog-modern .dropdown-menu{
  background:var(--id-surface)!important;
  border:1px solid var(--id-border-strong)!important;
  border-radius:var(--id-radius)!important;
  box-shadow:var(--id-shadow-pop)!important;
  color:var(--id-text);
}

body.siog-modern .dropdown-item{color:var(--id-text)!important;font-size:12.5px}

body.siog-modern .modal-content{
  background:var(--id-surface)!important;
  border:1px solid var(--id-border-strong)!important;
  border-radius:var(--id-radius)!important;
  box-shadow:var(--id-shadow-pop)!important;
  color:var(--id-text);
}
body.siog-modern .modal-footer{border-top:1px solid var(--id-border)!important}
body.siog-modern .modal-backdrop{background:var(--id-backdrop)}
body.siog-modern .modal-backdrop.show{opacity:.72}

body.siog-modern .close,body.siog-modern .btn-close{color:var(--id-muted)!important;text-shadow:none!important}

/* ---- 11. Badges, alertas, paginação ------------------------------------------ */

body.siog-modern .badge{border-radius:999px;font-weight:600;font-size:10.5px;letter-spacing:.02em}

body.siog-modern .alert{
  background:var(--id-surface)!important;
  border:1px solid var(--id-border-strong)!important;
  color:var(--id-text)!important;
  border-radius:var(--id-radius)!important;
}

body.siog-modern .alert-danger{border-color:rgba(239,106,110,.5)!important;color:var(--id-danger)!important}
body.siog-modern .alert-success{border-color:rgba(52,201,138,.5)!important;color:var(--id-success)!important}
body.siog-modern .alert-warning{border-color:rgba(232,185,59,.45)!important;color:var(--id-warning)!important}

body.siog-modern .page-link{
  background:var(--id-surface)!important;
  border-color:var(--id-border)!important;
  color:var(--id-muted)!important;
}

/* ---- 12. Rolagem e detalhes --------------------------------------------------- */

body.siog-modern ::-webkit-scrollbar-thumb{
  background:var(--id-scroll);
  background-clip:padding-box;
  border:3px solid transparent;
  border-radius:999px;
}

body.siog-modern ::-webkit-scrollbar-thumb:hover{
  background:var(--id-scroll-hover);
  background-clip:padding-box;
}

body.siog-modern hr{border-color:var(--id-border)}

body.siog-modern kbd{
  background:var(--id-bg-2)!important;
  border:1px solid var(--id-border-strong)!important;
  color:var(--id-muted)!important;
  box-shadow:none!important;
}

body.siog-modern footer.main-footer{
  background:var(--id-bg-2)!important;
  border-top:1px solid var(--id-border)!important;
  color:var(--id-faint)!important;
}

/* ---- 13. Home e componentes próprios ------------------------------------------- */

body.siog-modern section.siog-home-hero{
  background:
    radial-gradient(circle at 92% 20%, rgba(92,161,245,.10), rgba(0,0,0,0) 34%),
    linear-gradient(135deg, var(--id-bg-2) 0%, var(--id-surface-2) 100%)!important;
  border:1px solid var(--id-border)!important;
  color:var(--id-text)!important;
}
body.siog-modern .siog-eyebrow{color:var(--id-accent-text)!important;letter-spacing:.14em}

body.siog-modern .siog-home-status span{
  background:var(--id-surface)!important;
  border:1px solid var(--id-border-strong)!important;
  color:var(--id-text)!important;
  border-radius:10px;
}

body.siog-modern section.home-panel,
body.siog-modern section.home-fontes{
  background:var(--id-surface)!important;
  border:1px solid var(--id-border)!important;
  border-radius:var(--id-radius)!important;
  color:var(--id-text)!important;
  box-shadow:none!important;
}

body.siog-modern a:has(span.ico){
  background:var(--id-bg-2)!important;
  border:1px solid var(--id-border)!important;
  border-radius:var(--id-radius)!important;
  color:var(--id-text)!important;
}

body.siog-modern a:has(span.ico):hover{
  background:var(--id-surface-2)!important;
  border-color:var(--id-border-strong)!important;
}

body.siog-modern span.drop-area{
  background:var(--id-inset)!important;
  border:1px dashed var(--id-border-strong)!important;
  border-radius:var(--id-radius)!important;
  color:var(--id-text)!important;
}

body.siog-modern span.drop-area i{color:var(--id-faint)!important}

/* paleta de comando (Ctrl+K) */
body.siog-modern .siog-command-palette{
  background:var(--id-surface)!important;
  border:1px solid var(--id-border-strong)!important;
  box-shadow:var(--id-shadow-pop)!important;
  color:var(--id-text)!important;
}

body.siog-modern .siog-command-foot{
  background:var(--id-bg-2)!important;
  border-top:1px solid var(--id-border)!important;
  color:var(--id-muted)!important;
}

/* modal próprio sb-modal (o conteúdo do iframe herda o tema por ser página do site) */
body.siog-modern .sb-modal,
body.siog-modern .sb-modal-head,
body.siog-modern .sb-modal-inline{
  background:var(--id-surface)!important;
  color:var(--id-text)!important;
}

body.siog-modern .sb-modal{border:1px solid var(--id-border-strong)!important;border-radius:var(--id-radius)!important}

/* ---- 14. Lista de orçamentos (oc-tree, filtros, menus) -------------------------- */

body.siog-modern aside.oc-tree-card{background:var(--id-surface)!important;border:1px solid var(--id-border)!important;border-radius:var(--id-radius)!important}
body.siog-modern .oc-tree-card-head{background:var(--id-bg-2)!important;background-image:none!important;border-bottom:1px solid var(--id-border)!important;color:var(--id-text-strong)!important}
body.siog-modern .oc-tree-count{background:var(--id-bg-2)!important;border:1px solid var(--id-border)!important;color:var(--id-muted)!important}
body.siog-modern summary{background:var(--id-surface)!important;color:var(--id-text)!important;border-color:var(--id-border-strong)!important}

/* ---- 15. Visão geral do orçamento (visao-*) ------------------------------------- */

body.siog-modern section.visao-panel,body.siog-modern .visao-side-box{background:var(--id-surface)!important;border:1px solid var(--id-border)!important;border-radius:var(--id-radius)!important;color:var(--id-text)!important;box-shadow:none!important}
body.siog-modern .visao-line-value{background:var(--id-inset)!important;color:var(--id-text)!important}
body.siog-modern .visao-btn.ok:hover{background:var(--id-accent-strong)!important}
body.siog-modern .visao-btn.danger{background:transparent!important;border:1px solid var(--id-danger)!important;color:var(--id-danger)!important}

/* ---- 16. Planilha (plan-*, rel-*, detail-*, modais próprios) --------------------- */

body.siog-modern .rel-box,body.siog-modern .plan-main-card,body.siog-modern aside.plan-tree,body.siog-modern .plan-add-drawer,body.siog-modern .plan-search-menu,body.siog-modern .plan-search-results,body.siog-modern .detail-summary,body.siog-modern .detail-panel-wrap,body.siog-modern .gear-menu-pop,body.siog-modern .bdi-modal-dialog,body.siog-modern .sb-ac{background:var(--id-surface)!important;border-color:var(--id-border-strong)!important;color:var(--id-text)!important}
body.siog-modern .rel-box,body.siog-modern .plan-main-card,body.siog-modern aside.plan-tree{border:1px solid var(--id-border)!important;border-radius:var(--id-radius)!important;box-shadow:none!important}
body.siog-modern .gear-menu-pop,body.siog-modern .plan-search-menu,body.siog-modern .sb-ac,body.siog-modern .bdi-modal-dialog{border:1px solid var(--id-border-strong)!important;border-radius:var(--id-radius)!important;box-shadow:var(--id-shadow-pop)!important}
body.siog-modern .main-header .dropdown-menu .dropdown-item:hover,
body.siog-modern .main-header .dropdown-menu a:hover,
body.siog-modern .btn-default:hover,
body.siog-modern .btn-secondary:hover,
body.siog-modern .rel-action:hover,
body.siog-modern .plan-icon-action:hover{background:var(--id-surface-2)!important;color:var(--id-text-strong)!important}
body.siog-modern .plan-icon-action.disabled{opacity:.45}
body.siog-modern .plan-tree a{color:var(--id-text)}
body.siog-modern .modal-header,
body.siog-modern .sb-modal-head,
body.siog-modern .ft-modal-head{border-bottom:1px solid var(--id-border)!important}
body.siog-modern .card-footer,
body.siog-modern .bdi-modal-actions,
body.siog-modern .ft-modal-foot{background:var(--id-bg-2)!important;border-top:1px solid var(--id-border)!important}
body.siog-modern .chk-group label,body.siog-modern .chk-group span,body.siog-modern .chk-group b{color:var(--id-text)!important;opacity:1!important}
body.siog-modern .ins-group-menu{background:var(--id-surface)!important;border:1px solid var(--id-border-strong)!important;border-radius:var(--id-radius)!important;box-shadow:var(--id-shadow-pop)!important}
body.siog-modern .ft-right span,body.siog-modern .ft-left span,body.siog-modern .ft-right a,body.siog-modern .ft-right b{color:var(--id-text)!important;opacity:1!important}
body.siog-modern .main-header .dropdown-menu .dropdown-item i,
body.siog-modern .siog-home-hero b,
body.siog-modern .siog-home-hero strong,
body.siog-modern .home-panel i.fas,
body.siog-modern span.ico,
body.siog-modern span.ico i,
body.siog-modern a.home-import-more,
body.siog-modern .fonte-comp{color:var(--id-accent-text)!important}
body.siog-modern .bdi-tabs-card a.active{background:var(--id-accent-dim)!important;color:var(--id-accent-text)!important;border-radius:var(--id-radius-sm)!important}
body.siog-modern .bdi-outline-btn{background:transparent!important;border:1px solid var(--id-border-strong)!important;color:var(--id-text)!important}
body.siog-modern .dropdown-item:hover,
body.siog-modern .acoes-list a:hover,
body.siog-modern .visao-btn:hover,
body.siog-modern .ins-group-option:hover,
body.siog-modern .bdi-outline-btn:hover{background:var(--id-surface-2)!important}
body.siog-modern .visao-static-value,
body.siog-modern .chk-group,
body.siog-modern .abc-filter-box,
body.siog-modern .quant-filter-box,
body.siog-modern .cron-option-group,
body.siog-modern .abc-filter-panel,
body.siog-modern .abc-options,
body.siog-modern .cron-options,
body.siog-modern .tj-options{background:var(--id-inset)!important;border:1px solid var(--id-border)!important;border-radius:var(--id-radius-sm)!important;color:var(--id-text)!important}
body.siog-modern .sb-rel-shell input:not([type=checkbox]):not([type=radio]),body.siog-modern .abc-filter-box input,body.siog-modern .cron-option-group input{background:var(--id-surface)!important;border:1px solid var(--id-border)!important;color:var(--id-text)!important}
body.siog-modern .rel-icon-export{background:var(--id-bg-2)!important;border:1px solid var(--id-border-strong)!important;border-radius:var(--id-radius-sm)!important}
body.siog-modern .abc-limit-tag{background:var(--id-bg-2)!important;border:1px solid var(--id-border-strong)!important}
body.siog-modern .sb-rel-modo.active,body.siog-modern a.sb-rel-modo.active{background:var(--id-accent-dim)!important;color:var(--id-accent-text)!important;border-color:var(--id-accent)!important}

/* ---- 20. Ferramentas de cabeçalho de box e primários legados --------------------- */

body.siog-modern .btn-tool{background:transparent!important;color:var(--id-muted)!important;border:1px solid transparent!important;border-radius:var(--id-radius-sm)!important}
body.siog-modern .rel-box-title > span{background:var(--id-accent-dim)!important;color:var(--id-accent-text)!important;border-radius:6px}
body.siog-modern .btn.primary:hover{background:var(--id-accent-strong)!important}

/* ---- 21. Cronograma, Encargos e Preferências (varridos no ar 13/08) -------------- */

body.siog-modern nav.crono-breadcrumb{background:var(--id-surface)!important;border:1px solid var(--id-border)!important;border-radius:var(--id-radius-sm)!important;color:var(--id-muted)!important}
body.siog-modern form.filtro-card,
body.siog-modern div.filtro-card,
body.siog-modern .orc-filter-card,
body.siog-modern section.bdi-tabs-card,
body.siog-modern section.enc-editor-group,
body.siog-modern section.enc-list-card{background:var(--id-surface)!important;border:1px solid var(--id-border)!important;border-radius:var(--id-radius)!important;color:var(--id-text)!important}
/* ---- 17. Insumos & Composições (ft-*, ins-*, chk-group) -------------------------- */
body.siog-modern .ft-modal,
body.siog-modern .ft-modal-head,
body.siog-modern .ft-modal-body,
body.siog-modern .ft-modal-foot,
body.siog-modern .ft-left,
body.siog-modern .ft-right,
/* ---- 19. Relatórios (sb-rel-*, abc-*, cron-*, quant-*, tj-*) --------------------- */
body.siog-modern .sb-rel-shell,
body.siog-modern .sb-rel-nav,
body.siog-modern .sb-rel-lado,
body.siog-modern aside.sb-rel-lado,
body.siog-modern .crono-table-shell,
body.siog-modern .pref-online-shell,
body.siog-modern .pref-online-flags,
body.siog-modern .pref-editor,
body.siog-modern .pref-visual-box,
body.siog-modern .pref-header-fields,
body.siog-modern .pref-header-popover-box,
body.siog-modern .pref-bdi-default{background:var(--id-surface)!important;border-color:var(--id-border)!important;color:var(--id-text)!important}

/* a borda do modal e mais forte que a das areas internas dele */
body.siog-modern .ft-modal{border:1px solid var(--id-border-strong)!important;border-radius:var(--id-radius)!important;box-shadow:var(--id-shadow-pop)!important}
body.siog-modern nav.pref-online-nav{background:var(--id-bg-2)!important;border-color:var(--id-border)!important}
body.siog-modern .pref-row-title,body.siog-modern .pref-panel-title{background:var(--id-bg-2)!important;color:var(--id-text-strong)!important;border-color:var(--id-border)!important}
body.siog-modern .pref-divider{background:var(--id-border)!important}
body.siog-modern .pref-source-row.pref-source-head{background:var(--id-th-bg)!important;color:var(--id-muted)!important}
body.siog-modern .pref-perfil-card{background:var(--id-surface)!important;border:1px solid var(--id-border-strong)!important;color:var(--id-text)!important}
body.siog-modern .pref-perfil-card.ativo{border-color:var(--id-accent)!important;background:var(--id-accent-dim)!important}
body.siog-modern .content-wrapper a.nav-link.active{background:var(--id-accent-dim)!important;background-image:none!important;color:var(--id-accent-text)!important}

/* ---- 22. Varredura geral 13/08 (44 rotas × 2 temas) ------------------------------
   Padrões recorrentes achados pela varredura de contraste + fundo fora do tema.
   O bump `:not(#siog-x)` soma especificidade de ID p/ vencer regras legadas
   com !important sem depender de ordem. ---- */

/* 22a. Sidebar: rótulos do bloco do orçamento e do menu */
body.siog-modern .main-sidebar .nav-link p{color:inherit!important}
body.siog-modern .main-sidebar span:not(.badge):not(.brand-text){color:var(--id-frame-muted)}
body.siog-modern .main-sidebar strong{color:var(--id-frame-text)}
body.siog-modern table:not(.plan-table) th:not(#siog-x){background:var(--id-th-bg)!important;background-image:none!important}

/* 22d. Famílias de cards por página (extra-*, hist-*, mem-*, ajt-*, acs-*,
        fontes-*, ajs-*, lix-*, comments-*, modelos-*, versao-card, tipo-card,
        history-*, crono-*) */
body.siog-modern .extra-list-card,body.siog-modern .extra-tabs-card,
body.siog-modern .extra-card,body.siog-modern .hist-card,
body.siog-modern .mem-card,body.siog-modern .mem-menu-list,
body.siog-modern .mem-tree-card,body.siog-modern .mem-detail-card,
body.siog-modern .ajt-card,body.siog-modern .acs-new-card,
body.siog-modern .fontes-card,body.siog-modern .fontes-picker,
body.siog-modern .fontes-selected-box,body.siog-modern .ajs-card,
body.siog-modern .lix-card,body.siog-modern .comments-card-online,
body.siog-modern .comments-compose,body.siog-modern .modelos-panel,
body.siog-modern .modelos-content,body.siog-modern .versao-card,
body.siog-modern .tipo-card,body.siog-modern .history-filter-panel,
body.siog-modern .history-results{
  background:var(--id-surface)!important;
  border-color:var(--id-border)!important;
  color:var(--id-text)!important;
  box-shadow:none!important;
}
body.siog-modern .orc-filter-card input,
body.siog-modern .filtro-card input,
body.siog-modern .filtro-card select,
body.siog-modern .rel-field,
body.siog-modern .rel-field.wide,
body.siog-modern .detail-memory-advanced-total-head,
body.siog-modern .detail-memory-total-formula,
body.siog-modern .ie-caixa,
body.siog-modern .history-field,
body.siog-modern .fontes-control,
body.siog-modern .hist-toolbar{
  background:var(--id-inset)!important;
  border-color:var(--id-border)!important;
  color:var(--id-text)!important;
}

body.siog-modern .history-action,body.siog-modern .ajt-icon{
  background:var(--id-bg-2)!important;
  border:1px solid var(--id-border-strong)!important;
}
body.siog-modern .oc-tree-shortcut-icon,
body.siog-modern .oc-tree-title-icon,
body.siog-modern .oc-tree-card a.is-active,
body.siog-modern a.plan-tree-root.active,
body.siog-modern .plan-tree a.active,
body.siog-modern .sb-rel-nav a.active,
body.siog-modern .sb-rel-nav .nav-link.active,
body.siog-modern .btn-tool:hover,
body.siog-modern .badge-info,
body.siog-modern .bg-info,
body.siog-modern .pref-online-nav a.active,
body.siog-modern .ajt-icon{background:var(--id-accent-dim)!important;color:var(--id-accent-text)!important}
body.siog-modern .ajt-icon.trash{background:rgba(239,106,110,.14)!important;color:var(--id-danger)!important}

/* 22e. Abas internas (subtabs, ajs-tabs, erros-tabs, hist-tabs, versoes-tabs,
        modelos-source-nav) — trilho bg-2, link muted, ativo azul */
body.siog-modern .subtabs,body.siog-modern .ajs-tabs,
body.siog-modern .erros-tabs,body.siog-modern .hist-tabs,
body.siog-modern .extra-tabs,body.siog-modern .modelos-source-nav{
  background:var(--id-bg-2)!important;
  border-color:var(--id-border)!important;
}

body.siog-modern .subtabs .ativo.ativo,body.siog-modern .subtabs a.ativo.ativo,
body.siog-modern .ajs-tabs .active.active,body.siog-modern .erros-tabs .active.active,
body.siog-modern .hist-tabs .active.active,body.siog-modern .extra-tabs .active.active,
body.siog-modern .modelos-source-nav .active.active{
  background:var(--id-accent-dim)!important;
  color:var(--id-accent-text)!important;
  border-color:var(--id-accent)!important;
}

/* ícone da pasta usa a COR CADASTRADA em /cadastros/pastas: o template já emite
   `--folder-color` no style do <li>. A regra do legado não tem !important, então
   a genérica acima apagava a cor (o ícone é um <span>). */
body.siog-modern .oc-tree-folder-icon,
body.siog-modern .oc-tree-folder-icon i,
body.siog-modern .pasta-tree-cell .fa-folder,
body.siog-modern .pasta-tree-cell .fa-folder-tree{
  color:var(--folder-color,var(--id-accent-text))!important;
}

/* Barras de título dos painéis do orçamento: o legado pinta teal sólido
   (rgb(6,148,163)) e destoava de todos os outros cartões. Mesmo padrão dos
   demais cabeçalhos: superfície + borda embaixo + rótulo pequeno em caixa alta. */
body.siog-modern .visao-panel-title,
body.siog-modern .visao-side-title,
body.siog-modern .rel-box-title,
body.siog-modern .plan-card-title{
  background:var(--id-bg-2)!important;
  background-image:none!important;
  border-bottom:1px solid var(--id-border)!important;
  color:var(--id-text-strong)!important;
  font-size:11px!important;
  font-weight:700!important;
  letter-spacing:.08em;
  text-transform:uppercase;
  padding:9px 14px!important;
  border-radius:var(--id-radius) var(--id-radius) 0 0!important;
}
body.siog-modern .table td,
body.siog-modern .table th,
body.siog-modern table td,
body.siog-modern .dropdown-divider,
body.siog-modern .visao-side-box.teal{border-color:var(--id-border)!important}

/* 22h. Chips e botões específicos */
body.siog-modern .badge-deson{
  background:var(--id-bg-2)!important;
  border:1px solid var(--id-border-strong)!important;
  color:var(--id-muted)!important;
}
/* No resumo de Fontes & Tabelas, o regime e texto simples sobre o painel. */
body.siog-modern .insumos-page .ft-card .badge-deson{
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
body.siog-modern .orc-marker-menu,
body.siog-modern .acoes-list,
body.siog-modern .sb-confirm-dialog,
body.siog-modern .enc-modal-dialog,
body.siog-modern .enc-search-dialog{
  background:var(--id-surface)!important;
  border:1px solid var(--id-border-strong)!important;
  border-radius:var(--id-radius)!important;
  box-shadow:var(--id-shadow-pop)!important;
  color:var(--id-text)!important;
}

/* 22i. Importar planilha (upload-drop) e modelos sistema de referencia */
body.siog-modern .upload-drop{
  background:var(--id-inset)!important;
  border:1px dashed var(--id-border-strong)!important;
  border-radius:var(--id-radius)!important;
  color:var(--id-text)!important;
}

body.siog-modern .modelo-btn{
  background:var(--id-bg-2)!important;
  border:1px solid var(--id-border)!important;
  color:var(--id-text)!important;
  border-radius:var(--id-radius-sm)!important;
}
body.siog-modern .oc-tree-section-head span{background:var(--id-bg-2)!important;border:1px solid var(--id-border)!important;color:var(--id-muted)!important}
body.siog-modern .orc-marker-menu-form button{background:var(--id-accent)!important;border-color:var(--id-accent)!important;color:var(--id-accent-ink)!important;border-radius:var(--id-radius-sm)!important}
body.siog-modern .orc-marker-menu-form button:hover{background:var(--id-accent-strong)!important;border-color:var(--id-accent-strong)!important}

/* O botão "Salvar organização" é `position:sticky` e usa uma sombra sólida como
   MÁSCARA, para a lista não aparecer no vão de 7px acima dele. O legado cravou
   branco (painel branco da época) e no escuro virava uma barra branca em volta.
   Mantém a máscara, agora na cor do painel, nos dois temas. */
body.siog-modern .orc-marker-menu-form > button{
  box-shadow:0 -7px 0 0 var(--id-surface)!important;
}
body.siog-modern .marker-chip,
body.siog-modern .bdi-info-badge,
body.siog-modern .modelo-years .btn{background:var(--id-bg-2)!important;border:1px solid var(--id-border-strong)!important;color:var(--id-text)!important}
body.siog-modern .btn-primary,
body.siog-modern .btn-info,
body.siog-modern .btn-success,
body.siog-modern .btn.ok,
body.siog-modern button.btn.ok,
body.siog-modern .page-item.active .page-link,
body.siog-modern .visao-btn.ok,
body.siog-modern button.visao-btn.js-save,
body.siog-modern .btn.primary,
body.siog-modern .crono-main-edit,
body.siog-modern .modelo-years .btn.active{background:var(--id-accent)!important;border-color:var(--id-accent)!important;color:var(--id-accent-ink)!important}
body.siog-modern .plan-tree-item,
body.siog-modern span.ft-nome,
body.siog-modern .ins-group-option,
body.siog-modern .modelos-notas,
body.siog-modern .modelos-notas li{color:var(--id-text)!important;background:transparent!important}
body.siog-modern .bdi-frac-top,body.siog-modern .bdi-frac-bottom,
body.siog-modern .bdi-formula-real{color:var(--id-text)!important;border-color:var(--id-border-strong)!important}
/* Os menus suspensos ficam DENTRO da .main-header no HTML, mas visualmente são superfície, não moldura: sem isto as regras de cima pintam os itens com o cinza claro da barra sobre o painel branco. */
body.siog-modern .main-header .dropdown-menu,
body.siog-modern .main-header .dropdown-menu a,
body.siog-modern .main-header .dropdown-menu .dropdown-item,
body.siog-modern .main-header .dropdown-menu button,
body.siog-modern .main-header .dropdown-menu span,
body.siog-modern .main-header .dropdown-menu i,
body.siog-modern td,
body.siog-modern .drop-area .big,
body.siog-modern .acoes-list a,
body.siog-modern .rel-box span,
body.siog-modern .rel-box b,
body.siog-modern .rel-box strong,
body.siog-modern .fonte-sigla,
body.siog-modern .rel-box li,
body.siog-modern .ins-tipos label,
body.siog-modern .cats label,
body.siog-modern .siog-footer-brand,
body.siog-modern .oc-tree-card strong,
body.siog-modern .oc-tree-card b,
body.siog-modern .oc-tree-name,
body.siog-modern .pasta-tree-name,
body.siog-modern .oc-tree-card span:not(.badge):not(.oc-tree-folder-icon),
body.siog-modern .filtro-card span,
body.siog-modern .filtro-card b,
/* textos comuns dentro de card: corrente forte, apoio muted */
body.siog-modern .card-body b,
body.siog-modern .card-body strong,
body.siog-modern .upload-drop strong,
body.siog-modern .modelos-content span,
body.siog-modern .modelos-content strong,
body.siog-modern .versao-card span,
body.siog-modern .ft-card-body,
body.siog-modern .fonte-linha,
body.siog-modern .ft-card-body b,
body.siog-modern .ft-card-body span,
body.siog-modern .fonte-linha b,
body.siog-modern .orc-marker-menu-form strong,
body.siog-modern .orc-marker-menu-form label{color:var(--id-text)!important}
body.siog-modern .versao-card .vh{background:var(--id-inset)!important;border-color:var(--id-border)!important}
body.siog-modern .visao-btn,
body.siog-modern .rel-action,
body.siog-modern .plan-icon-action,
body.siog-modern .plan-search-btn,
body.siog-modern .bdi-cancel,
body.siog-modern a.btn.sec.plan-menu-link,
body.siog-modern .abc-section-toggle,
body.siog-modern .cron-filter-toggle,
body.siog-modern .sb-rel-modo,
body.siog-modern a.enc-config-btn,
body.siog-modern a.pref-new-config,
body.siog-modern a.pref-edit-small,
body.siog-modern .oc-tree-card button,
body.siog-modern .cad-btn,
body.siog-modern .compare-search-btn,
body.siog-modern .upload-drop em{
  background:var(--id-surface)!important;
  border:1px solid var(--id-border-strong)!important;
  color:var(--id-text)!important;
  border-radius:var(--id-radius-sm)!important;
}

/* 22n. Sidebar do modo orçamento (orcamento-shell tem regras próprias c/ !important) */
body.siog-modern.orcamento-shell .main-sidebar,
body.siog-modern.orcamento-shell .main-sidebar .sidebar{background:var(--id-frame-bg)!important}
body.siog-modern.orcamento-shell .main-sidebar .nav-link,
body.siog-modern.orcamento-shell .nav-sidebar .nav-link{background:transparent!important;color:var(--id-frame-muted)!important}
body.siog-modern .main-sidebar .nav-link.active p{color:inherit!important}

/* chip do ID do orçamento na sidebar: pill no acento da identidade */
body.siog-modern .sb-orc-idline span:not(.badge){
  background:var(--id-accent)!important;
  color:var(--id-accent-ink)!important;
}

/* itens do menu no shell do orçamento: o ultra usa seletor (0,4,4)+!important */
body.siog-modern.orcamento-shell .nav-sidebar .nav-link:not(#siog-x){
  background:transparent!important;
  background-image:none!important;
  color:var(--id-frame-text)!important;
}
body.siog-modern .main-header a:hover,
body.siog-modern .main-header .nav-link:hover,
body.siog-modern .main-header .user-menu a,
body.siog-modern .main-header a.siog-user-link .siog-user-company,
body.siog-modern.orcamento-shell .main-header a.top-menu.top-menu.top-menu:hover,
body.siog-modern .sb-orc-context p,
/* Mesma cor de menu na home: lá quem vencia era o siog-modern.css (`.nav-sidebar > .nav-item > .nav-link`, 0-3-3). Bump de ID iguala as duas. */
body.siog-modern .nav-sidebar .nav-link:not(#siog-x){color:var(--id-frame-text)!important}
body.siog-modern .main-sidebar .nav-link:hover,
body.siog-modern.orcamento-shell .nav-sidebar .nav-link:hover,
body.siog-modern.orcamento-shell .nav-sidebar .nav-link:not(#siog-x):hover{
  background:var(--id-frame-hover)!important;
  color:var(--id-frame-text)!important;
}
body.siog-modern table td,
body.siog-modern table tr,
body.siog-modern .content-wrapper b,
body.siog-modern .detail-summary label,
body.siog-modern span.ft-w,
body.siog-modern .card-body:not(.logo-preview):not(#siog-x),
body.siog-modern table:not(.plan-table) td:not(#siog-x),
body.siog-modern table:not(.plan-table) tr:not(#siog-x),
body.siog-modern .content-wrapper label,
body.siog-modern table:not(#siog-x),
body.siog-modern .ajt-icon i{background:transparent!important}
/* 16/08/2026 (pedido do dono): a célula divergente da revisão da importação
   volta a ser pintada, como no sistema de referencia. O rosa é o do tema base (#ffd9dc,
   siog-theme:1435); quem o apagava era a regra logo acima, que zera o fundo de
   TODA célula. O segundo :not(#siog-y) sobe a especificidade de (1,2,3) para
   (2,2,3) e vence só aqui. No escuro o rosa claro comeria o texto, então entra
   rebaixado, com a borda esquerda marcando a célula. */
body.siog-modern table:not(#siog-y) td.import-error-cell:not(#siog-x){
  background:#ffd9dc!important; color:#4a1519!important;
  box-shadow:inset 2px 0 0 #d9534f;
}
body.siog-modern:not(.tema-claro) table:not(#siog-y) td.import-error-cell:not(#siog-x){
  background:#43242a!important; color:var(--id-text)!important;
  box-shadow:inset 2px 0 0 #ef6a6e;
}
body.siog-modern .ajt-card-footer,
body.siog-modern .bdi-card-pager,
body.siog-modern .cad-field > span,
/* 22m. Chips de rótulo dos filtros (padrão label>span do legado, #f4f4f4) */
body.siog-modern .orc-field > span,
body.siog-modern .ins-field > span,
body.siog-modern .proprios-body .fonte-table-grid label > span,
body.siog-modern .bdi-filter-field span,
body.siog-modern .cfp-selected-name,
body.siog-modern .fontes-aux-label,
body.siog-modern .orc-info-title,
body.siog-modern .enc-search-filter label,
body.siog-modern .prop-import-open-table span,
body.siog-modern .prop-import-filter-text b,
body.siog-modern .prop-import-type-filters > strong,
body.siog-modern .prop-import-category-filter summary,
body.siog-modern .fonte-table-grid label > span{
  background:var(--id-bg-2)!important;
  border-color:var(--id-border)!important;
  color:var(--id-muted)!important;
}
body.siog-modern label.modal-field,
body.siog-modern .modal-field,
body.siog-modern .bdi-tabs-card a,
body.siog-modern .sb-rel-nav .nav-link,
body.siog-modern .sb-rel-nav a,
body.siog-modern .abc-filter-box legend,
body.siog-modern .quant-filter-box legend,
body.siog-modern label.enc-field,
body.siog-modern .pref-online-nav a,
body.siog-modern .subtabs a,
body.siog-modern .ajs-tabs a,
body.siog-modern .erros-tabs a,
body.siog-modern .hist-tabs a,
body.siog-modern .extra-tabs a,
body.siog-modern .modelos-source-nav a,
body.siog-modern .orc-info-idx,
body.siog-modern .orc-fixed-note,
body.siog-modern .visao-note,
body.siog-modern .idx,
body.siog-modern .fonte-meta,
body.siog-modern .fonte-uf,
body.siog-modern .ft-regime,
body.siog-modern .parenteses,
body.siog-modern .enc-page-summary,
body.siog-modern .obs,
body.siog-modern .sub,
body.siog-modern .empty,
body.siog-modern .ft-card-body em,
body.siog-modern .ft-card-body small,
body.siog-modern .history-field > span,
body.siog-modern .history-field label{color:var(--id-muted)!important;background:transparent!important}
body.siog-modern small,
body.siog-modern .text-muted,
body.siog-modern .main-header .dropdown-menu .dropdown-header,
body.siog-modern .main-header .dropdown-menu small,
body.siog-modern .dropdown-header,
body.siog-modern .siog-home-hero p,
body.siog-modern .drop-area .ou,
body.siog-modern .home-fontes th,
body.siog-modern .rel-bdi-note,
body.siog-modern .rel-box .rel-field span:first-child,
body.siog-modern .rel-field label,
body.siog-modern .ft-right .text-muted,
body.siog-modern span.ft-w.text-muted,
body.siog-modern .main-footer,
body.siog-modern .main-footer *,
body.siog-modern .sb-rel-nav i:not(#siog-x),
/* subtítulo de QUALQUER h1 de página ([ Listar ], [ PDF | EXCEL ]...) e ícones dos filtros laterais dos relatórios */
body.siog-modern h1 > span:not(#siog-x),
body.siog-modern .sb-rel-lado i,
body.siog-modern .chk-linha i,
body.siog-modern .card-body em,
body.siog-modern .card-body small,
body.siog-modern .upload-drop b,
body.siog-modern .upload-drop em,
body.siog-modern .modelos-content small,
body.siog-modern .tipo-card p,
body.siog-modern table th a,
body.siog-modern .orc-organization-copy,
body.siog-modern .orc-organization-copy b,
body.siog-modern .versao-card .vh,
body.siog-modern .versao-card .vh span,
body.siog-modern table th:not(#siog-x):not(#siog-y),
body.siog-modern table th:not(#siog-x):not(#siog-y) span,
body.siog-modern .orc-field-box span,
body.siog-modern .text-muted:not(#siog-x),
body.siog-modern .fonte-uf.fonte-uf,
body.siog-modern .mem-detail-card em,
body.siog-modern .mem-missing-note{color:var(--id-muted)!important}

/* campos desabilitados */
body.siog-modern input:disabled,
body.siog-modern select:disabled,
body.siog-modern textarea:disabled{
  background:var(--id-bg-2)!important;
  color:var(--id-faint)!important;
}

/* Coluna FONTE de Insumos & Composições: "SINAPI" quebrava como "SINAP / I".
   Eram três coisas somadas — 54px de coluna, 16px de recuo (sobravam 38px) e
   `overflow-wrap:anywhere`, que autoriza cortar no meio da palavra. */
/* as larguras vêm em `style` inline no <col>, então exigem !important */
body.siog-modern .ajs-table-insumos col:nth-child(2){width:66px!important}

/* As quatro subcolunas de valor vinham desiguais (84 / 126,5 / 131,5 / 131,5),
   deixando VALOR OFICIAL menor que VALOR UTILIZADO. Todas na média (118px), o
   que iguala também a largura dos dois grupos, sem inchar a tabela. */
body.siog-modern .ajs-table-insumos col:nth-child(8),
body.siog-modern .ajs-table-insumos col:nth-child(9),
body.siog-modern .ajs-table-insumos col:nth-child(10),
body.siog-modern .ajs-table-insumos col:nth-child(11){width:118px!important}

body.siog-modern .ajs-table-insumos thead th:nth-child(2),
body.siog-modern .ajs-table-insumos tbody td:nth-child(2){
  font-size:10.5px!important;
  white-space:nowrap!important;
  overflow-wrap:normal!important;
  word-break:keep-all!important;
  padding-left:6px!important;
  padding-right:6px!important;
}

/* Mesma quebra na aba SERVIÇOS & COMPOSIÇÕES: lá a tabela é `.ajs-table` pura
   e a FONTE é a 3ª coluna (a de Insumos tem classe própria e é a 2ª). */
/* Esta tabela não tem <colgroup> e usa largura automática, então largura de
   coluna se define por `min-width` na própria célula, não em <col>. */
body.siog-modern .ajs-table:not(.ajs-table-insumos):not(.trocas-table) thead th:nth-child(3),
body.siog-modern .ajs-table:not(.ajs-table-insumos):not(.trocas-table) tbody td:nth-child(3){
  min-width:62px;
  font-size:10.5px!important;
  white-space:nowrap!important;
  overflow-wrap:normal!important;
  word-break:keep-all!important;
  padding-left:6px!important;
  padding-right:6px!important;
}

/* Em qualquer tabela dessas, nome de fonte não pode ser cortado no meio da
   palavra; frases longas continuam quebrando nos espaços normalmente. */
body.siog-modern .ajs-table td,
body.siog-modern .ajs-table th{overflow-wrap:normal}

/* "Remover Todas" é um <a> e herdava o azul de link da identidade sobre o
   vermelho do botão. Branco e em negrito, como qualquer ação destrutiva. */
body.siog-modern .fontes-remove-all,
body.siog-modern .fontes-remove-all:hover,
body.siog-modern .fontes-remove-all *{
  color:#fff!important;
  font-weight:700!important;
}

/* Nomes das fontes vinham cortados com reticências (precisavam de ~113px e
   tinham 74px). Passam a quebrar em duas linhas e aparecem por inteiro; a
   quebra é só entre palavras, nunca no meio do nome. */
body.siog-modern .fontes-check span{
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  overflow-wrap:normal!important;
  word-break:keep-all!important;
  line-height:1.2;
}

body.siog-modern .fontes-check{align-items:flex-start}
body.siog-modern .fontes-check-grid{align-items:start}

/* ---- Acervo de logos dos cabeçalhos (caixa de seleção, 14/08) ----------------- */

body.siog-modern .logo-galeria-fundo{
  position:fixed;
  inset:0;
  z-index:1070;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
  background:rgba(2,4,10,.72);
}

body.siog-modern .logo-galeria-fundo[hidden]{display:none}

body.siog-modern .logo-galeria-caixa{
  width:min(1080px,100%);
  max-height:88vh;
  display:flex;
  flex-direction:column;
  background:var(--id-surface);
  border:1px solid var(--id-border-strong);
  border-radius:var(--id-radius);
  box-shadow:var(--id-shadow-pop);
  overflow:hidden;
}

body.siog-modern .logo-galeria-topo{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:12px 16px;
  background:var(--id-bg-2);
  border-bottom:1px solid var(--id-border);
  color:var(--id-text-strong);
  font-size:13px;
  font-weight:700;
  letter-spacing:.04em;
  text-transform:uppercase;
}

body.siog-modern .logo-galeria-topo small{color:var(--id-muted);font-weight:600}

body.siog-modern .logo-galeria-x{
  background:transparent!important;
  border:0!important;
  color:var(--id-muted)!important;
  font-size:16px;
  cursor:pointer;
}
body.siog-modern table tbody tr:hover > td,
body.siog-modern table tbody tr:hover,
body.siog-modern .siog-home-hero h1,
body.siog-modern .siog-home-hero h2,
body.siog-modern .siog-home-hero .siog-hero-title,
body.siog-modern .home-panel h2,
body.siog-modern .home-panel h3,
body.siog-modern .visao-panel h2,
body.siog-modern .visao-panel h3,
body.siog-modern .visao-side-box h3,
body.siog-modern .plan-valores-box span:last-child,
body.siog-modern .rel-total-badge,
body.siog-modern .visao-panel-title *,
body.siog-modern .visao-side-title *,
body.siog-modern .card-header .card-title,
body.siog-modern .modelos-content h3,
body.siog-modern .tipo-card h4,
body.siog-modern .logo-galeria-x:hover{color:var(--id-text-strong)!important}

body.siog-modern .logo-galeria-grade{
  flex:1;
  overflow-y:auto;
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(160px,1fr));
  gap:12px;
  padding:16px;
}

/* célula de envio: tracejada, igual à do sistema de referencia */
body.siog-modern .logo-galeria-envio label{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:6px;
  height:100%;
  min-height:140px;
  padding:12px;
  border:1px dashed var(--id-border-strong);
  border-radius:var(--id-radius-sm);
  background:var(--id-inset);
  color:var(--id-muted);
  font-size:11px;
  text-align:center;
  cursor:pointer;
}

body.siog-modern .logo-galeria-envio.is-sobre label{
  border-color:var(--id-accent);
  background:var(--id-accent-dim);
  color:var(--id-text);
}

body.siog-modern .logo-galeria-envio i{font-size:22px;color:var(--id-faint)}
body.siog-modern .logo-galeria-envio input[type=file]{display:none}

body.siog-modern .logo-galeria-procurar{
  margin-top:2px;
  padding:5px 10px;
  border:1px solid var(--id-border-strong);
  border-radius:var(--id-radius-sm);
  background:var(--id-surface);
  color:var(--id-text);
  font-weight:600;
}

/* item do acervo */
body.siog-modern .logo-galeria-item{
  position:relative;
  min-height:140px;
  border:1px solid var(--id-border);
  border-radius:var(--id-radius-sm);
  background:#fff;               /* logo quase sempre é arte para fundo claro */
  overflow:hidden;
}

body.siog-modern .logo-galeria-item > form:first-child,
body.siog-modern .logo-galeria-item > form:first-child button{
  width:100%;
  height:100%;
}

body.siog-modern .logo-galeria-item > form:first-child button{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:10px;
  background:transparent!important;
  border:0!important;
  cursor:pointer;
}

body.siog-modern .logo-galeria-item img{
  max-width:100%;
  max-height:118px;
  object-fit:contain;
}

body.siog-modern .logo-galeria-item:hover{border-color:var(--id-accent)}

body.siog-modern .logo-galeria-lixo{position:absolute;top:4px;right:4px}

body.siog-modern .logo-galeria-lixo button{
  width:24px;height:24px;
  display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.9)!important;
  border:1px solid var(--id-danger)!important;
  border-radius:6px;
  color:var(--id-danger)!important;
  font-size:11px;
  cursor:pointer;
}
body.siog-modern .btn-danger:hover,
body.siog-modern .visao-btn.danger:hover,
body.siog-modern .logo-galeria-lixo button:hover{background:var(--id-danger)!important;color:#fff!important}

body.siog-modern .logo-galeria-tag{
  position:absolute;
  left:4px;bottom:4px;
  padding:2px 6px;
  border-radius:999px;
  background:var(--id-accent-dim);
  color:var(--id-accent-text);
  font-size:9px;
  font-weight:700;
  letter-spacing:.06em;
}

body.siog-modern .logo-galeria-rodape{
  padding:10px 16px;
  border-top:1px solid var(--id-border);
  background:var(--id-bg-2);
  text-align:center;
}

@media (max-width:576px){
  body.siog-modern .logo-galeria-grade{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}
  body.siog-modern .logo-galeria-fundo{padding:10px}
}

/* ---- Barra lateral: menu mais compacto e grupos recolhíveis (14/08) ---------- */

/* itens eram 42px de altura com 9px de recuo e 3px entre eles */
body.siog-modern .nav-sidebar > .nav-item{margin-bottom:1px!important}

/* `height:auto` é indispensável: a tela de Etapas & Serviços ganha a classe
   `planilha-page` POR JAVASCRIPT e o siog-theme tem um bloco só dela com
   `height:40px` FIXA, margem de 3px e ícone maior — era a única aba destoando. */
body.siog-modern .nav-sidebar > .nav-item > .nav-link,
body.siog-modern.orcamento-shell .nav-sidebar > .nav-item > .nav-link,
body.siog-modern.planilha-page .nav-sidebar > .nav-item > .nav-link{
  height:auto!important;
  min-height:34px!important;
  padding:5px 10px!important;
  margin:0 0 1px!important;
}

body.siog-modern .nav-sidebar .nav-link .nav-icon{
  font-size:14px!important;
  margin-right:8px!important;
  width:20px!important;
}

/* cabeçalho de grupo da planilha vinha com altura fixa e faixa cinza própria */
body.siog-modern.planilha-page .nav-sidebar > .nav-header.sb-nav-header,
body.siog-modern .nav-sidebar > .nav-header.sb-nav-header{
  height:auto!important;
  background:transparent!important;
  align-items:center!important;
}
body.siog-modern a.nav-link.sb-sub-active,
body.siog-modern.orcamento-shell .main-sidebar .nav-link.active,
body.siog-modern.orcamento-shell .nav-sidebar .nav-link.active,
body.siog-modern.orcamento-shell .nav-sidebar .nav-link.active:not(#siog-x),
body.siog-modern.planilha-page .nav-sidebar > .nav-item > .nav-link.active{
  background:var(--id-accent-dim)!important;
  background-image:none!important;
  color:var(--id-accent)!important;
}

/* subitens: o siog-theme crava `height:40px` (altura FIXA, não mínima), então
   mexer só em min-height não encolhia nada. */
body.siog-modern .nav-sidebar .nav-treeview > .nav-item > .nav-link{
  height:auto!important;
  min-height:28px!important;
  padding:3px 10px!important;
}

body.siog-modern .nav-sidebar .nav-treeview .nav-link p{font-size:12.5px!important}
body.siog-modern .nav-sidebar .nav-treeview .nav-icon{font-size:13px!important}

/* Item selecionado: o siog-modern pinta um GRADIENTE TEAL (não é cor de fundo,
   é background-image, por isso `backgroundColor` aparecia transparente na
   inspeção) e o texto ficava azul em cima dele — ilegível. Vira realce discreto
   na cor da identidade, com uma barra à esquerda marcando a seleção. */
body.siog-modern .nav-sidebar > .nav-item > .nav-link.active,
body.siog-modern .nav-sidebar .nav-treeview > .nav-item > .nav-link.active,
body.siog-modern .main-sidebar .nav-link.active{
  background-image:none!important;
  background-color:var(--id-accent-dim)!important;
  color:var(--id-accent)!important;
  box-shadow:inset 3px 0 0 var(--id-accent)!important;
}
body.siog-modern .main-sidebar .nav-link.active .nav-icon,
body.siog-modern .nav-sidebar .nav-link:hover .nav-icon,
body.siog-modern .main-sidebar .nav-link.active,
body.siog-modern.orcamento-shell .nav-sidebar .nav-link.active:not(#siog-x),
body.siog-modern .nav-sidebar .nav-link.active:not(#siog-x),
body.siog-modern .nav-sidebar .nav-link.active p,
body.siog-modern .nav-sidebar .nav-link.active .nav-icon,
body.siog-modern .nav-sidebar .nav-link.active .badge{color:var(--id-accent)!important}

body.siog-modern .nav-sidebar > .nav-item > .nav-link.active:hover,
body.siog-modern .nav-sidebar .nav-treeview > .nav-item > .nav-link.active:hover{
  background-image:none!important;
  background-color:rgba(92,161,245,.2)!important;
}

body.siog-modern .nav-sidebar .nav-link p{font-size:13px!important}

/* cabeçalho de grupo vira botão de recolher (o JS monta a seta) */
body.siog-modern .sb-nav-header,
body.siog-modern .nav-sidebar .nav-header{
  padding:11px 12px 5px!important;
}

body.siog-modern .sb-grupo-cabecalho{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  cursor:pointer;
  user-select:none;
  border-radius:var(--id-radius-sm);
  transition:color .15s ease,background .15s ease;
}

body.siog-modern .sb-grupo-cabecalho:hover{
  background:var(--id-frame-hover);
  color:var(--id-frame-text)!important;
}

body.siog-modern .sb-grupo-cabecalho:focus-visible{
  outline:2px solid var(--id-accent);
  outline-offset:2px;
}

body.siog-modern .sb-grupo-seta{
  font-size:9px;
  opacity:.75;
  transition:transform .18s ease;
}

body.siog-modern .sb-grupo-cabecalho.is-recolhido .sb-grupo-seta{transform:rotate(-90deg)}

/* ---- 23. Layout: sobreposição e estouro de caixa (varredura 14/08, 4 larguras) ----
   Regras aditivas; NUNCA mexer em overflow de html/body/wrapper/ancestral de
   sticky (mata o sticky). Rolagem interna legítima fica; aqui só o que vazava. */

/* 23a. Defeitos visíveis em TODAS as larguras */
body.siog-modern .rel-plan-head .sub{display:block;position:static;margin-top:2px}
body.siog-modern .sync-option em{display:block;position:static;margin-top:2px}
body.siog-modern .ajs-filter-field .form-control:not(#siog-x),
body.siog-modern .ajs-filter-field input:not(#siog-x){max-width:100%!important;min-width:0!important;width:100%!important}
body.siog-modern td.plan-gear-col,body.siog-modern .plan-gear-col{min-width:36px}

/* selects que estouram o próprio rótulo/combo (novo orçamento, próprios) */
body.siog-modern .side-combo,body.siog-modern .side-combo select,
body.siog-modern .fonte-table-grid label,body.siog-modern .fonte-table-grid select{max-width:100%;min-width:0}

/* 23b. Notebook/painéis médios (≤1400px): colunas fixas que não cabem.
   acs-new-card e cad-filter-card são GRID com colunas em px cravado. */
@media (max-width:1400px){
  body.siog-modern .visao-grid{grid-template-columns:1fr!important}
  body.siog-modern .visao-side{max-width:100%;min-width:0}
  body.siog-modern .acs-new-card{grid-template-columns:1fr!important}
  body.siog-modern .acs-new-main,body.siog-modern .acs-new-summary{max-width:100%;min-width:0}
  body.siog-modern .acs-new-fields{grid-template-columns:1fr!important}
  body.siog-modern .acs-new-fields .form-control,
  body.siog-modern .acs-new-fields span{max-width:100%;min-width:0}
}

/* 23c. Tablet (≤900px): topbar e toolbars */
@media (max-width:900px){
  body.siog-modern .main-header .navbar-nav.ml-auto{flex-wrap:wrap;min-width:0}
  body.siog-modern .siog-command-trigger{max-width:130px;overflow:hidden}
  body.siog-modern .main-header a.siog-user-link{max-width:150px}
  body.siog-modern .main-header a.siog-user-link > span{display:block;max-width:100%;min-width:0;overflow:hidden}
  body.siog-modern .main-header a.siog-user-link .siog-user-name,
  body.siog-modern .main-header a.siog-user-link small{
    display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  }
  body.siog-modern .cad-filter-card{grid-template-columns:1fr!important}
  body.siog-modern .content-header .toolbar .btn{white-space:normal}
  body.siog-modern .ajs-tabs{flex-wrap:wrap}
  body.siog-modern .modelo-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))!important}
  body.siog-modern .modelo-btn{max-width:100%;min-width:0}
  body.siog-modern .fontes-check-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))!important}
  body.siog-modern .fontes-check-grid label{min-width:0;max-width:100%}
  body.siog-modern .hist-toolbar,body.siog-modern .hist-filter,
  body.siog-modern .hist-options,body.siog-modern .extra-head,
  body.siog-modern .extra-head-actions,body.siog-modern .enc-head,
  body.siog-modern .enc-actions,body.siog-modern .bdi-main-actions{flex-wrap:wrap;max-width:100%;min-width:0}
  body.siog-modern .bdi-tab-pane{overflow-x:auto}
  body.siog-modern .card-body table.table-sm{display:block;overflow-x:auto}
  body.siog-modern .filtro-card,body.siog-modern .cad-filter-card,
  body.siog-modern .filtro-checks{flex-wrap:wrap;max-width:100%}
}

/* 23d. Celular (≤576px): cabeçalho, filtros e formulários */
@media (max-width:576px){
  /* a toolbar do cabeçalho é GRID com coluna fixa, não flex (bump p/ vencer) */
  body.siog-modern .content-header .toolbar:not(#siog-x){grid-template-columns:1fr!important;grid-auto-flow:row!important;flex-wrap:wrap;width:100%;max-width:100%;justify-content:flex-start}
  body.siog-modern .orc-top-fields{grid-template-columns:1fr!important}
  body.siog-modern .modelo-years .btn:not(#siog-x){white-space:normal!important;min-width:0!important;width:auto!important;overflow:visible!important}
  body.siog-modern .modelo-grid:not(#siog-x){grid-template-columns:repeat(auto-fit,minmax(130px,1fr))!important}
  body.siog-modern .modelo-btn:not(#siog-x){max-width:100%!important;min-width:0!important;width:100%!important}
  body.siog-modern .modelos-section-title span{max-width:100%;overflow-wrap:anywhere}
  body.siog-modern .hist-filter:not(#siog-x){grid-template-columns:1fr!important;max-width:100%}
  body.siog-modern .orc-field:not(#siog-x),body.siog-modern .ins-field:not(#siog-x){grid-template-columns:1fr!important;max-width:100%}
  body.siog-modern .orc-field .form-control:not(#siog-x){width:100%!important;max-width:100%!important;min-width:0!important}
  body.siog-modern .content-header .toolbar:not(#siog-x){grid-column:1 / -1!important;place-self:start stretch!important;position:relative!important;margin:6px 0 0!important}
  body.siog-modern .hist-filter input:not(#siog-x){max-width:100%!important;min-width:0!important;width:100%!important}
  body.siog-modern .content-header:not(#siog-x){display:flex;flex-wrap:wrap!important}
  body.siog-modern .content-header .toolbar:not(#siog-x){margin-left:0!important}
  body.siog-modern .orc-info-row .ui-commandlink:not(#siog-x){display:inline-block;max-width:100%!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  body.siog-modern .content-header{flex-wrap:wrap}
  body.siog-modern .orc-field,body.siog-modern .ins-field,
  body.siog-modern .lix-filter,body.siog-modern .orc-filter-card{flex-wrap:wrap;min-width:0}
  body.siog-modern .orc-field .form-control,body.siog-modern .ins-field .form-control,
  body.siog-modern .lix-filter .form-control,body.siog-modern .lix-filter label,
  body.siog-modern .lix-checks{max-width:100%;min-width:0}
  body.siog-modern .orc-top-fields,body.siog-modern .orc-field-box,
  body.siog-modern .orc-info-table,body.siog-modern .orc-info-row{max-width:100%;min-width:0;flex-wrap:wrap}
  body.siog-modern .upload-drop *{max-width:100%}
  body.siog-modern .orc-field-box{width:100%}
  body.siog-modern .orc-info-row .ui-commandlink{max-width:100%;overflow:hidden;text-overflow:ellipsis}
  body.siog-modern .rel-plan-head{flex-wrap:wrap}
  body.siog-modern .modelos-section-title{flex-wrap:wrap}
  body.siog-modern .acs-actions{flex-wrap:wrap;max-width:100%}
  /* rótulo de ajuda deixa de dividir linha com o botão salvar */
  body.siog-modern form .text-muted.ml-2{display:block;margin-left:0!important;margin-top:6px}
  body.siog-modern .comments-colors{position:static!important;margin-top:6px;display:flex;flex-wrap:wrap}
  body.siog-modern .comments-compose .btn{max-width:100%}
}

/* ---- 24. Login (standalone, sempre escuro, sem .siog-modern) --------------------- */

body:has(> .cartao){
  background:radial-gradient(1100px 560px at 18% -8%, #10192b 0%, #080b12 58%, #05070c 100%);
  font-family:var(--id-font);
}

.cartao{
  background:#141a25;
  border:1px solid #323a49;
  border-radius:16px;
  box-shadow:0 16px 48px rgba(0,0,0,.5);
}

.cartao-topo{
  background:#0d1119;
  border-bottom:1px solid #222a39;
  color:#f8fafc;
}

.cartao-topo h1{font-weight:650;letter-spacing:.22em;font-size:1.3rem}
.cartao-topo small{color:#9aa6b7;opacity:1;font-size:.72rem}

body:has(> .cartao) label{color:#9aa6b7;font-size:.72rem;letter-spacing:.04em;text-transform:uppercase}

body:has(> .cartao) input{
  background:#0e1420;
  border:1px solid #222a39;
  border-radius:8px;
  color:#dfe5ee;
  font-size:.9rem;
}

body:has(> .cartao) input:focus{
  outline:none;
  border-color:#5ca1f5;
  box-shadow:0 0 0 3px rgba(92,161,245,.13);
}

body:has(> .cartao) button{
  background:#5ca1f5;
  color:#081018;
  font-weight:650;
  letter-spacing:.08em;
  border-radius:8px;
}

body:has(> .cartao) button:hover{background:#77d4f9;filter:none}

body:has(> .cartao) .erro{
  background:rgba(239,106,110,.12);
  border:1px solid rgba(239,106,110,.5);
  color:#ef6a6e;
}

body:has(> .cartao) a{color:#5ca1f5!important}

/* ---- 25. Menus "Ações Disponíveis" (padrão único das 9 telas) -------------------
   São <details>/<summary> nativos e a base já traz o item .gi em coluna cheia.
   Faltavam duas coisas: o menu da lista de orçamentos não usava esse padrão (sem
   a classe, os botões caíam no estilo genérico e quebravam em duas fileiras com
   borda), e o realce seguia o verde-água legado em vez do azul da identidade. */
/* O invólucro é só o wrapper do gatilho, não um painel: pintar fundo, borda e
   sombra nele desenhava uma segunda moldura em volta do botão (era isso que
   dava o ar de "caixa"). Quem tem superfície é a lista, logo abaixo. */
body.siog-modern .acoes-drop{
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
/* O gatilho seguia o cinza-claro do tema antigo (#f8f9fa) mesmo no escuro, e
   escapava das varreduras por só existir no modo de seleção. Agora usa os
   mesmos tokens do botão vizinho [ SELECIONAR ]. */
body.siog-modern .acoes-drop>summary:not(#siog-x){
  background:var(--id-surface)!important;
  border:1px solid var(--id-border-strong)!important;
  color:var(--id-text)!important;
}
body.siog-modern .acoes-drop>summary:not(#siog-x):hover{
  background:var(--id-surface-2)!important;
  border-color:var(--id-accent)!important;
}
body.siog-modern .acoes-list{padding:6px!important}
body.siog-modern .acoes-list>button,
body.siog-modern .acoes-list>a,
body.siog-modern .acoes-list>span,
body.siog-modern .acoes-list .gi{
  display:flex!important;
  align-items:center;
  width:100%!important;
  margin:0!important;
  padding:8px 10px!important;
  border:0!important;
  border-radius:var(--id-radius-sm)!important;
  background:transparent!important;
  box-shadow:none!important;
  color:var(--id-text)!important;
  font-size:12.5px!important;
  font-weight:600!important;
  line-height:1.35!important;
  text-align:left!important;
  text-transform:none!important;
  letter-spacing:0!important;
  white-space:normal;
}
body.siog-modern .acoes-list>button i,
body.siog-modern .acoes-list>a i,
body.siog-modern .acoes-list .gi i{
  color:var(--id-faint)!important;
  font-size:12px!important;
}
/* realce em azul da identidade, no lugar do verde-água do tema antigo */
body.siog-modern .acoes-list>button:hover:not(:disabled):not(.off),
body.siog-modern .acoes-list>a:hover,
body.siog-modern .acoes-list .gi:hover:not(:disabled):not(.off){
  background:var(--id-accent-dim)!important;
  color:var(--id-accent-text)!important;
}
body.siog-modern .acoes-list>button:hover:not(:disabled):not(.off) i,
body.siog-modern .acoes-list>a:hover i,
body.siog-modern .acoes-list .gi:hover:not(:disabled):not(.off) i{
  color:var(--id-accent-text)!important;
}
/* a ação destrutiva fica vermelha sempre, para não ser clicada no automático */
body.siog-modern .acoes-list .danger,
body.siog-modern .acoes-list .danger i{color:var(--id-danger)!important}
body.siog-modern .acoes-list .danger:hover{background:rgba(217,72,76,.13)!important}
/* No tema claro o vermelho do token dá 4,22 sobre branco, abaixo do mínimo de
   4,5 do WCAG para texto normal. Escurecido só aqui, sem mexer no token. */
body.siog-modern.tema-claro .acoes-list .danger,
body.siog-modern.tema-claro .acoes-list .danger i{color:#bf3438!important}
body.siog-modern .acoes-list .danger:hover i{color:var(--id-danger)!important}
/* item desligado ou desabilitado não acende */
body.siog-modern .acoes-list .off,
body.siog-modern .acoes-list .off i,
body.siog-modern .acoes-list>button:disabled,
body.siog-modern .acoes-list>button:disabled i{
  color:var(--id-faint)!important;
  cursor:not-allowed;
}
body.siog-modern .acoes-list .off:hover,
body.siog-modern .acoes-list>button:disabled:hover{background:transparent!important}
/* separador e título de seção */
body.siog-modern .acoes-sep{
  border-top:1px solid var(--id-border)!important;
  margin:5px 6px!important;
}
body.siog-modern .acoes-sec{
  padding:7px 10px 3px!important;
  font-size:10px!important;
  font-weight:700!important;
  letter-spacing:.6px;
  text-transform:uppercase;
  color:var(--id-faint)!important;
}
/* Seta no gatilho, girando ao abrir. Fica ANCORADA à direita, fora do fluxo:
   como item flex ela encolhia a zero dentro do gatilho de largura fixa (146px)
   com overflow:hidden, e simplesmente não aparecia. O respiro à direita impede
   que o rótulo centralizado encoste nela. */
body.siog-modern .acoes-drop>summary{
  position:relative;
  display:inline-flex!important;
  align-items:center;
  justify-content:center;
  padding-right:22px!important;
}
/* Usa ::before porque o ::after do gatilho ja e do brilho de hover dos botoes
   (siog-ultra: .btn:not(.dropdown-toggle)::after), que vence em especificidade. */
body.siog-modern .acoes-drop>summary::before{
  content:"\f078";
  font-family:"Font Awesome 6 Free","Font Awesome 5 Free";
  font-weight:900;
  font-size:9px;
  line-height:1;
  opacity:.65;
  position:absolute;
  right:9px;
  top:50%;
  transform:translateY(-50%);
  transition:transform .15s ease;
  pointer-events:none;
}
body.siog-modern .acoes-drop[open]>summary::before{
  transform:translateY(-50%) rotate(180deg);
}
/* Defeito anterior a esta mudanca: o gatilho da lixeira do orcamento tem
   largura travada em 146px e o rotulo em caixa alta nao cabia, saindo cortado
   em 8px. Com min-width ele cresce so quando o texto precisa. */
body.siog-modern a.lix-actions-btn{
  width:auto!important;
  min-width:146px;
}
/* abertura curta o bastante para não atrapalhar medição automatizada */
@keyframes idAcoesAbre{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
body.siog-modern .acoes-drop[open]>.acoes-list,
body.siog-modern .acoes-drop.open>.acoes-list{animation:idAcoesAbre .12s ease-out}

/* ---- 26. Criar Novo Orçamento: coluna lateral alinhada ---------------------
   Os cards de Pasta e Marcador tinham padding só no topo do cabeçalho e nada
   nas laterais/baixo: o link flutuava num retângulo semivazio e o combo ficava
   colado nas bordas — era isso o "torto". Padding uniforme, link à direita
   como ação, e o rótulo PASTA alinhado ao select. */
body.siog-modern .side-action-card{padding:12px 14px!important}
body.siog-modern .side-action-card .side-action-head{
  padding:0!important;
  margin:0!important;
  display:flex;
  justify-content:flex-end;
  gap:18px;
}
body.siog-modern .folder-card .side-action-head{margin:0 0 10px!important}
/* Dados do Orçamento cresce; a lateral encosta no canto direito. O tema
   base cravava 704px + 498px e sobrava um vão morto entre as colunas. */
body.siog-modern.orc-new-body .orc-new-page .orc-two-col{
  grid-template-columns:minmax(0,1fr) 380px!important;
  gap:16px!important;
}
body.siog-modern .side-action-head a{
  font-size:12px;
  font-weight:600;
  color:var(--id-accent-text)!important;
  text-decoration:none;
}
body.siog-modern .side-action-head a:hover{text-decoration:underline}
body.siog-modern .side-combo{
  display:flex!important;
  align-items:center;
  gap:10px;
  margin:0!important;
  width:auto!important;
}
body.siog-modern .side-combo span{
  flex:0 0 auto;
  font-size:11px;
  font-weight:700;
  letter-spacing:.5px;
  color:var(--id-muted)!important;
}
body.siog-modern .side-combo select{
  flex:1 1 auto;
  min-width:0;
  height:34px;
}

/* ---- 27. Modal Colunas: categorias no molde do sistema de referencia ----------------------
   As opções eram um bloco corrido de checkboxes; agora cada categoria é uma
   coluna com título sublinhado, e o painel distribui as colunas pela largura. */
body.siog-modern .pref-column-groups{
  display:grid!important;
  grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  gap:16px 22px;
  align-items:start;
}
body.siog-modern .pref-col-grupo h3{
  font-size:10.5px;
  font-weight:700;
  letter-spacing:.6px;
  text-transform:uppercase;
  color:var(--id-muted);
  border-bottom:1px solid var(--id-border);
  padding:0 0 5px;
  margin:0 0 8px;
}
body.siog-modern .pref-col-grupo label{
  display:flex;
  align-items:center;
  gap:7px;
  margin:0 0 6px;
  font-size:12px;
  font-weight:500;
  cursor:pointer;
}

/* ---- 28. Preferências > Arredondamento: proporção das colunas -------------
   A raiz do aperto: o tema marca "as 3 últimas colunas" como ações de 62px
   (.pref-config-table th:nth-last-child(-n+3)) — o que numa tabela de SEIS
   colunas acerta a própria "Configurações das Fontes/Tabelas", esmagada em
   três linhas. Aqui as seis colunas ficam explícitas: Tipo encolhe,
   Configurações absorve a folga, ações compactas. */
body.siog-modern #pref-round-table{table-layout:fixed;width:100%}
body.siog-modern #pref-round-table th:nth-child(1),
body.siog-modern #pref-round-table td:nth-child(1){width:44px!important}
body.siog-modern #pref-round-table th:nth-child(2),
body.siog-modern #pref-round-table td:nth-child(2){width:24%!important}
body.siog-modern #pref-round-table th:nth-child(3),
body.siog-modern #pref-round-table td:nth-child(3){width:18%!important}
body.siog-modern #pref-round-table th:nth-child(4),
body.siog-modern #pref-round-table td:nth-child(4){width:auto!important;text-align:left!important}
body.siog-modern #pref-round-table th:nth-child(5),
body.siog-modern #pref-round-table td:nth-child(5),
body.siog-modern #pref-round-table th:nth-child(6),
body.siog-modern #pref-round-table td:nth-child(6){width:74px!important;text-align:center!important}

/* ---- 29. Modal Arredondamento: painéis dinâmicos (fiel ao sistema de referencia) ---------
   "Manter originais" mostra os dois avisos; "Personalizadas" mostra os blocos
   de Insumo/Composição e Produção de Equipe Mecânica. */
body.siog-modern .pref-round-aviso p{
  margin:10px 0;
  padding:10px 14px;
  border:1px solid var(--id-border);
  border-radius:var(--id-radius-sm);
  color:var(--id-danger)!important;
  font-style:italic;
  font-weight:700;
  font-size:12px;
  text-transform:uppercase;
  letter-spacing:.3px;
}
body.siog-modern .pref-round-comp{margin-top:10px}
body.siog-modern .pref-round-fic{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:6px 14px;
  margin:8px 0 2px;
}
body.siog-modern .pref-round-fic b{
  flex:0 0 100%;
  font-size:10.5px;
  letter-spacing:.5px;
  text-transform:uppercase;
  color:var(--id-muted);
}
body.siog-modern .pref-round-fic label{display:flex;align-items:center;gap:5px;margin:0;font-weight:500}
body.siog-modern .pref-round-nota{
  margin:10px 2px 0;
  font-size:11px;
  color:var(--id-faint)!important;
}

/* ---- 30. Tabelas de configuração: interruptor da configuração padrão ------ */
body.siog-modern .pref-default-toggle{
  border:0;
  background:transparent;
  cursor:pointer;
  padding:2px 4px;
  font-size:20px;
  line-height:1;
  color:var(--id-faint);
  transition:color .12s ease;
}
body.siog-modern .pref-default-toggle:hover{color:var(--id-muted)}
body.siog-modern .pref-default-toggle.ativo{color:var(--id-success)!important}

/* ---- 31. Modal de Relatório: mais denso (11 seções) ----------------------- */
body.siog-modern .pref-report-grid{
  display:grid!important;
  grid-template-columns:repeat(auto-fit,minmax(300px,1fr));
  gap:14px 18px;
  align-items:start;
}
body.siog-modern .pref-report-grid fieldset{margin:0}
body.siog-modern .pref-campo-largo{display:block;width:100%}
body.siog-modern .pref-campo-largo textarea{width:100%;margin-top:4px;font-size:12px}
body.siog-modern .pref-nota-campo{
  display:block;
  margin-top:6px;
  font-size:10.5px;
  line-height:1.35;
  color:var(--id-faint)!important;
}

/* ---- 32. Sumário da Planilha: os 16 campos em grade ----------------------- */
body.siog-modern .pref-sumario-16{grid-column:1/-1}
body.siog-modern .pref-sumario-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
  gap:2px 16px;
}
body.siog-modern .pref-sumario-grid label{margin:0;display:flex;align-items:center;gap:6px}

/* ==========================================================================
   33. "Criar Novo": cards de Insumo / Incidência / Composição / Equipe

   A regra 22d achata TODO .tipo-card no tom da superfície, e era por isso que
   os quatro chegavam cinzas, com a chamada virando uma faixa apagada no rodapé.
   Aqui cada card recupera identidade: acento próprio na borda e num véu de
   fundo, ícone como marca-d'água e a chamada virando botão de verdade.
   Sem color-mix: cada acento traz o seu rgba pronto, o que evita depender de
   suporte do navegador e deixa o tom previsível nos dois temas.
   ========================================================================== */
body.siog-modern .insumos-new-page .tipo-stack{
  display:grid;
  gap:14px;
}
body.siog-modern .insumos-new-page .tipo-card{
  --tc:var(--id-accent);
  --tc-veu:rgba(92,161,245,.13);
  background:
    linear-gradient(135deg,var(--tc-veu),transparent 58%),
    var(--id-surface)!important;
  border:1px solid var(--id-border)!important;
  border-left:3px solid var(--tc)!important;
  border-radius:var(--id-radius)!important;
  height:auto;
  min-height:104px;
  margin:0;
  padding:17px 20px 60px!important;
  box-shadow:0 1px 2px rgba(0,0,0,.22)!important;
  transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease;
}
body.siog-modern .insumos-new-page .tipo-card:hover{
  transform:translateY(-2px);
  border-color:var(--tc)!important;
  box-shadow:0 12px 28px rgba(0,0,0,.34)!important;
}
body.siog-modern .insumos-new-page .tipo-card h4{
  margin:0 0 6px;
  font-size:18px;
  font-weight:650;
  letter-spacing:.2px;
  text-transform:uppercase;
  color:var(--id-text-strong)!important;
}
body.siog-modern .insumos-new-page .tipo-card p{
  margin:0;
  max-width:76%;
  font-size:13px;
  line-height:1.45;
  color:var(--id-muted)!important;
  opacity:1;
}
body.siog-modern .insumos-new-page .tipo-card .bg-ico{
  right:20px;
  top:50%;
  transform:translateY(-50%);
  font-size:62px;
  color:var(--tc)!important;
  opacity:.17;
}
/* A chamada era uma faixa de largura total em cinza; vira pílula no acento. */
body.siog-modern .insumos-new-page .tipo-card .criar{
  position:absolute;
  left:20px;
  right:auto;
  bottom:16px;
  width:auto;
  height:31px;
  padding:0 15px;
  border-radius:999px;
  display:inline-flex;
  align-items:center;
  gap:7px;
  background:var(--tc)!important;
  color:var(--id-accent-ink)!important;
  font-size:11.5px;
  font-weight:700;
  letter-spacing:.5px;
  text-transform:uppercase;
  box-shadow:0 2px 10px var(--tc-veu);
  transition:filter .14s ease,transform .14s ease;
}
body.siog-modern .insumos-new-page .tipo-card .criar:hover{
  filter:brightness(1.1);
  transform:translateY(-1px);
  color:var(--id-accent-ink)!important;
}
body.siog-modern .insumos-new-page .tipo-card .criar i{
  font-size:12px;
  margin:0!important;
}
body.siog-modern .insumos-new-page .tc-insumo{--tc:#5ca1f5;--tc-veu:rgba(92,161,245,.15)}
body.siog-modern .insumos-new-page .tc-incid{--tc:#34c98a;--tc-veu:rgba(52,201,138,.15)}
body.siog-modern .insumos-new-page .tc-comp{--tc:#4fd3e8;--tc-veu:rgba(79,211,232,.15)}
body.siog-modern .insumos-new-page .tc-equipe{--tc:#e8b93b;--tc-veu:rgba(232,185,59,.16)}
/* O tema claro escurece o texto do card mas mantém o acento; o véu fica mais
   discreto porque sobre fundo claro ele pesa mais. */
html.tema-claro body.siog-modern .insumos-new-page .tipo-card,
body.tema-claro.siog-modern .insumos-new-page .tipo-card{
  box-shadow:0 1px 3px rgba(16,24,40,.08)!important;
}
html.tema-claro body.siog-modern .insumos-new-page .tipo-card:hover,
body.tema-claro.siog-modern .insumos-new-page .tipo-card:hover{
  box-shadow:0 12px 26px rgba(16,24,40,.14)!important;
}
html.tema-claro body.siog-modern .insumos-new-page .tipo-card .bg-ico,
body.tema-claro.siog-modern .insumos-new-page .tipo-card .bg-ico{opacity:.2}
html.tema-claro body.siog-modern .insumos-new-page .tipo-card .criar,
body.tema-claro.siog-modern .insumos-new-page .tipo-card .criar{color:#0b1220!important}

/* O painel da versão, ao lado, ganha o mesmo raio e a mesma faixa de título
   para os dois lados da tela pararem de parecer de épocas diferentes. */
body.siog-modern .insumos-new-page .versao-card{
  border-radius:var(--id-radius)!important;
  overflow:hidden;
}
body.siog-modern .insumos-new-page .versao-card .vh{
  background:var(--id-inset)!important;
  color:var(--id-muted)!important;
  font-size:12.5px;
  font-weight:700;
  letter-spacing:.6px;
  border-bottom:1px solid var(--id-border)!important;
  min-height:0;
  padding:12px 18px;
}
body.siog-modern .insumos-new-page .versao-item{
  padding:18px;
  border-radius:0;
}
body.siog-modern .insumos-new-page .versao-item b{
  font-size:24px;
  color:var(--id-text-strong)!important;
}
body.siog-modern .insumos-new-page .versao-item .ck{
  color:var(--id-accent)!important;
  font-size:20px;
}
body.siog-modern .insumos-new-page .versao-item:hover{
  background:var(--id-hover-row)!important;
}

/* ==========================================================================
   34. Etapas & Serviços: engrenagem do cabeçalho e larguras das colunas de
       controle (pedido do dono, 14/08).

   No sistema de referencia a última coluna do cabeçalho tem uma engrenagem que abre o menu da
   TABELA. A coluna existia no SIOG, mas vazia. Junto vão os ajustes pedidos:
   NÚMERO um pouco mais larga e centralizada, e as colunas das setas e da
   engrenagem também um pouco mais largas e centralizadas.
   ========================================================================== */
body.siog-modern .plan-table .plan-gear-th{
  position:relative;
  text-align:center;
}
body.siog-modern .plan-head-gear{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:22px;
  height:22px;
  border-radius:4px;
  color:var(--id-muted);
  text-decoration:none;
  transition:background .12s ease,color .12s ease;
}
body.siog-modern .plan-head-gear:hover,
body.siog-modern .plan-head-gear[aria-expanded="true"]{
  background:var(--id-accent-dim);
  color:var(--id-accent);
}
body.siog-modern .plan-head-gear:focus-visible{
  outline:2px solid var(--id-accent);
  outline-offset:1px;
}
body.siog-modern .plan-head-gear-menu{
  position:absolute;
  top:calc(100% + 4px);
  right:0;
  z-index:60;
  min-width:264px;
  padding:5px;
  background:var(--id-surface)!important;
  border:1px solid var(--id-border);
  border-radius:var(--id-radius-sm);
  box-shadow:var(--id-shadow-pop);
  text-align:left;
  /* o cabeçalho é uppercase e pequeno; o menu volta ao texto normal */
  text-transform:none;
  letter-spacing:0;
  font-weight:400;
}
body.siog-modern .plan-head-gear-menu .gi{
  display:flex;
  align-items:center;
  width:100%;
  padding:8px 12px;
  border:0;
  border-radius:5px;
  background:transparent;
  color:var(--id-text)!important;
  font:inherit;
  font-size:13px;
  text-align:left;
  white-space:nowrap;
  cursor:pointer;
}
body.siog-modern .plan-head-gear-menu .gi:hover{
  background:var(--id-hover-row);
}
body.siog-modern .plan-head-gear-menu .gi i{
  color:var(--id-muted);
}

/* --- larguras e centralização das colunas de controle --------------------- */
/* NÚMERO: um pouco mais larga e centralizada nas duas células. */
body.siog-modern .plan-table th.pcol-numero,
body.siog-modern .plan-table td.pcol-numero,
body.siog-modern .planilha-referencia .plan-table-default .pcol-numero{
  width:64px!important;
  min-width:64px;
  text-align:center!important;
}
/* Setas de mover e engrenagem: um pouco mais largas, conteúdo centralizado. */
body.siog-modern .plan-table th.plan-order-col,
body.siog-modern .plan-table td.plan-order-col{
  width:54px!important;
  min-width:54px;
  text-align:center!important;
}
body.siog-modern .plan-table th.plan-gear-col,
body.siog-modern .plan-table td.plan-gear-col,
body.siog-modern .planilha-referencia .plan-table-default .plan-gear-col{
  width:46px!important;
  min-width:46px;
  text-align:center!important;
}
body.siog-modern .plan-table td.plan-order-col .plan-order-btn{
  margin:0 1px;
}

/* ==========================================================================
   35. Campos ilegíveis no tema escuro (relato do dono, 14/08)

   Alguns campos do formulário "Adicionar Etapa / Serviço" e a busca da grade
   apareciam com FUNDO CLARO e o texto do tema escuro por cima, ou seja, claro
   sobre claro. Duas origens:

   a) o tema antigo pinta o FOCO de input com #ffffdd (amarelo claro) em 12
      seletores diferentes, escrito na mão em vez de usar a variável --focus,
      que a identidade já remapeia para escuro;
   b) dois campos só de leitura (Item e BDI) trazem background:#f4f6f9 no
      atributo style do HTML, que nenhuma folha consegue vencer sem !important.

   Aqui os dois casos passam a usar os tokens do tema. `-webkit-text-fill-color`
   entra junto porque campo readonly/disabled ignora `color` em alguns motores,
   e era justamente onde o texto sumia.
   ========================================================================== */

/* --- a) foco: o amarelo do tema antigo vira o realce do tema atual --------- */
body.siog-modern .form-control:focus,
body.siog-modern input:focus,
body.siog-modern textarea:focus,
body.siog-modern select:focus,
body.siog-modern .cell-txt:focus,
body.siog-modern .cell-inp:focus,
body.siog-modern .bdi-in:focus,
body.siog-modern .pfp-title-input:focus,
body.siog-modern .pfp-uf-select:focus,
body.siog-modern .pfp-version-select:focus,
body.siog-modern .cfp-filter-row input:focus,
body.siog-modern .cfp-select:focus,
body.siog-modern .fontes-filter input:focus,
body.siog-modern .plan-table .cell-txt:focus,
body.siog-modern .crono-edit-cell input:focus,
body.siog-modern .enc-field input:focus,
body.siog-modern .enc-search-filter input:focus,
body.siog-modern .mem-edit-form textarea:focus,
body.siog-modern .prop-import-filter-text input,
body.siog-modern .orc-new-page .orc-field-box .is-date-display{
  background:var(--focus)!important;
  color:var(--id-text)!important;
  -webkit-text-fill-color:var(--id-text)!important;
  caret-color:var(--id-text);
}

/* --- b) campos de leitura com fundo claro no atributo style --------------- */
body.siog-modern .form-control[style*="#f4f6f9"],
body.siog-modern .form-control[style*="f4f6f9"],
body.siog-modern input[readonly],
body.siog-modern textarea[readonly],
body.siog-modern .form-control[readonly]{
  background:var(--id-inset)!important;
  color:var(--id-text)!important;
  -webkit-text-fill-color:var(--id-text)!important;
  border-color:var(--id-border)!important;
}
body.siog-modern input[disabled],
body.siog-modern textarea[disabled],
body.siog-modern select[disabled],
body.siog-modern .form-control[disabled]{
  background:var(--id-bg-2)!important;
  color:var(--id-faint)!important;
  -webkit-text-fill-color:var(--id-faint)!important;
}

/* --- c) rede de segurança: todo campo do formulário segue os tokens -------- */
body.siog-modern #add-item .form-control,
body.siog-modern #add-item input:not([type="checkbox"]):not([type="radio"]),
body.siog-modern #add-item textarea,
body.siog-modern #add-item select,
body.siog-modern #grade-busca{
  background:var(--id-inset)!important;
  color:var(--id-text)!important;
  -webkit-text-fill-color:var(--id-text)!important;
  border-color:var(--id-border)!important;
}
body.siog-modern #add-item ::placeholder,
body.siog-modern #grade-busca::placeholder{
  color:var(--id-faint)!important;
  -webkit-text-fill-color:var(--id-faint)!important;
  opacity:1;
}

/* ==========================================================================
   36. Criar Novo Orçamento: respiro na lateral e o logotipo de verdade

   (a) `.side-combo` tinha `margin:0!important`, herança de quando havia UMA
       combo só. Com PASTA e MARCADOR as duas ficaram coladas, uma terminando
       exatamente onde a outra começa. Agora só o espaço ENTRE elas é criado,
       sem mexer no recuo do bloco.

   (b) O logotipo saía com 18x18 px: o tema antigo crava esse tamanho em
       `.orc-new-page .logo-preview img`, desenhado para um ícone ao lado do
       botão, não para a marca da empresa. A caixa também vinha com
       `height:63px` fixa e `padding:0`, o que espremia tudo numa linha.
       Vira uma coluna: a marca em cima, com altura de verdade, e o botão
       embaixo.
   ========================================================================== */

/* --- (a) respiro entre as combos ----------------------------------------- */
body.siog-modern .side-combo + .side-combo{
  margin-top:8px!important;
}
body.siog-modern .side-action-card .side-action-head{
  margin:0 0 12px!important;
}

/* --- (b1) o cartao tambem precisa caber ---------------------------------
   Mesmo caso do cartao de acoes (secao 37b): `height` fixa em contexto flex
   nao estoura, ENCOLHE, e o `overflow:hidden` corta o resto. Com o miolo em
   coluna o conteudo pede ~148px e o cartao tinha 104, o que deixava o botao
   de enviar 44px abaixo da moldura, invisivel. */
body.siog-modern .orc-new-page .logo-card,
body.siog-modern .orc-new-body .orc-new-page .logo-card,
body.siog-modern .orc-side-stack .logo-card{
  height:auto!important;
  min-height:104px;
  overflow:visible!important;
}

/* --- (b) o logotipo ------------------------------------------------------ */
body.siog-modern .orc-new-page .logo-preview,
body.siog-modern .logo-card .logo-preview{
  height:auto!important;
  min-height:96px;
  padding:14px!important;
  display:flex!important;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:10px;
  /* o corpo do cartao acompanha o tema; a folha branca fica so atras da marca
     (regra abaixo), senao o tema antigo pinta o bloco inteiro de branco e no
     escuro vira uma placa clara no meio da coluna. */
  background:var(--id-surface)!important;
}
/* A arte da marca e feita para papel branco (nome em preto). Sobre a superficie
   escura ela sumia. A folha branca fica atras da IMAGEM, nao do cartao: o botao
   continua na superficie e acompanha o tema. */
body.siog-modern .orc-new-page .logo-preview img,
body.siog-modern .logo-card .logo-preview img{
  background:#fff;
  padding:10px;
  border-radius:6px;
  box-shadow:0 0 0 1px var(--id-border);
}
body.siog-modern .orc-new-page .logo-preview img,
body.siog-modern .logo-card .logo-preview img{
  width:auto!important;
  height:auto!important;
  max-width:100%;
  max-height:88px!important;
  object-fit:contain;
}
/* o marcador de "sem logotipo" acompanha o novo tamanho */
body.siog-modern .orc-new-page .logo-preview .logo-empty,
body.siog-modern .logo-card .logo-preview .logo-empty{
  width:auto!important;
  height:48px!important;
  font-size:34px!important;
  color:var(--id-faint)!important;
}
body.siog-modern .logo-card .logo-preview label.btn{
  margin-top:0!important;
}

/* ==========================================================================
   37. Criar Novo Orçamento: os marcadores não apareciam

   Duas causas somadas, e a primeira é a que escondia tudo:

   (a) `siog-theme.css:1198` diz `.orc-side-stack label>span{position:absolute;
       top:6px;left:10px}`. É a regra que faz o nome do campo flutuar dentro da
       caixa, nos campos da lateral, e ela pega o chip pelo FORMATO: ele também
       é um `span` filho direto de um `label`. Absoluto, o chip sai do fluxo, o
       `label` colapsa para altura 0, e as cinco linhas do grid ficam com 0px.

   (b) `.orc-new-page .side-action-card` nasceu com `height:101px` fixo mais
       `overflow:hidden` (98px sob `.orc-new-body`), medida da época em que o
       cartão tinha o cabeçalho e UMA combo. Com PASTA + MARCADORES o conteúdo
       pede bem mais, e como o cartão é `flex column` de altura travada os itens
       não estouram para fora: eles ENCOLHEM. Os dois últimos marcadores ainda
       assim caíam fora da moldura.

   (c) A camada de identidade escrevia `border:1px solid ...!important` no chip.
       `border` é atalho: apaga os QUATRO lados, inclusive o
       `border-left:5px solid var(--marker-color)`, que é justamente o que dá
       cor ao marcador. Valia para as duas telas, e no escuro os chips ficavam
       todos cinza iguais.

   (d) O bloco tem a largura da lateral, não a da tela de editar. Com o rótulo
       à esquerda e duas colunas sobravam ~64px de texto por chip e
       "EM ANDAMENTO" cortava. Rótulo em cima, os chips vão a 163px e o mais
       comprido ainda sobra 30,8px de folga.

   (e) `.marker-row` e o rótulo vêm com cinza cravado (#cfd8de e #f7f7f7), de
       antes do tema escuro.
   ========================================================================== */

/* --- (a) o chip volta a ocupar espaço ------------------------------------ */
body.siog-modern .orc-side-stack label.marker-option > span.marker-chip{
  position:relative!important;
  top:auto!important;
  left:auto!important;
}

/* --- (b) a altura deixa de ser camisa de força --------------------------- */
body.siog-modern .orc-new-page .side-action-card,
body.siog-modern .orc-new-body .orc-new-page .side-action-card{
  height:auto!important;
  min-height:98px;
  overflow:visible!important;
}
body.siog-modern .orc-new-page .side-action-card > *{
  flex:0 0 auto;          /* nada mais encolhe para caber numa altura fixa */
}

/* --- (c) a faixa de cor do chip, apagada pelo atalho `border` ------------- */
body.siog-modern .marker-chip{
  border-left:5px solid var(--marker-color)!important;
}

/* --- (d) rótulo em cima, chips em duas colunas de largura cheia ---------- */
body.siog-modern .side-marker-row{
  margin-top:8px!important;                      /* mesmo respiro das combos */
  grid-template-columns:minmax(0,1fr)!important;
}
body.siog-modern .side-marker-row > b{
  border-right:0!important;
  border-bottom:1px solid var(--id-border)!important;
  padding:8px 10px!important;
}
/* As colunas passam a olhar o espaço REAL do bloco, não a largura da janela.
   O tema faz `@media(max-width:1500px){.marker-list{grid-template-columns:1fr}}`,
   supondo "janela maior, bloco maior". Na tela de editar é o contrário: com
   1397px de janela o bloco tem 963px (faixa inteira) e com 1901px tem 358px,
   porque o layout o move para a lateral. A media query então alarga a coluna
   justo quando o bloco encolhe, e "EM ANDAMENTO" cortava 11,4px em 1901px.

   `calc(50% - 3px)` é metade do bloco menos metade do vão, o que dá no máximo
   duas colunas (a intenção original do tema). O `max(150px, ...)` derruba para
   uma coluna quando essas duas ficariam abaixo de 150px, que é onde o texto
   começa a cortar. Vale para as duas telas.

   O teto de altura sobe de 142 para 300px pelo mesmo motivo: em coluna única os
   5 marcadores pedem 180px, e 142 poria rolagem numa caixinha. */
body.siog-modern .marker-list{
  grid-template-columns:repeat(auto-fill,minmax(max(150px,calc(50% - 3px)),1fr))!important;
  max-height:300px!important;
}

/* --- (e) a moldura do bloco no tema escuro ------------------------------- */
body.siog-modern .marker-row{
  border-color:var(--id-border)!important;
  border-radius:4px;
  overflow:hidden;
}
body.siog-modern .marker-row > b{
  background:var(--id-bg-2)!important;
  color:var(--id-text)!important;
}

/* ==========================================================================
   38. Marcador selecionado x não selecionado eram iguais

   Vale para as DUAS telas (criar e editar), e é pior no tema claro.

   O tema base distingue o chip marcado por fundo `#edf9fa`, borda e anel em
   `#0796a7`. A camada de identidade escreve `background:var(--id-bg-2)!important`
   e `border:1px solid var(--id-border-strong)!important` em `.marker-chip`, com
   `!important` e sem prever o estado marcado, então o fundo e a borda do
   marcado somem. No escuro sobrava só o anel, num azul-petróleo que não é da
   paleta; no claro o anel também é zerado e marcado e não marcado ficam
   pixel a pixel idênticos -- o único sinal é o tique de 9px no canto.

   O estado marcado volta, agora no azul da identidade e derivado dos tokens,
   então acompanha os dois temas sozinho. A faixa da cor do marcador continua
   por cima, porque é ela que diz QUAL marcador é.
   ========================================================================== */
body.siog-modern .marker-option input:checked + .marker-chip{
  background:color-mix(in srgb, var(--id-accent) 18%, var(--id-bg-2))!important;
  border-color:var(--id-accent)!important;
  border-left-color:var(--marker-color)!important;
  box-shadow:inset 0 0 0 1px var(--id-accent)!important;
}
body.siog-modern .marker-option input:checked + .marker-chip::after{
  color:var(--id-accent)!important;
}
body.siog-modern .marker-option input:focus-visible + .marker-chip{
  outline-color:var(--id-accent)!important;
}

/* ==========================================================================
   39. Dados / Fontes / Valores: um estilo só para as 16 telas

   Os mesmos tres cartoes do topo tinham DUAS familias de estilo no
   `siog-theme.css`, e a tela escolhia uma pela classe da faixa:

     .plan-top-grid  ->  Etapas & Servicos, Cronograma, BDI, Encargos,
                         Memorial, Insumos & Composicoes
     .rel-top-grid   ->  Frentes de Obra, Memoria de Calculo, Ajustes,
                         Acrescimos, Itens (4 telas), Comentarios,
                         Historico, Backup/Versoes, Relatorios

   Medido no MESMO orcamento (o 4), lado a lado:

     barra de titulo    45px  x  33px      (fonte 15/500 x 13/700)
     lista de Valores  202px  x 145px
     KPIs               35px  x  29px
     lista de Fontes   130px  x 126px      (itens 13px x 11px)
     altura da caixa   313 travada  x  313 minima (cresce com o conteudo:
                       no orcamento 16 dava 315 numa tela e 313 na outra)

   Ou seja: mesmo dado, mesmo orcamento, dois tamanhos, dependendo da tela.
   A familia `plan-` e a versao nova (mais respiro, fonte maior) e e a que o
   dono usa como referencia. Aqui ela passa a valer para as duas faixas.

   Nao copio COR nenhuma das regras `plan-`: elas tem cinza claro cravado
   (#f3f3f3, #d4d8dc, #eceff1...) de antes do tema escuro, e a camada de
   identidade ja resolve isso. Aqui vai so a geometria e a tipografia.
   ========================================================================== */

/* --- a caixa: mesma altura, e o corpo rola em vez de cortar --------------
   O `plan-` cravava `height:313px` no cartao e `height:268px` no corpo.
   45 + 268 = 313, mas a borda soma 2px, entao a propria tela de referencia
   cortava 2px do corpo (medido no orcamento 4). Em coluna flex o titulo fica
   fixo, o ultimo bloco ocupa o resto e rola sozinho: acaba o numero magico e
   acaba o corte. */
body.siog-modern .plan-top-grid > .rel-box:not(.is-collapsed),
body.siog-modern .rel-top-grid > .rel-box:not(.is-collapsed),
body.siog-modern.rel-page .rel-top-grid > .rel-box:not(.is-collapsed){
  height:313px!important;
  min-height:313px!important;
  overflow:hidden;
  display:flex;
  flex-direction:column;
}
/* O chevron recolhe o cartao para a barra de titulo. O tema faz isso com
   `.rel-top-grid .rel-box.is-collapsed` (0,3,0), que perde para a regra acima
   (0,3,1) -- o cartao ficava com `height:313px` e `max-height:45px` ao mesmo
   tempo e nao fechava. Aqui o estado recolhido tem regra no mesmo nivel. */
body.siog-modern .plan-top-grid > .rel-box.is-collapsed,
body.siog-modern .rel-top-grid > .rel-box.is-collapsed{
  height:45px!important;
  min-height:45px!important;
  max-height:45px!important;
  align-self:start;
  overflow:hidden;
}
body.siog-modern .plan-top-grid > .rel-box > .rel-box-title,
body.siog-modern .rel-top-grid > .rel-box > .rel-box-title{
  flex:0 0 auto;
}
body.siog-modern .plan-top-grid > .rel-box > *:last-child,
body.siog-modern .rel-top-grid > .rel-box > *:last-child{
  flex:1 1 auto;
  min-height:0;
  height:auto!important;
  max-height:none!important;
  overflow-y:auto;
}

/* --- a barra de titulo --------------------------------------------------- */
body.siog-modern .rel-top-grid .rel-box-title{
  height:45px;
  font-size:15px;
  font-weight:500;
  padding:0 20px;
}
body.siog-modern .rel-top-grid .rel-box-title span{
  font-size:11px;
  font-weight:700;
  padding:2px 5px;
}
body.siog-modern .rel-top-grid .rel-box-title em{
  margin-left:auto;
  display:flex;
  gap:20px;
  font-size:14px;
}
body.siog-modern .rel-top-grid .rel-box-title .rel-total-badge{
  margin-left:auto;
  margin-right:18px;
  font-size:10px;
  padding:0;
}

/* --- o corpo de Dados ---------------------------------------------------- */
body.siog-modern .rel-top-grid .rel-data-grid{
  gap:16px;
  align-content:start;
  padding:21px 20px 14px;
  box-sizing:border-box;
}
body.siog-modern .rel-top-grid .rel-data-grid .rel-field{
  min-height:46px;
  padding:7px 10px;
}
body.siog-modern .rel-top-grid .rel-data-grid .rel-field label{ font-size:10px; }
body.siog-modern .rel-top-grid .rel-data-grid .rel-field strong{
  font-size:13px;
  font-weight:400;
  /* o valor encosta à DIREITA nos campos curtos, como na família `plan-`.
     Faltou na primeira passagem: eu copiei tamanho e peso da fonte e deixei
     escapar o alinhamento, que é o que o dono viu. */
  text-align:right;
}
/* nos campos largos o texto é corrido e fica à esquerda, nas duas famílias */
body.siog-modern .rel-top-grid .rel-data-grid .rel-field.wide strong{
  text-align:left;
}
/* a barrinha DESENHADA em ::after do `.real-ref` imitava a rolagem do sistema de referencia;
   com rolagem de verdade no corpo ela vira uma segunda barra, falsa. O mesmo
   `display:none` que o tema ja aplica em `body.rel-page`. */
body.siog-modern .rel-top-grid .rel-dados-box.real-ref::before,
body.siog-modern .rel-top-grid .rel-dados-box.real-ref::after{
  display:none;
}

/* --- Fontes & Tabelas ---------------------------------------------------- */
body.siog-modern .rel-top-grid .rel-fontes-list{ padding:18px 28px!important; }
body.siog-modern .rel-top-grid .rel-fontes-list li{
  font-size:13px!important;
  padding:2px 0!important;
}

/* --- Valores ------------------------------------------------------------- */
body.siog-modern .rel-top-grid .rel-kpis{
  gap:42px;
  padding:9px 26px 7px;
  font-size:12px;
}
body.siog-modern .rel-top-grid .rel-valores-list{ padding:5px 26px 8px!important; }
body.siog-modern .rel-top-grid .rel-valores-list li{
  font-size:12px!important;
  padding:6px 0!important;
  border-bottom:1px solid var(--id-border)!important;
}
body.siog-modern .rel-top-grid .rel-valores-list li.tot{ font-weight:500; }

/* ==========================================================================
   40. Composição BDI aberta de qualquer tela

   O diálogo vem da página `/orcamento/<id>/bdi`, onde ele nasce como um modal
   COMPLETO: escondido por `hidden`, com fundo escurecido proprio e com a
   propria barra de titulo. Dentro da casca do sistema (`#sb-modal`) esses tres
   papeis ja existem, entao aqui o diálogo e "desmontado" para virar so o
   conteudo: sem `hidden`, sem fundo proprio, sem barra de titulo repetida.
   ========================================================================== */

body.siog-modern .sb-modal-backdrop.sb-modal-bdi .sb-modal{
  width:min(780px,94vw);
  height:auto;
  max-height:92vh;
}
body.siog-modern .sb-modal-bdi .sb-modal-inline{
  display:block;
  padding:0;
  overflow:auto;
  /* a casca reserva altura fixa para o iframe (546px, medida do editor de
     Fontes & Tabelas). Este diálogo tem 403px, então sobrava um vazio de
     117px embaixo dos botões. Aqui a caixa acompanha o conteúdo. */
  height:auto!important;
  min-height:0!important;
  /* 29/08/2026 (relato do dono, tela de notebook): com `flex:0 0 auto` o
     conteúdo não encolhia, o diálogo passava da altura da janela e quem
     rolava era o FUNDO, levando a barra de título para fora da tela. Agora
     quem rola é o miolo, e o título fica sempre visível. */
  flex:1 1 auto;
  max-height:calc(92vh - 64px);
}

/* o `hidden` e o fundo proprio saem: quem escurece a tela e a casca */
body.siog-modern .sb-modal-bdi .bdi-modal,
body.siog-modern .sb-modal-bdi .bdi-modal[hidden]{
  display:block!important;
  position:static!important;
  inset:auto!important;
  background:none!important;
  z-index:auto!important;
}
body.siog-modern .sb-modal-bdi .bdi-modal-backdrop{ display:none!important; }
/* injetado na casca, o recuo da topbar e a altura maxima nao valem: quem posiciona e limita e a propria casca. */
body.siog-modern .sb-modal-bdi .bdi-modal{ padding:0!important; overflow:visible!important; }
body.siog-modern .sb-modal-bdi .bdi-modal-dialog{ max-height:none!important; }

body.siog-modern .sb-modal-bdi .bdi-modal-dialog{
  position:static!important;
  transform:none!important;
  width:100%!important;
  max-width:none!important;
  max-height:none!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
}

/* a casca ja escreve "Composição BDI [ Editar ]" na barra dela */
body.siog-modern .sb-modal-bdi .bdi-modal-head{ display:none!important; }

/* o botao de maximizar da casca nao serve para este dialogo */
body.siog-modern .sb-modal-bdi .sb-modal-max{ display:none!important; }

/* ==========================================================================
   41. Combo com pesquisa: BDIS CADASTRADOS

   O `<select>` sai da vista mas CONTINUA no formulário (é ele que é enviado).
   No lugar dele aparece um campo de texto que filtra a lista, como no sistema de referencia,
   onde a lupa ao lado do rótulo de fato pesquisa.
   ========================================================================== */

body.siog-modern .sb-combo{
  position:relative;
  display:block;
  width:100%;
}
body.siog-modern .sb-combo > select{
  position:absolute;
  width:1px;
  height:1px;
  opacity:0;
  pointer-events:none;
}
body.siog-modern .sb-combo-input{
  width:100%;
  height:34px;
  padding:0 30px 0 10px;
  border:1px solid var(--id-border-strong);
  border-radius:4px;
  background:var(--id-bg-2);
  color:var(--id-text);
  font-size:12px;
  cursor:text;
}
body.siog-modern .sb-combo.aberto .sb-combo-input{
  border-color:var(--id-accent);
  box-shadow:inset 0 0 0 1px var(--id-accent);
}
body.siog-modern .sb-combo-input::placeholder{ color:var(--id-faint); }
/* a seta, no lugar da que o select nativo desenhava */
body.siog-modern .sb-combo::after{
  content:"";
  position:absolute;
  right:11px;
  top:14px;
  width:0;
  height:0;
  border-left:4px solid transparent;
  border-right:4px solid transparent;
  border-top:5px solid var(--id-faint);
  pointer-events:none;
}

body.siog-modern .sb-combo-list{
  position:absolute;
  left:0;
  right:0;
  top:100%;
  z-index:30;
  margin:3px 0 0;
  padding:4px;
  list-style:none;
  max-height:220px;
  overflow-y:auto;
  background:var(--id-surface);
  border:1px solid var(--id-border-strong);
  border-radius:4px;
  box-shadow:0 8px 22px rgba(0,0,0,.28);
}
body.siog-modern .sb-combo-list li{
  padding:6px 9px;
  border-radius:3px;
  font-size:12px;
  color:var(--id-text);
  cursor:pointer;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
body.siog-modern .sb-combo-list li:hover{
  background:color-mix(in srgb, var(--id-accent) 16%, var(--id-surface));
}
body.siog-modern .sb-combo-list li.sel{
  background:color-mix(in srgb, var(--id-accent) 22%, var(--id-surface));
  font-weight:600;
}
body.siog-modern .sb-combo-list li.vazio{
  color:var(--id-faint);
  cursor:default;
  font-style:italic;
}
body.siog-modern .sb-combo-list li.vazio:hover{ background:none; }

/* ==========================================================================
   42. Controles que ganharam função (Frente A de 14/08)

   (a) Cabeçalhos ordenáveis (a.js-sort): cursor e a setinha de estado, já que
       o ordenador compartilhado marca aria-sort no <th>.
   (b) A casca #sb-modal ganhou o maximizar que os 8 diálogos avulsos já
       tinham (classe sb-modal-maximizada, alternada pelo botão .sb-modal-max).
   (c) O diálogo de Regras Condicionais ganhou maximizar (.regra-max).
   (d) Ícones de estado do orçamento viraram atalhos (<a> em volta do <i>);
       o link não pode ganhar cara de link: herda a cor do ícone.
   ========================================================================== */

/* --- (a) ordenação ------------------------------------------------------- */
body.siog-modern th a.js-sort{ cursor:pointer; }
body.siog-modern th[aria-sort] a.js-sort::after{
  content:"▲";
  font-size:8px;
  margin-left:4px;
  opacity:.75;
}
body.siog-modern th[aria-sort="descending"] a.js-sort::after{ content:"▼"; }

/* --- (b) maximizar da casca: o botão SAI --------------------------------
   Medido ao vivo: o único modal que exibia o botão (Fontes & Tabelas) já abre
   praticamente em tela cheia (658px numa janela de 700). Maximizar ali não tem
   o que maximizar — era o último botão sem função da casca. Some de vez; o
   handler continua no base.html, pronto se algum modal menor passar a usá-lo. */
body.siog-modern .sb-modal-max{ display:none!important; }

/* --- (c) maximizar das Regras Condicionais ------------------------------- */
body.siog-modern .regra-dialog.regra-max{
  position:fixed!important;
  inset:2vh 2vw!important;
  width:auto!important;
  max-width:none!important;
  height:96vh!important;
  overflow:auto!important;
  transform:none!important;
}

/* --- (d) ícones-atalho da faixa de estado -------------------------------- */
body.siog-modern .sb-orc-icons a.sb-orc-ico-link,
body.siog-modern .sb-orc-icons a.sb-orc-ico-link:hover{
  color:inherit;
  text-decoration:none;
  display:inline-flex;
}
body.siog-modern .sb-orc-icons a.sb-orc-ico-link:hover i{
  filter:brightness(1.35);
}

/* ==========================================================================
   43. Varredura de visibilidade 14/08 — 47 rotas × 2 temas

   Método da seção 22 (iframe, contraste real < 4,5:1, transitions off).
   Resultado bruto: 115 pares ruins no escuro e 49 no claro, reduzidos a
   6 famílias de causa. Cada bloco abaixo é uma família.
   ========================================================================== */

/* --- 43a. H1 dos cabeçalhos de página ------------------------------------
   O legado crava #444/#333 no título de TODAS as telas (36 ocorrências no
   escuro: content-header, plan-head, visao-head, extra-head, bdi-head...).
   Sobre o fundo escuro dava 2,02. Vira token e serve aos dois temas. */
body.siog-modern .content-header h1,
body.siog-modern .ajs-head h1,
body.siog-modern .acs-head h1,
body.siog-modern .ajt-head h1,
body.siog-modern .bdi-head h1,
body.siog-modern .crono-head h1,
body.siog-modern .enc-head h1,
body.siog-modern .extra-head h1,
body.siog-modern .fontes-head h1,
body.siog-modern .mem-head h1,
body.siog-modern .plan-head h1,
body.siog-modern .rel-online-head h1,
body.siog-modern .visao-head h1{
  color:var(--id-text)!important;
}

/* --- 43b. Botão/realce sólido no acento ----------------------------------
   Branco sobre #5CA1F5 dá 2,67 nos dois temas (Salvar, Incluir Empresa,
   pager ativo, Nova Frente...). O acento de SUPERFÍCIE continua #5CA1F5;
   controles sólidos usam um degrau mais fundo, que segura o branco. */
:root{ --id-accent-solid:#2e6fd6; }
body.tema-claro{ --id-accent-solid:#1f5cb0; }
body.siog-modern .btn.js-save,
body.siog-modern .oc-pager a.on,
body.siog-modern .bdi-card-pager a.active,
body.siog-modern .prop-list-pager a.active,
body.siog-modern .hist-pager a.active,
body.siog-modern .cad-filter-card a.btn.ui-button,
body.siog-modern .extra-toolbar-form button.btn,
body.siog-modern .visao-add,
body.siog-modern .oc-tree-card-head .oc-tree-total,
body.siog-modern .acs-edit-btn{
  background:var(--id-accent-solid)!important;
  border-color:var(--id-accent-solid)!important;
  color:#fff!important;
}
/* os dois CTAs que ficaram com texto-acento sobre o teal legado */
body.siog-modern .plan-add-toggle,
body.siog-modern .fontes-add-all{
  background:var(--id-accent-solid)!important;
  border-color:var(--id-accent-solid)!important;
}
body.siog-modern .plan-add-toggle, body.siog-modern .plan-add-toggle *,
body.siog-modern .fontes-add-all, body.siog-modern .fontes-add-all *{
  color:#fff!important;
}
/* pager em repouso: teal claro sobre cartão branco (3,89) — azul de leitura,
   legível sobre branco nos dois temas */
body.siog-modern .bdi-card-pager a:not(.active),
body.siog-modern .prop-list-pager a:not(.active),
body.siog-modern .hist-pager a:not(.active),
body.siog-modern .ajs-groups a,
body.siog-modern .comparison-tabs a.active{
  color:#1f5cb0!important;
}
/* 16/08/2026 (pedido do dono): o ícone do botão de grupo herdava o azul do
   rótulo e sumia no tamanho em que é desenhado. Passa a preto no claro e
   branco no escuro, com um fio de contorno para engrossar o traço. No botão
   ativo ele acompanha o texto, que já é branco sobre o realce. */
body.siog-modern .ajs-groups a>i{
  color:#000!important; -webkit-text-stroke:.4px currentColor;
  opacity:1!important; margin-right:5px;
}
body.siog-modern .ajs-groups a.active>i{ color:#fff!important; }
/* botões verdes de editar (arredondamento/categorias): 4,13 → verde fundo */
body.siog-modern .arred-edit-btn,
body.siog-modern .cat-edit-btn{
  background:#12753f!important;
  border-color:#12753f!important;
}
body.siog-modern .arred-edit-btn span, body.siog-modern .cat-edit-btn span{
  color:#fff!important;
}

/* --- 43c. Config do orçamento: cartões brancos no escuro -----------------
   Arredondamento, Categorias e Permissões nunca tinham sido varridas uma a
   uma; os cartões vinham brancos cravados e, no escuro, o texto-token claro
   sumia neles (1,05-1,78). Os cartões passam a superfície do tema. */
body.siog-modern .arred-group,
body.siog-modern .arred-card,
body.siog-modern .arred-source-config,
body.siog-modern .perm-card,
body.siog-modern .cat-item,
body.siog-modern .cat-card{
  background:var(--id-surface)!important;
  color:var(--id-text);
}
body.siog-modern .arred-group h3,
body.siog-modern .perm-card h3,
body.siog-modern .cat-item h3{
  color:var(--id-text)!important;
}
body.siog-modern .arred-allow span,
body.siog-modern .arred-radio-bar label,
body.siog-modern .arred-source-config label,
body.siog-modern .cat-allow,
body.siog-modern .cat-options label,
body.siog-modern .perm-options label{
  color:var(--id-text)!important;
}
body.siog-modern .perm-access-row span{ color:var(--id-muted)!important; }
body.siog-modern .perm-access-row strong{ color:#1f5cb0!important; }
/* o aviso âmbar "[ Não recomendável! ... ]" precisa escurecer só no claro */
body.tema-claro .arred-radio-bar label em{ color:#a05a00!important; }

/* --- 43d. Cinzas legados sobre superfície escura (1,1-2,8) --------------- */
body.siog-modern .filtro-checks label,
body.siog-modern .comments-empty,
body.siog-modern .fontes-check span,
body.siog-modern .acs-new-summary b,
body.siog-modern .acs-new-summary strong,
body.siog-modern .plan-tree-item a b,
body.siog-modern .plan-tree-root b,
body.siog-modern .mem-panel-title span,
body.siog-modern .mem-tree-item b,
body.siog-modern .pref-field-list > span,
body.siog-modern .visao-value-kpis span,
body.siog-modern .visao-value-kpis b,
body.siog-modern .visao-side-box .valores-list li > span,
body.siog-modern .erro-check,
body.siog-modern .empresa-page .form-group label,
body.siog-modern .profile-page .form-group label{
  color:var(--id-text)!important;
}
body.siog-modern .comparison-help,
body.siog-modern .chk-linha span,
body.siog-modern .dd-titulo{
  color:var(--id-muted)!important;
}
/* a barra de filtro do histórico vinha clara cravada dentro do escuro */
body.siog-modern .hist-toolbar{ background:var(--id-surface)!important; }
body.siog-modern .hist-filter span{ color:var(--id-muted)!important; }
/* a faixa das combos da lateral do criar (PASTA/MARCADORES) idem */
body.siog-modern .side-combo{ background:var(--id-bg-2)!important; }
body.siog-modern .side-combo span{ color:var(--id-muted)!important; }

/* --- 43e. Cores semânticas escuras demais para o fundo escuro ------------
   Vermelhos e verdes do claro-legado afundam no tema escuro (2,2-4,2).
   Clareiam SÓ no escuro; o claro mantém os originais, que lá passam. */
body.siog-modern:not(.tema-claro) .erros-help p,
body.siog-modern:not(.tema-claro) .erros-help li,
body.siog-modern:not(.tema-claro) .key small b,
body.siog-modern:not(.tema-claro) .history-action.pdf,
body.siog-modern:not(.tema-claro) .form-group label span.req,
body.siog-modern:not(.tema-claro) .pref-campo-obrig{
  color:#f28b93!important;
}
body.siog-modern:not(.tema-claro) .crono-bar-cell strong,
body.siog-modern:not(.tema-claro) .history-action.excel,
body.siog-modern:not(.tema-claro) .acs-toggle-row .outline-success{
  color:#4ec08d!important;
}

/* --- 43f. Vermelho de "Fechar" sobre fundo claro (3,9 em 12 telas) ------- */
body.tema-claro .btn.danger-outline,
body.tema-claro .visao-btn.danger{
  color:#be2f33!important;
  border-color:#be2f33!important;
}

/* --- 43g. Reforço de especificidade -------------------------------------
   A re-varredura mostrou que parte de 43a/43c/43d perdeu para regras do tema
   com peso maior e !important (o shell do orçamento tem seletores 0,4+).
   Mesmo remédio documentado na seção 22: bump com :not(#siog-x), que soma a
   especificidade de um ID sem depender de nenhum elemento existir. */

/* os 26 títulos de página do shell do orçamento (2,02 no escuro) */
body.siog-modern .extra-head h1:not(#siog-x),
body.siog-modern .ajs-head h1:not(#siog-x),
body.siog-modern .acs-head h1:not(#siog-x),
body.siog-modern .ajt-head h1:not(#siog-x),
body.siog-modern .bdi-head h1:not(#siog-x),
body.siog-modern .crono-head h1:not(#siog-x),
body.siog-modern .enc-head h1:not(#siog-x),
body.siog-modern .fontes-head h1:not(#siog-x),
body.siog-modern .mem-head h1:not(#siog-x),
body.siog-modern .plan-head h1:not(#siog-x),
body.siog-modern .rel-online-head h1:not(#siog-x),
body.siog-modern .visao-head h1:not(#siog-x){
  color:var(--id-text)!important;
}

/* fundos que o tema segurava: agora com o mesmo bump */
body.siog-modern .arred-group:not(#siog-x),
body.siog-modern .arred-card:not(#siog-x),
body.siog-modern .arred-radio-bar:not(#siog-x),
body.siog-modern .arred-source-config:not(#siog-x),
body.siog-modern .arred-info-panel:not(#siog-x),
body.siog-modern .perm-card:not(#siog-x),
body.siog-modern .cat-item:not(#siog-x),
body.siog-modern .cat-card:not(#siog-x){
  background:var(--id-surface)!important;
}
body.siog-modern .side-combo:not(#siog-x){ background:var(--id-bg-2)!important; }
body.siog-modern .hist-toolbar:not(#siog-x){ background:var(--id-surface)!important; }

/* sobras do arredondamento reveladas depois que o cartão escureceu */
body.siog-modern .arred-info-panel strong:not(#siog-x),
body.siog-modern .arred-source-config strong:not(#siog-x){
  color:var(--id-text)!important;
}
body.siog-modern .arred-field span:not(#siog-x){ color:var(--id-muted)!important; }
body.siog-modern .arred-card label > b:not(#siog-x){ color:var(--id-accent)!important; }
body.siog-modern:not(.tema-claro) .arred-info-panel span,
body.siog-modern:not(.tema-claro) .arred-card label > em{
  color:#f28b93!important;
}

/* o TODOS OS USUÁRIOS ficou azul-claro-de-fundo-branco sobre cartão escuro */
body.siog-modern .perm-access-row strong:not(#siog-x){ color:var(--id-accent)!important; }
body.tema-claro .perm-access-row strong:not(#siog-x){ color:#1f5cb0!important; }

/* o total da árvore de pastas ficou a 4,1 — um degrau mais fundo resolve */
body.siog-modern .oc-tree-card-head .oc-tree-total:not(#siog-x){
  background:#2a63c4!important;
}

/* --- 43h. Os quatro finais: o FILHO tinha fundo claro próprio ------------
   cat-item h3, side-combo span e hist-filter span carregam background
   claro no próprio elemento (não no cartão); e o arred-radio-bar tem um
   strong que só apareceu depois que o cartão escureceu. */
body.siog-modern .cat-item h3:not(#siog-x){
  background:var(--id-bg-2)!important;
  color:var(--id-text)!important;
}
body.siog-modern .side-combo span:not(#siog-x),
body.siog-modern .hist-filter span:not(#siog-x){
  background:transparent!important;
  color:var(--id-muted)!important;
}
body.siog-modern .arred-radio-bar strong:not(#siog-x){
  color:var(--id-text)!important;
}

/* --- 43i. Fecho do claro -------------------------------------------------
   O que sobrou no claro raspa o limite (3,2-4,33) ou perdeu na cascata:
   avisos âmbar/azul do arredondamento, os asteriscos de obrigatório, os
   atalhos do histórico global e o Fechar (que precisou do bump). */
body.tema-claro .extra-arredondamento label em{ color:#a05a00!important; }
body.tema-claro .extra-arredondamento label b{ color:#1f5cb0!important; }
body.siog-modern .oc-tree-card-head .oc-tree-total:not(#siog-x){ color:#fff!important; }
body.tema-claro .history-action.search:not(#siog-x){ color:#0a6570!important; }
body.tema-claro .history-action.excel:not(#siog-x){ color:#1d6f47!important; }
body.tema-claro .btn.danger-outline:not(#siog-x),
body.tema-claro .visao-btn.danger:not(#siog-x){
  color:#be2f33!important;
  border-color:#be2f33!important;
}
body.tema-claro .form-group label span.req,
body.tema-claro label span.text-danger,
body.tema-claro .pref-campo-obrig{ color:#c23438!important; }
body.tema-claro .acs-toggle-row .outline-success{
  color:#157347!important;
  border-color:#157347!important;
}

/* --- 43j. O vermelho de perigo do CLARO era o próprio token --------------
   `--id-danger` claro valia um vermelho de 3,9:1 sobre os fundos claros, e a
   regra geral dos botões de perigo (seção antiga, linha ~558) o espalha para
   todos. Corrigido na FONTE: um degrau mais fundo, 4,9:1 sobre #F4F6FA. As
   regras pontuais de 43f/43i continuam como cinto de segurança. */
body.tema-claro{ --id-danger:#be2f33; }

/* ==========================================================================
   44. Lista suspensa do <select> ilegível no tema escuro (relato do dono,
   14/08, diálogo "Editar Descrição / BDI / Quantidades em lote")

   Causa medida, não suposta. O siog-ultra.css crava, no FOCO de qualquer
   campo dentro do shell do orçamento:

     body.siog-modern.orcamento-shell :is(.form-control, input:not(...),
       select, textarea):focus{ background:#ffffdd!important; }   (0,6,2)

   que passa por cima da seção 35 (`background:var(--focus)`, 0,2,2), mesmo
   com !important dos dois lados: especificidade maior ganha antes da ordem.
   Em input isso já era ruim; em <select> é pior, porque o Chrome desenha a
   LISTA SUSPENSA nativa com o fundo do próprio select e as opções herdam a
   cor do tema. Resultado medido em reprodução com as duas regras literais:
   texto #e6ecf5 sobre #ffffdd = 1,2:1. Depois da correção: 11,19:1 no campo
   e 15:1 na lista.

   Duas frentes:
   a) o foco volta ao token do tema, com bump de DOIS pesos de ID
      (`:not(#siog-x)` dobrado) para superar os (0,6,2) do ultra. É esta que
      resolve o problema: o `color-scheme` da seção 2 já pinta o popup com a
      moldura escura, mas um `background` explícito no select vence o esquema
      e vazava o amarelo para a lista;
   b) `option`/`optgroup` com os tokens escritos, para os motores que estilizam
      o item em vez de seguir o esquema.

   NÃO repetir `color-scheme` aqui: a seção 2 já faz `html{color-scheme:dark}`
   e `html.tema-claro,body.tema-claro{color-scheme:light}`, e o JS carimba a
   classe do tema NO HTML antes do paint (o body só a recebe depois). Uma
   segunda declaração presa ao body inverteria o esquema nesse intervalo.
   ========================================================================== */

body.siog-modern.orcamento-shell:not(#siog-x):not(#siog-x) :is(
  .form-control,
  input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
  select,textarea
):focus{
  background:var(--focus)!important;
  color:var(--id-text)!important;
  -webkit-text-fill-color:var(--id-text)!important;
  caret-color:var(--id-text);
}

/* b) as opções trazem os tokens escritos */
body.siog-modern option,
body.siog-modern optgroup{
  background:var(--id-surface)!important;
  color:var(--id-text)!important;
}
body.siog-modern option:disabled{ color:var(--id-faint)!important; }

/* ==========================================================================
   45. Menu suspenso passando POR BAIXO do rodapé (relato do dono, 14/08,
   combo Subgrupo em Insumos & Composições > Cadastrar Novo)

   Sintoma: com a janela mais baixa, a lista do combo cresce além do rodapé e
   o rodapé ("SIOG | Sistema Integrado... | Versão x.y.z") é pintado POR CIMA
   dela, cortando os últimos itens.

   O que foi medido no Chrome real, com a sobreposição validada a cada passo
   (ponto de teste conferido dentro do menu antes de cada leitura):

     rodapé  .siog-footer      position:relative, SEM z-index
     menu    .prop-combo-menu  position:absolute, z-index:1060
     resultado: o RODAPÉ pinta por cima.

   E, o que decide o remédio:
     - z-index:0 no rodapé ........ não muda nada
     - z-index:5000 no menu ....... não muda nada
     - z-index:9999 + fixed no menu não muda nada
     - position:relative + z-index no .content-wrapper .... RESOLVE
     - position:static no rodapé .......................... RESOLVE

   Ou seja: não adianta disputar z-index dentro do conteúdo, porque o menu e o
   rodapé não estão no mesmo contexto de empilhamento. O conserto é elevar o
   CONTEÚDO inteiro para um nível acima do rodapé. Feito no .content-wrapper,
   isso vale para TODOS os menus suspensos do app (prop-combo, sb-combo,
   dropdown do Bootstrap), não só o do Subgrupo.

   `position:static` no rodapé foi descartado: `.siog-footer .siog-support` e
   `.siog-version` são absolutos e se ancoram nele; sem a âncora, saltariam
   para o topo da página.

   Risco medido antes de aplicar: varri 24 rotas contando quem, dentro do
   .content-wrapper, é `position:absolute` e hoje se ancora no `.wrapper` (são
   esses que mudariam de referência). Deu ZERO em 23 rotas; em /orcamento/4 deu
   11, e todos são `<dialog class="plan-modal">` abertos por `showModal()`, que
   vivem na top layer e se posicionam pelo bloco inicial, imunes a isto.

   z-index 2 é de propósito baixo: a barra lateral (1040) e o cabeçalho seguem
   por cima do conteúdo, como devem.
   ========================================================================== */

body.siog-modern .content-wrapper{
  position:relative;
  z-index:2;
}

/* ==========================================================================
   46. A engrenagem do cabeçalho caía 45px abaixo da linha de títulos
       (relato do dono, 14/08: "a engrenagem não deve aparecer")

   Regressão da seção 34, e a culpa é dela. Em telas largas o siog-ultra.css
   gruda o cabeçalho da grade:

     @media (min-width:1500px){
       body.siog-modern .plan-table th{ position:sticky; top:var(--ultra-topbar-h); z-index:4 }
     }

   A seção 34 precisava que o `th` da engrenagem fosse âncora do menu, e para
   isso trocou SÓ o `position` para `relative`. O `top` continuou valendo — e
   aí está a armadilha: em `sticky` o `top` é encosto (só age quando a linha
   encosta no topo), em `relative` ele é DESLOCAMENTO. Resultado: o `th` descia
   45px sempre. Com linhas na tabela ele pousava em cima da primeira linha
   (parecia a engrenagem da linha); com a etapa vazia ficava boiando sozinho no
   meio do nada, que foi o print do dono.

   Medido antes: `th.plan-gear-th` com position:relative e top:45px, y=638
   contra y=593 das outras células do MESMO `tr`.

   Conferido no sistema de referencia (orçamento 1519972): lá a engrenagem fica DENTRO da
   linha de títulos, alinhada às demais colunas. É o alvo.

   Correção: zerar o deslocamento e devolver o `sticky` na mesma faixa em que o
   ultra gruda o resto do cabeçalho (sticky também é posicionado, então segue
   servindo de âncora para o menu).
   ========================================================================== */

body.siog-modern .plan-table .plan-gear-th{
  top:auto;
}
@media (min-width:1500px){
  body.siog-modern .plan-table .plan-gear-th{
    position:sticky;
    top:var(--ultra-topbar-h);
    z-index:4;
  }
}
/* ------------------------------------------------------------------------
   47. Modal de Pastas/Marcadores/BDI: pills de cor, rótulo do select e o
       título atrás da topbar (relatos do dono, 15/08, tela ?edit=14)

   (a) A regra ampla de aplainamento ("content-wrapper label" =>
       background transparente !important) apagava o fundo colorido dos
       pills da paleta — o ESTILO virava uma fileira de bolinhas sem cor.
       Devolve o --pill-bg como no sistema de referencia, com texto escuro nas cores
       claras e o anel do radio acompanhando a cor do texto.
   (b) "Pasta Pai:" colado no valor: o botão-select tinha padding-top de
       16px e o rótulo flutuante desce até ~17px — o texto nascia por
       baixo do rótulo. Passa ao mesmo respiro dos inputs vizinhos (22px).
   (c) O título "Pasta [ Editar ]" morria atrás da topbar: a seção 45 deu
       z-index:2 ao content-wrapper (conserto do dropdown atrás do rodapé)
       e todo modal position:fixed lá dentro passou a empilhar abaixo da
       topbar (z 1036) e da sidebar (z 1038). Em vez de guerra de
       empilhamento, o modal abre ABAIXO da barra, centrado na área útil
       ao lado da sidebar, e o formulário rola por dentro quando não cabe.
   ------------------------------------------------------------------------ */
body.siog-modern .content-wrapper label.marcador-style-pill:not(#siog-x){
  background:var(--pill-bg)!important;
  color:#fff!important;
}
body.siog-modern .content-wrapper label.marcador-style-pill.marcador-pill-default:not(#siog-x),
body.siog-modern .content-wrapper label.marcador-style-pill.marcador-pill-gray:not(#siog-x),
body.siog-modern .content-wrapper label.marcador-style-pill.marcador-pill-teal:not(#siog-x),
body.siog-modern .content-wrapper label.marcador-style-pill.marcador-pill-lightred:not(#siog-x),
body.siog-modern .content-wrapper label.marcador-style-pill.marcador-pill-warning:not(#siog-x),
body.siog-modern .content-wrapper label.marcador-style-pill.marcador-pill-yellow:not(#siog-x){
  color:#111!important;
}
body.siog-modern .marcador-style-pill .marcador-pill-dot{
  border-color:currentColor!important;
}
body.siog-modern .marcador-style-pill.selected .marcador-pill-dot::after{
  background:currentColor!important;
}

body.siog-modern .pasta-online-fieldset .pasta-online-parent-btn{
  padding-top:22px!important;
}

body.siog-modern .bdi-online-modal-panel:not(#siog-x),
body.siog-modern .marcador-online-modal-panel:not(#siog-x){
  top:calc(var(--ultra-topbar-h,45px) + 12px);
  max-height:calc(100vh - var(--ultra-topbar-h,45px) - 24px);
}
body.siog-modern .pasta-online-modal-panel:not(#siog-x),
body.siog-modern .pasta-online-modal-panel.permissions-open:not(#siog-x){
  height:auto;
  min-height:0;
}
body.siog-modern .pasta-online-modal-form{
  overflow-y:auto;
}
body.siog-modern .bdi-online-modal-panel.is-maximized:not(#siog-x){
  top:var(--ultra-topbar-h,45px);
  max-height:calc(100vh - var(--ultra-topbar-h,45px));
  min-height:0;
}
@media (min-width:821px){
  body.siog-modern .bdi-online-modal-panel:not(#siog-x):not(.is-maximized),
  body.siog-modern .marcador-online-modal-panel:not(#siog-x){
    left:calc(50% + 134px);
    width:min(1120px,calc(100vw - 300px));
  }
  body.siog-modern .pasta-online-modal-panel:not(#siog-x):not(.is-maximized){
    width:min(1260px,calc(100vw - 300px));
    max-width:none;
  }
  body.siog-modern.sidebar-collapse .bdi-online-modal-panel:not(#siog-x):not(.is-maximized),
  body.siog-modern.sidebar-collapse .marcador-online-modal-panel:not(#siog-x){
    left:calc(50% + 37px);
    width:min(1120px,calc(100vw - 106px));
  }
  body.siog-modern.sidebar-collapse .pasta-online-modal-panel:not(#siog-x):not(.is-maximized){
    width:min(1260px,calc(100vw - 106px));
  }
}
@media (max-width:820px){
  body.siog-modern .bdi-online-modal-panel:not(#siog-x),
  body.siog-modern .marcador-online-modal-panel:not(#siog-x),
  body.siog-modern .pasta-online-modal-panel:not(#siog-x),
  body.siog-modern .pasta-online-modal-panel.permissions-open:not(#siog-x){
    top:var(--ultra-topbar-h,45px);
    height:calc(100vh - var(--ultra-topbar-h,45px));
    min-height:0;
    max-height:calc(100vh - var(--ultra-topbar-h,45px));
  }
}

/* Painel USUÁRIOS SELECIONADOS: a lista de pessoas rola por dentro */
body.siog-modern .pasta-user-list{
  display:flex;
  flex-direction:column;
  gap:8px;
  max-height:240px;
  overflow:auto;
  padding-right:4px;
}
body.siog-modern .pasta-user-row-todos span{
  font-size:12px;
  opacity:.75;
}
/* ------------------------------------------------------------------------
   48. Grade da planilha: largura POR COLUNA em qualquer configuração
       (relato do dono, 15/08, orçamento 33)

   As larguras da grade só existiam para o conjunto PADRÃO de colunas
   (.plan-table-default, que o template liga quando há exatamente 7).
   Qualquer configuração personalizada caía no auto-layout do navegador e a
   grade "reescalava desorganizada": código esticado, descrição espremida.
   Aqui as mesmas larguras valem por CHAVE de coluna em todas as
   configurações; a descrição continua sendo a coluna elástica e o card já
   rola na horizontal quando muitas colunas não cabem.
   ------------------------------------------------------------------------ */
body.siog-modern .planilha-referencia .plan-table .pcol-numero{width:52px}
body.siog-modern .planilha-referencia .plan-table .pcol-codigo_fonte,
body.siog-modern .planilha-referencia .plan-table .pcol-codigo{width:80px;min-width:0!important}
body.siog-modern .planilha-referencia .plan-table .pcol-fonte{width:70px}
body.siog-modern .planilha-referencia .plan-table .pcol-descricao{width:auto;min-width:0!important}
body.siog-modern .planilha-referencia .plan-table .pcol-unidade{width:50px;min-width:0!important}
body.siog-modern .planilha-referencia .plan-table .pcol-quantidade,
body.siog-modern .planilha-referencia .plan-table .pcol-quantidade_unidade{width:80px}
body.siog-modern .planilha-referencia .plan-table .pcol-peso_etapa,
body.siog-modern .planilha-referencia .plan-table .pcol-peso{width:115px}
body.siog-modern .planilha-referencia .plan-table .pcol-valor_bdi,
body.siog-modern .planilha-referencia .plan-table .pcol-valor_unitario,
body.siog-modern .planilha-referencia .plan-table .pcol-valor_unitario_sem_bdi,
body.siog-modern .planilha-referencia .plan-table .pcol-valor_oficial,
body.siog-modern .planilha-referencia .plan-table .pcol-valor_referencia,
body.siog-modern .planilha-referencia .plan-table .pcol-valor_oficial_bdi,
body.siog-modern .planilha-referencia .plan-table .pcol-valor_referencia_bdi{width:104px}
body.siog-modern .planilha-referencia .plan-table .pcol-valor_total,
body.siog-modern .planilha-referencia .plan-table .pcol-valor_total_sem_bdi{width:110px}
/* ------------------------------------------------------------------------
   49. Relatórios: lixeira FUNCIONAL do logo do cabeçalho (pedido do dono,
       15/08, "excluir pra deixar sem a logo que nem o sistema de referencia")

   O ícone existia só como decoração no clone de referência; virou botão de
   verdade (form POST) em todo orçamento editável, no mesmo canto do sistema de referencia.
   O estado 'SEM' mostra a caixa vazia com o aviso discreto.
   ------------------------------------------------------------------------ */
body.siog-modern .rel-logo-trash-form{
  position:absolute;
  right:14px;
  top:12px;
  z-index:3;
  margin:0;
}
body.siog-modern .rel-logo-trash-form .rel-logo-trash{
  position:static;
  background:none;
  border:0;
  padding:4px 6px;
  cursor:pointer;
  color:#9b3038;
  font-size:12px;
  line-height:1;
}
body.siog-modern .rel-logo-trash-form .rel-logo-trash:hover{
  color:#d9534f;
}
body.siog-modern .logo-box-vazia{
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:90px;
}
body.siog-modern .logo-box-sem{
  font-size:11px;
  opacity:.55;
  text-transform:uppercase;
  letter-spacing:.4px;
}
/* ------------------------------------------------------------------------
   50. Relatórios: distintivos PDF/XLS/DOC padronizados + divisória
       (pedido do dono, 15/08; desenho de contorno conforme o modelo que ele
       enviou — documento com dobra, faixa atravessada com o nome e risco de
   texto embaixo, tudo em traço na cor do formato, fundo transparente)

   Os 33+ botões de exportação tinham três marcações diferentes (glifo do
   FontAwesome com nome duplicado, nomes em caixa trocada e o par da
   Planilha sem nome). O glifo e o rótulo somem e entra um SVG único por
   formato com o nome DENTRO do desenho — vale para todos os botões com as
   classes .pdf/.excel/.word, nos dois temas. O !important é necessário
   porque uma regra antiga da identidade põe background:var(--id-bg-2)
   !important nesses botões e o shorthand apagaria a imagem.
   ------------------------------------------------------------------------ */
body.siog-modern .rel-icon-export i,
body.siog-modern .rel-icon-export span{
  display:none!important;
}
body.siog-modern .rel-icon-export{
  background-repeat:no-repeat;
  background-position:center;
  background-size:36px 36px;
}
body.siog-modern .rel-icon-export.pdf{
  background-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2064%2064'%3E%3Cg%20fill='none'%20stroke='%23f23b2f'%20stroke-width='4.5'%20stroke-linejoin='round'%20stroke-linecap='round'%3E%3Cpath%20d='M12%2025%20V14%20a8%208%200%200%201%208-8%20h15%20l17%2017%20v2'/%3E%3Cpath%20d='M35%206%20v8%20a8%208%200%200%200%208%208%20h9'/%3E%3Crect%20x='4'%20y='25'%20width='56'%20height='17'%20rx='7'/%3E%3Cpath%20d='M12%2042%20v8%20a8%208%200%200%200%208%208%20h24%20a8%208%200%200%200%208-8%20v-8'/%3E%3Cpath%20d='M20%2051.5%20h11'/%3E%3C/g%3E%3Ctext%20x='32'%20y='37.5'%20font-family='Arial,Helvetica,sans-serif'%20font-weight='700'%20font-size='11'%20fill='%23f23b2f'%20text-anchor='middle'%3EPDF%3C/text%3E%3C/svg%3E")!important;
}
body.siog-modern .rel-icon-export.excel{
  background-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2064%2064'%3E%3Cg%20fill='none'%20stroke='%2321a366'%20stroke-width='4.5'%20stroke-linejoin='round'%20stroke-linecap='round'%3E%3Cpath%20d='M12%2025%20V14%20a8%208%200%200%201%208-8%20h15%20l17%2017%20v2'/%3E%3Cpath%20d='M35%206%20v8%20a8%208%200%200%200%208%208%20h9'/%3E%3Crect%20x='4'%20y='25'%20width='56'%20height='17'%20rx='7'/%3E%3Cpath%20d='M12%2042%20v8%20a8%208%200%200%200%208%208%20h24%20a8%208%200%200%200%208-8%20v-8'/%3E%3Cpath%20d='M20%2051.5%20h11'/%3E%3C/g%3E%3Ctext%20x='32'%20y='37.5'%20font-family='Arial,Helvetica,sans-serif'%20font-weight='700'%20font-size='11'%20fill='%2321a366'%20text-anchor='middle'%3EXLS%3C/text%3E%3C/svg%3E")!important;
}
body.siog-modern .rel-icon-export.word{
  background-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2064%2064'%3E%3Cg%20fill='none'%20stroke='%232b7cd3'%20stroke-width='4.5'%20stroke-linejoin='round'%20stroke-linecap='round'%3E%3Cpath%20d='M12%2025%20V14%20a8%208%200%200%201%208-8%20h15%20l17%2017%20v2'/%3E%3Cpath%20d='M35%206%20v8%20a8%208%200%200%200%208%208%20h9'/%3E%3Crect%20x='4'%20y='25'%20width='56'%20height='17'%20rx='7'/%3E%3Cpath%20d='M12%2042%20v8%20a8%208%200%200%200%208%208%20h24%20a8%208%200%200%200%208-8%20v-8'/%3E%3Cpath%20d='M20%2051.5%20h11'/%3E%3C/g%3E%3Ctext%20x='32'%20y='37.5'%20font-family='Arial,Helvetica,sans-serif'%20font-weight='700'%20font-size='11'%20fill='%232b7cd3'%20text-anchor='middle'%3EDOC%3C/text%3E%3C/svg%3E")!important;
}
/* divisória que faltava entre a seção da Planilha e o Custo Direto */
body.siog-modern .sb-rel-linha:has(#custo-opcoes-toggle){
  border-top:1px solid var(--borda);
}
/* ------------------------------------------------------------------------
   51. Etapas & Serviços: valores centralizados, botões com respiro e menus
       que fecham ao clicar fora (pedidos do dono, 15/08)

   (a) No cartão DADOS DO ORÇAMENTO, o valor de ID/Data/Unidade/Quantidade
       era alinhado à direita; centraliza SÓ o conteúdo (o rótulo fica como
       está; os campos largos Número/Obra/Descrição não mudam). O cartão é
       compartilhado (_cartoes_topo), então vale nas telas irmãs também.
   (b) "AÇÕES DISPONÍVEIS" quebrava em duas linhas (caixa fixa de 146px) e a
       setinha ficava colada (o utilitário .ml-1 de 4px vence sem
       !important); a caixa cresce o suficiente e o caret ganha respiro.
       BUSCAR/FILTRAR: lupa e setinha coladas no texto — cada uma ganha o
       seu espaço.
   ------------------------------------------------------------------------ */
body.siog-modern .rel-dados-box .rel-field:not(.wide) strong,
body.siog-modern .plan-data-grid .rel-field:not(.wide) strong{
  text-align:center;
}
body.siog-modern .plan-search-row .acoes-drop>summary,
body.siog-modern .plan-search-row .plan-menu-link{
  width:auto;
  min-width:172px;
  white-space:nowrap;
}
body.siog-modern .plan-acoes-trigger .fa-caret-down{
  margin-left:10px!important;
}
body.siog-modern .plan-search-btn{
  min-width:120px;
  white-space:nowrap;
}
body.siog-modern .plan-search-btn .fa-search{
  margin-left:9px;
}
body.siog-modern .plan-search-btn .fa-caret-down{
  margin-left:9px;
}
/* ------------------------------------------------------------------------
   52. Cronograma: a LINHA inteira mostra o estado (pedido do dono, 15/08)

   Amarela quando a soma está abaixo de 100%, verde em 100,00% exato e
   vermelha quando passa — como o sistema de referencia. As cores do totalzinho da direita
   também são reafirmadas aqui porque o aplainamento do tema escuro deixava
   amarelo/vermelho iguais ao texto comum (o "aprovado" que o dono viu era,
   em parte, o pendente sem cor). Tintas translúcidas: funcionam no claro e
   no escuro.
   ------------------------------------------------------------------------ */
body.siog-modern tr.crono-linha-pending:not(#siog-x)>td{
  background:rgba(255,193,7,.13)!important;
}
body.siog-modern tr.crono-linha-over:not(#siog-x)>td{
  background:rgba(220,53,69,.16)!important;
}
body.siog-modern tr.crono-linha-ok:not(#siog-x)>td{
  background:rgba(32,158,90,.10)!important;
}
body.siog-modern tr.crono-linha-pending .crono-edit-cell input{
  background:rgba(255,193,7,.28)!important;
  border-color:#d39e00!important;
}
body.siog-modern tr.crono-linha-over .crono-edit-cell input{
  background:rgba(220,53,69,.26)!important;
  border-color:#c9302c!important;
}
body.siog-modern tr.crono-linha-ok .crono-edit-cell input{
  background:rgba(32,158,90,.16)!important;
  border-color:#1d9e5f!important;
}
body.siog-modern .crono-total-cell.pending:not(#siog-x){color:#d39e00!important}
body.siog-modern .crono-total-cell.over:not(#siog-x){color:#d9534f!important}
body.siog-modern .crono-total-cell.ok:not(#siog-x){color:#1d9e5f!important}
/* ------------------------------------------------------------------------
   53. Cartão VALORES: rótulos BDI/Encargos sem negrito e o editar dos
       Encargos rente à borda dos valores (pedido do dono, 15/08)

   Só o RESULTADO fica em negrito (22,00%, Originais); o rótulo volta ao
   peso normal. O bloco dos Encargos vai para a direita e o lapisinho
   termina alinhado com a coluna dos números (o cartão da planilha usava
   respiro de 26px à direita contra 11px da lista — por isso nunca
   alinhava). Vale também para o cartão da Visão Geral.
   ------------------------------------------------------------------------ */
body.siog-modern .rel-kpis,
body.siog-modern .visao-value-kpis{
  font-weight:400;
}
body.siog-modern .rel-kpis b,
body.siog-modern .visao-value-kpis b{
  font-weight:700;
}
body.siog-modern .rel-kpis>span:last-child,
body.siog-modern .visao-value-kpis>span:last-child{
  margin-left:auto;
}
body.siog-modern .plan-valores-box .rel-kpis{
  padding-right:11px;
}
body.siog-modern .visao-value-kpis{
  padding-right:11px;
}
/* ------------------------------------------------------------------------
   54. Lista de Orçamentos cortada em tela de notebook (relato do dono, 15/08)

   Em telas de notebook (~1350px) as colunas da direita (Organização, Editar,
   Duplicar, Excluir) ficavam cortadas. Causa: `siog-modern.css` fixa
   `min-width:1180px` na tabela e REAFIRMA esse mesmo valor dentro do
   `@media (max-width:1399.98px)` — justamente a faixa do notebook. Com o
   painel de pastas empilhado, sobram ~1012px de área útil, e a tabela
   insistia em 1180px: o excesso saía do cartão.

   Aqui, nessa faixa, a tabela passa a caber na área útil e as colunas
   auxiliares (datas, organizador e ações) cedem largura ao Título, que é o
   que o dono lê. Medido em 1366x768: tabela 996px em 1012px disponíveis,
   Título com 313px (antes 161px se apenas soltasse o min-width), nenhuma
   célula vazando e a última coluna inteira dentro do cartão. Acima de 1400px
   nada muda. O `!important` é necessário porque o `siog-ultra.css` repete o
   mesmo 1180px com `!important` na faixa (min-width:992px) and
   (max-width:1399.98px) — era a terceira cópia da mesma trava.
   ------------------------------------------------------------------------ */
@media (max-width:1399.98px){
  /* piso: abaixo disto o cartão rola em vez de espremer o Título (as demais
     colunas somam 682px; 940 garante ~258px de Título, ainda legível) */
  body.siog-modern.orcamentos-list-body .orc-table-wrap .tbl-orc{
    min-width:940px!important;
  }
  /* Criação, Última Alteração e Data: cabem em 70px no formato dd/mm/aaaa */
  body.siog-modern.orcamentos-list-body .tbl-orc th:nth-child(3),
  body.siog-modern.orcamentos-list-body .tbl-orc th:nth-child(4),
  body.siog-modern.orcamentos-list-body .tbl-orc th:nth-child(5){
    width:70px!important;
  }
  /* organizador de pasta/marcadores */
  body.siog-modern.orcamentos-list-body .tbl-orc th:nth-child(8){
    width:120px!important;
  }
  /* Editar / Duplicar / Excluir: só o ícone */
  body.siog-modern.orcamentos-list-body .tbl-orc th:nth-child(9),
  body.siog-modern.orcamentos-list-body .tbl-orc th:nth-child(11){
    width:46px!important;
  }
  body.siog-modern.orcamentos-list-body .tbl-orc th:nth-child(10){
    width:56px!important;
  }
  /* o cabeçalho pode quebrar em duas linhas nessas colunas estreitas */
  body.siog-modern.orcamentos-list-body .orcamentos-page .tbl-orc thead th{
    white-space:normal!important;
    font-size:9px!important;
  }
}
/* ------------------------------------------------------------------------
   55. Cartão DADOS DO ORÇAMENTO: texto longo QUEBRA em vez de virar "..."
       (pedido do dono, 15/08 — "no sistema de referencia o texto é quebrado pra baixo")

   Os campos largos (Número, OBRA, Descrição, FONTES) tinham `nowrap` +
   reticências: a OBRA aparecia como "CONSTRUÇÃO DE UMA PRAÇA NO POVOADO DO
   CONTAD…". Agora o texto quebra em linhas, como no sistema de referencia.

   O campo reserva a altura de TRÊS linhas e, quando o texto passa disso
   (obras de edital com 250 caracteres chegam a oito linhas nesta largura),
   o próprio campo rola — nada de reticências e nenhum trecho inacessível.
   Por que não deixar o campo crescer à vontade: as linhas deste grid não
   acompanham a altura do conteúdo (o `.rel-field` é item de grid com
   `overflow:hidden` no tema base, o que zera a contribuição dele para a
   trilha); só o `min-height` declarado dimensiona a linha. Crescer sem
   limite também engoliria o cartão inteiro num campo só.
   ------------------------------------------------------------------------ */
body.siog-modern .rel-data-grid .rel-field.wide,
body.siog-modern .plan-data-grid .rel-field.wide{
  /* Correção 15/08 (relato do dono): a altura mínima fixa engordava TODOS os
     campos largos, mesmo os de uma palavra só (Número, FONTES). O que zerava
     a contribuição do campo para a linha do grid era o `overflow:hidden` do
     tema base — com `visible` a trilha volta a medir o conteúdo e cada caixa
     fica só com a altura das linhas que tem. Piso igual ao dos campos curtos. */
  min-height:46px!important;
  height:auto!important;
  overflow:visible!important;
}
body.siog-modern .rel-data-grid,
body.siog-modern .plan-data-grid{
  align-items:start!important;
}
body.siog-modern .rel-data-grid .rel-field.wide strong,
body.siog-modern .plan-data-grid .rel-field.wide strong{
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  line-height:1.3!important;
  display:block!important;
}
/* ------------------------------------------------------------------------
   56. Modal Etapa/Serviço [EDITAR]: a lista de sugestões estava INVISÍVEL
       (relato do dono, 15/08 — "deveria aparecer sugestões que nem o sistema de referencia")

   A busca sempre funcionou: medido ao vivo, digitar "caixa" trazia 15
   sugestões e o dropdown ganhava 252px de altura. Só que ele é
   `position:absolute` dentro do `.item-edit-composition`, que herda
   `overflow:hidden` de `.item-edit-grid .modal-field` — `elementFromPoint`
   no meio do dropdown devolvia o próprio INPUT, ou seja, a lista inteira
   era recortada pelo pai. Aqui o campo deixa de recortar (o recorte existia
   para as caixas de campo comuns, que continuam iguais).
   ------------------------------------------------------------------------ */
body.siog-modern .item-edit-grid .item-edit-composition{
  overflow:visible!important;
}
body.siog-modern .item-edit-composition .sb-ac{
  z-index:60;
  max-height:280px;
  overflow-y:auto;
}
/* ------------------------------------------------------------------------
   57. Modal "Fontes & Tabelas [ CONFIGURAR ]" cortado (relato do dono, 15/08)

   Mesma armadilha da seção 47: o `content-wrapper` ganhou `z-index:2` (fix do
   dropdown atrás do rodapé) e virou contexto de empilhamento, então o modal
   `position:fixed` de dentro dele fica ABAIXO da sidebar (z 1038) por mais
   que declare z-index 1200. Somado a isso, o modal pedia `min-width:1120px`
   e 1200px de largura numa área útil de ~1098px: a coluna da esquerda (as
   regiões e os checkboxes das fontes) ficava escondida atrás do menu.

   Aqui o modal passa a ocupar a ÁREA ÚTIL, ao lado da sidebar e abaixo da
   barra, e a largura acompanha o espaço disponível.
   ------------------------------------------------------------------------ */
body.siog-modern .ft-modal-backdrop,
body.siog-modern .insumos-page .ft-modal-backdrop{
  padding-left:calc(268px + 12px);
  padding-top:calc(var(--ultra-topbar-h,45px) + 10px);
  padding-right:12px;
}
body.siog-modern.sidebar-collapse .ft-modal-backdrop,
body.siog-modern.sidebar-collapse .insumos-page .ft-modal-backdrop{
  padding-left:86px;
}
body.siog-modern .ft-modal,
body.siog-modern .insumos-page .ft-modal{
  min-width:0!important;
  width:min(1440px,calc(100vw - 292px))!important;
  max-height:calc(100vh - var(--ultra-topbar-h,45px) - 20px)!important;
  height:auto!important;
}
body.siog-modern.sidebar-collapse .ft-modal,
body.siog-modern.sidebar-collapse .insumos-page .ft-modal{
  width:min(1440px,calc(100vw - 98px))!important;
}
@media (max-width:991.98px){
  body.siog-modern .ft-modal-backdrop,
  body.siog-modern .insumos-page .ft-modal-backdrop{
    padding-left:10px;
  }
  body.siog-modern .ft-modal,
  body.siog-modern .insumos-page .ft-modal{
    width:calc(100vw - 20px)!important;
  }
}
/* ------------------------------------------------------------------------
   58. Modal Etapa/Serviço [EDITAR]: rótulo ao LADO e sugestões em LISTA
       (pedido do dono, 15/08, com a tela do sistema de referencia como referência)

   Duas mudanças de forma, nenhuma de conteúdo:

   (a) ITEM, TIPO, ETAPA PAI, BDI e SERVIÇO / INSUMO passam a mostrar o rótulo
       à ESQUERDA, centralizado na vertical, em faixa própria — o desenho do
       sistema de referencia. Os campos de baixo (Código, Descrição, Unidade, Quantidade,
       Valor, Referência, Observações) seguem com o rótulo em cima, também
       como o sistema de referencia. A troca é só de eixo: o `.modal-field` já era flex, aqui
       vira `row` e o primeiro `<span>` ganha a faixa.

   (b) As sugestões da busca eram <button>, que é inline-block por padrão, e
       por isso se enfileiravam em grade de caixinhas. Viram lista (uma por
       linha) e o painel cresce de 280px para 440px de altura útil. No painel
       de "Adicionar Etapa / Serviço" cada sugestão já é uma <div>, que é
       bloco, e por isso lá sempre foi lista: as regras abaixo também passam
       por ele para os dois ficarem iguais.

   Cores só por variável da identidade, para valer nos dois temas. O
   `!important` acompanha o que a folha do template já usa nesses seletores.
   ------------------------------------------------------------------------ */

/* ---- (a) rótulo à esquerda, centralizado na vertical ---- */
body.siog-modern .item-edit-grid .modal-field.ie-lado{
  display:flex!important;
  flex-direction:row!important;
  align-items:stretch!important;
  padding:0!important;
  overflow:hidden;
}
body.siog-modern .item-edit-grid .modal-field.ie-lado>span:first-child{
  display:flex!important;
  align-items:center!important;
  flex:0 0 auto;
  margin:0!important;
  padding:0 10px!important;
  background:var(--id-bg-2)!important;
  border-right:1px solid var(--id-border)!important;
  color:var(--id-muted)!important;
  font-size:11px!important;
  font-weight:700!important;
  letter-spacing:.3px;
  white-space:nowrap;
}
body.siog-modern .item-edit-grid .modal-field.ie-lado>input:not([type=checkbox]),
body.siog-modern .item-edit-grid .modal-field.ie-lado>select{
  align-self:stretch!important;
  padding:0 8px!important;
  height:auto!important;
}
/* o campo de busca tem a mesma faixa, dentro da própria caixa */
body.siog-modern .item-edit-composition .ie-caixa.ie-caixa-lado{
  /* o display precisa vir junto: outra regra deixa este <span> em `block`,
     e sem `flex` aqui o flex-direction abaixo não teria efeito nenhum */
  display:flex!important;
  flex-direction:row!important;
  align-items:stretch!important;
  padding:0!important;
}
body.siog-modern .item-edit-composition .ie-caixa-lado>.ie-rot{
  display:flex!important;
  align-items:center!important;
  gap:5px;
  flex:0 0 auto;
  padding:0 10px!important;
  background:var(--id-bg-2)!important;
  border-right:1px solid var(--id-border)!important;
  color:var(--id-muted)!important;
  font-size:11px!important;
  letter-spacing:.3px;
  white-space:nowrap;
}
body.siog-modern .item-edit-composition .ie-caixa-lado>#item-edit-composition{
  align-self:stretch!important;
  padding:0 8px!important;
  height:auto!important;
}

/* ---- (b) sugestões em lista, e maiores ---- */
body.siog-modern .item-edit-composition .sb-ac,
body.siog-modern .ai-servico .sb-ac{
  max-height:440px!important;
  overflow-y:auto!important;
  z-index:60;
}
body.siog-modern .item-edit-composition .sb-ac>.sb-ac-item:not(.sb-ac-grade),
body.siog-modern .ai-servico .sb-ac>.sb-ac-item:not(.sb-ac-grade){
  display:block!important;
  width:100%!important;
  box-sizing:border-box;
  text-align:left!important;
  margin:0!important;
  padding:8px 11px!important;
  border:0!important;
  border-bottom:1px solid var(--id-border)!important;
  border-radius:0!important;
  background:transparent!important;
  color:var(--id-text)!important;
  font-size:12.5px!important;
  line-height:1.35!important;
  cursor:pointer;
}
body.siog-modern .item-edit-composition .sb-ac>.sb-ac-item:not(.sb-ac-grade):last-child,
body.siog-modern .ai-servico .sb-ac>.sb-ac-item:not(.sb-ac-grade):last-child{
  border-bottom:0!important;
}
body.siog-modern .item-edit-composition .sb-ac>.sb-ac-item:not(.sb-ac-grade):hover,
body.siog-modern .item-edit-composition .sb-ac>.sb-ac-item:not(.sb-ac-grade):focus,
body.siog-modern .ai-servico .sb-ac>.sb-ac-item:not(.sb-ac-grade):hover,
body.siog-modern .ai-servico .sb-ac>.sb-ac-item:not(.sb-ac-grade):focus{
  background:var(--id-bg-2)!important;
}
body.siog-modern .item-edit-composition .sb-ac .sb-ac-item:not(.sb-ac-grade) b,
body.siog-modern .ai-servico .sb-ac .sb-ac-item:not(.sb-ac-grade) b{
  color:var(--id-text)!important;
  font-size:12.5px!important;
}
body.siog-modern .item-edit-composition .sb-ac .sb-ac-item:not(.sb-ac-grade) small,
body.siog-modern .ai-servico .sb-ac .sb-ac-item:not(.sb-ac-grade) small{
  display:block;
  color:var(--id-muted)!important;
  font-size:11.5px!important;
  white-space:normal;
}
body.siog-modern .item-edit-composition .sb-ac .sb-ac-item:not(.sb-ac-grade) .sb-ac-f,
body.siog-modern .ai-servico .sb-ac .sb-ac-item:not(.sb-ac-grade) .sb-ac-f{
  color:var(--id-accent)!important;
  font-size:11px!important;
}
/* No tema claro o acento é #5ca1f5, que sobre o branco dá contraste 2,67 —
   pouco para um texto de 11px. Aqui a sigla da fonte usa um azul fechado
   (6,4:1) sem sair da paleta; no escuro o acento já contrasta e fica. */
body.siog-modern.tema-claro .item-edit-composition .sb-ac .sb-ac-item:not(.sb-ac-grade) .sb-ac-f,
body.siog-modern.tema-claro .ai-servico .sb-ac .sb-ac-item:not(.sb-ac-grade) .sb-ac-f{
  color:#1b5fb0!important;
}

/* o campo cresce e o rótulo é que cede: sem isto o input fica com a largura
   natural e, em tela estreita, sobra dele um toco de poucos pixels */
body.siog-modern .item-edit-composition .ie-caixa-lado>#item-edit-composition{
  flex:1 1 auto!important;
  min-width:0!important;
  width:auto!important;
}

/* ------------------------------------------------------------------------
   Telas estreitas. O grid do modal já vinha quebrado aqui, antes desta
   mudança: as media queries do template trocam o grid para `1fr 1fr` mas os
   campos continuam pedindo `span 2/3/5/10/12`, e o navegador cria COLUNAS
   IMPLÍCITAS para caber o span. Medido em 768px: dez trilhas irregulares
   (102, 102, 77, 77, 78, 78, 21, 21, 21, 0) e o campo de busca reduzido a
   46px. Aqui os spans são neutralizados junto com a troca de grade: campo
   curto ocupa uma coluna, campo longo ocupa a linha.
   ------------------------------------------------------------------------ */
@media (max-width:980px){
  body.siog-modern .item-edit-grid .ie-2,
  body.siog-modern .item-edit-grid .ie-3,
  body.siog-modern .item-edit-grid .ie-6,
  body.siog-modern .item-edit-grid .wide,
  body.siog-modern .item-edit-grid .ref-direita{
    grid-column:auto/span 1!important;
  }
  body.siog-modern .item-edit-grid .ie-5,
  body.siog-modern .item-edit-grid .ie-10,
  body.siog-modern .item-edit-grid .ie-12,
  body.siog-modern .item-edit-grid .ie-obs,
  body.siog-modern .item-edit-grid .full{
    grid-column:1/-1!important;
  }
  body.siog-modern .item-edit-grid .modal-field.ie-lado>span:first-child,
  body.siog-modern .item-edit-composition .ie-caixa-lado>.ie-rot{
    padding:0 7px!important;
    font-size:10px!important;
  }
}
@media (max-width:620px){
  body.siog-modern .item-edit-grid .ie-2,
  body.siog-modern .item-edit-grid .ie-3,
  body.siog-modern .item-edit-grid .ie-5,
  body.siog-modern .item-edit-grid .ie-6,
  body.siog-modern .item-edit-grid .ie-10,
  body.siog-modern .item-edit-grid .ie-12,
  body.siog-modern .item-edit-grid .wide,
  body.siog-modern .item-edit-grid .full,
  body.siog-modern .item-edit-grid .ie-obs,
  body.siog-modern .item-edit-grid .ref-direita{
    grid-column:1/-1!important;
  }
  body.siog-modern .item-edit-composition .sb-ac,
  body.siog-modern .ai-servico .sb-ac{
    max-height:300px!important;
  }
}

/* ------------------------------------------------------------------------
   59. Cartão DADOS DO ORÇAMENTO: a caixa de Descrição entrava POR CIMA da de
       Obra (relato do dono, 15/08, orçamento 33)

   A seção 55 fez o texto longo quebrar em linhas, e a caixa passou a crescer.
   O que ficou faltando foi a LINHA do grid crescer junto: medido ao vivo, a
   caixa da Obra tinha 79px (146px em tela larga) dentro de uma trilha de 46px,
   e o excedente era desenhado por cima da caixa seguinte.

   Causa, isolada por experimento (clone do cartão fora do contexto, com e sem
   altura definida): quando o corpo do cartão tem ALTURA DEFINIDA, as trilhas
   `auto` deste grid param de medir o conteúdo e ficam no `min-height` do campo
   (46px). E ele tem altura definida por desenho: os três cartões do topo são
   irmãos numa linha de grid (mesma altura para os três) e o corpo é
   `flex:1 1 auto; min-height:0; overflow-y:auto`, ou seja, ele preenche o que
   sobra do cartão e rola por dentro. Com o corpo em altura automática as
   trilhas medem certo, mas aí o cartão cresce sem limite e a rolagem interna
   (que é o comportamento do sistema de referencia) se perde.

   Conserto: declarar as trilhas como `min-content`, que mede o conteúdo mesmo
   com o contêiner de altura definida. O cartão continua do mesmo tamanho e
   rolando por dentro; o que muda é que cada campo passa a ter a sua própria
   faixa, sem invadir a de baixo. Vale para os dois nomes de família do mesmo
   bloco (`rel-` e `plan-`), portanto para as 10 telas que incluem
   `_cartoes_topo.html`, em qualquer largura e com qualquer texto.

   Medido antes x depois na tela Etapas & Serviços do orçamento 33 (Obra e
   Descrição com 250 caracteres): sobreposição de 17px a 1086px de largura,
   17px a 768px e 101px a 375px -> zero em todas.
   ------------------------------------------------------------------------ */
body.siog-modern .rel-data-grid,
body.siog-modern .plan-data-grid{
  grid-auto-rows:min-content!important;
}

/* ------------------------------------------------------------------------
   60. Comentários no celular: o campo de escrever ficava POR BAIXO das
       amostras de cor (achado da varredura de grids, 15/08)

   `.comments-compose` (siog-theme.css:5329) é uma grade de colunas CRAVADAS
   em pixel: 75px (rótulo) + 1fr (campo) + 190px (cores) + 44px (botão), dentro
   de um formulário `position:absolute` de 54px de altura no rodapé do cartão.
   A 375px de largura a caixa toda tem 317px, ou seja, as três colunas fixas
   já não cabem: a coluna do campo colapsa para ~26px e o input fica embaixo
   das amostras de cor (medido: 26px de sobreposição).

   Aqui, só em tela estreita, o formulário vira `flex` com quebra: rótulo e
   campo na primeira linha, amostras de cor e botão [+] na segunda. A quebra é
   FORÇADA por um `::before` de base 100% (item flex invisível), senão em
   larguras intermediárias ele caberia numa linha só e a reserva de altura da
   lista ficaria com um vão vazio. Como o formulário é absoluto no rodapé, a
   lista de comentários acima precisa reservar a nova altura (112px: 38+8+38
   das duas linhas, 8 do vão da linha invisível, 16+4 de recheio e borda).
   ------------------------------------------------------------------------ */
@media (max-width:640px){
  body.siog-modern .comments-compose{
    height:auto!important;
    display:flex!important;
    flex-wrap:wrap;
    align-items:center;
    row-gap:8px;
    padding:8px 12px!important;
  }
  /* item flex invisível de largura total: garante a quebra de linha */
  body.siog-modern .comments-compose::before{
    content:"";
    flex:0 0 100%;
    order:2;
    height:0;
    margin:0;
    padding:0;
    border:0;
  }
  body.siog-modern .comments-compose>label{ flex:0 0 auto; order:0; }
  body.siog-modern .comments-compose input[type=text]{
    flex:1 1 120px;
    min-width:0;
    order:1;
  }
  body.siog-modern .comments-compose .comments-colors{
    flex:0 1 auto;
    order:3;
    margin:0!important;
  }
  body.siog-modern .comments-compose .comments-add{
    flex:0 0 auto;
    order:4;
    margin-left:auto;
  }
  body.siog-modern .comments-list-online{ bottom:112px!important; }
}

/* ------------------------------------------------------------------------
   61. Lista de Orçamentos: colunas centralizadas (pedido do dono, 15/08)

   Cabeçalho E conteúdo centralizados em todas as colunas. A ÚNICA exceção é o
   conteúdo da coluna TÍTULO (o objeto da obra), que continua alinhado à
   esquerda porque é texto corrido e quebra em duas linhas; o rótulo "TÍTULO"
   dela, esse sim, fica centralizado.

   Escopo: `body.orcamentos-list-body` + `.orc-table-wrap`. A classe `.tbl-orc`
   sozinha NÃO serve — ela é usada por outras 11 telas (insumos, lixeiras,
   cadastros, fontes próprias, união, BDI...), que não foram pedidas.

   A pasta/marcador da coluna ORGANIZAÇÃO é um bloco (`details`), então não
   obedece a `text-align`: é centralizada por margem automática.
   ------------------------------------------------------------------------ */
body.siog-modern.orcamentos-list-body .orc-table-wrap .tbl-orc thead th,
body.siog-modern.orcamentos-list-body .orc-table-wrap .tbl-orc tbody td{
  text-align:center!important;
}
body.siog-modern.orcamentos-list-body .orc-table-wrap .tbl-orc tbody td.title-col{
  text-align:left!important;
}
body.siog-modern.orcamentos-list-body .orc-table-wrap .tbl-orc tbody td.organization-col
.orc-marker-picker{
  margin-left:auto!important;
  margin-right:auto!important;
}

/* ------------------------------------------------------------------------
   62. Visão Geral: a faixa ID/Data/Unidade/Quantidade alinhada com os campos
       de baixo (pedido do dono, 15/08, com as duas marcas vermelhas no print)

   O painel tem duas grades independentes e elas não conversavam:
     `.visao-fixed-grid`  = repeat(4,1fr) 180px, gap 14, recheio lateral 20px
     `.visao-line`        = 28px 134px minmax(260px,1fr) 104px, gap 16, 15px
   Resultado: as quatro caixas do topo começavam e terminavam em posições que
   não batiam com nenhuma coluna das linhas numeradas de baixo.

   Agora a faixa do topo usa a MESMA régua das linhas: as quatro caixas ocupam
   exatamente a coluna do valor (onde ficam os textos de Número, OBRA, FONTES)
   e o par MULTIPLICAR/DIVIDIR cai na coluna das ferramentas (olho, setas,
   lixeira). As colunas 1 e 2 ficam vazias de propósito, é o vão do número e do
   nome do campo. Aritmética conferida ao vivo: 4 caixas de 195px + 3 vãos de
   16px = 827px, que é a largura da caixa de texto.

   Só vale acima de 1200px: abaixo disso o tema já reorganiza as duas grades
   (`@media(max-width:1200px)`: topo em 2 colunas, ferramentas na 2ª linha).

   O valor DENTRO de cada caixa fica centralizado (o rótulo flutuante "ID:",
   "Data:" continua no canto, que é o desenho do campo).
   ------------------------------------------------------------------------ */
@media (min-width:1201px){
  body.siog-modern .visao-dados .visao-fixed-grid{
    grid-template-columns:28px 134px repeat(4,minmax(0,1fr)) 104px!important;
    gap:16px!important;
    padding-left:15px!important;
    padding-right:15px!important;
    align-items:start!important;
  }
  body.siog-modern .visao-dados .visao-fixed-grid>.visao-field:first-child{
    grid-column:3!important;
  }
  body.siog-modern .visao-dados .visao-fixed-grid>.visao-radio{
    grid-column:7!important;
    justify-content:center;
  }
}
body.siog-modern .visao-field .visao-static-value,
body.siog-modern .visao-field input{
  text-align:center!important;
}

/* ------------------------------------------------------------------------
   63. Lista de Orçamentos: cabeçalho que ordena (pedido do dono, 15/08,
       "igual ao sistema de referencia: um clique de baixo pra cima, outro de cima pra baixo")

   O link e a seta vêm do template (`th_ordem` + `<i class="ord-seta">`); aqui
   só a aparência. A seta fica ancorada à DIREITA por posicionamento absoluto,
   com recheio igual nos dois lados, para o rótulo continuar centralizado (a
   seção 61 centralizou tudo) e para o cabeçalho de duas linhas ("Última /
   Alteração") não desmontar.

   Estados: sem ordenação, seta dupla apagada; ordenada, seta cheia no acento.
   ------------------------------------------------------------------------ */
body.siog-modern.orcamentos-list-body .orc-table-wrap .tbl-orc thead th a.th-ordem{
  display:block;
  position:relative;
  padding:0 12px;
  color:inherit;
  text-decoration:none;
  cursor:pointer;
}
body.siog-modern.orcamentos-list-body .orc-table-wrap .tbl-orc thead th a.th-ordem:hover{
  color:var(--id-accent)!important;
  text-decoration:none;
}
body.siog-modern.orcamentos-list-body .orc-table-wrap .tbl-orc thead th .ord-seta{
  position:absolute;
  right:0;
  top:50%;
  transform:translateY(-50%);
  font-family:"Font Awesome 5 Free";
  font-weight:900;
  font-size:9px;
  font-style:normal;
  line-height:1;
  opacity:.3;
}
body.siog-modern.orcamentos-list-body .orc-table-wrap .tbl-orc thead th .ord-seta::before{
  content:"\f0dc";
}
body.siog-modern.orcamentos-list-body .orc-table-wrap .tbl-orc thead th.ord-asc a.th-ordem,
body.siog-modern.orcamentos-list-body .orc-table-wrap .tbl-orc thead th.ord-desc a.th-ordem{
  color:var(--id-accent)!important;
}
body.siog-modern.orcamentos-list-body .orc-table-wrap .tbl-orc thead th.ord-asc .ord-seta,
body.siog-modern.orcamentos-list-body .orc-table-wrap .tbl-orc thead th.ord-desc .ord-seta{
  opacity:1;
}
body.siog-modern.orcamentos-list-body .orc-table-wrap .tbl-orc thead th.ord-asc .ord-seta::before{
  content:"\f0de";
}
body.siog-modern.orcamentos-list-body .orc-table-wrap .tbl-orc thead th.ord-desc .ord-seta::before{
  content:"\f0dd";
}

/* ------------------------------------------------------------------------
   64. Nome do orçamento na barra lateral: corte com reticências (15/08)

   Com os títulos passando a ser o objeto completo do edital (até 248
   caracteres aqui), o bloco `.sb-orc-name` — que tem `overflow:hidden` e
   cabe ~4 linhas — cortava o texto NO MEIO, sem nenhum sinal de que havia
   mais. Medido: 84px visíveis para 210px de texto.

   Agora corta nas mesmas 4 linhas, porém com reticências, e o JS da
   identidade põe o texto inteiro no `title` (aparece ao passar o mouse).
   A altura não muda, então o menu não desce.
   ------------------------------------------------------------------------ */
body.siog-modern .sb-orc-name{
  display:-webkit-box!important;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:4;
  overflow:hidden;
  text-overflow:ellipsis;
}

/* ------------------------------------------------------------------------
   65. Lista no celular: nome da PASTA cortado (relato do dono, 15/08 —
       "RETIROL…"; e depois "na horizontal ainda corta, na vertical quebra
       no meio da palavra")

   Duas causas somadas:
   1. `.orc-organization-copy>b` e `.orc-marker-summary-text` são `nowrap` +
      `text-overflow:ellipsis` (siog-modern.css).
   2. A seção 54 deixa a coluna com `width:120px!important` em TODA tela
      até 1399.98px, e a tabela é `table-layout:fixed` — nesse modo a largura
      vem do `width` do cabeçalho e `min-width` na célula é ignorado. Foi por
      isso que a primeira tentativa (min-width:140px) não mudou nada no
      aparelho: a coluna continuou com ~138px e o texto com 78px.
      Medido: "RETIROLÂNDIA" pede 78px, "VÁRZEA DO POÇO" 87px e
      "URGENTE, FINALIZADO" 108px.

   Correção, só até 991.98px (celular em pé E deitado; o tablet/notebook
   continua com o ajuste fino da seção 54): a coluna passa a 160px — vira
   178px reais porque a tabela distribui a sobra — e o texto quebra por
   PALAVRA. `overflow-wrap:break-word` (não `anywhere`): palavra é quebrada
   ao meio só quando ela sozinha não cabe, que era o "RETIROLÂN / DIA" feio
   da primeira versão.

   Medido na réplica com o CSS real, em pé (390px) e deitado (932px): antes,
   3 dos 6 textos cortados; depois, nenhum corte, tudo em UMA linha e a linha
   da tabela em 54-56px (era 50px). Nome sem espaço de 45 caracteres não
   vaza: cresce para 82px de altura. Acima de 992px nada muda (conferido a
   1200px: mesma coluna de 138px e mesma altura de 50px, com e sem a regra).
   ------------------------------------------------------------------------ */
@media (max-width:991.98px){
  body.siog-modern.orcamentos-list-body .orcamentos-page .tbl-orc th:nth-child(8),
  body.siog-modern.orcamentos-list-body .orcamentos-page .tbl-orc :is(th,td).organization-col{
    width:160px!important;
  }
  body.siog-modern.orcamentos-list-body .orc-organization-copy>b,
  body.siog-modern.orcamentos-list-body .orc-marker-summary-text{
    white-space:normal!important;
    overflow:visible!important;
    text-overflow:clip!important;
    overflow-wrap:break-word!important;
    word-break:normal!important;
  }
  body.siog-modern.orcamentos-list-body .orc-marker-picker>summary{
    align-items:start;
    padding-top:6px;
    padding-bottom:6px;
  }
  body.siog-modern.orcamentos-list-body .orc-organization-copy>small{
    align-items:flex-start;
  }
}

/* ------------------------------------------------------------------------
   66. Seta da etapa continua escura sobre a faixa vermelha (pedido do dono,
       15/08 — "observe o sistema de referencia, nesse caso a seta é mantida preta")

   A faixa vermelha da coluna de alertas é a `.bg-danger` do Bootstrap, que
   junto com o fundo aplica `color:#fff` — a seta da etapa ficava branca.
   No sistema de referencia a seta é a mesma dos demais, escura. Aqui ela volta a usar a cor
   de texto do tema (quase preta no claro, clara no escuro, para não sumir).
   ------------------------------------------------------------------------ */
body.siog-modern .plan-alert-col.bg-danger .plan-row-caret,
body.siog-modern .plan-alert-col.bg-danger .plan-row-caret i{
  color:var(--id-text)!important;
}

/* ------------------------------------------------------------------------
   67. Etapas & Serviços: seta de SUBIR no título e a coluna UNIDADE que
       vazava para a vizinha (pedidos do dono, 15/08)

   (a) A seta do título vira "subir um nível" dentro de uma etapa (marcação e
       comportamento no planilha.html). Aqui ela só ganha aparência de botão:
       mesma cor do título, alvo de toque decente no celular.

   (b) UNIDADE: o cabeçalho tem 11,2px em CAIXA ALTA e pede ~58px de texto,
       mas a coluna era de 50px (48px na faixa 768-991px, justamente o celular
       deitado) e o `th` usa `white-space:normal` — palavra única não quebra,
       então ela transbordava por cima da coluna QUANTIDADE. A coluna passa a
       74px (56px abaixo de 768px, onde o cabeçalho cai para 8px) e ganha
       reticências como rede de segurança. A largura sai da coluna
       ETAPA/SERVIÇO, que é a elástica.
   ------------------------------------------------------------------------ */
body.siog-modern .plan-grade-head h3 .plan-context-up{
  color:inherit;
  text-decoration:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:22px;
  min-height:22px;
}
body.siog-modern .plan-grade-head h3 .plan-context-up:hover,
body.siog-modern .plan-grade-head h3 .plan-context-up:focus{
  color:var(--id-accent);
  text-decoration:none;
}
body.siog-modern .plan-grade-head h3 .plan-context-up[hidden],
body.siog-modern .plan-grade-head h3 #plan-context-caret[hidden]{
  display:none;
}

body.siog-modern .planilha-referencia .plan-table .pcol-unidade,
body.siog-modern .planilha-referencia .plan-table-default .pcol-unidade{
  width:74px!important;
  min-width:0!important;
}
body.siog-modern .planilha-referencia .plan-table thead th.pcol-unidade,
body.siog-modern .planilha-referencia .plan-table-default thead th.pcol-unidade{
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
@media (max-width:767.98px){
  body.siog-modern .planilha-referencia .plan-table .pcol-unidade,
  body.siog-modern .planilha-referencia .plan-table-default .pcol-unidade{
    width:56px!important;
  }
}

/* ------------------------------------------------------------------------
   68. Barra lateral: "Itens | Valores Acima" e "Itens | Erros" em VERMELHO
       quando existe item (pedido do dono, 15/08: "se existir um valor com
       item acima essa lateral tem que ficar vermelha que nem o sistema de referencia,
       indicando a quantidade")

   A marcação já existia no `base.html` (classe `sb-item-danger` + badge com a
   contagem) e o `siog-modern.css:276` pinta o fundo de #b11f2b. Só que a
   própria camada de identidade achatava tudo antes: a regra
   `.orcamento-shell .nav-sidebar .nav-link:not(#siog-x)` (linha 1083) tem
   especificidade de ID por causa do `:not(#siog-x)` e manda
   `background:transparent!important` em TODO item do menu. Resultado: dentro
   do orçamento, que é justamente onde esses dois itens vivem, o vermelho nunca
   aparecia — sobrava só o badge.

   Aqui a linha vermelha recupera o fundo com o mesmo bump de especificidade,
   nos dois temas, e o badge ganha contraste sobre ele (fundo claro, número
   vermelho), como no sistema de referencia.
   ------------------------------------------------------------------------ */
body.siog-modern .nav-sidebar .nav-link.sb-item-danger:not(#siog-x),
body.siog-modern.orcamento-shell .nav-sidebar .nav-link.sb-item-danger:not(#siog-x),
body.siog-modern.orcamento-shell .nav-sidebar .nav-link.sb-item-danger.active:not(#siog-x){
  background:#b11f2b!important;
  background-image:none!important;
  color:#fff!important;
}
body.siog-modern .nav-sidebar .nav-link.sb-item-danger:not(#siog-x):hover,
body.siog-modern.orcamento-shell .nav-sidebar .nav-link.sb-item-danger:not(#siog-x):hover{
  background:#8f1922!important;
  color:#fff!important;
}
body.siog-modern .nav-sidebar .nav-link.sb-item-danger:not(#siog-x) p,
body.siog-modern .nav-sidebar .nav-link.sb-item-danger:not(#siog-x) .nav-icon{
  color:#fff!important;
}
body.siog-modern .nav-sidebar .nav-link.sb-item-danger:not(#siog-x) .badge{
  background:#fff!important;
  color:#b11f2b!important;
  font-weight:700;
}
/* o badge âmbar de "Valores Alterados" fica sobre o fundo normal do menu */
body.siog-modern .nav-sidebar .nav-link .badge.badge-warning:not(#siog-x){
  background:var(--id-warning)!important;
  color:#1a1400!important;
  font-weight:700;
}

/* =========================================================================
   59. AJUSTES > INSUMOS: a tabela cabe na tela e separa Oficial x Utilizado
   -------------------------------------------------------------------------
   Medido no sistema de referencia (1469497) em 16/08: tabela de 1359px, Nome com 230px,
   colunas de valor com 108px, blocos separados por uma coluna vazia de 12px,
   Valor Oficial em rgb(238,238,238) e Valor Utilizado em rgb(206,244,224).

   No SIOG a tabela tinha 1565px chumbados dentro de uma área útil de 1213px,
   então as últimas colunas ficavam cortadas. Agora as larguras são compactas e
   o Nome é flexível: fica com a sobra, e sobra mais nos grupos de layout
   simples (uma coluna de valor por bloco) do que em Mão de Obra.
   ========================================================================= */
/* o `min-width:1200px` de .ajs-table impedia a tabela de encolher: numa tela de
   notebook (1366 com a barra lateral aberta sobram 1056px) ela continuava com
   1200px e as últimas colunas ficavam fora. */
body.siog-modern .ajs-table-insumos{
  width:100%!important; table-layout:fixed!important; min-width:0!important;
}
/* As larguras antigas miravam POSIÇÃO (col:nth-child(2), (8)..(11)) e valiam
   para a ordem única de colunas. Agora a ordem muda com o grupo, então elas
   deslocavam tudo: o Nome ficava com 25px e os separadores com 118px. Zeradas
   aqui, e as novas são por CLASSE. */
body.siog-modern .ajs-table-insumos col{ width:auto!important; }
body.siog-modern .ajs-table-insumos col.c-sel{ width:32px!important; }
body.siog-modern .ajs-table-insumos col.c-fonte{ width:72px!important; }
body.siog-modern .ajs-table-insumos col.c-cod{ width:64px!important; }
body.siog-modern .ajs-table-insumos col.c-nome{ width:auto!important; }
/* 29/08/2026 (pedido do dono): 52px e 60px nao cabiam "UNIDADE" nem
   "ENCARGOS" em caixa alta, e o titulo vazava para a coluna ao lado (a tabela
   e table-layout:fixed e a palavra unica nao quebra). Largura pelo titulo, que
   e maior que qualquer conteudo dessas duas colunas; a folga sai do Nome, que
   e a coluna flexivel. */
body.siog-modern .ajs-table-insumos col.c-un{ width:72px!important; }
body.siog-modern .ajs-table-insumos col.c-qtd{ width:100px!important; }
body.siog-modern .ajs-table-insumos col.c-enc{ width:80px!important; }
/* Rede de seguranca: se algum tema aumentar a fonte, o titulo corta com
   reticencias em vez de invadir a vizinha. So nestes dois, que sao palavra
   unica; os demais cabecalhos precisam continuar quebrando em duas linhas. */
body.siog-modern .ajs-table-insumos thead th>a[data-ord="4"],
body.siog-modern .ajs-table-insumos thead th>a[data-ord="7"]{
  display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
body.siog-modern .ajs-table-insumos col.c-val{ width:92px!important; }
body.siog-modern .ajs-table-insumos col.c-total{ width:100px!important; }
body.siog-modern .ajs-table-insumos col.c-peso{ width:46px!important; }
body.siog-modern .ajs-table-insumos col.c-gear{ width:34px!important; }
body.siog-modern .ajs-table-insumos col.c-undo{ width:34px!important; }
body.siog-modern .ajs-table-insumos col.c-gap{ width:12px!important; }
/* Origem de Preço: visível por padrão; o olho do topo põe `sem-col-origem` na
   tabela e a coluna encolhe para zero. NÃO usar display:none aqui — isso
   colapsa a coluna e desloca todos os <col> seguintes. */
body.siog-modern .ajs-table-insumos col.c-origem{ width:96px!important; }
body.siog-modern .ajs-table-insumos.sem-col-origem col.c-origem{ width:0!important; }
body.siog-modern .ajs-table-insumos .col-oculta{
  width:0!important; max-width:0!important; padding-left:0!important;
  padding-right:0!important; border-left:0!important; border-right:0!important;
  overflow:hidden!important; white-space:nowrap!important; font-size:0!important;
}

/* o Nome respira: quebra em duas linhas em vez de esticar a tabela */
body.siog-modern .ajs-table-insumos td.desc{
  white-space:normal!important; word-break:break-word; min-width:0;
}

/* as colunas vazias que separam os blocos, como no sistema de referencia */
body.siog-modern .ajs-table-insumos th.gap,
body.siog-modern .ajs-table-insumos td.gap{
  padding:0!important; border:0!important; background:transparent!important;
}

/* As cores dos dois blocos, iguais às do sistema de referencia. Elas já existiam no
   siog-theme.css e eram anuladas por uma regra de bump deste mesmo arquivo,
   `body.siog-modern table:not(.plan-table) td:not(#siog-x){background:
   transparent!important}` (especificidade 143), que zera o fundo de toda
   célula. Daí o segundo :not(#...) aqui: sobe para 233 e vence, sem afetar
   nenhuma outra tabela. */
body.siog-modern table.ajs-table-insumos:not(#siog-y) th.val-of:not(#siog-x),
body.siog-modern table.ajs-table-insumos:not(#siog-y) td.val-of-cell:not(#siog-x){ background:#eeeeee!important; }
body.siog-modern table.ajs-table-insumos:not(#siog-y) th.val-aj:not(#siog-x),
body.siog-modern table.ajs-table-insumos:not(#siog-y) td.val-aj-cell:not(#siog-x){ background:#fff0bd!important; }
body.siog-modern table.ajs-table-insumos:not(#siog-y) th.val-ut:not(#siog-x),
body.siog-modern table.ajs-table-insumos:not(#siog-y) td.val-ut-cell:not(#siog-x){ background:#cef4e0!important; }
body.siog-modern table.ajs-table-insumos:not(#siog-y) tr.alterado td.val-of-cell:not(#siog-x){ background:#e6e6e6!important; }
body.siog-modern table.ajs-table-insumos:not(#siog-y) tr.alterado td.val-ut-cell:not(#siog-x){ background:#bdeed4!important; }

/* no tema escuro a mesma leitura, com as duas cores rebaixadas: cinza neutro
   no oficial e verde no utilizado, mantendo o texto legível */
body.siog-modern:not(.tema-claro) table.ajs-table-insumos:not(#siog-y) th.val-of:not(#siog-x),
body.siog-modern:not(.tema-claro) table.ajs-table-insumos:not(#siog-y) td.val-of-cell:not(#siog-x){ background:#2b3138!important; }
body.siog-modern:not(.tema-claro) table.ajs-table-insumos:not(#siog-y) th.val-aj:not(#siog-x),
body.siog-modern:not(.tema-claro) table.ajs-table-insumos:not(#siog-y) td.val-aj-cell:not(#siog-x){ background:#4a4022!important; }
body.siog-modern:not(.tema-claro) table.ajs-table-insumos:not(#siog-y) th.val-ut:not(#siog-x),
body.siog-modern:not(.tema-claro) table.ajs-table-insumos:not(#siog-y) td.val-ut-cell:not(#siog-x){ background:#1f3b2e!important; }
body.siog-modern:not(.tema-claro) table.ajs-table-insumos:not(#siog-y) tr.alterado td.val-of-cell:not(#siog-x){ background:#333a42!important; }
body.siog-modern:not(.tema-claro) table.ajs-table-insumos:not(#siog-y) tr.alterado td.val-ut-cell:not(#siog-x){ background:#265041!important; }

/* telas menores: aperta o texto antes de deixar rolar */
@media (max-width:1500px){
  body.siog-modern .ajs-table-insumos{ font-size:.78rem; }
  body.siog-modern .ajs-table-insumos col.c-val{ width:86px!important; }
  body.siog-modern .ajs-table-insumos col.c-qtd{ width:92px!important; }
  body.siog-modern .ajs-table-insumos col.c-total{ width:94px!important; }
}
/* notebook (1366/1440): o layout de Mão de Obra é o mais largo (duas colunas
   de valor por bloco). Sem este degrau o Nome fica com ~50px. */
@media (max-width:1450px){
  body.siog-modern .ajs-table-insumos{ font-size:.74rem; }
  body.siog-modern .ajs-table-insumos col.c-fonte{ width:58px!important; }
  body.siog-modern .ajs-table-insumos col.c-cod{ width:56px!important; }
  body.siog-modern .ajs-table-insumos col.c-un{ width:44px!important; }
  body.siog-modern .ajs-table-insumos col.c-qtd{ width:86px!important; }
  body.siog-modern .ajs-table-insumos col.c-enc{ width:52px!important; }
  body.siog-modern .ajs-table-insumos col.c-val{ width:78px!important; }
  body.siog-modern .ajs-table-insumos col.c-total{ width:90px!important; }
  body.siog-modern .ajs-table-insumos col.c-peso{ width:42px!important; }
  body.siog-modern .ajs-table-insumos col.c-gear{ width:30px!important; }
  body.siog-modern .ajs-table-insumos col.c-undo{ width:30px!important; }
  body.siog-modern .ajs-table-insumos col.c-gap{ width:8px!important; }
  body.siog-modern .ajs-table-insumos td, body.siog-modern .ajs-table-insumos th{
    padding-left:4px!important; padding-right:4px!important;
  }
}
@media (max-width:1200px){
  body.siog-modern .ajs-table-insumos{ font-size:.74rem; }
  body.siog-modern .ajs-table-insumos col.c-fonte{ width:62px!important; }
  body.siog-modern .ajs-table-insumos col.c-val{ width:80px!important; }
  body.siog-modern .ajs-table-insumos col.c-gap{ width:8px!important; }
}
/* Celular: a grade deve rolar na horizontal, não esmagar o Nome até uma
   letra por linha. Notebook continua usando a largura fluida acima. */
@media (max-width:1024px){
  body.siog-modern .ajs-table-wrap{ overflow-x:auto!important; }
  body.siog-modern .ajs-table-insumos{ min-width:1200px!important; }
  body.siog-modern .ajs-table-insumos col.c-nome{ width:240px!important; }
  body.siog-modern .ajs-table-insumos td.desc{
    min-width:240px; word-break:normal; overflow-wrap:break-word;
  }
}

/* =========================================================================
   60. BARRA LATERAL: check do Cronograma e faixa de ícones informativa
   -------------------------------------------------------------------------
   No sistema de referencia o item Cronograma do menu ganha um `fa-check float-right
   success-icon` verde rgb(17,210,107) quando o cronograma está completo, e a
   faixa de ícones ao lado do ID é só informativa: nada clicável, a explicação
   vem no tooltip.
   ========================================================================= */
body.siog-modern .main-sidebar .nav-link .sb-menu-check{
  float:right; margin-left:auto; align-self:center;
  color:#11d26b!important; font-size:.82em;
}
body.siog-modern .main-sidebar .nav-link{ display:flex; align-items:center; }
body.siog-modern .main-sidebar .nav-link > p{ flex:1 1 auto; }
/* a faixa não recebe mais clique: o cursor precisa dizer isso */
body.siog-modern .sb-orc-icons i{ cursor:default!important; }

/* =========================================================================
   61. AJUSTES: a lista não pode ser CORTADA pelo card
   -------------------------------------------------------------------------
   Relato do dono (16/08): "ainda não tá aparecendo no siog todas as
   composições... acabei de ver e só aparece 14". Ele estava certo: o servidor
   mandava 23 linhas, o DOM tinha as 23, e a TELA mostrava 14.

   `siog-ultra.css` dá ao card `max-height:calc(100vh - 1.5rem)` com
   `overflow:hidden`, para a página não rolar e a TABELA rolar por dentro. Só
   que o <form> que envolve a tabela é um item flex com `min-height:auto`, e um
   item flex com min-height auto NÃO encolhe abaixo do próprio conteúdo: ele
   ficava com 983px dentro de um card de 706px e o card cortava 388px, ou seja,
   as nove últimas linhas — sem barra de rolagem nenhuma, então nada indicava
   que havia mais.

   Aqui a cadeia é fechada: o form encolhe (min-height:0) e quem rola é o
   .ajs-table-wrap, como no sistema de referencia.
   ========================================================================= */
body.siog-modern.ajustes-serv-page-body .ajs-card > form:not(.ajs-filter){
  display:flex!important; flex-direction:column!important;
  min-height:0!important; flex:1 1 auto!important;
}
body.siog-modern.ajustes-serv-page-body .ajs-card .ajs-table-wrap{
  min-height:0!important; flex:1 1 auto!important; overflow-y:auto!important;
}

/* =========================================================================
   62. Busca do modal de composição em LISTA (não em caixas)
   -------------------------------------------------------------------------
   Mesmo tratamento que a seção 58 deu ao modal de Etapa/Serviço; faltava o
   modal desta tela (`.ajs-comp-busca`), onde as sugestões vinham em duas
   colunas.
   ========================================================================= */
body.siog-modern .ajs-comp-busca .sb-ac{
  max-height:440px!important; overflow-y:auto!important; z-index:60;
}
/* 29/08/2026 (pedido do dono): este bloco achatava a grade com
   `display:block`, e a busca do modal saia em linha corrida enquanto o resto
   do sistema mostra CODIGO/FONTE | DESCRICAO | UNIDADE | VALOR. Passa a usar a
   mesma receita do `.coef-search`. Vale tambem para os dialogos de troca e
   exclusao, que montam a mesma linha (`siogLinhaBusca`). */
body.siog-modern .ajs-comp-busca .sb-ac>.sb-ac-item,
body.siog-modern .troca-editor-dialog .sb-ac>.sb-ac-item{
  display:grid!important; width:100%!important; box-sizing:border-box;
  grid-template-columns:108px minmax(0,1fr) 62px 108px!important;
  gap:0!important; align-items:stretch!important;
  text-align:left!important; margin:0!important; padding:0!important;
  border:0!important; border-bottom:1px solid var(--id-border)!important;
  border-radius:0!important; background:transparent!important;
  color:var(--id-text)!important; font-size:12.5px!important;
  font-weight:400!important; line-height:1.35!important; cursor:pointer;
}
body.siog-modern .ajs-comp-busca .sb-ac>.sb-ac-item:last-child,
body.siog-modern .troca-editor-dialog .sb-ac>.sb-ac-item:last-child{ border-bottom:0!important; }
body.siog-modern .ajs-comp-busca .sb-ac>.sb-ac-item:hover,
body.siog-modern .ajs-comp-busca .sb-ac>.sb-ac-item.active,
body.siog-modern .ajs-comp-busca .sb-ac>.sb-ac-item:focus,
body.siog-modern .troca-editor-dialog .sb-ac>.sb-ac-item:hover,
body.siog-modern .troca-editor-dialog .sb-ac>.sb-ac-item.active,
body.siog-modern .troca-editor-dialog .sb-ac>.sb-ac-item:focus{ background:var(--id-hover-row)!important; }
body.siog-modern.tema-claro .ajs-comp-busca .sb-ac .sb-ac-f{ color:#1b5fb0!important; }
body.siog-modern .ajs-comp-busca .sb-ac-grade .sb-ac-cod,
body.siog-modern .troca-editor-dialog .sb-ac-grade .sb-ac-cod{
  justify-content:center;text-align:center;padding:7px 10px;
}
body.siog-modern .ajs-comp-busca .sb-ac-grade .sb-ac-desc,
body.siog-modern .ajs-comp-busca .sb-ac-grade .sb-ac-und,
body.siog-modern .ajs-comp-busca .sb-ac-grade .sb-ac-val,
body.siog-modern .troca-editor-dialog .sb-ac-grade .sb-ac-desc,
body.siog-modern .troca-editor-dialog .sb-ac-grade .sb-ac-und,
body.siog-modern .troca-editor-dialog .sb-ac-grade .sb-ac-val{
  padding:7px 10px;border-left:1px solid var(--id-border);
}
body.siog-modern .ajs-comp-busca .sb-ac-grade .sb-ac-und,
body.siog-modern .troca-editor-dialog .sb-ac-grade .sb-ac-und{
  display:flex;align-items:center;justify-content:center;
}
body.siog-modern .ajs-comp-busca .sb-ac-grade .sb-ac-val,
body.siog-modern .troca-editor-dialog .sb-ac-grade .sb-ac-val{
  display:flex;align-items:center;justify-content:flex-end;font-weight:400;
}

/* --- 69. Tela Importar Planilha, estado PROCESSADO (16/08/2026) ------------
   Relato do dono: no escuro os painéis vinham brancos com o texto claro do tema
   por cima. Esta tela nunca tinha sido varrida — todo o bloco `.import-*` do
   siog-theme.css crava cor clara (#fff nos painéis, var(--teal) nos cabeçalhos,
   #111/#333/#444/#666 nos textos, #fafafa/#f4f6f8 nas faixas de tabela) e a
   identidade não tinha nenhuma regra aqui. Passando tudo a token, o claro segue
   idêntico e o escuro fica legível. Verde de passo concluído e vermelho de
   alerta ficam como estão: são semânticos. */

/* A ação inicia uma nova importação em todas as etapas do fluxo. Mantém o
   rótulo em uma linha e usa o verde semântico da identidade, como no SEOBRA. */
body.siog-modern .content-header .toolbar .btn.import-new-btn{
  min-width:153px!important;
  white-space:nowrap!important;
  background:var(--id-surface)!important;
  border-color:var(--id-success)!important;
  color:var(--id-success)!important;
}
body.siog-modern .content-header .toolbar .btn.import-new-btn:hover{
  background:var(--id-success)!important;
  border-color:var(--id-success)!important;
  color:#fff!important;
}
body.siog-modern.tema-claro .content-header .toolbar .btn.import-new-btn{
  border-color:#1d894f!important;
  color:#1d894f!important;
}
body.siog-modern.tema-claro .content-header .toolbar .btn.import-new-btn:hover{
  background:#1d894f!important;
  border-color:#1d894f!important;
  color:#fff!important;
}

body.siog-modern .import-review-config,
body.siog-modern .import-source-panel,
body.siog-modern .import-summary-panel,
body.siog-modern .import-items-panel,
body.siog-modern .import-params-preview{
  background:var(--id-surface)!important;
  border-color:var(--id-border)!important;
}
body.siog-modern .import-title-panel{ border-right-color:var(--id-border)!important; }

body.siog-modern .import-source-panel>header,
body.siog-modern .import-summary-panel>header,
body.siog-modern .import-items-panel>header{
  background:var(--id-accent-solid)!important;
  /* branco, como no cabecalho teal original: o --id-accent-ink e escuro demais
     sobre o acento solido e dava 3,97 de contraste. */
  color:#fff!important;
}

body.siog-modern .import-review-page,
body.siog-modern .orc-import-page .ft-card-body{ color:var(--id-text)!important; }
body.siog-modern .import-source-panel .fontes-readonly b,
body.siog-modern .orc-import-page .fontes-readonly b{ color:var(--id-text-strong)!important; }
body.siog-modern .import-source-panel .fontes-readonly span,
body.siog-modern .import-source-panel .fontes-readonly em,
body.siog-modern .import-source-panel .fontes-readonly .ft-regime,
body.siog-modern .orc-import-page .fontes-readonly span,
body.siog-modern .orc-import-page .fontes-readonly em,
body.siog-modern .orc-import-page .fontes-readonly .ft-regime,
body.siog-modern .import-title-panel .file-name,
body.siog-modern .import-params-grid label{ color:var(--id-muted)!important; }

body.siog-modern .import-title-panel textarea,
body.siog-modern .import-params-grid input,
body.siog-modern .import-params-grid select,
body.siog-modern .import-options-panel .bdi-global input{
  background:var(--id-inset)!important;
  border-color:var(--id-border)!important;
  color:var(--id-text)!important;
}

body.siog-modern .import-summary-panel thead th,
body.siog-modern .import-summary-panel tfoot th,
body.siog-modern .import-params-preview thead th,
body.siog-modern .import-params-preview th.linha{
  background:var(--id-bg-2)!important;
  color:var(--id-text)!important;
}
body.siog-modern .import-summary-panel th,
body.siog-modern .import-summary-panel td,
body.siog-modern .import-params-preview th,
body.siog-modern .import-params-preview td{ border-color:var(--id-border)!important; }

body.siog-modern .import-summary-actions a,
body.siog-modern .import-steps span{
  background:var(--id-surface-2)!important;
  border-color:var(--id-border)!important;
  color:var(--id-text)!important;
}
body.siog-modern .import-summary-actions a:hover{
  background:var(--id-bg-2)!important;
  color:var(--id-text-strong)!important;
}
body.siog-modern .import-steps span.atual{
  background:var(--id-accent-solid)!important;
  border-color:var(--id-accent-solid)!important;
  color:var(--id-accent-ink)!important;
}
body.siog-modern .import-progress .step.muted{
  background:var(--id-surface-2)!important;
  color:var(--id-muted)!important;
}
body.siog-modern .import-params-aviso{
  background:var(--id-bg-2)!important;
  border-color:var(--id-border)!important;
  color:var(--id-text)!important;
}

/* --- 70. Linha de SERVICO da grade um pouco menor (16/08/2026) ------------
   Pedido do dono: "diminui um pouco a letra dos servicos, em toda a linha".
   No desktop a .plan-table nao usa os 12px do tema: a secao 51 poe
   font-size:inherit nas duas faixas >=768px e ela herda 14px do ancestral. A
   ETAPA fica nos 14px, porque e ela que ancora a leitura da arvore; so a linha
   de servico cai para 12,5px (-11%). O <small> da fonte e 0,8em, entao desce
   junto. Abaixo de 768px nada muda: la o tema ja crava 9px na tabela e esta
   regra nao entra. */
@media (min-width:768px){
  body.siog-modern table.plan-table tr.plan-row-servico > td{
    font-size:12.5px!important;
  }
}

/* =========================================================================
   63. BUSCAR do editor de coeficientes: caixa de sugestões
   -------------------------------------------------------------------------
   `.coef-search` é um grid de 2 colunas com 38px de altura; a lista precisa
   sair do fluxo para não esticar a barra (mesmo desenho das demais buscas).
   ========================================================================= */
body.siog-modern .coef-search{ position:relative; }
body.siog-modern .coef-search .sb-ac{
  position:absolute; top:38px; left:86px; right:0; z-index:60;
  max-height:440px; overflow-y:auto;
}
body.siog-modern .coef-search .sb-ac>.sb-ac-item{
  display:grid!important; width:100%!important; box-sizing:border-box;
  grid-template-columns:108px minmax(0,1fr) 62px 108px!important;
  gap:0!important;align-items:stretch!important;
  text-align:left!important; margin:0!important; padding:0!important;
  border:0!important; border-bottom:1px solid var(--id-border)!important;
  border-radius:0!important; background:transparent!important;
  color:var(--id-text)!important; font-size:12.5px!important;
  font-weight:400!important;line-height:1.35!important; cursor:pointer;
}
body.siog-modern .coef-search .sb-ac>.sb-ac-item:last-child{ border-bottom:0!important; }
/* realce de linha, nao o fundo escuro: sobre a superficie do popup o
   --id-bg-2 fica MAIS escuro que o proprio item e o selecionado somia */
body.siog-modern .coef-search .sb-ac>.sb-ac-item:hover,
body.siog-modern .coef-search .sb-ac>.sb-ac-item.active,
body.siog-modern .coef-search .sb-ac>.sb-ac-item:focus{ background:var(--id-hover-row)!important; }
body.siog-modern.tema-claro .coef-search .sb-ac .sb-ac-f{ color:#1b5fb0!important; }
body.siog-modern .coef-search .sb-ac-grade .sb-ac-cod{
  justify-content:center;text-align:center;padding:7px 10px;
}
body.siog-modern .coef-search .sb-ac-grade .sb-ac-desc,
body.siog-modern .coef-search .sb-ac-grade .sb-ac-und,
body.siog-modern .coef-search .sb-ac-grade .sb-ac-val{
  padding:7px 10px;border-left:1px solid var(--id-border);
}
body.siog-modern .coef-search .sb-ac-grade .sb-ac-und{
  display:flex;align-items:center;justify-content:center;
}
body.siog-modern .coef-search .sb-ac-grade .sb-ac-val{
  display:flex;align-items:center;justify-content:flex-end;font-weight:400;
}


/* =========================================================================
   64. Marcadores: cabecalho e resultados centralizados, linha mais baixa
   -------------------------------------------------------------------------
   Pedido do dono 16/08. Antes: linha de 50px e cabecalho todo a esquerda
   (ate as colunas de acao). Agora: tudo centralizado e linha em 33px, que e
   2/3 da altura anterior.

   PASTAS fica de fora (`:not(.pasta-tree-table)`): ela usa o mesmo template,
   mas desenha uma ARVORE, e centralizar o nome apagaria a indentacao que
   mostra a hierarquia.
   ========================================================================= */
body.siog-modern .cad-simple-table-card .tbl-orc:not(.pasta-tree-table) thead th,
body.siog-modern .cad-simple-table-card .tbl-orc:not(.pasta-tree-table) tbody td{
  text-align:center!important;
  vertical-align:middle!important;
}
/* a linha inteira em 2/3: 50px -> 33px. O padding cai de 8px para 3px e o
   line-height fecha o restante; sem mexer no tamanho da fonte, que continua
   legivel em 12,5px. */
body.siog-modern .cad-simple-table-card .tbl-orc:not(.pasta-tree-table) tbody tr{
  height:33px!important;
}
body.siog-modern .cad-simple-table-card .tbl-orc:not(.pasta-tree-table) tbody td{
  padding:3px 8px!important;
  line-height:1.25!important;
}
body.siog-modern .cad-simple-table-card .tbl-orc:not(.pasta-tree-table) thead th{
  padding:5px 8px!important;
}
/* o badge do titulo (URGENTE, EM ANDAMENTO...) encolhe junto, senao e ele que
   passa a mandar na altura da linha */
body.siog-modern .cad-simple-table-card .tbl-orc:not(.pasta-tree-table) tbody td .badge{
  padding:2px 8px!important;
  line-height:1.3!important;
  display:inline-block;
}
/* os icones de acao ficam centrados na linha mais baixa */
body.siog-modern .cad-simple-table-card .tbl-orc:not(.pasta-tree-table) tbody td .ic-link,
body.siog-modern .cad-simple-table-card .tbl-orc:not(.pasta-tree-table) tbody td .ic-mudo,
body.siog-modern .cad-simple-table-card .tbl-orc:not(.pasta-tree-table) tbody td .btn-link,
body.siog-modern .cad-simple-table-card .tbl-orc:not(.pasta-tree-table) tbody td button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  line-height:1;
  /* era 32px de altura fixa, e era ELE que segurava a linha em 40px. Em 27px
     a linha fecha os 33px pedidos. Fica abaixo do alvo de toque de 44px que se
     recomenda para dedo, mas esta e uma tela de escritorio e o pedido do dono
     e a linha mais baixa. */
  height:27px!important;
  min-height:0!important;
  width:27px!important;
  padding:0!important;
}

/* o Excluir vive dentro de um <form>, e era ELE (via button.btn-link de 32px)
   que segurava a linha depois que os demais ja tinham cedido */
body.siog-modern .cad-simple-table-card .tbl-orc:not(.pasta-tree-table) tbody td form{
  display:inline-flex;
  align-items:center;
  margin:0!important;
  line-height:1;
}

/* --- 71. "Remover Todas" nao pode ESVAZIAR a lista de escolha (16/08/2026) --
   Relato do dono: ao clicar em Remover Todas as fontes DESAPARECERAM da coluna
   da esquerda, em vez de apenas desmarcar. Causa: o JS chama
   postarFontesSemNavegar(form, true, removerTodas) e o terceiro argumento poe a
   classe .fontes-preview-empty TAMBEM no picker; o tema entao faz
   .fontes-picker.fontes-preview-empty .fontes-check{display:none}
   (siog-theme.css:3564), escondendo todo item da lista e deixando so os
   cabecalhos de grupo. A classe e desnecessaria no picker: a resposta do POST ja
   remonta a lista com fontes_usadas vazio, ou seja, tudo desmarcado. Aqui ela
   volta a aparecer; a regra irma da caixa da direita, que so esconde o texto
   "Nenhuma fonte no orcamento", fica como esta. */
body.siog-modern .fontes-picker.fontes-preview-empty .fontes-check{
  display:flex!important;
}

/* ===================== 72. Editor de coeficientes: cabecalho continuo =======
   Medido no sistema de referencia em 17/08 (orcamento 1469497, item 3.1): a faixa turquesa do
   grupo e a linha de rotulos das colunas sao UMA peca so. No SIOG a linha de
   rotulos e um <thead> real (o cabecalho da equipe tem duas linhas e nao cabe
   no grid da faixa), e a identidade clareia todo th por
   `body.siog-modern table:not(.plan-table) th:not(#siog-x)`, o que partia a
   peca em duas.
   Escopo proposital: SO as tabelas do editor de coeficientes. As demais
   tabelas do sistema seguem com o cabecalho claro da identidade. */
body.siog-modern .coef-editor .coef-table:not(.coef-incidence-table) thead th:not(#siog-x):not(#siog-y){
  /* a regra da linha 835 usa !important em background e background-image,
     entao aqui tambem precisa */
  background:#0093a7!important;
  background-image:none!important;
  color:#fff!important;
  border-color:#0093a7!important;
}
body.siog-modern .coef-editor .coef-table-equipe thead tr:first-child th:not(#siog-x):not(#siog-y),
body.siog-modern .coef-editor .coef-table-momento thead tr:first-child th:not(#siog-x):not(#siog-y){
  border-bottom-color:rgba(255,255,255,.35);
}

/* ===================== 73. Transporte na composicao propria ================
   Carga/descarga e momento de transporte, no desenho do sistema de referencia: botoes na
   linha do servico, duas secoes proprias e o modal "Itens de Transporte".
   ========================================================================= */
.comp-item-transp-acoes{display:flex;gap:8px;margin-top:6px;flex-wrap:wrap}
.comp-item-transp-bt{
  border:1px solid #b9c6cd;background:#eef3f5;color:#2b3a41;
  border-radius:14px;padding:2px 12px;font-size:11px;line-height:20px;
  cursor:pointer;white-space:nowrap;
}
.comp-item-transp-bt:hover{border-color:#0093a7;color:#0093a7;background:#e3eef1}
body.siog-modern:not(.tema-claro) .comp-item-transp-bt{
  background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.22);
  color:rgba(255,255,255,.86);
}
body.siog-modern:not(.tema-claro) .comp-item-transp-bt:hover{
  border-color:#37c6d8;color:#37c6d8;
}
.transp-perna{
  display:inline-block;margin:0 10px 2px 0;font-size:11px;white-space:nowrap;
}
.transp-perna b{
  display:inline-block;min-width:22px;margin-right:4px;
  color:var(--sb-acento,#0093a7);
}
body.siog-modern:not(.tema-claro) .transp-perna b{color:#37c6d8}
.transp-dialog{width:min(980px,94vw)}
.transp-dialog .transp-servico{
  font-size:15px;font-weight:600;margin:0 0 14px;line-height:1.35;
}
.transp-dialog .transp-busca{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.transp-dialog .transp-busca-rotulo{font-size:12px;font-weight:600;white-space:nowrap}
.transp-dialog .transp-busca input{
  flex:1;padding:8px 12px;border:1px solid var(--sb-borda,#cfd8dc);border-radius:4px;
}
.transp-dialog .transp-vazio{
  padding:14px 2px;font-size:12px;opacity:.75;
}
.transp-dialog .transp-tabela{width:100%}
.transp-dialog .transp-tabela .transp-achado td{opacity:.9}
.transp-dialog .transp-coef{max-width:230px;margin-top:12px}
body.siog-modern:not(.tema-claro) .transp-dialog .transp-busca input{
  background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.22);
  color:rgba(255,255,255,.9);
}

/* ===================== 74. Lista suspensa de busca (desenho do sistema de referencia) =====
   Uma subdivisao para TODAS as buscas: primeira coluna com o CODIGO em cima e
   a FONTE embaixo, depois descricao, unidade e valor. O miolo e montado por
   `siogLinhaBusca` (siog-identidade.js); aqui fica so o desenho.
   ========================================================================= */
.sb-ac-item.sb-ac-grade{
  display:grid;
  grid-template-columns:108px minmax(0,1fr) 62px 108px;
  gap:10px;align-items:center;padding:6px 10px;
}
.sb-ac-grade .sb-ac-cod{display:flex;flex-direction:column;line-height:1.15;min-width:0}
.sb-ac-grade .sb-ac-cod b{font-size:12px;font-weight:700}
.sb-ac-grade .sb-ac-cod small{font-size:9.5px;letter-spacing:.3px;opacity:.7;text-transform:uppercase}
.sb-ac-grade .sb-ac-desc{
  font-size:11.5px;line-height:1.3;min-width:0;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.sb-ac-grade .sb-ac-und{text-align:center;font-size:11px;opacity:.85;white-space:nowrap}
.sb-ac-grade .sb-ac-val{text-align:right;font-size:11.5px;font-weight:600;white-space:nowrap}
/* mesma primeira coluna dentro das tabelas do modal de transporte */
.sb-ac-cod-cel{line-height:1.15}
.sb-ac-cod-cel b{display:block;font-size:12px}
.sb-ac-cod-cel small{display:block;font-size:9.5px;letter-spacing:.3px;opacity:.7;text-transform:uppercase}
body.siog-modern:not(.tema-claro) .sb-ac-grade .sb-ac-cod small,
body.siog-modern:not(.tema-claro) .sb-ac-cod-cel small{opacity:.6}


/* Nos formulários Adicionar e Editar Etapa/Serviço, a busca usa a mesma
   grade das composições: CÓDIGO/FONTE | DESCRIÇÃO | UNIDADE | VALOR. A regra
   antiga da seção 58 continua valendo para sugestões legadas, mas não achata
   mais as linhas geradas por siogLinhaBusca. */
body.siog-modern :is(.ai-servico,.item-edit-composition) .sb-ac>.sb-ac-item.sb-ac-grade{
  display:grid!important;
  grid-template-columns:108px minmax(0,1fr) 62px 108px!important;
  gap:0!important;
  align-items:stretch!important;
  width:100%!important;
  box-sizing:border-box!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  border-bottom:1px solid var(--id-border)!important;
  border-radius:0!important;
  background:transparent!important;
  color:var(--id-text)!important;
  text-align:left!important;
}
body.siog-modern :is(.ai-servico,.item-edit-composition) .sb-ac>.sb-ac-item.sb-ac-grade:last-child{
  border-bottom:0!important;
}
body.siog-modern :is(.ai-servico,.item-edit-composition) .sb-ac>.sb-ac-item.sb-ac-grade:hover,
body.siog-modern :is(.ai-servico,.item-edit-composition) .sb-ac>.sb-ac-item.sb-ac-grade:focus{
  background:var(--id-hover-row)!important;
}
body.siog-modern :is(.ai-servico,.item-edit-composition) .sb-ac>.sb-ac-item.sb-ac-grade.active,
body.siog-modern :is(.ai-servico,.item-edit-composition) .sb-ac>.sb-ac-item.sb-ac-grade[aria-selected="true"]{
  background:var(--id-selection-bg)!important;
  color:var(--id-selection-text)!important;
  box-shadow:inset 3px 0 0 var(--id-selection-indicator)!important;
}
body.siog-modern :is(.ai-servico,.item-edit-composition) .sb-ac-grade .sb-ac-cod{
  justify-content:center;
  padding:7px 10px;
  text-align:center;
}
body.siog-modern :is(.ai-servico,.item-edit-composition) .sb-ac-grade .sb-ac-desc,
body.siog-modern :is(.ai-servico,.item-edit-composition) .sb-ac-grade .sb-ac-und,
body.siog-modern :is(.ai-servico,.item-edit-composition) .sb-ac-grade .sb-ac-val{
  padding:7px 10px;
  border-left:1px solid var(--id-border);
}
body.siog-modern :is(.ai-servico,.item-edit-composition) .sb-ac-grade .sb-ac-und{
  display:flex;
  align-items:center;
  justify-content:center;
}
body.siog-modern :is(.ai-servico,.item-edit-composition) .sb-ac-grade .sb-ac-val{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  font-weight:400;
}
@media (max-width:620px){
  body.siog-modern :is(.ai-servico,.item-edit-composition) .sb-ac>.sb-ac-item.sb-ac-grade{
    grid-template-columns:74px minmax(0,1fr) 48px 96px!important;
  }
  body.siog-modern :is(.ai-servico,.item-edit-composition) .sb-ac-grade :is(.sb-ac-cod,.sb-ac-desc,.sb-ac-und,.sb-ac-val){
    padding:6px!important;
  }
}

/* ===================== 75. Erros do Orcamento: texto menor e colunas
   FONTE/CODIGO sem esprememento (19/08/2026) =============================
   A grade nascia com col.err-fonte e col.err-codigo travadas em 50px
   (siog-ultra.css, secao body.siog-modern.erros-page). Com padding de 10px de
   cada lado sobravam 28px uteis: "SINAPI" e "00039393" quebravam em DUAS
   linhas e a linha inteira ia de 33px (altura de projeto) para 47px, enquanto
   a coluna de descricao ao lado ficava com 776px ociosos.
   Aqui o texto encolhe e a largura extra sai da descricao, que segue folgada.
   FONTE leva nowrap (a maior sigla em uso e "PROPRIA", 7 caracteres). CODIGO
   fica SEM nowrap de proposito: a largura cobre o maior codigo real do banco
   ("105548_ADP_01", 13 caracteres), mas se algum dia vier um maior e melhor
   que ele quebre a que seja cortado - codigo truncado engana quem le. */

body.siog-modern.erros-page .erros-online-table{font-size:11px}
body.siog-modern.erros-page .erros-online-table th{font-size:9px!important}

/* o siog-theme.css prende estas duas em 13px; aqui elas voltam a acompanhar
   o tamanho da tabela */
body.siog-modern.erros-page .erros-online-table :is(td:nth-child(2),.num){font-size:inherit}

body.siog-modern.erros-page .erros-online-table :is(th,td){padding:4px 8px}

body.siog-modern.erros-page .erros-online-table col.err-fonte{width:64px}
body.siog-modern.erros-page .erros-online-table col.err-codigo{width:108px}
body.siog-modern.erros-page .erros-online-table td:first-child{white-space:nowrap}

/* o texto de apoio e as abas acompanham a reducao */
body.siog-modern.erros-page .erros-help{font-size:12px}
body.siog-modern.erros-page .erros-tabs :is(a,span){font-size:11px}

@media (min-width:1600px){
  body.siog-modern.erros-page .erros-online-table{font-size:12px}
  body.siog-modern.erros-page .erros-online-table th{font-size:10px!important}
}

/* ===================== 76. Caixa de campo com UM tom so (19/08/2026) =======
   O chip de rotulo ("Filtro:", "Unidade:", "Grupo:") vinha de --id-bg-2 e o
   controle ao lado, dentro da MESMA caixa, de --id-inset. Dois tons quase
   iguais convivendo: no escuro #0d1119 contra #0e1420, no claro #eaeef5
   contra #f2f5fa. De perto a caixa parece manchada, e era o que o dono via.
   A origem e o bloco "22m. Chips de rotulo dos filtros" (linhas ~1127-1147),
   que herdou o #f4f4f4 do legado.

   Aqui rotulo e controle passam a dividir o MESMO token, --id-inset, que ja e
   a superficie de campo do sistema. Um valor por tema, nunca o mesmo nos dois:
   #0e1420 no escuro, #f2f5fa no claro.

   O botao do combo de Grupo entra junto: ele vinha de --id-surface (#ffffff no
   claro, #141a25 no escuro) e era um TERCEIRO tom na mesma fileira de campos.

   Fora deste patch de proposito: .ajt-card-footer, .bdi-card-pager,
   .orc-info-title, .prop-import-*, .cfp-selected-name e .fontes-aux-label.
   Estao no mesmo bloco de origem, mas nao sao chip de campo - sao outros
   componentes e pedem conferencia propria. */

body.siog-modern .cad-field > span,
body.siog-modern .orc-field > span,
body.siog-modern .ins-field > span,
body.siog-modern .bdi-filter-field span,
body.siog-modern .enc-search-filter label,
body.siog-modern .fonte-table-grid label > span,
body.siog-modern .proprios-body .fonte-table-grid label > span,
body.siog-modern .ins-field .ins-group-trigger{
  background:var(--id-inset)!important;
}

/* BUG-033: o rodape do dialogo de BDI precisa ficar sempre visivel,
   inclusive quando o dialogo e embutido na casca de modal. */
body.siog-modern .bdi-online-modal-panel{display:flex!important;flex-direction:column!important}
body.siog-modern .bdi-online-modal-form{flex:1 1 auto!important;min-height:0!important}
body.siog-modern .bdi-online-modal-actions{position:sticky!important;bottom:0!important;z-index:2!important;background:var(--id-surface,#fff)!important}


/* --- P1 (20/08/2026): marca de erro na lista de Insumos Proprios -----------
   A coluna 1 mostra o icone de TIPO; quando o item esta incompleto ela vira o
   triangulo de alerta. Usa o token de aviso que ja existe nos dois temas, para
   nao entrar cor nova na identidade. */
body.siog-modern .prop-item-alerta{color:var(--id-warning)!important}


/* ===================== 77. Tabelas: titulos e resultados alinhados =========
   Pedido do dono, 20/08/2026.

   Todos os titulos de coluna ficam no centro horizontal e vertical. Nas
   linhas de resultado, datas, fontes, codigos, unidades, categorias, valores
   e acoes tambem ficam centralizados nos dois eixos. A unica excecao e o
   conteudo textual/descritivo (Nome, Titulo, Descricao, Etapa, Servico,
   Objeto etc.), que o siog-identidade.js marca com .siog-col-descritiva e
   conserva alinhado a esquerda para continuar legivel quando quebra linha.

   A classe do body so entra depois que o JS classifica as colunas; se o JS
   falhar, o alinhamento anterior permanece em vez de centralizar descricoes
   por engano. Tfoot fica fora: totais e assinaturas mantem o desenho proprio. */
body.siog-modern.siog-resultados-alinhados table th,
body.siog-modern.siog-resultados-alinhados table tbody td{
  text-align:center!important;
  vertical-align:middle!important;
}
/* Links de ordenacao podem ser flex e ocupar toda a largura do TH. Nesse
   caso, text-align no TH nao move o item flex; o proprio link precisa
   centralizar seu conteudo. Botoes seguem a mesma regra quando usados como
   titulo/controle de coluna. */
body.siog-modern.siog-resultados-alinhados table th > :is(a,button){
  text-align:center!important;
  justify-content:center!important;
  align-items:center!important;
}
/* Tabelas compactas em card sem padding acrescentam recuo apenas na borda
   externa. Igualamos o lado oposto do primeiro/ultimo TH para que o titulo
   fique no centro geometrico da celula, nao apenas da caixa de conteudo. */
body.siog-modern.siog-resultados-alinhados .card-body.p-0 > table.table > thead > tr > th:first-child{
  padding-left:.3rem!important;
}
body.siog-modern.siog-resultados-alinhados .card-body.p-0 > table.table > thead > tr > th:last-child{
  padding-right:.3rem!important;
}
body.siog-modern.siog-resultados-alinhados table tbody .siog-col-descritiva{
  text-align:left!important;
}
/* A configuracao de arredondamento tem um ID antigo que dava mais peso ao
   alinhamento esquerdo da coluna 4. O conteudo continua descritivo a esquerda,
   mas o titulo obedece a regra global como todos os outros. */
body.siog-modern.siog-resultados-alinhados #pref-round-table th:nth-child(4){
  text-align:center!important;
}

/* ===================== 78. Menus do topo com estado habilitado evidente ===
   Relato do dono, 21/08/2026: depois de cancelar o dialogo de Fontes &
   Tabelas, Insumos & Composicoes, Orcamentos e Cadastros pareciam bloqueados.

   O cancelamento remove corretamente o backdrop; a aparencia vinha da regra
   global que pintava tambem estes tres comandos primarios com
   --id-frame-muted. O tom atenuado fica reservado a um bloqueio semantico
   real. Comandos habilitados usam o texto forte da moldura em todas as telas
   e nos dois temas. */
body.siog-modern .main-header a.top-menu.top-menu.top-menu:not([aria-disabled="true"]){
  color:var(--id-frame-text-strong)!important;
  opacity:1!important;
  cursor:pointer!important;
}

body.siog-modern .main-header a.top-menu.top-menu.top-menu[aria-disabled="true"]{
  color:var(--id-frame-muted)!important;
  opacity:.58!important;
  cursor:not-allowed!important;
}

/* ===================== 79. Fontes & Tabelas: um unico desenho =============
   Pedido do dono, 21/08/2026. O dialogo aberto em `/insumos` e o modelo:
   caixa centralizada na area util (sem cobrir a navegacao lateral), 678px de
   altura no desktop, arvore em tres colunas, painel selecionado ocupando toda
   a altura e rodape de 86px. Os demais pontos abriam o mesmo assunto na casca
   `#sb-modal`, mas quase em tela cheia, com duas colunas e um vazio grande.

   As regras abaixo levam SOMENTE o picker compartilhado `.sb-modal-fontes`
   para as medidas do modelo. O modal original de `/insumos` nao e alterado.
   Os botoes de remover por linha continuam visiveis porque sao uma funcao real
   do picker compartilhado, mesmo sem equivalente no modelo da listagem. */
body.siog-modern .sb-modal-backdrop.sb-modal-fontes:not(.sb-modal-maximizada){
  align-items:flex-start;
  justify-content:center;
  padding:calc(var(--ultra-topbar-h,45px) + 10px) 12px 10px calc(268px + 12px);
}
body.siog-modern.sidebar-collapse .sb-modal-backdrop.sb-modal-fontes:not(.sb-modal-maximizada){
  padding-left:86px;
}
body.siog-modern .sb-modal-fontes:not(.sb-modal-maximizada) > .sb-modal{
  width:min(1440px,calc(100vw - 292px))!important;
  min-width:0!important;
  height:678px!important;
  max-height:calc(100vh - var(--ultra-topbar-h,45px) - 20px)!important;
  overflow:hidden;
}
body.siog-modern.sidebar-collapse .sb-modal-fontes:not(.sb-modal-maximizada) > .sb-modal{
  width:min(1440px,calc(100vw - 98px))!important;
}

/* Barra de titulo: as mesmas medidas do `.ft-modal-head` do modelo. */
body.siog-modern .sb-modal-fontes .sb-modal-head{
  height:58px;
  flex:0 0 58px;
  gap:0;
  padding:0 16px;
  font-size:25px;
}
body.siog-modern .sb-modal-fontes .sb-modal-max{
  display:inline-flex!important;
  align-items:center;
  justify-content:center;
  flex:0 0 34px;
  width:34px;
  height:34px;
  margin-left:auto;
  padding:0;
  color:var(--id-muted)!important;
  font-size:14px;
}
body.siog-modern .sb-modal-fontes .sb-modal-x{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex:0 0 34px;
  width:34px;
  height:34px;
  margin-left:5px;
  padding:0;
  color:var(--id-muted)!important;
  font-size:42px;
}

/* A altura deixa de depender de `100vh`: corpo 532px + rodape 86px. */
body.siog-modern .sb-modal-fontes .sb-modal-inline{
  height:auto!important;
  min-height:0!important;
  flex:1 1 auto!important;
  overflow:hidden;
}
body.siog-modern .sb-modal-fontes .cfp-real{
  height:100%;
  min-height:0;
  overflow:hidden;
  font-size:14px;
}
body.siog-modern .sb-modal-fontes :is(.cfp-real,.cfp-tree-panel,.cfp-selected-panel,.cfp-footer){
  background:var(--id-surface)!important;
  color:var(--id-text)!important;
}
body.siog-modern .sb-modal-fontes .cfp-footer{border-color:var(--id-border)!important}
body.siog-modern .sb-modal-fontes :is(.cfp-tree-panel,.cfp-selected-panel){
  border-color:var(--id-border)!important;
}
body.siog-modern .sb-modal-fontes .cfp-filter-row label{
  background:var(--id-bg-2)!important;
  color:var(--id-text-strong)!important;
  border-color:var(--id-border)!important;
}
body.siog-modern .sb-modal-fontes .cfp-filter-row input{
  background:var(--id-inset)!important;
  color:var(--id-text)!important;
}
body.siog-modern .sb-modal-fontes :is(.cfp-comp-space,.cfp-select-space,.cfp-empty){
  color:var(--id-text)!important;
}
body.siog-modern .sb-modal-fontes .cfp-real-body{
  height:calc(100% - 86px);
  min-height:0;
  grid-template-columns:332px minmax(0,1fr);
  gap:16px;
  padding:24px 32px 18px;
}
body.siog-modern .sb-modal-fontes .cfp-tree-panel{
  height:100%;
  min-height:0;
}
body.siog-modern .sb-modal-fontes .cfp-tree{
  padding:12px 14px 4px 16px;
}
body.siog-modern .sb-modal-fontes .cfp-group{
  margin:0;
  padding:0;
  border-bottom:1px solid var(--id-border);
}
body.siog-modern .sb-modal-fontes .cfp-group-title{
  height:30px;
  padding:8px 0 4px;
  color:var(--id-text)!important;
  font-size:10px;
  font-weight:700;
  line-height:15px;
}
body.siog-modern .sb-modal-fontes .cfp-options{
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:0 3%;
  padding:0;
}
body.siog-modern .sb-modal-fontes .cfp-options .cfp-fonte-opt{
  height:28px;
  min-height:28px;
  align-items:center;
  gap:6px;
  color:var(--id-text)!important;
  font-size:11px;
  font-weight:700;
  line-height:16.5px;
}
body.siog-modern .sb-modal-fontes .cfp-options .cfp-fonte-opt input{
  flex:0 0 14px;
  width:14px;
  height:14px;
  margin:0;
}
body.siog-modern .sb-modal-fontes .cfp-options .cfp-fonte-opt span{
  overflow-wrap:normal;
  word-break:normal;
}
body.siog-modern .sb-modal-fontes .cfp-add-all{
  display:inline-flex;
  justify-content:center;
  height:38px;
  margin:8px 16px;
  gap:6px;
  font-size:14px;
  font-weight:400;
}

/* O painel da direita passa a preencher o corpo, como no modelo. */
body.siog-modern .sb-modal-fontes .cfp-selected-panel{
  position:relative;
  height:100%;
  min-height:0;
  align-self:stretch;
  padding:16px 16px 64px;
  overflow:auto;
}
body.siog-modern .sb-modal-fontes .cfp-selected-list{gap:0}
body.siog-modern .sb-modal-fontes .cfp-selected-row,
body.siog-modern .sb-modal-fontes .cfp-selected-row.cfp-propria{
  height:50px;
  min-height:50px;
  grid-template-columns:197px 40px 84px 169px minmax(196px,1fr) 48px;
  gap:0;
  align-items:center;
  border-bottom:1px solid var(--id-border);
}
body.siog-modern .sb-modal-fontes .cfp-selected-name{
  height:38px;
  background:var(--id-surface)!important;
  border-right:0;
  color:var(--id-text)!important;
  font-size:13px;
}
body.siog-modern .sb-modal-fontes .cfp-add-version{
  width:40px;
  height:38px;
  border-radius:0;
}
body.siog-modern .sb-modal-fontes .cfp-uf{
  width:calc(100% - 16px);
  margin-left:16px;
}
body.siog-modern .sb-modal-fontes .cfp-comp{
  width:calc(100% - 16px);
  margin-left:16px;
}
body.siog-modern .sb-modal-fontes .cfp-deson,
body.siog-modern .sb-modal-fontes .cfp-no-deson,
body.siog-modern .sb-modal-fontes .cfp-deson-space{
  margin-left:16px;
  font-size:12px;
}
body.siog-modern .sb-modal-fontes .cfp-trash{margin-left:16px}

/* PROPRIA/estatica nao tem `+`: o nome ocupa a largura combinada do modelo. */
body.siog-modern .sb-modal-fontes .cfp-selected-row.cfp-propria .cfp-selected-name,
body.siog-modern .sb-modal-fontes .cfp-selected-row.cfp-estatica .cfp-selected-name{
  grid-column:1/3;
  border-right:1px solid var(--id-border-strong);
}
body.siog-modern .sb-modal-fontes .cfp-selected-row.cfp-propria .cfp-plus-space,
body.siog-modern .sb-modal-fontes .cfp-selected-row.cfp-estatica .cfp-plus-space{
  display:none;
}
body.siog-modern .sb-modal-fontes .cfp-selected-row.cfp-propria .cfp-select-space,
body.siog-modern .sb-modal-fontes .cfp-selected-row.cfp-estatica .cfp-select-space{
  grid-column:3;
  margin-left:16px;
}
body.siog-modern .sb-modal-fontes .cfp-selected-row.cfp-propria .cfp-comp-space,
body.siog-modern .sb-modal-fontes .cfp-selected-row.cfp-estatica .cfp-comp-space{
  grid-column:4;
  margin-left:16px;
  border:0;
  background:transparent;
}
body.siog-modern .sb-modal-fontes .cfp-selected-row.cfp-propria .cfp-deson-space,
body.siog-modern .sb-modal-fontes .cfp-selected-row.cfp-estatica .cfp-deson-space{grid-column:5}
body.siog-modern .sb-modal-fontes .cfp-selected-row.cfp-propria .cfp-trash,
body.siog-modern .sb-modal-fontes .cfp-selected-row.cfp-estatica .cfp-trash{grid-column:6}

body.siog-modern .sb-modal-fontes .cfp-remove-wrap{margin-top:12px}
body.siog-modern .sb-modal-fontes .cfp-remove-all{
  display:inline-flex;
  justify-content:center;
  width:238px;
  height:38px;
  gap:6px;
  font-size:15px;
  font-weight:400;
}
body.siog-modern .sb-modal-fontes .cfp-footer{
  height:86px;
  flex:0 0 86px;
  gap:14px;
  padding:12px 0;
}
body.siog-modern .sb-modal-fontes .cfp-footer-ok,
body.siog-modern .sb-modal-fontes .cfp-footer-cancel{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:220px;
  height:38px;
  gap:6px;
  font-size:14px;
  font-weight:400;
}
body.siog-modern .sb-modal-fontes .cfp-footer :is(span,i){
  padding:0;
  text-align:inherit;
}

/* O maximizar do modelo continua funcional na casca compartilhada. */
body.siog-modern .sb-modal-fontes.sb-modal-maximizada{padding:8px!important}
body.siog-modern .sb-modal-fontes.sb-modal-maximizada > .sb-modal{
  width:calc(100vw - 16px)!important;
  max-width:none!important;
  height:calc(100vh - 16px)!important;
  max-height:none!important;
}
body.siog-modern .sb-modal-fontes.sb-modal-maximizada .sb-modal-max::before{content:"\f066"}

@media (max-width:1600px){
  body.siog-modern .sb-modal-fontes .cfp-real-body{
    grid-template-columns:300px minmax(0,1fr);
    padding-left:24px;
    padding-right:24px;
  }
  body.siog-modern .sb-modal-fontes .cfp-selected-row,
  body.siog-modern .sb-modal-fontes .cfp-selected-row.cfp-propria{
    grid-template-columns:170px 40px 74px 156px minmax(170px,1fr) 42px;
  }
  body.siog-modern .sb-modal-fontes :is(.cfp-uf,.cfp-comp){
    width:calc(100% - 10px);
    margin-left:10px;
  }
  body.siog-modern .sb-modal-fontes :is(.cfp-deson,.cfp-no-deson,.cfp-deson-space,.cfp-trash){
    margin-left:10px;
  }
}

/* Em telas estreitas, preserva a adaptacao vertical existente do picker. */
@media (max-width:1199.98px){
  body.siog-modern .sb-modal-backdrop.sb-modal-fontes:not(.sb-modal-maximizada){padding:10px}
  body.siog-modern .sb-modal-fontes:not(.sb-modal-maximizada) > .sb-modal{
    width:calc(100vw - 20px)!important;
    height:calc(100vh - 20px)!important;
    max-height:none!important;
  }
  body.siog-modern .sb-modal-fontes .cfp-real-body{
    height:calc(100% - 62px);
    display:flex;
    flex-direction:column;
    gap:12px;
    padding:12px;
    overflow:auto;
  }
  body.siog-modern .sb-modal-fontes .cfp-tree-panel{
    width:100%;
    height:auto;
    min-height:300px;
    flex:0 0 auto;
  }
  body.siog-modern .sb-modal-fontes .cfp-selected-panel{
    width:100%;
    height:auto;
    min-height:320px;
    flex:0 0 auto;
  }
  body.siog-modern .sb-modal-fontes .cfp-footer{
    height:62px;
    flex-basis:62px;
    gap:10px;
    padding:0 12px;
  }
  body.siog-modern .sb-modal-fontes .cfp-footer-ok,
  body.siog-modern .sb-modal-fontes .cfp-footer-cancel{
    width:min(220px,calc(50% - 5px));
  }
}

/* ===================== 80. Ajustes > Insumos: texto compacto nas linhas ===
   Pedido do dono, 21/08/2026. A coluna Fonte ja usava 10,5px e foi tomada
   como referencia para os demais resultados da tabela. Cabecalhos, caixas de
   selecao, separadores e a acao de editar conservam suas escalas proprias. */
body.siog-modern.ajustes-serv-page-body .ajs-table-insumos tbody
td:not(.sel):not(.gap):not(.gear):not(.col-origem){
  font-size:10.5px!important;
  line-height:1.5;
}
/* Origem de Preco acompanha a mesma escala apenas quando esta visivel. No
   estado oculto, a regra de colapso continua soberana com font-size:0. */
body.siog-modern.ajustes-serv-page-body
.ajs-table-insumos:not(.sem-col-origem) tbody td.col-origem{
  font-size:10.5px!important;
  line-height:1.5;
}

/* ===================== 81. Percentual de Grupos: arvore de composicoes ===
   Paridade visual SEOBRA, 22/08/2026. Os grupos-pai alternam com os filhos:
   pai recolhido e editavel; filhos expandidos e editaveis. */
body.siog-modern .percentual-table tr[hidden]{display:none!important}
body.siog-modern .percentual-table .pct-tree-toggle{
  border:0;background:transparent;color:#3d4a52;padding:0 5px 0 0;
  cursor:pointer;vertical-align:middle;
}
body.siog-modern .percentual-table .pct-tree-toggle i{width:10px}
body.siog-modern .percentual-table .pct-parent-subtitle{
  margin-left:4px;color:#89939a;font-size:9px;text-transform:uppercase;
}
body.siog-modern .percentual-table .pct-child-label{
  display:inline-flex;align-items:center;font-style:italic;color:#747f86;
}
body.siog-modern .percentual-table .pct-child-label::before{
  content:"";width:7px;height:27px;margin-right:7px;background:#0097a7;
}
body.siog-modern .percentual-table .pct-parent-expanded{
  font-style:italic;color:#8b949a;
}
body.siog-modern .percentual-table .pct-parent-expanded .pct-edit-cell{
  background:#f4f5f6;
}
body.siog-modern .percentual-table .pct-parent-expanded .pct-inline-field{
  visibility:hidden;
}
body.siog-modern .percentual-table .pct-info-row .pct-edit-cell{background:#fff}

/* ===================== 82. Histórico: diferenças na própria coluna =======
   Paridade visual SEOBRA, 23/08/2026. Cada campo alterado ocupa um marcador,
   com valores anterior e novo destacados e a seta entre eles. */
body.siog-modern .hist-table .hist-diff-list{
  margin:0;
  padding-left:18px;
  text-align:left;
  text-transform:none;
}
body.siog-modern .hist-table .hist-diff-list li{
  margin:0 0 4px;
  line-height:1.45;
}
body.siog-modern .hist-table .hist-diff-label{margin-right:4px}
body.siog-modern .hist-table .hist-diff-value{font-weight:700}
body.siog-modern .hist-table .hist-diff-arrow{
  margin:0 6px;
  color:#68747c;
  font-size:10px;
}

/* Paridade visual: cabeçalho da raiz da árvore no tema escuro. */
body.siog-modern .plan-tree-root {
  background: var(--id-surface) !important;
  border-color: var(--id-border) !important;
  color: var(--id-text) !important;
}
body.siog-modern .plan-tree-root:hover {
  background: var(--id-surface-2) !important;
  color: var(--id-text-strong) !important;
}

/* Paridade visual: controles de edição de valor sem rótulo truncado. */
body.siog-modern .item-edit-grid .ie-1 {
  grid-column: span 1;
}
@media (max-width:980px) {
  body.siog-modern .item-edit-grid .ie-1 {
    grid-column: auto / span 1 !important;
  }
}
@media (max-width:620px) {
  body.siog-modern .item-edit-grid .ie-1 {
    grid-column: 1 / -1 !important;
  }
}

/* Paridade visual: contraste dos controles de valor no tema escuro. */
body.siog-modern .item-edit-grid .item-edit-check > span {
  color: var(--id-text) !important;
}
body.siog-modern:not(.tema-claro) .item-edit-grid .item-edit-value-warning {
  color: #ff9b9b !important;
}


/* ==========================================================================
   83. Estados de selecao globais — linguagem azul clara

   Abas, filtros, paginadores, modos, resultados ativos e navegacao usam os
   mesmos tokens. A lista e propositalmente explicita: cores semanticas de
   acao, sucesso, aviso, erro e marcadores nao devem herdar este estado.
   ========================================================================== */
:root{
  --id-selection-bg:#172b46;
  --id-selection-hover:#13243a;
  --id-selection-text:#b9d8ff;
  --id-selection-border:#5ca1f5;
  --id-selection-indicator:#77d4f9;
  --id-selection-focus:rgba(119,212,249,.42);
}
html.tema-claro,
body.tema-claro{
  --id-selection-bg:#eaf4ff;
  --id-selection-hover:#f3f8ff;
  --id-selection-text:#174f9c;
  --id-selection-border:#8abcf8;
  --id-selection-indicator:#1685e5;
  --id-selection-focus:rgba(22,133,229,.28);
}

/* Abas horizontais: fundo suave e faixa superior sem alterar a geometria. */
body.siog-modern .subtabs a.ativo.ativo,
body.siog-modern .ajs-tabs a.active.active,
body.siog-modern .erros-tabs a.active.active,
body.siog-modern .hist-tabs a.active.active,
body.siog-modern .extra-tabs a.active.active,
body.siog-modern .modelos-source-nav a.active.active,
body.siog-modern .bdi-tabs-card a.active,
body.siog-modern .det-tabs a.active,
body.siog-modern .comp-tabs a.active,
body.siog-modern .comp-tabs span.comp-tab.active,
body.siog-modern .bdi-tabs a.active,
body.siog-modern .ajt-tabs button.active,
body.siog-modern .regras-tabs a.active,
body.siog-modern .coef-tabs a.active,
body.siog-modern .comparison-tabs a.active,
body.siog-modern .pref-online-nav a.active{
  background:var(--id-selection-bg)!important;
  color:var(--id-selection-text)!important;
  border-color:var(--id-selection-border)!important;
  border-top-color:var(--id-selection-indicator)!important;
  box-shadow:inset 0 3px 0 var(--id-selection-indicator)!important;
}
body.siog-modern .subtabs a.ativo i,
body.siog-modern .ajs-tabs a.active i,
body.siog-modern .erros-tabs a.active i,
body.siog-modern .hist-tabs a.active i,
body.siog-modern .extra-tabs a.active i,
body.siog-modern .modelos-source-nav a.active i,
body.siog-modern .bdi-tabs-card a.active i,
body.siog-modern .det-tabs a.active i,
body.siog-modern .comp-tabs a.active i,
body.siog-modern .bdi-tabs a.active i,
body.siog-modern .ajt-tabs button.active i,
body.siog-modern .regras-tabs a.active i,
body.siog-modern .coef-tabs a.active i,
body.siog-modern .comparison-tabs a.active i,
body.siog-modern .pref-online-nav a.active i{
  color:var(--id-selection-text)!important;
}

/* Superficies inativas acompanham o tema; evita botoes brancos no escuro. */
body.siog-modern .ajs-groups a:not(.active),
body.siog-modern .coef-mode a:not(.active),
body.siog-modern .detail-memory-modes .btn:not(.active),
body.siog-modern .detail-memory-scopes .btn:not(.active),
body.siog-modern .bdi-default-pill:not(.active),
body.siog-modern .modelo-years .btn:not(.active),
body.siog-modern .sb-rel-modo:not(.active),
body.siog-modern .sb-toggle .on,
body.siog-modern .sb-toggle .off,
body.siog-modern .oc-pager a:not(.on),
body.siog-modern .bdi-card-pager a:not(.active),
body.siog-modern .prop-list-pager a:not(.active),
body.siog-modern .hist-pager a:not(.active),
body.siog-modern .bdi-search-pager button:not(.active),
body.siog-modern .enc-search-pager a:not(.active){
  background:var(--id-surface)!important;
  color:var(--id-text)!important;
  border-color:var(--id-border-strong)!important;
}
body.siog-modern .ajs-groups a:not(.active)>i,
body.siog-modern .coef-mode a:not(.active)>i,
body.siog-modern .detail-memory-modes .btn:not(.active) i,
body.siog-modern .detail-memory-scopes .btn:not(.active) i,
body.siog-modern .modelo-years .btn:not(.active) i{
  color:var(--id-text)!important;
}

/* Filtros compactos, cartoes e controles segmentados. */
body.siog-modern .ajs-groups a.active,
body.siog-modern .coef-mode a.active,
body.siog-modern .detail-memory-modes .btn.active,
body.siog-modern .detail-memory-scopes .btn.active,
body.siog-modern .bdi-default-pill.active,
body.siog-modern .modelo-years .btn.active,
body.siog-modern .sb-rel-modo.active,
body.siog-modern a.sb-rel-modo.active,
body.siog-modern .ajt-proposta-row>span.active,
body.siog-modern .pref-perfil-card.ativo,
body.siog-modern .selecionar-btn.active,
body.siog-modern .sb-toggle input:checked~.on,
body.siog-modern .sb-toggle input:not(:checked)~.off{
  background:var(--id-selection-bg)!important;
  color:var(--id-selection-text)!important;
  border-color:var(--id-selection-border)!important;
  box-shadow:inset 0 2px 0 var(--id-selection-indicator)!important;
}
body.siog-modern .ajs-groups a.active>i,
body.siog-modern .coef-mode a.active>i,
body.siog-modern .detail-memory-modes .btn.active i,
body.siog-modern .detail-memory-scopes .btn.active i,
body.siog-modern .modelo-years .btn.active i{
  color:var(--id-selection-text)!important;
}

/* Paginadores conservam as dimensoes; apenas a superficie selecionada muda. */
body.siog-modern .oc-pager a.on,
body.siog-modern .page-item.active .page-link,
body.siog-modern .bdi-card-pager a.active,
body.siog-modern .prop-list-pager a.active,
body.siog-modern .hist-pager a.active,
body.siog-modern .bdi-search-pager button.active,
body.siog-modern .enc-search-pager a.active{
  background:var(--id-selection-bg)!important;
  color:var(--id-selection-text)!important;
  border-color:var(--id-selection-border)!important;
  box-shadow:inset 0 2px 0 var(--id-selection-indicator)!important;
}

/* Listas verticais, arvores e resultados ativos usam a faixa lateral. */
body.siog-modern .nav-sidebar>.nav-item>.nav-link.active:not(.sb-item-danger):not(#siog-x),
body.siog-modern .nav-sidebar .nav-treeview>.nav-item>.nav-link.active:not(.sb-item-danger):not(#siog-x),
body.siog-modern .nav-sidebar .nav-treeview>.nav-item>.nav-link.sb-sub-active:not(.sb-item-danger):not(#siog-x),
body.siog-modern .main-sidebar .nav-link.active:not(.sb-item-danger):not(#siog-x),
body.siog-modern a.plan-tree-root.active,
body.siog-modern .plan-tree a.active,
body.siog-modern .plan-tree-item.active,
body.siog-modern .mem-tree-item.active,
body.siog-modern .sb-rel-nav a.active,
body.siog-modern .sb-rel-nav .nav-link.active,
body.siog-modern .ins-group-option[aria-selected="true"],
body.siog-modern .plan-search-result.active,
body.siog-modern .plan-search-result[aria-selected="true"],
body.siog-modern .fontes-autocomplete-panel [role="option"].active,
body.siog-modern .coef-search .sb-ac>.sb-ac-item.active{
  background:var(--id-selection-bg)!important;
  color:var(--id-selection-text)!important;
  border-color:var(--id-selection-border)!important;
  box-shadow:inset 3px 0 0 var(--id-selection-indicator)!important;
}
body.siog-modern .nav-sidebar .nav-link.active:not(.sb-item-danger) p,
body.siog-modern .nav-sidebar .nav-link.active:not(.sb-item-danger) .nav-icon,
body.siog-modern .nav-sidebar .nav-link.active:not(.sb-item-danger) .badge,
body.siog-modern .nav-sidebar .nav-treeview>.nav-item>.nav-link.sb-sub-active:not(.sb-item-danger):not(#siog-x) p,
body.siog-modern .nav-sidebar .nav-treeview>.nav-item>.nav-link.sb-sub-active:not(.sb-item-danger):not(#siog-x) .nav-icon,
body.siog-modern .nav-sidebar .nav-treeview>.nav-item>.nav-link.sb-sub-active:not(.sb-item-danger):not(#siog-x) .badge{
  color:var(--id-selection-text)!important;
}

/* Chips de marcador preservam sua cor semantica na lateral. */
body.siog-modern .marker-option input:checked+.marker-chip{
  background:var(--id-selection-bg)!important;
  color:var(--id-selection-text)!important;
  border-color:var(--id-selection-border)!important;
  border-left-color:var(--marker-color)!important;
  box-shadow:inset 0 2px 0 var(--id-selection-indicator),
             inset 0 0 0 1px var(--id-selection-border)!important;
}
body.siog-modern .marker-option input:checked+.marker-chip::after{
  color:var(--id-selection-text)!important;
}

/* Hover e foco seguem a mesma familia, sem abranger botoes de acao. */
body.siog-modern .ajs-tabs a:not(.active):hover,
body.siog-modern .ajs-groups a:not(.active):not(.disabled):hover,
body.siog-modern .coef-mode a:not(.active):not(.disabled):hover,
body.siog-modern .modelo-years .btn:not(.active):hover,
body.siog-modern .bdi-default-pill:not(.active):hover,
body.siog-modern .oc-pager a:not(.on):hover,
body.siog-modern .bdi-card-pager a:not(.active):hover,
body.siog-modern .prop-list-pager a:not(.active):hover,
body.siog-modern .hist-pager a:not(.active):hover{
  background:var(--id-selection-hover)!important;
  color:var(--id-selection-text)!important;
}
body.siog-modern :is(
  .subtabs a,.ajs-tabs a,.ajs-groups a,.erros-tabs a,.hist-tabs a,
  .extra-tabs a,.modelos-source-nav a,.det-tabs a,.comp-tabs a,.bdi-tabs a,
  .ajt-tabs button,.regras-tabs a,.coef-tabs a,.comparison-tabs a,
  .coef-mode a,.bdi-default-pill,.modelo-years .btn,.sb-rel-modo,
  .oc-pager a,.bdi-card-pager a,.prop-list-pager a,.hist-pager a,
  .bdi-search-pager button,.enc-search-pager a,.plan-search-result,
  .ins-group-option
):focus-visible{
  outline:3px solid var(--id-selection-focus)!important;
  outline-offset:2px!important;
}
body.siog-modern input[type="checkbox"],
body.siog-modern input[type="radio"]{
  accent-color:var(--id-selection-indicator);
}


/* 83a. Selecoes compactas no breakpoint movel: a barra legada tinha altura
   fixa e overflow oculto, cortando todas as categorias depois da primeira. */
@media (max-width:900px){
  body.siog-modern .ajs-groups{
    height:auto!important;
    min-height:47px!important;
    overflow:visible!important;
    align-content:flex-start;
    flex:0 0 auto!important;
  }
}


/* ==========================================================================
   84. Propagacao visual de coeficiente alterado e item nao cadastrado

   O servico alterado mostra o asterisco amarelo do SEOBRA e sua etapa-pai,
   assim como a etapa de um item nao cadastrado, recebe a mesma faixa amarela.
   Alertas de valor acima continuam vermelhos e prevalecem sobre o amarelo.
   ========================================================================== */
body.siog-modern .plan-table td.plan-alert-col.bg-warning{
  background:#ffc107!important;
  color:#17130a!important;
}
body.siog-modern .plan-alert-col.bg-warning .plan-row-caret,
body.siog-modern .plan-alert-col.bg-warning .plan-row-caret i{
  color:#17130a!important;
}
body.siog-modern .plan-alert-star{
  display:inline-block;
  color:#17130a!important;
  font-size:22px;
  font-weight:700;
  line-height:1;
  transform:translateY(4px);
}


/* ==========================================================================
   85. Selecao semantica dos alertas na barra lateral

   O item de alerta ativo segue a superficie de selecao do SIOG, preservando
   o vermelho somente no indicador lateral e na borda do contador. O contador
   usa dimensoes fixas e flex para manter numero e circulo centralizados.
   ========================================================================== */
body.siog-modern .nav-sidebar .nav-link.sb-item-danger.active:not(#siog-x),
body.siog-modern .nav-sidebar .nav-link.sb-item-danger.active:not(#siog-x):hover,
body.siog-modern.orcamento-shell .nav-sidebar .nav-link.sb-item-danger.active:not(#siog-x),
body.siog-modern.orcamento-shell .nav-sidebar .nav-link.sb-item-danger.active:not(#siog-x):hover{
  background:var(--id-selection-bg)!important;
  background-image:none!important;
  color:var(--id-selection-text)!important;
  box-shadow:inset 3px 0 0 #b11f2b!important;
}
body.siog-modern .nav-sidebar .nav-link.sb-item-danger.active:not(#siog-x) p,
body.siog-modern .nav-sidebar .nav-link.sb-item-danger.active:not(#siog-x) .nav-icon{
  color:var(--id-selection-text)!important;
}
body.siog-modern .nav-sidebar .nav-link.sb-item-danger:not(#siog-x) .badge.badge-danger{
  top:50%!important;
  width:16px;
  min-width:16px;
  height:16px;
  padding:0!important;
  display:inline-flex!important;
  align-items:center;
  justify-content:center;
  transform:translateY(-50%);
  font-size:9px!important;
  line-height:1!important;
  letter-spacing:0;
  border-radius:50%!important;
}
body.siog-modern .nav-sidebar .nav-link.sb-item-danger.active:not(#siog-x) .badge.badge-danger{
  background:transparent!important;
  color:#b11f2b!important;
  border:1px solid #b11f2b!important;
  box-shadow:none!important;
}



/* 86. Indicadores de ajustes persistidos no menu do orcamento */
body.siog-modern .nav-sidebar .nav-link .sb-menu-adjustment-marker{
  top:50%!important;
  color:#ffc107!important;
  font-weight:800;
  line-height:1!important;
  text-align:center;
  transform:translateY(-50%);
  text-shadow:0 0 1px rgba(0,0,0,.12);
}
body.siog-modern .nav-sidebar .nav-link .sb-menu-adjustment-marker-star{
  font-size:21px!important;
}
body.siog-modern .nav-sidebar .nav-link .sb-menu-adjustment-marker-percent{
  font-size:16px!important;
}
body.siog-modern .nav-sidebar .nav-link.active .sb-menu-adjustment-marker,
body.siog-modern .nav-sidebar .nav-link:hover .sb-menu-adjustment-marker{
  color:#ffc107!important;
}


/* ===========================================================================
   87. Importacao: estados do fluxo e disposicao da etapa Identificar

   Os passos repetem a semantica do SEOBRA (concluido verde, atual vermelho),
   usando as cores do SIOG. O painel Fontes & Tabelas conserva integralmente a
   identidade e as dimensoes que ja possuia; somente o mapeamento de colunas e
   reorganizado para acompanhar a leitura em duas linhas da tela de referencia.
   ========================================================================== */
body.siog-modern .import-steps span.done{
  background:var(--id-success)!important;
  border-color:var(--id-success)!important;
  color:#fff!important;
  font-weight:600;
}
body.siog-modern .import-steps span.atual{
  background:var(--id-danger)!important;
  border-color:var(--id-danger)!important;
  color:#fff!important;
  font-weight:600;
}
body.siog-modern .import-params-grid{
  grid-template-columns:minmax(210px,2fr) repeat(5,minmax(86px,1fr)) minmax(168px,1.35fr);
  grid-template-areas:
    "sheet sheet item fonte codigo descricao process"
    "unidade quantidade unitario total bdi linha .";
  gap:10px 12px;
  padding:16px;
  border:1px solid var(--id-border)!important;
  border-radius:var(--id-radius-sm);
  background:var(--id-surface)!important;
}
body.siog-modern .import-params-grid .import-field-sheet{grid-area:sheet;grid-column:auto}
body.siog-modern .import-params-grid .import-field-item{grid-area:item}
body.siog-modern .import-params-grid .import-field-fonte{grid-area:fonte}
body.siog-modern .import-params-grid .import-field-codigo{grid-area:codigo}
body.siog-modern .import-params-grid .import-field-descricao{grid-area:descricao}
body.siog-modern .import-params-grid .import-field-unidade{grid-area:unidade}
body.siog-modern .import-params-grid .import-field-quantidade{grid-area:quantidade}
body.siog-modern .import-params-grid .import-field-unitario{grid-area:unitario}
body.siog-modern .import-params-grid .import-field-total{grid-area:total}
body.siog-modern .import-params-grid .import-field-bdi{grid-area:bdi}
body.siog-modern .import-params-grid .import-field-linha{grid-area:linha}
body.siog-modern .import-params-grid .import-process-btn{grid-area:process}

@media (max-width:1300px){
  body.siog-modern .import-params-grid{
    grid-template-columns:repeat(4,minmax(118px,1fr));
    grid-template-areas:none;
  }
  body.siog-modern .import-params-grid > *{grid-area:auto}
  body.siog-modern .import-params-grid .import-field-sheet,
  body.siog-modern .import-params-grid .import-process-btn{grid-column:span 2}
}
@media (max-width:700px){
  body.siog-modern .import-steps{grid-template-columns:1fr 1fr}
  body.siog-modern .import-params-grid{grid-template-columns:1fr 1fr;padding:12px}
}


/* 87. Versão SIMPLIFICADA da interface
   ---------------------------------------------------------------------------
   Escopo exclusivo do modo enxuto. NÃO existe segundo sistema: as rotas, os
   templates e o cálculo são os mesmos, e a versão completa não pode mudar uma
   vírgula por causa daqui.

   REGRA DESTA SEÇÃO: toda regra nasce sob `body.modo-simplificado` e nenhuma
   regra existente é editada. Sem o modo ligado o seletor não casa, e é isso
   que garante que a completa continue byte a byte a mesma.

   Para esconder um bloco GRANDE prefira `{% if not modo_simplificado %}` no
   template: CSS esconde, mas o HTML continua sendo enviado. A variável
   `modo_simplificado` chega a toda tela por app/views/base.py.

   Cuidado: esconder campo de FORMULÁRIO por CSS não impede o envio dele. Vale
   à vontade em bloco de leitura; em formulário, só onde o valor padrão for
   seguro.

   O tema aqui é sempre o claro: base.html manda `tema-claro` no <html> e no
   <body>, e `data-tema-fixo="claro"` faz o siog-identidade.js não montar o
   alternador. A regra abaixo é rede de segurança para o caso de outra folha
   ou outro script criar o botão assim mesmo. */
body.modo-simplificado #siog-tema-toggle,
body.modo-simplificado .siog-tema-toggle{display:none!important}


/* 88. Identificação do orçamento na barra lateral: objeto integral
   ---------------------------------------------------------------------------
   Decisão do dono (27/08/2026): o objeto não é resumo nem tooltip; precisa
   aparecer inteiro. A tipografia menor compensa o crescimento vertical e a
   altura automática empurra o menu para baixo sem sobreposição. Vale nas duas
   versões da interface, que compartilham esta mesma barra lateral. */
body.siog-modern.orcamento-shell .sb-orc-context{
  height:auto;
  min-height:100px;
}
body.siog-modern.orcamento-shell .sb-orc-idline>span:first-child{
  height:34px;
  padding:0 10px;
  font-size:14px;
  line-height:20px;
}
body.siog-modern.orcamento-shell .sb-orc-name{
  display:block!important;
  max-height:none;
  overflow:visible;
  font-size:12px;
  line-height:18px;
  text-overflow:clip;
  overflow-wrap:break-word;
  -webkit-line-clamp:unset;
  -webkit-box-orient:initial;
}



/* 89. Editor de item: seleção de BDI e estados do catálogo
   ---------------------------------------------------------------------------
   O BDI exibido no formulário não é um select: a chave abre a escolha entre
   o padrão do orçamento e um percentual manual exclusivo do item. */
body.siog-modern .item-edit-bdi-field{padding-top:3px!important}
body.siog-modern .item-edit-bdi-control{
  display:flex;
  align-items:stretch;
  flex:1;
  min-height:25px;
}
body.siog-modern .item-edit-bdi-control output{
  display:flex;
  align-items:center;
  flex:1;
  min-width:0;
  padding:1px 8px 5px;
  color:var(--id-text);
  font-size:14px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
body.siog-modern .item-edit-bdi-control button{
  flex:0 0 38px;
  border:0!important;
  border-left:1px solid var(--id-border)!important;
  background:transparent!important;
  color:var(--id-accent)!important;
  border-radius:0!important;
}
body.siog-modern .item-edit-bdi-control button:hover{background:var(--id-surface-2)!important}
body.siog-modern #modal-item-bdi{width:min(480px,calc(100vw - 32px))}
body.siog-modern #modal-item-bdi .plan-modal-card{
  background:var(--id-surface)!important;
  color:var(--id-text)!important;
}
body.siog-modern #modal-item-bdi .item-bdi-head{
  display:flex;
  align-items:center;
  gap:12px;
}
body.siog-modern #modal-item-bdi .item-bdi-head h3{flex:1}
body.siog-modern #modal-item-bdi .item-bdi-head button{
  border:0!important;
  background:transparent!important;
  color:var(--id-muted)!important;
  font-size:18px;
}
body.siog-modern .item-bdi-options{
  margin:16px;
  padding:18px!important;
  border:1px solid var(--id-accent)!important;
  border-radius:var(--id-radius-sm);
  background:var(--id-surface)!important;
}
body.siog-modern .item-bdi-option{
  display:flex;
  align-items:center;
  gap:8px;
  min-height:34px;
  margin:0;
  color:var(--id-text)!important;
  font-size:13px;
  font-weight:400;
}
body.siog-modern .item-bdi-option input[type=radio]{margin:0}
body.siog-modern .item-bdi-manual input[type=text]{
  width:90px;
  height:32px;
  margin-left:auto;
  padding:5px 8px;
  text-align:right;
  background:var(--id-surface)!important;
  border:1px solid var(--id-border-strong)!important;
  color:var(--id-text)!important;
  border-radius:3px;
}
body.siog-modern .item-bdi-manual input[type=text]:disabled{
  background:var(--id-surface-2)!important;
  color:var(--id-muted)!important;
}



/* 90. Editor de item: campos por tipo (paridade SEOBRA)
   ---------------------------------------------------------------------------
   A consulta ao catálogo pertence somente ao tipo Serviço. Os demais tipos
   reorganizam os campos manuais sem deixar lacunas na grade. */
body.siog-modern .item-edit-grid .ie-8{grid-column:span 8}
body.siog-modern .item-edit-grid .item-edit-global>label{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  flex:1;
  margin:0;
  font-size:12px;
  font-weight:700;
  color:var(--id-text);
}
body.siog-modern .item-edit-grid .item-edit-global>label input{margin:0}
@media(max-width:980px){
  body.siog-modern .item-edit-grid .ie-8{grid-column:1/-1}
}


/* 91. Arvore de etapas: respiro do aviso circular
   ---------------------------------------------------------------------------
   Afasta o circulo amarelo da faixa azul da etapa selecionada sem deslocar
   numero, descricao ou os demais marcadores semanticos. */
body.siog-modern .plan-tree-item .plan-tree-marker-circle{
  transform:translateX(5px);
}

/* 92. Contador do menu lateral: centro real, nao `top` fixo
   ---------------------------------------------------------------------------
   O badge vinha posicionado por um `top` em px repetido pagina a pagina (12px
   no geral, 11px em algumas, 10px com a barra recolhida). Qualquer variacao de
   altura da linha o tirava do eixo do texto. Centrar pelo proprio link resolve
   nos tres casos de uma vez. O `:not(#siog-x)` so eleva a especificidade acima
   das regras por pagina; a seta do treeview nao entra porque a regra exige
   `.badge` e nao pode perder o transform que a gira. */
body.siog-modern .nav-sidebar:not(#siog-x) .nav-link>p>.badge.right{
  top:50%;
  bottom:auto;
  transform:translateY(-50%);
}

/* 93. Menu do usuario: troca de empresa mais compacta
   ---------------------------------------------------------------------------
   As empresas, a troca de versao e a saida perdem altura; as demais acoes do
   perfil preservam a area de toque original. Trinta pixels mantem leitura e
   foco sem as lacunas excessivas entre opcoes vistas no menu completo. */
body.siog-modern .main-header .siog-company-switch .dropdown-header{
  padding-top:3px;
  padding-bottom:3px;
}
body.siog-modern .main-header .siog-company-switch .dropdown-item,
body.siog-modern .main-header .dropdown-menu form[action="/modo"] .dropdown-item,
body.siog-modern .main-header .dropdown-menu form[action="/logout"] .dropdown-item{
  min-height:30px;
  padding-top:2px;
  padding-bottom:2px;
}

/* 94. Margens laterais globais e simetricas
   ---------------------------------------------------------------------------
   O shell moderno mostrava uma barra de 268px, mas varias regras legadas ainda
   iniciavam cabecalho e conteudo em 250px. Isso deixava quase nenhum respiro a
   esquerda e recuos diferentes por pagina. Uma unica referencia passa a reger
   barra, moldura e conteudo; o fundo do cabecalho continua de ponta a ponta e
   apenas os seus controles acompanham a margem da pagina. */
body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare){
  --siog-page-gutter:32px;
}

body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare) .main-header{
  margin-right:0!important;
  padding-left:var(--siog-page-gutter)!important;
  padding-right:var(--siog-page-gutter)!important;
}
body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare) .content-wrapper,
body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare) .main-footer{
  margin-right:0!important;
  width:auto!important;
}
body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare) .content-wrapper>.content{
  padding-left:0!important;
  padding-right:0!important;
}
body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare) .content-wrapper>.content>.container-fluid{
  max-width:none!important;
  padding-left:var(--siog-page-gutter)!important;
  padding-right:var(--siog-page-gutter)!important;
}

@media(min-width:992px){
  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare):not(.sidebar-collapse):not(.sidebar-closed) .main-sidebar,
  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare):not(.sidebar-collapse):not(.sidebar-closed) .main-sidebar::before{
    width:var(--siog-sidebar-w)!important;
  }
  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare):not(.sidebar-collapse):not(.sidebar-closed) .main-header{
    margin-left:var(--siog-sidebar-w)!important;
    width:calc(100% - var(--siog-sidebar-w))!important;
  }
  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare):not(.sidebar-collapse):not(.sidebar-closed) .content-wrapper,
  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare):not(.sidebar-collapse):not(.sidebar-closed) .main-footer{
    margin-left:var(--siog-sidebar-w)!important;
  }

  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare).sidebar-collapse:not(.sidebar-closed) .main-sidebar,
  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare).sidebar-collapse:not(.sidebar-closed) .main-sidebar::before{
    width:var(--siog-sidebar-mini)!important;
  }
  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare).sidebar-collapse:not(.sidebar-closed) .main-sidebar:hover{
    width:var(--siog-sidebar-w)!important;
  }
  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare).sidebar-collapse:not(.sidebar-closed) .main-header{
    margin-left:var(--siog-sidebar-mini)!important;
    width:calc(100% - var(--siog-sidebar-mini))!important;
  }
  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare).sidebar-collapse:not(.sidebar-closed) .content-wrapper,
  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare).sidebar-collapse:not(.sidebar-closed) .main-footer{
    margin-left:var(--siog-sidebar-mini)!important;
  }

  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare).sidebar-closed .main-sidebar,
  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare).sidebar-closed .main-sidebar::before,
  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare).sidebar-closed .main-sidebar:hover{
    width:var(--siog-sidebar-w)!important;
    margin-left:calc(-1 * var(--siog-sidebar-w))!important;
  }
  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare).sidebar-closed .main-header{
    margin-left:0!important;
    width:100%!important;
  }
  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare).sidebar-closed .content-wrapper,
  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare).sidebar-closed .main-footer{
    margin-left:0!important;
  }
}

@media(min-width:768px) and (max-width:1199.98px){
  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare){
    --siog-page-gutter:20px;
  }
}

@media(max-width:991.98px){
  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare) .main-header{
    margin-left:0!important;
    width:100%!important;
  }
  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare) .content-wrapper,
  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare) .main-footer{
    margin-left:0!important;
  }
}

@media(max-width:767.98px){
  body.siog-modern.hold-transition.sidebar-mini:not(.sb-bare){
    --siog-page-gutter:12px;
  }
}
/* 95. Salvamento sem perda de contexto ------------------------------------ */
.siog-save-toast{
  position:fixed;right:18px;bottom:18px;z-index:30000;
  min-width:88px;max-width:min(360px,calc(100vw - 36px));
  padding:8px 13px;border:1px solid #a7d7b4;border-radius:6px;
  background:#edf9f0;color:#17632b;font-size:13px;font-weight:700;
  box-shadow:0 5px 18px rgba(15,23,42,.15);opacity:0;
  transform:translateY(5px);pointer-events:none;
  transition:opacity .14s ease,transform .14s ease;
}
.siog-save-toast.is-visible{opacity:1;transform:translateY(0)}
.siog-save-toast.is-error{border-color:#efb0b0;background:#fff1f1;color:#9b1c1c}
@media(max-width:575.98px){.siog-save-toast{right:10px;bottom:10px;max-width:calc(100vw - 20px)}}

/* 96. Percentual de Grupos compacto e responsivo -------------------------
   Seis colunas continuam presentes em todas as larguras. Notebook ganha uma
   caixa util maior; tablet fecha sem cortes relevantes; celular usa uma grade
   compacta com rolagem horizontal interna, sem quebrar os valores monetarios. */
body.siog-modern.ajuste-total-page #modal-grupos .ajt-modal-frame-box{
  width:min(1180px,calc(100vw - 20px));
}
@media(min-width:992px){
  body.siog-modern.ajuste-total-page:not(.sb-bare):not(.sidebar-collapse):not(.sidebar-closed) #modal-grupos{
    padding-left:var(--siog-sidebar-w);
  }
  body.siog-modern.ajuste-total-page:not(.sb-bare):not(.sidebar-collapse):not(.sidebar-closed) #modal-grupos .ajt-modal-frame-box{
    width:min(1180px,calc(100vw - var(--siog-sidebar-w) - 20px));
  }
  body.siog-modern.ajuste-total-page:not(.sb-bare).sidebar-collapse:not(.sidebar-closed) #modal-grupos{
    padding-left:var(--siog-sidebar-mini);
  }
  body.siog-modern.ajuste-total-page:not(.sb-bare).sidebar-collapse:not(.sidebar-closed) #modal-grupos .ajt-modal-frame-box{
    width:min(1180px,calc(100vw - var(--siog-sidebar-mini) - 20px));
  }
}
body.siog-modern.ajuste-total-page #modal-grupos .ajt-modal-head{height:50px}
body.siog-modern.ajuste-total-page #modal-grupos .ajt-modal-head h2{
  font-size:20px;line-height:1.2;
}
body.siog-modern.ajuste-total-page #modal-grupos .ajt-modal-head h2 span{font-size:13px}
body.siog-modern.ajuste-total-page #modal-grupos .ajt-modal-frame-body{
  padding:12px 14px 0;
}
body.siog-modern.ajuste-total-page #modal-grupos .ajt-proposta-row{margin-bottom:10px}
body.siog-modern.ajuste-total-page #modal-grupos .ajt-proposta-row>span,
body.siog-modern.ajuste-total-page #modal-grupos .ajt-proposta-row>label{
  height:32px;font-size:10.5px;
}
body.siog-modern.ajuste-total-page #modal-grupos .ajt-proposta-row label b,
body.siog-modern.ajuste-total-page #modal-grupos .ajt-proposta-row label input{height:30px}
body.siog-modern.ajuste-total-page #modal-grupos .ajt-tabs{height:38px}
body.siog-modern.ajuste-total-page #modal-grupos .ajt-tabs button{
  height:38px;min-width:0;flex:1 1 0;padding:0 12px;font-size:11px;
  white-space:nowrap;
}
body.siog-modern.ajuste-total-page #modal-grupos .ajt-modal-frame{
  height:min(56vh,560px);
}
body.siog-modern.ajuste-total-page #modal-grupos .ajt-modal-footer{height:56px}
body.siog-modern.ajuste-total-page #modal-grupos .ajt-modal-footer .btn{
  min-width:120px;height:34px;font-size:12px;
}
body.siog-modern .ajs-percentual{
  display:block;
  min-width:0;
  max-width:100%;
  overflow-x:auto;
  overscroll-behavior-inline:contain;
  scrollbar-gutter:stable;
}
body.siog-modern .percentual-table{
  width:100%;
  max-width:100%;
  min-width:0;
  table-layout:fixed;
}
body.siog-modern .percentual-table:not(.percentual-table-detalhada) th:first-child,
body.siog-modern .percentual-table:not(.percentual-table-detalhada) td:first-child{width:48%}
body.siog-modern .percentual-table:not(.percentual-table-detalhada) th:nth-child(2),
body.siog-modern .percentual-table:not(.percentual-table-detalhada) td:nth-child(2),
body.siog-modern .percentual-table:not(.percentual-table-detalhada) th:nth-child(3),
body.siog-modern .percentual-table:not(.percentual-table-detalhada) td:nth-child(3){width:26%}
body.siog-modern .percentual-table-detalhada{
  min-width:720px;font-size:11px;line-height:1.28;
}
body.siog-modern .percentual-table-detalhada th{
  padding:7px 5px;font-size:9.5px;line-height:1.2;letter-spacing:.16px;
  white-space:nowrap;
}
body.siog-modern .percentual-table-detalhada tbody td,
body.siog-modern .percentual-table-detalhada tfoot td{
  padding:5px;font-size:11px;line-height:1.28;
}
body.siog-modern .percentual-table-detalhada td:nth-child(n+2){font-variant-numeric:tabular-nums}
body.siog-modern .percentual-table-detalhada th:nth-child(1),
body.siog-modern .percentual-table-detalhada td:nth-child(1){width:36%}
body.siog-modern .percentual-table-detalhada th:nth-child(2),
body.siog-modern .percentual-table-detalhada td:nth-child(2),
body.siog-modern .percentual-table-detalhada th:nth-child(3),
body.siog-modern .percentual-table-detalhada td:nth-child(3){width:15%}
body.siog-modern .percentual-table-detalhada th:nth-child(4),
body.siog-modern .percentual-table-detalhada td:nth-child(4){width:7%}
body.siog-modern .percentual-table-detalhada th:nth-child(5),
body.siog-modern .percentual-table-detalhada td:nth-child(5){width:10%}
body.siog-modern .percentual-table-detalhada th:nth-child(6),
body.siog-modern .percentual-table-detalhada td:nth-child(6){width:17%;white-space:nowrap}
body.siog-modern .percentual-table-detalhada .pct-edit-cell{padding:4px 5px}
body.siog-modern .percentual-table .pct-inline-field{width:100%;min-width:0}
body.siog-modern .percentual-table .pct-inline-field input{
  width:auto;min-width:0;height:28px!important;margin-top:0!important;
  flex:1 1 auto;padding:3px 6px;font-size:11px;
}
body.siog-modern .percentual-table .pct-inline-field span{
  height:28px!important;flex:0 0 26px;font-size:10px;
}
body.siog-modern .percentual-table .pct-tree-toggle{font-size:10px;padding-right:3px}
body.siog-modern .percentual-table .pct-parent-subtitle{font-size:7.5px;letter-spacing:.12px}
body.siog-modern .percentual-table .pct-child-label::before{height:22px;margin-right:6px}
body.siog-modern .percentual-table-detalhada.pct-preview-active{
  min-width:920px;font-size:10.5px;
}
body.siog-modern .percentual-table-detalhada.pct-preview-active th:nth-child(1),
body.siog-modern .percentual-table-detalhada.pct-preview-active td:nth-child(1){width:25%}
body.siog-modern .percentual-table-detalhada.pct-preview-active th:nth-child(2),
body.siog-modern .percentual-table-detalhada.pct-preview-active td:nth-child(2),
body.siog-modern .percentual-table-detalhada.pct-preview-active th:nth-child(3),
body.siog-modern .percentual-table-detalhada.pct-preview-active td:nth-child(3){width:11%}
body.siog-modern .percentual-table-detalhada.pct-preview-active th:nth-child(4),
body.siog-modern .percentual-table-detalhada.pct-preview-active td:nth-child(4){width:6%}
body.siog-modern .percentual-table-detalhada.pct-preview-active th:nth-child(5),
body.siog-modern .percentual-table-detalhada.pct-preview-active td:nth-child(5){width:8%}
body.siog-modern .percentual-table-detalhada.pct-preview-active th:nth-child(6),
body.siog-modern .percentual-table-detalhada.pct-preview-active td:nth-child(6){width:13%}
body.siog-modern .percentual-table-detalhada.pct-preview-active th:nth-child(7),
body.siog-modern .percentual-table-detalhada.pct-preview-active td:nth-child(7){width:14%;white-space:nowrap}
body.siog-modern .percentual-table-detalhada.pct-preview-active th:nth-child(8),
body.siog-modern .percentual-table-detalhada.pct-preview-active td:nth-child(8){width:12%;white-space:nowrap}
body.siog-modern .percentual-table-detalhada.pct-preview-active .pct-after-value{color:#0b5cab;font-style:italic}
body.siog-modern .percentual-table-detalhada.pct-preview-active .pct-discount-value{color:#0b5cab;font-style:italic}

@media(max-width:991.98px){
  body.siog-modern.ajuste-total-page #modal-grupos .ajt-modal-head h2{font-size:18px}
  body.siog-modern.ajuste-total-page #modal-grupos .ajt-modal-frame-body{padding:10px 10px 0}
  body.siog-modern .percentual-table-detalhada{min-width:680px;font-size:10.75px}
  body.siog-modern .percentual-table-detalhada tbody td,
  body.siog-modern .percentual-table-detalhada tfoot td{font-size:10.75px}
}

@media(max-width:576px){
  body.siog-modern.ajuste-total-page #modal-grupos .ajt-modal-head{
    height:46px;padding:0 10px;
  }
  body.siog-modern.ajuste-total-page #modal-grupos .ajt-modal-head h2{font-size:17px}
  body.siog-modern.ajuste-total-page #modal-grupos .ajt-modal-head h2 span{font-size:11px}
  body.siog-modern.ajuste-total-page #modal-grupos .ajt-modal-head .ajt-modal-tool{
    margin-right:7px;
  }
  body.siog-modern.ajuste-total-page #modal-grupos .ajt-modal-frame-body{padding:6px 6px 0}
  body.siog-modern.ajuste-total-page #modal-grupos .ajt-proposta-row{
    gap:4px;margin-bottom:6px;
  }
  body.siog-modern.ajuste-total-page #modal-grupos .ajt-proposta-row>span,
  body.siog-modern.ajuste-total-page #modal-grupos .ajt-proposta-row>label{
    height:30px;font-size:9.5px;
  }
  body.siog-modern.ajuste-total-page #modal-grupos .ajt-proposta-row label b,
  body.siog-modern.ajuste-total-page #modal-grupos .ajt-proposta-row label input{height:28px}
  body.siog-modern.ajuste-total-page #modal-grupos .ajt-tabs,
  body.siog-modern.ajuste-total-page #modal-grupos .ajt-tabs button{height:36px}
  body.siog-modern.ajuste-total-page #modal-grupos .ajt-modal-frame{height:min(57vh,520px)}
  body.siog-modern.ajuste-total-page #modal-grupos .ajt-modal-footer{
    height:50px;padding:0 8px;
  }
  body.siog-modern.ajuste-total-page #modal-grupos .ajt-modal-footer .btn{
    min-width:0;flex:1 1 0;height:32px;font-size:11px;
  }
  body.siog-modern .ajs-percentual{padding:4px}
  body.siog-modern .percentual-table:not(.percentual-table-detalhada) th:first-child,
  body.siog-modern .percentual-table:not(.percentual-table-detalhada) td:first-child{width:42%}
  body.siog-modern .percentual-table:not(.percentual-table-detalhada) th:nth-child(2),
  body.siog-modern .percentual-table:not(.percentual-table-detalhada) td:nth-child(2),
  body.siog-modern .percentual-table:not(.percentual-table-detalhada) th:nth-child(3),
  body.siog-modern .percentual-table:not(.percentual-table-detalhada) td:nth-child(3){width:29%}
  body.siog-modern .percentual-table-detalhada{min-width:620px;font-size:10.25px}
  body.siog-modern .percentual-table-detalhada th{padding:5px 4px;font-size:9px}
  body.siog-modern .percentual-table-detalhada tbody td,
  body.siog-modern .percentual-table-detalhada tfoot td{
    padding:4px;font-size:10.25px;
  }
  body.siog-modern .percentual-table .pct-inline-field input{
    height:26px!important;padding:2px 5px;font-size:10px;
  }
  body.siog-modern .percentual-table .pct-inline-field span{
    height:26px!important;flex-basis:22px;font-size:9px;
  }
  body.siog-modern .ajs-percentual-actions .btn{min-width:0;width:100%}
  body.siog-modern.sb-bare.percentual-grupos-page-body .container-fluid,
  body.siog-modern.sb-bare.percentual-grupos-page-body .sb-bare-wrap{
    padding-left:0!important;padding-right:0!important;
  }
  body.siog-modern.sb-bare.percentual-grupos-page-body .ajs-percentual{
    padding:4px!important;
  }
}

/* 97. Relatorios: exportacoes a 2/3 e checkboxes no padrao do Sumario -------
   A caixa dos distintivos media 48px e o desenho interno, 36px. Mantemos a
   proporcao solicitada em 32px/24px para PDF, XLS e DOC. As opcoes marcaveis
   passam a compartilhar o mesmo tratamento do Sumario da Planilha: caixa
   nativa quadrada, texto de 12px, peso normal e sem caixa alta forcada. */
body.siog-modern.rel-page .rel-icon-export{
  width:32px;
  height:32px;
  background-size:24px 24px;
}
body.siog-modern.rel-page label:has(input[type="checkbox"]){
  font-size:12px!important;
  font-weight:400!important;
  font-style:normal!important;
  line-height:1.25!important;
  letter-spacing:normal!important;
  text-transform:none!important;
}
body.siog-modern.rel-page label:has(input[type="checkbox"]) > input[type="checkbox"]{
  appearance:auto!important;
  -webkit-appearance:checkbox!important;
  width:13px!important;
  height:13px!important;
  min-width:13px!important;
  flex:0 0 13px!important;
  position:static!important;
  border:initial!important;
  border-radius:initial!important;
  background:initial!important;
  margin:1px 6px 0 0!important;
  vertical-align:top!important;
}
body.siog-modern.rel-page label:has(input[type="checkbox"]) > input[type="checkbox"]:checked::after{
  content:none!important;
}


/* 98. Lista de orcamentos: Novo com texto, icone e contorno verdes.
   Mantem o fundo e a geometria existentes, nas duas interfaces e temas. */
body.siog-modern .orcamentos-page .content-header .toolbar a.btn[href="/orcamentos/novo"]{
  color:var(--id-success)!important;
  border-color:var(--id-success)!important;
}
body.siog-modern.tema-claro .orcamentos-page .content-header .toolbar a.btn[href="/orcamentos/novo"]{
  color:#15803d!important;
  border-color:#15803d!important;
}
body.siog-modern .orcamentos-page .content-header .toolbar a.btn[href="/orcamentos/novo"] i{
  color:inherit!important;
}

/* 99. Criar Orcamento: botoes de contorno e alinhamento dos dados.
   Escopo exclusivo do formulario novo; nenhuma regra de valores ou envio muda. */
body.siog-modern .orc-new-page{
  --orc-new-grid:26px 134px minmax(0,1fr) 22px 0px 12px 13px 12px;
  --orc-new-gap:14px;
}
body.siog-modern .orc-new-page .orc-dados-card{
  height:auto!important;
  align-self:start;
}
body.siog-modern .orc-new-page .orc-dados-card > .card-body{
  display:grid;
  grid-template-columns:var(--orc-new-grid);
  column-gap:var(--orc-new-gap);
  align-content:start;
  padding-bottom:20px;
}
body.siog-modern .orc-new-page .orc-info-row{
  grid-template-columns:var(--orc-new-grid);
  column-gap:var(--orc-new-gap);
}
body.siog-modern .orc-new-page .orc-info-table{
  grid-column:1 / -1;
  min-width:0;
}
body.siog-modern.orc-new-body .orc-new-page .orc-top-fields{
  grid-column:3;
  grid-template-columns:repeat(4,minmax(0,151px))!important;
  column-gap:16px;
  row-gap:12px;
  /* Acompanha o deslocamento de 2px e a largura -1px dos valores existentes. */
  margin-left:2px;
  margin-right:-1px;
  min-width:0;
}
body.siog-modern .orc-new-page .add-row-btn{
  grid-column:2;
  width:100%!important;
  min-width:0;
  margin-left:0!important;
  color:var(--id-success)!important;
  border-color:var(--id-success)!important;
}
body.siog-modern.tema-claro .orc-new-page .add-row-btn{
  color:#15803d!important;
  border-color:#15803d!important;
}
body.siog-modern .orc-new-page .toolbar button.btn[title="Salvar"]{
  color:var(--id-accent-text)!important;
  border-color:var(--id-accent-text)!important;
}
body.siog-modern .orc-new-page .toolbar button.btn[title="Salvar"],
body.siog-modern .orc-new-page .add-row-btn{
  background:var(--id-surface)!important;
}
body.siog-modern .orc-new-page .toolbar button.btn[title="Salvar"] i,
body.siog-modern .orc-new-page .add-row-btn i{
  color:inherit!important;
}
body.siog-modern .orc-new-page .side-combo:not(#siog-x),
body.siog-modern .orc-new-page .side-combo > span:not(#siog-x){
  background:transparent!important;
}
body.siog-modern .orc-new-page .side-combo > span:not(#siog-x){
  border:0!important;
  box-shadow:none!important;
}
/* Em larguras menores, mantem campos legiveis sem ultrapassar o cartao. */
@media(max-width:1599.98px){
  body.siog-modern.orc-new-body .orc-new-page .orc-top-fields{
    grid-template-columns:repeat(2,minmax(0,151px))!important;
  }
}
@media(max-width:1279.98px){
  body.siog-modern.orc-new-body .orc-new-page .orc-two-col{
    grid-template-columns:minmax(0,1fr)!important;
  }
}
@media(max-width:767.98px){
  body.siog-modern .orc-new-page{
    --orc-new-grid:22px minmax(0,1fr) 24px 20px 20px 20px;
    --orc-new-gap:8px;
  }
  body.siog-modern.orc-new-body .orc-new-page .orc-top-fields{
    grid-column:2 / -1;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    margin-left:0;
    margin-right:0;
  }
  body.siog-modern.orc-new-body .orc-new-page .orc-info-row{
    height:auto!important;
    min-height:0!important;
    row-gap:6px;
  }
  body.siog-modern .orc-new-page .orc-info-idx{grid-column:1;grid-row:1}
  body.siog-modern .orc-new-page .orc-info-main{grid-column:2 / -1;grid-row:1}
  body.siog-modern.orc-new-body .orc-new-page .orc-info-value{
    grid-column:2 / -1;
    grid-row:2;
    width:100%;
    transform:none;
  }
  body.siog-modern .orc-new-page .orc-row-icons{display:none}
  body.siog-modern .orc-new-page .orc-eye{grid-column:3;grid-row:3}
  body.siog-modern .orc-new-page [data-move="up"]{grid-column:4;grid-row:3}
  body.siog-modern .orc-new-page [data-move="down"]{grid-column:5;grid-row:3}
  body.siog-modern .orc-new-page .orc-info-row > .danger-icon{grid-column:6;grid-row:3}
  body.siog-modern .orc-new-page .add-row-btn{grid-column:2 / -1}
}

/* 100. Seletor Fontes & Tabelas: largura comum em todas as telas.
   A largura de Adicionar Todas acompanha o conteudo dos grupos, nao o painel
   somado as margens. A reserva de rolagem mantem o alinhamento ao filtrar. */
body.siog-modern .sb-modal-fontes .cfp-tree{
  scrollbar-gutter:stable;
}
body.siog-modern .sb-modal-fontes .cfp-tree::-webkit-scrollbar{
  width:10px;
}
body.siog-modern .sb-modal-fontes .cfp-add-all{
  width:calc(100% - 40px)!important;
  max-width:calc(100% - 40px);
  margin:8px 24px 8px 16px;
  justify-content:center;
  color:var(--id-success)!important;
  border-color:var(--id-success)!important;
  background:var(--id-surface)!important;
}
body.siog-modern.tema-claro .sb-modal-fontes .cfp-add-all{
  color:#15803d!important;
  border-color:#15803d!important;
}
body.siog-modern.orc-new-body .sb-modal-fontes .cfp-footer-ok,
body.siog-modern.orc-new-body .sb-modal-fontes .cfp-add-version{
  color:var(--id-accent-text)!important;
  border-color:var(--id-accent-text)!important;
  background:var(--id-surface)!important;
}
body.siog-modern.orc-new-body .sb-modal-fontes .cfp-add-version{
  background:transparent!important;
}
body.siog-modern.orc-new-body .sb-modal-fontes .cfp-add-all i,
body.siog-modern.orc-new-body .sb-modal-fontes .cfp-footer-ok i,
body.siog-modern.orc-new-body .sb-modal-fontes .cfp-add-version i{
  color:inherit!important;
}
/* No celular a arvore tem overflow visible: nao ha gutter de rolagem. */
@media(max-width:767px){
  body.siog-modern .sb-modal-fontes .cfp-add-all{
    width:calc(100% - 30px)!important;
    max-width:calc(100% - 30px);
    margin-right:14px;
  }
}

/* 101. Planilha: descricao legivel e rolagem horizontal nativa.
   As colunas configuradas permanecem presentes no celular. O auto layout
   respeita os 360px da descricao, inclusive com colunas personalizadas. */
body.siog-modern .planilha-referencia .plan-grade-card > .card-body{
  min-width:0;
  max-width:100%;
  overflow-x:auto!important;
  touch-action:pan-x pan-y pinch-zoom;
  -webkit-overflow-scrolling:touch;
}
body.siog-modern .planilha-referencia table.plan-table{
  table-layout:auto!important;
}
body.siog-modern .planilha-referencia .plan-table .pcol-descricao{
  width:auto!important;
  min-width:360px!important;
  white-space:normal!important;
  overflow-wrap:normal!important;
  word-break:normal!important;
  hyphens:none;
}
body.siog-modern .planilha-referencia .plan-table .pcol-descricao .cell-display{
  white-space:normal;
  overflow-wrap:normal;
  word-break:normal;
  hyphens:none;
}
@media(max-width:767.98px){
  body.siog-modern .planilha-referencia .plan-table :is(th,td)[class*="pcol-"]{
    display:table-cell!important;
  }
  /* Na raiz so ha etapas: conserva a ocultacao contextual de codigo/unidade. */
  body.siog-modern .planilha-referencia .plan-workspace.root-view .plan-table :is(.pcol-codigo_fonte,.pcol-unidade){
    display:none!important;
  }
}
/* Conserva o cabecalho fixo do desktop quando a grade realmente cabe. */
@media(min-width:1500px){
  body.siog-modern .planilha-referencia .plan-grade-card > .card-body.plan-scroll-fit{
    overflow-x:clip!important;
  }
}


/* 102. Insumo / Composicao: categorias e alinhamentos da aba Itens.
   Classes semanticas independem da heuristica JS de cabecalhos mesclados.
   O token de TH e local a estas tabelas; outras abas e editores nao mudam. */
body.siog-modern .item-detail-page .det-tab-panel[data-panel="itens"] :is(.det-analitico,.sicro-table){
  --id-th-bg:#20395b;
}
body.siog-modern.tema-claro .item-detail-page .det-tab-panel[data-panel="itens"] :is(.det-analitico,.sicro-table){
  --id-th-bg:#cfe2ff;
}
body.siog-modern .item-detail-page .det-tab-panel[data-panel="itens"] :is(.det-analitico,.sicro-table) th{
  text-align:center!important;
  vertical-align:middle!important;
  color:var(--id-text-strong)!important;
}
body.siog-modern .item-detail-page .det-tab-panel[data-panel="itens"] .det-item-row > td{
  text-align:center!important;
  vertical-align:middle!important;
}
body.siog-modern .item-detail-page .det-tab-panel[data-panel="itens"] .det-item-row > td:not(#siog-x){
  background:var(--id-surface)!important;
}
body.siog-modern .item-detail-page .det-tab-panel[data-panel="itens"] .det-item-row:hover > td:not(#siog-x){
  background:var(--id-hover-row)!important;
}
body.siog-modern .item-detail-page .det-tab-panel[data-panel="itens"] .det-item-row > td.det-item-desc{
  text-align:left!important;
}
body.siog-modern .item-detail-page .det-tab-panel[data-panel="itens"] td.det-total-label{
  text-align:right!important;
  vertical-align:middle!important;
}
body.siog-modern .item-detail-page .det-tab-panel[data-panel="itens"] td.det-total-value{
  text-align:center!important;
  vertical-align:middle!important;
}

/* 103. Descricoes legiveis em todas as grades de insumos/servicos.
   O layout automatico honra o piso da celula; no fixed o min-width e ignorado.
   Somente tela: nao altera o layout nem a impressao de documentos. */
@media screen{
  body.siog-modern{
    --siog-description-min:280px;
  }
  body.siog-modern table.siog-description-table:not(#siog-readable-exclude){
    table-layout:auto!important;
  }
  body.siog-modern table.siog-description-table .siog-readable-description:not(#siog-readable-exclude){
    min-width:max(var(--siog-description-min),36ch,var(--siog-existing-desc-min,0px))!important;
    max-width:none!important;
    white-space:normal!important;
    overflow-wrap:normal!important;
    word-break:normal!important;
    hyphens:none!important;
  }
  body.siog-modern table.siog-description-table td.siog-readable-description:not(#siog-readable-exclude){
    text-align:left!important;
  }
  body.siog-modern table.siog-description-table td.num:not(.siog-readable-description):not(#siog-readable-exclude){
    white-space:nowrap!important;
    overflow-wrap:normal!important;
    word-break:normal!important;
  }
  body.siog-modern table.siog-description-table .siog-readable-description :is(.cell-display,.g-desc){
    white-space:normal!important;
    overflow-wrap:normal!important;
    word-break:normal!important;
  }
  body.siog-modern table.plan-table.siog-description-table{
    --siog-description-min:360px;
  }
  body.siog-modern .siog-description-scroll:not(#siog-readable-exclude){
    min-width:0!important;
    max-width:100%!important;
    overflow-x:auto!important;
    overscroll-behavior-x:contain;
    touch-action:pan-x pan-y pinch-zoom;
    -webkit-overflow-scrolling:touch;
  }
  body.siog-modern .siog-description-created{
    width:100%;
  }
  body.siog-modern .siog-description-top{
    position:sticky;
    left:0;
    height:18px;
    max-width:100%;
    box-sizing:border-box;
    overflow-x:scroll;
    overflow-y:hidden;
    background:var(--id-surface-2);
    border:1px solid var(--id-border);
    border-radius:4px;
    scrollbar-color:var(--id-scroll) var(--id-surface-2);
    scrollbar-width:auto;
  }
  body.siog-modern .siog-description-top[hidden]{display:none!important}
  body.siog-modern .siog-description-top:focus-visible{outline:2px solid var(--id-accent-text);outline-offset:2px}
  body.siog-modern .siog-description-track{height:1px;pointer-events:none}
  body.siog-modern .siog-description-top::-webkit-scrollbar{height:14px}
  body.siog-modern .siog-description-top::-webkit-scrollbar-thumb{background:var(--id-scroll);border-radius:6px}
  body.siog-modern .siog-description-top::-webkit-scrollbar-track{background:var(--id-surface-2)}
  /* Arvores de etapas e memoriais exibem as mesmas descricoes fora de tabelas. */
  body.siog-modern :is(.plan-tree-list,.mem-tree-list){
    min-width:0;
    max-width:100%;
    overflow-x:auto!important;
    touch-action:pan-x pan-y pinch-zoom;
  }
  body.siog-modern :is(.plan-tree-description,.mem-tree-item>em){
    min-width:max(280px,36ch)!important;
    width:280px;
    flex:1 0 280px;
    white-space:normal!important;
    overflow-wrap:normal!important;
    word-break:normal!important;
    -webkit-line-clamp:unset!important;
  }
  /* Resultados de busca tambem exibem descricoes. Em menus estreitos os
     metadados ficam acima, liberando uma linha inteira para o nome. */
  body.siog-modern .sb-ac:has(.sb-ac-grade),
  body.siog-modern .sb-ac:has(.sb-ac-item:not(.sb-ac-grade)>small){
    container-type:inline-size;
    min-width:min(300px,calc(100vw - 16px))!important;
    max-width:calc(100vw - 32px)!important;
    overflow-x:auto;
  }
  body.siog-modern .sb-ac .sb-ac-grade .sb-ac-desc:not(#siog-readable-exclude){
    min-width:280px!important;
    display:block!important;
    white-space:normal!important;
    overflow-wrap:normal!important;
    word-break:normal!important;
    -webkit-line-clamp:unset!important;
  }
  body.siog-modern .sb-ac .sb-ac-item:not(.sb-ac-grade)>small{
    display:block;
    min-width:280px;
    white-space:normal!important;
    overflow-wrap:normal!important;
    word-break:normal!important;
  }
  @container (max-width:640px){
    body.siog-modern .sb-ac>.sb-ac-item.sb-ac-grade:not(#siog-readable-exclude){
      grid-template-columns:minmax(0,1fr) auto auto!important;
    }
    body.siog-modern .sb-ac .sb-ac-grade .sb-ac-desc:not(#siog-readable-exclude){grid-column:1/-1!important;grid-row:2!important}
    body.siog-modern .sb-ac .sb-ac-grade .sb-ac-cod{grid-column:1!important;grid-row:1!important}
    body.siog-modern .sb-ac .sb-ac-grade .sb-ac-und{grid-column:2!important;grid-row:1!important}
    body.siog-modern .sb-ac .sb-ac-grade .sb-ac-val{grid-column:3!important;grid-row:1!important}
  }
}
@media print{
  .siog-description-top{display:none!important}
  .siog-description-created{display:contents!important}
}


/* 104. Tipografia de dados: titulos e conteudo em 10,5px.
   Somente as familias auditadas; h1, navegacao, botoes e areas de toque
   permanecem no desenho atual. Mantem pesos/italicos que sinalizam ajustes.
   Nao participa da impressao e nao altera o piso das descricoes. */
@media screen{
  body.siog-modern{--siog-data-font-size:10.5px;}
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .orc-list-page table.tbl-orc :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .orc-list-page table.tbl-orc :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta) :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .insumos-page table.tbl-orc :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .insumos-page table.tbl-orc :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta) :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .item-detail-page table.det-analitico :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .item-detail-page table.det-analitico :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta) :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .item-detail-page table.sicro-table :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .item-detail-page table.sicro-table :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta) :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .planilha-referencia table.plan-table :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .planilha-referencia table.plan-table :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta) :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) table.comp-items-table :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) table.comp-items-table :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta) :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .ajs-comp-grupo table :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .ajs-comp-grupo table :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta) :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) table.coef-table :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) table.coef-table :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta) :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .coef-child-group table :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .coef-child-group table :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta) :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .detail-coeff-view table :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .detail-coeff-view table :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta) :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) table.crono-table :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) table.crono-table :is(th,td):not(.acao,.acoes,.gear,.sel,.gap,.det-act,.sicro-act,.act,.col-undo,.plan-gear-col,.plan-order-col,.plan-alert-col,.plan-select-col,.col-oculta) :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .rel-box-title,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .rel-box-title :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .rel-field,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .rel-field :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .rel-fontes-list li,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .rel-fontes-list li :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .rel-valores-list li,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .rel-valores-list li :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .rel-kpis>span,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .rel-kpis>span :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .ft-card .card-title,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .ft-card .card-title :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .ft-card-body .fonte-linha,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .ft-card-body .fonte-linha :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .comp-fontes-head,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .comp-fontes-head :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .comp-fonte-row,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .comp-fonte-row :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .comp-fontes-bottom p,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .comp-fontes-bottom p :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .orc-new-page .orc-dados-card .card-title,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .orc-new-page .orc-dados-card .card-title :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .orc-new-page .orc-base-row,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .orc-new-page .orc-base-row :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .item-detail-page .det-field,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .item-detail-page .det-field :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .prop-field,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .prop-field :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .prop-source-box,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .prop-source-box :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .comp-category-box .prop-category-title,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .comp-category-box .prop-category-title :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .comp-category-box .prop-category-options label,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .comp-category-box .prop-category-options label :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .orc-new-page .orc-field-box,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .orc-new-page .orc-field-box :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .orc-new-page .orc-info-main,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .orc-new-page .orc-info-main :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .orc-new-page .orc-info-title,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .orc-new-page .orc-info-title :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .orc-new-page .orc-info-value,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .orc-new-page .orc-info-value :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .orc-new-page .orc-info-idx,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .orc-new-page .orc-info-idx :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .orc-list-page .orc-field,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .orc-list-page .orc-field :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .insumos-page .ins-field,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .insumos-page .ins-field :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .ajs-comp-head .campo,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .ajs-comp-head .campo :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]),
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .ajs-comp-nome,
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .ajs-comp-nome :is(span,b,strong,small,em,label,a,input,textarea,select):not(.btn,.btn *,button *,[role="button"],[role="button"] *,.ic-link,.rel-mini-edit,.coef-lixeira,.crono-drill,.crono-check,.crono-check *,.orc-organization-icon,.orc-organization-icon *,.sb-fontes-edit-icon,.rel-box-title>em,.rel-box-title>em *,.fa,.fas,.far,.fab,.fa-solid,.fa-regular,.sr-only,.col-oculta,.col-oculta *,[type="checkbox"],[type="radio"],[type="hidden"]){
    font-size:var(--siog-data-font-size)!important;
  }
  /* Icones que antes herdavam o tamanho do texto continuam com o tamanho original. */
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .crono-drill{font-size:12px!important;}
  body.siog-modern:not(#siog-type-scope):not(#siog-type-priority) .orc-list-page .orc-field-filter>span>i{font-size:11px!important;}
}


/* 105. Corrige apenas os dois conflitos de largura auditados.
   O minimo legado da terceira celula nao identifica a coluna logica quando
   ha colspan. Mantem o piso semantico das descricoes (secao 103), os colgroups
   e a rolagem existente, sem alterar outras grades ou acrescentar JavaScript. */
@media screen{
  body.siog-modern .item-detail-page .det-tab-panel[data-panel="itens"]
  :is(.det-analitico,.sicro-table) :is(th,td):nth-child(3):not(.det-item-desc,.siog-readable-description){
    min-width:0!important;
  }

  /* O texto pode usar varias linhas; icones e setas conservam seu espaco.
     break-word e apenas a protecao para nomes sem espacos, nao break-all. */
  body.siog-modern.orcamentos-list-body .orc-organization-copy>b,
  body.siog-modern.orcamentos-list-body .orc-marker-summary-text{
    min-width:0;
    white-space:normal!important;
    overflow:visible!important;
    text-overflow:clip!important;
    overflow-wrap:break-word!important;
    word-break:normal!important;
  }
  body.siog-modern.orcamentos-list-body .orc-organization-copy>small{
    align-items:flex-start;
  }
  body.siog-modern.orcamentos-list-body .orc-marker-summary-dots{
    flex:0 0 auto;
  }
  body.siog-modern.orcamentos-list-body .orc-marker-summary-text{
    flex:1 1 auto;
  }
}
@media screen and (min-width:992px) and (max-width:1399.98px){
  /* No layout fixo desta lista min-width isolado e ignorado. A reserva de
     160px ja usada no celular evita os 39px uteis da regra antiga de 120px.
     O texto cresce em altura; o restante da lista conserva sua distribuicao. */
  body.siog-modern.orcamentos-list-body .orcamentos-page .tbl-orc :is(th,td).organization-col{
    width:160px!important;
  }
}


/* 106. Salvar: somente cores. A classe e explicita e nao altera medidas,
   display, eventos, opacidade, foco, atalhos ou classes funcionais legadas. */
@media screen{
  body.siog-modern{
    --siog-save-surface:#141a25;
    --siog-save-ink:#5ca1f5;
  }
  body.siog-modern.tema-claro{
    --siog-save-surface:#ffffff;
    --siog-save-ink:#1f5cb0;
  }
  body.siog-modern .siog-save-outline:not(#siog-save-scope):not(#siog-save-priority){
    background-color:var(--siog-save-surface)!important;
    background-image:none!important;
    border-color:var(--siog-save-ink)!important;
    color:var(--siog-save-ink)!important;
  }
  body.siog-modern .siog-save-outline:not(#siog-save-scope):not(#siog-save-priority) *{
    color:inherit!important;
  }
  /* Botao de atribuir frente: sem borda no legado. O contorno interno nao
     aumenta a caixa e nao substitui o outline de foco do teclado. */
  body.siog-modern .extra-assign-form .siog-save-outline:not(#siog-save-scope):not(#siog-save-priority){
    box-shadow:inset 0 0 0 1px var(--siog-save-ink)!important;
  }
}


/* 107. Acoes: paleta e elevacao explicitamente identificadas.
   Nao altera display, medidas, tipografia, opacidade, cursor ou eventos.
   As transformacoes de posicionamento conhecidas sao compostas com translate. */
@media screen{
  body.siog-modern{
    --siog-action-bg:#141a25;
    --siog-action-blue:#5ca1f5;--siog-action-green:#34c98a;
    --siog-action-red:#ef6a6e;--siog-action-purple:#a78bfa;
    --siog-action-cyan:#22d3ee;--siog-action-amber:#fbbf24;
    --siog-action-neutral:#94a3b8;--siog-action-hover-shadow:rgba(0,0,0,.35);
  }
  body.siog-modern.tema-claro{
    --siog-action-bg:#ffffff;
    --siog-action-blue:#1f5cb0;--siog-action-green:#15803d;
    --siog-action-red:#be2f33;--siog-action-purple:#7c3aed;
    --siog-action-cyan:#0e7490;--siog-action-amber:#b45309;
    --siog-action-neutral:#475569;--siog-action-hover-shadow:rgba(15,35,52,.18);
  }
  body.siog-modern [data-siog-action-tone]{--siog-action-ink:var(--siog-action-neutral);}
  body.siog-modern [data-siog-action-tone="blue"]{--siog-action-ink:var(--siog-action-blue);}
  body.siog-modern [data-siog-action-tone="green"]{--siog-action-ink:var(--siog-action-green);}
  body.siog-modern [data-siog-action-tone="red"]{--siog-action-ink:var(--siog-action-red);}
  body.siog-modern [data-siog-action-tone="purple"]{--siog-action-ink:var(--siog-action-purple);}
  body.siog-modern [data-siog-action-tone="cyan"]{--siog-action-ink:var(--siog-action-cyan);}
  body.siog-modern [data-siog-action-tone="amber"]{--siog-action-ink:var(--siog-action-amber);}
  /* Salvar prevalece sobre o tom do estado Adicionar quando o mesmo controle muda. */
  body.siog-modern [data-siog-action-tone].siog-save-outline{--siog-action-ink:var(--siog-action-blue)!important;}
  body.siog-modern [data-siog-action-tone]:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    color:var(--siog-action-ink)!important;
    background-color:var(--siog-action-bg)!important;
    border-color:var(--siog-action-ink)!important;
    transform:var(--siog-action-base-transform,none)!important;
    translate:none!important;
    transition:translate 170ms cubic-bezier(.2,.75,.25,1),top 170ms cubic-bezier(.2,.75,.25,1),box-shadow 170ms cubic-bezier(.2,.75,.25,1),color 170ms cubic-bezier(.2,.75,.25,1),background-color 170ms cubic-bezier(.2,.75,.25,1),border-color 170ms cubic-bezier(.2,.75,.25,1)!important;
  }
  body.siog-modern [data-siog-action-tone]:not(.rel-icon-export):not([data-siog-preserve-image]):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){background-image:none!important;}
  body.siog-modern [data-siog-action-tone]:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style) :is(i,span,b,strong,svg){color:inherit!important;}
  /* Contorno sobreposto a borda, ou interno se nao existe borda; nao muda a caixa.
     O foco visivel continua sob as regras de acessibilidade ja existentes. */
  body.siog-modern [data-siog-action-tone]:not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){outline:1px solid var(--siog-action-ink)!important;outline-offset:-1px!important;}
  /* Cabeçalho do ajuste de composição: os ícones externo, maximizar e fechar
     ficam soltos, sem a moldura global dos botões. O foco por teclado continua
     visível por não entrar na segunda regra. */
  body.siog-modern .ajs-comp-window-actions > [data-siog-action-tone]:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    border-color:transparent!important;
    box-shadow:none!important;
  }
  body.siog-modern .ajs-comp-window-actions > [data-siog-action-tone]:not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    outline:none!important;
  }
  body.siog-modern .orc-new-page .add-row-btn[data-siog-action-tone]{--siog-action-base-transform:translateY(6px);}
  body.siog-modern .acs-edit-btn[data-siog-action-tone]{--siog-action-base-transform:translateX(-1px);}
  body.siog-modern .mem-edit-btn[data-siog-action-tone]{--siog-action-base-transform:translateX(-50%);}
  body.siog-modern .crono-drill[data-siog-action-tone]{--siog-action-base-transform:translateY(-50%);}
  body.siog-modern .detail-memory-variable-head button[data-siog-action-tone]{--siog-action-base-transform:translateX(-50%);}
  body.siog-modern .orc-marker-menu-form>button[data-siog-action-tone]{--siog-action-protected-shadow:0 -7px 0 0 var(--id-surface);}
  body.siog-modern .extra-assign-form [data-siog-action-tone]{--siog-action-protected-shadow:inset 0 0 0 1px var(--siog-action-ink);}
  /* Links inline de icones precisam de posicionamento relativo, sem mudar display. */
  body.siog-modern [data-siog-inline-motion]{position:relative;top:var(--siog-action-base-top,0px);}
}
@media screen and (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  body.siog-modern [data-siog-action-tone]:hover:not(:active):not(:disabled):not([disabled]):not(.disabled):not([aria-disabled="true"]):not([aria-busy="true"]):not(.is-loading):not(.is-saving):not(.is-submitting):not(form[aria-busy="true"] *):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    translate:0 -2px!important;
    box-shadow:var(--siog-action-protected-shadow,0 0 0 0 transparent),0 9px 20px var(--siog-action-hover-shadow)!important;
  }
  body.siog-modern [data-siog-inline-motion]:hover:not(:active):not(:disabled):not([disabled]):not(.disabled):not([aria-disabled="true"]):not([aria-busy="true"]):not(.is-loading):not(.is-saving):not(.is-submitting):not(form[aria-busy="true"] *):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    translate:none!important;
    top:calc(var(--siog-action-base-top,0px) - 2px);
  }
}
@media screen and (prefers-reduced-motion:reduce){
  body.siog-modern [data-siog-action-tone]:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){transition:none!important;translate:none!important;}
}


/* 108. Visao Geral: Adicionar acompanha as duas bordas dos titulos.
   Espelha apenas a coluna .key da grade existente, sem mover os campos:
   desktop/tablet = padding 15 + indice 28 + gap 16; celular = 8 + 24 + 8. */
@media screen{
  body.siog-modern .visao-dados > .visao-add{
    margin-left:59px;
    width:134px;
    padding-left:10px;
    padding-right:10px;
    justify-content:center;
  }
}
@media screen and (max-width:1200px){
  body.siog-modern .visao-dados > .visao-add{width:122px;}
}
@media screen and (max-width:600px){
  body.siog-modern .visao-dados > .visao-add{
    margin-left:40px;
    width:calc(100% - 48px);
  }
}


/* 109. Visao Geral: somente os controles pequenos indicados ficam sem caixa.
   Transparencia revela a superficie branca/cinza/escura real do contexto.
   Bordas ficam invisiveis sem mudar espessura, caixa, posicao, cor ou hover.
   O indicador de foco do teclado e preservado. */
@media screen{
  body.siog-modern .visao-real :is(.line-tools > button,.visao-side .side-link,.visao-side-title > a,.visao-value-kpis a):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    background-color:transparent!important;
    border-color:transparent!important;
  }
  body.siog-modern .visao-real :is(.line-tools > button,.visao-side .side-link,.visao-side-title > a,.visao-value-kpis a):not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    outline:none!important;
  }
}


/* 110. Visao Geral: painel acompanha o conteudo e Adicionar fica proximo
   da ultima linha. O aviso entra no fluxo para nao sair da borda do painel.
   Conserva o respiro inferior, a largura/alinhamento do botao e os campos. */
@media screen{
  body.siog-modern .visao-real .visao-dados{min-height:0;}
  body.siog-modern .visao-real .visao-dados > .visao-note{float:none;}
}
@media screen and (min-width:601px){
  body.siog-modern .visao-real .visao-dados > .visao-lines > .visao-line:last-child{min-height:0;}
  body.siog-modern .visao-real .visao-dados > .visao-add{margin-top:12px;}
}


/* 111. Cards compartilhados do orcamento: icones sem caixa.
   Somente pintura: preserva bordas dimensionais, posicao, desenho da
   calculadora, cores, hover e foco visivel do teclado. */
@media screen{
  body.siog-modern .rel-top-grid > .rel-box :is(.rel-box-title > em > a,.rel-kpis .rel-mini-edit):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    background-color:transparent!important;
    border-color:transparent!important;
  }
  body.siog-modern .rel-top-grid > .rel-box :is(.rel-box-title > em > a,.rel-kpis .rel-mini-edit):not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    outline:none!important;
  }
}


/* 112. Visao Geral reutiliza os cards canonicos na lateral, sem a grade
   horizontal do topo. A altura acompanha o conteudo; recolher continua 45px. */
@media screen{
  body.siog-modern .visao-real .visao-side > .rel-top-grid{
    grid-template-columns:minmax(0,1fr)!important;
    gap:14px;
    margin-bottom:0;
    min-width:0;
  }
  body.siog-modern .visao-real .visao-side > .rel-top-grid > .rel-box:not(.is-collapsed){
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
  }
}


/* 113. Etapas / Servicos: engrenagens das linhas no tamanho do cabecalho. */
@media screen{
  body.siog-modern .plan-table .plan-gear-col > .gear-btn{
    width:22px;
    height:22px;
    min-width:22px;
    min-height:22px;
    padding:0;
    border-radius:4px;
    font-size:10.5px;
    line-height:1;
  }
  body.siog-modern .plan-table .plan-gear-col > .gear-btn > i{
    font-size:inherit;
  }
}


/* 114. Cabecalho da planilha: o scroll horizontal e o ancestral sticky.
   O afastamento da barra global (45px) aqui cobria a primeira linha. */
@media screen{
  body.siog-modern .siog-description-scroll .plan-table > thead > tr > th{
    top:0;
  }
}


/* 115. Rodape dos orcamentos: altura da janela ou do conteudo real,
   sem os minimos legados de 1590/2900/9545px. Nao altera paineis internos. */
@media screen{
  body.siog-modern.orcamento-shell:not(.sb-bare){
    min-height:100vh!important;
    min-height:100dvh!important;
  }
  body.siog-modern.orcamento-shell:not(.sb-bare) > .wrapper{
    display:flex;
    flex-direction:column;
    min-height:100vh!important;
    min-height:100dvh!important;
  }
  body.siog-modern.orcamento-shell:not(.sb-bare) > .wrapper > .content-wrapper{
    flex:1 0 auto;
    min-height:0!important;
  }
  body.siog-modern.orcamento-shell:not(.sb-bare) > .wrapper > :is(.main-header,.main-footer){
    flex-shrink:0;
  }
  body.siog-modern.orcamento-shell.layout-fixed:not(.sb-bare) > .wrapper > .main-sidebar{
    position:fixed!important;
    min-height:0!important;
    height:100vh!important;
    height:100dvh!important;
  }
}


/* 116. Cronograma: lupas sem fundo/contorno decorativo.
   Preserva medidas, posicionamento, cor, hover e foco visivel do teclado. */
@media screen{
  body.siog-modern.crono-page .crono-drill:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    background-color:transparent!important;
    border-color:transparent!important;
  }
  body.siog-modern.crono-page .crono-drill:not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    outline:none!important;
  }
}


/* 117. Cronograma: linhas de visualizacao em 2/3 dos 64px anteriores.
   Percentual e valor ocupam espacos iguais, sem reduzir a fonte.
   Descricoes longas continuam aumentando a linha; editor e totais intactos. */
@media screen{
  body.siog-modern.crono-page .crono-table-shell:not(.editing) .crono-table > tbody > tr[data-crono-row] > td{
    height:42.6667px;
    padding-top:4.6667px;
    padding-bottom:4.6667px;
  }
  body.siog-modern.crono-page .crono-table-shell:not(.editing) :is(.crono-bar-cell,.crono-total-cell > div){
    min-height:32px;
  }
  body.siog-modern.crono-page .crono-table-shell:not(.editing) :is(.crono-bar-cell,.crono-total-cell > div) > :is(strong,small){
    line-height:1;
  }
  body.siog-modern.crono-page .crono-table-shell:not(.editing) :is(.crono-bar-cell,.crono-total-cell > div) > i{
    margin-top:4.5px;
    margin-bottom:4.5px;
  }
}


/* 118. Apenas botoes/links de editar ou excluir com simbolo isolado.
   Identificacao explicita nos templates/renderers; sem mudar fundo, cor,
   dimensoes, posicao, hover ou eventos. Foco de teclado permanece visivel. */
@media screen{
  body.siog-modern [data-siog-icon-borderless]:has(:is(.fa-edit,.fa-pen-to-square,.fa-pen,.fa-pencil,.fa-pencil-alt,.fa-pencil-square-o,.fa-trash,.fa-trash-alt,.fa-trash-can,.fa-trash-o)):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    border-color:transparent!important;
  }
  body.siog-modern [data-siog-icon-borderless]:has(:is(.fa-edit,.fa-pen-to-square,.fa-pen,.fa-pencil,.fa-pencil-alt,.fa-pencil-square-o,.fa-trash,.fa-trash-alt,.fa-trash-can,.fa-trash-o)):not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    outline:none!important;
  }
}


/* 119. Corrigir/restaurar e mostrar/ocultar: somente controles de icone.
   Sem alterar fundo, geometria, cores, sombra ou foco visivel do teclado. */
@media screen{
  body.siog-modern [data-siog-icon-borderless="restore-visibility"]:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    border-color:transparent!important;
  }
  body.siog-modern [data-siog-icon-borderless="restore-visibility"]:not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    outline:none!important;
  }
}


/* 120. Seta para baixo isolada: contorno invisivel e superficie transparente.
   Seletores de acao existentes cobrem tambem os renderers dinamicos; nao
   alcanca navegacao, ordenacao de cabecalhos nem botoes acompanhados de texto.
   Conserva borda dimensional, foco de teclado, hover, posicao e bloqueios. */
@media screen{
  body.siog-modern :is(
    .visao-real .line-tools > button[name="campo_acao"][value^="down:"],
    .orc-new-page a[data-move="down"],
    a[data-cab-move="down"],
    button.uniao-row-down,
    button.bdi-builder-order-button,
    button.crono-period-toggle,
    button[data-memory-line-move="down"],
    button[data-memory-group-move="down"],
    button[data-memory-group-line-move="down"]
  ):has(> i.fa-caret-down):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    border-color:transparent!important;
    background-color:transparent!important;
    background-image:none!important;
  }
  body.siog-modern :is(
    .visao-real .line-tools > button[name="campo_acao"][value^="down:"],
    .orc-new-page a[data-move="down"],
    a[data-cab-move="down"],
    button.uniao-row-down,
    button.bdi-builder-order-button,
    button.crono-period-toggle,
    button[data-memory-line-move="down"],
    button[data-memory-group-move="down"],
    button[data-memory-group-line-move="down"]
  ):has(> i.fa-caret-down):not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    outline:none!important;
  }
}


/* 121. Relatorios: retirar apenas o contorno externo dos icones PDF/XLS/DOC.
   Preserva o SVG de fundo, cores, dimensoes, hover e foco de teclado.
   Links com texto e exportacoes de outras telas permanecem inalterados. */
@media screen{
  body.siog-modern.rel-page .rel-online-page .rel-icon-export:is(.pdf,.excel,.word):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    border-color:transparent!important;
  }
  body.siog-modern.rel-page .rel-online-page .rel-icon-export:is(.pdf,.excel,.word):not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    outline:none!important;
  }
}


/* 122. Raiz da planilha: seta de recolher/expandir sem preenchimento.
   Apenas a cor de fundo muda; preserva geometria, icone, foco e estados. */
@media screen{
  body.siog-modern .plan-workspace .plan-tree > button.plan-tree-collapse:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    background-color:transparent!important;
  }
}


/* 123. Relatorios: titulos expansivos sem contorno externo.
   Mantem fundos, espessura dimensional da borda, fontes, espacos, setas,
   foco de teclado e comportamento; nao altera campos nem botoes de acao. */
@media screen{
  body.siog-modern.rel-page .rel-online-page :is(
    a.rel-plan-subtitle,
    a.rel-section-title-control,
    a.rel-collapse-title,
    a.abc-section-toggle,
    a.abc-report-title,
    a.cron-report-title,
    a.cron-filter-toggle,
    a.dd-titulo
  ):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    border-color:transparent!important;
  }
  body.siog-modern.rel-page .rel-online-page :is(
    a.rel-plan-subtitle,
    a.rel-section-title-control,
    a.rel-collapse-title,
    a.abc-section-toggle,
    a.abc-report-title,
    a.cron-report-title,
    a.cron-filter-toggle,
    a.dd-titulo
  ):not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    outline:none!important;
  }
}


/* 124. Insumos & Composicoes: cinco alternadores de coluna sem contorno.
   Preserva fundos, dimensoes, texto, icones, foco e ocultacao das colunas;
   nao alcanca Mostrar diferencas, categorias, filtros ou outros botoes. */
@media screen{
  body.siog-modern .ajustes-serv-page .ajs-filter .ajs-checks > label.ajs-eye:is([data-col="val-of"],[data-col="val-ut"],[data-col="col-origem"],[data-col="col-total"],[data-col="col-peso"]):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    border-color:transparent!important;
  }
  body.siog-modern .ajustes-serv-page .ajs-filter .ajs-checks > label.ajs-eye:is([data-col="val-of"],[data-col="val-ut"],[data-col="col-origem"],[data-col="col-total"],[data-col="col-peso"]):not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    outline:none!important;
  }
}


/* 125. Visao Geral: campo Pasta sem preenchimento nem contorno interno.
   Preserva contorno externo, seta nativa, foco e demais
   campos permanecem inalterados, inclusive no tema escuro. */
@media screen{
  body.siog-modern .visao-real .visao-side .folder-row > select[name="pasta_id"]:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    background-color:transparent!important;
    border-color:transparent!important;
  }
}


/* 126. Editor de BDI: categoria organizada no cabecalho e as duas setas
   isoladas sem caixa. A geometria dos botoes e o foco de teclado permanecem. */
@media screen{
  body.siog-modern .bdi-online-fieldset:has(> .bdi-online-category) > .bdi-online-title{
    width:calc(100% - 234px);
  }
  body.siog-modern .bdi-online-fieldset > .bdi-online-category{
    grid-column:1;
    grid-row:1;
    justify-self:end;
    width:220px;
    height:47px;
  }
  body.siog-modern .bdi-online-category > strong{
    display:block;
    width:100%;
    height:47px;
    box-sizing:border-box;
    padding:21px 10px 4px;
    border:1px solid var(--id-border);
    border-radius:var(--id-radius-sm);
    background:var(--id-inset);
    color:var(--id-text);
    font-size:12.5px;
    font-weight:500;
    line-height:21px;
    text-align:center;
  }
  body.siog-modern button.bdi-builder-order-button:has(> i:is(.fa-caret-up,.fa-caret-down)):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    border-color:transparent!important;
    background-color:transparent!important;
    background-image:none!important;
    box-shadow:none!important;
  }
  body.siog-modern button.bdi-builder-order-button:has(> i:is(.fa-caret-up,.fa-caret-down)):not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    outline:none!important;
  }
}

@media screen and (max-width:900px){
  body.siog-modern .bdi-online-fieldset:has(> .bdi-online-category){
    grid-template-rows:47px 47px 47px 47px 47px 47px;
  }
  body.siog-modern .bdi-online-fieldset:has(> .bdi-online-category) > .bdi-online-title{
    width:100%;
  }
  body.siog-modern .bdi-online-fieldset > .bdi-online-category{
    grid-column:1;
    grid-row:2;
    justify-self:stretch;
    width:100%;
  }
  body.siog-modern .bdi-online-fieldset:has(> .bdi-online-category) > .bdi-online-valor{grid-row:3}
  body.siog-modern .bdi-online-fieldset:has(> .bdi-online-category) > .bdi-online-formula{grid-row:4}
  body.siog-modern .bdi-online-fieldset:has(> .bdi-online-category) > .bdi-budget-search-button,
  body.siog-modern .bdi-online-fieldset:has(> .bdi-online-category) > .bdi-online-switch,
  body.siog-modern .bdi-online-fieldset:has(> .bdi-online-category) > .bdi-formula-error{grid-row:5}
  body.siog-modern .bdi-online-fieldset:has(> .bdi-online-category) > .bdi-reference-field{grid-row:6}
}


/* 127. Editor de BDI: maximizar, fechar e informacoes sem caixa externa.
   O ultimo fica transparente para revelar exatamente o fundo da Referencia. */
@media screen{
  body.siog-modern .bdi-online-modal-tools > :is(.bdi-modal-maximize,.bdi-modal-close):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style),
  body.siog-modern .bdi-reference-field > button.bdi-reference-info:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    border-color:transparent!important;
    background-color:transparent!important;
    background-image:none!important;
    box-shadow:none!important;
  }
  body.siog-modern .bdi-online-modal-tools > :is(.bdi-modal-maximize,.bdi-modal-close):not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style),
  body.siog-modern .bdi-reference-field > button.bdi-reference-info:not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    outline:none!important;
  }
}


/* 128. Navegacao: a pagina aparece diretamente no tema ja resolvido no head.
   Remove o fade global que deixava o fundo exposto por 220 ms a cada carga. */
@media screen{
  body.siog-modern .content-wrapper{
    animation:none!important;
  }
}


/* 129. BDI aberto na casca global: o seletor fica no rodape do formulario.
   Abrir para cima usa o espaco interno disponivel e evita o corte pelos
   tres recipientes rolaveis do modal; a lista conserva sua propria rolagem. */
@media screen{
  body.siog-modern .sb-modal-bdi .bdi-model-select .sb-combo-list{
    top:auto;
    bottom:calc(100% + 3px);
    margin:0;
    max-height:min(220px,calc(92vh - 180px));
    z-index:50;
  }
}


/* 130. Site inteiro: controles isolados de maximizar/restaurar e fechar.
   O mapa inclui os modais globais e locais; X de remover/excluir item fica
   fora. Fundo transparente integra o icone ao cabecalho em que ele aparece.
   O contorno de acessibilidade continua visivel somente no foco por teclado. */
@media screen{
  body.siog-modern :is(
    .sb-modal-max,
    [data-siog-action-tone]:has(> i:is(.fa-expand,.fa-expand-arrows-alt,.fa-maximize,.fa-compress,.fa-compress-arrows-alt,.fa-minimize)),
    [data-siog-action-tone].sb-modal-x,
    [data-siog-action-tone][aria-label="Close"],
    [data-siog-action-tone][aria-label^="Fechar"],
    [data-siog-action-tone].ft-x,
    [data-siog-action-tone].regra-close,
    [data-siog-action-tone][data-close-modal]:not(.btn),
    [data-siog-action-tone][data-ajs-close]:not(.btn),
    [data-siog-action-tone][data-child-close]:not(.btn),
    [data-siog-action-tone][data-enc-modal-close]:not(.enc-cancel),
    [data-siog-action-tone][data-bdi-modal-close]:not(.bdi-cancel),
    [data-siog-action-tone].prop-import-editor-close,
    .pref-editor-head > [data-siog-action-tone][data-pref-close],
    .cad-icon-btn.no:has(> i.fa-times)
  ):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    border-color:transparent!important;
    background-color:transparent!important;
    background-image:none!important;
    box-shadow:none!important;
  }
  body.siog-modern :is(
    .sb-modal-max,
    [data-siog-action-tone]:has(> i:is(.fa-expand,.fa-expand-arrows-alt,.fa-maximize,.fa-compress,.fa-compress-arrows-alt,.fa-minimize)),
    [data-siog-action-tone].sb-modal-x,
    [data-siog-action-tone][aria-label="Close"],
    [data-siog-action-tone][aria-label^="Fechar"],
    [data-siog-action-tone].ft-x,
    [data-siog-action-tone].regra-close,
    [data-siog-action-tone][data-close-modal]:not(.btn),
    [data-siog-action-tone][data-ajs-close]:not(.btn),
    [data-siog-action-tone][data-child-close]:not(.btn),
    [data-siog-action-tone][data-enc-modal-close]:not(.enc-cancel),
    [data-siog-action-tone][data-bdi-modal-close]:not(.bdi-cancel),
    [data-siog-action-tone].prop-import-editor-close,
    .pref-editor-head > [data-siog-action-tone][data-pref-close],
    .cad-icon-btn.no:has(> i.fa-times)
  ):not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    outline:none!important;
  }
}


/* 131. Site inteiro: duplicar e favoritar quando o controle e somente icone.
   A marcacao explicita impede que botoes textuais como "Duplicar Orcamento"
   percam sua superficie. Mantem o contorno apenas no foco por teclado. */
@media screen{
  body.siog-modern [data-siog-icon-borderless="copy-favorite"]:has(> i:is(.fa-copy,.fa-clone,.fa-star)):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    border-color:transparent!important;
    background-color:transparent!important;
    background-image:none!important;
    box-shadow:none!important;
  }
  body.siog-modern [data-siog-icon-borderless="copy-favorite"]:has(> i:is(.fa-copy,.fa-clone,.fa-star)):not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    outline:none!important;
  }
}

/* ==========================================================================
   89. Backup / Versoes: o que cada protecao recupera — 05/09/2026
   ========================================================================== */
body.siog-modern .versoes-info-card{padding:12px 16px;margin-bottom:10px}
body.siog-modern .versoes-info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 24px}
body.siog-modern .versoes-info-col h3{font-size:13px;font-weight:700;margin:0 0 6px;color:var(--id-text-strong,var(--id-text))}
body.siog-modern .versoes-info-col h3 small{font-weight:400;color:var(--id-muted);font-size:11px}
body.siog-modern .versoes-info-col h3 i{margin-right:6px;color:var(--id-accent)}
body.siog-modern .versoes-info-col p{font-size:12px;line-height:1.45;margin:0 0 6px;color:var(--id-text)}
@media(max-width:900px){body.siog-modern .versoes-info-grid{grid-template-columns:1fr}}

/* ==========================================================================
   90. Relatorios: legenda "opcoes desta exportacao x padrao salvo" — 05/09/2026
   ========================================================================== */
body.siog-modern .rel-opcoes-legenda{
  margin:6px 0 10px;padding:7px 12px;font-size:12px;line-height:1.4;
  border:1px solid var(--id-border);border-left:3px solid var(--id-accent);
  border-radius:var(--id-radius-sm,4px);background:var(--id-surface);color:var(--id-text);
}
body.siog-modern .rel-opcoes-legenda i{color:var(--id-accent);margin-right:4px}

/* ==========================================================================
   88. Resumo compacto dos cartoes (Etapas & Servicos) — 05/09/2026

   Os tres cartoes (Dados, Fontes, Valores) tomavam ~330px antes da tabela
   durante a edicao. `_cartoes_topo.html` desenha uma faixa de resumo quando
   a tela liga `cartoes_compacto`; o estado vive em body.cartoes-compactos
   (escolha guardada no navegador; padrao compacto) e "Detalhes" reabre os
   cartoes. Cores pelos tokens do tema, sem cinza cravado.
   ========================================================================== */
body.siog-modern.cartoes-compactos .rel-top-grid{display:none!important}
body.siog-modern .rel-resumo-compacto{
  display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;
  padding:7px 14px;margin:0 0 10px;
  border:1px solid var(--id-border);border-radius:var(--id-radius,6px);
  background:var(--id-surface);color:var(--id-text);font-size:12px;
}
body.siog-modern .rel-resumo-compacto[hidden],
body.siog-modern .rel-resumo-voltar[hidden]{display:none!important}
body.siog-modern .rel-resumo-compacto .rrc-id{
  font-weight:700;font-size:12px;padding:2px 7px;border-radius:6px;
  background:var(--id-accent-dim);color:var(--id-accent-text);white-space:nowrap;
}
body.siog-modern .rel-resumo-compacto .rrc-obra{
  flex:1 1 240px;min-width:120px;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;font-weight:500;color:var(--id-text-strong,var(--id-text));
}
body.siog-modern .rel-resumo-compacto .rrc-sep{width:1px;height:18px;background:var(--id-border)}
body.siog-modern .rel-resumo-compacto .rrc-fontes{display:flex;flex-wrap:wrap;gap:3px 10px}
body.siog-modern .rel-resumo-compacto .rrc-fonte{white-space:nowrap}
body.siog-modern .rel-resumo-compacto .rrc-fonte.aux{color:var(--id-muted)}
body.siog-modern .rel-resumo-compacto .rrc-fonte small{font-size:9px;color:var(--id-muted)}
body.siog-modern .rel-resumo-compacto .rrc-kpi{white-space:nowrap}
body.siog-modern .rel-resumo-compacto .rrc-kpi b{font-weight:700;color:var(--id-text-strong,var(--id-text))}
body.siog-modern .rel-resumo-compacto .rrc-edit{padding:0 2px;font-size:12px}
body.siog-modern .rel-resumo-compacto .rrc-toggle{margin-left:auto;white-space:nowrap;font-size:11px}
body.siog-modern .rel-resumo-voltar{display:flex;justify-content:flex-end;margin:0 0 4px}
body.siog-modern .rel-resumo-voltar a{font-size:11px}
@media(max-width:1440px){
  body.siog-modern .rel-resumo-compacto .rrc-obra{flex-basis:100%}
}

/* ==========================================================================
   91. Relatorios: andamento das exportacoes — 05/09/2026
   ========================================================================== */
body.siog-modern .rel-andamento{
  position:fixed;right:18px;bottom:18px;z-index:1080;max-width:min(520px,calc(100vw - 36px));
  display:flex;align-items:center;gap:10px;padding:10px 14px;font-size:12px;line-height:1.35;
  border:1px solid var(--id-border);border-left:4px solid var(--id-accent);border-radius:var(--id-radius,6px);
  background:var(--id-surface);color:var(--id-text);box-shadow:var(--id-shadow-pop,0 6px 24px rgba(0,0,0,.18));
}
body.siog-modern .rel-andamento[hidden]{display:none!important}
body.siog-modern .rel-andamento[data-estado="concluido"]{border-left-color:var(--id-success)}
body.siog-modern .rel-andamento[data-estado="falhou"]{border-left-color:var(--id-danger)}
body.siog-modern .rel-andamento[data-estado="cancelado"]{border-left-color:var(--id-muted)}
body.siog-modern .rel-andamento .rel-andamento-icone{font-size:16px;color:var(--id-accent)}
body.siog-modern .rel-andamento[data-estado="concluido"] .rel-andamento-icone{color:var(--id-success)}
body.siog-modern .rel-andamento[data-estado="falhou"] .rel-andamento-icone{color:var(--id-danger)}
body.siog-modern .rel-andamento .rel-andamento-texto{flex:1 1 auto;min-width:0}
body.siog-modern .rel-andamento .rel-andamento-cancelar{font-size:11px;padding:2px 8px}
body.siog-modern .rel-andamento .rel-andamento-cancelar[hidden]{display:none!important}
body.siog-modern .rel-andamento .rel-andamento-fechar{font-size:16px;line-height:1;padding:0 4px}
body.siog-modern .tj-status{font-size:11px;padding:4px 10px;color:var(--id-muted)}
body.siog-modern .tj-status[hidden]{display:none!important}
body.siog-modern .tj-status[data-estado="pronto"]{color:var(--id-success)}
body.siog-modern .tj-status[data-estado="falhou"]{color:var(--id-danger)}

/* ==========================================================================
   92. Sincronizar Fontes/Tabelas: Verificar -> Mostrar -> Aplicar — 05/09/2026
   ========================================================================== */
body.siog-modern .sync-fluxo{margin:0 0 10px;padding:7px 12px;font-size:12px;line-height:1.4;border:1px solid var(--id-border);border-left:3px solid var(--id-accent);border-radius:var(--id-radius-sm,4px);background:var(--id-surface);color:var(--id-text)}
body.siog-modern .sync-fluxo i{color:var(--id-accent);margin-right:4px}
body.siog-modern .sync-previa-card{padding:12px 16px;margin-top:10px}
body.siog-modern .sync-previa-titulo{font-size:14px;font-weight:700;margin:0 0 8px;color:var(--id-text-strong,var(--id-text))}
body.siog-modern .sync-previa-titulo small{font-weight:400;font-size:11px;color:var(--id-muted)}
body.siog-modern .sync-previa-titulo i{color:var(--id-accent);margin-right:6px}
body.siog-modern .sync-previa-resumo,body.siog-modern .sync-previa-nota{font-size:12px;line-height:1.45;margin:0 0 8px;color:var(--id-text)}
body.siog-modern .sync-previa-nota{color:var(--id-muted)}
body.siog-modern .sync-previa-table{font-size:11px}
body.siog-modern .sync-previa-table tr.sync-nova td{font-weight:600}
body.siog-modern .sync-previa-financeiro{display:flex;flex-wrap:wrap;gap:8px 28px;margin:10px 0 8px;font-size:12px}
body.siog-modern .sync-previa-financeiro b{font-weight:700;color:var(--id-text-strong,var(--id-text))}
body.siog-modern .sync-previa-msg{color:var(--id-muted);font-style:italic}
body.siog-modern .extra-head-actions a.disabled{opacity:.5;pointer-events:auto;cursor:not-allowed}

/* 93. Resumo do detalhe: contraste no tema escuro - 06/09/2026 */
body.siog-modern:not(.tema-claro) #modal-item-detail .detail-summary-col > b,
body.siog-modern:not(.tema-claro) #modal-item-detail .detail-summary-col > span,
body.siog-modern:not(.tema-claro) #modal-item-detail .detail-summary-col > strong{color:var(--id-text)}
body.siog-modern:not(.tema-claro) #modal-item-detail .detail-summary-col > em{color:var(--id-muted)}
body.siog-modern:not(.tema-claro) #modal-item-detail .detail-values-card h5{background:var(--id-surface);color:var(--id-text);border-color:var(--id-border)}

/* 94. Configuracao de encargos: contraste das opcoes no escuro - 06/09/2026 */
body.siog-modern:not(.tema-claro) .enc-config-radio,
body.siog-modern:not(.tema-claro) .enc-config-radio > span{color:var(--id-text)}
body.siog-modern:not(.tema-claro) .enc-config-radio > label{background:var(--id-surface);color:var(--id-text);border-color:var(--id-border)}
body.siog-modern:not(.tema-claro) .enc-config-note{color:var(--id-muted)}


/* 117. Criar Orcamento: mesma composicao visual da Visao Geral.
   Mantem os nomes e controles do formulario novo; muda somente a apresentacao. */
@media screen{
  body.siog-modern .orc-new-page form.orc-new-visao .orc-two-col.visao-grid{
    grid-template-columns:minmax(700px,1fr) 384px!important;
    gap:15px!important;
    margin:9px 0 0!important;
    transform:none;
    align-items:start;
  }
  body.siog-modern .orc-new-page form.orc-new-visao .orc-dados-card{
    margin:0!important;
    padding-bottom:16px!important;
    min-height:0!important;
    overflow:visible!important;
  }
  body.siog-modern .orc-new-page form.orc-new-visao .visao-panel-title{
    height:36px!important;
    min-height:36px;
    box-sizing:border-box;
    display:flex;
    align-items:center;
    padding:10px 18px!important;
    font-size:12px!important;
    font-weight:700!important;
    line-height:16px!important;
    text-transform:uppercase;
  }
  body.siog-modern .orc-new-page form.orc-new-visao .orc-new-dados-body{
    display:block!important;
    padding:0!important;
  }
  body.siog-modern.orc-new-body .orc-new-page form.orc-new-visao .orc-top-fields.visao-fixed-grid{
    display:grid;
    grid-template-columns:28px 134px repeat(4,minmax(0,1fr)) 104px!important;
    gap:16px!important;
    padding:23px 15px 0!important;
    margin:0 0 10px!important;
    transform:none!important;
    min-width:0;
  }
  body.siog-modern.orc-new-body .orc-new-page form.orc-new-visao .orc-top-fields>.visao-field:first-child{grid-column:3!important}
  body.siog-modern .orc-new-page form.orc-new-visao .orc-field-box .form-control{
    width:100%;
    min-height:42px;
    height:42px!important;
    border-radius:var(--id-radius-sm,4px)!important;
    padding:17px 10px 4px!important;
  }
  body.siog-modern .orc-new-page form.orc-new-visao .orc-info-table.visao-lines{
    display:block!important;
    padding:0 15px!important;
  }
  body.siog-modern .orc-new-page form.orc-new-visao .orc-info-row.visao-line{
    display:grid!important;
    grid-template-columns:28px 134px minmax(260px,1fr) 104px!important;
    gap:16px!important;
    height:auto!important;
    min-height:58px!important;
    align-items:start;
  }
  body.siog-modern .orc-new-page form.orc-new-visao .orc-info-row.visao-line:first-child{min-height:61.5px!important}
  body.siog-modern .orc-new-page form.orc-new-visao .orc-info-row.visao-line:nth-child(4){min-height:78.3px!important}
  body.siog-modern .orc-new-page form.orc-new-visao .orc-info-row.visao-line:last-child{min-height:0!important}
  body.siog-modern .orc-new-page form.orc-new-visao .orc-info-idx{padding:8px 0 0!important;text-align:right;line-height:normal}
  body.siog-modern .orc-new-page form.orc-new-visao .orc-info-title{
    width:100%;
    min-height:24px!important;
    height:24px!important;
    border-radius:var(--id-radius-sm,4px)!important;
    padding:3px 6px!important;
  }
  body.siog-modern .orc-new-page form.orc-new-visao textarea.orc-info-value{
    grid-column:3;
    width:100%!important;
    min-height:47px!important;
    height:47px!important;
    transform:none!important;
    border-radius:var(--id-radius-sm,4px)!important;
    padding:7px 8px!important;
  }
  body.siog-modern .orc-new-page form.orc-new-visao .line-tools{
    grid-column:4;
    display:grid;
    grid-template-columns:16px 12px 12px 12px;
    grid-template-rows:18px;
    column-gap:14px;
    row-gap:0;
    align-items:center;
    justify-items:center;
    justify-content:center;
    padding-top:9px;
  }
  /* O span legado de 0x0 ainda ocupava uma celula e criava outra linha.
     Os controles reais sempre pertencem a linha 1, inclusive apos Adicionar. */
  body.siog-modern .orc-new-page form.orc-new-visao .line-tools>.orc-row-icons{display:none!important}
  body.siog-modern .orc-new-page form.orc-new-visao .line-tools .orc-eye,
  body.siog-modern .orc-new-page form.orc-new-visao .line-tools>a{
    grid-row:1!important;
    position:relative;
    display:inline-flex!important;
    align-items:center;
    justify-content:center;
    min-width:0;
    width:12px;
    height:18px;
    padding:0!important;
    color:var(--id-text)!important;
  }
  body.siog-modern .orc-new-page form.orc-new-visao .line-tools .orc-eye{grid-column:1;width:16px}
  body.siog-modern .orc-new-page form.orc-new-visao .line-tools>[data-move="up"]{grid-column:2}
  body.siog-modern .orc-new-page form.orc-new-visao .line-tools>[data-move="down"]{grid-column:3}
  body.siog-modern .orc-new-page form.orc-new-visao .line-tools>a.danger-icon{grid-column:4;color:var(--id-danger)!important}
  body.siog-modern .orc-new-page form.orc-new-visao .line-tools>a:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style),
  body.siog-modern .orc-new-page form.orc-new-visao .orc-new-fontes-box .rel-box-title>em>a:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    background-color:transparent!important;
    border-color:transparent!important;
  }
  body.siog-modern .orc-new-page form.orc-new-visao .line-tools>a:not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style),
  body.siog-modern .orc-new-page form.orc-new-visao .orc-new-fontes-box .rel-box-title>em>a:not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    outline:none!important;
  }
  body.siog-modern .orc-new-page form.orc-new-visao .add-row-btn.visao-add{
    margin:12px 0 0 59px!important;
    width:134px!important;
    height:38px;
    padding:9px 10px!important;
    justify-content:center;
  }
  body.siog-modern .orc-new-page form.orc-new-visao .visao-note{
    float:none;
    margin:12px 18px 0!important;
  }
  body.siog-modern .orc-new-page form.orc-new-visao .orc-side-stack.visao-side{
    display:flex!important;
    flex-direction:column;
    gap:14px!important;
  }
  body.siog-modern .orc-new-page form.orc-new-visao .visao-side-box{margin:0!important}
  body.siog-modern .orc-new-page form.orc-new-visao .folder-row select{
    border:0!important;
    min-height:36px;
    height:36px;
    padding:0 10px;
    background:transparent!important;
    color:var(--id-text)!important;
  }
  body.siog-modern .orc-new-page form.orc-new-visao .marker-row{margin:0!important}
  body.siog-modern .orc-new-page form.orc-new-visao .side-link{
    background:transparent!important;
    border-color:transparent!important;
  }
  body.siog-modern .orc-new-page form.orc-new-visao .orc-new-fontes-box,
  body.siog-modern .orc-new-page form.orc-new-visao .orc-new-logo-box{
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    margin:0!important;
    overflow:hidden!important;
  }
  body.siog-modern .orc-new-page form.orc-new-visao .orc-new-fontes-box .rel-box-title,
  body.siog-modern .orc-new-page form.orc-new-visao .orc-new-logo-box .rel-box-title{
    height:45px;
    padding:0 14px;
    text-transform:uppercase;
  }
  body.siog-modern .orc-new-page form.orc-new-visao .orc-new-fontes-box .ft-card-body{
    min-height:0!important;
    padding:14px 22px 18px!important;
  }
  body.siog-modern .orc-new-page form.orc-new-visao .orc-new-logo-box .logo-preview{
    min-height:112px;
  }
}
@media screen and (max-width:1200px){
  body.siog-modern .orc-new-page form.orc-new-visao .orc-two-col.visao-grid{grid-template-columns:1fr!important}
  body.siog-modern.orc-new-body .orc-new-page form.orc-new-visao .orc-top-fields.visao-fixed-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    padding:16px 12px 0!important;
  }
  body.siog-modern.orc-new-body .orc-new-page form.orc-new-visao .orc-top-fields>.visao-field:first-child{grid-column:auto!important}
  body.siog-modern .orc-new-page form.orc-new-visao .orc-info-row.visao-line{
    grid-template-columns:28px 122px minmax(220px,1fr)!important;
  }
  body.siog-modern .orc-new-page form.orc-new-visao .line-tools{grid-column:3!important}
}
@media screen and (max-width:600px){
  body.siog-modern .orc-new-page form.orc-new-visao .orc-info-row.visao-line{
    grid-template-columns:24px minmax(0,1fr)!important;
    gap:5px 8px!important;
    min-height:0!important;
    padding-bottom:13px;
  }
  body.siog-modern .orc-new-page form.orc-new-visao .orc-info-row .orc-info-idx{grid-column:1;grid-row:1}
  body.siog-modern .orc-new-page form.orc-new-visao .orc-info-row .orc-info-main{grid-column:2;grid-row:1}
  body.siog-modern .orc-new-page form.orc-new-visao .orc-info-row textarea.orc-info-value{grid-column:2;grid-row:2}
  body.siog-modern .orc-new-page form.orc-new-visao .orc-info-row .line-tools{grid-column:2!important;grid-row:3;justify-content:flex-end}
  body.siog-modern .orc-new-page form.orc-new-visao .add-row-btn.visao-add{margin-left:40px!important;width:calc(100% - 48px)!important}
}


/* Criacao: superficies transparentes e auxiliares junto da fonte principal. */
body.siog-modern .orc-new-page form.orc-new-visao .folder-row > :is(b,select):not(#siog-type-scope):not(#siog-type-priority){
  background:transparent!important;
}
body.siog-modern #orc-logo-clear:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
  background:transparent!important;
  border-color:transparent!important;
}
body.siog-modern #orc-logo-clear:not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){outline:none!important}
body.siog-modern .orc-base-auxiliar > b{padding-left:12px}
body.siog-modern .cfp-selected-row.cfp-auxiliar > .cfp-aux-name{
  grid-column:1 / 3;grid-row:1;
  display:grid;grid-template-columns:48px minmax(0,1fr);align-items:center;
  min-width:0;
}
body.siog-modern .cfp-aux-name > .cfp-aux-label{
  justify-content:center;background:var(--id-inset)!important;
  border:1px solid var(--id-border)!important;min-width:0;
}
body.siog-modern .cfp-aux-name > .cfp-trash{margin:0!important;justify-self:center}
body.siog-modern .cfp-selected-row.cfp-auxiliar > .cfp-uf{grid-column:3;grid-row:1}
body.siog-modern .cfp-selected-row.cfp-auxiliar > .cfp-comp{grid-column:4;grid-row:1}
body.siog-modern .cfp-selected-row.cfp-auxiliar > :is(.cfp-deson,.cfp-no-deson){grid-column:5;grid-row:1}


/* 132. Planilha: setas para cima e setas laterais da configuracao de colunas
   sem o quadrado externo. Mantem dimensoes, posicao, cor e comportamento. */
@media screen{
  body.siog-modern .plan-table td.plan-order-col > button.plan-order-up:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style),
  body.siog-modern .plan-modal-columns .cols-selected-card > :is(button.cols-left,button.cols-right):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style),
  body.siog-modern .pref-cab-editor .pref-cab-acoes > a[data-cab-move="up"]:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
    border-color:transparent!important;
    background-color:transparent!important;
    background-image:none!important;
    box-shadow:none!important;
    outline:none!important;
  }
}

@media(max-width:767px){
  body.siog-modern .cfp-selected-row.cfp-auxiliar > .cfp-aux-name{grid-column:1 / -1;grid-row:1}
  body.siog-modern .cfp-selected-row.cfp-auxiliar > .cfp-uf{grid-area:uf}
  body.siog-modern .cfp-selected-row.cfp-auxiliar > .cfp-comp{grid-area:comp}
  body.siog-modern .cfp-selected-row.cfp-auxiliar > :is(.cfp-deson,.cfp-no-deson){grid-area:deson}
}

/* 133. Importar: Fontes & Tabelas no formato de Criar Novo. */
body.siog-modern :is(.orc-import-page,.import-review-page) .import-fontes-box{
  height:auto!important;min-height:0!important;max-height:none!important;
  align-self:start;overflow:hidden!important;
}
body.siog-modern :is(.orc-import-page,.import-review-page) .import-fontes-box .rel-box-title{
  height:45px;padding:0 14px;text-transform:uppercase;
}
body.siog-modern :is(.orc-import-page,.import-review-page) .import-fontes-box .ft-card-body{
  min-height:0!important;padding:14px 22px 18px!important;
}
body.siog-modern :is(.orc-import-page,.import-review-page) .import-fontes-box .orc-base-row{
  display:grid;grid-template-columns:minmax(90px,1fr) auto 42px;
  align-items:center;min-height:22px;font-size:10.5px;
  color:var(--id-text);
}
body.siog-modern :is(.orc-import-page,.import-review-page) .import-fontes-box .orc-base-row b{
  font-weight:700;color:var(--id-text-strong);
}
body.siog-modern :is(.orc-import-page,.import-review-page) .import-fontes-box .orc-base-row span{text-align:right}
body.siog-modern :is(.orc-import-page,.import-review-page) .import-fontes-box .orc-base-row em{text-align:right;font-style:normal}
body.siog-modern :is(.orc-import-page,.import-review-page) .import-fontes-box .rel-box-title>em>a:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
  border:0!important;background:transparent!important;box-shadow:none!important;
}
body.siog-modern :is(.orc-import-page,.import-review-page) .import-fontes-box .rel-box-title>em>a:not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
  outline:none!important;
}

/* 134. Fontes & Tabelas: auxiliares discretas em todas as telas. */
body.siog-modern:not(#siog-fontes-aux-priority):not(#siog-fontes-aux-theme):not(#siog-fontes-aux-style){--siog-fonte-aux-cor:#929aa3}
body.siog-modern:not(#siog-fontes-aux-priority):not(#siog-fontes-aux-theme):not(#siog-fontes-aux-style):not(.tema-claro){--siog-fonte-aux-cor:#939eac}
body.siog-modern:not(#siog-fontes-aux-priority):not(#siog-fontes-aux-theme):not(#siog-fontes-aux-style) :is(.orc-base-auxiliar,.fonte-linha-aux,.rel-fontes-list li.aux,.rrc-fonte.aux,.modelo-preview-sources .auxiliar,.siog-fonte-aux),
body.siog-modern:not(#siog-fontes-aux-priority):not(#siog-fontes-aux-theme):not(#siog-fontes-aux-style) :is(.orc-base-auxiliar,.fonte-linha-aux,.rel-fontes-list li.aux,.rrc-fonte.aux,.modelo-preview-sources .auxiliar,.siog-fonte-aux) :is(b,strong,span,em,i,small){
  color:var(--siog-fonte-aux-cor)!important;font-weight:400!important;
}
body.siog-modern:not(#siog-fontes-aux-priority):not(#siog-fontes-aux-theme):not(#siog-fontes-aux-style) :is(.orc-base-auxiliar,.siog-fonte-aux)>b{padding-left:12px;text-transform:uppercase}
body.siog-modern:not(#siog-fontes-aux-priority):not(#siog-fontes-aux-theme):not(#siog-fontes-aux-style) :is(.orc-base-auxiliar,.siog-fonte-aux)>b::before,
body.siog-modern:not(#siog-fontes-aux-priority):not(#siog-fontes-aux-theme):not(#siog-fontes-aux-style) .rel-fontes-list li.aux .fonte-sigla::before,
body.siog-modern:not(#siog-fontes-aux-priority):not(#siog-fontes-aux-theme):not(#siog-fontes-aux-style) .rrc-fonte.aux::before{content:"\21B3";margin-right:5px;color:var(--siog-fonte-aux-cor)!important;font-weight:400!important}
body.siog-modern:not(#siog-fontes-aux-priority):not(#siog-fontes-aux-theme):not(#siog-fontes-aux-style) .rel-fontes-list li.aux .fonte-sigla{text-transform:uppercase}
body.siog-modern:not(#siog-fontes-aux-priority):not(#siog-fontes-aux-theme):not(#siog-fontes-aux-style) :is(.cfp-auxiliar .cfp-aux-label,.fontes-row.aux .fontes-aux-label,.ft-row-aux .ft-nome){color:var(--siog-fonte-aux-cor)!important;font-weight:400!important}


/* 135. BDI: lista flutuante acima dos limites e da rolagem do modal. */
body.siog-modern .sb-combo-list[popover]{
  position:fixed;
  inset:auto;
  margin:0;
  box-sizing:border-box;
}
body.siog-modern .sb-combo-list[popover]::backdrop{
  background:transparent;
  pointer-events:none;
}


/* 136. Etapa / Servico: fundo continuo e somente a borda externa do campo. */
body.siog-modern #modal-item-edit{
  --item-edit-fixed-bg:var(--id-bg-2);
}
body.siog-modern.tema-claro #modal-item-edit{
  --item-edit-fixed-bg:#eef1f3;
}
body.siog-modern #modal-item-edit .modal-field:not(.item-edit-check,.item-edit-global,.item-edit-composition),
body.siog-modern #modal-item-edit .ie-caixa{
  background:var(--id-surface)!important;
}
body.siog-modern #modal-item-edit .modal-field:has(>input:not([type=hidden],[type=checkbox],[type=radio]):is([readonly],:disabled),>select:disabled,>textarea:is([readonly],:disabled)),
body.siog-modern #modal-item-edit .modal-field.item-edit-bdi-field,
body.siog-modern #modal-item-edit .ie-caixa:has(>input:is([readonly],:disabled)){
  background:var(--item-edit-fixed-bg)!important;
}
body.siog-modern #modal-item-edit .item-edit-composition{
  background:transparent!important;
}
body.siog-modern #modal-item-edit .modal-field>span:first-child:not(.ie-caixa),
body.siog-modern #modal-item-edit .ie-caixa>.ie-rot,
body.siog-modern #modal-item-edit .item-edit-bdi-control,
body.siog-modern #modal-item-edit .item-edit-bdi-control>output,
body.siog-modern #modal-item-edit .modal-field>input:not([type=checkbox],[type=radio],[type=hidden]),
body.siog-modern #modal-item-edit .modal-field>select,
body.siog-modern #modal-item-edit .modal-field>textarea,
body.siog-modern #modal-item-edit .ie-caixa>input{
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  outline:none!important;
}
/* Vence tambem o fundo global de foco da planilha (dois IDs de prioridade). */
body.siog-modern.orcamento-shell #modal-item-edit #item-edit-form :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea):focus{
  background:transparent!important;
}
/* O foco continua visivel no contorno externo, sem recriar a caixa interna. */
body.siog-modern #modal-item-edit .modal-field:not(.item-edit-check,.item-edit-global,.item-edit-composition):focus-within,
body.siog-modern #modal-item-edit .ie-caixa:focus-within{
  border-color:var(--id-accent)!important;
  outline:1px solid var(--id-accent);
  outline-offset:0;
}


/* 137. BDI manual: marcacao sem halo e percentual com fundo de campo editavel. */
body.siog-modern #modal-item-bdi input[type=radio]{
  background:transparent!important;
  box-shadow:none!important;
  outline:none!important;
}
body.siog-modern #modal-item-bdi input[type=radio]:focus-visible{
  outline:1px solid var(--id-accent)!important;
  outline-offset:2px;
}
body.siog-modern #modal-item-bdi #item-edit-bdi-manual-draft{
  --focus:var(--id-surface);
  background:var(--id-surface)!important;
}
body.siog-modern #modal-item-bdi #item-edit-bdi-manual-draft:disabled{
  background:var(--id-bg-2)!important;
}


/* 138. Lista de orcamentos: estrela menor e centralizada na celula. */
body.siog-modern.orcamentos-list-body .tbl-orc td.fav-cell{
  padding:0!important;
  text-align:center!important;
  vertical-align:middle!important;
}
body.siog-modern.orcamentos-list-body .orc-star-form{
  display:flex;
  align-items:center;
  justify-content:center;
  margin:0;
}
body.siog-modern.orcamentos-list-body .orc-star-form button>i.fa-star{
  font-size:14px!important;
  line-height:1!important;
  margin:0!important;
}


/* 139. Favoritos: estrela azul-clara com contorno verde. */
body.siog-modern.orcamentos-list-body .orc-star-form button>i.fa-star:not(.off):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
  color:#8ed6ff!important;
  -webkit-text-fill-color:#8ed6ff!important;
  -webkit-text-stroke:0.7px #16834a!important;
  text-shadow:none!important;
}


/* 140. Acoes da tabela: padrao compartilhado na secao 142. */


/* 141. Setas de ordenacao da planilha sem contorno de botao. */
body.siog-modern .plan-order-col .plan-order-btn:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
  border-color:transparent!important;
  box-shadow:none!important;
}
body.siog-modern .plan-order-col .plan-order-btn:not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
  outline:none!important;
}


/* 142. Menus suspensos: separacao e altura compacta em todas as familias.
   Preserva o display original (abertura/fechamento) e permite varias linhas. */
body.siog-modern :is(.acoes-list,.gear-menu-pop,.plan-head-gear-menu,.mem-menu-list,.plan-search-menu,.ins-group-menu,.dropdown-menu,.crono-menu)>:not([hidden])+ :not([hidden]):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
  margin-top:4px!important;
}
body.siog-modern :is(.acoes-list,.gear-menu-pop,.plan-head-gear-menu,.mem-menu-list,.plan-search-menu,.ins-group-menu,.dropdown-menu,.crono-menu)>form{
  margin-bottom:0!important;
}
body.siog-modern :is(.acoes-list,.gear-menu-pop,.plan-head-gear-menu,.mem-menu-list,.plan-search-menu,.ins-group-menu,.dropdown-menu,.crono-menu)> :is(.siog-action-button,.gi,.dropdown-item):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style),
body.siog-modern :is(.acoes-list,.gear-menu-pop,.plan-head-gear-menu,.mem-menu-list,.plan-search-menu,.ins-group-menu,.dropdown-menu,.crono-menu)>form> :is(.siog-action-button,.gi,.dropdown-item):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style),
body.siog-modern :is(.acoes-list,.gear-menu-pop,.plan-head-gear-menu,.mem-menu-list,.plan-search-menu,.ins-group-menu,.dropdown-menu,.crono-menu)>details>summary.gi:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
  min-height:26px!important;
  height:auto!important;
  max-height:none!important;
  padding:4px 10px!important;
  line-height:1.35!important;
  white-space:normal!important;
  box-sizing:border-box;
}


/* 143. Menus de etapa e servico: respiro interno e cantos iguais aos demais. */
body.siog-modern .gear-menu-pop{
  padding:6px!important;
}
body.siog-modern .gear-menu-pop .gi:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
  border-radius:5px!important;
}


/* 144. Buscar / Filtrar: mesma margem e cantos dos menus de acoes. */
body.siog-modern .plan-search-menu{
  padding:6px!important;
  top:calc(100% + 4px);
}
body.siog-modern .plan-search-menu>a.siog-action-button:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
  border-radius:5px!important;
  width:100%;
}


/* 145. Cronograma: menus com o mesmo acabamento dos demais. */
body.siog-modern .crono-menu{
  padding:6px!important;
  border-radius:var(--id-radius)!important;
  background:var(--id-surface)!important;
  border-color:var(--id-border-strong)!important;
}
body.siog-modern .crono-menu>button.siog-action-button:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
  border-radius:5px!important;
}


/* 146. BDI por categoria: minimo configuravel e espaco proporcional ao quadro. */
body.siog-modern .bdi-category-table{
  --bdi-categoria-largura-minima:180px;
  --bdi-categoria-largura:clamp(var(--bdi-categoria-largura-minima),20vw,220px);
  table-layout:fixed;
}
body.siog-modern .bdi-category-table :is(th,td):first-child{
  width:auto!important;
}
body.siog-modern .bdi-category-table :is(th,td):nth-child(2){
  width:var(--bdi-categoria-largura)!important;
  min-width:var(--bdi-categoria-largura-minima);
  white-space:normal;
  word-break:normal;
  overflow-wrap:normal;
}
body.siog-modern .bdi-category-table :is(th,td):nth-child(3){
  width:58px!important;
}


/* 147. Pesquisa de BDI: leitura compacta, colunas minimas e botoes padronizados. */
body.siog-modern .bdi-search-table{
  --bdi-pesquisa-largura-minima:900px;
  min-width:var(--bdi-pesquisa-largura-minima)!important;
  table-layout:fixed;
}
body.siog-modern .bdi-search-table tbody :is(td,td *):not(#siog-type-scope):not(#siog-type-priority):not(#siog-type-size){
  font-size:10.5px!important;
  line-height:1.35!important;
}
body.siog-modern .bdi-search-table th:nth-child(1){width:44px!important}
body.siog-modern .bdi-search-table th:nth-child(2),
body.siog-modern .bdi-search-table th:nth-child(3){width:90px!important}
body.siog-modern .bdi-search-table th:nth-child(4){width:auto!important}
body.siog-modern .bdi-search-table th:nth-child(5){width:220px!important}
body.siog-modern .bdi-search-table th:nth-child(6){width:75px!important}
body.siog-modern .bdi-search-table th:nth-child(7){width:110px!important}
body.siog-modern .bdi-search-table td:nth-child(2),
body.siog-modern .bdi-search-table td:nth-child(3),
body.siog-modern .bdi-search-table td.valor{white-space:nowrap!important}
body.siog-modern #bdiSearchPopup :is(.bdi-search-select,.bdi-search-footer>button):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
  border-radius:5px!important;
  min-height:26px!important;
  height:auto!important;
  padding:4px 10px!important;
  white-space:nowrap!important;
}
body.siog-modern #bdiSearchPopup .bdi-search-select{min-width:88px}


/* 148. Pesquisa de encargos: mesmo texto e selecao da pesquisa de BDI. */
body.siog-modern .enc-search-table tbody :is(td,td *):not(#siog-type-scope):not(#siog-type-priority):not(#siog-type-size){
  font-size:10.5px!important;
  line-height:1.35!important;
}
body.siog-modern .enc-search-table .enc-search-action{min-width:110px}
body.siog-modern .enc-search-action>button[data-enc-select]:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
  border-radius:5px!important;
  min-height:26px!important;
  height:auto!important;
  min-width:88px;
  padding:4px 10px!important;
  white-space:nowrap!important;
  text-decoration:none!important;
}


/* 149. Catalogo: resumo de fontes com a mesma geometria do cartao do orcamento. */
body.siog-modern .ins-fontes-summary{
  height:auto;
  min-height:0;
  margin-bottom:0;
  border-radius:4px!important;
  overflow:hidden;
}
body.siog-modern .ins-fontes-summary .rel-box-title{height:45px}
body.siog-modern .ins-fontes-summary .rel-fontes-list{padding:18px 28px!important}

body.siog-modern .ins-fontes-summary .rel-box-title>em>a:not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){
  background:transparent!important;
  border-color:transparent!important;
  box-shadow:none!important;
}
body.siog-modern .ins-fontes-summary .rel-box-title>em>a:not(:focus-visible):not(#siog-action-scope):not(#siog-action-priority):not(#siog-action-style){outline:none!important}
