/* CoreEstoque — tokens do design system (tema claro) + base */
@font-face { font-family: "IBM Plex Sans"; src: url("fonts/IBMPlexSans-400.woff2") format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: "IBM Plex Sans"; src: url("fonts/IBMPlexSans-500.woff2") format("woff2"); font-weight: 500; font-display: swap; }
@font-face { font-family: "IBM Plex Sans"; src: url("fonts/IBMPlexSans-600.woff2") format("woff2"); font-weight: 600; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url("fonts/IBMPlexMono-400.woff2") format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url("fonts/IBMPlexMono-500.woff2") format("woff2"); font-weight: 500; font-display: swap; }

:root {
  --bg-app: #f1f3f2; --bg-surface: #ffffff; --bg-subtle: #f6f7f7; --bg-hover: #eceeed; --bg-selected: #e4f0ea;
  --border: #dde1df; --border-strong: #c4cac7; --border-control: #858f8a;
  --ink: #151b19; --ink-secondary: #46504c; --ink-muted: #5f6965; --ink-disabled: #9aa29e;
  --brand: #0b6e4f; --brand-hover: #085a40; --on-brand: #ffffff; --brand-soft: #e1f0e8; --brand-ink: #0a6448; --focus-ring: #0b6e4f;
  --nav-bg: #14201c; --nav-ink: #b9c5c0; --nav-ink-muted: #82918b; --nav-hover: #1d2b26; --nav-active: #22362f; --nav-ink-active: #ffffff; --nav-indicator: #3dbb88; --nav-border: #24312c;
  --success: #13703f; --success-bg: #e3f3e9; --success-border: #9fd2b2;
  --warning: #8a4b00; --warning-bg: #fdf0d9; --warning-border: #ecc27a;
  --danger: #b3261e; --danger-bg: #fceceb; --danger-border: #f0b0ab; --danger-solid: #b3261e;
  --info: #1c5bb8; --info-bg: #e7effb; --info-border: #a9c4ee;
  --neutral: #46504c; --neutral-bg: #eef0ef; --neutral-border: #cfd4d2;
  --overlay: #0b1210a6;
  --shadow-popover: 0 4px 12px rgba(16,24,20,.12), 0 0 0 1px rgba(16,24,20,.06);
  --shadow-modal: 0 16px 40px rgba(16,24,20,.18);
  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-5: 20px; --space-6: 24px; --space-8: 32px;
  --radius-sm: 3px; --radius-md: 5px; --radius-lg: 8px; --radius-full: 9999px;
  --control-sm: 28px; --control-md: 34px; --control-lg: 44px;
  --font-sans: "IBM Plex Sans", "Segoe UI", system-ui, sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, "Cascadia Mono", monospace;
}
*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; font-family: var(--font-sans); font-size: 15px; line-height: 1.55; color: var(--ink); background: var(--bg-app); -webkit-font-smoothing: antialiased; }
img { max-width: 100%; display: block; }
a { color: var(--brand-ink); }
:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }
.mono { font-family: var(--font-mono); }
.num { font-variant-numeric: tabular-nums; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Botões */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; height: var(--control-md); padding: 0 14px; border-radius: var(--radius-md); border: 1px solid transparent; font: 500 14px/20px var(--font-sans); text-decoration: none; cursor: pointer; white-space: nowrap; transition: background-color .12s, border-color .12s, color .12s; }
.btn svg { width: 16px; height: 16px; flex-shrink: 0; }
.btn-lg { height: var(--control-lg); padding: 0 20px; font-size: 15px; }
.btn-sm { height: var(--control-sm); padding: 0 10px; font-size: 13px; gap: 6px; }
.btn-sm svg { width: 14px; height: 14px; }
.btn-primary { background: var(--brand); color: var(--on-brand); }
.btn-primary:hover { background: var(--brand-hover); }
.btn-secondary { background: var(--bg-surface); color: var(--ink); border-color: var(--border-control); }
.btn-secondary:hover { background: var(--bg-hover); }
.btn-ghost { background: transparent; color: var(--ink-secondary); }
.btn-ghost:hover { background: var(--bg-hover); color: var(--ink); }
.btn-danger { background: var(--danger-solid); color: #fff; }
.btn:disabled { cursor: not-allowed; background: var(--bg-subtle); color: var(--ink-disabled); border-color: var(--border); }
.btn-block { width: 100%; }

/* Campos */
.field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.field label { font: 500 12px/16px var(--font-sans); color: var(--ink-secondary); }
.field .req { color: var(--danger); }
.field .hint { font-size: 12px; line-height: 16px; color: var(--ink-muted); margin: 0; }
.input, .select, .textarea { width: 100%; height: var(--control-md); padding: 0 12px; background: var(--bg-surface); border: 1px solid var(--border-control); border-radius: var(--radius-md); font: 400 14px/20px var(--font-sans); color: var(--ink); }
.textarea { height: auto; min-height: 84px; padding: 8px 12px; resize: vertical; }
.select { appearance: none; -webkit-appearance: none; padding-right: 32px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%235f6965' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 10px center; }
.input::placeholder, .textarea::placeholder { color: var(--ink-muted); }
.input:hover, .select:hover, .textarea:hover { border-color: var(--ink-muted); }
.input:focus, .select:focus, .textarea:focus { outline: 1px solid var(--focus-ring); border-color: var(--focus-ring); }
.input[aria-invalid="true"] { border-color: var(--danger); }
.input[readonly] { background: var(--bg-subtle); border-color: var(--border); }

/* Badges */
.badge { display: inline-flex; align-items: center; gap: 4px; height: 20px; padding: 0 6px; border-radius: var(--radius-sm); border: 1px solid; font: 500 12px/16px var(--font-sans); white-space: nowrap; }
.badge::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.badge.no-dot::before { display: none; }
.b-success { color: var(--success); background: var(--success-bg); border-color: var(--success-border); }
.b-warning { color: var(--warning); background: var(--warning-bg); border-color: var(--warning-border); }
.b-danger  { color: var(--danger);  background: var(--danger-bg);  border-color: var(--danger-border); }
.b-info    { color: var(--info);    background: var(--info-bg);    border-color: var(--info-border); }
.b-neutral { color: var(--neutral); background: var(--neutral-bg); border-color: var(--neutral-border); }

/* Alertas */
.alert { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px; border: 1px solid; border-radius: var(--radius-md); font-size: 13px; line-height: 18px; }
.alert svg { width: 16px; height: 16px; flex-shrink: 0; margin-top: 1px; }
.alert-danger  { background: var(--danger-bg);  border-color: var(--danger-border); }  .alert-danger svg { color: var(--danger); }
.alert-success { background: var(--success-bg); border-color: var(--success-border); } .alert-success svg { color: var(--success); }
.alert-info    { background: var(--info-bg);    border-color: var(--info-border); }    .alert-info svg { color: var(--info); }
.alert-warning { background: var(--warning-bg); border-color: var(--warning-border); } .alert-warning svg { color: var(--warning); }
