/* ========================== */
/* ===== CONTENT BLOCKS ===== */
/* ========================== */

/*======================*/
/* ---- Text Block ---- */
/*======================*/
.text-block {
  /* Abstände nach außen (zum nächsten Block oder Element) */
  margin-top: 1.5em; /* Abstand nach oben */
  margin-bottom: 1.5em; /* Abstand nach unten */

  /* Grundlegende Texteigenschaften (optional, können auch global gesetzt sein) */
  line-height: 1.6; /* Verbessert die Lesbarkeit */
  color: var(--color-text); /* Nutzt die globale Variable für Textfarbe */
}

/* Styling für eine optionale Überschrift innerhalb des Textblocks */
/* Wir nehmen an, du verwendest h3 oder h4 für Block-Überschriften */
.text-block h3,
.text-block h4 {
  font-size: 1.4em; /* Beispielgröße, anpassbar */
  color: var(--color-text); /* Oder eine spezifischere Farbe, falls gewünscht */
  margin-top: 0; /* Kein zusätzlicher Abstand oben innerhalb des Blocks */
  margin-bottom: 0.6em; /* Abstand zwischen Überschrift und folgendem Text */
  font-weight: 600; /* Etwas fetter als normaler Text */
}
.text-block ol{
    list-style-type:decimal;
    list-style-position:outside;
    margin-left: 1em;
}
.text-block ul{
    list-style-type:disc;
    list-style-position:outside;
    margin-left: 1em;
}



/* Styling für Absätze innerhalb des Textblocks */
.text-block p {
  margin-top: 0; /* Kein zusätzlicher Abstand oben für den ersten Absatz */
  margin-bottom: 1em; /* Abstand zwischen Absätzen innerhalb desselben Blocks */
}

/* Entfernt den unteren Abstand vom letzten Element im Block */
/* Verhindert doppelten Abstand, da der Block selbst margin-bottom hat */
.text-block > :last-child {
  margin-bottom: 0;
}
/*============================*/
/* ---- Definition Block ---- */
/*============================*/
.definition-block {
  /* Abstände nach außen */
  margin-top: 1.5em;
  margin-bottom: 1.5em;

  /* Aussehen */
  background-color: var(--color-background-blocks);
  border: 5px solid;
  border-color: #ccc; /* Eine neutrale Standard-Rahmenfarbe, falls keine Klasse gesetzt ist */
  padding: 1em 1.5em;
  border-radius: 4px;

  /* WICHTIG: Damit der Block den Float umschließt */
  overflow: hidden; /* oder display: flow-root; */

  /* Positionierungskontext für evtl. spätere absolute Elemente (optional) */
  position: relative;
}
/* ========================================================== */
/* ---- Farb-Modifikatoren für den Definitionsblock-Rahmen ---- */
/* ========================================================== */

.definition-block.practical {
    border-color: var(--color-practical);
}
.definition-block.theoretical {
    border-color: var(--color-theoretical);
}
.definition-block.applied {
    border-color: var(--color-applied);
}
.definition-block.technical {
    border-color: var(--color-technical);
}
.definition-block.partner {
    border-color: var(--color-partner);
}
.definition-block.lehrplan {
    border-color: var(--color-lehrplan);
}
/* NEU: Styling für das schwebende Icon */
.definition-icon-floated {
  float: right; /* Lässt das Icon nach rechts schweben */
  width: 70px;  /* Gewünschte Breite */
  height: 70px; /* Gewünschte Höhe */
  /* Abstände zum umfließenden Text/Rand */
  margin-left: 1.5em; /* Abstand nach links (zum Text) */
  margin-bottom: 1em;  /* Abstand nach unten */
  /* Optional: Abstand nach oben, falls es nicht bündig starten soll */
  /* margin-top: 0.5em; */

  /* Optional: Für rundere Umfließung bei runden Icons */
  /* shape-outside: circle(50%); */
}


/* Kopfzeile des Definitionsblocks (Icon ist hier nicht mehr drin) */
.definition-header {
  /* display: flex; Nicht mehr unbedingt nötig, da nur noch Text drin ist */
  /* justify-content: space-between; ENTFERNT */
  /* align-items: center; ENTFERNT */
  margin-bottom: 0.8em;
  padding-bottom: 0.5em;
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
  /* Wichtig, damit die Kopfzeile nicht unter dem Float verschwindet, falls sie kurz ist */
  overflow: hidden;
}

/* Container für "Definition: Begriff" */
.definition-header .title-content {
    display: flex;
    align-items: baseline;
}


/* Styling für das Wort "Definition: " */
.definition-header .prefix {
  font-weight: normal;
  margin-right: 0.5em;
  color: var(--color-text-light);
}

/* Styling für den eigentlichen Begriff in den Farben der Themenbereiche */
.definition-header .term-practical {
  font-weight: bold;
  color: var(--color-practical);
  font-size: 1.1em;
}
.definition-header .term-applied {
  font-weight: bold;
  color: var(--color-applied);
  font-size: 1.1em;
}
.definition-header .term-theoretical {
  font-weight: bold;
  color: var(--color-theoretical);
  font-size: 1.1em;
}
.definition-header .term-technical {
  font-weight: bold;
  color: var(--color-technical);
  font-size: 1.1em;
}
.definition-header .term-partner {
  font-weight: bold;
  color: var(--color-parter);
  font-size: 1.1em;
}
.definition-header .term-lehrplan {
  font-weight: bold;
  color: var(--color-lehrplan);
  font-size: 1.1em;
}

/* Container für den eigentlichen Definitionstext */
.definition-body {
  color: var(--color-text);
  line-height: 1.6;
  /* Der Text hier wird automatisch um das gefloatete Icon fließen */
}

/* Absätze innerhalb des Definitionstextes */
.definition-body p {
  margin-top: 0;
  margin-bottom: 1em;
}

/* Entfernt unteren Abstand vom letzten Element im Body */
.definition-body > :last-child {
  margin-bottom: 0;
}
.definition-body ol{
    list-style-type:decimal;
    list-style-position:outside;
    margin-left: 1em;
}
.definition-body ul{
    list-style-type:disc;
    list-style-position:outside;
    margin-left: 1em;
}

/*=======================================*/
/* ---- Code Block (using Prism.js) ---- */
/*=======================================*/

/* Container für den gesamten Block (Header + Code) */
.code-container {
  margin-top: 1.5em;    /* Außenabstand oben */
  margin-bottom: 1.5em; /* Außenabstand unten */
  border-radius: 6px;   /* Abgerundete Ecken für den gesamten Block */
  overflow: hidden;     /* Stellt sicher, dass Kind-Elemente die Rundung beachten */
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3); /* Optional: Ein Schatten für Tiefe */
}

/* Kopfzeile des Code-Blocks */
/*Alter code-header al sicherer Zwischenstand*/
/*.code-header {
/*  background-color: #444444; /* Dunkles Grau, heller als der Code-Hintergrund */
/*  color: #f1f1f1;           /* Helle Schriftfarbe */
/*  padding: 0.6em 1.2em;     /* Innenabstand */
/*  font-family: 'Arial', sans-serif; /* Klare Schriftart für den Header */
/*  font-size: 0.9em;
/*  font-weight: 600;        /* Leicht fett */
/*  border-bottom: 1px solid #555; /* Feine Trennlinie zum Code (optional) */
/*  /* Keine unteren Rundungen, die kommen vom <pre>-Tag */


