/* =====================================================================
   contratos.ai — Design system (tokens + componentes base)
   ---------------------------------------------------------------------
   - Todo estilo vem dos TOKENS abaixo. Componentes nunca usam cor,
     espaçamento ou raio "soltos".
   - Componentes novos usam o prefixo `ui-` (convive com o CSS legado de
     styles.css até cada tela ser migrada).
   - Tema: `data-theme="light|dark"` no <html> (definido no boot pelo
     index.html a partir da escolha salva ou da preferência do sistema).
   - Contraste dos pares de texto verificado (WCAG AA ≥ 4.5:1) nos 2 temas.
   Referência visual de todos os componentes/estados: /ui.html
   ===================================================================== */

/* ---------- 1. Primitivos (escalas) — não usar direto nos componentes ---------- */
:root{
  /* Neutros: cinza levemente frio */
  --gray-50:#f7f8fa;  --gray-100:#eff1f4; --gray-200:#e2e6eb; --gray-300:#cbd2da;
  --gray-400:#8a95a2; --gray-500:#636e7b; --gray-600:#4f5a67; --gray-700:#3b4450;
  --gray-800:#262d36; --gray-900:#171c23; --gray-950:#0e1217;
  /* Marca (petróleo Riber) — base = 600 */
  --brand-50:#eef5f8;  --brand-100:#d7e7ee; --brand-200:#b0cfdc; --brand-300:#8cc6da;
  --brand-400:#6fb6cf; --brand-500:#2f6f89; --brand-600:#1b4d63; --brand-700:#163f52;
  --brand-800:#123343; --brand-900:#0e2835; --brand-950:#081a23;
  --white:#ffffff;

  /* Tipografia */
  --font-sans:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,"Cascadia Mono",Consolas,monospace;
  --text-xs:12px; --text-sm:14px; --text-md:16px; --text-lg:20px;
  --text-xl:24px; --text-2xl:30px; --text-3xl:36px;
  --lh-tight:1.25; --lh:1.5;
  --fw-regular:400; --fw-medium:500; --fw-semibold:600;
  --tracking-tight:-0.011em; --tracking-caps:0.04em;

  /* Espaçamento (base 4px) */
  --space-px:1px; --space-0-5:2px; --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px;
  --space-6:24px; --space-8:32px; --space-12:48px; --space-16:64px;

  /* Raio */
  --radius-xs:4px; --radius-sm:6px; --radius-md:10px; --radius-lg:12px; --radius-full:999px;

  /* Movimento */
  --dur-fast:150ms; --dur:200ms; --ease-out:cubic-bezier(.2,.8,.2,1);

  /* Dimensões de layout/controle */
  --control-h:40px; --check-size:18px; --control-h-sm:32px; --icon-sm:16px; --icon-md:20px;
  --sidebar-w:240px; --sidebar-w-collapsed:64px; --topbar-h:56px;
  --content-max:1280px; --sheet-w:560px; --sheet-w-lg:760px;
  --dialog-w:480px; --dialog-w-lg:720px; --menu-min-w:200px; --tooltip-max-w:260px;
  --border-w:1px; --focus-w:2px;

  /* Camadas */
  --z-sticky:20; --z-sidebar:40; --z-popover:70; --z-toast:90;
}

/* ---------- 2. Tokens semânticos — TEMA CLARO (padrão) ---------- */
:root{
  color-scheme:light;
  --color-bg:#f5f6f8;
  --color-surface:var(--white);
  --color-surface-2:var(--gray-50);       /* realce sutil: cabeçalho de tabela, hover */
  --color-surface-3:var(--gray-100);      /* trilhas, skeleton, chips */
  --color-border:var(--gray-200);
  --color-border-strong:var(--gray-300);
  --color-border-input:var(--gray-400);   /* ≥ 3:1 sobre o fundo (WCAG 1.4.11) */
  --color-text:var(--gray-900);
  --color-text-2:var(--gray-600);         /* 7.0:1 */
  --color-text-3:var(--gray-500);         /* 5.2:1 — menor contraste permitido p/ texto */
  --color-placeholder:var(--gray-400);
  --color-disabled-bg:var(--gray-100);
  --color-disabled-text:var(--gray-400);

  --color-primary:var(--brand-600);
  --color-primary-hover:var(--brand-700);
  --color-primary-active:var(--brand-800);
  --color-on-primary:var(--white);
  --color-primary-soft:var(--brand-50);
  --color-primary-soft-hover:var(--brand-100);
  --color-primary-ink:var(--brand-700);

  --color-success:#15803d; --color-success-soft:#ecf7ef;
  --color-warning:#a45208; --color-warning-soft:#fdf3e6;
  --color-danger:#b91c1c;  --color-danger-soft:#fcecec;
  --color-danger-hover:#991b1b; --color-on-danger:var(--white);
  --color-info:#1d4ed8;    --color-info-soft:#eef3fe;
  --color-neutral:var(--gray-600); --color-neutral-soft:var(--gray-100);

  --color-focus:var(--brand-500);
  --color-overlay:rgb(14 18 23 / .45);
  --color-inverse-bg:var(--gray-900); --color-inverse-text:var(--gray-50);

  --shadow-1:0 1px 2px rgb(16 24 32 / .05);
  --shadow-2:0 1px 2px rgb(16 24 32 / .04),0 4px 12px rgb(16 24 32 / .08);
  --shadow-3:0 4px 8px rgb(16 24 32 / .04),0 16px 40px rgb(16 24 32 / .16);
  --focus-ring:0 0 0 var(--focus-w) var(--color-surface),0 0 0 calc(var(--focus-w) * 2) var(--color-focus);
  --focus-ring-danger:0 0 0 var(--focus-w) var(--color-surface),0 0 0 calc(var(--focus-w) * 2) var(--color-danger);
}

/* ---------- 3. Tokens semânticos — TEMA ESCURO ---------- */
:root[data-theme="dark"]{
  color-scheme:dark;
  --color-bg:var(--gray-950);
  --color-surface:#151a21;
  --color-surface-2:#1b212a;
  --color-surface-3:#222933;
  --color-border:#262d36;
  --color-border-strong:#343c47;
  --color-border-input:#5d6979;
  --color-text:var(--gray-100);
  --color-text-2:#b3bcc6;
  --color-text-3:#8d98a5;
  --color-placeholder:#6b7684;
  --color-disabled-bg:#1b212a;
  --color-disabled-text:#5d6979;

  --color-primary:var(--brand-400);
  --color-primary-hover:var(--brand-300);
  --color-primary-active:var(--brand-200);
  --color-on-primary:var(--gray-950);
  --color-primary-soft:#14303b;
  --color-primary-soft-hover:#1a3c4a;
  --color-primary-ink:#a9d6e6;

  --color-success:#5cc98a; --color-success-soft:#12291c;
  --color-warning:#f0b35a; --color-warning-soft:#2e2210;
  --color-danger:#f1857a;  --color-danger-soft:#331a18;
  --color-danger-hover:#f5a39a; --color-on-danger:var(--gray-950);
  --color-info:#86aefc;    --color-info-soft:#162340;
  --color-neutral:#b3bcc6; --color-neutral-soft:#222933;

  --color-focus:var(--brand-400);
  --color-overlay:rgb(0 0 0 / .6);
  --color-inverse-bg:var(--gray-100); --color-inverse-text:var(--gray-900);

  --shadow-1:0 1px 2px rgb(0 0 0 / .3);
  --shadow-2:0 1px 2px rgb(0 0 0 / .3),0 4px 12px rgb(0 0 0 / .35);
  --shadow-3:0 4px 8px rgb(0 0 0 / .3),0 16px 40px rgb(0 0 0 / .5);
}

/* ---------- 4. Base ---------- */
@media (prefers-reduced-motion:reduce){
  :root{ --dur-fast:0ms; --dur:0ms; }
  *,*::before,*::after{animation-duration:0ms !important;animation-iteration-count:1 !important;transition-duration:0ms !important;scroll-behavior:auto !important}
}
.ui-root,.ui-root *,.ui-table *,[class*="ui-"],[class*="ui-"]::before,[class*="ui-"]::after{box-sizing:border-box}
/* [hidden] sempre esconde (senão display:flex/grid de um componente venceria o atributo) */
[hidden]{display:none !important}
.ui-icon{width:var(--icon-sm);height:var(--icon-sm);flex:none;fill:none;stroke:currentColor;
  stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}
.ui-icon--md{width:var(--icon-md);height:var(--icon-md)}
.ui-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:calc(var(--space-px) * -1);overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.ui-mono{font-family:var(--font-mono)}
.ui-tnum{font-variant-numeric:tabular-nums}
.ui-text-2{color:var(--color-text-2)}
.ui-text-3{color:var(--color-text-3)}
.ui-text-xs{font-size:var(--text-xs)}
.ui-text-sm{font-size:var(--text-sm)}
.ui-kbd{display:inline-flex;align-items:center;min-width:20px;height:20px;padding:0 var(--space-1);
  font:var(--fw-medium) var(--text-xs)/1 var(--font-sans);color:var(--color-text-2);
  background:var(--color-surface-2);border:var(--border-w) solid var(--color-border-strong);border-radius:var(--radius-sm);justify-content:center}
:focus-visible{outline:none}
.ui-focusable:focus-visible,[data-ui-focus]:focus-visible{box-shadow:var(--focus-ring);border-radius:var(--radius-sm)}

/* ---------- 5. Button ---------- */
.ui-btn{--_bg:var(--color-surface);--_fg:var(--color-text);--_bd:var(--color-border-strong);--_bg-h:var(--color-surface-2);--_bg-a:var(--color-surface-3);
  position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);
  height:var(--control-h);padding:0 var(--space-4);border-radius:var(--radius-sm);
  font:var(--fw-medium) var(--text-sm)/1 var(--font-sans);white-space:nowrap;text-decoration:none;
  color:var(--_fg);background:var(--_bg);border:var(--border-w) solid var(--_bd);cursor:pointer;user-select:none;
  transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}
