/* Grundlagen: Reset, Typografie, Hintergrund, Sicherheitsabstände. Werte ausschließlich aus tokens.css. */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  /* Textgröße (Einstellungen): 100 % · 112,5 % · 125 % */
  font-size: calc(16px * var(--text-scale, 1));
  -webkit-text-size-adjust: 100%;
  -webkit-tap-highlight-color: transparent;
}

body {
  margin: 0;
  min-height: 100dvh;
  font-family: var(--font-body);
  font-size: var(--type-body-size);
  line-height: var(--type-body-line);
  color: var(--c-text);
  background: linear-gradient(180deg, var(--c-bg-top) 0%, var(--c-bg) 100%) fixed;
  overflow-x: hidden;
  overscroll-behavior-y: none;
}

h1,
h2,
h3,
h4 {
  margin: 0;
  font-family: var(--font-display);
  color: var(--c-ink);
}

p {
  margin: 0;
}

a {
  color: inherit;
  text-decoration: none;
}

button {
  font: inherit;
  color: inherit;
}

img,
svg {
  display: block;
}

:focus-visible {
  outline: 3px solid var(--c-primary);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

.t-display {
  font-family: var(--type-display-family);
  font-size: var(--type-display-size);
  line-height: var(--type-display-line);
  font-weight: var(--type-display-weight);
  letter-spacing: var(--type-display-tracking);
}
.t-title {
  font-family: var(--type-title-family);
  font-size: var(--type-title-size);
  line-height: var(--type-title-line);
  font-weight: var(--type-title-weight);
  letter-spacing: var(--type-title-tracking);
}
.t-heading {
  font-family: var(--type-heading-family);
  font-size: var(--type-heading-size);
  line-height: var(--type-heading-line);
  font-weight: var(--type-heading-weight);
  letter-spacing: var(--type-heading-tracking);
}
.t-subhead {
  font-family: var(--type-subhead-family);
  font-size: var(--type-subhead-size);
  line-height: var(--type-subhead-line);
  font-weight: var(--type-subhead-weight);
}
.t-small {
  font-size: var(--type-small-size);
  line-height: var(--type-small-line);
  font-weight: var(--type-small-weight);
}
.t-caption {
  font-size: var(--type-caption-size);
  line-height: var(--type-caption-line);
  font-weight: var(--type-caption-weight);
}
.t-tag {
  font-family: var(--type-tag-family);
  font-size: var(--type-tag-size);
  line-height: var(--type-tag-line);
  font-weight: var(--type-tag-weight);
  letter-spacing: var(--type-tag-tracking);
  text-transform: uppercase;
  color: var(--c-accent-text);
}
.t-muted {
  color: var(--c-muted);
}
.t-gradient {
  background: var(--gradient-brand-text);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

[hidden] {
  display: none !important;
}

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

/* Bewegung: Systemeinstellung oder Einstellung „Animationen reduzieren“ */
@media (prefers-reduced-motion: reduce) {
  :root:not([data-motion="full"]) * {
    animation-duration: 1ms !important;
    transition-duration: 1ms !important;
  }
}
:root[data-motion="reduced"] * {
  animation-duration: 1ms !important;
  transition-duration: 1ms !important;
}
