*, *::before, *::after { box-sizing: border-box; }
html { font-family: var(--font-ui); color: var(--color-text); background: var(--color-canvas); }
body { margin: 0; font-size: 1rem; line-height: 1.5; }
button, input, select, textarea { font: inherit; }
a { color: var(--color-accent); }

.skip-link {
  position: fixed;
  inset: .75rem auto auto .75rem;
  z-index: 9999;
  padding: .75rem 1rem;
  color: var(--color-text);
  background: var(--color-surface);
  border: 1px solid var(--color-control-border);
  border-radius: var(--radius-control);
  transform: translateY(-200%);
}
.skip-link:focus { transform: translateY(0); }

:where(a, button, input, select, textarea, summary):focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 4px;
  box-shadow: 0 0 0 2px var(--color-surface);
}

.action-primary,
.primary-action,
.action-secondary,
.secondary-action,
.action-text,
.text-action {
  min-height: 2.75rem;
  border-radius: var(--radius-control);
  font-weight: 600;
  font-size: 1rem;
  line-height: 1.25;
  cursor: pointer;
  transition: background var(--motion-control), border-color var(--motion-control), color var(--motion-control);
}
.action-primary, .primary-action {
  display: inline-flex;
  min-height: 3rem;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  padding: .75rem 1rem;
  color: white;
  background: var(--color-accent);
  border: 1px solid var(--color-accent);
  box-shadow: none;
}
.action-primary:hover, .primary-action:hover { background: var(--color-accent-hover); border-color: var(--color-accent-hover); }
.action-secondary, .secondary-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  padding: .65rem 1rem;
  color: var(--color-text);
  background: var(--color-surface);
  border: 1px solid var(--color-control-border);
  box-shadow: none;
}
.action-secondary:hover, .secondary-action:hover { border-color: var(--color-accent); color: var(--color-accent); }
.action-text, .text-action {
  display: inline-flex;
  align-items: center;
  padding: .55rem .25rem;
  color: var(--color-accent);
  background: transparent;
  border: 0;
  text-decoration: underline;
  text-underline-offset: .18em;
}
:where(.action-primary,.primary-action,.action-secondary,.secondary-action,.action-text,.text-action):disabled {
  cursor: not-allowed;
  opacity: .56;
}

.field-label { display: block; margin-bottom: .5rem; font-weight: 600; }
.field-control, input[type="text"], input[type="search"], input[type="number"], input[type="url"], input[type="date"], select, textarea {
  min-height: 3rem;
  color: var(--color-text);
  background: var(--color-surface);
  border: 1px solid var(--color-control-border);
  border-radius: var(--radius-control);
}
.field-help { margin-top: .5rem; color: var(--color-text-secondary); font-size: .875rem; line-height: 1.4; }
.field-error { margin-top: .5rem; color: var(--color-danger); font-size: .875rem; }

.surface { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-surface); }
.evidence-row { display: grid; gap: .25rem; padding: 1rem 0; border-top: 1px solid var(--color-border); }
.evidence-row:first-child { border-top: 0; }
.evidence-label { color: var(--color-text-secondary); font-size: .875rem; }
.evidence-value { font-size: 1.125rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.evidence-meta { color: var(--color-text-secondary); font-size: .875rem; }

.topic-disclosure { border-top: 1px solid var(--color-border); }
.topic-disclosure > summary {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  align-items: center;
  min-height: 4.5rem;
  padding: 1rem 0;
  cursor: pointer;
  list-style: none;
}
.topic-disclosure > summary::-webkit-details-marker { display: none; }
.topic-disclosure > summary::after { content: "›"; font-size: 1.5rem; color: var(--color-text-secondary); transform: rotate(0); transition: transform var(--motion-disclosure); }
.topic-disclosure[open] > summary::after { transform: rotate(90deg); }
.topic-title { display: block; font-weight: 600; }
.topic-summary { display: block; margin-top: .2rem; color: var(--color-text-secondary); font-size: .875rem; font-weight: 400; }
.topic-body { padding: 0 0 1.5rem; }

.status-positive { color: var(--color-positive); }
.status-caution { color: var(--color-caution); }
.status-danger { color: var(--color-danger); }
.numeric { font-variant-numeric: tabular-nums; }

@media (max-width: 47.99rem) {
  .desktop-only { display: none !important; }
}
@media (min-width: 48rem) {
  .mobile-only { display: none !important; }
}
@media (forced-colors: active) {
  .action-primary, .primary-action { border: 2px solid ButtonText; }
}
