/* Baustein Beleg-Vorführung.
 * Ohne Skript steht der Endzustand da. beleg.js setzt .spielt, dann läuft ein
 * abgestimmter Ablauf von etwa 2,8 Sekunden: Frage, gefundene Stellen, Antwort,
 * Fundstellennummern, Prüfung. Zwei Beispiele, umgeschaltet über Optionsfelder
 * und :has(), also auch ohne Skript. */

.beleg {
  position: relative;
  overflow: hidden;
  background: var(--c-flaeche-erhoben);
  border: var(--rahmen);
  border-radius: 10px;
  padding: 20px 20px 16px;
}
@media (min-width: 480px) { .beleg { padding: 24px 28px 18px; } }

.beleg-fortschritt {
  position: absolute; inset: 0 0 auto 0;
  height: 2px;
  background: var(--c-akzent);
  transform-origin: left;
  opacity: 0;
}

.beleg-kopf {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 12px;
  padding-bottom: 14px;
  margin-bottom: 16px;
  border-bottom: var(--rahmen);
}
.beleg-titel { font-weight: 600; font-size: var(--t-klein); }

.beleg-wahl {
  display: inline-flex;
  margin: 0; padding: 2px;
  border: var(--rahmen);
  border-radius: var(--r-karte);
  min-inline-size: 0;
}
.beleg-wahl input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.beleg-wahl label {
  padding: 4px 12px;
  min-height: 30px;
  display: inline-flex; align-items: center;
  border-radius: 4px;
  font-size: var(--t-mini); font-weight: 500;
  color: var(--c-text-sekundaer);
  cursor: pointer;
  transition: background-color 160ms var(--aus), color 160ms var(--aus);
}
.beleg-wahl input:checked + label { background: var(--c-akzent-flaeche); color: var(--c-akzent-text); }
.beleg-wahl input:focus-visible + label { outline: 2px solid var(--c-akzent); outline-offset: 1px; }

