*, *::before, *::after { box-sizing: border-box; }
html { color-scheme: light; scroll-behavior: smooth; }
body { margin: 0; background: var(--color-bg); color: var(--color-text); font-family: var(--font-ui); font-size: var(--font-size-body); line-height: var(--line-body); -webkit-font-smoothing: antialiased; }
body.nav-open { overflow: hidden; }
img { max-width: 100%; display: block; }
a { color: var(--color-accent); text-underline-offset: 3px; }
a:hover { color: var(--color-accent-hover); }
button, input, select, textarea { font: inherit; }
button, select { cursor: pointer; }
h1, h2, h3, p { margin-top: 0; }
h1 { margin-bottom: var(--space-2); font-size: var(--font-size-title); line-height: 1.12; letter-spacing: -.035em; }
h2 { font-size: var(--font-size-section); line-height: 1.25; letter-spacing: -.015em; }
h3 { font-size: 1rem; line-height: 1.35; }
p { margin-bottom: var(--space-4); }
hr { border: 0; border-top: 1px solid var(--color-border); margin: var(--space-6) 0; }
:focus-visible { outline: 3px solid rgba(49, 95, 196, .32); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; }
}
.skip-link { position: fixed; top: var(--space-2); left: var(--space-2); z-index: 200; transform: translateY(-150%); padding: var(--space-2) var(--space-3); background: var(--color-surface); color: var(--color-text); border-radius: var(--radius-md); }
.skip-link:focus { transform: none; }
.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; }
.muted { color: var(--color-text-muted); }
.meta { color: var(--color-text-muted); font-size: var(--font-size-meta); }
.text-danger { color: var(--color-danger); }

label, legend { color: var(--color-text-secondary); font-size: .8125rem; font-weight: 650; }
fieldset { margin: 0; padding: 0; border: 0; min-width: 0; }
input:not([type="checkbox"]):not([type="radio"]), select, textarea {
    width: 100%; min-height: var(--control-height); padding: var(--space-2) var(--space-3); border: 1px solid var(--color-border-strong); border-radius: var(--radius-md); background: var(--color-surface); color: var(--color-text); transition: border-color var(--transition), box-shadow var(--transition);
}
textarea { min-height: 104px; resize: vertical; }
input:focus, select:focus, textarea:focus { border-color: var(--color-accent); box-shadow: 0 0 0 3px rgba(49,95,196,.11); outline: none; }
input:disabled { background: var(--color-surface-muted); color: var(--color-text-muted); }
input[type="file"] { padding-block: 7px; }
.field-help, .form-group small { display: block; margin-top: var(--space-1); color: var(--color-text-muted); font-size: var(--font-size-meta); }
.required { color: var(--color-danger); }