.ui-btn:hover{background:var(--_bg-h)}
.ui-btn:active{background:var(--_bg-a)}
.ui-btn:focus-visible{box-shadow:var(--focus-ring)}
.ui-btn--primary{--_bg:var(--color-primary);--_fg:var(--color-on-primary);--_bd:var(--color-primary);--_bg-h:var(--color-primary-hover);--_bg-a:var(--color-primary-active)}
.ui-btn--primary:hover{border-color:var(--_bg-h)}
.ui-btn--primary:active{border-color:var(--_bg-a)}
.ui-btn--secondary{/* padrão acima: superfície + borda */}
.ui-btn--ghost{--_bg:transparent;--_bd:transparent;--_fg:var(--color-text-2);--_bg-h:var(--color-surface-2);--_bg-a:var(--color-surface-3)}
.ui-btn--ghost:hover{color:var(--color-text)}
.ui-btn--destructive{--_bg:var(--color-danger);--_fg:var(--color-on-danger);--_bd:var(--color-danger);--_bg-h:var(--color-danger-hover);--_bg-a:var(--color-danger-hover)}
.ui-btn--destructive:focus-visible{box-shadow:var(--focus-ring-danger)}
.ui-btn--danger-ghost{--_bg:transparent;--_bd:transparent;--_fg:var(--color-danger);--_bg-h:var(--color-danger-soft);--_bg-a:var(--color-danger-soft)}
.ui-btn--sm{height:var(--control-h-sm);padding:0 var(--space-3);font-size:var(--text-xs)}
.ui-btn--icon{width:var(--control-h);padding:0}
.ui-btn--icon.ui-btn--sm{width:var(--control-h-sm)}
.ui-btn--block{width:100%}
.ui-btn:disabled,.ui-btn[aria-disabled="true"]{--_bg:var(--color-disabled-bg);--_fg:var(--color-disabled-text);--_bd:var(--color-border);cursor:not-allowed;box-shadow:none}
.ui-btn--ghost:disabled,.ui-btn--ghost[aria-disabled="true"]{--_bg:transparent;--_bd:transparent}
.ui-btn[aria-busy="true"]{cursor:progress;pointer-events:none}
.ui-btn[aria-busy="true"] > *{visibility:hidden}
.ui-btn[aria-busy="true"]::after{content:"";position:absolute;inset:0;margin:auto;width:var(--icon-sm);height:var(--icon-sm);
  border-radius:var(--radius-full);border:var(--focus-w) solid currentColor;border-right-color:transparent;animation:ui-spin 700ms linear infinite}
.ui-btn-group{display:inline-flex;gap:var(--space-2);flex-wrap:wrap;align-items:center}
@keyframes ui-spin{to{transform:rotate(360deg)}}
.ui-spinner{display:inline-block;width:var(--icon-sm);height:var(--icon-sm);border-radius:var(--radius-full);
  border:var(--focus-w) solid var(--color-border-strong);border-top-color:var(--color-primary);animation:ui-spin 700ms linear infinite;vertical-align:middle}

/* Link-botão (ação terciária em texto) */
.ui-link{display:inline-flex;align-items:center;gap:var(--space-1);background:none;border:none;padding:0;cursor:pointer;
  font:var(--fw-medium) inherit/inherit var(--font-sans);font-size:inherit;color:var(--color-primary-ink);text-decoration:underline;text-underline-offset:2px;text-decoration-color:transparent;
  transition:text-decoration-color var(--dur-fast) var(--ease-out)}
.ui-link:hover{text-decoration-color:currentColor}
.ui-link:focus-visible{box-shadow:var(--focus-ring);border-radius:var(--radius-sm)}

/* ---------- 6. Campo (label + controle + ajuda + erro) ---------- */
.ui-field{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}
.ui-label{font:var(--fw-medium) var(--text-sm)/var(--lh-tight) var(--font-sans);color:var(--color-text)}
.ui-label .ui-req{color:var(--color-danger);margin-left:var(--space-0-5)}
.ui-label .ui-opt{color:var(--color-text-3);font-weight:var(--fw-regular);margin-left:var(--space-1)}
.ui-hint{margin:0;font-size:var(--text-xs);line-height:var(--lh);color:var(--color-text-3)}
.ui-error{display:none;align-items:center;gap:var(--space-1);font-size:var(--text-xs);line-height:var(--lh);color:var(--color-danger);font-weight:var(--fw-medium)}
.ui-field.is-invalid .ui-error,.ui-error.is-visible{display:flex}
.ui-field.is-invalid .ui-hint{display:none}

/* ---------- 7. Input / Textarea / Select ---------- */
.ui-input,.ui-textarea,.ui-select select{
  width:100%;min-width:0;height:var(--control-h);padding:0 var(--space-3);
  font:var(--fw-regular) var(--text-sm)/var(--lh) var(--font-sans);color:var(--color-text);
  background:var(--color-surface);border:var(--border-w) solid var(--color-border-input);border-radius:var(--radius-sm);
  transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}
.ui-input::placeholder,.ui-textarea::placeholder{color:var(--color-placeholder)}
.ui-input:hover,.ui-textarea:hover,.ui-select select:hover{border-color:var(--color-text-3)}
.ui-input:focus-visible,.ui-textarea:focus-visible,.ui-select select:focus-visible,
.ui-input:focus,.ui-textarea:focus,.ui-select select:focus{outline:none;border-color:var(--color-focus);box-shadow:0 0 0 var(--focus-w) color-mix(in srgb,var(--color-focus) 30%,transparent)}
.ui-input[aria-invalid="true"],.ui-textarea[aria-invalid="true"],.ui-select select[aria-invalid="true"]{border-color:var(--color-danger)}
.ui-input[aria-invalid="true"]:focus,.ui-textarea[aria-invalid="true"]:focus,.ui-select select[aria-invalid="true"]:focus{box-shadow:0 0 0 var(--focus-w) color-mix(in srgb,var(--color-danger) 30%,transparent)}
.ui-input:disabled,.ui-textarea:disabled,.ui-select select:disabled{background:var(--color-disabled-bg);color:var(--color-disabled-text);border-color:var(--color-border);cursor:not-allowed}
.ui-input[readonly]{background:var(--color-surface-2);border-color:var(--color-border)}
.ui-input--sm,.ui-select--sm select{height:var(--control-h-sm);font-size:var(--text-xs)}
.ui-input.ui-tnum,.ui-input[inputmode="decimal"],.ui-input[inputmode="numeric"]{font-variant-numeric:tabular-nums}
.ui-textarea{height:auto;min-height:calc(var(--control-h) * 2);padding:var(--space-2) var(--space-3);resize:vertical}
.ui-select{position:relative;display:block;min-width:0}
.ui-select select{appearance:none;padding-right:calc(var(--space-3) + var(--icon-sm) + var(--space-2));cursor:pointer;text-overflow:ellipsis}
.ui-select::after{content:"";position:absolute;right:var(--space-3);top:50%;width:var(--icon-sm);height:var(--icon-sm);transform:translateY(-50%);pointer-events:none;
  background:var(--color-text-3);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center/contain no-repeat}
/* Input com ícone/prefixo à esquerda (busca, R$) */
.ui-input-group{position:relative;display:flex;align-items:center;min-width:0}
.ui-input-group > .ui-icon,.ui-input-group > .ui-affix{position:absolute;left:var(--space-3);color:var(--color-text-3);pointer-events:none}
.ui-input-group > .ui-affix{font-size:var(--text-sm)}
.ui-input-group > .ui-input{padding-left:calc(var(--space-3) + var(--icon-sm) + var(--space-2))}
.ui-input-group > .ui-kbd{position:absolute;right:var(--space-2)}

/* ---------- 8. Checkbox / Radio / Switch ---------- */
.ui-check{display:inline-flex;align-items:flex-start;gap:var(--space-2);cursor:pointer;font-size:var(--text-sm);line-height:var(--lh);color:var(--color-text);min-height:24px}
.ui-check input{flex:none}
.ui-checkbox,.ui-radio{appearance:none;margin:var(--space-0-5) 0 0;width:var(--check-size);height:var(--check-size);display:inline-grid;place-content:center;
  background:var(--color-surface);border:var(--border-w) solid var(--color-border-input);cursor:pointer;
  transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}
.ui-checkbox{border-radius:var(--radius-xs)}
.ui-radio{border-radius:var(--radius-full)}
.ui-checkbox::before{content:"";width:12px;height:12px;background:var(--color-on-primary);transform:scale(0);transition:transform var(--dur-fast) var(--ease-out);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat}
.ui-checkbox:indeterminate::before{-webkit-mask:none;mask:none;height:2px;width:10px;border-radius:1px}
.ui-radio::before{content:"";width:8px;height:8px;border-radius:var(--radius-full);background:var(--color-on-primary);transform:scale(0);transition:transform var(--dur-fast) var(--ease-out)}
.ui-checkbox:checked,.ui-checkbox:indeterminate,.ui-radio:checked{background:var(--color-primary);border-color:var(--color-primary)}
.ui-checkbox:checked::before,.ui-checkbox:indeterminate::before,.ui-radio:checked::before{transform:scale(1)}
.ui-checkbox:hover:not(:disabled),.ui-radio:hover:not(:disabled){border-color:var(--color-primary)}
.ui-checkbox:focus-visible,.ui-radio:focus-visible,.ui-switch:focus-visible{box-shadow:var(--focus-ring)}
.ui-checkbox[aria-invalid="true"]{border-color:var(--color-danger)}
.ui-checkbox:disabled,.ui-radio:disabled,.ui-switch:disabled{cursor:not-allowed;background:var(--color-disabled-bg);border-color:var(--color-border)}
.ui-checkbox:disabled:checked,.ui-radio:disabled:checked{background:var(--color-disabled-text);border-color:var(--color-disabled-text)}
.ui-check:has(input:disabled){cursor:not-allowed;color:var(--color-disabled-text)}
.ui-switch{appearance:none;margin:0;flex:none;position:relative;width:36px;height:20px;border-radius:var(--radius-full);cursor:pointer;
  background:var(--color-border-input);border:none;transition:background-color var(--dur) var(--ease-out)}
.ui-switch::before{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:var(--radius-full);background:var(--white);
  box-shadow:var(--shadow-1);transition:transform var(--dur) var(--ease-out)}
.ui-switch:checked{background:var(--color-primary)}
.ui-switch:checked::before{transform:translateX(16px)}
.ui-switch:disabled::before{background:var(--color-surface-2)}

/* ---------- 9. Badge / Chip / Avatar ---------- */
.ui-badge{--_bg:var(--color-neutral-soft);--_fg:var(--color-neutral);
  display:inline-flex;align-items:center;gap:var(--space-1);height:22px;padding:0 var(--space-2);border-radius:var(--radius-full);
  font:var(--fw-medium) var(--text-xs)/1 var(--font-sans);white-space:nowrap;background:var(--_bg);color:var(--_fg)}