.code-header {
    background-color: #444444; /* Dunkles Grau, heller als der Code-Hintergrund */
    color: #f1f1f1;            /* Helle Schriftfarbe */
    padding: 0.6em 1.2em;      /* Innenabstand */
    font-family: 'Arial', sans-serif; /* Klare Schriftart für den Header */
    font-size: 0.9em;
    font-weight: 600;          /* Leicht fett */
    border-bottom: 1px solid #555; /* Feine Trennlinie zum Code (optional) */

    /* Flexbox für Ausrichtung von Titel und Button */
    display: flex;
    justify-content: space-between; /* Platziert Titel links und Button rechts */
    align-items: center; /* Zentriert Elemente vertikal */
}

/* Styling für den Kopier-Button */
.copy-button {
    background-color: #555; /* Etwas helleres Grau als der Header */
    color: #f1f1f1;         /* Helle Schrift */
    border: none;           /* Keine Standard-Border */
    border-radius: 4px;     /* Leichte Rundung der Ecken */
    padding: 0.3em 0.8em;   /* Innenabstand */
    cursor: pointer;        /* Zeigt an, dass der Button klickbar ist */
    font-size: 0.8em;       /* Etwas kleiner als der Header-Text */
    font-family: 'Arial', sans-serif;
    transition: background-color 0.2s ease; /* Sanfter Übergang beim Hover */
}

.copy-button:hover {
    background-color: #666; /* Dunkler beim Hover */
}

.copy-button:active {
    background-color: #777; /* Noch dunkler beim Klicken */
}

/* Styling für das <pre>-Element (Code-Bereich) */
/* Wir entfernen die Überschreibungen von Hintergrund/Padding, */
/* damit das Prism-Theme (Tomorrow Night) wieder greift. */
/* Stellt sicher, dass jeder Code-Block standardmäßig den korrekten Innenabstand hat. */
pre[class*="language-"] {
  font-family: 'Courier New', Courier, monospace;
  font-size: 0.95em;
  line-height: 1.5;
  white-space: pre-wrap;
  word-wrap: break-word;
  margin: 0 !important;
  border-bottom-left-radius: 6px;
  border-bottom-right-radius: 6px;
  border-top-left-radius: 0;
  border-top-right-radius: 0;
  color: #ccc;
}
/* Styling für das <code>-Tag innerhalb von <pre> */

pre[class*="language-"] code {
  white-space: pre-wrap !important;
  word-wrap: break-word !important;
  font-family: inherit;
  font-size: inherit;
  color: inherit;
  background: none !important;
  text-shadow: none !important;
  display: block; /* display: block kann hier hilfreich sein, ist aber nicht mehr zwingend */
}


/* === Syntax Highlighting Farben === */
/* Diese .token-Regeln bleiben bestehen, um das Prism-Theme anzupassen oder zu überschreiben. */
/* Farben sind hier auf dunklem Hintergrund abgestimmt (ähnlich Tomorrow Night) */
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
  color: #999; /* Helleres Grau für Kommentare */
  font-style: italic;
}

.token.punctuation {
  color: #ccc; /* Standard-Punctuation-Farbe */
}

.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
  color: #f08d49; /* Orange */
}

.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
  color: #b9ca4a; /* Hellgrün/Gelb */
}

.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
  color: #ccc; /* Standardfarbe für Operatoren */
}

.token.atrule,
.token.attr-value,
.token.keyword {
  color: #c397d8; /* Lila/Pink */
}

.token.function {
 color: #7587a6; /* Blau/Grau */
}

.token.class-name {
  color: #e7c547; /* Gelb */
}

.token.regex,
.token.important,
.token.variable {
  color: #f08d49; /* Orange */
}

.token.important,
.token.bold {
  font-weight: bold;
}

.token.italic {
  font-style: italic;
}
/* =================================================== */
/* ---- Ergänzung für Prism.js Line Numbers Plugin ---- */
/* =================================================== */

/* Passt das <pre>-Element an, um Platz für die Zeilennummern zu schaffen. */
/* Das Padding links muss groß genug für die Nummern sein. */
pre[class*="language-"].line-numbers {
	position: relative;
	padding-left: 3.8em; /* Platz für die Nummern schaffen */
	counter-reset: start-line; /* Zähler für die Zeilen zurücksetzen */
}

/* Der Container, der die eigentlichen Zeilennummern enthält */
.line-numbers-rows {
	position: absolute;
	pointer-events: none; /* Klicks "durchlassen" */
	top: 0;
	font-size: 100%;
	left: -3.8em; /* Positioniert die Nummern in dem durch Padding geschaffenen Freiraum */
	width: 3em; /* Breite der Nummerierungs-Spalte */
	letter-spacing: -1px;
	border-right: 1px solid #555; /* Trennlinie zum Code */

	/* WICHTIG: Macht die Zeilennummern nicht selektierbar/kopierbar */
	user-select: none;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
}

/* Einzelne Zeilennummer */
.line-numbers-rows > span {
	display: block;
	counter-increment: start-line;
}

/* Das eigentliche Pseudo-Element, das die Nummer anzeigt */
.line-numbers-rows > span::before {
	content: counter(start-line);
	color: #999; /* Farbe der Zeilennummern, passend zu Kommentaren */
	display: block;
	padding-right: 0.8em;
	text-align: right;
}
/*=======================================*/
/* ---- Übungen Block ------------------ */
/*=======================================*/

.task-block {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
  background-color: #f8f9fa; /* Heller Hintergrund */
    
    /* --- Explizite Rand-Kontrolle --- */
  /* Setze zuerst ALLE Ränder auf 'none' oder 0 */
  border: none;
  /* Definiere DANN explizit nur den linken Rand */
  border-left-width: 5px;
  border-left-style: solid;
  
  /* .practical, .theoretical etc. bestimmt. */
  /* --- Ende Explizite Rand-Kontrolle --- */
    
  /* Farbe wird durch .practical, .theoretical etc. gesetzt */
  border-radius: 6px;
  padding: 1.2em 1.5em;     /* Innenabstand des gesamten Blocks */
  overflow: hidden;         /* Stellt sicher, dass Float und Rundungen funktionieren */
  position: relative;       /* Für die Positionierung des Icons */
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); /* Leichter Schatten */
}

