/* CPRI Module 015 — base element styles + reset. */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body.cpri-app, body.cpri-public, body.cpri-auth {
  margin: 0; font-family: var(--font-sans); font-size: var(--fs-base);
  line-height: var(--lh-normal); color: var(--text-primary);
  background: var(--background-page); -webkit-font-smoothing: antialiased;
}
h1,h2,h3,h4,h5,h6 { margin: 0 0 var(--sp-3); line-height: var(--lh-tight); color: var(--text-primary); font-weight: var(--fw-semibold); }
h1 { font-size: var(--fs-2xl); } h2 { font-size: var(--fs-xl); } h3 { font-size: var(--fs-lg); }
h4 { font-size: var(--fs-md); } h5,h6 { font-size: var(--fs-base); }
p { margin: 0 0 var(--sp-4); }
a { color: var(--accent-hover); text-decoration: none; }
a:hover { text-decoration: underline; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible,
textarea:focus-visible, [tabindex]:focus-visible, summary:focus-visible {
  outline: 2px solid var(--focus-ring); outline-offset: 2px; border-radius: var(--radius-sm);
}
small { font-size: var(--fs-sm); }
code, pre, kbd { font-family: var(--font-mono); font-size: 0.875em; }
hr { border: 0; border-top: 1px solid var(--border); margin: var(--sp-6) 0; }
img, svg { max-width: 100%; }
.cpri-visually-hidden {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}
.cpri-skip-link {
  position: absolute; left: var(--sp-3); top: -60px; z-index: var(--z-toast);
  background: var(--brand-primary); color: var(--text-on-brand);
  padding: var(--sp-2) var(--sp-4); border-radius: var(--radius-md);
  transition: top var(--transition);
}
.cpri-skip-link:focus { top: var(--sp-3); text-decoration: none; }
.text-secondary-muted { color: var(--text-muted); }
.cpri-muted { color: var(--text-muted); }
.cpri-mono { font-family: var(--font-mono); }