.ui-badge--dot::before{content:"";width:6px;height:6px;border-radius:var(--radius-full);background:currentColor}
.ui-badge--primary{--_bg:var(--color-primary-soft);--_fg:var(--color-primary-ink)}
.ui-badge--success{--_bg:var(--color-success-soft);--_fg:var(--color-success)}
.ui-badge--warning{--_bg:var(--color-warning-soft);--_fg:var(--color-warning)}
.ui-badge--danger{--_bg:var(--color-danger-soft);--_fg:var(--color-danger)}
.ui-badge--info{--_bg:var(--color-info-soft);--_fg:var(--color-info)}
.ui-badge--outline{background:transparent;border:var(--border-w) solid var(--color-border-strong);color:var(--color-text-2)}
.ui-badge--count{height:20px;min-width:20px;padding:0 calc(var(--space-1) + var(--space-0-5));justify-content:center;background:var(--color-danger);color:var(--color-on-danger)}
.ui-tag{display:inline-flex;align-items:center;height:22px;padding:0 var(--space-2);border-radius:var(--radius-sm);
  font:var(--fw-medium) var(--text-xs)/1 var(--font-mono);color:var(--color-text-2);background:var(--color-surface-2);border:var(--border-w) solid var(--color-border)}
/* Chip de filtro ativo (removível) */
.ui-chip{display:inline-flex;align-items:center;gap:var(--space-1);height:28px;padding:0 var(--space-1) 0 var(--space-3);border-radius:var(--radius-full);
  font:var(--fw-medium) var(--text-xs)/1 var(--font-sans);color:var(--color-primary-ink);background:var(--color-primary-soft);border:var(--border-w) solid transparent}
.ui-chip b{font-weight:var(--fw-semibold)}
.ui-chip__x{display:grid;place-items:center;width:20px;height:20px;border-radius:var(--radius-full);background:none;border:none;color:inherit;cursor:pointer}
.ui-chip__x:hover{background:var(--color-primary-soft-hover)}
.ui-chip__x:focus-visible{box-shadow:var(--focus-ring)}
.ui-chip__x .ui-icon{width:12px;height:12px}
.ui-avatar{--_s:32px;display:inline-grid;place-items:center;flex:none;width:var(--_s);height:var(--_s);border-radius:var(--radius-full);overflow:hidden;
  background:var(--color-primary-soft);color:var(--color-primary-ink);font:var(--fw-semibold) var(--text-xs)/1 var(--font-sans);text-transform:uppercase}
.ui-avatar img{width:100%;height:100%;object-fit:cover}
.ui-avatar--sm{--_s:24px;font-size:10px}
.ui-avatar--lg{--_s:40px;font-size:var(--text-sm)}

/* ---------- 10. Card / Stat ---------- */
.ui-card{background:var(--color-surface);border:var(--border-w) solid var(--color-border);border-radius:var(--radius-md);min-width:0}
.ui-card__header{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-6);border-bottom:var(--border-w) solid var(--color-border);min-height:56px}
.ui-card__header--plain{border-bottom:none;padding-bottom:0}
.ui-card__title{margin:0;font:var(--fw-semibold) var(--text-sm)/var(--lh-tight) var(--font-sans);color:var(--color-text)}
.ui-card__desc{margin:0;font-size:var(--text-xs);color:var(--color-text-3)}
.ui-card__actions{margin-left:auto;display:flex;gap:var(--space-2);align-items:center}
.ui-card__body{padding:var(--space-4) var(--space-6)}
.ui-card__body--flush{padding:0}
.ui-card__footer{display:flex;gap:var(--space-2);justify-content:flex-end;padding:var(--space-3) var(--space-6);border-top:var(--border-w) solid var(--color-border)}
.ui-card--interactive{cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}
.ui-card--interactive:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-1)}
.ui-card--interactive:focus-visible{box-shadow:var(--focus-ring)}
.ui-stat{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-4) var(--space-6)}
.ui-stat__label{display:flex;align-items:center;gap:var(--space-2);font:var(--fw-medium) var(--text-xs)/var(--lh-tight) var(--font-sans);color:var(--color-text-2)}
.ui-stat__value{font:var(--fw-semibold) var(--text-2xl)/var(--lh-tight) var(--font-sans);letter-spacing:var(--tracking-tight);color:var(--color-text);font-variant-numeric:tabular-nums}
.ui-stat__meta{font-size:var(--text-xs);color:var(--color-text-3)}
.ui-grid{display:grid;gap:var(--space-4)}
.ui-grid--stats{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}

/* Lista de definição (ficha de dados) */
.ui-dl{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--space-4) var(--space-6);margin:0}
.ui-dl > div{min-width:0}
.ui-dl dt{font:var(--fw-regular) var(--text-xs)/var(--lh) var(--font-sans);color:var(--color-text-2);margin-bottom:var(--space-0-5)}
.ui-dl dd{margin:0;font:var(--fw-medium) var(--text-sm)/var(--lh) var(--font-sans);color:var(--color-text);overflow-wrap:anywhere}
.ui-dl .ui-dl__full{grid-column:1/-1}

/* ---------- 11. Tabs / Segmented ---------- */
.ui-tablist{display:flex;gap:var(--space-1);border-bottom:var(--border-w) solid var(--color-border);overflow-x:auto;scrollbar-width:none}
.ui-tab{position:relative;display:inline-flex;align-items:center;gap:var(--space-2);height:var(--control-h);padding:0 var(--space-3);margin-bottom:calc(var(--border-w) * -1);
  background:none;border:none;border-bottom:var(--focus-w) solid transparent;white-space:nowrap;cursor:pointer;
  font:var(--fw-medium) var(--text-sm)/1 var(--font-sans);color:var(--color-text-2);transition:color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}
.ui-tab:hover{color:var(--color-text)}
.ui-tab[aria-selected="true"]{color:var(--color-text);border-bottom-color:var(--color-primary)}
.ui-tab:focus-visible{box-shadow:inset var(--focus-ring);border-radius:var(--radius-sm) var(--radius-sm) 0 0}
.ui-tab:disabled{color:var(--color-disabled-text);cursor:not-allowed}
.ui-tab .ui-badge{height:18px}
.ui-tabpanel{padding-top:var(--space-6)}
.ui-tabpanel[hidden]{display:none}
.ui-segmented{display:inline-flex;padding:var(--space-0-5);gap:var(--space-0-5);background:var(--color-surface-3);border-radius:var(--radius-sm)}
.ui-segmented button{height:calc(var(--control-h-sm) - 4px);padding:0 var(--space-3);border:none;border-radius:var(--radius-xs);background:none;cursor:pointer;
  font:var(--fw-medium) var(--text-xs)/1 var(--font-sans);color:var(--color-text-2)}
.ui-segmented button:hover{color:var(--color-text)}
.ui-segmented button[aria-pressed="true"]{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-1)}
.ui-segmented button:focus-visible{box-shadow:var(--focus-ring)}

/* ---------- 12. Dialog / Sheet (sobre <dialog> nativo) ---------- */
.ui-dialog,.ui-sheet{padding:0;border:var(--border-w) solid var(--color-border);background:var(--color-surface);color:var(--color-text);
  box-shadow:var(--shadow-3);font:var(--fw-regular) var(--text-sm)/var(--lh) var(--font-sans)}
.ui-dialog::backdrop,.ui-sheet::backdrop{background:var(--color-overlay)}
.ui-dialog{width:min(var(--dialog-w),calc(100vw - var(--space-8)));max-height:calc(100vh - var(--space-16));border-radius:var(--radius-lg)}
.ui-dialog--lg{width:min(var(--dialog-w-lg),calc(100vw - var(--space-8)))}
.ui-dialog[open]{display:flex;flex-direction:column;animation:ui-dialog-in var(--dur) var(--ease-out)}
.ui-dialog[open]::backdrop{animation:ui-fade-in var(--dur) var(--ease-out)}
.ui-sheet{margin:0 0 0 auto;height:100vh;max-height:100vh;max-width:100vw;width:min(var(--sheet-w),100vw);border-radius:var(--radius-lg) 0 0 var(--radius-lg);border-right:none}
.ui-sheet--lg{width:min(var(--sheet-w-lg),100vw)}
.ui-sheet[open]{display:flex;flex-direction:column;animation:ui-sheet-in var(--dur) var(--ease-out)}
.ui-sheet[open]::backdrop{animation:ui-fade-in var(--dur) var(--ease-out)}
.ui-dialog__header{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-6) var(--space-6) var(--space-4)}
.ui-dialog__title{margin:0;font:var(--fw-semibold) var(--text-md)/var(--lh-tight) var(--font-sans)}
.ui-dialog__desc{margin:var(--space-1) 0 0;color:var(--color-text-2)}
.ui-dialog__close{margin:calc(var(--space-2) * -1) calc(var(--space-2) * -1) 0 auto}
.ui-dialog__body{padding:0 var(--space-6) var(--space-6);overflow-y:auto;flex:1 1 auto}
.ui-dialog__footer{display:flex;gap:var(--space-2);justify-content:flex-end;align-items:center;padding:var(--space-4) var(--space-6);border-top:var(--border-w) solid var(--color-border);flex:none}
.ui-sheet .ui-dialog__header{border-bottom:var(--border-w) solid var(--color-border);padding-bottom:var(--space-4)}
.ui-sheet .ui-dialog__body{padding-top:var(--space-6)}
.ui-dialog__footer .ui-dialog__footer-start{margin-right:auto}
@keyframes ui-fade-in{from{opacity:0}to{opacity:1}}
@keyframes ui-dialog-in{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}
@keyframes ui-sheet-in{from{transform:translateX(24px);opacity:0}to{transform:none;opacity:1}}
body:has(dialog[open]){overflow:hidden}

/* ---------- 13. Dropdown menu / Listbox (Combobox) / Tooltip ---------- */
.ui-menu,.ui-listbox{position:fixed;z-index:var(--z-popover);min-width:var(--menu-min-w);max-width:calc(100vw - var(--space-4));max-height:min(360px,calc(100vh - var(--space-8)));overflow-y:auto;
  margin:0;padding:var(--space-1);list-style:none;background:var(--color-surface);border:var(--border-w) solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-2);
  animation:ui-fade-in var(--dur-fast) var(--ease-out)}
.ui-menu[hidden],.ui-listbox[hidden]{display:none}
.ui-menu__item,.ui-option{display:flex;align-items:center;gap:var(--space-2);width:100%;min-height:36px;padding:0 var(--space-3);border:none;border-radius:var(--radius-sm);background:none;
  text-align:left;cursor:pointer;font:var(--fw-regular) var(--text-sm)/var(--lh-tight) var(--font-sans);color:var(--color-text)}
