/* AyInnovate · Grundordnung */

*, *::before, *::after { box-sizing: border-box; }

* { margin: 0; padding: 0; }

html {
  background: var(--papier);
  /* Der Scroll bleibt nativ — aber er rastet je Abschnitt ein.
     Leere Strecken werden übersprungen, ohne den Nutzer zu entführen. */
  scroll-snap-type: y mandatory;
  scroll-behavior: smooth; /* nur Ankersprünge gleiten */
}

/* Ist ein Abschnitt höher als der Bildschirm (sehr kleine oder sehr flache
   Fenster), macht Pflicht-Einrasten Inhalt unerreichbar und springt nach dem
   Halt selbständig zurück. js/motor.js misst das und setzt diese Klasse. */
html.snap-frei { scroll-snap-type: none; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}

body {
  background: var(--papier);
  color: var(--tiefschwarz);
  font-family: var(--schrift);
  font-weight: 400;
  font-size: var(--lauftext);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

h1, h2 {
  font-weight: 500;
  letter-spacing: -0.025em;
  line-height: 1.04;
  text-wrap: balance;
}

h1 { font-size: var(--gross); max-width: 17ch; }
h2 { font-size: var(--mittel); max-width: 16ch; }
h2.gross { font-size: var(--gross); max-width: 15ch; }

p { max-width: 34rem; }

a {
  color: currentColor;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.2em;
}
a:hover { text-decoration-thickness: 2px; }

ul, ol { list-style: none; }

.mono {
  font-family: var(--mono);
  font-weight: 400;
  letter-spacing: 0;
}

.grau { color: var(--grau); }

::selection { background: var(--tiefschwarz); color: var(--papier); }

:focus-visible {
  outline: 2px solid var(--tiefschwarz);
  outline-offset: 3px;
}
.abschnitt--inversion :focus-visible { outline-color: var(--papier); }

.springen {
  position: fixed;
  top: -100px;
  left: var(--rand);
  z-index: 60;
  background: var(--tiefschwarz);
  color: var(--papier);
  padding: 0.6em 1em;
  font-family: var(--mono);
  font-size: var(--klein);
  text-decoration: none;
}
.springen:focus-visible { top: 0; }
