/* Reset, Grundlayout, Typografie */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body {
  margin: 0;
  min-height: 100dvh;
  font-family: var(--f-body);
  font-size: var(--t-md);
  line-height: 1.45;
  color: var(--text);
  background-color: var(--bg);
  background-image: radial-gradient(var(--bg-dots) 1.6px, transparent 1.8px);
  background-size: 22px 22px;
  -webkit-tap-highlight-color: transparent;
  overflow-x: hidden;
}
img, svg { display: block; max-width: 100%; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
h1, h2, h3 { margin: 0; line-height: 1.1; scroll-margin-top: 88px; }
p { margin: 0; }
a { color: inherit; }

:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 3px;
}

.display { font-family: var(--f-display); font-weight: 400; letter-spacing: 0.01em; }
.muted { color: var(--text-muted); }
.small { font-size: var(--t-sm); }
.xs { font-size: var(--t-xs); }
.center { text-align: center; }
.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;
}

/* Seitengerüst */
.app { min-height: 100dvh; display: flex; flex-direction: column; }
.page {
  width: 100%;
  max-width: var(--maxw);
  margin: 0 auto;
  padding: var(--s-4) var(--gutter) calc(var(--s-8) + env(safe-area-inset-bottom));
  display: flex;
  flex-direction: column;
  gap: var(--s-6);
}
.stack { display: flex; flex-direction: column; gap: var(--s-3); }
.stack-lg { display: flex; flex-direction: column; gap: var(--s-5); }
.row { display: flex; align-items: center; gap: var(--s-3); }
.row-wrap { display: flex; flex-wrap: wrap; gap: var(--s-2); }
.spread { display: flex; align-items: center; justify-content: space-between; gap: var(--s-3); }
.grow { flex: 1; min-width: 0; }

.section-title {
  font-family: var(--f-display);
  font-size: var(--t-lg);
  display: flex;
  align-items: baseline;
  gap: var(--s-2);
}
.section-title .count { font-family: var(--f-body); font-weight: 700; font-size: var(--t-sm); color: var(--text-muted); }