.ui-menu__item .ui-icon{color:var(--color-text-3)}
.ui-menu__item:hover,.ui-menu__item:focus-visible,.ui-option[data-active="true"]{background:var(--color-surface-2);outline:none}
.ui-menu__item--danger,.ui-menu__item--danger .ui-icon{color:var(--color-danger)}
.ui-menu__item--danger:hover,.ui-menu__item--danger:focus-visible{background:var(--color-danger-soft)}
.ui-menu__item:disabled,.ui-menu__item[aria-disabled="true"]{color:var(--color-disabled-text);cursor:not-allowed;background:none}
.ui-menu__item .ui-kbd{margin-left:auto}
.ui-menu__sep{height:var(--border-w);margin:var(--space-1) calc(var(--space-1) * -1);background:var(--color-border);border:none}
.ui-menu__label{padding:var(--space-2) var(--space-3) var(--space-1);font:var(--fw-medium) var(--text-xs)/1 var(--font-sans);color:var(--color-text-3)}
.ui-option[aria-selected="true"]{font-weight:var(--fw-medium)}
.ui-option[aria-selected="true"]::after{content:"";margin-left:auto;width:var(--icon-sm);height:var(--icon-sm);background:var(--color-primary);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat}
.ui-option__desc{color:var(--color-text-3);font-size:var(--text-xs);margin-left:var(--space-2)}
.ui-listbox__empty{padding:var(--space-3);color:var(--color-text-3);font-size:var(--text-sm)}
.ui-combobox{position:relative}
.ui-combobox .ui-input{padding-right:calc(var(--space-3) + var(--icon-sm) + var(--space-2))}
.ui-combobox__toggle{position:absolute;right:var(--space-1);top:50%;transform:translateY(-50%);width:var(--control-h-sm);height:var(--control-h-sm);
  display:grid;place-items:center;background:none;border:none;border-radius:var(--radius-sm);color:var(--color-text-3);cursor:pointer}
.ui-combobox__toggle:hover{color:var(--color-text);background:var(--color-surface-2)}
.ui-tooltip{position:fixed;z-index:var(--z-toast);max-width:var(--tooltip-max-w);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);pointer-events:none;
  background:var(--color-inverse-bg);color:var(--color-inverse-text);font:var(--fw-medium) var(--text-xs)/var(--lh) var(--font-sans);box-shadow:var(--shadow-2);
  animation:ui-fade-in var(--dur-fast) var(--ease-out)}

/* ---------- 14. Toast ---------- */
.ui-toaster{position:fixed;z-index:var(--z-toast);right:var(--space-6);bottom:var(--space-6);display:flex;flex-direction:column;gap:var(--space-2);
  width:min(380px,calc(100vw - var(--space-8)));pointer-events:none}
.ui-toast{--_ac:var(--color-text-2);pointer-events:auto;display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-3) var(--space-3) var(--space-4);
  background:var(--color-surface);color:var(--color-text);border:var(--border-w) solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-2);
  font:var(--fw-regular) var(--text-sm)/var(--lh) var(--font-sans);animation:ui-toast-in var(--dur) var(--ease-out)}
.ui-toast > .ui-icon{color:var(--_ac);margin-top:var(--space-0-5)}
.ui-toast__msg{flex:1;min-width:0;padding-top:var(--space-px)}
.ui-toast__msg b{font-weight:var(--fw-semibold)}
.ui-toast__action{flex:none;margin-top:calc(var(--space-1) * -1)}
.ui-toast__close{flex:none;margin:calc(var(--space-1) * -1) calc(var(--space-1) * -1) 0 0}
.ui-toast--success{--_ac:var(--color-success)}
.ui-toast--danger{--_ac:var(--color-danger)}
.ui-toast--warning{--_ac:var(--color-warning)}
.ui-toast--info{--_ac:var(--color-info)}
.ui-toast.is-leaving{animation:ui-toast-out var(--dur) var(--ease-out) forwards}
@keyframes ui-toast-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes ui-toast-out{to{opacity:0;transform:translateY(8px)}}
@media (max-width:640px){ .ui-toaster{right:var(--space-4);left:var(--space-4);bottom:var(--space-4);width:auto} }

/* ---------- 15. Table ---------- */
.ui-table-wrap{background:var(--color-surface);border:var(--border-w) solid var(--color-border);border-radius:var(--radius-md);overflow:auto;min-width:0}
.ui-table-wrap--scroll{max-height:calc(100vh - 240px)}  /* com altura máx., o cabeçalho fica fixo */
.ui-table{width:100%;border-collapse:separate;border-spacing:0;font:var(--fw-regular) var(--text-sm)/var(--lh) var(--font-sans);color:var(--color-text)}
.ui-table th{position:sticky;top:0;z-index:1;height:40px;padding:0 var(--space-4);text-align:left;white-space:nowrap;
  font:var(--fw-medium) var(--text-xs)/1 var(--font-sans);color:var(--color-text-2);background:var(--color-surface-2);border-bottom:var(--border-w) solid var(--color-border)}
.ui-table td{padding:var(--space-3) var(--space-4);border-bottom:var(--border-w) solid var(--color-border);vertical-align:middle}
.ui-table tbody tr:last-child td{border-bottom:none}
.ui-table tbody tr{transition:background-color var(--dur-fast) var(--ease-out)}
.ui-table tbody tr:hover{background:var(--color-surface-2)}
.ui-table tr.is-clickable{cursor:pointer}
.ui-table tr.is-clickable:focus-visible{outline:none;box-shadow:inset 0 0 0 var(--focus-w) var(--color-focus)}
.ui-table tr[aria-selected="true"]{background:var(--color-primary-soft)}
.ui-table .ui-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.ui-table .ui-col-check{width:44px;padding-right:0}
.ui-table .ui-cell-sub{display:block;margin-top:var(--space-0-5);font-size:var(--text-xs);color:var(--color-text-3)}
.ui-table .ui-cell-strong{font-weight:var(--fw-medium)}
.ui-th-sort{display:inline-flex;align-items:center;gap:var(--space-1);height:28px;margin:0 calc(var(--space-2) * -1);padding:0 var(--space-2);border:none;border-radius:var(--radius-sm);
  background:none;cursor:pointer;font:inherit;color:inherit}
.ui-th-sort:hover{color:var(--color-text);background:var(--color-surface-3)}
.ui-th-sort:focus-visible{box-shadow:var(--focus-ring)}
.ui-th-sort .ui-icon{width:14px;height:14px;opacity:.5}
th[aria-sort="ascending"] .ui-th-sort,th[aria-sort="descending"] .ui-th-sort{color:var(--color-text)}
th[aria-sort="ascending"] .ui-th-sort .ui-icon,th[aria-sort="descending"] .ui-th-sort .ui-icon{opacity:1}
.ui-num .ui-th-sort{flex-direction:row-reverse}
/* Barra de ações em massa (aparece quando há seleção) */
.ui-bulkbar{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--color-primary-soft);color:var(--color-primary-ink);
  border-bottom:var(--border-w) solid var(--color-border);font:var(--fw-medium) var(--text-sm)/1 var(--font-sans)}
.ui-bulkbar[hidden]{display:none}
.ui-table-footer{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;padding:var(--space-3) var(--space-4);border-top:var(--border-w) solid var(--color-border);
  font-size:var(--text-xs);color:var(--color-text-2);background:var(--color-surface)}
.ui-table-footer .ui-btn-group{margin-left:auto}
/* Mobile: tabela vira lista de cards (cada <td> precisa de data-label) */
@media (max-width:767px){
  .ui-table-wrap--scroll:has(.ui-table--cards){max-height:none}
  .ui-table--cards thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
  .ui-table--cards,.ui-table--cards tbody,.ui-table--cards tr,.ui-table--cards td{display:block;width:100%}
  .ui-table--cards tbody tr{padding:var(--space-3) var(--space-4);border-bottom:var(--border-w) solid var(--color-border)}
  .ui-table--cards tbody tr:last-child{border-bottom:none}
  .ui-table--cards td{display:flex;justify-content:space-between;gap:var(--space-4);padding:var(--space-1) 0;border:none;text-align:right}
  .ui-table--cards td::before{content:attr(data-label);flex:none;color:var(--color-text-3);font-size:var(--text-xs);text-align:left;padding-top:var(--space-0-5)}
  .ui-table--cards td[data-label=""]::before,.ui-table--cards td:not([data-label])::before{display:none}
  .ui-table--cards td.ui-card-title{display:block;text-align:left;padding-bottom:var(--space-2)}
  .ui-table--cards td.ui-card-title::before{display:none}
  .ui-table--cards .ui-num{text-align:right}
}

/* ---------- 16. Skeleton ---------- */
.ui-skeleton{display:block;height:var(--text-sm);border-radius:var(--radius-sm);background:var(--color-surface-3);position:relative;overflow:hidden}
.ui-skeleton::after{content:"";position:absolute;inset:0;transform:translateX(-100%);
  background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--color-surface) 60%,transparent),transparent);animation:ui-shimmer 1.4s ease-in-out infinite}
.ui-skeleton--title{height:var(--text-xl);width:40%}
.ui-skeleton--stat{height:var(--text-2xl);width:60%}
.ui-skeleton--circle{width:32px;height:32px;border-radius:var(--radius-full)}
.ui-skeleton--block{height:120px;border-radius:var(--radius-md)}
.ui-skeleton-stack{display:flex;flex-direction:column;gap:var(--space-3)}
@keyframes ui-shimmer{to{transform:translateX(100%)}}
@media (prefers-reduced-motion:reduce){ .ui-skeleton::after{display:none} }

/* ---------- 17. EmptyState (vazio / erro) ---------- */
.ui-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-2);padding:var(--space-12) var(--space-6);max-width:440px;margin:0 auto}
.ui-empty__icon{display:grid;place-items:center;width:48px;height:48px;margin-bottom:var(--space-2);border-radius:var(--radius-full);
  background:var(--color-surface-3);color:var(--color-text-2)}
.ui-empty__icon .ui-icon{width:var(--icon-md);height:var(--icon-md)}
.ui-empty__title{margin:0;font:var(--fw-semibold) var(--text-md)/var(--lh-tight) var(--font-sans);color:var(--color-text)}
.ui-empty__desc{margin:0;font-size:var(--text-sm);line-height:var(--lh);color:var(--color-text-2)}
.ui-empty__actions{display:flex;gap:var(--space-2);flex-wrap:wrap;justify-content:center;margin-top:var(--space-3)}
.ui-empty--error .ui-empty__icon{background:var(--color-danger-soft);color:var(--color-danger)}
.ui-empty--compact{padding:var(--space-8) var(--space-4)}

/* Aviso em linha (banner dentro da página) */
.ui-alert{--_ac:var(--color-info);--_bg:var(--color-info-soft);display:flex;gap:var(--space-3);align-items:flex-start;padding:var(--space-3) var(--space-4);
  border-radius:var(--radius-md);background:var(--_bg);color:var(--color-text);font-size:var(--text-sm);line-height:var(--lh)}
