/* ═══════════════════════════════════════════════════════════════
   QUIZSAAL – Design-Token-System & Komponenten-Bibliothek
   Version 1.0 · Reines CSS · Keine Präprozessoren
   ═══════════════════════════════════════════════════════════════ */


/* ═══ DESIGN TOKENS ═══ */

:root {

  /* ── Farb-Palette ── */

  /* Primär – Violett */
  --clr-primary-900:  #3A0F6E;
  --clr-primary-700:  #5E1FA8;
  --clr-primary-500:  #7B3FE4;
  --clr-primary-400:  #9461F2;
  --clr-primary-300:  #B08AF7;
  --clr-primary-200:  #D0B8FC;
  --clr-primary-hover:#6A2BD0;  /* Hover für Primary-Button */

  /* Akzent – Gold */
  --clr-gold:         #e0b24c;
  --clr-gold-dim:     rgba(224, 178, 76, .6);

  /* Semantisch */
  --clr-success:      #22c55e;
  --clr-success-dim:  rgba(34, 197, 94, .15);
  --clr-error:        #f87171;
  --clr-error-dim:    rgba(248, 113, 113, .15);
  --clr-warning:      #facc15;

  /* Text */
  --clr-text:         #efe9ff;
  --clr-text-dim:     rgba(239, 233, 255, .6);
  --clr-text-muted:   rgba(239, 233, 255, .4);

  /* Hintergrund */
  --clr-bg-deep:      #0D0D2B;
  --clr-bg:           #140f1f;
  --clr-bg-raised:    #1c1530;
  --clr-bg-surface:   #241c36;

  /* Glas-Karten */
  --clr-glass-bg:     rgba(255, 255, 255, .05);
  --clr-glass-border: rgba(122, 63, 228, .4);
  --clr-glass-hover:  rgba(255, 255, 255, .08);


  /* ── Abstands-Skala (8pt-Raster) ── */
  --space-1:  8px;    /* Kompakt */
  --space-2:  16px;   /* Standard */
  --space-3:  24px;   /* Mittel */
  --space-4:  32px;   /* Groß */
  --space-5:  40px;   /* Sektion */
  --space-7:  56px;   /* Sektion groß */
  --space-9:  72px;   /* Hero-Abstand */


  /* ── Typografie-Skala ── */
  --font-display:     Georgia, "Times New Roman", serif;
  --font-body:        system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;

  --text-display:     2.5rem;    /* 40px – Hero-Titel */
  --text-heading:     1.75rem;   /* 28px – Sektions-Titel */
  --text-subheading:  1.25rem;   /* 20px – Karten-Titel */
  --text-body:        1rem;      /* 16px – Fließtext */
  --text-small:       0.875rem;  /* 14px – Hilfstext */
  --text-caption:     0.75rem;   /* 12px – Beschriftung */

  --lh-tight:         1.2;
  --lh-normal:        1.5;
  --lh-relaxed:       1.7;

  --fw-normal:        400;
  --fw-medium:        500;
  --fw-semibold:      600;
  --fw-bold:          700;

  --ls-wide:          0.12em;    /* Versalien-Sperrung */


  /* ── Radien ── */
  --radius-sm:   12px;
  --radius-md:   16px;
  --radius-lg:   18px;
  --radius-pill:  999px;


  /* ── Schatten (violett-getönt) ── */
  --shadow-sm:
    0 1px  3px rgba(94, 31, 168, .12),
    0 1px  2px rgba(94, 31, 168, .08);
  --shadow-md:
    0 4px  6px rgba(94, 31, 168, .15),
    0 2px  4px rgba(94, 31, 168, .1);
  --shadow-lg:
    0 10px 25px rgba(94, 31, 168, .25),
    0  4px 10px rgba(94, 31, 168, .15);
  --shadow-glow:
    0  0  20px rgba(123, 63, 228, .35);


  /* ── Übergänge ── */
  --ease-out:       cubic-bezier(.16, 1, .3, 1);
  --transition-fast: 150ms var(--ease-out);
  --transition-base: 200ms var(--ease-out);
  --transition-slow: 300ms var(--ease-out);


  /* ── Z-Index-Ebenen ── */
  --z-dropdown:  100;
  --z-sticky:    200;
  --z-modal:     300;
  --z-toast:     400;
}


/* ═══ RESET & BASISSTILE ═══ */

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

html {
  -webkit-text-size-adjust: 100%;
  -moz-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-behavior: smooth;
}

