* { box-sizing: border-box; }
html { min-width: 320px; background: var(--bg); scroll-behavior: smooth; }
body {
  margin: 0;
  min-height: 100vh;
  font-family: var(--font-sans);
  color: var(--text);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
button, input, select, textarea { font: inherit; }
button { color: inherit; }
a { color: inherit; text-decoration: none; }
img, svg { display: block; max-width: 100%; }
button, [role="button"], a { -webkit-tap-highlight-color: transparent; }
::selection { background: #dfe2ff; color: #20236d; }
:focus-visible { outline: 3px solid rgba(91,92,226,.28); outline-offset: 2px; }
.skip-link {
  position: fixed; z-index: 9999; left: 12px; top: -48px;
  padding: 10px 14px; border-radius: 9px; color: white; background: var(--primary);
  transition: top var(--ease);
}
.skip-link:focus { top: 12px; }
.sr-only {
  position: absolute !important; width: 1px !important; height: 1px !important;
  padding: 0 !important; margin: -1px !important; overflow: hidden !important;
  clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important;
}
.muted { color: var(--muted); }
.text-soft { color: var(--text-soft); }
.text-danger { color: var(--red); }
.text-success { color: var(--green); }
.text-warning { color: var(--orange); }
.text-primary { color: var(--primary); }
.hidden { display: none !important; }
.truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
[hidden] { display: none !important; }