.ui-alert > .ui-icon{color:var(--_ac);margin-top:var(--space-0-5)}
.ui-alert b{font-weight:var(--fw-semibold)}
.ui-alert--warning{--_ac:var(--color-warning);--_bg:var(--color-warning-soft)}
.ui-alert--danger{--_ac:var(--color-danger);--_bg:var(--color-danger-soft)}
.ui-alert--success{--_ac:var(--color-success);--_bg:var(--color-success-soft)}
/* Aviso com várias linhas e ações (ex.: faixa de encerramento do dossiê) */
.ui-alert__body{display:flex;flex-direction:column;gap:var(--space-1);min-width:0;flex:1}
.ui-alert__body p{margin:0}
.ui-alert__actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-2)}
/* Linha discreta abaixo dos KPIs do painel (encerrados ficam fora dos números) */
.ui-painel-enc{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-2);margin:var(--space-3) 0 0;font-size:var(--text-sm);color:var(--color-text-2)}
.ui-painel-enc[hidden]{display:none}
/* Lista recolhível (ex.: dossiês do encerramento em lote) */
.ui-details{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-size:var(--text-sm)}
.ui-details > summary{cursor:pointer;font-weight:var(--fw-medium);color:var(--color-text-2);border-radius:var(--radius-sm)}
.ui-details > summary:focus-visible{outline:none;box-shadow:var(--focus-ring)}
.ui-lista-cods{margin:var(--space-2) 0 0;padding:0;list-style:none;max-height:calc(var(--space-16) * 3);overflow:auto;display:flex;flex-direction:column;gap:var(--space-1)}
.ui-painel-enc .ui-icon{color:var(--color-text-3)}

/* ---------- 18. PageHeader ---------- */
.ui-page-header{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-4);margin-bottom:var(--space-6)}
.ui-page-header__main{flex:1 1 320px;min-width:0}
/* Voltar (fichas de detalhe): link discreto acima do título; o texto diz para onde vai */
.ui-back{display:inline-flex;align-items:center;gap:var(--space-1);min-height:var(--control-h-sm);margin:0 0 var(--space-2) calc(-1 * var(--space-1));
  padding:0 var(--space-1);border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:var(--fw-medium);color:var(--color-text-2);text-decoration:none;
  transition:color var(--dur-fast) var(--ease-out)}
.ui-back:hover{color:var(--color-text);text-decoration:underline;text-underline-offset:2px}
.ui-back:focus-visible{outline:none;box-shadow:var(--focus-ring)}
.ui-back .ui-icon{flex:none}
.ui-breadcrumb{margin:0 0 var(--space-2)}
.ui-breadcrumb ol{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1);margin:0;padding:0;list-style:none;font-size:var(--text-xs);color:var(--color-text-3)}
.ui-breadcrumb li{display:inline-flex;align-items:center;gap:var(--space-1)}
.ui-breadcrumb li + li::before{content:"/";color:var(--color-border-input)}
.ui-breadcrumb a{color:var(--color-text-2);text-decoration:none;border-radius:var(--radius-sm)}
.ui-breadcrumb a:hover{color:var(--color-text);text-decoration:underline}
.ui-breadcrumb a:focus-visible{box-shadow:var(--focus-ring)}
.ui-breadcrumb [aria-current="page"]{color:var(--color-text-2)}
.ui-page-header__title{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-3);margin:0;
  font:var(--fw-semibold) var(--text-xl)/var(--lh-tight) var(--font-sans);letter-spacing:var(--tracking-tight);color:var(--color-text)}
.ui-page-header__desc{margin:var(--space-1) 0 0;font-size:var(--text-sm);color:var(--color-text-2)}
.ui-page-header__actions{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}
@media (max-width:640px){ .ui-page-header__actions{width:100%} .ui-page-header__title{font-size:var(--text-lg)} }

/* Barra de filtros (busca + selects + chips) */
.ui-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}
.ui-toolbar__search{flex:1 1 220px}
.ui-toolbar .ui-select{flex:0 1 170px;min-width:0}
.ui-chips{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}
.ui-divider{height:var(--border-w);background:var(--color-border);border:none;margin:var(--space-6) 0}
.ui-section-title{margin:0 0 var(--space-3);font:var(--fw-semibold) var(--text-sm)/var(--lh-tight) var(--font-sans);color:var(--color-text)}
.ui-dialog__heading{min-width:0}
.ui-dialog__text{margin:0;color:var(--color-text-2)}

/* ---------- 19. App shell (sidebar + topbar + conteúdo) ---------- */
.ui-skip{position:fixed;left:var(--space-4);top:var(--space-4);z-index:var(--z-toast);transform:translateY(-200%);
  padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);background:var(--color-primary);color:var(--color-on-primary);
  font:var(--fw-medium) var(--text-sm)/1.5 var(--font-sans);text-decoration:none}
.ui-skip:focus{transform:none;box-shadow:var(--focus-ring)}
.ui-shell{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);min-height:100vh;background:var(--color-bg);color:var(--color-text);
  font:var(--fw-regular) var(--text-sm)/var(--lh) var(--font-sans)}
.ui-shell.is-collapsed{grid-template-columns:var(--sidebar-w-collapsed) minmax(0,1fr)}
.ui-sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;min-width:0;overflow:hidden;z-index:var(--z-sidebar);
  background:var(--color-surface);border-right:var(--border-w) solid var(--color-border)}
.ui-sidebar__brand{display:flex;align-items:center;gap:var(--space-3);height:var(--topbar-h);padding:0 var(--space-4);flex:none;text-decoration:none;color:inherit;border-radius:var(--radius-sm)}
.ui-sidebar__brand:focus-visible{box-shadow:inset var(--focus-ring)}
.ui-sidebar__logo{height:24px;width:auto;flex:none}
.ui-sidebar__mark{display:none;place-items:center;width:32px;height:32px;flex:none;border-radius:var(--radius-sm);
  background:var(--color-primary);color:var(--color-on-primary);font:var(--fw-semibold) var(--text-sm)/1 var(--font-sans)}
.ui-sidebar__name{min-width:0;font:var(--fw-semibold) var(--text-sm)/var(--lh-tight) var(--font-sans);white-space:nowrap}
.ui-sidebar__name span{color:var(--color-primary)}
.ui-nav{flex:1;overflow-y:auto;overflow-x:hidden;padding:var(--space-2) var(--space-3)}
.ui-nav__group + .ui-nav__group{margin-top:var(--space-4)}
.ui-nav__group[hidden]{display:none}
.ui-nav__title{display:flex;align-items:center;height:28px;padding:0 var(--space-3);margin:0;white-space:nowrap;
  font:var(--fw-medium) var(--text-xs)/1 var(--font-sans);color:var(--color-text-3)}
.ui-nav__list{display:flex;flex-direction:column;gap:var(--space-0-5);margin:0;padding:0;list-style:none}
.ui-nav__list li[hidden]{display:none}
.ui-nav__item{position:relative;display:flex;align-items:center;gap:var(--space-3);width:100%;height:var(--control-h);padding:0 var(--space-3);
  border:none;border-radius:var(--radius-sm);background:none;cursor:pointer;text-decoration:none;text-align:left;
  font:var(--fw-medium) var(--text-sm)/1 var(--font-sans);color:var(--color-text-2);
  transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}
.ui-nav__item > .ui-icon{width:18px;height:18px}
.ui-nav__item:hover{background:var(--color-surface-2);color:var(--color-text)}
.ui-nav__item:focus-visible{box-shadow:var(--focus-ring)}
.ui-nav__item[aria-current="page"]{background:var(--color-primary-soft);color:var(--color-primary-ink);font-weight:var(--fw-semibold)}
.ui-nav__item[aria-current="page"] > .ui-icon{color:var(--color-primary)}
.ui-nav__item[aria-current="page"]::before{content:"";position:absolute;left:calc(var(--space-3) * -1);top:var(--space-2);bottom:var(--space-2);width:3px;
  border-radius:0 var(--radius-xs) var(--radius-xs) 0;background:var(--color-primary)}
.ui-nav__label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ui-nav__item .ui-badge--count{margin-left:auto}
.ui-sidebar__footer{flex:none;padding:var(--space-2) var(--space-3);border-top:var(--border-w) solid var(--color-border)}
.ui-sidebar__version{padding:var(--space-1) var(--space-3) 0;font-size:var(--text-xs);color:var(--color-text-3);white-space:nowrap}
/* recolhida: só ícones (tooltips à direita) */
.ui-shell.is-collapsed .ui-sidebar__name,.ui-shell.is-collapsed .ui-nav__title,.ui-shell.is-collapsed .ui-nav__label,
.ui-shell.is-collapsed .ui-sidebar__version,.ui-shell.is-collapsed .ui-sidebar__logo{display:none}
.ui-shell.is-collapsed .ui-sidebar__mark{display:grid}
.ui-shell.is-collapsed .ui-sidebar__brand{justify-content:center;padding:0}
.ui-shell.is-collapsed .ui-nav__item{justify-content:center;padding:0}
.ui-shell.is-collapsed .ui-nav__group + .ui-nav__group{margin-top:var(--space-2);padding-top:var(--space-2);border-top:var(--border-w) solid var(--color-border)}
.ui-shell.is-collapsed .ui-nav__item .ui-badge--count{position:absolute;top:2px;right:2px;height:16px;min-width:16px;padding:0 var(--space-1);font-size:10px}
.ui-shell.is-collapsed .ui-collapse-btn .ui-icon{transform:scaleX(-1)}

.ui-main{min-width:0;display:flex;flex-direction:column}
.ui-topbar{position:sticky;top:0;z-index:var(--z-sticky);display:flex;align-items:center;gap:var(--space-2);height:var(--topbar-h);padding:0 var(--space-6);
  background:var(--color-surface);border-bottom:var(--border-w) solid var(--color-border)}
.ui-topbar__menu{display:none}
.ui-topbar .ui-breadcrumb{flex:1;min-width:0;margin:0}
.ui-topbar .ui-breadcrumb ol{flex-wrap:nowrap;font-size:var(--text-sm);overflow:hidden}
.ui-topbar .ui-breadcrumb li{min-width:0;white-space:nowrap}
.ui-topbar .ui-breadcrumb li:last-child{overflow:hidden}
.ui-topbar .ui-breadcrumb li:last-child > *{overflow:hidden;text-overflow:ellipsis}
.ui-topbar .ui-breadcrumb [aria-current="page"]{color:var(--color-text);font-weight:var(--fw-medium)}
.ui-search-trigger{display:inline-flex;align-items:center;gap:var(--space-2);width:280px;height:var(--control-h-sm);padding:0 var(--space-2) 0 var(--space-3);
  border:var(--border-w) solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-2);cursor:pointer;
  font:var(--fw-regular) var(--text-sm)/1 var(--font-sans);color:var(--color-text-3);transition:border-color var(--dur-fast) var(--ease-out)}