body {
  font-family: var(--font-body);
  font-size: var(--text-body);
  line-height: var(--lh-normal);
  color: var(--clr-text);
  background-color: var(--clr-bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

img, svg, video {
  display: block;
  max-width: 100%;
}

a {
  color: var(--clr-primary-300);
  text-decoration: none;
  transition: color var(--transition-fast);
}

a:hover {
  color: var(--clr-primary-200);
}

/* Überschriften – Georgia als Display-Schrift */
h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-display);
  line-height: var(--lh-tight);
  color: var(--clr-text);
}


/* ═══ TYPOGRAFIE-KLASSEN ═══ */

.text-display {
  font-family: var(--font-display);
  font-size: var(--text-display);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
}

.text-heading {
  font-family: var(--font-display);
  font-size: var(--text-heading);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
}

.text-subheading {
  font-family: var(--font-display);
  font-size: var(--text-subheading);
  font-weight: var(--fw-semibold);
  line-height: var(--lh-tight);
}

.text-body {
  font-size: var(--text-body);
  line-height: var(--lh-normal);
}

.text-small {
  font-size: var(--text-small);
  line-height: var(--lh-normal);
}

.text-caption {
  font-size: var(--text-caption);
  line-height: var(--lh-normal);
  color: var(--clr-text-dim);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
}

.text-dim  { color: var(--clr-text-dim); }
.text-muted { color: var(--clr-text-muted); }
.text-gold  { color: var(--clr-gold); }


/* ═══ ABSTANDS-HELFER ═══ */

.section-space-sm { padding-block: var(--space-4); }   /* 32px */
.section-space-md { padding-block: var(--space-5); }   /* 40px */
.section-space-lg { padding-block: var(--space-9); }   /* 72px */


/* ═══ KOMPONENTEN ═══ */

/* ── Buttons ── */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-1);
  padding: 14px var(--space-4);
  font-family: var(--font-body);
  font-size: var(--text-body);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  line-height: 1;
  border: 2px solid transparent;
  border-radius: var(--radius-md);
  cursor: pointer;
  transition:
    background-color var(--transition-fast),
    border-color var(--transition-fast),
    box-shadow var(--transition-fast),
    transform var(--transition-fast);
  white-space: nowrap;
  user-select: none;
  -webkit-user-select: none;
  text-decoration: none;
}

.btn:active {
  transform: scale(.97);
}

/* Primär – gefülltes Violett */
.btn--primary {
  color: #fff;
  background: var(--clr-primary-500);
  border-color: var(--clr-primary-500);
}

.btn--primary:hover {
  background: var(--clr-primary-hover);
  border-color: var(--clr-primary-hover);
  box-shadow: var(--shadow-glow);
}

.btn--primary:active {
  background: var(--clr-primary-900);
}

/* Sekundär – Glas-Outline */
.btn--secondary {
  color: var(--clr-text);
  background: var(--clr-glass-bg);
  border-color: var(--clr-glass-border);
}

.btn--secondary:hover {
  background: var(--clr-glass-hover);
  border-color: var(--clr-primary-400);
}

/* Ghost – nur Text */
.btn--ghost {
  color: var(--clr-text-dim);
  background: transparent;
  border-color: transparent;
  padding-inline: var(--space-2);
}

.btn--ghost:hover {
  color: var(--clr-text);
  background: var(--clr-glass-bg);
}

/* Deaktiviert */
.btn:disabled,
.btn[aria-disabled="true"] {
  opacity: .4;
  cursor: not-allowed;
  pointer-events: none;
}

/* Kleine Variante */
.btn--sm {
  padding: 10px var(--space-3);
  font-size: var(--text-small);
}


/* ── Karten ── */

.card {
  background: var(--clr-bg-raised);
  border: 1px solid rgba(255, 255, 255, .06);
  border-radius: var(--radius-lg);
  padding: var(--space-3);
  transition: box-shadow var(--transition-base);
}

.card:hover {
  box-shadow: var(--shadow-md);
}

