/* BASE — element defaults. Values come from tokens.css only. */
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0; background: var(--color-bg); color: var(--color-text);
  font: var(--weight-regular) var(--text-body) / var(--leading-body) var(--font-sans);
  letter-spacing: var(--tracking-body); -webkit-font-smoothing: antialiased;
}
h1, h2, h3 { margin: 0; letter-spacing: var(--tracking-heading); font-weight: var(--weight-semibold); }
h1 { font-size: var(--text-h1); line-height: var(--leading-tight); }
h2 { font-size: var(--text-h2); }
h3 { font-size: var(--text-lg); }
p { margin: 0; }
a { color: var(--color-primary); text-decoration: none; }
a:hover { text-decoration: underline; }
label { display: block; font-size: var(--text-sm); font-weight: var(--weight-medium); color: var(--color-text-muted); margin-bottom: var(--space-xs); }

input[type=text], input[type=password], input[type=email], input[type=number], input[type=date], input[type=search], textarea {
  width: 100%; height: var(--control-h); padding: 0 var(--field-padding-x);
  border: var(--border-strong); border-radius: var(--radius-md);
  background: var(--color-surface); color: var(--color-text); font: inherit;
  transition: border-color var(--dur-base), box-shadow var(--dur-base); appearance: none; -webkit-appearance: none;
}
input:focus, textarea:focus { outline: none; border-color: var(--color-primary); box-shadow: var(--focus-ring); }
.switch input:focus-visible + i { box-shadow: var(--focus-ring); }

/* ---- hidden attribute always wins (used to show/hide form sections) ---- */
[hidden] { display: none !important; }

textarea { height: auto; min-height: var(--textarea-min-h); padding: var(--space-md) var(--field-padding-x); resize: vertical; }
input[type=file] { display: none; }