.ui-search-trigger:hover{border-color:var(--color-border-strong);color:var(--color-text-2)}
.ui-search-trigger:focus-visible{box-shadow:var(--focus-ring)}
.ui-search-trigger__text{flex:1;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ui-user-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--control-h);height:var(--control-h);padding:0;border:none;border-radius:var(--radius-full);background:none;cursor:pointer}
.ui-user-btn:hover .ui-avatar{box-shadow:0 0 0 var(--focus-w) var(--color-border-strong)}
.ui-user-btn:focus-visible{box-shadow:var(--focus-ring)}
.ui-menu__header{padding:var(--space-2) var(--space-3)}
.ui-menu__header b{display:block;font:var(--fw-semibold) var(--text-sm)/var(--lh-tight) var(--font-sans);color:var(--color-text)}
.ui-menu__header span{display:block;margin-top:var(--space-0-5);font-size:var(--text-xs);color:var(--color-text-3);overflow:hidden;text-overflow:ellipsis}
.ui-content{width:100%;max-width:var(--content-max);margin:0 auto;padding:var(--space-8) var(--space-8) var(--space-16)}
.ui-content:focus{outline:none}
.ui-page-header[hidden]{display:none}
.ui-scope{display:flex;gap:var(--space-2);flex-wrap:wrap}
.ui-scope .ui-select{width:200px}
.ui-scope[hidden],.ui-scope .ui-select[hidden]{display:none}
.ui-scrim{position:fixed;inset:0;z-index:calc(var(--z-sidebar) - 1);background:var(--color-overlay);animation:ui-fade-in var(--dur) var(--ease-out)}
.ui-scrim[hidden]{display:none}
@media (max-width:1023px){
  .ui-shell,.ui-shell.is-collapsed{grid-template-columns:minmax(0,1fr)}
  .ui-sidebar{position:fixed;left:0;top:0;bottom:0;width:min(var(--sidebar-w),85vw);transform:translateX(-100%);visibility:hidden;
    transition:transform var(--dur) var(--ease-out),visibility 0s linear var(--dur)}
  .ui-shell.is-drawer-open .ui-sidebar{transform:none;visibility:visible;box-shadow:var(--shadow-3);transition:transform var(--dur) var(--ease-out)}
  .ui-shell:not(.is-ready) .ui-sidebar{transition:none}   /* sem animação no carregamento */
  .ui-topbar__menu{display:inline-flex}
  .ui-collapse-btn{display:none}
  .ui-search-trigger{width:auto;min-width:200px}
}
@media (max-width:767px){
  .ui-topbar{padding:0 var(--space-4)}
  .ui-content{padding:var(--space-6) var(--space-4) var(--space-12)}
  .ui-search-trigger{width:var(--control-h);min-width:0;height:var(--control-h);justify-content:center;padding:0;background:none;border-color:transparent;color:var(--color-text-2)}
  .ui-search-trigger__text,.ui-search-trigger .ui-kbd{display:none}
  .ui-topbar .ui-breadcrumb li:not(:last-child){display:none}
  .ui-topbar .ui-breadcrumb li:last-child::before{display:none}
  .ui-scope{width:100%}
  .ui-scope .ui-select{flex:1 1 140px;width:auto}
}

/* ---------- 20. Command palette (Ctrl+K) ---------- */
.ui-cmdk{width:min(640px,calc(100vw - var(--space-8)));max-height:76vh;margin:12vh auto auto;padding:0;
  border:var(--border-w) solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-3);
  font:var(--fw-regular) var(--text-sm)/var(--lh) var(--font-sans);overflow:hidden}
.ui-cmdk[open]{display:flex;flex-direction:column;animation:ui-dialog-in var(--dur) var(--ease-out)}
.ui-cmdk::backdrop{background:var(--color-overlay)}
.ui-cmdk__search{display:flex;align-items:center;gap:var(--space-3);height:52px;padding:0 var(--space-4);border-bottom:var(--border-w) solid var(--color-border);flex:none}
.ui-cmdk__search > .ui-icon{color:var(--color-text-3);width:var(--icon-md);height:var(--icon-md)}
.ui-cmdk__search input{flex:1;min-width:0;height:100%;border:none;background:none;outline:none;color:var(--color-text);font:var(--fw-regular) var(--text-md)/1 var(--font-sans)}
.ui-cmdk__search input::placeholder{color:var(--color-placeholder)}
.ui-cmdk__list{flex:1;overflow-y:auto;max-height:min(420px,60vh);padding:var(--space-2);margin:0;list-style:none}
.ui-cmdk__group{padding:var(--space-2) var(--space-3) var(--space-1);font:var(--fw-medium) var(--text-xs)/1 var(--font-sans);color:var(--color-text-3)}
.ui-cmdk__item{display:flex;align-items:center;gap:var(--space-3);min-height:var(--control-h);padding:0 var(--space-3);border-radius:var(--radius-sm);cursor:pointer;color:var(--color-text)}
.ui-cmdk__item > .ui-icon{color:var(--color-text-3)}
.ui-cmdk__item[data-active="true"]{background:var(--color-surface-3)}
.ui-cmdk__item[data-active="true"] > .ui-icon{color:var(--color-text)}
.ui-cmdk__label{min-width:0;flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ui-cmdk__sub{margin-left:auto;padding-left:var(--space-3);flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-xs);color:var(--color-text-3)}
.ui-cmdk__empty{padding:var(--space-8) var(--space-4);text-align:center;color:var(--color-text-2)}
.ui-cmdk__footer{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap;padding:var(--space-2) var(--space-4);border-top:var(--border-w) solid var(--color-border);
  font-size:var(--text-xs);color:var(--color-text-3);flex:none}
.ui-cmdk__footer span{display:inline-flex;align-items:center;gap:var(--space-1)}
@media (max-width:767px){ .ui-cmdk{margin-top:var(--space-4);width:calc(100vw - var(--space-4))} .ui-cmdk__footer{display:none} }

/* ---------- 21. Listas: linha de resultados/chips, ações em massa, paginação ---------- */
.ui-filterbar{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2) var(--space-3);min-height:var(--control-h);margin:var(--space-3) 0}
.ui-results{margin:0;font-size:var(--text-sm);color:var(--color-text-2);font-variant-numeric:tabular-nums}
.ui-results b{color:var(--color-text);font-weight:var(--fw-semibold)}
.ui-filterbar .ui-bulkbar{flex:1 1 100%;flex-wrap:wrap;gap:var(--space-2);border:none;border-radius:var(--radius-sm);padding:var(--space-1) var(--space-1) var(--space-1) var(--space-3)}
.ui-filterbar .ui-bulkbar > span{margin-right:auto}
.ui-filterbar:has(.ui-bulkbar:not([hidden])) > .ui-results,.ui-filterbar:has(.ui-bulkbar:not([hidden])) > .ui-chips{display:none}
.ui-table-footer--detached{border:none;background:none;padding:var(--space-3) 0 0}
.ui-table-footer[hidden]{display:none}
.ui-table-wrap .ui-empty{margin:0 auto}
.ui-cell-link{color:inherit;text-decoration:none;font-weight:var(--fw-medium);border-radius:var(--radius-xs)}
.ui-cell-link:hover{text-decoration:underline;text-underline-offset:2px}
.ui-cell-link:focus-visible{box-shadow:var(--focus-ring)}
.ui-cell-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-2);margin-top:var(--space-1)}
.ui-table .ui-nowrap{white-space:nowrap}
.ui-table td.ui-text-3{color:var(--color-text-3)}
@media (max-width:767px){
  .ui-toolbar__search{flex-basis:100%}
  .ui-toolbar .ui-select{flex:1 1 calc(50% - var(--space-1))}
  .ui-toolbar > .ui-btn{flex:1 1 100%}
  .ui-table--cards tbody tr{position:relative}
  .ui-table--cards td.ui-col-check{position:absolute;top:var(--space-3);right:var(--space-4);width:auto;padding:0}
  .ui-table--cards td.ui-card-title{padding-right:calc(var(--space-8) + var(--space-2))}
  .ui-table-footer--detached{justify-content:center}
  .ui-table-footer--detached .ui-btn-group{margin-left:0}
}
.ui-table-wrap[aria-busy="true"] tbody{opacity:.55;transition:opacity var(--dur) var(--ease-out)}
.ui-table .ui-col-main{min-width:calc(var(--space-16) * 3.5)}
@media (max-width:767px){ .ui-table .ui-col-main{min-width:0} }

/* ---------- 22. Telas de detalhe: resumo, pilhas, editor de exceções, linha do tempo ---------- */
.ui-stack{display:flex;flex-direction:column;gap:var(--space-4)}
.ui-mt-2{margin-top:var(--space-2)} .ui-mt-4{margin-top:var(--space-4)} .ui-mt-6{margin-top:var(--space-6)}
/* Faixa de números-chave: 1 card com divisórias de 1px (sem card dentro de card) */
.ui-statbar{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--border-w);overflow:hidden;
  background:var(--color-border);border:var(--border-w) solid var(--color-border);border-radius:var(--radius-md)}
.ui-statbar > .ui-stat{background:var(--color-surface);min-width:0}
.ui-stat__value--md{font-size:var(--text-lg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ui-origin{height:20px;margin-left:var(--space-1);vertical-align:1px;font-weight:var(--fw-regular)}
.ui-dl dd .ui-origin{cursor:default}
/* Editor de exceções: cada campo com interruptor "Fixar" */
.ui-ov-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-3);margin-top:var(--space-4)}
.ui-ov{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);border:var(--border-w) solid var(--color-border);border-radius:var(--radius-sm);
  transition:border-color var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}
.ui-ov.is-fixed{border-color:var(--color-warning);background:var(--color-warning-soft)}
.ui-ov__head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);min-height:24px}
.ui-ov__head .ui-check{align-items:center;color:var(--color-text-2)}
.ui-ov-grid + .ui-alert,.ui-alert + .ui-ov-grid{margin-top:var(--space-4)}
/* Cabeçalho de seção dentro de aba (texto + ação) */
.ui-section-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-3)}
.ui-section-head .ui-hint{margin:0}
.ui-row-actions{display:inline-flex;gap:var(--space-1);justify-content:flex-end}
.ui-pdf{display:inline-flex;color:var(--color-text-2)}
/* Formulário simples (dialogs) */
.ui-form{display:flex;flex-direction:column;gap:var(--space-4)}
.ui-file{height:auto;padding:var(--space-2) var(--space-3)}
.ui-file::file-selector-button{margin-right:var(--space-3);padding:var(--space-1) var(--space-3);border:var(--border-w) solid var(--color-border-strong);
  border-radius:var(--radius-sm);background:var(--color-surface-2);color:var(--color-text);font:var(--fw-medium) var(--text-xs)/1.5 var(--font-sans);cursor:pointer}