/* Glas-Karte – wie auf den Screenshots */
.card--glass {
  background: var(--clr-glass-bg);
  border: 1px solid var(--clr-glass-border);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.card--glass:hover {
  background: var(--clr-glass-hover);
  box-shadow: var(--shadow-glow);
}

/* Karte mit Gold-Rahmen (z. B. aktives Element) */
.card--gold {
  border-color: var(--clr-gold);
}


/* ── Inputs ── */

.input {
  display: block;
  width: 100%;
  padding: 12px var(--space-2);
  font-family: var(--font-body);
  font-size: var(--text-body);
  color: var(--clr-text);
  background: var(--clr-glass-bg);
  border: 2px solid rgba(255, 255, 255, .1);
  border-radius: var(--radius-sm);
  outline: none;
  transition:
    border-color var(--transition-fast),
    box-shadow var(--transition-fast);
}

.input::placeholder {
  color: var(--clr-text-muted);
}

.input:focus {
  border-color: var(--clr-primary-500);
  box-shadow: 0 0 0 3px rgba(123, 63, 228, .25);
}

.input:disabled {
  opacity: .4;
  cursor: not-allowed;
}


/* ── Badges ── */

.badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 14px;
  font-size: var(--text-caption);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  color: var(--clr-text);
  background: var(--clr-glass-bg);
  border: 1px solid var(--clr-glass-border);
  border-radius: var(--radius-pill);
  white-space: nowrap;
}

.badge--success {
  color: var(--clr-success);
  background: var(--clr-success-dim);
  border-color: var(--clr-success);
}

.badge--gold {
  color: var(--clr-gold);
  background: rgba(224, 178, 76, .12);
  border-color: var(--clr-gold);
}

.badge--error {
  color: var(--clr-error);
  background: var(--clr-error-dim);
  border-color: var(--clr-error);
}


/* ── Ranglisten-Zeile ── */

.rank-row {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
  background: var(--clr-glass-bg);
  border: 1px solid rgba(255, 255, 255, .06);
  border-radius: var(--radius-sm);
  transition:
    background-color var(--transition-fast),
    border-color var(--transition-fast);
}

.rank-row:hover {
  background: var(--clr-glass-hover);
  border-color: var(--clr-glass-border);
}

/* Position (links) */
.rank-row__pos {
  min-width: 2.5rem;
  font-family: var(--font-display);
  font-size: var(--text-heading);
  font-weight: var(--fw-bold);
  color: var(--clr-gold);
  text-align: center;
}

.rank-row__name {
  flex: 1;
  font-weight: var(--fw-medium);
}

.rank-row__score {
  font-variant-numeric: tabular-nums;
  font-weight: var(--fw-semibold);
  color: var(--clr-text-dim);
}


/* ── Pill-Navigation ── */

.pill-nav {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1);
  padding: 6px;
  background: var(--clr-bg-raised);
  border-radius: var(--radius-pill);
  border: 1px solid rgba(255, 255, 255, .06);
}

.pill-nav__item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 10px 20px;
  font-size: var(--text-small);
  font-weight: var(--fw-medium);
  color: var(--clr-text-dim);
  background: transparent;
  border: none;
  border-radius: var(--radius-pill);
  cursor: pointer;
  transition:
    color var(--transition-fast),
    background-color var(--transition-fast);
  white-space: nowrap;
  text-decoration: none;
  font-family: var(--font-body);
}

.pill-nav__item:hover {
  color: var(--clr-text);
  background: var(--clr-glass-bg);
}

/* Aktiver Zustand */
.pill-nav__item--active,
.pill-nav__item[aria-current="page"] {
  color: #fff;
  background: var(--clr-primary-500);
  font-weight: var(--fw-semibold);
}

.pill-nav__item--active:hover,
.pill-nav__item[aria-current="page"]:hover {
  background: var(--clr-primary-hover);
}


/* ── Fortschrittsbalken ── */

.progress-bar {
  width: 100%;
  height: 6px;
  background: rgba(255, 255, 255, .08);
  border-radius: var(--radius-pill);
  overflow: hidden;
}

.progress-bar__fill {
  height: 100%;
  background: linear-gradient(90deg, var(--clr-primary-500), var(--clr-primary-300));
  border-radius: var(--radius-pill);
  transition: width var(--transition-slow);
}


/* ── Trennlinie ── */

.divider {
  border: none;
  border-top: 1px solid rgba(255, 255, 255, .08);
  margin-block: var(--space-3);
}


/* ═══ BARRIEREFREIHEIT ═══ */

/* Fokus-Ring für Tastatur-Navigation */
:focus-visible {
  outline: 2px solid var(--clr-primary-400);
  outline-offset: 2px;
}

/* Visuell versteckt, aber für Screenreader zugänglich */
.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;
}


/* ═══ REDUZIERTE BEWEGUNG ═══ */

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}


/* ═══ RESPONSIVE TYPOGRAFIE ═══ */

@media (max-width: 768px) {
  :root {
    --text-display:    1.75rem;
    --text-heading:    1.375rem;
    --text-subheading: 1.125rem;
  }
}

@media (max-width: 480px) {
  :root {
    --text-display:    1.5rem;
    --text-heading:    1.25rem;
    --text-subheading: 1rem;
  }
}