/* --- Farb-Modifikatoren für den linken Rand --- */
.task-block.practical { border-left-color: var(--color-practical); }
.task-block.theoretical { border-left-color: var(--color-theoretical); }
.task-block.applied { border-left-color: var(--color-applied); }
.task-block.technical { border-left-color: var(--color-technical); }
.video-block.lehrplan { border-left-color: var(--color-lehrplan); }
/* Ggf. weitere Themen hinzufügen oder eine allgemeine Task-Farbe */
.task-block.general { border-left-color: var(--color-task, #e74c3c); }


/* --- Icon-Styling (kann .exercise-icon-floated wiederverwenden) --- */
/* Name zur Klarheit geändert in .task-icon-floated */
.task-icon-floated {
  float: right;
  width: 70px;
  height: 70px;
  margin-left: 1.5em;  /* Abstand links vom Icon (zum Text) */
  margin-bottom: 1em; /* Abstand unter dem Icon */
  /* shape-outside: circle(50%); /* Optional für runde Icons */
}

/* --- Haupt-Header des Übungsblocks --- */
.task-header {
  margin-bottom: 1em;       /* Abstand zum ersten Aufgabenelement */
  padding-bottom: 0.7em;    /* Platz unter der Überschrift */
  border-bottom: 1px solid #d5d5d5; /* Linie unter dem Haupt-Header */
  overflow: hidden;         /* Stellt korrekte Darstellung mit Float sicher */
  display: flex;            /* Für Ausrichtung von Prefix und Titel */
  align-items: baseline;
}

.task-header .prefix {
  font-weight: bold;
  margin-right: 0.5em;
  font-size: 1.2em; /* Größe für "Übung - " */
  /* Farbe könnte themenspezifisch sein oder eine feste Aufgabenfarbe */
  color: var(--color-text); 
}
/* Optional: Farbe des Prefix an Rand anpassen (Beispiele) */
/* .task-block.practical .task-header .prefix { color: var(--color-practical); } */
/* .task-block.theoretical .task-header .prefix { color: var(--color-theoretical); } */


.task-header .title {
  font-weight: bold;
  color: var(--color-text);
  font-size: 1.2em; /* Größe für den Thementitel */
}

/* --- Body-Bereich, der die einzelnen Aufgaben enthält --- */
.task-body {
  /* 'clear: both;' ist nicht unbedingt nötig, da der Header schon overflow:hidden hat */
  /* padding-top: 0.5em; /* Kleiner Abstand zur ersten Aufgabe */
}

/* --- Einzelne Aufgabe innerhalb des Body --- */
.task-item {
  padding-top: 1.2em;    /* Abstand über der Aufgabe (zur Trennlinie/Header) */
  padding-bottom: 1.2em; /* Abstand unter der Aufgabe (zur Trennlinie) */
  border-bottom: 1px dashed #ccc; /* Gestrichelte Trennlinie */
  /* overflow: hidden; /* Normalerweise nicht nötig, außer bei komplexem Inhalt */
}

/* Entfernt die Trennlinie nach der letzten Aufgabe */
.task-body > .task-item:last-child {
  border-bottom: none;
  padding-bottom: 0; /* Weniger Abstand unter der letzten Aufgabe */
}

/* --- Styling für Aufgaben-Nummer/Titel (z.B. "Aufgabe 1:") --- */
.task-item h4 { /* Oder eine andere Klasse/Tag deiner Wahl */
  font-size: 1.05em;
  font-weight: bold;
  color: var(--color-text);
  margin-top: 0;
  margin-bottom: 0.6em; /* Abstand zum Aufgabentext */
}

/* --- Standard-Elemente im Aufgabentext --- */
.task-item p,
.task-item ul,
.task-item ol,
.task-item .code-container { /* Falls Codeblöcke in Aufgaben vorkommen */
  margin-top: 0;
  margin-bottom: 1em; /* Standardabstand für Elemente im Aufgabentext */
}

.task-item ul,
.task-item ol{
    margin-left:1em;
}

/* Entfernt den unteren Rand vom letzten Element in einer Aufgabe */
.task-item > :last-child {
  margin-bottom: 0;
}
/* ---- Solution Box (within Task Items) ---- */

/* .teacher-content sorgt für das Ausblenden standardmäßig */
/* Die .solution-box Klasse dient dem spezifischen Styling */
.solution-box {
  margin-top: 1.5em; /* Abstand nach oben zur Aufgabe */
  padding: 1em 1.2em; /* Innenabstand */
  background-color: #eafaf1; /* Heller grüner Hintergrund */
  border: 1px solid #c8f7c5; /* Hellgrüner Rand */
  border-radius: 4px;
  border-left: 4px solid #2ecc71; /* Grüner Akzent links */
  /* display: none; wird von .teacher-content geerbt oder durch JS gesteuert */
}

/* Überschrift innerhalb der Lösungsbox (z.B. "Lösung") */
.solution-box h5 {
  margin-top: 0;
  margin-bottom: 0.7em;
  color: #27ae60; /* Dunkleres Grün */
  font-size: 1em;
  font-weight: bold;
  padding-bottom: 0.3em;
  border-bottom: 1px solid #a3e9a4; /* Feine Linie unter der Lösungs-Überschrift */
}

/* Standard-Elemente innerhalb der Lösung */
.solution-box p,
.solution-box ul,
.solution-box ol,
.solution-box .code-container { /* Wichtig für Code-Beispiele in Lösungen */
  margin-top: 0;
  margin-bottom: 1em;
}

/* Entfernt Rand vom letzten Element in der Lösung */
.solution-box > :last-child {
  margin-bottom: 0;
}


/* --- Sichtbarkeitssteuerung (WICHTIG!) --- */
/* Diese Regel macht .teacher-content (und damit .solution-box) sichtbar, */
/* wenn der Body die Klasse 'teacher-logged-in' hat. */
/* Stelle sicher, dass diese Regel existiert (entweder hier, in styles.css */
/* oder styles_content.css) und von deinem script.js genutzt wird. */

body.teacher-logged-in .teacher-content {
  display: block !important; /* !important kann nötig sein, um andere display-Regeln sicher zu überschreiben */
}

/* Alternativ, falls du nur die Solution-Boxen ansprechen willst: */
/* body.teacher-logged-in .solution-box { display: block !important; } */
/* Die generische .teacher-content-Regel ist aber meist besser. */

/*=========================================*/
/* ---- Einklappbarer Block (.collapsible-task-block) ---- */
/*=========================================*/

/* Übernimmt das grundlegende Aussehen des task-block */
.collapsible-task-block {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
  background-color: #f8f9fa; /* Heller Hintergrund */

  /* --- Explizite Rand-Kontrolle --- */
  border: none;
  border-left-width: 5px;
  border-left-style: solid;
  /* Die Farbe wird durch themen-spezifische Klassen wie .practical etc. gesetzt */
  border-radius: 6px;
  /* Padding - Links und Rechts gleicher Abstand wie beim Task-Block */
  padding: 1.2em 1.5em 1.2em 1.5em; /* Standard Padding */
  overflow: hidden;         /* Stellt sicher, dass Float und Rundungen funktionieren */
  position: relative;       /* Wichtig für das absolute Icon und das korrekte Floaten */
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); /* Leichter Schatten */
}

/* Farb-Modifikatoren für den linken Rand, wie beim task-block */
.collapsible-task-block.practical { border-left-color: var(--color-practical); }
.collapsible-task-block.theoretical { border-left-color: var(--color-theoretical); }
.collapsible-task-block.applied { border-left-color: var(--color-applied); }
.collapsible-task-block.technical { border-left-color: var(--color-technical); }
.collapsible-task-block.lehrplan { border-left-color: var(--color-lehrplan); }
.collapsible-task-block.general { border-left-color: var(--color-task, #e74c3c); }

/* NEU: Styling für das schwebende Icon RECHTS, größere Größe und angepasste Margins */
.collapsible-icon-floated {
  float: right; /* Lässt das Icon nach rechts schweben */
  width: 70px;  /* Gewünschte Breite (wie beim Übungsblock) */
  height: 70px; /* Gewünschte Höhe (wie beim Übungsblock) */
  /* Negative Margin-Top lässt das Icon nach oben verschieben */
  margin-top: -20px; /* Passt den oberen Überhang an - BEHALTEN */
  /* Kein negativer Margin-Right mehr! Der Abstand zum rechten Rand ergibt sich aus dem Padding des Containers. */
  margin-right: 0; /* Explizit auf 0 setzen oder Zeile entfernen */
  margin-left: 1.5em;  /* Abstand links vom Icon (zum Text) - BEHALTEN wie vorher */
  margin-bottom: 1em; /* Abstand unter dem Icon - BEHALTEN wie vorher */

  /* Wichtig: Das Icon muss innerhalb des Containers liegen, damit float funktioniert. */
  position: relative; /* Stellt sicher, dass es über dem Hintergrund liegt */
  z-index: 1; /* Bringt das Icon nach vorne */
}


/* Der Rest des CSS (collapsible-header, toggle-icon, collapsible-content) bleibt GLEICH wie im vorherigen Schritt */

/* Styling für den Header-Bereich, der geklickt wird */
.collapsible-task-block .collapsible-header {
  cursor: pointer;
  margin-bottom: 0.8em;
  padding-bottom: 0.7em;
  border-bottom: 1px solid #d5d5d5;
  position: relative;
   padding-right: 30px; /* Platz für das Toggle-Icon */
  overflow: hidden;
}

/* Stil für den Titel im Header */
.collapsible-task-block .collapsible-header .title {
  font-weight: bold;
  color: var(--color-text);
  font-size: 1.2em;
  line-height: 1.4;
}

/* Stil für das Ein-/Ausklapp-Icon (rechts) */
.collapsible-task-block .toggle-icon {
  position: absolute;
  top: 50%;
  right: 0;
  
  font-size: 1.2em;
  color: var(--color-text-light);
  transition: transform 0.3s ease;
  transform: translateY(-50%)  rotate(180deg); /* Das verschiebt das Icon vertikal in die Mitte */
}

/* Das Icon drehen, wenn der Block 'active' (eingeklappt) ist */
.collapsible-task-block.active .toggle-icon {
  /* Setze den transform-origin auf die Mitte des Elements */
  transform-origin: 50% 50%;
  transform: translateY(-50%) rotate(0deg);
}


/* Container für den Inhalt, der ein- und ausgeklappt wird */
.collapsible-task-block .collapsible-content {
  max-height: 0; /* Versteckt den Inhalt standardmäßig */
  overflow: hidden;
  transition: max-height 0.3s ease-out; /* Kurze Animation */
  padding-top: 0;
  padding-bottom: 0;
}

.collapsible-task-block.active .collapsible-content {
    max-height: 5000px; /* Sehr großer Wert, um jeglichen Inhalt zu fassen */
    padding-top: 0.5em; /* Padding wird animiert */
    padding-bottom: 0.5em;
}

/* Stil für Elemente innerhalb des einklappbaren Inhalts */
.collapsible-task-block .collapsible-content p,
.collapsible-task-block .collapsible-content ul,
.collapsible-task-block .collapsible-content ol,
.collapsible-task-block .collapsible-content .code-container {
    margin-top: 0;
    margin-bottom: 1em;
}

/* Entfernt den unteren Rand vom letzten Element im eingeklappten Inhalt */
.collapsible-task-block .collapsible-content > :last-child {
    margin-bottom: 0;
}
.collapsible-task-block ul,
.collapsible-task-block ol{
    margin-left:1em;
}
/*=======================================*/
/* ---- Test Block (.test-block) ---- */
/*=======================================*/

.test-block {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
  background-color: #f8f9fa; /* Heller Hintergrund */

  border: none;
  border-left-width: 5px;
  border-left-style: solid;
  border-left-color: var(--color-test); /* Nutzt die neue Test-Farbe */
  border-radius: 6px;
  /* Padding - Links und Rechts wieder Standard-Padding */
  padding: 1.2em 1.5em 1.2em 1.5em; /* Standard Padding wie bei Task/Collapsible Block */
  overflow: hidden;         /* Stellt sicher, dass Float und Rundungen funktionieren */
  position: relative;       /* Wichtig für das absolute Icon und das korrekte Floaten */
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); /* Leichter Schatten */
}

/* --- Farb-Modifikatoren für den linken Rand --- */
.test-block.practical { border-left-color: var(--color-practical); }
.test-block.theoretical { border-left-color: var(--color-theoretical); }
.test-block.applied { border-left-color: var(--color-applied); }
.test-block.technical { border-left-color: var(--color-technical); }
.test-block.lehrplan { border-left-color: var(--color-lehrplan); }
/* Ggf. weitere Themen hinzufügen oder eine allgemeine Task-Farbe */
.test-block.general { border-left-color: var(--color-test, #e74c3c); }

.test-block h3 {
  /* Stil für den Haupttitel des Testblocks (optional) */
  font-size: 1.4em;
  color: var(--color-text);
  margin-top: 0;
  margin-bottom: 1em; /* Abstand zum ersten Test-Item */
  padding-bottom: 0.5em;
  border-bottom: 1px solid #d5d5d5; /* Trennlinie */
}

/*=======================================*/
/* ---- Icon für Test Block (.test-icon-floated) ---- */
/*=======================================*/

.test-icon-floated {
  float: right; /* Lässt das Icon nach rechts schweben */
  width: 70px;  /* Gewünschte Breite */
  height: 70px; /* Gewünschte Höhe */
  /* Negative Margins lassen das Icon über den Blockrand ragen und nach oben verschieben */
  margin-top: -20px; /* Passt den oberen Überhang an (wie beim Collapsible-Icon) */
  margin-right: 0px; /* NEU: Negativer Margin-Right, um das Icon aus dem Padding zu ziehen */
  margin-left: 1.5em;  /* Abstand links vom Icon (zum Text) */
  margin-bottom: 1em; /* Abstand unter dem Icon */

  position: relative; /* Stellt sicher, dass es über dem Hintergrund liegt */
  z-index: 1; /* Bringt das Icon nach vorne */
}

/*=============================================*/
/* ---- Einzelnes Test Item (.test-item) ---- */
/*=============================================*/

.test-item {
  margin-bottom: 1.5em; /* Abstand zwischen einzelnen Aufgaben */
  padding-bottom: 1.5em; /* Padding unter dem Item */
  border-bottom: 1px dashed #ccc; /* Gestrichelte Linie zwischen Items */
}

.test-item:last-child {
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: none; /* Keine Linie unter dem letzten Item */
}

.test-item h4 {
  /* Stil für den Aufgabentitel (z.B. "Aufgabe 1:") */
  font-size: 1.1em;
  font-weight: bold;
  color: var(--color-text);
  margin-top: 0;
  margin-bottom: 0.8em; /* Abstand zum Aufgabentext */
}

.test-item p {
    /* Stil für Aufgabentexte */
    margin-top: 0;
    margin-bottom: 1em; /* Abstand unter dem Aufgabentext */
    line-height: 1.6;
}
.test-item ul,
.test-item ol,{
    margin-left: 1em;
}
/*================================================*/
/* ---- Einklappbare Lösung (.solution-toggle, .solution-content) ---- */
/*================================================*/

/* Der klickbare Bereich (z.B. "Lösung anzeigen") */
.solution-toggle {
  font-weight: bold;
  color: var(--color-header); /* Beispiel: Blaue Farbe für den Link */
  cursor: pointer;
  margin-top: 1em; /* Abstand von der Aufgabe */
  margin-bottom: 0.5em; /* Abstand zum Inhalt, wenn offen */
  display: inline-block; /* Damit margin-top/bottom funktionieren */
}

/* Stil für das Chevron-Icon neben dem Lösungsschalter */
.solution-toggle .toggle-icon {
    font-size: 0.9em;
    margin-left: 0.5em;
    transition: transform 0.3s ease; /* Animation für die Drehung */
}

/* Das Icon drehen, wenn die Lösung offen ist */
/* Die Klasse 'active' wird durch JavaScript zum .solution-toggle hinzugefügt */
.solution-toggle.active .toggle-icon {
    transform: rotate(180deg);
}


/* Der Container für den eigentlichen Lösungsinhalt */
.solution-content {
  /* Standardmäßig versteckt */
  max-height: 0;
  overflow: hidden;
  /* Übergang für Höhe und Padding */
  transition: max-height 0.5s ease-in-out, padding-top 0.5s ease-in-out, padding-bottom 0.5s ease-in-out;

  /* Padding im eingeklappten Zustand ist 0 vertikal */
  padding-top: 0;
  padding-bottom: 0;
  padding-left: 1.2em; /* Horizontal Padding beibehalten */
  padding-right: 1.2em; /* Horizontal Padding beibehalten */

  /* Optional: Leichter Hintergrund oder Rand für die Lösung */
   background-color: #e9ecef;
   border-left: 3px solid rgba(0,0,0,0.1);
   /* margin-top: 0.5em; /* Margin kann bleiben, wird aber evtl. angepasst */
   margin-bottom: 0.5em; /* Margin kann bleiben */
   border-radius: 4px;
}

/* Zustand: Lösung ist geöffnet */
/* Die Klasse 'active' wird durch JavaScript zum .solution-toggle hinzugefügt */
/* Wählt das nachfolgende .solution-content Element aus, wenn .solution-toggle.active aktiv ist */
.solution-toggle.active + .solution-content {
  max-height: 1000px; /* Genug Höhe, um den Inhalt anzuzeigen */
  padding-top: 1em; /* Padding oben wenn geöffnet */
  padding-bottom: 1em; /* Padding unten wenn geöffnet */
  /* padding-left und padding-right sind bereits in der Basisregel gesetzt */
   margin-top: 0.5em; /* Abstand vom Toggle, wenn geöffnet */
}

/* Optional: Abstand zwischen Toggle und Content im geschlossenen Zustand entfernen */
/* Dies vermeidet den kleinen weißen Spalt */
.solution-toggle + .solution-content {
    margin-top: 0;
}

.solution-toggle.active + .solution-content {
    margin-top: 0.5em; /* Fügt den gewünschten Abstand wieder hinzu, wenn geöffnet */
}

/*=========================================*/
/* ---- Video Block Container (.video-block) ---- */
/* Dies ist nur der äußere Rahmen, der Inhalt klappt DAZWISCHEN ein/aus */
/*=========================================*/

.video-block {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
  background-color: #f8f9fa; /* Heller Hintergrund */

  border: none;
  border-left-width: 5px;
  border-left-style: solid;
  border-left-color: var(--color-video); /* Nutzt die Video-Farbe */
  border-radius: 6px;
  /* Padding - Platz für das Icon rechts und Standard links */
  padding: 1.2em 1.5em 1.2em 1.5em; /* Standard Padding. Das Icon ragt über diesen Rand hinaus */
  overflow: hidden;         /* Wichtig, damit Float und Überlappung korrekt gerendert werden */
  position: relative;       /* Für die Positionierung des schwebenden Icons */
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); /* Leichter Schatten */
}

/* Themen-spezifische Farb-Modifikatoren für den linken Rand (optional) */
.video-block.practical { border-left-color: var(--color-practical); }
.video-block.theoretical { border-left-color: var(--color-theoretical); }
.video-block.applied { border-left-color: var(--color-applied); }
.video-block.technical { border-left-color: var(--color-technical); }
.video-block.lehrplan { border-left-color: var(--color-lehrplan); }
.video-block.general { border-left-color: var(--color-video); } /* Standard */


/*=======================================*/
/* ---- Icon für Video Block (.video-icon-floated) ---- */
/* (Innerhalb des .video-block Containers, floatet) */
/*=======================================*/

.video-icon-floated {
  float: right; /* Lässt das Icon nach rechts schweben */
  width: 70px;  /* Gewünschte Breite */
  height: 70px; /* Gewünschte Höhe */
  /* Negative Margins lassen das Icon über den Blockrand ragen und nach oben verschieben */
  margin-top: -20px; /* Passt den oberen Überhang an */
  margin-right: 0px; /* Passt den rechten Überhang an (0px) */
  margin-left: 1.5em;  /* Abstand links vom Icon (zum Text) */
  margin-bottom: 1em; /* Abstand unter dem Icon */

  position: relative; /* Stellt sicher, dass es über dem Hintergrund liegt */
  z-index: 1; /* Bringt das Icon nach vorne */
}

/*=========================================*/
/* ---- Video Block Toggler (.video-block-toggle) ---- */
/* Der klickbare Header, der den Inhalt ein-/ausklappt */
/*=========================================*/

.video-block-toggle {
    font-weight: bold;
    color: var(--color-text); /* Farbe für den Titel */
    cursor: pointer;
    /* Margin-Top kann 0 sein, der Abstand zum oberen Rand kommt vom Padding des .video-block */
    margin-bottom: 0.8em; /* Abstand zum Inhalt, wenn dieser erscheint */
    padding-bottom: 0.7em;
    border-bottom: 1px solid #d5d5d5; /* Trennlinie */
    display: flex; /* Flexbox für Titel und Toggle-Icon */
    align-items: center; /* Vertikale Ausrichtung */
    justify-content: space-between; /* Schiebt Icon und Titel auseinander */
    /* Padding rechts, um Platz für das Toggle-Icon zu lassen */
    padding-right: 30px; /* Platz für das kleine Dreieck */
    /* Stellt sicher, dass der Toggler den Float des schwebenden Icons umschließt */
    overflow: hidden;
    position: relative;
}

/* Stil für den Titel im Toggler */
.video-block-toggle .title {
    /* Standardmäßig nimmt der Titel den verfügbaren Platz ein */
    flex-grow: 1; /* Lässt den Titel wachsen */
    margin-right: 1em; /* Abstand zwischen Titel und Toggle-Icon */
    /* Der Text hier wird automatisch um das schwebende Icon (das floatet) fließen */
    line-height: 1.4; /* Etwas mehr Zeilenabstand */
}

/* Stil für das Ein-/Ausklapp-Icon (rechts im Toggler) */
.video-block-toggle .toggle-icon {
    font-size: 1.2em; /* Größe des Dreiecks */
    color: var(--color-text-light);
    transition: transform 0.3s ease; /* Animation */
    flex-shrink: 0; /* Verhindert, dass das Icon kleiner wird */
}

/* Das Icon drehen, wenn der Block aufgeklappt ist */
/* Die Klasse 'active' wird durch JavaScript zum .video-block-toggle hinzugefügt */
.video-block-toggle.active .toggle-icon {
    transform-origin: 50% 50%;
    transform: rotate(180deg);
}
.video-block.active .toggle-icon {
  transform: translateY(-50%) rotate(180deg);
}
/*=========================================*/
/* ---- Video Block Content (.video-block-content) ---- */
/* Der Bereich, der das Video und optionalen Text enthält, klappt ein/aus */
/*=========================================*/

.video-block-content {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.3s ease-out;
  padding-top: 0;
  padding-bottom: 0;
}
/* Stil für das Ein-/Ausklapp-Icon im Video-Block */
.video-block .toggle-icon {
  position: absolute;
  top: 50%;
  right: 0;
  /* Entferne transform: translateY(-50%); */
  font-size: 1.2em;
  color: var(--color-text-light);
  transition: transform 0.3s ease;
  transform: translateY(-50%) rotate(0deg); /* Das verschiebt das Icon vertikal in die Mitte */
}
.video-block.active .video-block-content {
  max-height: 5000px;
  padding-top: 0.5em;
  padding-bottom: 0.5em;
}

/* Optional: Abstand zwischen Toggler und Content im geschlossenen Zustand entfernen */
/* Dies vermeidet den kleinen weißen Spalt, falls margin-bottom am Toggler ist */
.video-block-toggle + .video-block-content {
     margin-top: 0;
}


/* Zustand: Video Block ist geöffnet */
/* Wählt das nachfolgende .video-block-content Element aus, wenn .video-block-toggle.active aktiv ist */
.video-block-toggle.active + .video-block-content {
  max-height: 1500px; /* Genug Höhe für Video und Text */
  padding-top: 0.5em; /* Padding oben, wenn geöffnet */
  padding-bottom: 0.5em; /* Padding unten, wenn geöffnet */
   /* margin-top: 0.5em; /* Fügt den gewünschten Abstand wieder hinzu, wenn geöffnet */
}


/*=======================================*/
/* ---- Responsiver Video Container (.video-container) ---- */
/* (Für <iframe> oder <video>, platziert INNERHALB .video-block-content) */
/*=======================================*/

.video-container {
    position: relative;
    padding-bottom: 56.25%; /* 16:9 Aspect Ratio (9 / 16 * 100) */
    height: 0;
    overflow: hidden;
    margin-top: 1em; /* Abstand vom oberen Rand des Content-Bereichs */
    margin-bottom: 1em; /* Abstand zu Text darunter */
    border-radius: 4px; /* Leichte Rundung */
    background-color: #000; /* Schwarzer Hintergrund, bis Video lädt */
}

.video-container iframe,
.video-container video {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
}

/* Stil für optionalen Text unter dem Video */
.video-block-content p {
    margin-top: 0; /* Abstand zum Element darüber (z.B. Video-Container) */
    margin-bottom: 1em;
    line-height: 1.6;
}
.video-block-content ul,
.video-block-content ol{
    margin-left: 1em;
}

/*=======================================*/
/* ---- Bilder im Text-Bild Block ---- */
/* (Nutzen float für Umfluss und Größenanpassung im HTML) */
/*=======================================*/

/* Basis-Stil für Bilder im Text-Bild Block */
.text-image-block img {
    display: block; /* Sorgt für bessere Kontrolle über Margins */
    /* Größe wird nun im HTML width-Attribut gesetzt */
    /* width: 10%; -- ENTFERNEN oder auskommentieren */
    height: auto; /* Höhe automatisch anpassen basierend auf width */
    /* max-width: none; -- ENTFERNEN oder auskommentieren */
    /* max-width: 100%; kann hier wieder sinnvoll sein, um Überläufe bei großen Bildern zu verhindern, falls width nicht gesetzt ist */
     max-width: 100%; /* Empfohlen, um sicherzustellen, dass Bilder nicht die Box sprengen, falls width im HTML fehlt oder sehr groß ist */
}



/* Bild floatet links (Text fließt rechts davon und darunter) */
.text-image-block .image-float-left {
  float: left;
  margin-right: 1.5em; /* Abstand zum Text rechts */
  margin-bottom: 1em; /* Abstand zum Text unten */
  margin-top: 0; /* Standardmäßig kein zusätzlicher Abstand oben */
}

/* Bild floatet rechts (Text fließt links davon und darunter) */
.text-image-block .image-float-right {
  float: right;
  margin-left: 1.5em; /* Abstand zum Text links */
  margin-bottom: 1em; /* Abstand zum Text unten */
  margin-top: 0; /* Standardmäßig kein zusätzlicher Abstand oben */
}

/* Stile für Absätze und andere Elemente im Text-Bild Block (direkt, kein Wrapper nötig) */
.text-image-block p,
.text-image-block ul,
.text-image-block ol {
    margin-top: 0; /* Kein zusätzlicher Abstand oben für das erste Element im Block */
    margin-bottom: 1em; /* Abstand zwischen Elementen */
    line-height: 1.6; /* Grundlegender Textstil */
    color: var(--color-text); /* Grundlegender Textstil */
}
.text-image-block ul,
.text-image-block ol{
    margin-left: 1em;
}

/* Entfernt den unteren Abstand vom letzten Element im Block */
.text-image-block > :last-child {
    margin-bottom: 0;
}

/* ========================================================= */
/* ---- Bilderreihe Block (NEUER, FLEXIBLERER ANSATZ) ---- */
/* ========================================================= */

.image-row-container {
    display: flex;
    gap: 0.8em;
    
    /* WICHTIG: Statt 'center' nutzen wir 'stretch'. 
       Das zwingt alle Kind-Elemente (die <figure>s), 
       so hoch zu werden wie das höchste Element in der Reihe. */
    align-items: stretch;
}

.image-row-container figure {
    flex: 1 1 auto; /* Erlaubt Figuren zu wachsen/schrumpfen, um Platz zu füllen */
    margin: 0;
    padding: 0;
    height: 100%; /* Die Figur nimmt jetzt die volle Höhe des Containers ein */
    display: flex;
    flex-direction: column; /* Bild und Bildunterschrift untereinander */
    justify-content: space-between; /* Bild und Unterschrift oben/unten ausrichten */
}

.image-row-container figure img {
    display: block;
    width: 100%;
    height: 100%; /* Begrenze die Höhe, damit sie nicht überläuft */
    object-fit: contain;
    flex-grow: 1; /* **WICHTIG:** Das Bild füllt den verbleibenden vertikalen Platz aus */
}
/* Stellt sicher, dass die Unterschrift immer unter dem Bild bleibt */
.image-row-container figure figcaption {
    text-align: center;
    padding: 0.5em 0;
    flex-shrink: 0; /* **NEU HINZUGEFÜGT:** Verhindert, dass die Bildunterschrift schrumpft */
}
/*=======================================*/
/* ---- Bildergalerie Block (.gallery-block) ---- */
/*=======================================*/

.gallery-block {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
  /* Kein Hintergrund, kein Rahmen, kein Schatten */
  padding: 0; /* Kein zusätzliches Padding */
  position: relative; /* Wichtig für die absolute Positionierung der Pfeile */
  overflow: hidden; /* Verhindert, dass Bilder oder Pfeile über den Rand ragen */
}

/* Optional: Stil für eine Überschrift oberhalb der Galerie */
.gallery-block h3 {
    font-size: 1.4em;
    color: var(--color-text);
    margin-top: 0;
    margin-bottom: 1em;
    text-align: center; /* Zentriert den Titel */
}


/*=======================================*/
/* ---- Galerie Container (Wrapper) ---- */
/*=======================================*/

.gallery-container {
    position: relative; /* Wichtig für die absolute Positionierung von Elementen darin */
    overflow: hidden; /* Versteckt Bilder außerhalb des sichtbaren Bereichs */
    /* Optional: Höhe festlegen oder durch das erste Bild bestimmen lassen */
    /* Wenn keine Höhe gesetzt ist, bestimmt das erste Bild die Höhe, danach passen sich andere Bilder an dessen Breite an */
    /* height: 300px; */
}


/*=======================================*/
/* ---- Container für die Bilder (bewegt sich) ---- */
/*=======================================*/

.gallery-images-container {
    display: flex; /* Bilder in einer Reihe anordnen */
    transition: transform 0.5s ease-in-out; /* Animation beim Bildwechsel */
    /* Die Breite wird im JavaScript basierend auf der Anzahl der Bilder gesetzt */
    /* width: 400%; /* Beispiel für 4 Bilder: 4 * 100% */
    /* Die Höhe wird von den Bildern bestimmt oder vom .gallery-container */
    height: 100%;
}

/*=======================================*/
/* ---- Einzelnes Bild in der Galerie ---- */
/*=======================================*/

/* Jeder Slide nimmt 100% der Breite des .gallery-container ein */
/* Die Breite jedes Slides wird im JavaScript gesetzt: width: calc(100% / Anzahl_Bilder); */
.gallery-image-slide {
     /* width: 25%; /* Beispiel für 4 Bilder */
     flex-shrink: 0; /* Wichtig: Bilder nicht schrumpfen lassen */
     flex-basis: auto; /* Basisgröße wird von content bestimmt */
     height: auto; /* Höhe automatisch anpassen */
     /* Stellt sicher, dass das Bild die gesamte Fläche des Slides einnimmt */
     display: flex;
     justify-content: center;
     align-items: center;
}

.gallery-image-slide img {
    display: block;
    max-width: 100%; /* Bild nicht breiter als sein Slide */
    height: auto; /* Höhe automatisch anpassen */
    /* Wenn die Höhe des Containers fest ist, setze: */
    /* height: 100%; */
    /* width: auto; */
}


/*=======================================*/
/* ---- Navigationspfeile ---- */
/*=======================================*/

.gallery-nav {
    position: absolute; /* Absolut positioniert über den Bildern */
    top: 50%; /* Vertikal zentrieren */
    left: 0;
    right: 0;
    transform: translateY(-50%); /* Exakte vertikale Zentrierung */
    display: flex;
    justify-content: space-between; /* Pfeile an den Enden der Box */
    padding: 0 1em; /* Abstand vom Rand */
    z-index: 10; /* Stellt sicher, dass die Pfeile über den Bildern liegen */
    pointer-events: none; /* Standardmäßig keine Klicks auf dem Nav-Container */
}

.gallery-nav .gallery-arrow {
    cursor: pointer;
    font-size: 2em; /* Größe der Pfeile */
    color: rgba(255, 255, 255, 0.8); /* Helle, leicht transparente Farbe */
    background-color: rgba(0, 0, 0, 0.5); /* Dunkler, transparenter Hintergrund */
    border-radius: 50%; /* Runde Form */
    padding: 0.5em 0.7em; /* Innenabstand */
    transition: background-color 0.3s ease;
    pointer-events: auto; /* Klicks auf den Pfeilen erlauben */
    /* Optional: Schatten */
    /* box-shadow: 0 2px 5px rgba(0,0,0,0.3); */
}

.gallery-nav .gallery-arrow:hover {
    background-color: rgba(0, 0, 0, 0.8); /* Hintergrund dunkler bei Hover */
}

/* Pfeil nach links/rechts anpassen (falls nötig) */
.gallery-nav .arrow-left { /* Spezifische Klasse für linken Pfeil */ }
.gallery-nav .arrow-right { /* Spezifische Klasse für rechten Pfeil */ }


/*=======================================*/
/* ---- Punkte Navigation ---- */
/*=======================================*/

.gallery-dots {
    text-align: center; /* Punkte zentrieren */
    margin-top: 1em; /* Abstand zum Bild */
    z-index: 10; /* Stellt sicher, dass die Punkte über allem liegen */
}

.gallery-dot {
    display: inline-block; /* Wichtig, damit die Punkte nebeneinander sind und Größe haben */
    width: 20px; /* Größe des Punktes ANPASSEN (z.B. 12px oder 15px) */
    height: 20px; /* Größe des Punktes ANPASSEN (gleich wie Breite) */
    margin: 0 5px; /* Abstand zwischen den Punkten ANPASSEN (z.B. 5px oder 6px) */
    background-color: #bbb; /* Graue Farbe für inaktive Punkte */
    border-radius: 50%; /* Runde Form */
    cursor: pointer;
    transition: background-color 0.3s ease, transform 0.2s ease;
}

.gallery-dot:hover {
    background-color: #888; /* Dunkler bei Hover */
}

/* Stil für den aktiven Punkt */
.gallery-dot.active {
    background-color: #555; /* Dunklere Farbe für aktiven Punkt */
    transform: scale(1.2); /* Leicht vergrößert für aktiven Punkt */
}

/*=======================================*/
/* ---- Stile für Bilder mit Unterschriften (Figure/Figcaption) ---- */
/* (Innerhalb Bilderreihe und Galerie) */
/*=======================================*/

/* ========================================================= */
/* ---- Bilderreihe Block (NEUER, FLEXIBLERER ANSATZ) ---- */
/* ========================================================= */

.image-row-block {
    margin-top: 1.5em; /* Abstand nach oben */
    margin-bottom: 1.5em; /* Abstand nach unten */
    /* Die restlichen Stile bleiben unverändert */
    overflow: hidden; /* **NEU HINZUGEFÜGT:** Stellt sicher, dass der Block seine Kinder umschließt */
}

/* Grundstil für <figure> Elemente in beiden Blocktypen */
/* Sie sind Flex Items in der Bilderreihe/Galerie Slides */
.image-row-block figure,
.gallery-image-slide figure {
    margin: 0; /* Entfernt Standard-Margins von figure */
    padding: 0; /* Entfernt Standard-Padding von figure */
    display: block; /* Standardmäßig Block-Element */
    /* Als Flex Item in der Reihe: */
    /* flex-grow und flex-shrink hängen vom Eltern-Container ab (sind dort definiert) */
    /* flex-basis: auto; /* Basisgröße von Inhalt bestimmt */
    /* height: 100%; /* Figure soll die Höhe des Flex-Containers ausfüllen */
}

/* Stile für <figure> im Kontext der Bilderreihe (Skalieren) */
.image-row-block figure {
    flex: 1 1 auto; /* Erlaubt Figuren zu wachsen/schrumpfen, um Platz zu füllen */
}

/* Stile für <figure> im Kontext der Galerie Slides (Nicht schrumpfen, feste Breite vom JS) */
.gallery-image-slide figure {
     width: 100%; /* Figure soll 100% der Breite des Slides einnehmen (Slide Breite kommt vom JS) */
     height: 100%; /* Figure soll 100% der Höhe des Slides einnehmen */
     flex-shrink: 0; /* Figure nicht schrumpfen lassen */
     flex-grow: 0; /* Figure nicht wachsen lassen */
}


/* Sicherstellen, dass das Bild innerhalb der Figure richtig skaliert */
.image-row-block figure img,
.gallery-image-slide figure img {
    display: block; /* Wichtig */
    max-width: 100%; /* Bild nicht breiter als seine figure */
    height: auto; /* Höhe automatisch, um das Seitenverhältnis zu erhalten */
    /* Optional: Wenn die Höhe des Containers fest ist, setze: */
    /* height: 100%; */
    /* width: auto; */
    /* object-fit: contain; /* Bild in den Raum einpassen */
}


/* Stil für die Bildunterschrift (<figcaption>) bleibt wie vorher */
.image-row-block figcaption,
.gallery-image-slide figcaption {
    margin-top: 0.5em; /* Abstand zwischen Bild und Unterschrift */
    font-size: 0.9em; /* Kleinere Schriftgröße */
    color: var(--color-text-light); /* Hellere Textfarbe */
    text-align: center; /* Unterschrift zentrieren */
    padding: 0 0.5em; /* Kleiner horizontaler Abstand */
}

/* ======================================= */
/* ---- Tabellen Block (.table-block) ---- */
/* ======================================= */

.table-block {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
  padding: 0;
  overflow-x: auto; /* Erlaubt horizontales Scrollen bei breiten Tabellen */
}

/* Basis-Stile für ALLE Tabellen (Padding etc.) */
/* Diese Regel soll für alle Tabellen gelten, auch für verschachtelte */
.table-block table {
  width: 100%;
  border-collapse: collapse;
}

.table-block th,
.table-block td {
  padding: 0.8em;
  text-align: left;
  vertical-align: top;
}


/* --- MODIFIKATOREN (NUR FÜR DIREKTE KIND-TABELLEN!) --- */
/* Hier stellen wir mit dem ">" sicher, dass die Stile nicht durchsickern. */

/* Modifikator: Hintergrundfarbe */
.table-block.shaded > table {
    background-color: var(--color-background-tables);
}

/* Modifikator: Rahmenlinien */
.table-block.bordered > table {
  border: 1px solid #ddd;
}
/* Rahmen nur für Zellen (td) im Tabellenkörper (tbody) der direkten Kind-Tabelle */
.table-block.bordered > table > tbody > tr > td,
/* Rahmen auch für Zellen (th, td) im Tabellenkopf (thead) der direkten Kind-Tabelle */
.table-block.bordered > table > thead > tr > th,
.table-block.bordered > table > thead > tr > td {
  border: 1px solid #ddd;
}

/* Modifikator: Hervorhebung Tabellenkopf */
/* Der Selektor ist hier extra spezifisch, um alle Eventualitäten auszuschließen */
.table-block.header-highlight > table > thead > tr > th,
.table-block.header-highlight > table > thead > tr > td {
  background-color: rgba(0, 0, 0, 0.05);
  font-weight: bold;
}

/* Modifikator für die Kombination aus Rahmen und hervorgehobenem Header */
.table-block.bordered.header-highlight > table > thead > tr > th,
.table-block.bordered.header-highlight > table > thead > tr > td {
    border-bottom: 2px solid #bbb; /* Dickere Linie zur besseren Trennung */
}

/*=======================================*/
/* ---- Überschriften Block (.heading-block) ---- */
/*=======================================*/

.heading-block {
  margin-top: 2em; /* Etwas mehr Abstand nach oben für Überschriften */
  margin-bottom: 1em; /* Abstand nach unten zu folgendem Inhalt */
  /* Kein Hintergrund, kein Rahmen, kein Schatten */
  padding: 0; /* Kein zusätzliches Padding */
}

/*=======================================*/
/* ---- Stil für Kapitelüberschriften (innerhalb .heading-block) ---- */
/* (Verwendet h2 Tag) */
/*=======================================*/

.heading-block h2 {
  font-size: 2em; /* Größere Schriftgröße für Kapitel */
  font-weight: bold; /* Fettgedruckt */
  color: var(--color-text); /* Standard Textfarbe */
  margin-top: 0; /* Abstand wird vom .heading-block gesteuert */
  margin-bottom: 0; /* Abstand wird vom .heading-block gesteuert */
  line-height: 1.2; /* Etwas engerer Zeilenabstand */
  /* Optional: Eine Linie darunter */
  /* border-bottom: 2px solid #333; */
  /* padding-bottom: 0.3em; */
}

/*=======================================*/
/* ---- Stil für Zwischenüberschriften (innerhalb .heading-block) ---- */
/* (Verwendet h3 Tag) */
/*=======================================*/

.heading-block h3 {
  font-size: 1.5em; /* Kleinere Schriftgröße als Kapitel */
  font-weight: bold; /* Fettgedruckt */
  color: var(--color-text); /* Standard Textfarbe */
  margin-top: 0; /* Abstand wird vom .heading-block gesteuert */
  margin-bottom: 0; /* Abstand wird vom .heading-block gesteuert */
  line-height: 1.3; /* Etwas engerer Zeilenabstand */
  /* Optional: Eine subtilere Linie darunter */
  /* border-bottom: 1px solid #bbb; */
  /* padding-bottom: 0.2em; */
}

/* Stellen Sie sicher, dass keine Standard-Browser-Margins die Abstände überschreiben */
/* Die Margins am .heading-block sind für den Abstand zu anderen Blöcken */
/* Die Margins der h2/h3 innerhalb des Blocks sollten 0 sein, wie oben gesetzt */

/*=======================================*/
/* ---- Download Icon (Inline Element) ---- */
/*=======================================*/

.download-icon {
  display: inline-block; /* Wichtig, damit Größe und vertikale Ausrichtung funktionieren */
  height: 1.2em; /* Größe des Symbols, relativ zur aktuellen Schriftgröße (ca. 1.2 Zeilenhöhe) */
  width: auto; /* Breite automatisch anpassen, um das Seitenverhältnis zu erhalten */
  vertical-align: middle; /* Vertikal mit dem umgebenden Text zentrieren */
  margin-right: 0.3em; /* Kleiner Abstand zum Text rechts vom Symbol */
  /* Optional: Füge einen Rahmen oder Hintergrund hinzu, falls gewünscht */
  /* border: 1px solid #000; */
  /* padding: 2px; */
}

/* ======================================= */
/* ---- Interaktive Übung Block ---- */
/* ======================================= */

.interactive-exercise-block {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
  background-color: #f8f9fa; /* Heller Hintergrund, wie bei task-block */
  
  border: none;
  border-left-width: 5px;
  border-left-style: solid;
  
  border-radius: 6px;
  padding: 1.2em 1.5em;
  overflow: hidden;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); /* Leichter Schatten */
}

/* Header für den Titel der interaktiven Übung */
.interactive-exercise-block .interactive-header {
  margin-bottom: 1em;       /* Abstand zum iframe-Container */
  padding-bottom: 0.7em;    /* Platz unter der Überschrift */
  border-bottom: 1px solid #d5d5d5; /* Linie unter dem Header */
  overflow: hidden;
}

/* Styling für den Titel im Header */
.interactive-exercise-block .interactive-header .title {
  font-weight: bold;
  color: var(--color-text);
  font-size: 1.2em; /* Größe für den Titel */
}


/* Responsiver Container für das iframe */
.interactive-exercise-block .iframe-container {
    position: relative;
    /* Seitenverhältnis 4:3 -> (3 / 4 * 100) = 75% */
    /* Für 16:9 -> padding-bottom: 56.25%; */
    padding-bottom: 57%; 
    height: 0;
    overflow: hidden;
    margin-top: 1em; /* Kleiner Abstand vom Header */
    border-radius: 4px; /* Leichte Rundung für den iframe-Bereich */
    background-color: #e9ecef; /* Hintergrund, falls das iframe langsam lädt */
}

/* Das eigentliche iframe-Element */
.interactive-exercise-block .iframe-container iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: 0; /* Stellt sicher, dass kein Rahmen angezeigt wird */
}
/*Farbedefinitionen*/
.interactive-exercise-block.practical {
    border-left-color: var(--color-practical);
}
.interactive-exercise-block.theoretical {
    border-left-color: var(--color-theoretical);
}
.interactive-exercise-block.applied {
    border-left-color: var(--color-applied);
}
.interactive-exercise-block.technical {
    border-left-color: var(--color-technical);
}
.interactive-exercise-block.partner {
    border-left-color: var(--color-partner);
}
.interactive-exercise-block.lehrplan {
    border-left-color: var(--color-lehrplan);
}
/*Anpassungen für iFrames*/
/* === Responsive Iframe Container (z.B. für LearningApps) === */

/* === Responsive Iframe Container === */

/* 1. Der Container (der "Bilderrahmen") */
.iframe-wrapper {
    position: relative;
    overflow: hidden;
    width: 100%;
    padding-top: 75%; /* 4:3 Verhältnis */
}

.iframe-wrapper iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: 0;
}
