/* Minimal resets and shared primitives. No component styling lives here. */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg-app);color:var(--text-primary);font:var(--type-body);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:var(--text-link);text-decoration:none;border-bottom:1px solid var(--n-400);
  transition:color var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard)}
a:hover{color:var(--text-link-hover);border-bottom-color:var(--text-link-hover)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,
[tabindex]:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-ring-offset);border-radius:var(--r-xs)}
::selection{background:var(--n-900);color:var(--fos-white)}
[data-theme="dark"] ::selection{background:var(--fos-white);color:var(--n-900)}
h1,h2,h3,h4,h5,h6,p{margin:0}
:where(button,input,select,textarea){font-family:inherit;font-size:inherit}

/* Numeric data: CNPJ, currency, competências, hashes, protocolos. */
.fos-num{font:var(--type-numeric);font-variant-numeric:tabular-nums;font-feature-settings:"tnum";letter-spacing:0}
/* Uppercase eyebrow label used across decks and app section headers. */
.fos-eyebrow{font:var(--type-label);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--text-secondary)}
/* Custom scrollbars keep dense panels from feeling like a web page. */
.fos-scroll{scrollbar-width:thin;scrollbar-color:var(--n-300) transparent}
.fos-scroll::-webkit-scrollbar{width:10px;height:10px}
.fos-scroll::-webkit-scrollbar-thumb{background:var(--n-300);border:3px solid transparent;background-clip:content-box;border-radius:var(--r-pill)}
.fos-scroll::-webkit-scrollbar-track{background:transparent}
