*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; background: var(--erp-background-canvas); color: var(--erp-text-primary); font: var(--erp-font-body); }
body { min-width: 320px; }
body::before {
  position: fixed;
  z-index: -1;
  inset: 0;
  content: "";
  pointer-events: none;
  background:
    radial-gradient(circle at 12% 8%, var(--erp-ambient-primary), transparent 30%),
    radial-gradient(circle at 88% 92%, var(--erp-ambient-secondary), transparent 28%);
}
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: var(--erp-text-link); text-decoration: none; }
:focus-visible { outline: 2px solid var(--erp-border-focus); outline-offset: 2px; box-shadow: var(--erp-shadow-focus); }
input:focus,
input:focus-visible,
textarea:focus,
textarea:focus-visible,
select:focus,
select:focus-visible {
  outline: 0;
  box-shadow: none;
}
::selection { background: var(--erp-color-primary-subtle); }
* {
  scrollbar-width: thin;
  scrollbar-color:
    color-mix(in srgb, var(--erp-text-tertiary) 62%, transparent)
    color-mix(in srgb, var(--erp-surface-secondary) 38%, transparent);
}
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-track {
  border-radius: var(--erp-radius-sm);
  background: color-mix(in srgb, var(--erp-surface-secondary) 38%, transparent);
}
*::-webkit-scrollbar-thumb {
  min-height: 42px;
  border: 3px solid transparent;
  border-radius: var(--erp-radius-sm);
  background: color-mix(in srgb, var(--erp-text-tertiary) 62%, transparent);
  background-clip: padding-box;
  transition: background-color var(--erp-motion-fast) var(--erp-ease-standard);
}
*::-webkit-scrollbar-thumb:hover {
  border-width: 2px;
  background: color-mix(in srgb, var(--erp-color-primary) 82%, transparent);
  background-clip: padding-box;
}
*::-webkit-scrollbar-thumb:active {
  border-width: 2px;
  background: var(--erp-color-primary);
  background-clip: padding-box;
}
*::-webkit-scrollbar-corner { background: transparent; }
.erp-sidebar__nav,
.erp-workspace-panel,
.erp-dialog__body,
.erp-select-options,
.erp-grid-column-manager__panel {
  scrollbar-gutter: stable;
}
.erp-grid-scroll { scrollbar-gutter: auto; }
.erp-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.erp-numeric { direction: ltr; unicode-bidi: isolate; font-variant-numeric: tabular-nums; }

.erp-glass-subtle,
.erp-glass-standard,
.erp-glass-elevated {
  border: 1px solid var(--erp-border-glass);
  isolation: isolate;
}
.erp-glass-subtle {
  background: var(--erp-glass-toolbar);
  box-shadow: var(--erp-shadow-xs);
  -webkit-backdrop-filter: blur(var(--erp-blur-subtle)) saturate(112%);
  backdrop-filter: blur(var(--erp-blur-subtle)) saturate(112%);
}
.erp-glass-standard {
  background: var(--erp-glass-panel);
  box-shadow: var(--erp-shadow-glass);
  -webkit-backdrop-filter: blur(var(--erp-blur-default)) saturate(116%);
  backdrop-filter: blur(var(--erp-blur-default)) saturate(116%);
}
.erp-glass-elevated {
  background: var(--erp-glass-dialog);
  box-shadow: var(--erp-shadow-dialog);
  -webkit-backdrop-filter: blur(var(--erp-blur-strong)) saturate(120%);
  backdrop-filter: blur(var(--erp-blur-strong)) saturate(120%);
}

@supports not ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  .erp-glass-subtle { background: var(--erp-solid-secondary); }
  .erp-glass-standard { background: var(--erp-solid-primary); }
  .erp-glass-elevated { background: var(--erp-background-elevated); }
}

@media (prefers-reduced-transparency: reduce) {
  .erp-glass-subtle,
  .erp-glass-standard,
  .erp-glass-elevated {
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }
  .erp-glass-subtle { background: var(--erp-solid-secondary); }
  .erp-glass-standard { background: var(--erp-solid-primary); }
  .erp-glass-elevated { background: var(--erp-background-elevated); }
  body::before { display: none; }
}
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto; transition-duration: .01ms; animation-duration: .01ms; animation-iteration-count: 1; } }
