/* KASKADE 1.3/1.4: Reset, Typografie, Flächen. */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--header-h) + 16px); }
body {
  margin: 0;
  font-family: var(--font-text);
  font-size: var(--fs-body);
  line-height: 1.55;
  color: var(--text-dunkel);
  background: var(--papier);
  font-feature-settings: "ss01", "cv11";
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img, video, svg { display: block; max-width: 100%; }
[hidden] { display: none !important; }
img { height: auto; }
button, input, textarea, select { font: inherit; color: inherit; }
button { cursor: pointer; }
a { color: inherit; }
p { margin: 0 0 1em; }
p:last-child { margin-bottom: 0; }
ul, ol { margin: 0; padding: 0; list-style: none; }
h1, h2, h3, h4 { margin: 0; font-family: var(--font-display); font-weight: var(--display-weight); text-wrap: balance; hyphens: manual; }

.h-display { font-size: var(--fs-display); line-height: 1.0; letter-spacing: -0.025em; }
.h2 { font-size: var(--fs-h2); line-height: 1.05; letter-spacing: -0.02em; }
.h3 { font-size: var(--fs-h3); line-height: 1.15; letter-spacing: -0.01em; }
.lead { font-size: var(--fs-lead); line-height: 1.45; }
.small { font-size: var(--fs-small); line-height: 1.45; }
.label {
  font-family: var(--font-mono);
  font-size: var(--fs-label);
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.num { font-variant-numeric: tabular-nums; }
.prose { max-width: 68ch; hyphens: auto; }
.prose p { text-wrap: pretty; }

/* Flächen: Rhythmus dunkel/hell (KASKADE 3.0) */
.flaeche-dunkel { background: var(--graphit); color: var(--text-hell); --line: var(--linie-dunkel); --block: var(--graphit-2); --akzent-text: var(--akzent); --muted-text: var(--muted); }
.flaeche-hell   { background: var(--papier);  color: var(--text-dunkel); --line: var(--linie-hell); --block: var(--papier-2); --akzent-text: var(--akzent-strong); --muted-text: var(--muted-dunkel); }
.flaeche-weiss  { background: #fff; color: var(--text-dunkel); --line: var(--linie-hell); --block: var(--papier); --akzent-text: var(--akzent-strong); --muted-text: var(--muted-dunkel); }

.muted { color: var(--muted-text, var(--muted-dunkel)); }
.akzent { color: var(--akzent-text); }

:focus-visible { outline: 2px solid var(--akzent); outline-offset: 2px; }
.flaeche-hell :focus-visible, .flaeche-weiss :focus-visible { outline-color: var(--akzent-strong); }

.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;
}
.skip-link { position: absolute; left: var(--rand); top: -100px; z-index: 100; background: var(--akzent-fill); color: var(--akzent-on); padding: 12px 16px; border-radius: var(--r-2); }
.skip-link:focus { top: 8px; }

/* Motion: nur Opacity + 8px Versatz */
.reveal { opacity: 0; transform: translateY(8px); transition: opacity 250ms var(--ease), transform 250ms var(--ease); }
.reveal.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: 0ms !important; animation-duration: 0ms !important; }
  .reveal { opacity: 1; transform: none; }
}