.beispiel--forschung { display: none; }
.beleg:has(#bsp-forschung:checked) .beispiel--forschung { display: block; }
.beleg:has(#bsp-forschung:checked) .beispiel--betrieb { display: none; }

.beleg-block + .beleg-block { margin-top: 16px; }
.beleg-etikett {
  margin-bottom: 6px;
  font-size: var(--t-mini); font-weight: 500;
  color: var(--c-text-sekundaer);
}
.beleg-frage {
  padding: 9px 18px;
  border: 1px solid color-mix(in srgb, var(--c-linie) 50%, var(--c-text-sekundaer));
  border-radius: var(--r-eingabe);
  font-weight: 500;
  line-height: 1.45;
}

.funde { display: grid; gap: 6px; }
.fund {
  display: grid;
  grid-template-columns: 2.4em minmax(0, 1fr) auto;
  column-gap: 4px;
  padding: 8px 12px 9px 8px;
  border-radius: var(--r-feld);
  outline: 1.5px solid transparent;
  outline-offset: -1.5px;
  transition: outline-color 160ms var(--aus);
}
.fund[data-zitiert] { background: var(--c-markierung); }
.fund-nr {
  grid-column: 1; grid-row: 1 / span 2;
  font-family: var(--f-mono); font-size: var(--t-mini);
  color: var(--c-akzent-text);
  line-height: 1.6;
}
.fund-ort {
  grid-column: 2; grid-row: 1;
  font-family: var(--f-mono); font-size: var(--t-mini);
  color: var(--c-text-sekundaer);
  line-height: 1.5;
}
.fund-text { grid-column: 2 / -1; grid-row: 2; font-size: var(--t-klein); line-height: 1.45; margin-top: 2px; }
.fund:not([data-zitiert]) .fund-text { color: var(--c-text-sekundaer); }
.fund-wege {
  grid-column: 3; grid-row: 1;
  display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: center; gap: 4px;
  padding-left: 8px;
}
@media (max-width: 479px) {
  .fund-wege { grid-column: 2 / -1; grid-row: 3; justify-content: flex-start; padding-left: 0; margin-top: 6px; }
}
.weg {
  padding: 0 8px;
  border: 1px solid color-mix(in srgb, var(--c-linie) 40%, var(--c-text-sekundaer));
  border-radius: var(--r-pille);
  font-size: 0.75rem; line-height: 1.6;
  color: var(--c-text-sekundaer);
}
.fund-ungenutzt { font-size: 0.75rem; color: var(--c-text-sekundaer); margin-left: 4px; }
.fund-ungenutzt { order: -1; margin: 0 4px 0 0; }

.beleg-antwort { font-size: 1.0625rem; line-height: 1.55; }
.marke {
  display: inline-block;
  font-family: var(--f-mono); font-size: 0.82em;
  color: var(--c-akzent-text);
  text-decoration: none;
  padding: 0 1px;
  border-radius: 3px;
  transition: background-color 160ms var(--aus);
}
.marke:hover, .marke:focus-visible { background: var(--c-markierung); }
/* Zeigt man auf eine Nummer, wird die zugehörige Stelle umrandet. */
.beispiel:has(.marke[data-ziel="1"]:is(:hover, :focus-visible)) .fund[data-fund="1"],
.beispiel:has(.marke[data-ziel="2"]:is(:hover, :focus-visible)) .fund[data-fund="2"] {
  outline-color: var(--c-akzent);
}

.beleg-pruefung {
  display: flex; align-items: center; gap: 10px;
  margin-top: 16px; padding-top: 12px;
  border-top: var(--rahmen);
  font-size: var(--t-klein);
  color: var(--c-status-eindeutig);
}
.beleg-pruefung svg { flex: none; }

.beleg-fuss {
  display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center;
  gap: 8px 16px;
  margin-top: 14px;
  font-size: var(--t-mini);
  color: var(--c-text-sekundaer);
}
.beleg-wieder {
  padding: 4px 0; min-height: 28px;
  border: 0; background: none;
  font: 500 var(--t-mini)/1.4 var(--f-sans);
  color: var(--c-akzent-text);
  text-decoration: underline; text-underline-offset: 0.2em;
  cursor: pointer;
}
.beleg-wieder[hidden] { display: none; }

/* Ablauf. Nur mit Skript (.spielt) und nur, wenn Bewegung erwünscht ist. */
@media (prefers-reduced-motion: no-preference) {
  .beleg.spielt .beleg-fortschritt { animation: fortschritt 2900ms linear both; }
  .beleg.spielt [data-takt="frage"] { animation: auf 420ms var(--aus) 120ms both; }
  .beleg.spielt [data-takt="funde"] .beleg-etikett { animation: auf 360ms var(--aus) 520ms both; }
  .beleg.spielt .fund { animation: einreihen 420ms var(--aus) both; }
  .beleg.spielt .fund:nth-child(1) { animation-delay: 640ms; }
  .beleg.spielt .fund:nth-child(2) { animation-delay: 820ms; }
  .beleg.spielt .fund:nth-child(3) { animation-delay: 1000ms; }
  .beleg.spielt .fund .weg { animation: weg-leuchten 900ms var(--aus) both; }
  .beleg.spielt .fund:nth-child(1) .weg { animation-delay: 780ms; }
  .beleg.spielt .fund:nth-child(2) .weg { animation-delay: 960ms; }
  .beleg.spielt .fund:nth-child(3) .weg { animation-delay: 1140ms; }
  .beleg.spielt .fund-ungenutzt { animation: auf 360ms var(--aus) 2050ms both; }
  .beleg.spielt [data-takt="antwort"] { animation: auf 460ms var(--aus) 1450ms both; }
  .beleg.spielt .marke { animation: marke 420ms var(--aus) both; }
  .beleg.spielt .marke[data-ziel="1"] { animation-delay: 1900ms; }
  .beleg.spielt .marke[data-ziel="2"] { animation-delay: 2050ms; }
  .beleg.spielt .fund[data-zitiert] {
    animation: einreihen 420ms var(--aus) both, markieren 500ms var(--aus) both;
  }
  .beleg.spielt .fund[data-zitiert]:nth-child(1) { animation-delay: 640ms, 1900ms; }
  .beleg.spielt .fund[data-zitiert]:nth-child(2) { animation-delay: 820ms, 2050ms; }
  .beleg.spielt .fund[data-zitiert] .fund-nr { animation: auf 300ms var(--aus) both; }
  .beleg.spielt .fund[data-zitiert]:nth-child(1) .fund-nr { animation-delay: 1900ms; }
  .beleg.spielt .fund[data-zitiert]:nth-child(2) .fund-nr { animation-delay: 2050ms; }
  .beleg.spielt [data-takt="pruefung"] { animation: auf 420ms var(--aus) 2450ms both; }
}
@keyframes fortschritt {
  0% { transform: scaleX(0); opacity: 1; }
  88% { transform: scaleX(1); opacity: 1; }
  100% { transform: scaleX(1); opacity: 0; }
}
@keyframes einreihen {
  from { opacity: 0; transform: translateX(-8px); }
  to { opacity: 1; transform: none; }
}
@keyframes weg-leuchten {
  0% { opacity: 0; }
  30% { opacity: 1; background: var(--c-akzent-flaeche); border-color: var(--c-akzent); color: var(--c-akzent-text); }
  100% { opacity: 1; }
}
@keyframes markieren {
  from { background-color: transparent; }
  to { background-color: var(--c-markierung); }
}
@keyframes marke {
  0% { opacity: 0; transform: translateY(3px) scale(0.7); }
  60% { opacity: 1; transform: translateY(0) scale(1.12); background: var(--c-markierung); }
  100% { opacity: 1; transform: none; }
}

/* Bis beleg.js den Ablauf startet, bleibt der Inhalt verborgen, damit er nicht erst
 * erscheint und dann für den Ablauf verschwindet. farbschema.js setzt .bewegung nur
 * bei erwünschter Bewegung und nimmt sie zurück, wenn kein Baustein-Skript lädt. */
@media (prefers-reduced-motion: no-preference) {
  .bewegung .beleg:not(.spielt) :is(.beispiel, .beleg-pruefung) { opacity: 0; }
}