/* Linha do tempo (histórico/auditoria) */
.ui-timeline{list-style:none;margin:0;padding:var(--space-2) var(--space-6)}
.ui-timeline li{display:flex;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:var(--border-w) solid var(--color-border)}
.ui-timeline li:last-child{border-bottom:none}
.ui-timeline__icon{display:grid;place-items:center;flex:none;width:32px;height:32px;border-radius:var(--radius-full);background:var(--color-surface-3);color:var(--color-text-2)}
.ui-timeline__body{min-width:0}
.ui-timeline__text{margin:0;font-size:var(--text-sm);line-height:var(--lh);overflow-wrap:anywhere}
.ui-timeline__text b{font-weight:var(--fw-semibold)}
.ui-timeline__meta{margin:var(--space-0-5) 0 0;font-size:var(--text-xs);color:var(--color-text-3);font-variant-numeric:tabular-nums}
@media (max-width:767px){
  .ui-timeline{padding:var(--space-1) var(--space-4)}
  .ui-statbar{grid-template-columns:1fr 1fr}
  .ui-table--cards td .ui-row-actions{margin-left:auto}
}
@media (max-width:767px){
  .ui-card__header{flex-wrap:wrap;padding:var(--space-4)}
  .ui-card__header .ui-card__actions{margin-left:0}
  .ui-card__body{padding:var(--space-4)}
  .ui-card__footer{padding:var(--space-3) var(--space-4)}
  .ui-stat{padding:var(--space-3) var(--space-4)}
}

/* ---------- 23. Painel: grade, KPIs, lista, barras ---------- */
.ui-grid__full{grid-column:1/-1}
.ui-dash-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}
.ui-dash-grid[hidden]{display:none}
@media (max-width:1023px){ .ui-dash-grid{grid-template-columns:minmax(0,1fr)} }
a.ui-card{display:flex;text-decoration:none;color:inherit}
.ui-stat--hero .ui-stat__value{color:var(--color-primary-ink)}
.ui-dot{display:inline-block;flex:none;width:8px;height:8px;border-radius:var(--radius-full);background:var(--color-neutral)}
.ui-dot--success{background:var(--color-success)} .ui-dot--warning{background:var(--color-warning)}
.ui-dot--danger{background:var(--color-danger)} .ui-dot--info{background:var(--color-info)}
/* Lista de itens navegáveis (linha inteira é link) */
.ui-list{list-style:none;margin:0;padding:var(--space-1) 0}
.ui-list li + li{border-top:var(--border-w) solid var(--color-border)}
.ui-list__item{display:flex;align-items:center;gap:var(--space-4);min-height:56px;padding:var(--space-3) var(--space-6);text-decoration:none;color:inherit;
  transition:background-color var(--dur-fast) var(--ease-out)}
.ui-list__item:hover{background:var(--color-surface-2)}
.ui-list__item:focus-visible{outline:none;box-shadow:inset 0 0 0 var(--focus-w) var(--color-focus)}
.ui-list__main{display:flex;flex-direction:column;gap:var(--space-0-5);min-width:0;flex:1}
.ui-list__title{font-weight:var(--fw-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ui-list__sub{font-size:var(--text-xs);color:var(--color-text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ui-list__end{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-0-5);flex:none}
.ui-list__more{padding:var(--space-3) var(--space-6);border-top:var(--border-w) solid var(--color-border);font-size:var(--text-sm)}
/* Barras horizontais (uma série): rótulo · barra · valor. Barra fina, ponta arredondada, ancorada à esquerda. */
.ui-bars{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-1)}
.ui-bar{display:grid;grid-template-columns:minmax(0,calc(var(--space-16) * 2.5)) minmax(0,1fr) auto;align-items:center;gap:var(--space-3);
  min-height:32px;padding:0 var(--space-2);margin:0 calc(var(--space-2) * -1);border-radius:var(--radius-sm);font-size:var(--text-sm)}
.ui-bar:hover{background:var(--color-surface-2)}
.ui-bar__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text)}
.ui-bar__track{display:block;height:10px;border-radius:0 var(--radius-xs) var(--radius-xs) 0;background:var(--color-surface-3)}
.ui-bar__fill{display:block;height:100%;width:var(--v);min-width:2px;border-radius:0 var(--radius-xs) var(--radius-xs) 0;background:var(--color-primary);
  transition:width var(--dur) var(--ease-out)}
.ui-bar--outros .ui-bar__fill{background:var(--color-text-3)}
.ui-bar--outros .ui-bar__label{color:var(--color-text-2)}
.ui-bar__value{min-width:calc(var(--space-16) + var(--space-4));text-align:right;font-variant-numeric:tabular-nums;font-weight:var(--fw-medium);color:var(--color-text)}
.ui-chart-empty{margin:0;padding:var(--space-6) 0;text-align:center;color:var(--color-text-2);font-size:var(--text-sm)}
@media (max-width:767px){
  .ui-list__item{padding:var(--space-3) var(--space-4);gap:var(--space-3)}
  .ui-list__more{padding:var(--space-3) var(--space-4)}
  .ui-bar{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"l v" "t t";row-gap:var(--space-1);padding-top:var(--space-1);padding-bottom:var(--space-1)}
  .ui-bar__label{grid-area:l} .ui-bar__value{grid-area:v;min-width:0} .ui-bar__track{grid-area:t}
}
@media (max-width:767px){
  .ui-grid--stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2)}
  .ui-grid--stats > .ui-stat--hero,.ui-grid--stats > .ui-grid__full{grid-column:1/-1}
  .ui-grid--stats > .ui-stat:not(.ui-stat--hero){padding:var(--space-3)}
  .ui-grid--stats > .ui-stat:not(.ui-stat--hero) .ui-stat__value{font-size:var(--text-xl)}
  .ui-grid--stats > .ui-stat:not(.ui-stat--hero) .ui-stat__meta{display:none}
  .ui-grid--stats > .ui-stat:not(.ui-stat--hero) .ui-stat__label{align-items:flex-start}
}
@media (max-width:767px){
  .ui-card__body.ui-card__body--flush{padding:0}
  .ui-list__item{flex-wrap:wrap;row-gap:var(--space-2)}
  .ui-list__main{flex-basis:100%}
  .ui-list__title{white-space:normal}
  .ui-list__end{flex-direction:row-reverse;align-items:center;justify-content:flex-end;gap:var(--space-2)}
}

/* ---------- 24. Formulário longo (sheet): seções, grade, IA, total ---------- */
.ui-fieldset{margin:0;padding:0;border:none;min-width:0}
.ui-fieldset > legend{display:block;width:100%;padding:0;margin:0 0 var(--space-4);font:var(--fw-semibold) var(--text-md)/var(--lh-tight) var(--font-sans);color:var(--color-text)}
.ui-fieldset > legend .ui-text-3{font-weight:var(--fw-regular);font-size:var(--text-sm)}
.ui-fieldset + .ui-fieldset,.ui-ia-box + .ui-fieldset{margin-top:var(--space-6);padding-top:var(--space-6);border-top:var(--border-w) solid var(--color-border)}
.ui-ia-box + .ui-fieldset{border-top:none;padding-top:0}
.ui-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}
/* Subtítulo dentro da grade do formulário (ex.: "Contas acessórias" nos campos de Locação) */
.ui-form-sub{grid-column:1/-1;padding-top:var(--space-3);border-top:1px solid var(--color-border)}
.ui-form-sub .ui-section-title{margin:0}
.ui-form-sub .ui-hint{margin:var(--space-1) 0 0}
/* Linha-título de seção nos campos específicos (exibição) */
.ui-dl .ui-dl__sec{padding-top:var(--space-3);border-top:1px solid var(--color-border)}
.ui-dl .ui-dl__sec dt{font-weight:var(--fw-semibold);color:var(--color-text)}
.ui-form-grid .ui-field--full,.ui-form-grid__full{grid-column:1/-1}
.ui-form-grid__full[hidden]{display:none}
.ui-field .ui-check{margin-top:var(--space-2)}
.ui-radio-group{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-6)}
.ui-ia-box{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);border:var(--border-w) dashed var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface-2)}
.ui-ia-box .ui-section-title{display:flex;align-items:center;gap:var(--space-2);margin:0}
.ui-ia-box .ui-section-title .ui-icon{color:var(--color-primary)}
.ui-ia-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-3)}
.ui-ia-msg{flex:1 1 240px;margin:0;font-size:var(--text-xs);line-height:var(--lh);color:var(--color-text-2)}
.ui-ia-msg[data-tone="erro"]{color:var(--color-danger);font-weight:var(--fw-medium)}
.ui-ia-msg[data-tone="ok"]{color:var(--color-success);font-weight:var(--fw-medium)}
/* Campo sugerido pela IA: verde (confiança ok) ou laranja (baixa). Some ao editar. */
.ui-input.is-ia,.ui-select select.is-ia{border-color:var(--color-success);background:var(--color-success-soft)}
.ui-input.is-ia-baixa,.ui-select select.is-ia-baixa{border-color:var(--color-warning);background:var(--color-warning-soft)}
.ui-total{display:flex;align-items:center;font-weight:var(--fw-semibold);background:var(--color-surface-2);border-color:var(--color-border)}
.ui-form-foot{display:flex;flex-direction:column;gap:var(--space-0-5);min-width:0}
.ui-form-total{font-size:var(--text-sm);color:var(--color-text-2);white-space:nowrap}
.ui-form-total b{color:var(--color-text);font-weight:var(--fw-semibold)}
.ui-form-foot .ui-error:empty{display:none}
.ui-dialog__footer{flex-wrap:wrap}
@media (max-width:767px){
  .ui-form-grid{grid-template-columns:minmax(0,1fr)}
  .ui-dialog__footer .ui-dialog__footer-start{flex-basis:100%}
  .ui-sheet .ui-dialog__header,.ui-sheet .ui-dialog__body,.ui-sheet .ui-dialog__footer{padding-left:var(--space-4);padding-right:var(--space-4)}
  .ui-sheet{border-radius:0}
}

