*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0; font-family: 'Inter', sans-serif;
  color: var(--text-primary);
  background: var(--bg-body);
  -webkit-font-smoothing: antialiased; overflow-x: hidden;
  transition: background 0.3s, color 0.3s;
}
h1,h2,h3,h4,.font-display { font-family: 'Plus Jakarta Sans', sans-serif; }
.mono { font-family: 'IBM Plex Mono', monospace; }
img { max-width: 100%; display: block; }
button { font-family: inherit; cursor: pointer; }
input, select, textarea { font-family: inherit; font-size: 14.5px; }
::selection { background: var(--violet); color: #fff; }
a { color: inherit; }
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible,
select:focus-visible, [tabindex]:focus-visible {
  outline: 2px solid var(--violet); outline-offset: 2px; border-radius: 4px;
}
@media (prefers-reduced-motion: reduce) {
  * { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
}
.hidden { display: none !important; }