/* ---------- 25. Ficha do documento: grade 2/1, arquivo, texto extraído ---------- */
.ui-detail-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:var(--space-4);align-items:start}
@media (max-width:1023px){ .ui-detail-grid{grid-template-columns:minmax(0,1fr)} }
.ui-file-row{display:flex;align-items:center;gap:var(--space-3);min-width:0}
.ui-file-row__icon{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:var(--radius-sm);background:var(--color-primary-soft);color:var(--color-primary)}
.ui-file-row__icon .ui-icon{width:var(--icon-md);height:var(--icon-md)}
.ui-file-row__main{display:flex;flex-direction:column;gap:var(--space-0-5);min-width:0;flex:1}
.ui-file-row__name{font-weight:var(--fw-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ui-file-row__meta{font-size:var(--text-xs);color:var(--color-text-3)}
.ui-textbox{max-height:340px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;padding:var(--space-3) var(--space-4);border:var(--border-w) solid var(--color-border);
  border-radius:var(--radius-sm);background:var(--color-surface-2);font-size:var(--text-sm);line-height:var(--lh);color:var(--color-text)}
.ui-textbox:focus-visible{box-shadow:var(--focus-ring)}
.ui-ocr-msg{display:flex;gap:var(--space-2);align-items:flex-start;margin:0;font-size:var(--text-sm);line-height:var(--lh);color:var(--color-text-2)}
.ui-ocr-msg .ui-spinner{margin-top:var(--space-0-5);flex:none}
.ui-ocr-msg--erro{color:var(--color-danger)}
.ui-pre{white-space:pre-wrap;font-weight:var(--fw-regular)}
@media (max-width:1023px){ .ui-detail-grid > :last-child{order:-1} }
button.ui-card{width:100%;font:inherit;text-align:left;color:inherit;cursor:pointer;display:flex}
button.ui-card:focus-visible{box-shadow:var(--focus-ring)}
@media (max-width:767px){ .ui-grid--stats.ui-grid--2x2{grid-template-columns:repeat(2,minmax(0,1fr))} }

/* ---------- 26. Importação: passos, dropzone, diff ---------- */
.ui-mb-2{margin-bottom:var(--space-2)}
.ui-text-danger{color:var(--color-danger)}
.ui-table-wrap--flush{border:none;border-radius:0;border-top:var(--border-w) solid var(--color-border)}
.ui-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.ui-step{position:relative;display:flex;gap:var(--space-4);padding-bottom:var(--space-6)}
.ui-step:last-child{padding-bottom:0}
.ui-step:not(:last-child)::before{content:"";position:absolute;left:13px;top:32px;bottom:var(--space-1);width:var(--border-w);background:var(--color-border)}
.ui-step__n{display:grid;place-items:center;flex:none;width:28px;height:28px;border-radius:var(--radius-full);
  background:var(--color-primary-soft);color:var(--color-primary-ink);font:var(--fw-semibold) var(--text-xs)/1 var(--font-sans)}
.ui-step__body{flex:1;min-width:0;padding-top:var(--space-1)}
.ui-step__title{margin:0 0 var(--space-1);font:var(--fw-semibold) var(--text-sm)/var(--lh-tight) var(--font-sans);color:var(--color-text)}
.ui-dropzone{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);margin-top:var(--space-2);padding:var(--space-6) var(--space-4);text-align:center;cursor:pointer;
  border:var(--border-w) dashed var(--color-border-input);border-radius:var(--radius-md);background:var(--color-surface-2);color:var(--color-text-2);
  transition:border-color var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}
.ui-dropzone:hover,.ui-dropzone.is-over{border-color:var(--color-primary);background:var(--color-primary-soft)}
.ui-dropzone:focus-within{box-shadow:var(--focus-ring);border-color:var(--color-focus)}
.ui-dropzone__icon{display:grid;place-items:center;width:40px;height:40px;border-radius:var(--radius-full);background:var(--color-surface);color:var(--color-primary);margin-bottom:var(--space-1)}
.ui-dropzone__icon .ui-icon{width:var(--icon-md);height:var(--icon-md)}
.ui-dropzone__text{font-size:var(--text-sm);color:var(--color-text)}
.ui-dropzone__text b{color:var(--color-primary-ink)}
.ui-dropzone__hint{font-size:var(--text-xs);color:var(--color-text-3)}
.ui-dropzone__file:empty{display:none}
.ui-dropzone__file{margin-top:var(--space-2);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);background:var(--color-surface);
  border:var(--border-w) solid var(--color-border);font:var(--fw-medium) var(--text-xs)/1.5 var(--font-sans);color:var(--color-text);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ui-dropzone.has-file{border-style:solid;border-color:var(--color-success);background:var(--color-success-soft)}
.ui-diff{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-0-5);font-size:var(--text-xs)}
.ui-diff__de{color:var(--color-text-3);text-decoration:line-through}
.ui-diff__para{color:var(--color-text);font-weight:var(--fw-medium)}
@media (max-width:767px){ .ui-tab{padding:0 var(--space-2)} }

/* ---------- 27. Telas administrativas: usuários, listas, empresas ---------- */
.ui-mb-3{margin-bottom:var(--space-3)} .ui-mb-4{margin-bottom:var(--space-4)}
.ui-user-cell{display:flex;align-items:center;gap:var(--space-3);min-width:0}
.ui-user-cell > div{min-width:0}
.ui-table tr.is-inativo td{color:var(--color-text-2)}
.ui-table tr.is-inativo .ui-input--inline{color:var(--color-text-2)}
/* Nome editável direto na tabela: parece texto até receber foco/hover */
.ui-input--inline{height:var(--control-h-sm);border-color:transparent;background:transparent;padding:0 var(--space-2);margin-left:calc(var(--space-2) * -1);font-weight:var(--fw-medium)}
.ui-input--inline:hover:not(:disabled){border-color:var(--color-border-strong)}
.ui-input--inline:focus{background:var(--color-surface)}
.ui-input--inline:disabled{background:transparent;border-color:transparent;color:var(--color-text);cursor:default}
.ui-add-row{display:flex;gap:var(--space-2);flex-wrap:wrap}
.ui-add-row .ui-input{flex:1 1 240px}
.ui-card__header--wrap{flex-wrap:wrap}
.ui-badge-row{display:flex;flex-wrap:wrap;gap:var(--space-1);margin-left:auto}
.ui-badge-row + .ui-card__actions{margin-left:0}
.ui-badge .ui-icon{width:12px;height:12px}
/* Grupo de checkboxes com contador e marcar/limpar */
.ui-checkgroup{margin:0;padding:var(--space-3) var(--space-4);border:var(--border-w) solid var(--color-border);border-radius:var(--radius-sm);min-width:0}
.ui-checkgroup > legend{padding:0 var(--space-1);margin-left:calc(var(--space-1) * -1)}
.ui-checkgroup__count{margin-left:var(--space-2);font-weight:var(--fw-regular);font-size:var(--text-xs);color:var(--color-text-3)}
.ui-checkgroup__actions{display:flex;gap:var(--space-3);margin-bottom:var(--space-2)}
.ui-checkgroup__list{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--space-1) var(--space-4);max-height:180px;overflow:auto}
.ui-list--boxed{border:var(--border-w) solid var(--color-border);border-radius:var(--radius-md);padding:0}
.ui-list--boxed .ui-list__item{padding:var(--space-3) var(--space-4)}
@media (max-width:767px){
  .ui-badge-row{margin-left:0;flex-basis:100%}
  .ui-toolbar > .ui-segmented{flex:1 1 100%;overflow-x:auto}
}

/* ---------- 28. Base do app (antes em styles.css, removido) ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--color-bg);color:var(--color-text);font:var(--fw-regular) var(--text-sm)/var(--lh) var(--font-sans);
  font-synthesis-weight:none;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4,p{margin:0}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:inherit}
.view{display:none}
.view.on{display:block;animation:ui-fade-in var(--dur-fast) var(--ease-out)}
.ui-capitalize::first-letter{text-transform:uppercase}
.ui-timeline__meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-2)}
/* Telas de acesso (login / sem acesso) */
.ui-auth{min-height:100vh;display:grid;place-items:center;padding:var(--space-6) var(--space-4);background:var(--color-bg)}
.ui-auth__card{width:100%;max-width:400px;padding:var(--space-8);background:var(--color-surface);border:var(--border-w) solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-2)}
.ui-auth__brand{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-8)}
.ui-auth__logo{height:32px;width:auto}
.ui-auth__name{font:var(--fw-semibold) var(--text-md)/var(--lh-tight) var(--font-sans)}
.ui-auth__name span{color:var(--color-primary)}
.ui-auth__sub{font-size:var(--text-xs);color:var(--color-text-3)}
.ui-auth__title{margin-bottom:var(--space-6);font:var(--fw-semibold) var(--text-xl)/var(--lh-tight) var(--font-sans);letter-spacing:var(--tracking-tight)}
.ui-auth__foot{margin-top:var(--space-6);text-align:center}
.ui-auth .ui-empty{padding:0}
/* Botão dentro do campo (mostrar senha) */
.ui-input-group--end > .ui-input{padding-left:var(--space-3);padding-right:calc(var(--control-h) + var(--space-1))}
.ui-input-btn{position:absolute;right:var(--space-1);display:grid;place-items:center;width:var(--control-h-sm);height:var(--control-h-sm);
  border:none;border-radius:var(--radius-sm);background:none;color:var(--color-text-3);cursor:pointer}
.ui-input-btn:hover{color:var(--color-text);background:var(--color-surface-2)}
.ui-input-btn:focus-visible{box-shadow:var(--focus-ring)}
.ui-input-btn[aria-pressed="true"]{color:var(--color-primary)}
@media (max-width:767px){ .ui-auth__card{padding:var(--space-6) var(--space-4)} }

/* ---------- 29. Alvos de clique (≥ 40px nos controles; folga nos links de texto) ---------- */
.ui-hit{display:inline-grid;place-items:center;width:var(--control-h);height:var(--control-h);margin:calc((var(--control-h) - var(--check-size)) / -2);cursor:pointer;border-radius:var(--radius-sm)}
.ui-hit:hover{background:var(--color-surface-3)}
.ui-cell-link,.ui-breadcrumb a,.ui-list__more .ui-link,.ui-table .ui-link,.ui-timeline__meta .ui-link{display:inline-block;padding-block:var(--space-1)}

/* ---------- 30. Paginação "Carregar mais" e período ---------- */
.ui-load-more{display:flex;justify-content:center;padding:var(--space-2) 0;text-align:center}
.ui-load-more--card{padding:var(--space-3) var(--space-6);border-top:var(--border-w) solid var(--color-border)}
.ui-period{display:flex;align-items:center;gap:var(--space-2);flex:0 1 auto}
.ui-period .ui-input{width:auto}
@media (max-width:767px){ .ui-period{flex:1 1 100%} .ui-period .ui-input{flex:1;min-width:0} }
@media (max-width:767px){ .ui-period .ui-input{width:0;flex:1 1 0;padding:0 var(--space-2)} }
