/* ============================================================
   tmsnateinfach – Marken-Override der Lernplattform (wird ZULETZT geladen)
   Gleiches Designsystem wie die Website (theme/lz/lz.css): Weiß und kühles
   Hellgrau, Navy für Text, Petrol als einziger Akzent, Hanken Grotesk.
   Untertests tragen ihre Farbe nur als Punkt oder Balken.
   Vollständig umkehrbar: brand.css-Link in metaEngine.php entfernen.
   ============================================================ */

:root{
  --paper:#ffffff; --tint:#f5f7fa; --ink:#0f1b33; --ink-2:#4a5568; --muted:#64708a; --line:#e3e8ef; --line-2:#d3dae4;
  --accent:#0f6b6b; --accent-2:#0b5656; --accent-soft:#e6f2f1;
  --c-nw:#3b6fd8; --c-mednat:#c2417a; --c-quanti:#2f9e5b; --c-fakten:#1c8fb3; --c-text:#d27a1f; --c-diagr:#7d58c9; --c-arith:#1a9c8e;
  --display:"Hanken Grotesk","Helvetica Neue",Arial,sans-serif;
  --body:"Hanken Grotesk","Helvetica Neue",Arial,sans-serif;
  --shadow:0 1px 2px rgba(15,27,51,.05), 0 6px 20px rgba(15,27,51,.06);

  /* Alte Namen aus dem Indigo-Schema zeigen jetzt auf Petrol, damit Seiten,
     die noch darauf verweisen, nicht aus der Reihe fallen. */
  --tms-indigo:#0f6b6b; --tms-indigo-mid:#2f8f8f; --tms-indigo-dark:#0b5656;
  --tms-indigo-faint:#e6f2f1; --tms-indigo-light:#cfe4e2; --tms-dark:#0f1b33;

  --bs-primary:#0f6b6b; --bs-primary-rgb:15,107,107;
  --bs-link-color:#0f6b6b; --bs-link-color-rgb:15,107,107;
  --bs-link-hover-color:#0b5656; --bs-link-hover-color-rgb:11,86,86;
}

/* ---- Dark Mode: Grundfarben auf die dunklen Entsprechungen legen ----
   Sehr viele Regeln benutzen --ink, --ink-2, --muted, --line, --paper und --tint ohne
   eigene Dark-Variante. Ohne dieses Mapping stand dort dunkler Text auf dunklem Grund,
   etwa die Seitentitel (Kontrast 1,07) oder fette Stellen in den Einstiegsboxen (1,03).
   Die dunklen Werte stehen in style.css als --d-*. --accent bleibt unangetastet: Die
   Variable ist zugleich Flaechenfarbe fuer Knoepfe mit weisser Schrift, ein hellerer
   Ton wuerde die dort verschlechtern. Der Light Mode aendert sich durch nichts davon. */
:root[data-theme="dark"]{
  --paper:var(--d-surf);
  --tint:var(--d-surf2);
  --ink:var(--d-tx);
  --ink-2:var(--d-tx2);
  --muted:#8e9aae;
  --line:var(--d-bd);
  --line-2:#38425a;
  --accent-soft:#1d3a3a;
  /* Markenfarbe als Textfarbe: aufgehellt, damit sie auf dunklem Grund lesbar bleibt.
     --accent selbst bleibt der dunkle Ton, es ist zugleich Flaechenfarbe. Im Light Mode
     ist --accent-tx nicht gesetzt, dort greift ueberall der bisherige Wert. */
  --accent-tx:#4fb3b3;
  --accent-tx2:#67c2c2;
  /* Warnrot als Textfarbe, aufgehellt fuer dunklen Grund. */
  --rot-tx:#e8846a;
}

body{ font-family:var(--body); color:var(--ink); }
h1,h2,.h1,.h2{ font-family:var(--display); letter-spacing:-.02em; font-weight:700; }
:root:not([data-theme="dark"]) body{ background-color:#fff; }

a{ color:var(--accent-tx,#0f6b6b); }
a:hover{ color:#0b5656; }

/* Bootstrap-Buttons: Petrol, ruhige Ecken statt Pillen */
.btn{ border-radius:10px; }
.btn-primary{
  --bs-btn-bg:#0f6b6b; --bs-btn-border-color:#0f6b6b;
  --bs-btn-hover-bg:#0b5656; --bs-btn-hover-border-color:#0b5656;
  --bs-btn-active-bg:#0b5656; --bs-btn-active-border-color:#0b5656;
  --bs-btn-disabled-bg:#0f6b6b; --bs-btn-disabled-border-color:#0f6b6b;
  box-shadow:none;
}
.btn-outline-primary{
  --bs-btn-color:#0f6b6b; --bs-btn-border-color:#0f6b6b;
  --bs-btn-hover-bg:#0f6b6b; --bs-btn-hover-border-color:#0f6b6b;
  --bs-btn-active-bg:#0b5656; --bs-btn-active-border-color:#0b5656;
}
.bg-primary{ background-color:#0f6b6b !important; }
.text-primary{ color:var(--accent-tx,#0f6b6b) !important; }
.border-primary{ border-color:#0f6b6b !important; }
.form-control:focus,.form-select:focus,.form-check-input:focus{
  border-color:#2f8f8f; box-shadow:0 0 0 .2rem rgba(15,107,107,.18);
}
.form-check-input:checked{ background-color:#0f6b6b; border-color:#0f6b6b; }
.badge.bg-primary{ background-color:#0f6b6b !important; }
.progress-bar{ background-color:#0f6b6b; }
.nav-pills .nav-link.active,.nav-pills .show>.nav-link{ background-color:#0f6b6b; }

/* ---- Kopfleiste: weiß mit feiner Linie wie die Navigation der Startseite (lz-nav) ---- */
:root{ --nav-color:#ffffff; }
:root:not([data-theme="dark"]) nav{ background:#fff !important; }
:root:not([data-theme="dark"]) .nav-wrapper{ background:rgba(255,255,255,.96) !important; border-bottom:1px solid var(--line) !important; box-shadow:none !important; backdrop-filter:blur(6px); }
:root:not([data-theme="dark"]) .menu{ color:var(--ink) !important; }
:root:not([data-theme="dark"]) .menu:hover{ background:var(--tint) !important; }
:root:not([data-theme="dark"]) .nav-wortmarke{ font-family:var(--display) !important; font-weight:700 !important; color:var(--ink) !important; letter-spacing:-.02em !important; }
:root:not([data-theme="dark"]) .nav-wortmarke b{ color:var(--accent-tx,var(--accent)); font-weight:700; }
:root:not([data-theme="dark"]) .search{ background:var(--tint) !important; border:1px solid var(--line) !important; }
:root:not([data-theme="dark"]) .search:hover{ background:#eef2f6 !important; }
:root:not([data-theme="dark"]) .search:focus-within{ background:#fff !important; border-color:var(--accent) !important; box-shadow:0 0 0 3px rgba(15,107,107,.14) !important; }
:root:not([data-theme="dark"]) .search svg{ color:var(--muted) !important; }
:root:not([data-theme="dark"]) .search input{ color:var(--ink) !important; }
:root:not([data-theme="dark"]) .search input::placeholder{ color:var(--muted) !important; }
:root:not([data-theme="dark"]) .search-hint{ color:var(--muted) !important; background:#fff !important; border:1px solid var(--line) !important; }
:root:not([data-theme="dark"]) .search-mobile-btn{ color:var(--ink) !important; }
:root:not([data-theme="dark"]) .news-bell{ color:var(--ink-2) !important; }
:root:not([data-theme="dark"]) .news-bell:hover{ background:var(--accent-soft) !important; color:var(--accent-tx,var(--accent)) !important; }
:root:not([data-theme="dark"]) .news-bell-badge{ box-shadow:0 0 0 2px #fff; }
:root:not([data-theme="dark"]) .nav-help{ display:inline-flex; align-items:center; gap:8px; color:var(--ink-2) !important; font-size:14px; font-weight:600; padding:8px 10px; border-radius:9px; text-decoration:none; background:none !important; box-shadow:none !important; }
:root:not([data-theme="dark"]) .nav-help:hover{ color:var(--accent-tx,var(--accent)) !important; background:var(--accent-soft) !important; }
:root:not([data-theme="dark"]) .nav-help svg{ width:18px; height:18px; }
:root:not([data-theme="dark"]) .user-menu-icon, :root:not([data-theme="dark"]) .user-menu-icon:focus, :root:not([data-theme="dark"]) .user-menu-icon:active{ background:var(--accent) !important; color:#fff !important; box-shadow:none !important; }
:root:not([data-theme="dark"]) .user-menu-icon:hover{ background:var(--accent-2) !important; transform:none !important; box-shadow:none !important; }
:root:not([data-theme="dark"]) .news-drawer-head h3{ font-family:var(--display); }
:root:not([data-theme="dark"]) .news-drawer-head h3 svg{ color:var(--accent-tx,var(--accent)); }
:root:not([data-theme="dark"]) .news-drawer-close:hover{ background:var(--accent-soft); border-color:#cfe4e2; color:var(--accent-tx,var(--accent)); }

/* Diese Regeln aus style.css färben Wortmarke, Hilfe-Text und Avatar für die Navy-Leiste; gleiche Selektoren, neue Farben. */
:root:not([data-theme="dark"]) .nav-left a span, :root:not([data-theme="dark"]) .nav-left a span.nav-wortmarke{ color:var(--ink) !important; }
:root:not([data-theme="dark"]) .nav-left a span.nav-wortmarke b{ color:var(--accent-tx,var(--accent)) !important; }
:root:not([data-theme="dark"]) .message-menu .hilfe-text, :root:not([data-theme="dark"]) .message-menu .nav-help svg{ color:inherit !important; }
:root:not([data-theme="dark"]) .user-menu-icon, :root:not([data-theme="dark"]) .user-menu-icon:hover, :root:not([data-theme="dark"]) .user-menu-icon:focus, :root:not([data-theme="dark"]) .user-menu-icon:active, :root:not([data-theme="dark"]) .user-menu-icon.show, :root:not([data-theme="dark"]) .user-menu-icon[aria-expanded="true"]{ background:var(--accent) !important; color:#fff !important; box-shadow:none !important; }
:root:not([data-theme="dark"]) .user-menu-icon:hover{ background:var(--accent-2) !important; }
/* Dasselbe im Dark Mode: Saemtliche Farbregeln des Avatars waren auf den Light Mode
   eingeschraenkt, im Dark setzte Bootstrap beim Klick und danach seine eigene
   Linkfarbe und der Buchstabe verlor sein Weiss. */
:root[data-theme="dark"] .user-menu-icon,
:root[data-theme="dark"] .user-menu-icon:hover,
:root[data-theme="dark"] .user-menu-icon:focus,
:root[data-theme="dark"] .user-menu-icon:focus-visible,
:root[data-theme="dark"] .user-menu-icon:active,
:root[data-theme="dark"] .user-menu-icon.show,
:root[data-theme="dark"] .user-menu-icon[aria-expanded="true"]{
  background:var(--accent) !important; color:#fff !important; box-shadow:none !important; }
:root[data-theme="dark"] .user-menu-icon:hover{ background:var(--accent-2) !important; }
:root:not([data-theme="dark"]) .user-dropdown .ud-avatar{ background:var(--accent) !important; }
.nav-left a{ display:inline-flex; align-items:center; gap:9px; text-decoration:none; }
.nav-left .lz-mark{ flex:none; display:block; }

/* Logo im Kopf exakt wie die Marke der Startseite (.lz-brand in theme/lz/lz.css):
   Schrift sitzt auf dem Link, die Bildmarke hängt mit 1.3em daran (26px zu 20px).
   Dadurch bleibt das Verhältnis von Marke zu Schrift auch dann gleich, wenn die
   Wortmarke auf schmalen Geräten kleiner wird.
   display:flex statt inline-flex: als Inline-Element saß der Link auf der Grundlinie des
   umgebenden <div>, dessen Zeilenbox dadurch 33px statt 26px hoch war. Die Unterlänge lag
   unter dem Logo und schob es im Kopf nach oben. Der Selektor nennt zusätzlich .nav-left a,
   sonst gewinnt diese Regel oben mit ihrer höheren Spezifität und setzt inline-flex zurück. */
.nav-left a.nav-brand, .nav-brand{ display:flex; align-items:center; gap:.45em; font:700 20px/1 var(--display); letter-spacing:-.02em; text-decoration:none; color:var(--ink); white-space:nowrap; }
.nav-left a.nav-brand .lz-mark, .nav-brand .lz-mark{ width:1.3em; height:1.3em; flex:none; display:block; }
.nav-brand .nav-wortmarke{ font:inherit; letter-spacing:inherit; display:block; }

/* ---- Ausklappbare Modul-Liste unter "Naturwiss. Kenntnisse" ----
   Der Pfeil klappt nur auf, der Eintrag selbst öffnet weiter die Nat-Übersicht.
   In der eingeklappten Leiste ist beides verborgen, beim Darüberfahren wieder da. */
.sidebar-item.sb-has-sub{ position:relative; }
.sb-sub-toggle{ position:absolute; right:10px; top:50%; transform:translateY(-50%); z-index:3;
  width:26px; height:26px; display:inline-flex; align-items:center; justify-content:center;
  border:0; border-radius:7px; background:transparent; color:var(--muted); font-size:11px; cursor:pointer;
  transition:background .12s, color .12s; }
.sb-sub-toggle:hover{ background:var(--accent-soft); color:var(--accent-tx,var(--accent)); }
.sb-sub-toggle i{ transition:transform .15s; }
.sb-sub-toggle.open i{ transform:rotate(180deg); }
/* Die Liste unter einem Untertest wird eingerückt und bekommt eine feine Linie links,
   damit sichtbar bleibt, dass sie zu dem Eintrag darüber gehört. */
.sb-sub{ display:none; padding:2px 0 6px; margin-left:34px; border-left:1px solid var(--line); }
.sb-sub.open{ display:block; }
.sb-sub-group{ font:600 10.5px/1 var(--body); letter-spacing:.08em; text-transform:uppercase;
  color:var(--muted); padding:12px 22px 6px 14px; }
.sb-sub-item{ display:flex; align-items:center; gap:10px; width:100%; text-align:left; border:0; background:none; cursor:pointer;
  font:500 13.5px/1.35 var(--body); color:var(--ink-2); padding:6px 18px 6px 14px; }
.sb-sub-item:hover{ background:var(--accent-soft); color:var(--accent-tx,var(--accent)); }
/* Die Modulleiste wird beim Öffnen eines Moduls neu aufgebaut. Ein kurzes Einblenden
   nimmt dem Wechsel die Härte, ohne ihn spürbar zu verzögern. */
#navigation_s .module{ animation:htmModulEin .16s ease-out both; }
@keyframes htmModulEin{ from{ opacity:0; transform:translateY(4px); } to{ opacity:1; transform:none; } }
@media (prefers-reduced-motion:reduce){ #navigation_s .module{ animation:none; } }
/* Das Modul, in dem man gerade ist, bleibt im Hauptmenü markiert. */
.sb-sub-item.ist-hier{ background:var(--accent-soft); color:var(--accent-tx,var(--accent)); font-weight:600; }
:root[data-theme="dark"] .sb-sub-item.ist-hier{ background:var(--d-surf2); color:#9fe3db; }
.sb-sub-item.is-locked{ color:var(--muted); }
/* Kachel wie bei den Modulen in der Modul-Ansicht, nur kleiner */
.sb-sub-ic{ flex:none; width:24px; height:24px; border-radius:7px; display:inline-flex; align-items:center; justify-content:center;
  font-size:11px; position:relative; color:var(--c,var(--muted)); background:color-mix(in srgb, var(--c,var(--muted)) 12%, #fff); }
.sb-sub-ic i, .sb-sub-ic svg{ position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
  color:inherit; line-height:1; vertical-align:0 !important; }
.sb-sub-item:hover .sb-sub-ic{ background:color-mix(in srgb, var(--c,var(--muted)) 20%, #fff); }
:root[data-theme="dark"] .sb-sub-ic{ background:color-mix(in srgb, var(--c,var(--muted)) 22%, var(--d-surf)); }
#navigation_p.close:not(:hover) .sb-sub, #navigation_p.close:not(:hover) .sb-sub-toggle{ display:none; }
:root[data-theme="dark"] .sb-sub{ border-left-color:var(--d-bd); }
:root[data-theme="dark"] .sb-sub-item{ color:var(--d-tx2); }
:root[data-theme="dark"] .sb-sub-item:hover{ background:var(--d-surf2); color:#9fe3db; }
:root[data-theme="dark"] .sb-sub-toggle{ color:var(--d-tx2); }
:root[data-theme="dark"] .sb-sub-toggle:hover{ background:var(--d-surf2); color:#9fe3db; }

/* ---- Seitenleiste: Gruppen, neutrale Symbole, Petrol nur im aktiven Zustand ---- */
.sidebar-group{ font:600 11.5px/1 var(--body); letter-spacing:.08em; text-transform:uppercase; color:var(--muted); padding:18px 22px 6px; }
.sidebar-group:first-child{ padding-top:12px; }
.sidebar .sidebar-button, .sidebar .accordion-button{ font-family:var(--body); font-size:15px; color:var(--ink-2); }
#navigation_p .sidebar-item .tt-ic{ color:var(--muted) !important; font-size:15px; }
.sidebar .sidebar-item{ border-radius:9px !important; }
.sidebar .sidebar-item:hover{ background:var(--tint); border-color:transparent !important; }
.sidebar .sidebar-item:hover .tt-ic{ color:var(--ink) !important; }
.sidebar .sidebar-item.active{ background:var(--accent-soft); border-color:transparent !important; }
.sidebar .sidebar-item.active .sidebar-button{ color:var(--accent-tx,var(--accent)); font-weight:600; }
.sidebar .sidebar-item.active .tt-ic{ color:var(--accent-tx,var(--accent)) !important; }
.sidebar .active:before{ background:var(--accent) !important; border-radius:0 3px 3px 0; }
.sidebar .sidebar-item:first-child{ border-top-color:transparent !important; }
.sidebar .sidebar-item.sidebar-vz{ background:var(--accent); }
.sidebar .sidebar-item.sidebar-vz .sidebar-button, .sidebar .sidebar-item.sidebar-vz .tt-ic{ color:#fff !important; font-weight:600; }
.sidebar .sidebar-item.sidebar-vz:hover{ background:var(--accent-2); }
/* In der schmalen Symbolleiste haben die Gruppennamen keinen Platz. */
body:has(#navigation_s.opened) #navigation_p:not(:hover):not(.clickable) .sidebar-group{ height:1px !important; padding:0 !important; margin:10px 14px !important; width:32px; overflow:hidden; background:var(--line); color:transparent; font-size:0 !important; }

:root[data-theme="dark"] .sidebar-group{ color:var(--d-mut); }
:root[data-theme="dark"] .sidebar .sidebar-item.active{ background:rgba(15,107,107,.22); }
:root[data-theme="dark"] .sidebar .sidebar-item.active .sidebar-button, :root[data-theme="dark"] .sidebar .sidebar-item.active .tt-ic{ color:#9fe3db !important; }
:root[data-theme="dark"] .nav-help{ color:var(--d-tx2) !important; }
:root[data-theme="dark"] .nav-help:hover{ background:var(--d-surf2); color:#9fe3db !important; }
:root[data-theme="dark"] .nav-wortmarke{ color:var(--d-tx) !important; }
:root[data-theme="dark"] .nav-wortmarke b{ color:#9fe3db; }
:root[data-theme="dark"] nav, :root[data-theme="dark"] .nav-wrapper{ background:var(--d-surf) !important; border-bottom-color:var(--d-bd) !important; }
:root[data-theme="dark"] .menu, :root[data-theme="dark"] .news-bell, :root[data-theme="dark"] .search-mobile-btn{ color:var(--d-tx2) !important; }
:root[data-theme="dark"] .search{ background:var(--d-surf2) !important; border-color:var(--d-bd) !important; }
:root[data-theme="dark"] .search input{ color:var(--d-tx) !important; }
:root[data-theme="dark"] .search-hint{ background:var(--d-surf) !important; border-color:var(--d-bd) !important; }

/* ---- Nur noch ein Scrollbereich ----
   Vorher gab es zwei: Die Kopfleiste steht im Fluss (nav ist position:relative), und
   JS setzte .layer zusätzlich auf calc(100dvh - 65px). Zusammen war die Seite höher
   als der Bildschirm, der äußere Scrollbalken lief also ins Leere unter dem Inhalt.
   Jetzt ist #contentPage eine Spalte über die volle Fensterhöhe: Die Kopfleiste behält
   ihre Höhe, .layer bekommt den Rest und scrollt als einziger Bereich. Das height:auto
   hebt die Zuweisung aus dem JavaScript auf, die Seite selbst scrollt nicht mehr. */
html, body{ height:100%; }
body{ overflow:hidden; background-color:#F9F9F9; }
html{ background-color:#F9F9F9; }
:root[data-theme="dark"] html, :root[data-theme="dark"] body{ background-color:var(--d-bg); }
#contentPage{ flex-direction:column; height:100vh; height:100dvh; }
#contentPage > nav{ flex:0 0 auto; }
/* Höhe doppelt abgesichert: Unter der Flex-Spalte oben dient sie nur als Ausgangswert,
   ohne Flex (alte Browser, anderer Codepfad) hält sie den Bereich trotzdem auf Fensterhöhe.
   Das !important hebt die Zuweisung aus dem JavaScript auf, die in Safari als ungültiges
   "calc()" ankam und damit gar nicht griff. 67px ist die Höhe der Kopfleiste. */
.layer{ flex:1 1 auto; min-height:0; overflow-y:auto; overscroll-behavior-y:contain;
        height:calc(100vh - 67px) !important; height:calc(100dvh - 67px) !important; }
#panel, .quick-view, .sidebar, .structure-body{ overscroll-behavior:contain; }

/* ---- Der weiße Streifen unter dem Kapitel ----
   .panel rechnete mit calc(100dvh - 116px): 65px Kopfleiste plus 51px für die feste
   Leiste am Fensterboden, die es nicht mehr gibt. Dazu kamen die Abstände von .w-900
   (2em oben, 2em unten, 60px padding-bottom) und die 5px des Fortschrittsbalkens.
   In Summe war der Inhalt rund 80px höher als .layer, also der zweite Scrollbalken,
   und unter dem abgeschnittenen Panel blieb Weiß stehen.
   Statt fester Zahlen füllt .panel jetzt genau den Rest der Spalte. Gescrollt wird
   weiterhin im Panel, damit "Kapitel gelesen" und das Zurückspringen nach oben beim
   Abschnittswechsel weiter funktionieren. */
.layer:has(> #content > .panel){ display:flex; flex-direction:column; }
.layer:has(> #content > .panel) > #content{
  flex:1 1 auto; min-height:0; display:flex; flex-direction:column;
  margin-top:0; margin-bottom:0; padding-bottom:0;
}
.layer > #content > .panel{ flex:1 1 auto; min-height:0; height:auto !important; }

/* ---- Meldungen (Login und "Vollzugang freigeschaltet", beide .login-toast) ----
   Oben mittig, direkt unter der Kopfleiste. Diese Regel stand vorher auf unten links
   und hat damit die v4-Regel aus style.css überschrieben, weil brand.css zuletzt lädt. */
.login-toast{ top:76px; bottom:auto; left:50%; right:auto; transform:translate(-50%,-18px); border-left-color:var(--accent); }
.login-toast.show{ transform:translate(-50%,0); }
.login-toast.hide{ transform:translate(-50%,-12px) !important; }
/* Erscheinen beide gleichzeitig, rutscht die zweite darunter statt übereinander */
.login-toast ~ .login-toast{ top:146px; }
@media (max-width:560px){
  .login-toast{ top:72px; width:calc(100vw - 24px); max-width:420px; }
  .login-toast ~ .login-toast{ top:140px; }
}

/* ---- Logo-Wortmarke einheitlich dimensionieren ---- */
img[src*="logo.png"]{ height:34px !important; width:auto !important; max-width:100% !important; }
:root[data-theme="dark"] img[src*="logo.png"]{ filter:brightness(0) invert(1); }

/* ---- Seitenleiste kompakt: 13 Punkte ohne Scrollen auf einem Notebook ---- */
.sidebar{ overflow-y:auto !important; padding:2px 0 4px !important; }
#navigation_p .sidebar-item{ margin:2px 10px !important; border-radius:10px !important; min-height:0 !important; }
#navigation_p .sidebar-button, #navigation_p .accordion-button{ display:flex !important; align-items:center !important; height:48px !important; min-height:0 !important; padding:0 14px 0 50px !important; font-size:16.5px !important; line-height:1.2 !important; }
/* Auf kleinen Bildschirmen (Notebook 768px) noch etwas enger */
@media (max-height:820px){ #navigation_p .sidebar-button, #navigation_p .accordion-button{ height:32px !important; font-size:14.5px !important; } .sidebar-group{ padding:8px 24px 2px !important; } }
#navigation_p .sidebar-item .tt-ic{ left:15px !important; font-size:17px !important; width:20px; text-align:center; }
.sidebar-group{ padding:22px 26px 8px !important; font-size:12px !important; line-height:1 !important; }
.sidebar-group:first-child{ padding-top:10px !important; }
.sidebar .wrapper{ min-height:0 !important; }

/* ---- Eine Schrift für die ganze App: Hanken Grotesk. Formeln (KaTeX), Symbole und Code bleiben unberührt. ---- */
body, .sidebar-button, button, input, select, textarea, .btn, .form-control, .dropdown-menu{ font-family:var(--body) !important; }
#content *:not(i):not([class*="fa-"]):not(.katex):not(.katex *):not(code):not(pre):not(kbd):not(svg):not(svg *),
#panel *:not(i):not([class*="fa-"]):not(.katex):not(.katex *):not(code):not(pre):not(kbd):not(svg):not(svg *),
.news-drawer *:not(i):not([class*="fa-"]):not(svg):not(svg *),
.user-dropdown *:not(i):not([class*="fa-"]):not(svg):not(svg *){ font-family:var(--body) !important; }
h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4{ font-family:var(--display) !important; letter-spacing:-.015em; }

/* ---- Desktop: Leiste 320px statt 360px, Menü-Symbol nur auf dem Handy ----
   In Kapiteln überdeckt die Modulleiste (#navigation_s, 300px ab x=60) die Hauptleiste
   bis auf einen 60px-Streifen; dann bleibt der Inhaltsversatz bei 360px. */
/* Vorab-Zustand aus metaEngine.php: gilt nur, bis autoSidebar() die echten Klassen
   gesetzt hat. Ohne Übergang, damit beim Laden nichts auf- und wieder zuklappt. */
html.htm-sb-zu #navigation_p, html.htm-sb-zu #navigation_s,
html.htm-sb-zu .layer, html.htm-sb-zu .sb-expand{ transition:none !important; }
@media (min-width:1001px){
  html.htm-sb-zu #navigation_p{ transform:translateX(-320px); }
  html.htm-sb-zu .layer.resize{ margin-left:0 !important; }
}

@media (min-width:1001px){
  #navigation_p{ width:320px !important; }
  #navigation_p.close{ transform:translateX(-320px); }
  .layer.resize{ margin-left:320px !important; }
  #navigation_p .sidebar-button{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  /* In Modulen und Kapiteln ersetzt die Modulleiste die Hauptleiste komplett (keine
     Symbolspalte daneben): sie rückt an den linken Rand und nimmt dieselben 320px ein.
     Zurück ins Hauptmenü geht es über den Knopf links in der Kopfleiste, der setzt
     body.htm-hauptmenue und hebt diese Regeln für den Moment auf. */
  body:has(#navigation_s.opened):not(.htm-hauptmenue) #navigation_p{ display:none !important; }
  body:has(#navigation_s.opened):not(.htm-hauptmenue) #navigation_s{ left:0 !important; width:320px !important; border-left:0 !important; }
  body:has(#navigation_s.opened) .layer.resize{ margin-left:320px !important; }
  /* Hauptmenü vorübergehend eingeblendet: Die Kapitelleiste tritt solange zurück. Mehr
     braucht es nicht, htmMenueUmschalten() nimmt #navigation_s die Klasse .opened ab,
     womit die Regeln für die schmale Symbolspalte von selbst nicht mehr greifen. */
  body.htm-hauptmenue #navigation_s{ display:none !important; }
  .nav-button.fixed{ width:320px !important; }
  /* Einklappen per Menü-Symbol (toggleSidebar(true) in nav.php): Leiste fährt nach
     links heraus, der Inhalt rückt nach. Gilt für Haupt- und Modulleiste. */
  body:has(#navigation_s.opened) #navigation_s.close{ transform:translateX(-320px); }
  body:has(#navigation_s.opened) #navigation_s{ transition:transform .2s cubic-bezier(.36,-0.01,0,.77); }
  /* Der Knopf links in der Kopfleiste blendet auf dem Desktop das Hauptmenü ein und aus.
     In Kapiteln liegt sonst nur die Kapitelleiste da und es gibt keinen Weg zurück ins
     Menü. Das Ein- und Ausklappen der Leiste selbst macht weiterhin .sb-toggle. */
  .menu{ display:inline-flex !important; align-items:center; justify-content:center; }
  body:has(#navigation_p.close):not(:has(#navigation_s.opened)) .sb-expand,
  body:has(#navigation_s.opened.close) .sb-expand{ display:inline-flex; }
  .nav-left{ padding-left:14px !important; }
}

/* ---- Seitenleiste in Mint: Gruppen und Symbole in Petrol, aktiver Punkt auf Mint-Fläche ---- */
.sidebar-group{ color:var(--accent-tx,var(--accent)) !important; }
#navigation_p .sidebar-item .tt-ic{ color:var(--accent-tx,var(--accent)) !important; opacity:.85; }
.sidebar .sidebar-item:hover{ background:#f0f7f6; }
.sidebar .sidebar-item:hover .tt-ic{ color:var(--accent-tx,var(--accent)) !important; opacity:1; }
.sidebar .sidebar-item.active .tt-ic{ opacity:1; }
/* style.css setzt Grau (#f1f3f5) bzw. Hellblau (#e6f2f1) mit !important; hier gleichziehen. */
#navigation_p .sidebar-item.active, #navigation_p .sidebar-item.active:not(.sidebar-primary), #navigation_p .sidebar-item.sidebar-primary.active{ background-color:var(--accent-soft) !important; }
#navigation_p .sidebar-item.active .sidebar-button, #navigation_p .sidebar-item.active:not(.sidebar-primary) .sidebar-button, #navigation_p .sidebar-item.active .accordion-button{ color:var(--accent-tx,var(--accent)) !important; }
#navigation_p{ background:#fafcfc !important; border-right-color:var(--line) !important; }
:root[data-theme="dark"] .sidebar-group{ color:#9fe3db !important; }
:root[data-theme="dark"] #navigation_p .sidebar-item .tt-ic{ color:#9fe3db !important; }
:root[data-theme="dark"] .sidebar .sidebar-item:hover{ background:var(--d-surf2); }
:root[data-theme="dark"] #navigation_p{ background:var(--d-surf) !important; }

/* ---- Modulleiste (#navigation_s) und Kapitelliste: gleiche Sprache wie die Hauptleiste ---- */
#navigation_s .sidebar-item{ margin:2px 10px !important; border-radius:9px !important; }
#navigation_s .sidebar-item.p-4{ padding:9px 12px !important; }
#navigation_s .sidebar-item:hover{ background:var(--tint) !important; }
#navigation_s .sidebar-item.active{ background:var(--accent-soft) !important; }
#navigation_s .sidebar-item.active .card-title{ color:var(--accent-tx,var(--accent)) !important; }
#navigation_s .sidebar-item.active .card-text{ color:var(--accent-tx,var(--accent)) !important; opacity:.8; }
.modul-side-row{ gap:12px !important; }
.modul-side-icon{ width:32px !important; height:32px !important; font-size:13px !important; color:var(--fc,var(--muted)) !important; background:color-mix(in srgb, var(--fc,var(--muted)) 12%, #fff) !important; }
.sidebar-item.disabled .modul-side-icon{ --fc:var(--muted); opacity:.6; }
.modul-side-text .card-title{ font:600 14.5px/1.3 var(--body) !important; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.modul-side-text .card-text{ font-size:12.5px !important; color:var(--muted); margin-top:1px !important; }
#navigation_s .sidebar-item.disabled .card-title{ color:var(--muted); }
:root[data-theme="dark"] .modul-side-icon{ background:color-mix(in srgb, var(--fc,var(--muted)) 22%, var(--d-surf)) !important; }
:root[data-theme="dark"] #navigation_s .sidebar-item.active{ background:rgba(15,107,107,.22) !important; }
:root[data-theme="dark"] #navigation_s .sidebar-item.active .card-title, :root[data-theme="dark"] #navigation_s .sidebar-item.active .card-text{ color:#9fe3db !important; }
:root[data-theme="dark"] .modul-side-text .card-title{ color:var(--d-tx); }

/* Kapitelliste in der Modulleiste */
.structure-body .structure-item:hover{ background:var(--tint) !important; }
.structure-body .active{ background:var(--accent-soft) !important; }
.active .structure-icon{ background:var(--accent) !important; border-color:var(--accent) !important; }
.active .structure-icon svg{ color:#fff !important; }

/* Untere Leiste (Zurück, voriges/nächstes Modul) */
.nav-button{ font-family:var(--body) !important; font-weight:600 !important; font-size:13px !important; letter-spacing:.04em; color:var(--ink-2) !important; }
.nav-button:hover:not(:disabled){ background:var(--tint) !important; color:var(--ink) !important; }
.nav-button.fixed{ border-right-color:var(--line) !important; }
.flex-grow-group .nav-button:nth-child(2){ border-left-color:var(--line) !important; }
.mark-button, .nav-button.primary:not(:disabled){ background:var(--accent) !important; color:#fff !important; }
.mark-button:hover, .nav-button.primary:not(:disabled):hover{ background:var(--accent-2) !important; color:#fff !important; }

/* ============================================================
   Kapitel-Ansicht (29.10.2026): Kapitelliste links + Lesetext rechts
   im lz-Stil. Blau/Grün/Schwarz aus style.css → Navy, Petrol, Hellgrau.
   ============================================================ */

/* ---- Kopf der Kapitelliste ---- */
/* Kopf der Kapitelleiste: Untertest klein und grau, darunter der Weg zurück, darunter das
   Modul als eigentlicher Anker. Vorher war der Zurück-Link das Auffälligste im Block. */
.structure-header{ background:#fff !important; color:var(--muted) !important; padding:14px 20px 12px !important; border-bottom:1px solid var(--line) !important; }
.structure-header .header-text{ font-size:13.5px !important; font-weight:600; color:var(--ink) !important; line-height:1.35; }
.structure-header .header-icon-small{ width:26px !important; height:26px !important; padding:0 !important; font-size:12px !important; }
.structure-item.mint-host{ padding:16px 20px 18px !important; border-bottom:1px solid var(--line) !important; }
/* Testteile: Zurueck-Knopf und Kapiteltitel bilden einen Block. Im Nat-Teil trennt eine
   Linie den Kopf mit der Modulzeile vom Kapitel darunter; hier gibt es keine Modulzeile,
   die Linie zerschnitte den Block ohne Grund. */
.structure-header.ist-testteil{ border-bottom:0 !important; }
.structure-header .tt-guide-text{ font-size:13.5px; font-weight:600; color:var(--ink); line-height:1.35; }
:root[data-theme="dark"] .structure-header .tt-guide-text{ color:var(--d-tx); }
/* Abstaende wie im Nat-Teil, nur ohne die Trennlinie: Der Kopf behaelt seinen unteren
   Innenabstand, der Kapitelblock seinen oberen. Ohne das sassen Guide-Zeile und
   Kapitelnummer fast aufeinander. */
.structure-item.mint-host.ist-testteil{ padding-top:16px !important; }
.structure-item.mint-host .text-secondary{ font-size:12px !important; font-weight:600 !important; letter-spacing:.04em; text-transform:uppercase; color:var(--muted) !important; }
.structure-item.mint-host h4{ font:700 18px/1.25 var(--display) !important; color:var(--ink) !important; letter-spacing:-.01em; }
.mint-label{ color:var(--accent-tx,var(--accent)) !important; font-weight:700 !important; }
.mint-dot{ background:#cfe4e2 !important; }
.mint-dot.on{ background:var(--accent) !important; }
.mint-info{ background:var(--accent) !important; }

/* ---- Zeilen der Kapitelliste ---- */
.structure-body .structure-item.tablink{
  padding:12px 18px 12px 20px !important; min-height:54px;
  border-bottom:1px solid var(--line) !important; border-left:none !important;
  color:var(--ink) !important; background:#fff;
}
.structure-body .structure-item.tablink:hover{ background:var(--tint) !important; }
.structure-body .structure-item.tablink.active, .structure-body .structure-item.tablink.active:hover{ background:var(--accent-soft) !important; border-bottom-color:var(--line) !important; box-shadow:none !important; }
.structure-body .structure-item:has(+ .active){ border-bottom-color:var(--line) !important; }
.structure-body .tablink .structure-text{ margin-left:44px !important; font:500 15px/1.35 var(--body) !important; color:var(--ink) !important; }
.structure-body .active .structure-text{ color:var(--accent-tx,var(--accent)) !important; font-weight:600 !important; }
.structure-body .tablink .structure-icon{
  left:18px !important; width:32px !important; height:32px !important;
  border:1px solid var(--line-2) !important; background:#fff !important; color:var(--muted) !important; font-size:13px;
}
.structure-body .tablink .structure-icon svg, .structure-body .tablink .structure-icon i{ color:var(--muted) !important; }
.structure-body .active .structure-icon{ background:var(--accent) !important; border-color:var(--accent) !important; }
.structure-body .active .structure-icon svg, .structure-body .active .structure-icon i{ color:#fff !important; }

/* Zusammenfassung: gleiche Sprache, kein eigenes Grün */
.tablink.tablink-summary, .structure-body .tablink-summary:hover{ background:#fff !important; }
.structure-body .tablink-summary.active{ background:var(--accent-soft) !important; }
.tablink.tablink-summary .structure-icon{ border-color:var(--line-2) !important; background:#fff !important; }
.tablink.tablink-summary .structure-icon svg, .tablink.tablink-summary .structure-icon i{ color:var(--accent-tx,var(--accent)) !important; }
.tablink.tablink-summary .structure-text{ color:var(--ink) !important; font-weight:600 !important; }

/* Erledigt-Kreis: dünn, erledigt = Petrol */
.structure-body .checkmark{ width:22px !important; height:22px !important; border:1.5px solid var(--line-2) !important; font-size:11px !important; }
.structure-body .checkbox-wrapper input:checked + .checkmark{ background:var(--accent) !important; border-color:var(--accent) !important; transform:none !important; }
.structure-body .checkbox-wrapper{ margin-left:8px !important; }

/* Schnellübersicht unten */
.quick-view{ background:#fff !important; border-top:1px solid var(--line) !important; }
/* Schnellübersicht füllt die Seitenleiste: die alten Werte (left:-60px, bottom:45px, 358px breit) stammten
   vom Layout mit Icon-Leiste und unterer Knopfleiste – im neuen Layout ragte sie links aus der Leiste heraus
   und ließ unten einen Streifen frei (30.10.2026). */
.quick-view{ left:0 !important; width:100% !important; bottom:0 !important; height:auto !important; max-height:46% !important; }
.quick-view .list-group-item{ background:#fff !important; color:var(--ink-2) !important; font-size:14px; padding:9px 18px 9px 48px !important; border-color:var(--line) !important; }
.quick-view .list-group-item i{ left:20px !important; color:var(--muted); }
.quick-view .list-group-item:hover{ background:var(--tint) !important; }
.quick-view .list-group-item.active{ background:var(--accent-soft) !important; color:var(--accent-tx,var(--accent)) !important; font-weight:600; }
.quick-view .list-group-item.active i{ color:var(--accent-tx,var(--accent)); }

/* ---- Werkzeugleiste und Fortschritt über dem Text ---- */
#chapterProgress{ background:var(--line) !important; }
#chapterProgressBar{ background:var(--accent) !important; }
#kapitelTools, #checkupTools{ border-bottom-color:var(--line) !important; box-shadow:none !important; }
/* Auch die nicht gesetzten Werkzeuge bekommen einen dezenten grauen Kreis. Vorher standen
   sie ohne Fläche da, neben den petrolfarbenen Kreisen der aktiven wirkte die Leiste dadurch
   ungleich. Der Kreis ist nur eine Spur dunkler als das Papier, der aktive Zustand bleibt
   also klar der kräftigere. */
#kapitelTools .kt-btn, #checkupTools .kt-btn{ background:var(--tint) !important; color:var(--muted) !important; }
#kapitelTools .kt-btn:hover, #checkupTools .kt-btn:hover{ background:var(--line) !important; color:var(--ink) !important; }
#kapitelTools .kt-btn.active:not(.kt-pf-btn), #checkupTools .kt-btn.active{ background:var(--accent-soft) !important; color:var(--accent-tx,var(--accent)) !important; }
#checkupTools .ct-timer{ color:var(--ink) !important; }

/* ---- Lesetext ---- */
#panel .tabcontent{
  max-width:720px; margin:36px auto 56px !important; padding:0 4px;
  font-size:17px; line-height:1.65; color:var(--ink);
  -webkit-font-smoothing:antialiased;
}
#panel .tabcontent h1, #panel .tabcontent h2{ font:700 26px/1.2 var(--display) !important; letter-spacing:-.02em; color:var(--ink); margin:0 0 .7em; padding-top:.15em; }
#panel .tabcontent h3{ font:700 20px/1.3 var(--display) !important; color:var(--ink); margin:1.6em 0 .5em; }
#panel .tabcontent h4, #panel .tabcontent h5{ font:600 17px/1.4 var(--display) !important; color:var(--ink); margin:1.4em 0 .4em; }
#panel .tabcontent p{ margin:0 0 1.05em; }
#panel .tabcontent ul, #panel .tabcontent ol{ margin:0 0 1.2em; padding-left:1.35em; }
#panel .tabcontent li{ margin:.3em 0; padding-left:.2em; }
#panel .tabcontent li::marker{ color:var(--accent-tx,var(--accent)); font-weight:700; }
#panel .tabcontent strong, #panel .tabcontent b{ font-weight:700; color:var(--ink); }
#panel .tabcontent a{ color:var(--accent-tx,var(--accent)); text-decoration:underline; text-underline-offset:2px; }
#panel .tabcontent hr{ border:0; border-top:1px solid var(--line); margin:2em 0; }
#panel .tabcontent blockquote{ margin:1.4em 0; padding:14px 18px; border-left:3px solid var(--accent); background:var(--tint); border-radius:0 10px 10px 0; }

/* Bilder: eigene Fläche statt verloren im Fließtext; Vollbild-Knopf sitzt auf der Fläche, nicht auf dem Bild */
#panel .tabcontent img{ max-width:100%; height:auto; }
/* Der Kasten sitzt am Wrapper selbst (nicht am <p>), weil in den Inhalten nach dem Bild
   meist </br><br /> und Text im selben Absatz folgen – ein :only-child-Test griff dort nie. */
#panel .tabcontent .img-zoom-wrap{
  position:relative; display:flex; justify-content:center; align-items:center; width:100%; max-width:100%;
  margin:1.5em 0; padding:28px 24px; background:var(--tint); border:1px solid var(--line); border-radius:12px; line-height:0;
}
#panel .tabcontent .img-zoom-wrap + br, #panel .tabcontent .img-zoom-wrap + br + br{ display:none; }
#panel .tabcontent .img-zoom-wrap .img-zoom-btn{
  top:auto; bottom:10px; right:10px; width:30px; height:30px; border-radius:8px;
  background:#fff; color:var(--ink-2); border:1px solid var(--line-2); backdrop-filter:none;
}
#panel .tabcontent .img-zoom-wrap .img-zoom-btn:hover{ background:#fff; color:var(--accent-tx,var(--accent)); border-color:var(--accent); }

/* Tabellen */
#panel .tabcontent .table-scroll{ margin:1.5em 0; }
#panel .tabcontent table{ border:1px solid var(--line) !important; border-radius:10px !important; overflow:hidden; font-size:calc(15.5px * var(--font-scale, 1)); margin:0 !important; }
#panel .tabcontent th, #panel .tabcontent td{ padding:9px 14px !important; border:0 !important; border-bottom:1px solid var(--line) !important; vertical-align:top; }
#panel .tabcontent thead, #panel .tabcontent table th{ background:var(--tint) !important; color:var(--ink-2); font-weight:600 !important; }
#panel .tabcontent tr:last-child td{ border-bottom:0 !important; }

/* Formeln etwas größer als der Text */
#panel .tabcontent .katex{ font-size:1.08em; }
#panel .tabcontent .katex-display{ margin:1.2em 0; }

/* Dunkelmodus: Farben, die oben fest gesetzt wurden, wieder freigeben */
:root[data-theme="dark"] #panel .tabcontent, :root[data-theme="dark"] #panel .tabcontent h1, :root[data-theme="dark"] #panel .tabcontent h2,
:root[data-theme="dark"] #panel .tabcontent h3, :root[data-theme="dark"] #panel .tabcontent strong{ color:var(--d-tx); }
:root[data-theme="dark"] #panel .tabcontent .img-zoom-wrap, :root[data-theme="dark"] #panel .tabcontent blockquote{ background:var(--d-surf2); border-color:var(--d-bd); }
:root[data-theme="dark"] .structure-body .structure-item.tablink, :root[data-theme="dark"] .tablink.tablink-summary{ background:var(--d-bg) !important; color:var(--d-tx) !important; border-bottom-color:var(--d-bd) !important; }
:root[data-theme="dark"] .structure-body .tablink .structure-text{ color:var(--d-tx) !important; }
:root[data-theme="dark"] .structure-body .structure-item.tablink.active{ background:rgba(15,107,107,.22) !important; }
/* Hover im Dark Mode: Die Regel fuer den Grundzustand darueber ist spezifischer als die
   allgemeine Hover-Regel und hat sie ueberschrieben, die Zeilen reagierten nicht. */
:root[data-theme="dark"] .structure-body .structure-item.tablink:hover{ background:var(--d-surf2) !important; }
:root[data-theme="dark"] .structure-body .structure-item.tablink.active:hover{ background:rgba(15,107,107,.3) !important; }
:root[data-theme="dark"] .structure-body .active .structure-text{ color:#9fe3db !important; }
/* Dunkelmodus: Die Zeilen der Kapitel- und Check-up-Leiste stehen auf --d-bg, der
   Container darunter aber auf --d-surf. Unter dem letzten Eintrag blieb dadurch eine
   hellere Fläche stehen. Jetzt ist die ganze Spalte gleich dunkel. */
:root[data-theme="dark"] #navigation_s,
:root[data-theme="dark"] #navigation_s .structure,
:root[data-theme="dark"] #navigation_s .structure-body,
:root[data-theme="dark"] #navigation_s .sidebar,
:root[data-theme="dark"] #navigation_s .wrapper{ background:var(--d-bg) !important; }

:root[data-theme="dark"] .structure-body .tablink .structure-icon{ background:var(--d-surf) !important; border-color:var(--d-bd) !important; }
:root[data-theme="dark"] .structure-header, :root[data-theme="dark"] .quick-view, :root[data-theme="dark"] .quick-view .list-group-item{ background:var(--d-surf) !important; }

/* Werkzeugleiste auf die 720-px-Textkante des Lesetexts einrücken */
#kapitelTools, #checkupTools{ padding-left:max(1em, calc((100% - 720px) / 2)) !important; padding-right:max(1em, calc((100% - 720px) / 2)) !important; }
@media (max-width:1000px){ #kapitelTools, #checkupTools{ padding-left:1em !important; padding-right:1em !important; } }
/* ---- Werkzeugleiste an den Inhaltsbereich binden ----
   Die Leiste ist position:fixed und richtete sich damit am Fenster aus, der Text aber
   am Panel. Bei offener Modulleiste (320px) lagen beide um deren halbe Breite
   auseinander. Links deshalb auf die Kante des Inhaltsbereichs setzen, dann stimmt
   auch die Einrückung darunter wieder. */
@media (min-width:1001px){
  /* Die Leiste spannt über das Fenster, die Einrückung setzt werkzeugLeisteAusrichten()
     in index.php anhand der gemessenen Textkante. Rechnen mit 50% ging hier schief,
     weil die Leiste fixed am Fenster hängt, der Text aber im Panel sitzt. */
  #kapitelTools, #checkupTools{ left:0 !important; right:0 !important; width:auto !important; margin:0 !important; }
}


/* ---- Übungs-Block im Kapitel (29.10.2026): weiße Karte statt grauer Kasten ---- */
#panel .tabcontent.exercise-group > h4{ font:700 26px/1.2 var(--display) !important; letter-spacing:-.02em; color:var(--ink); margin:0 0 16px !important; padding-right:120px; }
#panel .exercise-group .exercise-navigation{ top:6px; right:0; padding:0; display:flex; gap:7px; }
#panel .exercise-group .exercise-navigation button{ background:transparent !important; border:2px solid transparent !important; border-radius:100%; }
#panel .exercise-group .exercise-navigation button div{ width:11px; height:11px; margin:1px; background:#fff; border:2px solid var(--line-2); transition:border-color .12s, background .12s; }
#panel .exercise-group .exercise-navigation button:hover div{ border-color:var(--accent); }
#panel .exercise-group .exercise-navigation button.focused{ border-color:var(--accent-soft) !important; }
#panel .exercise-group .exercise-navigation button.focused div{ background:var(--accent); border-color:var(--accent); }
#panel .exercise-group .exercise-navigation button.correct div{ background:#2eb872; border-color:#2eb872; }
#panel .exercise-group .exercise-navigation button.incorrect div{ background:#e05252; border-color:#e05252; }

/* Die Größe folgt dem Aa-Knopf, genau wie der Lesetext. Vorher stand hier ein fester
   Wert, Übungen blieben dadurch beim Vergrößern der Schrift unverändert. */
#panel .exercise-group .exercise{
  background:#fff; border:1px solid var(--line); border-radius:14px; padding:26px 30px 28px; min-height:0;
  font-size:calc(17px * var(--font-scale, 1)); line-height:1.6; color:var(--ink);
}
#panel .exercise .small.text-secondary{ display:block; font-size:12px !important; font-weight:600; letter-spacing:.05em; text-transform:uppercase; color:var(--muted) !important; margin-bottom:8px; }
#panel .exercise .text{ margin:0 0 6px; line-height:1.6; }
#panel .exercise .text p{ margin:0 0 .9em; }

/* Antwortmöglichkeiten */
#panel .exercise .radio{ margin-left:0; padding:7px 0; border-radius:10px; }
#panel .exercise .radio:first-of-type{ padding-top:7px; }
#panel .exercise .radio:last-of-type{ padding-bottom:7px; }
#panel .exercise .radio .radio-symbol-i{ width:30px; height:30px; border:1.5px solid var(--line-2); color:var(--ink-2); font-size:14px; font-weight:600; transition:border-color .12s, background .12s, color .12s; }
#panel .exercise .radio .radio-text{ margin-left:46px; color:var(--ink); }
#panel .exercise .radio:hover .radio-symbol-o{ border-color:transparent; }
#panel .exercise .radio:hover .radio-symbol-i{ border-color:var(--accent); color:var(--accent-tx,var(--accent)); }
#panel .exercise .radio.selected .radio-symbol-o{ border-color:transparent; }
#panel .exercise .radio.selected .radio-symbol-i{ background:var(--accent); border-color:var(--accent); color:#fff; }
#panel .exercise .radio.is-valid .radio-symbol-i{ background:#2eb872; border-color:#2eb872; color:#fff; }
#panel .exercise .radio.is-valid .radio-text{ color:#1b7a4d; font-weight:600; }
#panel .exercise .radio.is-invalid .radio-symbol-i{ background:#e05252; border-color:#e05252; color:#fff; }
#panel .exercise .radio.is-invalid .radio-text{ color:#b42323; }

/* Lückentext-Felder und Auswahllisten */
#panel .exercise input[type=text]{ height:38px; padding:4px 10px; border:1px solid var(--line-2); border-radius:8px; font-size:16px; background:#fff; box-shadow:none; }
#panel .exercise input[type=text]:focus{ border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft); }
#panel .exercise select.form-select{ border-color:var(--line-2); border-radius:8px; }
#panel .exercise input.is-valid, #panel .exercise select.is-valid{ border-color:#2eb872 !important; background-image:none; }
#panel .exercise input.is-invalid, #panel .exercise select.is-invalid{ border-color:#e05252 !important; background-image:none; }

/* Knöpfe */
#panel .exercise .btn.check, #panel .exercise .btn.next{ padding:9px 18px; font-weight:600; font-size:15px; margin-top:18px !important; }
#panel .exercise .btn.next{ background:#fff !important; color:var(--accent-tx,var(--accent)) !important; border-color:var(--accent) !important; }
#panel .exercise .btn.next:hover{ background:var(--accent-soft) !important; }
#panel .exercise .bookmark-btn, #panel .exercise .bm-flags{ margin-top:18px !important; }
#panel .exercise .erklaerungBtn, #panel .exercise .stepByStepButton{ color:var(--accent-tx,var(--accent)) !important; font-weight:600; font-size:15px; margin-top:22px !important; margin-bottom:0 !important; }
#panel .exercise .erklaerungBtn:hover, #panel .exercise .stepByStepButton:hover{ color:var(--accent-2) !important; text-decoration:underline !important; }

/* Lösung */
#panel .exercise .erklaerung{ margin-top:18px; padding:18px 0 0; border-top:1px solid var(--line); font-size:16px; line-height:1.6; color:var(--ink-2); }
#panel .exercise .erklaerung p{ margin:0 0 .8em; }
#panel .exercise .step-wrapper{ align-items:flex-start; padding:8px 0; }
#panel .exercise .step-index{ font-size:12px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--accent-tx,var(--accent)); padding:4px 0 0; width:96px; }
#panel .exercise .step-text{ margin-left:96px; padding:0 0 0 16px; border-left:2px solid var(--accent-soft); }
#panel .exercise .step-btn{ color:var(--accent-tx,var(--accent)) !important; font-weight:600; font-size:15px; padding-left:0; }

@media (max-width:700px){
  #panel .exercise-group .exercise{ padding:20px 18px 22px; }
  #panel .tabcontent.exercise-group > h4{ padding-right:90px; }
}

:root[data-theme="dark"] #panel .exercise-group .exercise{ background:var(--d-surf); border-color:var(--d-bd); color:var(--d-tx); }
:root[data-theme="dark"] #panel .exercise .radio .radio-text, :root[data-theme="dark"] #panel .exercise .text{ color:var(--d-tx); }
:root[data-theme="dark"] #panel .exercise .radio .radio-symbol-i{ border-color:var(--d-bd); color:var(--d-tx); }
:root[data-theme="dark"] #panel .exercise-group .exercise-navigation button div{ background:var(--d-surf); border-color:var(--d-bd); }
:root[data-theme="dark"] #panel .exercise .erklaerung{ border-color:var(--d-bd); color:var(--d-tx); }
:root[data-theme="dark"] #panel .exercise input[type=text]{ background:var(--d-surf2); border-color:var(--d-bd); color:var(--d-tx); }

/* ============================================================
   Kapitel-Layout A (29.10.2026, ersetzt Layout C): Kapitelliste bleibt links,
   der Text bekommt Brotkrume, Titel, Meta-Zeile, Kästen und "Als Nächstes".
   Kopfblock liegt AUSSERHALB von .tabcontent, damit gespeicherte Markierungen
   ihre Textpositionen behalten.
   ============================================================ */

/* Brotkrume (ladeKapitel in index.php) */
#panel .kap-crumb{ max-width:720px; margin:6px auto 0; padding:0 4px; display:flex; align-items:center; gap:10px; font-size:13.5px; color:var(--muted); }
#panel .kap-crumb .kap-crumb-back{ flex:none; }
#panel .kap-crumb .kap-crumb-kap{ min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; line-height:1.4 !important; }
#panel .kap-crumb .kap-crumb-kap::before{ content:"›"; margin-right:8px; color:var(--line-2); }
#panel .kap-crumb .kap-crumb-back{ display:inline-flex; align-items:center; gap:8px; border:0; background:var(--tint); color:var(--ink-2); font:600 13px/1 var(--body); padding:8px 12px; border-radius:999px; cursor:pointer; }
#panel .kap-crumb .kap-crumb-back:hover{ background:var(--accent-soft); color:var(--accent-tx,var(--accent)); }

/* Kopfblock: Titel + Meta-Leiste (kapLayoutSync in index.php). Die Leiste ist ein Kasten mit
   Fächern; Trenner über den Gitterlinien-Trick (1px Lücke, Hintergrund = Linienfarbe), so bekommen
   umgebrochene Fächer auf dem Handy von selbst waagerechte Trenner. */
/* Feine Linie unter der Meta-Leiste, sie trennt den Kopf vom Lesetext. */
#panel .kap-head{ max-width:720px; margin:6px auto 0; padding:0 4px 16px; border-bottom:1px solid var(--line); }
:root[data-theme="dark"] #panel .kap-head{ border-bottom-color:var(--d-bd); }
#panel .kap-title{ font:700 34px/1.15 var(--display) !important; letter-spacing:-.025em; color:var(--ink); margin:6px 0 0; padding-top:20px; text-wrap:balance; }
#panel .kap-meta{ display:flex; flex-wrap:wrap; gap:1px; margin-top:16px; font-size:13.5px; color:var(--ink-2); background:var(--line); border:1px solid var(--line); border-radius:10px; overflow:hidden; }
#panel .kap-meta > span{ flex:1 1 auto; display:inline-flex; align-items:center; padding:10px 16px; background:var(--tint); white-space:nowrap; }
#panel .kap-meta span{ line-height:1.4 !important; }
#panel .kap-meta i{ margin-right:6px; }
/* Abschnittsleiste: Balken in der Untertest-Farbe (data-c der Brotkrume -> .kap-c-*) */
#panel .kap-pos{ display:inline-flex; align-items:center; gap:3px; }
#panel .kap-pos > span{ margin-left:7px; }
#panel .kap-seg{ display:block; width:14px; height:4px; border-radius:2px; background:var(--line-2); }
#panel .kap-seg.on{ background:var(--c,var(--accent)); }
#panel .kap-c-nw{--c:var(--c-nw)} #panel .kap-c-mednat{--c:var(--c-mednat)} #panel .kap-c-quanti{--c:var(--c-quanti)} #panel .kap-c-fakten{--c:var(--c-fakten)} #panel .kap-c-text{--c:var(--c-text)} #panel .kap-c-diagr{--c:var(--c-diagr)} #panel .kap-c-arith{--c:var(--c-arith)}
#panel .tabcontent .kap-hidden{ display:none !important; }
/* Die Größen hängen am Faktor --font-scale, den der Aa-Knopf setzt (applyFontScale in
   lernplan/index.php). Vorher standen hier feste 18px und 28px: Der Knopf setzte nur eine
   Prozentgröße auf #content, und eine absolute Größe im Kind ignoriert die. Der Knopf
   wirkte dadurch im Kapiteltext gar nicht. */
#panel .kap-crumb ~ .tabcontent{ margin-top:28px !important; font-size:calc(18px * var(--font-scale, 1)); }
#panel .kap-crumb ~ .tabcontent h1, #panel .kap-crumb ~ .tabcontent h2{ font-size:calc(28px * var(--font-scale, 1)) !important; line-height:1.2 !important; }
#panel .kap-crumb ~ .tabcontent > h3:first-child{ font-size:calc(28px * var(--font-scale, 1)) !important; line-height:1.2 !important; margin:0 0 .7em; }

/* Kästen: Absätze, die mit "Beispiel:", "Tipp:", "Merke:" usw. beginnen (renderContent.js) */
#panel .tabcontent .callout{ margin:1.4em 0; padding:16px 20px; border-radius:12px; background:var(--tint); border:1px solid var(--line); }
#panel .tabcontent .callout p{ margin:0; }
#panel .tabcontent .callout p + p{ margin-top:.8em; }
#panel .tabcontent .callout-tipp, #panel .tabcontent .callout-merke, #panel .tabcontent .callout-merksatz, #panel .tabcontent .callout-wichtig{ background:#fff; border-color:var(--accent-soft); border-left:3px solid var(--accent); }
#panel .tabcontent .callout-achtung{ border-left:3px solid #d27a1f; background:#fff; }

/* "Als Nächstes"-Karte am Ende des aktiven Abschnitts (kapLayoutSync) */
#panel .kap-next{ display:flex; justify-content:space-between; align-items:center; gap:16px; margin-top:40px; padding:18px 22px; border:1px solid var(--line); border-radius:14px; }
#panel .kap-next-k{ font-size:12px; font-weight:600; letter-spacing:.05em; text-transform:uppercase; color:var(--muted); }
#panel .kap-next-n{ font-size:17px; font-weight:600; margin-top:2px; color:var(--ink); }
#panel .kap-next-btn{ display:inline-flex; align-items:center; gap:8px; border:0; background:var(--accent); color:#fff; font:600 15px/1 var(--body); padding:12px 18px; border-radius:10px; cursor:pointer; white-space:nowrap; }
#panel .kap-next-btn:hover{ background:var(--accent-2); }
#panel .exercise-group .kap-next{ margin-top:24px; }
/* Nur im Check-up hängt die Karte direkt am Panel und ist damit ein eigener Container
   neben der Aufgabenkarte. Sie braucht dort die Spaltenbreite des Inhalts, und die
   beiden Textzeilen brauchen ausdrücklich den normalen Fluss: Am Panel greifen Regeln
   aus style.css, die auf absolut positionierte Nachfahren zielen, sonst lägen
   "Als Nächstes" und der Name übereinander. Im Kapitel bleibt alles wie gehabt. */
#panel .kap-next.frei{ max-width:720px; margin:24px auto 56px !important; }
#panel.hat-notizrand .kap-next.frei{ margin-left:calc(50% - 508px) !important; margin-right:0 !important; }
/* :not(.kap-next-actions): Die Knopfleiste bleibt eine Zeile, nur der Textblock
   links wird zur Spalte. */
#panel .kap-next.frei > div:not(.kap-next-actions){ display:flex; flex-direction:column; align-items:flex-start; min-width:0;
  position:static !important; inset:auto !important; }
#panel .kap-next.frei .kap-next-actions{ display:flex; flex-direction:row; align-items:center; gap:10px; flex:none; }
#panel .kap-next.frei .kap-next-k, #panel .kap-next.frei .kap-next-n{
  position:static !important; inset:auto !important; display:block; width:auto; float:none; line-height:1.3; }

/* Getönter Grund: Die Karte ist Navigation und hebt sich damit vom weissen Inhalt ab. */
#panel .kap-next{ background:var(--tint); }
:root[data-theme="dark"] #panel .kap-next{ background:var(--d-surf2); }

/* Werkzeugleiste: so breit wie der Text */
@media (min-width:1001px){
  body:has(#navigation_s.opened .mint-host) #kapitelTools{ width:720px !important; max-width:calc(100% - 2em); margin:0 auto !important; padding:8px 0 !important; border-bottom:1px solid var(--line) !important; box-shadow:none !important; }
  /* Untere Leiste durchgehend petrol */
  body:has(#navigation_s.opened .mint-host) #menu_s{ background:var(--accent); box-shadow:none; }
  body:has(#navigation_s.opened .mint-host) #menu_s .nav-button{ background:var(--accent) !important; color:#fff !important; border-color:rgba(255,255,255,.18) !important; }
  body:has(#navigation_s.opened .mint-host) #menu_s .nav-button:hover:not(:disabled){ background:var(--accent-2) !important; color:#fff !important; }
  body:has(#navigation_s.opened .mint-host) #menu_s .nav-button:disabled{ color:rgba(255,255,255,.62) !important; }
}

:root[data-theme="dark"] #panel .kap-crumb .kap-crumb-back{ background:var(--d-surf2); color:var(--d-tx); }
:root[data-theme="dark"] #panel .kap-meta{ background:var(--d-bd); border-color:var(--d-bd); color:var(--d-tx2); }
:root[data-theme="dark"] #panel .kap-meta > span{ background:var(--d-surf2); }
:root[data-theme="dark"] #panel .kap-seg{ background:var(--d-bd); }
:root[data-theme="dark"] #panel .kap-seg.on{ background:var(--c,var(--accent)); }
:root[data-theme="dark"] #panel .kap-title, :root[data-theme="dark"] #panel .kap-next-n{ color:var(--d-tx); }
:root[data-theme="dark"] #panel .kap-next{ border-color:var(--d-bd); }
:root[data-theme="dark"] #panel .tabcontent .callout{ background:var(--d-surf2); border-color:var(--d-bd); }
/* Tabellen: so breit wie der Inhalt, Zellen brechen nur an Leerzeichen */
/* Auch Tabellen folgen dem Aa-Knopf, sonst bleiben sie als einziges Element im Lesetext
   bei ihrer festen Größe stehen. */
#panel .tabcontent table{ width:auto !important; max-width:100%; font-size:calc(15px * var(--font-scale, 1)); }
#panel .tabcontent th, #panel .tabcontent td{ word-break:normal !important; overflow-wrap:normal !important; padding:8px 11px !important; }
#panel .tabcontent .table-scroll{ border-radius:10px; }

/* Untere Leiste im Kapitel auf dem Desktop ausblenden: die Karte am Textende übernimmt.
   Nur aus dem Bild geschoben, nicht display:none, weil kapLayoutSync die Knöpfe weiter abfragt. */
@media (min-width:1001px){
  body:has(#navigation_s.opened .mint-host) #menu_s{ transform:translateY(110%); pointer-events:none; }
  body:has(#navigation_s.opened .mint-host) .panel{ height:calc(100vh - 65px) !important; height:calc(100dvh - 65px) !important; }
  body:has(#navigation_s.opened .mint-host) #navigation_s{ padding-bottom:0 !important; }
}
#panel .kap-next-actions{ display:flex; gap:10px; align-items:center; flex:none; }
#panel .kap-prev-btn{ border:1px solid var(--line-2); background:#fff; color:var(--ink-2); font:600 15px/1 var(--body); padding:11px 16px; border-radius:10px; cursor:pointer; white-space:nowrap; }
#panel .kap-prev-btn:hover{ border-color:var(--accent); color:var(--accent-tx,var(--accent)); }
/* Schnellübersicht in der Karte, gleiche stille Form wie "Zurück" */
#panel .kap-quick-btn{ display:inline-flex; align-items:center; gap:8px; border:1px solid var(--line-2); background:#fff; color:var(--ink-2); font:600 15px/1 var(--body); padding:11px 16px; border-radius:10px; cursor:pointer; white-space:nowrap; }
#panel .kap-quick-btn:hover{ border-color:var(--accent); color:var(--accent-tx,var(--accent)); }
:root[data-theme="dark"] #panel .kap-prev-btn, :root[data-theme="dark"] #panel .kap-quick-btn{ background:var(--d-surf2); border-color:var(--d-bd); color:var(--d-tx); }

/* Formeln im Lesetext (29.10.2026): linksbündig im Textfluss statt zentriert, enger gesetzt.
   Absatz mit Formel bekommt eine feine Linie links, damit Beschriftung, Formel und
   Erklärung als ein Block gelesen werden. Zeilenumbrüche direkt um die Formel werden
   ausgeblendet (sie erzeugten die großen Lücken). */
#panel .tabcontent .katex-display{ text-align:left; margin:.55em 0 .65em; padding:.1em 0; }
#panel .tabcontent .katex-display > .katex{ text-align:left; font-size:1.18em; }
#panel .tabcontent br:has(+ .katex-display), #panel .tabcontent .katex-display + br{ display:none; }
#panel .tabcontent p:has(> .katex-display){ padding-left:18px; border-left:3px solid var(--accent-soft); margin:1.2em 0 1.3em; }
#panel .tabcontent p:has(> .katex-display:first-child:last-child){ padding-left:18px; }
:root[data-theme="dark"] #panel .tabcontent p:has(> .katex-display){ border-left-color:rgba(15,107,107,.45); }
/* KaTeX legt um Display-Formeln einen zusätzlichen <span>; Selektoren darauf angepasst */
#panel .tabcontent br:has(+ span > .katex-display), #panel .tabcontent span:has(> .katex-display) + br{ display:none; }
#panel .tabcontent p:has(.katex-display){ padding-left:18px; border-left:3px solid var(--accent-soft); margin:1.2em 0 1.3em; }

/* Feste Leiste am Fensterboden: umgekehrte Logik. Grundzustand ist unsichtbar, denn auf
   Übersichten und der Modulseite stand sonst ein leerer weißer Streifen, und beim Wechsel
   zwischen Modulen blitzte kurz "Vorheriges / Nächstes Modul" darin auf. Zurück ins Bild
   kommt sie nur, wo sie wirklich die Navigation trägt: beim Lesen eines Kapitels und in den
   Aufgaben. Beide bekommen ihre Knöpfe jetzt im Inhalt: die Karte "Als Nächstes" am Ende des
   Abschnitts (kapLayoutSync) und auf der Modulseite .mod-pager. Die Leiste ist deshalb auf
   jeder Breite und in jeder Ansicht aus dem Bild geschoben.
   Immer nur aus dem Bild geschoben, nie display:none: Die Knöpfe im Inhalt klicken auf
   #prevBtn / #nextBtn / #chapterBtn / #modulBtn in dieser Leiste, modNavSync() liest deren
   Sperrzustand aus und kapLayoutSync() prüft über offsetParent, welcher gerade gilt. Mit
   display:none wäre offsetParent null und die Karte im Inhalt würde nie gebaut. */
#menu_s{ transform:translateY(110%) !important; pointer-events:none !important; }
#content .mod-pager{ display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:12px; margin:8px 0 24px; }
#content .mod-pager-group{ display:flex; gap:12px; margin-left:auto; }
#content .mod-pager-btn.back{ color:var(--ink-2); }
#content .mod-pager-btn.back:hover{ border-color:var(--accent); color:var(--accent-tx,var(--accent)); }
@media (max-width:560px){
  #content .mod-pager, #content .mod-pager-group{ flex-direction:column; align-items:stretch; width:100%; }
  #content .mod-pager-group{ margin-left:0; }
  #content .mod-pager-btn{ justify-content:center; }
}
#content .mod-pager-btn{ display:inline-flex; align-items:center; gap:8px; border:1px solid var(--line-2); background:#fff; color:var(--ink-2); font:600 15px/1 var(--body); padding:12px 16px; border-radius:10px; cursor:pointer; }
#content .mod-pager-btn:hover:not(:disabled){ border-color:var(--accent); color:var(--accent-tx,var(--accent)); }
#content .mod-pager-btn.next{ background:var(--accent); border-color:var(--accent); color:#fff; }
#content .mod-pager-btn.next:hover:not(:disabled){ background:var(--accent-2); border-color:var(--accent-2); color:#fff; }
#content .mod-pager-btn:disabled{ opacity:.4; cursor:default; }
:root[data-theme="dark"] #content .mod-pager-btn{ background:var(--d-surf2); border-color:var(--d-bd); color:var(--d-tx); }

/* Modulleiste: Module nach Fach gruppiert (29.10.2026) */
#navigation_s .sidebar-group-fach{ display:flex; align-items:center; gap:8px; padding:20px 26px 8px !important; }
#navigation_s .sidebar-group-fach:first-child{ padding-top:12px !important; }
#navigation_s .sg-dot{ width:7px; height:7px; border-radius:50%; background:var(--fc, var(--muted)); flex:none; }

/* Scrollleisten (29.10.2026): schmal und dezent in Seitenleisten, Kapitelliste und Lesefläche */
#navigation_p, #navigation_s, .sidebar, .structure-body, .panel, .layer, .quick-view, #content{
  scrollbar-width:thin; scrollbar-color:var(--line-2) transparent;
}
#navigation_p::-webkit-scrollbar, #navigation_s::-webkit-scrollbar, .sidebar::-webkit-scrollbar, .structure-body::-webkit-scrollbar,
.panel::-webkit-scrollbar, .layer::-webkit-scrollbar, .quick-view::-webkit-scrollbar, #content::-webkit-scrollbar{ width:6px; height:6px; }
#navigation_p::-webkit-scrollbar-track, #navigation_s::-webkit-scrollbar-track, .sidebar::-webkit-scrollbar-track, .structure-body::-webkit-scrollbar-track,
.panel::-webkit-scrollbar-track, .layer::-webkit-scrollbar-track, .quick-view::-webkit-scrollbar-track, #content::-webkit-scrollbar-track{ background:transparent; }
#navigation_p::-webkit-scrollbar-thumb, #navigation_s::-webkit-scrollbar-thumb, .sidebar::-webkit-scrollbar-thumb, .structure-body::-webkit-scrollbar-thumb,
.panel::-webkit-scrollbar-thumb, .layer::-webkit-scrollbar-thumb, .quick-view::-webkit-scrollbar-thumb, #content::-webkit-scrollbar-thumb{ background:var(--line-2); border-radius:999px; border:1px solid #fff; }
#navigation_p::-webkit-scrollbar-thumb:hover, #navigation_s::-webkit-scrollbar-thumb:hover, .structure-body::-webkit-scrollbar-thumb:hover, .panel::-webkit-scrollbar-thumb:hover, .layer::-webkit-scrollbar-thumb:hover{ background:var(--muted); }
:root[data-theme="dark"] #navigation_p, :root[data-theme="dark"] #navigation_s, :root[data-theme="dark"] .structure-body, :root[data-theme="dark"] .panel, :root[data-theme="dark"] .layer{ scrollbar-color:var(--d-bd) transparent; }
:root[data-theme="dark"] .structure-body::-webkit-scrollbar-thumb, :root[data-theme="dark"] .panel::-webkit-scrollbar-thumb, :root[data-theme="dark"] #navigation_s::-webkit-scrollbar-thumb, :root[data-theme="dark"] .layer::-webkit-scrollbar-thumb{ background:var(--d-bd); border-color:var(--d-surf); }

/* Modul-Icons (29.10.2026): getönter Kreis + Icon in Fachfarbe, wie .modul-side-icon in der Modulleiste */
.mod-icon, .header-icon{ color:var(--fc,var(--muted)) !important; background:color-mix(in srgb, var(--fc,var(--muted)) 12%, #fff) !important; box-shadow:none !important; }
.mod-icon{ width:48px; height:48px; font-size:19px; }
.mod-card.disabled .mod-icon{ --fc:var(--muted); }
:root[data-theme="dark"] .mod-icon, :root[data-theme="dark"] .header-icon{ background:color-mix(in srgb, var(--fc,var(--muted)) 22%, var(--d-surf)) !important; }

/* Kapitel-Zeilen in der Modul-Ansicht (29.10.2026): Ordner-Icon und Balken in der Fachfarbe (--fc steht auf .kap-list); erledigte Kapitel bleiben grün */
.kap-list .kap-icon{ color:var(--fc,#0f6b6b); background:color-mix(in srgb, var(--fc,#0f6b6b) 12%, #fff); }
.kap-list .kap-progress-bar{ background:var(--fc,#0f6b6b); }
:root[data-theme="dark"] .kap-list .kap-icon{ background:color-mix(in srgb, var(--fc,#0f6b6b) 22%, var(--d-surf)); }

/* Untertest-Kopf (29.10.2026): ruhig wie das Dashboard – kein Blau, Petrol als einziger Akzent */
/* Zurück-Knopf überall als dieselbe graue Pille wie die Brotkrume im Kapitel
   (#panel .kap-crumb .kap-crumb-back). Vorher war er hier ein einfacher Textlink in Petrol,
   im Kapitel dagegen eine Pille, zwei Formen für dieselbe Handlung. */
.tt-zurueck{ display:inline-flex !important; align-items:center; gap:8px; background:var(--tint) !important; border:0 !important; padding:8px 12px !important; margin:0 0 18px !important; color:var(--ink-2) !important; font:600 13px/1 var(--body) !important; border-radius:999px !important; cursor:pointer; }
.tt-zurueck i{ color:inherit !important; }
.tt-zurueck:hover{ background:var(--accent-soft) !important; color:var(--accent-tx,var(--accent)) !important; text-decoration:none !important; }
/* Im Kopf der Kapitelleiste bleibt er der schlichte Textlink in Petrol: Dort steht er
   zwischen zwei Zeilen Text, eine Pille würde den Block unruhig machen. */
.structure-header .tt-zurueck{ background:none !important; padding:0 !important; margin:0 0 10px !important; font-size:13px !important; color:var(--accent-tx,var(--accent)) !important; border-radius:0 !important; }
.structure-header .tt-zurueck i{ color:var(--accent-tx,var(--accent)) !important; }
.structure-header .tt-zurueck:hover{ background:none !important; color:var(--accent-2) !important; text-decoration:underline !important; text-underline-offset:3px; }
:root[data-theme="dark"] .structure-header .tt-zurueck{ background:none !important; color:#9fe3db !important; }
:root[data-theme="dark"] .tt-zurueck{ background:var(--d-surf2) !important; color:var(--d-tx) !important; }
:root[data-theme="dark"] .tt-zurueck:hover{ background:rgba(15,107,107,.3) !important; color:#9fe3db !important; }
.page-head{ align-items:center !important; padding:0 0 22px; border-bottom:1px solid var(--line); margin-bottom:26px !important; }
.tt-chips{ margin-bottom:8px !important; gap:10px !important; }
.page-eyebrow{ background:none !important; padding:0 !important; border-radius:0 !important; color:var(--muted) !important; font-size:12px !important; font-weight:700 !important; letter-spacing:1.2px !important; text-transform:uppercase !important; }
.tt-cat{ background:#fff !important; color:var(--ink-2) !important; border:1px solid var(--line-2); font-size:11.5px !important; font-weight:600 !important; letter-spacing:.3px !important; padding:2px 9px !important; line-height:1.5 !important; }
.page-title{ font:700 clamp(24px,2.8vw,30px)/1.15 var(--display) !important; letter-spacing:-.022em !important; color:var(--ink) !important; margin:0 0 6px !important; }
.page-sub{ color:var(--ink-2) !important; font-size:15px !important; }
/* Fortschrittsring: 84px waren zu klein, "FORTSCHRITT" stieß innen an den Kreis.
   Jetzt 120px, Zahl und Wort im selben Verhältnis mitgewachsen. Der Ring selbst ist ein
   120er viewBox, die Strichstärke 8 wird also genau als 8px gezeichnet.
   Auf schmalen Geräten steht er allein unter dem Titel und darf etwas größer sein. */
.php-ring-wrap{ width:120px !important; height:120px !important; }
.php-ring-bg{ stroke:var(--line) !important; stroke-width:8 !important; }
.php-ring-fill{ stroke:var(--accent) !important; stroke-width:8 !important; }
.php-ring-center b{ font-size:24px !important; color:var(--ink) !important; font-variant-numeric:tabular-nums; }
.php-ring-center span{ font-size:11px !important; letter-spacing:.6px; color:var(--muted) !important; }
@media (max-width:700px){
  .php-ring-wrap{ width:126px !important; height:126px !important; }
  .php-ring-center b{ font-size:25px !important; }
  .php-ring-center span{ font-size:11px !important; letter-spacing:.2px; }
}
/* --fc setzt die Seite je Untertest, sonst bleibt es beim Petrol der Marke. Die Farbe
   liegt in der Fläche, nicht im Rahmen: Ein farbiger Rand umreisst den Kasten hart und
   zieht den Blick auf die Kante statt auf den Text. Gilt für alle Untertests gleich. */
.est-box{ background:color-mix(in srgb, var(--fc,var(--accent)) 7%, #fff) !important;
  border:none !important; border-radius:14px !important; box-shadow:none !important;
  padding:18px 22px !important; }
.est-box .est-h{ margin-bottom:8px !important; font-size:16px !important; color:var(--ink) !important; gap:10px !important; }
/* Weisse Kachel auf getoenter Flaeche: Mit Farbe auf Farbe verschwaemme das Symbol. */
.est-box .est-ic{ width:30px !important; height:30px !important; border-radius:8px !important; font-size:13px !important;
  background:#fff !important; color:var(--fc,var(--accent)) !important; }
.est-box p{ color:var(--ink-2) !important; font-size:15px !important; line-height:1.6 !important; }
.est-box p strong{ color:var(--ink); }
/* Wegweiser am Ende der Einstiegsbox: eigener Absatz, abgesetzt vom Text darueber. */
.est-box .tt-wege{ margin:14px 0 0 !important; padding-top:14px !important;
  border-top:1px solid color-mix(in srgb, var(--fc,var(--accent)) 16%, #fff) !important; }
:root[data-theme="dark"] .est-box .tt-wege{
  border-top-color:color-mix(in srgb, var(--fc,var(--accent)) 28%, var(--d-surf)) !important; }
.ls-title i{ color:var(--muted) !important; }
:root[data-theme="dark"] .tt-zurueck, :root[data-theme="dark"] .tt-zurueck i{ color:#9fe3db !important; }
:root[data-theme="dark"] .page-head{ border-bottom-color:var(--d-bd); }
:root[data-theme="dark"] .tt-cat{ background:var(--d-surf2) !important; border-color:var(--d-bd); color:var(--d-tx2) !important; }
:root[data-theme="dark"] .est-box{ border:none !important;
  background:color-mix(in srgb, var(--fc,#9fe3db) 14%, var(--d-surf)) !important; }
:root[data-theme="dark"] .est-box .est-ic{ background:color-mix(in srgb, var(--fc,var(--accent)) 26%, var(--d-surf)) !important; color:var(--fc,#9fe3db) !important; }
:root[data-theme="dark"] .est-box p{ color:var(--d-tx2) !important; }

/* Lesbarkeit (29.10.2026): Beschriftungen für automatische Kästen, Merksätze (renderContent.js) */
#panel .tabcontent .callout-auto::before, #panel .tabcontent .merksatz::before{ display:block; font:700 11.5px/1 var(--body); letter-spacing:.08em; text-transform:uppercase; color:var(--accent-tx,var(--accent)); margin-bottom:8px; }
#panel .tabcontent .callout-auto::before{ content:"Beispiel"; }
#panel .tabcontent .merksatz::before{ content:"Merke"; }
#panel .tabcontent .merksatz{ margin:1.4em 0; padding:16px 20px; border-radius:12px; background:#fff; border:1px solid var(--accent-soft); border-left:3px solid var(--accent); }
#panel .tabcontent .merksatz strong{ font-weight:600; color:var(--ink); }
#panel .tabcontent .callout-achtung::before{ color:#d27a1f; }
:root[data-theme="dark"] #panel .tabcontent .merksatz{ background:var(--d-surf2); border-color:var(--d-bd); border-left-color:#9fe3db; }
:root[data-theme="dark"] #panel .tabcontent .merksatz strong{ color:var(--d-tx); }

/* Modulliste (Untertest-Seite): Karten nach Fach gruppiert wie die Modulleiste links (29.10.2026) */
.module .mod-group{ display:flex; align-items:center; gap:8px; margin:26px 0 10px; padding:0 2px; font-size:12px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); }
.module .mod-group:first-child{ margin-top:4px; }
.module .mod-group .sg-dot{ width:7px; height:7px; border-radius:50%; background:var(--fc, var(--muted)); flex:none; }

/* Nacharbeiten (29.10.2026): Seitenleisten-Zähler, Stapel-Seite, Runner in Petrol */
.sidebar .sidebar-button .na-count{ margin-left:auto; font:700 11.5px/1 var(--body); color:var(--accent-tx,var(--accent)); background:var(--accent-soft); border-radius:999px; padding:4px 8px; min-width:24px; text-align:center; font-variant-numeric:tabular-nums; }
.sidebar .sidebar-item.active .na-count{ background:var(--accent); color:#fff; }
.na-card{ border:1px solid var(--line); border-radius:14px; padding:22px 24px; background:#fff; margin-top:4px; }
.na-card-top{ display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap; }
.na-big{ font:700 40px/1 var(--display); letter-spacing:-.03em; color:var(--ink); font-variant-numeric:tabular-nums; }
.na-big-l{ color:var(--ink-2); font-size:15px; margin-top:6px; }
.na-note{ margin:14px 0 0; font-size:13.5px; color:var(--muted); }
.na-start i{ margin-left:6px; font-size:13px; }
.na-list-h{ font:700 12px/1 var(--body); letter-spacing:.08em; text-transform:uppercase; color:var(--muted); margin:28px 0 10px; }
.na-list{ border:1px solid var(--line); border-radius:12px; overflow:hidden; }
.na-row{ display:flex; align-items:center; justify-content:space-between; gap:16px; padding:13px 18px; border-top:1px solid var(--line); }
.na-row:first-child{ border-top:0; }
.na-row-t b{ display:block; font-weight:600; color:var(--ink); font-size:15px; }
.na-row-t span{ display:block; font-size:13px; color:var(--muted); margin-top:2px; }
.na-row-n{ font:600 14px/1 var(--body); color:var(--ink-2); background:var(--tint); border-radius:999px; padding:6px 11px; font-variant-numeric:tabular-nums; }
.na-empty{ text-align:center; padding:48px 20px; border:1px dashed var(--line-2); border-radius:14px; }
.na-empty-ic{ width:48px; height:48px; border-radius:50%; background:var(--accent-soft); color:var(--accent-tx,var(--accent)); display:inline-flex; align-items:center; justify-content:center; font-size:20px; margin-bottom:14px; }
.na-empty h3{ font:700 20px/1.2 var(--display); color:var(--ink); margin:0 0 8px; }
.na-empty p{ color:var(--ink-2); margin:0; max-width:420px; margin-inline:auto; }
.fs-btn-primary{ background:var(--accent) !important; } .fs-btn-primary:hover{ background:var(--accent-2) !important; }
.fs-tab.on{ color:var(--accent-tx,var(--accent)) !important; border-bottom-color:var(--accent) !important; }
:root[data-theme="dark"] .na-card, :root[data-theme="dark"] .na-list{ background:var(--d-surf); border-color:var(--d-bd); }
:root[data-theme="dark"] .na-row{ border-color:var(--d-bd); }
:root[data-theme="dark"] .na-big, :root[data-theme="dark"] .na-row-t b, :root[data-theme="dark"] .na-empty h3{ color:var(--d-tx); }
:root[data-theme="dark"] .na-row-n{ background:var(--d-surf2); color:var(--d-tx2); }
:root[data-theme="dark"] .sidebar .sidebar-button .na-count{ background:rgba(15,107,107,.25); color:#9fe3db; }

/* Anleitungen: mehr Struktur (29.10.2026). Zwischenüberschriften aus fetten Zeilen,
   "- Punkt"-Aufzählungen hängend; erzeugt in renderContent.js, Text unverändert */
#panel .tabcontent h3.h-auto{ font-size:18px !important; margin:1.8em 0 .55em; }
#panel .tabcontent h3.h-auto b, #panel .tabcontent h3.h-auto strong{ font-weight:inherit; color:inherit; }
#panel .tabcontent h1 + h3.h-auto, #panel .tabcontent h2 + h3.h-auto{ margin-top:.6em; }
#panel .tabcontent p.dash-item{ position:relative; padding-left:1.35em; margin-bottom:.4em; }
#panel .tabcontent p.dash-item .dash{ position:absolute; left:0; opacity:0; pointer-events:none; }
#panel .tabcontent p.dash-item::before{ content:"\2022"; position:absolute; left:.25em; color:var(--accent-tx,var(--accent)); font-weight:700; }
#panel .tabcontent p.dash-item + p:not(.dash-item){ margin-top:1.05em; }
/* Leerzeilen (<p><br></p>, auch in <b>) tragen nichts, der Absatzabstand reicht */
#panel .tabcontent p.p-empty{ display:none; }
/* Striche-Trennlinie aus dem Editor */
#panel .tabcontent p.text-rule{ font-size:0; line-height:0; height:0; border-top:1px solid var(--line); margin:2em 0; color:transparent; }

/* Fragen-Runner in Petrol (29.10.2026): Blau aus style.css überschreiben */
.fs-run-fill{ background:var(--accent) !important; }
.fs-opt.sel{ border-color:var(--accent) !important; background:var(--accent-soft) !important; }
.fs-opt.sel .fs-opt-mark{ border-color:var(--accent) !important; background:var(--accent) !important; }
.fs-solution{ background:#fff !important; border-left-color:var(--accent) !important; border:1px solid var(--line); border-left-width:3px !important; }
.fs-nav-item.current{ border-color:var(--accent) !important; color:var(--accent-tx,var(--accent)) !important; background:var(--accent-soft) !important; box-shadow:0 0 0 3px rgba(15,107,107,.14) !important; }
.fs-nav-dot.cur{ border-color:var(--accent) !important; }
.fs-nav-title::before{ background:var(--accent) !important; }
.fs-mode-opt.on{ color:var(--accent-tx,var(--accent)) !important; } .fs-mode-opt.on .fs-mode-dot{ background:var(--accent) !important; }
.fs-pause:hover, .fs-pause-card svg{ color:var(--accent-tx,var(--accent)) !important; border-color:var(--accent) !important; }
.fs-sel:focus, .fs-inp:focus{ border-color:var(--accent) !important; box-shadow:0 0 0 3px rgba(15,107,107,.14) !important; }
.fs-res-score, .fs-sess-open{ color:var(--accent-tx,var(--accent)) !important; }
.fs-review-badge, .fs-badge, .fs-opt-badge{ color:var(--accent-tx,var(--accent)) !important; background:var(--accent-soft) !important; }
.fs-count.on, .fs-adaptive .fs-count.on, .fs-start, .fs-start-primary, .fs-how-step .fs-how-n{ background:var(--accent) !important; border-color:var(--accent) !important; }
.fs-start:hover{ background:var(--accent-2) !important; }
.fs-diff.on, .fs-info-toggle.on, .fs-adv-toggle.on, .fs-adv-toggle.on .fs-adv-chev{ background:var(--accent-soft) !important; border-color:#cfe4e2 !important; color:var(--accent-tx,var(--accent)) !important; }
.fs-t-row input{ accent-color:var(--accent) !important; }
.fs-line, .fs-guide{ stroke:var(--accent) !important; } .fs-dot, .fs-hi{ fill:var(--accent) !important; } .fs-legend-dot{ background:var(--accent) !important; } .fs-hist-bar-fill{ background:var(--accent) !important; }

/* Übungen-Block (Simulationen/Mini-Übung, _tt_train.php) in Petrol (29.10.2026): Blau/Lora aus style.css überschreiben */
.sim-title, .sim-list-title, .sim-time-row b{ font-family:var(--display) !important; color:var(--ink) !important; letter-spacing:-.01em; }
.sim-card, .sim-list{ border-color:var(--line) !important; }
.sim-head .sim-ic{ background:var(--accent-soft) !important; color:var(--accent-tx,var(--accent)) !important; }
.sim-sub, .sim-list-sub, .sim-val, .sim-progress, .sim-time-row span{ color:var(--muted) !important; }
.sim-sub strong{ color:var(--ink-2); }
.sim-row label{ color:var(--ink-2) !important; }
.sim-val b{ color:var(--accent-tx,var(--accent)) !important; }
.sim-list-item{ border-bottom-color:var(--line) !important; }
.sim-list-item:hover{ background:var(--tint) !important; }
.sim-list-btn, .sim-start{ background:var(--accent) !important; color:#fff !important; border-radius:10px !important; }
.sim-list-item:hover .sim-list-btn, .sim-start:hover{ background:var(--accent-2) !important; filter:none !important; transform:none !important; }
.sim-list-btn-unlock{ background:var(--accent-soft) !important; color:var(--accent-tx,var(--accent)) !important; }
.sim-list-locked:hover .sim-list-btn-unlock{ background:var(--accent) !important; color:#fff !important; }
.sim-list-restart{ border-color:var(--line-2) !important; color:var(--ink-2) !important; }
.sim-list-restart:hover{ border-color:var(--accent) !important; color:var(--accent-tx,var(--accent)) !important; }
.sim-mode{ background:var(--tint) !important; }
.sim-mode-opt{ color:var(--muted) !important; }
.sim-mode-opt.active{ color:var(--accent-tx,var(--accent)) !important; background:#fff !important; box-shadow:0 1px 3px rgba(15,27,51,.08) !important; }
/* Im Dark Mode blieb die gewaehlte Schaltflaeche weiss, die helle Schrift darauf war
   damit kaum zu lesen. */
:root[data-theme="dark"] .sim-mode-opt.active{ background:var(--d-surf) !important; box-shadow:none !important; }
:root[data-theme="dark"] .sim-mode{ background:var(--d-bg) !important; }
.sim-range{ background-image:linear-gradient(var(--accent),var(--accent)) !important; background-color:var(--line) !important; }
.sim-range::-webkit-slider-thumb{ border-color:var(--accent) !important; box-shadow:0 1px 4px rgba(15,107,107,.30) !important; }
.sim-range::-moz-range-thumb{ border-color:var(--accent) !important; box-shadow:0 1px 4px rgba(15,107,107,.30) !important; }
.sim-range::-moz-range-progress{ background:var(--accent) !important; }
.sim-time-row{ background:var(--tint) !important; }
.sim-pool-select:focus{ border-color:var(--accent) !important; box-shadow:0 0 0 3px rgba(15,107,107,.14) !important; }
.sim-empty{ border-color:var(--line-2) !important; background:var(--tint) !important; color:var(--muted) !important; }
.tt-anleitung-btn{ border-color:var(--line) !important; color:var(--ink) !important; }
.tt-anleitung-btn i{ color:var(--accent-tx,var(--accent)) !important; }
.tt-anleitung-btn:hover{ border-color:var(--accent) !important; background:var(--accent-soft) !important; color:var(--accent-tx,var(--accent)) !important; }

/* Notizen + Testtag-Probe (29.10.2026) */
#hlRemove .hl-note-btn{ color:#fff; opacity:.85; cursor:pointer; display:inline-flex; align-items:center; padding:2px 4px; font-size:13px; }
#hlRemove .hl-note-btn:hover{ opacity:1; transform:scale(1.1); }
#hlRemove .hl-trenner{ width:1px; height:18px; background:rgba(255,255,255,.25); margin:0 4px; }
/* Beide Leisten gleich hoch: Die Leiste beim Markieren war mit 8px Innenabstand und 9px
   Luecke hoeher und breiter als das Popover einer gesetzten Markierung, obwohl in beiden
   dieselben Farbfelder stehen. Jetzt gelten ueberall die Werte des Popovers. */
#hlToolbar, #smToolbar{ padding:6px 9px !important; gap:4px !important; border-radius:10px !important; }
#hlToolbar .hl-trenner, #smToolbar .hl-trenner{ height:18px !important; margin:0 4px; }

/* Farbfelder im Popover einer gesetzten Markierung: gleiche Groesse wie beim Markieren,
   die aktuelle Farbe traegt einen Haken. */
#hlRemove .hl-swatch{ width:22px; height:22px; border-radius:50%; cursor:pointer; margin:0 2px;
  border:2px solid rgba(255,255,255,.75); transition:transform .1s;
  display:inline-flex; align-items:center; justify-content:center; }
#hlRemove .hl-swatch:hover{ transform:scale(1.15); }
#hlRemove .hl-swatch.ist-an{ border-color:#fff; box-shadow:0 0 0 2px rgba(255,255,255,.35); }
#hlRemove .hl-swatch.ist-an::after{ content:"\f00c"; font-family:"Font Awesome 6 Free"; font-weight:900;
  font-size:10px; line-height:1; color:#1f2733; }
/* Das kleine Stift-Zeichen hinter einer Markierung mit Notiz entfällt: Die Notiz
   steht als Karte am Rand, das Zeichen war nur zusätzliches Rauschen im Text. */
.hl.hl-has-note::after{ content:none; }
#hlNote{ position:absolute; z-index:1000; display:none; width:320px; max-width:calc(100vw - 16px); background:#fff; border:1px solid var(--line-2); border-radius:12px; padding:10px; box-shadow:0 8px 28px rgba(15,27,51,.14); }
#hlNote textarea{ width:100%; min-height:80px; border:1px solid var(--line-2); border-radius:8px; padding:8px 10px; font:14px/1.5 var(--body); color:var(--ink); resize:vertical; }
#hlNote .hl-note-row{ display:flex; gap:8px; margin-top:8px; }
#hlNote button{ border:1px solid var(--line-2); background:#fff; color:var(--ink-2); font:600 13px var(--body); padding:7px 12px; border-radius:8px; cursor:pointer; }
#hlNote .hl-note-save{ background:var(--accent); border-color:var(--accent); color:#fff; }
.tp-teaser{ display:flex; align-items:center; gap:14px; border:1px solid var(--line); border-radius:12px; padding:14px 18px; margin:0 0 22px; cursor:pointer; background:#fff; }
.tp-teaser:hover{ border-color:var(--accent); }
.tp-teaser-ic{ width:38px; height:38px; border-radius:10px; background:var(--accent-soft); color:var(--accent-tx,var(--accent)); display:inline-flex; align-items:center; justify-content:center; flex:none; }
.tp-teaser-t{ min-width:0; flex:1; }
.tp-teaser-t b{ display:block; font-weight:600; color:var(--ink); font-size:15px; }
.tp-teaser-t span{ display:block; font-size:13.5px; color:var(--muted); margin-top:2px; }
.tp-teaser-go{ font:600 14px var(--body); color:var(--accent-tx,var(--accent)); white-space:nowrap; }
:root[data-theme="dark"] #hlNote, :root[data-theme="dark"] #hlNote textarea, :root[data-theme="dark"] #hlNote button, :root[data-theme="dark"] .tp-teaser{ background:var(--d-surf); border-color:var(--d-bd); color:var(--d-tx); }

/* Simulationsseite: ganzer Test + Untertest-Karten in Testreihenfolge (29.10.2026) */
.simu-full{ display:flex; align-items:center; gap:18px; background:#fff; border:1px dashed var(--line-2); border-radius:14px; padding:18px 22px; }
.simu-full-text{ display:flex; flex-direction:column; gap:4px; flex:1; min-width:0; }
.simu-full-text b{ font-family:var(--display); font-size:16px; color:var(--ink); }
.simu-full-text span{ font-size:14px; line-height:1.55; color:var(--muted); }
.simu-badge{ flex:none; font-size:11.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--accent-tx,var(--accent)); background:var(--accent-soft); border-radius:20px; padding:5px 11px; }
.simu-intro{ margin:-6px 0 16px; font-size:14px; color:var(--muted); }
.simu-list{ display:flex; flex-direction:column; gap:14px; }
.simu-ut{ background:#fff; border:1px solid var(--line); border-radius:16px; padding:18px 22px 6px; }
.simu-ut-head{ display:flex; align-items:center; gap:14px; padding-bottom:12px; border-bottom:1px solid var(--line); }
.simu-ut-ic{ width:40px; height:40px; border-radius:12px; display:flex; align-items:center; justify-content:center; font-size:17px; flex:none; background:color-mix(in srgb, var(--fc) 12%, #fff); color:var(--fc); }
.simu-ut-text{ flex:1; min-width:0; }
.simu-ut-title{ font-family:var(--display); font-weight:700; font-size:16px; color:var(--ink); }
.simu-ut-sub{ font-size:13px; color:var(--muted); margin-top:2px; }
.simu-ut-link{ flex:none; font-size:13.5px; font-weight:600; color:var(--accent-tx,var(--accent)); cursor:pointer; text-decoration:none; white-space:nowrap; }
.simu-ut-link:hover{ color:var(--accent-2); text-decoration:underline; text-underline-offset:2px; }
.simu-ut .sim-list-items{ padding:2px 0 6px; }
.simu-ut .sim-list-item:last-child{ border-bottom:none !important; }
.simu-ut-empty{ display:flex; align-items:center; justify-content:space-between; gap:14px; padding:14px 0 12px; font-size:14px; color:var(--muted); }
.simu-ut-empty a{ color:var(--accent-tx,var(--accent)); font-weight:600; cursor:pointer; white-space:nowrap; }
.simu-ut-empty a:hover{ text-decoration:underline; text-underline-offset:2px; }

/* Naturwissenschaften: aufklappbare Liste aller Module mit direktem Weg ins Check-up.
   Das Auf- und Zuklappen macht ein onclick direkt am Knopf, weil dieses Panel per
   innerHTML eingefügt wird und <script> darin nicht ausgeführt würde. */
/* Anleitung des Untertests: eine eigene, breite Zeile statt einer Liste mit einem
   Eintrag. Farbe kommt je Seite über --fc. */
.tt-anleitung{ display:flex; align-items:center; gap:14px; cursor:pointer; text-decoration:none !important;
  padding:15px 20px; background:color-mix(in srgb, var(--fc,var(--accent)) 5%, #fff);
  border-bottom:1px solid var(--line); transition:background .12s; }
.tt-anleitung:hover{ background:color-mix(in srgb, var(--fc,var(--accent)) 10%, #fff); }
.tt-kaplist .tt-anleitung:last-child{ border-bottom:0; }
/* Kapitelzeilen bündig zum Kopfstreifen darueber: gleicher Innenabstand und, weil das
   Kopfsymbol 44px misst und die Zeilensymbole 38px, ein um 5px groesserer Abstand zum
   Text. Sonst sassen Symbole und Text der Zeilen leicht versetzt zum Kopf. */
.tt-kaplist .kap-item{ padding-left:24px !important; padding-right:24px !important; gap:19px !important; }

/* Gekuerzte Kapitelliste: Die ersten drei stehen da, der Rest kommt per Knopf. */
.tt-kaplist.ist-gekuerzt .kap-item.ist-mehr{ display:none !important; }
.kap-mehr{ display:flex; align-items:center; justify-content:center; gap:8px; width:100%;
  padding:13px 24px; border:0; border-top:1px solid var(--line); background:transparent;
  font:600 13.5px/1 var(--body); color:var(--fc,var(--accent)); cursor:pointer; }
.kap-mehr:hover{ background:color-mix(in srgb, var(--fc,var(--accent)) 6%, #fff); }
.kap-mehr i{ font-size:11px; transition:transform .15s; }
.kap-mehr.ist-offen i{ transform:rotate(180deg); }
:root[data-theme="dark"] .kap-mehr{ border-top-color:var(--d-bd); }
:root[data-theme="dark"] .kap-mehr:hover{ background:color-mix(in srgb, var(--fc,var(--accent)) 14%, var(--d-surf)); }

/* Bereichskarten einer Untertest-Seite (Guide, Simulationen, Mini-Uebung): Der Kopf ist
   ein Streifen ueber die volle Breite, zart in der Fachfarbe, das Symbol ebenfalls in
   der Fachfarbe statt im Petrol der Marke. Vorher standen die Karten rein weiss
   zwischen den farbigen Bloecken der Seite und wirkten wie Fremdkoerper.
   Die Simulationsbox bringt ihren Innenabstand ueber .sim-list mit, die Kapitelliste
   hat keinen, deshalb zieht nur sie der negative Rand wieder auf volle Breite. */
.tt-kaplist, .sim-list, .sim-card{
  border:1px solid color-mix(in srgb, var(--fc,var(--accent)) 20%, #fff) !important; }
.tt-kaplist > .sim-head, .sim-list > .sim-head, .sim-card > .sim-head{
  padding:16px 24px; border-radius:15px 15px 0 0;
  background:color-mix(in srgb, var(--fc,var(--accent)) 6%, #fff);
  border-bottom:1px solid color-mix(in srgb, var(--fc,var(--accent)) 14%, #fff); }
.tt-kaplist > .sim-head{ margin:0; }
.sim-list > .sim-head, .sim-card > .sim-head{ margin:-22px -24px 18px; }
.sim-head .sim-ic{ background:color-mix(in srgb, var(--fc,var(--accent)) 14%, #fff) !important;
  color:var(--fc,var(--accent)) !important; }
:root[data-theme="dark"] .tt-kaplist, :root[data-theme="dark"] .sim-list, :root[data-theme="dark"] .sim-card{
  border-color:color-mix(in srgb, var(--fc,var(--accent)) 30%, var(--d-surf)) !important; }
:root[data-theme="dark"] .tt-kaplist > .sim-head,
:root[data-theme="dark"] .sim-list > .sim-head,
:root[data-theme="dark"] .sim-card > .sim-head{
  background:color-mix(in srgb, var(--fc,var(--accent)) 14%, var(--d-surf));
  border-bottom-color:color-mix(in srgb, var(--fc,var(--accent)) 26%, var(--d-surf)); }
:root[data-theme="dark"] .sim-head .sim-ic{
  background:color-mix(in srgb, var(--fc,var(--accent)) 26%, var(--d-surf)) !important; }
/* Zwischenzeile vor den Themenkapiteln, innerhalb derselben Box */
.tt-themen-label{ display:flex; align-items:baseline; gap:9px; padding:12px 20px 7px;
  font:700 11.5px/1 var(--body); letter-spacing:.08em; text-transform:uppercase; color:var(--muted);
  background:var(--tint); border-bottom:1px solid var(--line); }
.tt-themen-label span{ font-weight:500; letter-spacing:0; text-transform:none; font-size:12.5px; }
.tt-anleitung-ic{ flex:none; width:38px; height:38px; border-radius:11px; position:relative;
  display:inline-flex; align-items:center; justify-content:center; font-size:15px;
  color:var(--fc,var(--accent)); background:color-mix(in srgb, var(--fc,var(--accent)) 14%, #fff); }
.tt-anleitung-ic i, .tt-anleitung-ic svg{ position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
  color:inherit; line-height:1; vertical-align:0 !important; }
.tt-anleitung-txt{ display:flex; flex-direction:column; gap:2px; min-width:0; flex:1; }
.tt-anleitung-t{ font:700 15.5px/1.3 var(--display); color:var(--ink); letter-spacing:-.01em; }
.tt-anleitung-s{ font:500 13px/1.4 var(--body); color:var(--muted); }
.tt-anleitung-go{ flex:none; display:inline-flex; align-items:center; gap:7px; white-space:nowrap;
  font:600 13.5px/1 var(--body); color:var(--fc,var(--accent)); }
.tt-anleitung-go i{ font-size:11px; }
:root[data-theme="dark"] .tt-anleitung{ background:color-mix(in srgb, var(--fc,var(--accent)) 14%, var(--d-surf)); border-bottom-color:var(--d-bd); }
:root[data-theme="dark"] .tt-anleitung:hover{ background:color-mix(in srgb, var(--fc,var(--accent)) 20%, var(--d-surf)); }
:root[data-theme="dark"] .tt-themen-label{ background:var(--d-surf2); border-bottom-color:var(--d-bd); color:var(--d-tx2); }
:root[data-theme="dark"] .tt-anleitung-t{ color:var(--d-tx); }
:root[data-theme="dark"] .tt-anleitung-s{ color:var(--d-tx2); }
:root[data-theme="dark"] .tt-anleitung-ic{ background:color-mix(in srgb, var(--fc,var(--accent)) 26%, var(--d-surf)); }
@media (max-width:560px){
  .tt-anleitung{ flex-wrap:wrap; }
  .tt-anleitung-go{ width:100%; justify-content:flex-end; }
}

/* Abschnitt am Ende der Anleitung, der auf die Themenkapitel verweist.
   Wird von lernplan/kapitel.php an den letzten Block gehängt. */
#panel .kap-themen-ende{ margin:34px 0 0; padding:20px 22px; border-radius:14px;
  border:1px solid var(--line); background:var(--tint); }
#panel .kap-themen-ende h4{ display:flex; align-items:center; gap:9px; margin:0 0 6px !important;
  font:700 16px/1.3 var(--display) !important; color:var(--ink) !important; }
#panel .kap-themen-ende h4 i{ font-size:13px; color:var(--accent-tx,var(--accent)); }
#panel .kap-themen-ende p{ margin:0 0 14px !important; font-size:14.5px; color:var(--ink-2) !important; }
.kap-themen-links{ display:flex; flex-direction:column; gap:8px; }
.kap-themen-links a{ display:flex; align-items:center; gap:11px; cursor:pointer; text-decoration:none !important;
  padding:11px 14px; border-radius:10px; border:1px solid var(--line); background:#fff;
  font:600 14.5px/1.3 var(--body); color:var(--ink) !important; transition:border-color .12s, background .12s; }
.kap-themen-links a:hover{ border-color:var(--accent); background:var(--accent-soft); }
.kap-themen-links a span{ flex:1; min-width:0; }
.kap-themen-links a i:first-child{ font-size:13px; color:var(--accent-tx,var(--accent)); }
.kap-themen-links a i:last-child{ font-size:11px; color:var(--accent-tx,var(--accent)); }
:root[data-theme="dark"] #panel .kap-themen-ende{ background:var(--d-surf2); border-color:var(--d-bd); }
:root[data-theme="dark"] .kap-themen-links a{ background:var(--d-surf); border-color:var(--d-bd); color:var(--d-tx) !important; }
:root[data-theme="dark"] .kap-themen-links a:hover{ border-color:#3a9e9e; background:rgba(47,143,143,.14); }

/* Hinweis zum farbigen Merken: liegt als dunkler Kasten über dem Inhalt.
   #panel .tabcontent b färbt dort alles Fettgedruckte navy, auf dunklem Grund war
   davon nichts zu lesen. Deshalb hier eigene Farben mit passender Spezifität. */
#panel .tabcontent .bm-help-tip b, .bm-help-tip b{ color:#fff !important; font-weight:600; }
#panel .tabcontent .bm-help-tip .bm-tip-rot,   .bm-help-tip .bm-tip-rot{ color:#ff9a9c !important; }
#panel .tabcontent .bm-help-tip .bm-tip-gelb,  .bm-help-tip .bm-tip-gelb{ color:#f2ce6a !important; }
#panel .tabcontent .bm-help-tip .bm-tip-gruen, .bm-help-tip .bm-tip-gruen{ color:#7fd7ab !important; }
.bm-help-tip{ width:288px; padding:13px 15px !important; font-size:13px !important; line-height:1.55 !important;
  border-radius:12px !important; box-shadow:0 10px 30px rgba(15,27,51,.28) !important; }

/* Knopf am letzten Modul: führt zum nächsten Untertest statt zu einem nächsten Modul,
   deshalb zweizeilig mit Vorzeile. */
.mod-pager-btn.is-untertest{ display:inline-flex; align-items:center; gap:13px; text-align:left;
  padding:11px 13px 11px 11px !important; border-radius:14px !important;
  background:var(--accent) !important; border-color:var(--accent) !important; color:#fff !important;
  box-shadow:0 2px 10px rgba(15,107,107,.22) !important;
  transition:background .14s, box-shadow .14s, transform .14s !important; }
.mod-pager-btn.is-untertest:hover{ background:var(--accent-2) !important; border-color:var(--accent-2) !important;
  transform:translateY(-1px); box-shadow:0 6px 18px rgba(15,107,107,.3) !important; }
/* Symbol des Untertests, auf den der Knopf fuehrt, in einer halbdurchsichtigen Kachel. */
.mod-pager-btn.is-untertest .mpu-ic{ flex:none; width:36px; height:36px; border-radius:10px;
  display:inline-flex; align-items:center; justify-content:center; font-size:15px;
  background:rgba(255,255,255,.16); }
.mod-pager-btn.is-untertest .mpu-txt{ display:flex; flex-direction:column; gap:3px; min-width:0; }
.mod-pager-btn.is-untertest .mod-pager-k{ font:600 10.5px/1 var(--body); letter-spacing:.09em;
  text-transform:uppercase; opacity:.72; }
.mod-pager-btn.is-untertest .mod-pager-t{ font:700 15px/1.2 var(--display); letter-spacing:-.01em;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
/* Der Pfeil sitzt in eigener Flaeche und rueckt beim Zeigen ein Stueck nach rechts. */
.mod-pager-btn.is-untertest .mpu-pfeil{ flex:none; margin-left:6px; width:30px; height:30px;
  border-radius:50%; display:inline-flex; align-items:center; justify-content:center; font-size:12px;
  background:rgba(255,255,255,.16); transition:transform .14s, background .14s; }
.mod-pager-btn.is-untertest:hover .mpu-pfeil{ background:rgba(255,255,255,.26); transform:translateX(3px); }
@media (max-width:560px){ .mod-pager-btn.is-untertest{ width:100%; justify-content:flex-start; }
  .mod-pager-btn.is-untertest .mpu-pfeil{ margin-left:auto; } }

/* Fortschritt im Check-up in der Farbe des Fachs, wie alle anderen Balken der Plattform
   (Modul-, Kapitel- und Untertest-Listen). Der rote Anteil für falsche Antworten bleibt,
   er trägt eine eigene Bedeutung. --fc setzt aufgabenNavigation.php je Modul. */
.cu-progress-bar{ background:color-mix(in srgb, var(--fc,var(--accent)) 14%, #eef0f4) !important; }
.cu-progress-bar span, #cuProgressFillCorrect{ background:var(--fc,var(--accent)) !important; }
#cuProgressFillWrong{ background:#e05252 !important; }
.cu-progress-val b{ color:var(--fc,var(--accent)) !important; }
:root[data-theme="dark"] .cu-progress-bar{ background:color-mix(in srgb, var(--fc,var(--accent)) 24%, var(--d-surf)) !important; }

/* ---- Aufgabenkarte: ruhigere Abzeichen, klar getrennte Navigation ----
   Die Schwierigkeits-Abzeichen waren noch in den kräftigen Bootstrap-Farben und
   standen als gefüllte Flächen in Konkurrenz zum Inhalt. Jetzt dieselben weichen
   Töne wie die Farbfilter in den gemerkten Aufgaben. */
/* Kopfzeile der Aufgabe als Flex: "Aufgabe 1" links, das Abzeichen rechts. Vorher
   trug es float:right, was in einer Flex-Zeile wirkungslos ist und das Abzeichen
   direkt an die Nummer geklebt hat. */
#panel .structure-header:has(.difficulty-badge){ display:flex; align-items:center; justify-content:space-between; gap:12px; }
#panel .difficulty-badge{ float:none !important; margin-left:auto; display:inline-flex; align-items:center;
  font:700 11.5px/1 var(--body) !important; letter-spacing:.06em !important; text-transform:uppercase;
  padding:5px 11px !important; border-radius:999px !important; border:1px solid transparent; }
#panel .difficulty-easy{ background:#e6f7ef !important; border-color:#bfe7d4 !important; color:#1b7a4d !important; }
#panel .difficulty-medium{ background:#fff7e0 !important; border-color:#f3e0ab !important; color:#9a7208 !important; }
#panel .difficulty-hard{ background:#fdecec !important; border-color:#f6cfcf !important; color:#c02626 !important; }
:root[data-theme="dark"] #panel .difficulty-easy{ background:rgba(46,184,114,.16) !important; border-color:rgba(46,184,114,.35) !important; color:#7fd7ab !important; }
:root[data-theme="dark"] #panel .difficulty-medium{ background:rgba(245,185,15,.16) !important; border-color:rgba(245,185,15,.35) !important; color:#f2ce6a !important; }
:root[data-theme="dark"] #panel .difficulty-hard{ background:rgba(224,82,82,.16) !important; border-color:rgba(224,82,82,.35) !important; color:#ff9a9c !important; }

/* Die Karte mit Übersicht, Zurück und Weiter ist Navigation, kein Inhalt. Getönter
   Grund und eine feine Linie darüber setzen sie vom Lesetext und von der Aufgabe ab. */


/* Gesperrter Prüfen-Knopf: neutrales Grau statt blassem Petrol, das wie ein halb
   aktiver Knopf aussah. */
#panel .exercise .btn-primary:disabled, #panel .aufgabe .btn-primary:disabled,
#panel .exercise .btn:disabled{ background:#eef1f5 !important; border-color:#eef1f5 !important; color:#98a2b3 !important; opacity:1 !important; }
:root[data-theme="dark"] #panel .exercise .btn-primary:disabled, :root[data-theme="dark"] #panel .exercise .btn:disabled{
  background:var(--d-surf2) !important; border-color:var(--d-bd) !important; color:var(--d-tx2) !important; }

/* Kapitelzahl neben der Überschrift der Kapitelliste auf den Untertest-Seiten */
.ls-title .tt-kap-zahl{ font:500 12.5px/1 var(--body); color:var(--muted); text-transform:none; letter-spacing:0; margin-left:8px; }

.simu-nat-toggle{ border:0; background:none; padding:0; cursor:pointer; white-space:nowrap;
  color:var(--accent-tx,var(--accent)); font:600 14px var(--body); display:inline-flex; align-items:center; gap:7px; }
.simu-nat-toggle:hover{ text-decoration:underline; text-underline-offset:2px; }
.simu-nat-toggle i{ font-size:11px; transition:transform .15s; }
.simu-ut.open .simu-nat-toggle i{ transform:rotate(180deg); }
.simu-nat{ display:none; border-top:1px solid var(--line); padding:4px 0 2px; }
.simu-ut.open .simu-nat{ display:block; }
.simu-nat-group{ font:600 11px/1 var(--body); letter-spacing:.08em; text-transform:uppercase;
  color:var(--muted); padding:14px 2px 7px; }
.simu-nat-item{ display:flex; align-items:center; gap:12px; width:100%; text-align:left;
  border:0; border-radius:10px; background:none; cursor:pointer; padding:9px 10px;
  font:600 14.5px/1.3 var(--body); color:var(--ink); transition:background .12s; }
.simu-nat-item:hover{ background:var(--tint); }
.simu-nat-name{ display:inline-flex; align-items:center; gap:8px; min-width:0; flex:1;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.simu-nat-meta{ font:500 12.5px/1 var(--body); color:var(--muted); white-space:nowrap; }
.simu-nat-go{ font:600 13px/1 var(--body); color:var(--accent-tx,var(--accent)); white-space:nowrap;
  display:inline-flex; align-items:center; gap:6px; }
.simu-nat-go i{ font-size:11px; }
.simu-nat-item.is-locked{ color:var(--muted); cursor:pointer; }
.simu-nat-item.is-locked .simu-nat-name i{ font-size:11px; opacity:.8; }
:root[data-theme="dark"] .simu-nat{ border-top-color:var(--d-bd); }
:root[data-theme="dark"] .simu-nat-item{ color:var(--d-tx); }
:root[data-theme="dark"] .simu-nat-item:hover{ background:var(--d-surf2); }
:root[data-theme="dark"] .simu-nat-meta, :root[data-theme="dark"] .simu-nat-group{ color:var(--d-tx2); }
@media (max-width:640px){
  .simu-full{ flex-direction:column; align-items:flex-start; }
  .simu-ut-link{ display:none; }
}
:root[data-theme="dark"] .simu-full, :root[data-theme="dark"] .simu-ut{ background:var(--d-surf2); border-color:var(--d-bd); }
:root[data-theme="dark"] .simu-ut-head{ border-bottom-color:var(--d-bd); }
:root[data-theme="dark"] .simu-ut-title, :root[data-theme="dark"] .simu-full-text b{ color:var(--d-tx); }
:root[data-theme="dark"] .simu-ut-ic{ background:color-mix(in srgb, var(--fc) 22%, transparent); }

/* Nacharbeiten-Überblick (29.10.2026): Striche je Aufgabe, Filter, Gruppen je Untertest */
.nb-legend{ display:flex; gap:16px; margin-top:10px; font-size:13px; color:var(--muted); }
.nb-legend span{ display:inline-flex; align-items:center; gap:6px; }
.nb-legend .nb-tick{ cursor:default; }
.nb-stack{ display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap; border:1px solid var(--line); border-radius:14px; padding:18px 22px; background:#fff; margin-top:4px; }
.nb-stack .na-big{ font-size:32px; }
.nb-filter{ border:1px solid var(--line); border-radius:14px; padding:16px 20px 14px; background:#fff; margin-top:14px; }
.nb-filter-h{ font:700 11.5px/1 var(--body); letter-spacing:.08em; text-transform:uppercase; color:var(--muted); margin-bottom:12px; }
.nb-filter-grid{ display:grid; grid-template-columns:repeat(4, minmax(0,1fr)); gap:12px; }
.nb-filter-grid label{ display:flex; flex-direction:column; gap:5px; font:600 11px/1 var(--body); letter-spacing:.06em; text-transform:uppercase; color:var(--muted); }
/* Ohne appearance:none malt macOS seine eigenen Auswahlfelder über Rahmen und Radius,
   mitsamt Doppelpfeil und Verlauf. Pfeil und Lupe kommen deshalb als eigene Grafik. */
.nb-filter-grid select, .nb-filter-grid input{ appearance:none; -webkit-appearance:none; box-sizing:border-box; width:100%; height:40px; font:400 14.5px/1.2 var(--body); color:var(--ink); background-color:#fff; border:1px solid var(--line-2); border-radius:10px; padding:0 12px; min-width:0; box-shadow:none; transition:border-color .12s, box-shadow .12s; }
.nb-filter-grid select{ cursor:pointer; padding-right:34px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.6 6 6.4 11 1.6' fill='none' stroke='%2364708a' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 12px center; background-size:11px 7px; }
.nb-filter-grid input[type="search"]{ padding-left:36px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%2364708a' stroke-width='1.7' stroke-linecap='round'%3E%3Ccircle cx='7' cy='7' r='4.6'/%3E%3Cpath d='M10.7 10.7 14 14'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:left 12px center; background-size:15px 15px; }
.nb-filter-grid input::-webkit-search-decoration, .nb-filter-grid input::-webkit-search-cancel-button{ -webkit-appearance:none; }
.nb-filter-grid input::placeholder{ color:var(--muted); }
.nb-filter-grid select:hover, .nb-filter-grid input:hover{ border-color:var(--line-2); }
.nb-filter-grid select:focus, .nb-filter-grid input:focus{ outline:none; border-color:var(--accent); box-shadow:0 0 0 3px rgba(15,107,107,.14); }
.nb-filter-row{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-top:14px; }
.nb-chips{ display:flex; gap:8px; flex-wrap:wrap; }
.nb-chip{ font:600 13px/1 var(--body); color:var(--ink-2); background:#fff; border:1px solid var(--line-2); border-radius:999px; padding:7px 13px; cursor:pointer; }
.nb-chip:hover{ border-color:var(--accent); color:var(--accent-tx,var(--accent)); }
.nb-chip.on{ background:var(--accent); border-color:var(--accent); color:#fff; }
.nb-links{ display:flex; gap:16px; font-size:13px; }
.nb-links a{ color:var(--accent-tx,var(--accent)); cursor:pointer; text-decoration:underline; text-underline-offset:2px; }
.nb-count{ margin-top:12px; font-size:13px; color:var(--muted); }
.nb-groups{ display:flex; flex-direction:column; gap:14px; margin-top:14px; }
.nb-ut{ border:1px solid var(--line); border-radius:14px; background:#fff; padding:16px 20px 8px; }
.nb-ut-head{ display:flex; align-items:center; justify-content:space-between; gap:16px; padding-bottom:12px; border-bottom:1px solid var(--line); }
.nb-ut-title{ font:700 16px/1.3 var(--display); color:var(--ink); }
.nb-ut-sub{ font-size:13px; color:var(--muted); margin-top:3px; font-variant-numeric:tabular-nums; }
.nb-ut-sub .nb-r{ color:#2f9e5b; font-weight:600; } .nb-ut-sub .nb-w{ color:#c2417a; font-weight:600; }
:root[data-theme="dark"] .nb-ut-sub .nb-r{ color:#6cc98e; } :root[data-theme="dark"] .nb-ut-sub .nb-w{ color:#e08ab0; }
.nb-run{ font:600 12.5px/1 var(--body); color:var(--accent-tx,var(--accent)); background:#fff; border:1px solid var(--accent-soft); border-radius:9px; padding:8px 12px; cursor:pointer; white-space:nowrap; }
.nb-run:hover{ background:var(--accent); border-color:var(--accent); color:#fff; }
.nb-run-all{ padding:9px 14px; }
.nb-sub{ border-bottom:1px solid var(--line); }
.nb-sub:last-child{ border-bottom:none; }
.nb-sub summary{ display:flex; align-items:center; justify-content:space-between; gap:12px; list-style:none; cursor:pointer; padding:11px 0; font-size:14px; color:var(--ink-2); }
.nb-sub summary::-webkit-details-marker{ display:none; }
.nb-sub-t::before{ content:"\25B8"; display:inline-block; width:14px; color:var(--muted); font-size:12px; transition:transform .15s; }
.nb-sub[open] .nb-sub-t::before{ transform:rotate(90deg); }
.nb-sub-n{ color:var(--muted); }
.nb-ticks{ display:flex; flex-wrap:wrap; gap:4px; padding:0 0 14px 14px; }
.nb-tick{ display:inline-block; width:8px; height:20px; border-radius:2px; border:0; padding:0; cursor:pointer; background:var(--muted); position:relative; }
.nb-tick.right{ background:#2f9e5b; } .nb-tick.wrong{ background:#c2417a; }
.nb-tick.marked::after{ content:""; position:absolute; left:0; right:0; top:0; height:5px; background:#e3b341; border-radius:2px 2px 0 0; }
.nb-tick:hover{ transform:scaleY(1.15); outline:2px solid var(--accent-soft); }
.nb-legend .nb-tick{ width:6px; height:14px; }
@media (max-width:900px){ .nb-filter-grid{ grid-template-columns:repeat(2, minmax(0,1fr)); } }
@media (max-width:560px){ .nb-filter-grid{ grid-template-columns:1fr; } .nb-ut-head{ flex-direction:column; align-items:flex-start; } }
:root[data-theme="dark"] .nb-stack, :root[data-theme="dark"] .nb-filter, :root[data-theme="dark"] .nb-ut{ background:var(--d-surf); border-color:var(--d-bd); }
:root[data-theme="dark"] .nb-ut-head, :root[data-theme="dark"] .nb-sub{ border-color:var(--d-bd); }
:root[data-theme="dark"] .nb-ut-title{ color:var(--d-tx); }
:root[data-theme="dark"] .nb-filter-grid select, :root[data-theme="dark"] .nb-filter-grid input, :root[data-theme="dark"] .nb-chip, :root[data-theme="dark"] .nb-run{ background:var(--d-surf2); border-color:var(--d-bd); color:var(--d-tx); }
:root[data-theme="dark"] .nb-filter-grid select{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.6 6 6.4 11 1.6' fill='none' stroke='%239aa7bd' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
:root[data-theme="dark"] .nb-filter-grid input[type="search"]{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%239aa7bd' stroke-width='1.7' stroke-linecap='round'%3E%3Ccircle cx='7' cy='7' r='4.6'/%3E%3Cpath d='M10.7 10.7 14 14'/%3E%3C/svg%3E"); }

/* Simulation/Übung: Antwort ankreuzen wie auf dem Antwortbogen (29.10.2026).
   Kästchen links, Klick setzt ein X; Streichen rechts ist ein Durchstreich-Symbol, kein X mehr. */
.sim-exam .sim-opt{ align-items:center; }
.sim-exam .sim-opt::before{ content:""; flex:0 0 auto; width:18px; height:18px; margin-right:2px; border:1.5px solid var(--line-2); border-radius:3px; background:#fff no-repeat center/12px 12px; transition:border-color .12s, background-color .12s; }
.sim-exam .sim-opt:not(.fest):not(.aus):hover::before{ border-color:var(--accent); }
.sim-exam .sim-opt.sel::before{ border-color:var(--accent); background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 3l10 10M13 3L3 13' stroke='%230f6b6b' stroke-width='2.2' stroke-linecap='round'/%3E%3C/svg%3E"); }
.sim-exam .sim-opt.correct::before{ border-color:#16a34a; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8.5l3.2 3.2L13 4.5' fill='none' stroke='%2316a34a' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.sim-exam .sim-opt.wrong::before{ border-color:#e5484d; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 3l10 10M13 3L3 13' stroke='%23e5484d' stroke-width='2.2' stroke-linecap='round'/%3E%3C/svg%3E"); }
.sim-exam .sim-opt.aus::before{ opacity:.5; }
.sim-exam .sim-opt .sim-ol{ border-color:transparent !important; color:inherit !important; }
.sim-kreuz{ font-size:13px; }
.sim-submit, .sim-submit:hover{ background:var(--accent) !important; filter:none !important; }
.sim-submit:hover{ background:var(--accent-2) !important; }
.sim-timer{ font-family:var(--display) !important; }
.sim-markhint{ background:var(--accent-soft) !important; border-color:#cfe4e2 !important; }
.sim-markhint i{ color:var(--accent-tx,var(--accent)) !important; }

/* Mathe-Lücken im Kapitel (29.10.2026): Bruch / Potenz / Produkt als Felder, siehe mathGapHtml() in renderContent.js */
#panel .exercise .mi{ display:inline-flex; align-items:center; gap:4px; vertical-align:middle; margin:0 4px; }
#panel .exercise .mi .mi-leaf{ width:3.2em; height:34px; margin:0; padding:2px 6px; text-align:center; border:1px solid var(--line-2); border-radius:8px; font-size:16px; background:#fff; box-shadow:none; }
#panel .exercise .mi .mi-leaf:focus{ border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft); outline:none; }
/* Bruch (30.10.2026, Quick 261030-v1t): zwei gleich hohe Zeilen, damit der Strich genau in der Mitte
   liegt (= Höhe des Gleichheitszeichens). Zähler sitzt auf dem Strich, Nenner hängt darunter; der Strich
   ist so breit wie der breitere Teil plus 6 px Rand – nicht breiter. */
#panel .exercise .mi-frac{ display:inline-grid; grid-template-rows:1fr 1fr; vertical-align:middle; }
#panel .exercise .mi-frac .mi-num, #panel .exercise .mi-frac .mi-den{ display:flex; justify-content:center; padding:0 6px; }
#panel .exercise .mi-frac .mi-num{ align-self:end; padding-bottom:4px; }
#panel .exercise .mi-frac .mi-den{ align-self:start; padding-top:4px; border-top:2px solid var(--ink); }
/* Potenz: Exponent als echtes Hochzeichen – Basis rückt nach unten, Exponent bleibt oben, nichts ragt heraus */
#panel .exercise .mi-pow{ display:inline-flex; align-items:flex-start; }
#panel .exercise .mi-pow > .mi-leaf{ margin-top:12px; }
#panel .exercise .mi-pow > sup{ position:static; top:auto; margin-left:2px; line-height:1; font-size:inherit; }
#panel .exercise .mi-pow > sup .mi-leaf{ width:2.6em; height:26px; font-size:13.5px; padding:0 4px; background-image:none !important; } /* kein Häkchen-Symbol im kleinen Exponentenfeld, zu eng */
#panel .exercise .mi-mul{ display:inline-flex; align-items:center; gap:7px; }
#panel .exercise .mi-dot{ font-size:18px; color:var(--ink); }
/* Jedes Feld wird einzeln bewertet (markGap in renderContent.js): richtiger Zähler grün, falscher Nenner rot */
#panel .exercise .mi .mi-leaf.is-valid{ border-color:#2eb872 !important; background:#eefaf3; }
#panel .exercise .mi .mi-leaf.is-invalid{ border-color:#e05252 !important; background:#fdf1f1; }
:root[data-theme="dark"] #panel .exercise .mi .mi-leaf.is-valid{ background:rgba(46,184,114,.15); }
:root[data-theme="dark"] #panel .exercise .mi .mi-leaf.is-invalid{ background:rgba(224,82,82,.15); }
:root[data-theme="dark"] #panel .exercise .mi-frac .mi-den{ border-top-color:var(--d-tx); }

/* ---- Seitenleiste ein-/ausklappen (29.10.2026): Symbol oben rechts neben „Start" bzw. in der Modulleiste ---- */
/* Der Einklapp-Pfeil liegt über den Einträgen der Seitenleiste. Vorher z-index:2, dadurch
   schob sich die Hover-Fläche des darunterliegenden Eintrags darüber. Eigener Hintergrund,
   damit die Fläche auch nicht durchscheint. 500 bleibt unter der unteren Leiste (600)
   und der Kopfleiste (1000). */
.sb-toggle{ display:inline-flex; position:absolute; top:6px; right:12px; z-index:500; width:28px; height:28px; align-items:center; justify-content:center; border:0; border-radius:8px; background:var(--paper); color:var(--accent-tx,var(--accent)); font-size:13px; cursor:pointer; }
.sb-toggle:hover{ background:var(--accent-soft); }
.sb-expand{ display:none; position:fixed; left:0; top:76px; z-index:150; width:30px; height:34px; align-items:center; justify-content:center; border:1px solid var(--line); border-left:0; border-radius:0 8px 8px 0; background:#fff; color:var(--accent-tx,var(--accent)); font-size:13px; cursor:pointer; box-shadow:0 2px 8px rgba(15,27,51,.08); }
.sb-expand:hover{ background:var(--accent-soft); }
:root[data-theme="dark"] .sb-toggle, :root[data-theme="dark"] .sb-expand{ color:#9fe3db; }
:root[data-theme="dark"] .sb-toggle{ background:var(--d-surf); }
:root[data-theme="dark"] .sb-expand{ background:var(--d-surf); border-color:var(--d-bd); }
:root[data-theme="dark"] .sb-toggle:hover, :root[data-theme="dark"] .sb-expand:hover{ background:var(--d-surf2); }
@media (max-width:1000px){ .sb-toggle, .sb-expand{ display:none !important; } }
/* Im Hauptmenü gibt es nichts einzuklappen, dort schliesst das Kreuz in der Kopfleiste.
   Der Pfeil stand sonst mitten im geöffneten Menü. */
body.htm-hauptmenue .sb-toggle{ display:none !important; }

/* ---- "Demnächst": Abzeichen in der Seitenleiste und Hinweis-Overlay mit Comic ----
   Markup und Steuerung stehen in lernplan/index.php (htmSoon / htmSoonClose). Die
   Illustration bringt ihre eigenen Farben mit und bleibt im Dunkelmodus hell, damit die
   Comic-Linien lesbar bleiben. */
.sb-soon{ margin-left:auto; flex:none; font:700 10px/1 var(--body); letter-spacing:.06em; text-transform:uppercase; color:var(--accent-tx,var(--accent)); background:var(--accent-soft); border:1px solid #cfe4e2; border-radius:999px; padding:4px 7px; }
.sidebar-item.sidebar-soon .sidebar-button{ color:var(--ink-2); }
:root[data-theme="dark"] .sb-soon{ color:#9fe3db; background:var(--d-surf2); border-color:var(--d-bd); }

.htm-soon-overlay{ position:fixed; inset:0; z-index:10001; display:flex; align-items:center; justify-content:center; padding:20px; background:rgba(11,19,36,.5); opacity:0; transition:opacity .16s ease; }
.htm-soon-overlay.show{ opacity:1; }
.htm-soon-card{ width:100%; max-width:430px; background:var(--paper); border-radius:20px; overflow:hidden; box-shadow:0 24px 70px rgba(16,24,40,.3); transform:translateY(10px) scale(.97); transition:transform .18s ease; }
.htm-soon-overlay.show .htm-soon-card{ transform:none; }
.htm-soon-art{ display:block; width:100%; height:auto; border-bottom:1px solid var(--line); }
.htm-soon-body{ padding:20px 26px 0; text-align:center; }
.htm-soon-body h3{ font:700 21px/1.25 var(--display); letter-spacing:-.02em; color:var(--ink); margin:0 0 8px; }
.htm-soon-body p{ font-size:14.5px; line-height:1.6; color:var(--ink-2); margin:0; }
.htm-soon-actions{ display:flex; justify-content:center; padding:18px 26px 22px; }
.htm-soon-btn{ border:none; background:var(--accent); color:#fff; font:700 14px/1 var(--body); padding:13px 24px; border-radius:999px; cursor:pointer; transition:background .12s; }
.htm-soon-btn:hover{ background:var(--accent-2); }
.htm-soon-btn:focus-visible{ outline:3px solid rgba(15,107,107,.35); outline-offset:2px; }
:root[data-theme="dark"] .htm-soon-card{ background:var(--d-surf); }
:root[data-theme="dark"] .htm-soon-art{ border-bottom-color:var(--d-bd); }
:root[data-theme="dark"] .htm-soon-body h3{ color:var(--d-tx); }
:root[data-theme="dark"] .htm-soon-body p{ color:var(--d-tx2); }
@media (prefers-reduced-motion: reduce){
  .htm-soon-overlay, .htm-soon-card{ transition:none; }
}

/* ---- Meldungen in Formularen: eine Form für die ganze Plattform ----
   Vorher hatte jede Seite ihr eigenes Aussehen: die Einstellungen diese Pille mit Symbol,
   Hilfe und Feedback die rohen Bootstrap-Kästen. estMsg(ok, text) in lernplan/index.php baut
   das Markup, die Regeln stehen hier, damit jedes Panel sie bekommt. Die beiden .alert-Regeln
   fangen ältere Stellen ab, die noch Bootstrap-Klassen ausgeben. */
.est-msg,
.alert.alert-success, .alert.alert-danger{ display:flex; align-items:center; gap:9px; font-family:var(--body); font-size:14px; font-weight:600; line-height:1.45; padding:10px 14px; border:0; border-radius:10px; margin:0; animation:estMsgIn .2s ease; }
.est-msg i{ font-size:15px; flex-shrink:0; }
.est-msg-success, .alert.alert-success{ background:var(--accent-soft) !important; color:var(--accent-2) !important; }
.est-msg-danger, .alert.alert-danger{ background:#fdf1f1 !important; color:#b3261e !important; }
@keyframes estMsgIn{ from{ opacity:0; transform:translateY(-4px); } to{ opacity:1; transform:translateY(0); } }
:root[data-theme="dark"] .est-msg-success, :root[data-theme="dark"] .alert.alert-success{ background:rgba(15,107,107,.25) !important; color:#9fe3db !important; }
:root[data-theme="dark"] .est-msg-danger, :root[data-theme="dark"] .alert.alert-danger{ background:rgba(229,72,77,.18) !important; color:#ff9a9c !important; }
@media (prefers-reduced-motion: reduce){
  .est-msg, .alert.alert-success, .alert.alert-danger{ animation:none; }
}

/* ---- Farben der gemerkten Aufgaben ----
   Für dieselben drei Bedeutungen lagen in style.css drei verschiedene Sätze: der Streifen
   am linken Kartenrand (#f04444 / #f5b90f / #2eb872), die aktive Flagge (#e5484d / #d9a406 /
   #17995f) und der Fachname darüber (#c02626 / #9a7208 / #1b7a4d). In einer Karte standen
   damit drei leicht verschiedene Rot- beziehungsweise Grüntöne nebeneinander.
   Maßgeblich ist jetzt der Ton der Flagge, denn die setzt der Nutzer selbst. Der Streifen
   nimmt genau diesen Wert, der Text eine dunklere Stufe davon für genug Kontrast. */
:root{
  --fl-rot:#e5484d;   --fl-rot-tx:#b3261e;
  --fl-gelb:#d9a406;  --fl-gelb-tx:#9a7208;
  --fl-gruen:#17995f; --fl-gruen-tx:#15714a;
}
.bookmark-card[data-color="rot"],   .bookmark-card[data-color="rot"]:hover  { border-left-color:var(--fl-rot) !important; }
.bookmark-card[data-color="gelb"],  .bookmark-card[data-color="gelb"]:hover { border-left-color:var(--fl-gelb) !important; }
.bookmark-card[data-color="gruen"], .bookmark-card[data-color="gruen"]:hover{ border-left-color:var(--fl-gruen) !important; }
/* :not(.bm-type-fach), weil der Fachname seine eigene Fachfarbe trägt (--fc, bei Physik
   violett). Ohne die Ausnahme gewinnt diese Regel, brand.css lädt zuletzt, und der Fachname
   würde plötzlich rot, gelb oder grün. Gemeint ist nur die Art, also Kapitel oder Check-up. */
.bookmark-card[data-color="rot"] .bm-type:not(.bm-type-fach)  { color:var(--fl-rot-tx) !important; }
.bookmark-card[data-color="gelb"] .bm-type:not(.bm-type-fach) { color:var(--fl-gelb-tx) !important; }
.bookmark-card[data-color="gruen"] .bm-type:not(.bm-type-fach){ color:var(--fl-gruen-tx) !important; }
.bm-flag-rot.active,   .bm-flag-rot:hover  { color:var(--fl-rot) !important; }
.bm-flag-gelb.active,  .bm-flag-gelb:hover { color:var(--fl-gelb) !important; }
.bm-flag-gruen.active, .bm-flag-gruen:hover{ color:var(--fl-gruen) !important; }
/* Im Dunkelmodus dieselben Töne aufgehellt, sonst saufen sie auf dem dunklen Grund ab. */
:root[data-theme="dark"]{
  --fl-rot:#ff9a9c;   --fl-rot-tx:#ff9a9c;
  --fl-gelb:#f0c95f;  --fl-gelb-tx:#f0c95f;
  --fl-gruen:#5fd3a0; --fl-gruen-tx:#5fd3a0;
}

/* ---- Einführungs-Tour im Comic-Stil ----
   Markup und Zeichnungen stehen in lernplan/tour.js. Kräftige Tinte als Rahmen, ein
   versetzter Schatten wie bei einem aufgeklebten Sticker, Überschrift in Bangers. Der
   Fließtext bleibt bewusst in der normalen Schrift, Comic nur für den Rahmen. */
.tour-tip{ border:2.5px solid var(--ink) !important; border-radius:18px !important; padding:16px 20px 14px !important; box-shadow:7px 7px 0 0 rgba(15,27,51,.12), 0 24px 60px rgba(0,0,0,.26) !important; }
.tour-head{ display:flex; align-items:center; gap:12px; margin-bottom:8px; }
.tour-art{ flex:none; width:60px; height:60px; display:block; }
.tour-step{ margin:0 0 0 auto !important; border:1.5px solid var(--ink) !important; background:#fff !important; color:var(--ink) !important; font-size:10.5px !important; letter-spacing:.6px !important; }
.tour-title{ font-family:'Bangers','Comic Sans MS',var(--display) !important; font-size:27px !important; font-weight:400 !important; letter-spacing:.6px !important; line-height:1.1 !important; color:var(--ink) !important; margin-bottom:6px !important; }
.tour-text{ font-size:14.5px !important; color:var(--ink-2) !important; }
.tour-text b{ color:var(--ink); }
.tour-next{ border:2px solid var(--ink) !important; box-shadow:3px 3px 0 0 rgba(15,27,51,.18) !important; }
.tour-back{ border:2px solid var(--line-2) !important; }
.tour-spot{ border-radius:14px; }
:root[data-theme="dark"] .tour-tip{ border-color:#2b3a55 !important; box-shadow:7px 7px 0 0 rgba(0,0,0,.35), 0 24px 60px rgba(0,0,0,.6) !important; }
:root[data-theme="dark"] .tour-title{ color:var(--d-tx) !important; }
:root[data-theme="dark"] .tour-step{ border-color:#2b3a55 !important; background:#16233c !important; color:#9fe3db !important; }
:root[data-theme="dark"] .tour-text{ color:var(--d-tx2) !important; }

/* ---- Übung sichtbar als Übung (30.10.2026): Mint-Karte, Petrol-Kachel am Titel, Petrol-Label ---- */
#panel .tabcontent.exercise-group > h4{ display:flex; align-items:center; gap:12px; }
#panel .tabcontent.exercise-group > h4::before{
  content:"\f044"; font-family:"Font Awesome 6 Free"; font-weight:900; font-size:15px; line-height:1;
  width:36px; height:36px; border-radius:10px; display:inline-flex; align-items:center; justify-content:center;
  background:var(--accent); color:#fff; flex:0 0 auto;
}
#panel .exercise-group .exercise{ background:var(--accent-soft); border-color:#cfe4e2; }
#panel .exercise .small.text-secondary{ color:var(--accent-tx,var(--accent)) !important; }
#panel .exercise .radio .radio-symbol-i{ background:#fff; }
#panel .exercise .erklaerung{ border-top-color:#cfe4e2; }
#panel .exercise-group .exercise-navigation button div{ border-color:#b9d6d3; }
:root[data-theme="dark"] #panel .exercise-group .exercise{ background:color-mix(in srgb, var(--accent) 16%, var(--d-surf)) !important; border-color:color-mix(in srgb, var(--accent) 35%, var(--d-bd)); }
:root[data-theme="dark"] #panel .exercise .small.text-secondary{ color:color-mix(in srgb, var(--accent) 55%, #fff) !important; }
:root[data-theme="dark"] #panel .exercise .radio .radio-symbol-i{ background:var(--d-surf2); }
:root[data-theme="dark"] #panel .exercise .erklaerung{ border-top-color:color-mix(in srgb, var(--accent) 35%, var(--d-bd)); }

/* ---- Übung dynamisch (30.10.2026, Quick 261030-uat): Fortschrittsleiste statt Punkte, Einblenden beim Aufgabenwechsel, Feedback-Zeile ---- */
#panel .exercise-group .exercise-navigation{ top:14px; right:0; gap:5px; width:min(220px, 38%); }
#panel .exercise-group .exercise-navigation button{ flex:1 1 0; min-width:16px; height:16px; padding:0; border:none !important; border-radius:999px !important; background:transparent !important; display:flex; align-items:center; cursor:pointer; }
#panel .exercise-group .exercise-navigation button div{ width:100%; height:6px; margin:0; border:none; border-radius:999px; background:#cfe4e2; transition:background .2s, height .2s; }
#panel .exercise-group .exercise-navigation button:hover div{ background:#9fc8c4; }
#panel .exercise-group .exercise-navigation button.focused div{ background:var(--accent); height:9px; }
#panel .exercise-group .exercise-navigation button.correct div{ background:#2eb872 !important; border:none !important; }
#panel .exercise-group .exercise-navigation button.incorrect div{ background:#e05252 !important; border:none !important; }
:root[data-theme="dark"] #panel .exercise-group .exercise-navigation button div{ background:color-mix(in srgb, var(--accent) 35%, var(--d-bd)) !important; border:none !important; }
:root[data-theme="dark"] #panel .exercise-group .exercise-navigation button.focused div{ background:var(--accent) !important; }

@keyframes exEnter{ from{ opacity:0; transform:translateY(10px); } to{ opacity:1; transform:none; } }
@keyframes exShake{ 20%{ transform:translateX(-4px); } 40%{ transform:translateX(4px); } 60%{ transform:translateX(-3px); } 80%{ transform:translateX(3px); } }
#panel .exercise-group .exercise.ex-enter{ animation:exEnter .3s cubic-bezier(.2,.7,.2,1) both; }
#panel .exercise-group .exercise{ transition:background .25s, border-color .25s; }
#panel .exercise-group .exercise.is-solved{ background:#eaf7f0; border-color:#bfe6d0; }

#panel .exercise .ex-feedback{ display:flex; align-items:center; gap:10px; margin:16px 0 2px; padding:11px 14px; border-radius:10px; font-size:15px; font-weight:600; line-height:1.4; animation:exEnter .25s ease-out both; }
#panel .exercise .ex-feedback::before{ font-family:"Font Awesome 6 Free"; font-weight:900; font-size:11px; width:22px; height:22px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; color:#fff; flex:0 0 auto; }
#panel .exercise .ex-feedback.ok{ background:#d9f1e3; color:#1b7a4d; }
#panel .exercise .ex-feedback.ok::before{ content:"\f00c"; background:#2eb872; }
#panel .exercise .ex-feedback.bad{ background:#fbe3e3; color:#b42323; animation:exEnter .25s ease-out both, exShake .4s ease-in-out .05s; }
#panel .exercise .ex-feedback.bad::before{ content:"\f00d"; background:#e05252; }

#panel .exercise.is-solved .btn.check{ background:#fff !important; color:var(--ink-2) !important; border-color:var(--line-2) !important; }
#panel .exercise.is-solved .btn.next{ background:var(--accent) !important; color:#fff !important; border-color:var(--accent) !important; }
#panel .exercise.is-solved .btn.next:hover{ background:var(--accent-2) !important; }
#panel .exercise .btn.check, #panel .exercise .btn.next{ transition:background .15s, color .15s, transform .12s; }
#panel .exercise .btn.check:active, #panel .exercise .btn.next:active{ transform:scale(.97); }
#panel .exercise .radio{ transition:background .15s; }
#panel .exercise .radio:hover{ background:rgba(255,255,255,.55); }
#panel .exercise .radio.selected{ background:#fff; }
#panel .exercise input[type=text]{ transition:border-color .15s, box-shadow .15s; }

:root[data-theme="dark"] #panel .exercise-group .exercise.is-solved{ background:color-mix(in srgb, #2eb872 14%, var(--d-surf)) !important; border-color:color-mix(in srgb, #2eb872 40%, var(--d-bd)); }
:root[data-theme="dark"] #panel .exercise .ex-feedback.ok{ background:color-mix(in srgb, #2eb872 22%, var(--d-surf)); color:#8fe3b4; }
:root[data-theme="dark"] #panel .exercise .ex-feedback.bad{ background:color-mix(in srgb, #e05252 22%, var(--d-surf)); color:#f3a3a3; }
:root[data-theme="dark"] #panel .exercise .radio:hover, :root[data-theme="dark"] #panel .exercise .radio.selected{ background:var(--d-surf2); }
@media (prefers-reduced-motion:reduce){ #panel .exercise-group .exercise.ex-enter, #panel .exercise .ex-feedback{ animation:none; } }

/* ---- Übung Wasserzeichen-Stift (30.10.2026, Quick 261030-uth, Variante E): Mint etwas kräftiger, großes Stift-Symbol unten rechts ---- */
#panel .exercise-group .exercise{ position:relative; overflow:hidden; background:#e3f1ef; border-color:#c3dedb; }
#panel .exercise-group .exercise::before{
  content:"\f044"; font-family:"Font Awesome 6 Free"; font-weight:900; font-size:180px; line-height:1;
  position:absolute; right:-20px; bottom:-40px; transform:rotate(-12deg); color:var(--accent-tx,var(--accent)); opacity:.07;
  pointer-events:none; user-select:none; z-index:0;
}
#panel .exercise-group .exercise > *{ position:relative; z-index:1; }
/* Der Hinweis zum Merken ragt aus der Uebungskarte heraus. Die Karte beschneidet ihren
   Inhalt (fuer das Stift-Wasserzeichen) und bildet durch ihre Einblend-Animation einen
   eigenen Stapel, der Hinweis wurde deshalb abgeschnitten und von der Ueberschrift
   ueberdeckt. Solange er offen ist, gibt die Karte den Rand frei und legt sich nach
   oben; das Wasserzeichen pausiert so lange, sonst stuende es ausserhalb der Karte. */
#panel .exercise-group .exercise:hover:has(.bm-info-help:hover),
#panel .exercise-group .exercise:has(.bm-info-help.open),
#panel .exercise-group .exercise:has(.bm-info-help:focus-within){
  overflow:visible !important; z-index:600; }
#panel .exercise-group .exercise:hover:has(.bm-info-help:hover)::before,
#panel .exercise-group .exercise:has(.bm-info-help.open)::before,
#panel .exercise-group .exercise:has(.bm-info-help:focus-within)::before{ content:none; }
#panel .exercise-group .exercise .bm-info-help{ z-index:100001; }
#panel .exercise-group .exercise.is-solved::before{ color:#2eb872; opacity:.09; }
:root[data-theme="dark"] #panel .exercise-group .exercise::before{ color:color-mix(in srgb, var(--accent) 60%, #fff); opacity:.08; }
:root[data-theme="dark"] #panel .exercise-group .exercise.is-solved::before{ color:#2eb872; opacity:.1; }

/* ---- Check-up: grosses Symbol im Hintergrund der Fläche, nicht in der Karte ----
   Es liegt im Panel hinter dem Inhalt, unten rechts neben der Aufgabenkarte, und wird
   damit nicht von deren Rand beschnitten. Nur im Check-up, erkennbar an .tabcontent.aufgabe. */
/* Dasselbe Stift-Symbol wie bei der Übung, aber in der weissen Fläche neben der Karte:
   Es hängt am Panel, nicht an der Aufgabe, und liegt damit frei im Hintergrund. */
#panel:has(> .tabcontent.aufgabe)::after{
  content:"\f044"; font-family:"Font Awesome 6 Free"; font-weight:900; font-size:240px; line-height:1;
  /* fixed statt absolute: Das Symbol bleibt beim Scrollen an seiner Stelle, statt mit
     dem Inhalt nach oben zu wandern. */
  position:fixed; right:40px; bottom:40px; transform:rotate(-12deg);
  color:var(--accent-tx,var(--accent)); opacity:.05; pointer-events:none; user-select:none; z-index:0;
}
#panel .tabcontent.aufgabe{ position:relative; z-index:1; }
/* Zwei Stifte auf einer Seite sind einer zu viel: Liegt das grosse Symbol schon frei im
   Panel, wie im Check-up und bei den gemerkten Aufgaben, bekommt die Uebungskarte
   darunter kein eigenes mehr. */
#panel:has(> .tabcontent.aufgabe) .exercise-group .exercise::before{ content:none !important; }
/* Schriftgroesse im Check-up und in Simulationen. Den Faktor setzt der Aa-Knopf
   (applyFontScale in index.php). Bisher trugen ihn nur Kapiteltext, Uebungen und
   Tabellen, die Aufgabenkarten blieben unveraendert. Grundgroesse sind dieselben 18px
   wie im Kapiteltext, damit eine Aufgabe nicht kleiner gesetzt ist als eine Lernseite.
   Absolute Einheit, nicht em: Sonst kaeme der Faktor doppelt an, weil applyFontScale
   zusaetzlich eine Prozentgroesse auf #content setzt. */
#panel .tabcontent.aufgabe{ font-size:calc(18px * var(--font-scale, 1)); }
/* Dasselbe fuer die Simulationen: Dort stehen Frage und Antworten in style.css auf festen
   15px, der Aa-Knopf kam also auch hier nicht an. */
.sim-qtext{ font-size:calc(15px * var(--font-scale, 1)) !important; }
.sim-opt{ font-size:calc(15px * var(--font-scale, 1)) !important; }
.sim-expl{ font-size:calc(13.5px * var(--font-scale, 1)); }
:root[data-theme="dark"] #panel:has(> .tabcontent.aufgabe)::after{ color:color-mix(in srgb, var(--accent) 60%, #fff); opacity:.07; }
@media (max-width:1100px){ #panel:has(> .tabcontent.aufgabe)::after{ display:none; } }

/* ---- Kapitelliste als Timeline (Quick 261030-v8l) ---- */
.structure-body .structure-item.tablink{ overflow:visible; }
.structure-body .structure-item.tablink::before,
.structure-body .structure-item.tablink::after{
  content:""; position:absolute; left:33px; width:2px; background:var(--line-2); z-index:0; pointer-events:none;
}
.structure-body .structure-item.tablink::before{ top:0; bottom:50%; }
.structure-body .structure-item.tablink::after{ top:50%; bottom:0; }
.structure-body li.tablink:first-of-type::before, .structure-body li.tablink:last-of-type::after{ display:none; }
/* erledigt: Linie bis zur nächsten Station in Petrol */
.structure-body .tablink:has(input:checked)::after,
.structure-body .tablink:has(input:checked) + .tablink::before{ background:var(--accent); }
/* Stationen */
.structure-body .tablink .structure-icon{ z-index:1; transition:background .15s, border-color .15s; cursor:pointer; }
.structure-body .tablink:not(.disabled) .structure-icon:hover{ border-color:var(--accent) !important; }
.structure-body .tablink.active .structure-icon{ background:#fff !important; border:2px solid var(--accent) !important; }
.structure-body .tablink.active .structure-icon i{ color:var(--accent-tx,var(--accent)) !important; }
.structure-body .tablink:has(input:checked) .structure-icon{ background:var(--accent) !important; border-color:var(--accent) !important; }
.structure-body .tablink:has(input:checked) .structure-icon i{ display:none; }
.structure-body .tablink:has(input:checked) .structure-icon::after{
  content:"\f00c"; font-family:"Font Awesome 6 Free"; font-weight:900; font-size:12px; line-height:1; color:#fff;
}
/* Übungen: kleinere Station auf derselben Achse */
.structure-body .tablink:has(.fa-pencil) .structure-icon{ width:24px !important; height:24px !important; left:22px !important; font-size:11px; }
.structure-body .tablink:has(.fa-pencil):has(input:checked) .structure-icon::after{ font-size:10px; }
/* rechte Status-Kreise entfallen (Input bleibt im DOM für die Fortschrittslogik) */
.structure-body .tablink .checkbox-wrapper{ display:none !important; }

/* ---- Check-up: gleiche Darstellung wie die Kapitelabschnitte ----
   Der Status sitzt links an der Station statt rechts in einem eigenen Kreis. Die
   Check-up-Zeilen erkennt man an data-question-id. Richtig und falsch behalten ihre
   Farbe, die Unterscheidung ist hier eine echte Information und nicht nur "erledigt". */
.structure-body .tablink[data-question-id] .structure-mark{ display:none !important; }
.structure-body .tablink[data-question-id].correct .structure-icon{ background:var(--accent) !important; border-color:var(--accent) !important; }
.structure-body .tablink[data-question-id].wrong .structure-icon{ background:#e05252 !important; border-color:#e05252 !important; }
.structure-body .tablink[data-question-id].correct .structure-icon i,
.structure-body .tablink[data-question-id].wrong .structure-icon i{ display:none; }
.structure-body .tablink[data-question-id].correct .structure-icon::after,
.structure-body .tablink[data-question-id].wrong .structure-icon::after{
  font-family:"Font Awesome 6 Free"; font-weight:900; font-size:11px; line-height:1; color:#fff; }
.structure-body .tablink[data-question-id].correct .structure-icon::after{ content:"\f00c"; }
.structure-body .tablink[data-question-id].wrong .structure-icon::after{ content:"\f00d"; }
/* Die Linie bis zur beantworteten Aufgabe mitfärben, wie bei den Kapiteln */
.structure-body .tablink[data-question-id].correct::after{ background:var(--accent); }
.structure-body .tablink[data-question-id].wrong::after{ background:#e05252; }
/* Dunkelmodus */
:root[data-theme="dark"] .structure-body .structure-item.tablink::before,
:root[data-theme="dark"] .structure-body .structure-item.tablink::after{ background:var(--d-bd); }
:root[data-theme="dark"] .structure-body .tablink:has(input:checked)::after,
:root[data-theme="dark"] .structure-body .tablink:has(input:checked) + .tablink::before{ background:var(--accent); }
:root[data-theme="dark"] .structure-body .tablink.active .structure-icon{ background:var(--d-surf) !important; border-color:#9fe3db !important; }
:root[data-theme="dark"] .structure-body .tablink.active .structure-icon i{ color:#9fe3db !important; }
:root[data-theme="dark"] .structure-body .tablink:has(input:checked) .structure-icon{ background:var(--accent) !important; border-color:var(--accent) !important; }

/* ---- Seitenleiste: Pastellkacheln hinter den sieben Untertest-Symbolen (Quick 261030-vmu) ----
   Kachel = 12 % der Untertest-Farbe (--c je Punkt in nav.php), Symbol bleibt Petrol; aktiv =
   Vollpetrol mit weißem Symbol. Übrige Gruppen behalten flache Petrol-Symbole. */
#navigation_p .sidebar-item.sb-ut .tt-ic{ display:inline-flex; align-items:center; justify-content:center; width:28px !important; height:28px; left:11px !important; border-radius:8px; font-size:14px !important; background:color-mix(in srgb, var(--c) 12%, #fff); color:var(--c) !important; opacity:1; }
#navigation_p .sidebar-item.sb-ut:hover .tt-ic{ background:color-mix(in srgb, var(--c) 20%, #fff); }
#navigation_p .sidebar-item.sb-ut.active .tt-ic{ background:var(--c); color:#fff !important; }
/* Aufgeklappte Modulliste: Der Eintrag darüber wird genauso markiert wie beim Klick auf
   die ganze Zeile. Die Liste ist das nächste Geschwister-Element, daher :has(+ …). */
#navigation_p .sidebar-item.sb-has-sub:has(+ .sb-sub.open) .tt-ic{ background:var(--c); color:#fff !important; }
#navigation_p .sidebar-item.sb-has-sub:has(+ .sb-sub.open) .sidebar-button{ color:var(--accent-tx,var(--accent)); font-weight:600; }
:root[data-theme="dark"] #navigation_p .sidebar-item.sb-ut .tt-ic{ background:color-mix(in srgb, var(--c) 22%, var(--d-surf)); color:var(--c) !important; }
:root[data-theme="dark"] #navigation_p .sidebar-item.sb-ut.active .tt-ic{ background:var(--c); color:#fff !important; }
/* Aufgeklappte Modulliste auch im Dark Mode markieren: Die Dark-Regel fuer den
   Grundzustand darueber setzte die Flaeche sonst wieder zurueck, das Symbol blieb
   blass, waehrend es im Light Mode gefuellt ist. */
:root[data-theme="dark"] #navigation_p .sidebar-item.sb-has-sub:has(+ .sb-sub.open) .tt-ic{
  background:var(--c) !important; color:#fff !important; }
:root[data-theme="dark"] #navigation_p .sidebar-item.sb-has-sub:has(+ .sb-sub.open) .sidebar-button{
  color:var(--accent-tx,var(--accent)); font-weight:600; }

/* ---- Übung: aufgeklappte Lösung als weißer Kasten (Quick 261030-w4g) ----
   Nutzer: „wenn man Lösung anzeigen macht, soll es in einem weißen Kasten sein“.
   .erklaerung (normale und Schritt-für-Schritt-Lösung aus renderContent.js) statt
   Trennlinie jetzt als weiße Karte auf der Mint-Fläche #e3f1ef. */
#panel .exercise .erklaerung{ margin-top:18px; padding:16px 18px; background:#fff; border:1px solid #c3dedb; border-top:1px solid #c3dedb; border-radius:10px; }
#panel .exercise .erklaerung > p:empty{ display:none; }
#panel .exercise .erklaerung > :last-child, #panel .exercise .erklaerung > :last-child > :last-child, #panel .exercise .erklaerung > :nth-last-child(2):has(+ p:empty){ margin-bottom:0; }
#panel .exercise .erklaerung .step-wrapper:first-child{ padding-top:0; }
:root[data-theme="dark"] #panel .exercise .erklaerung{ background:var(--d-surf2) !important; border-color:var(--d-bd) !important; }

/* ---- Kapitelliste: keine Trennlinien zwischen den Einträgen ----
   Der senkrechte Strahl mit den Punkten trennt die Abschnitte schon, die grauen Linien
   quer dazu zerschnitten ihn optisch. Betrifft nur die Einträge selbst (.tablink): Die
   Linie unter dem Kopf der Liste (.mint-host) bleibt, sie trennt Kapitelname und Liste.
   Die beiden Regeln weiter oben, die für den aktiven Eintrag und seinen Vorgänger eine
   Linienfarbe setzen, laufen damit ins Leere und sind hier mit abgeräumt. */
.structure-body .structure-item.tablink,
.structure-body .structure-item.tablink:hover,
.structure-body .structure-item.tablink.active,
.structure-body .structure-item.tablink.active:hover,
.structure-body .structure-item:has(+ .active),
:root[data-theme="dark"] .structure-body .structure-item.tablink,
:root[data-theme="dark"] .tablink.tablink-summary{ border-bottom:0 !important; }

/* ---- Strahl bleibt auf der Markierung sichtbar ----
   Die Fläche des aktiven Eintrags deckt wieder die volle Breite. Der Strahl liegt ohnehin
   darüber, er besteht aus zwei Pseudo-Elementen des Eintrags und wird nach dessen
   Hintergrund gezeichnet. Sichtbar war er trotzdem kaum: Sein Grau (--line-2) liegt zu nah
   am Petrolton der Markierung, der Strich wirkte dadurch unterbrochen. Auf dem aktiven
   Eintrag bekommt er deshalb einen kräftigeren Ton. Erledigte Abschnitte behalten ihr
   volles Petrol, auch wenn sie gerade geöffnet sind. */
.structure-body .structure-item.tablink.active::before,
.structure-body .structure-item.tablink.active::after{
  background:color-mix(in srgb, var(--accent) 45%, #fff);
}
.structure-body .tablink.active:has(input:checked)::after,
.structure-body .tablink:has(input:checked) + .tablink.active::before{ background:var(--accent); }
:root[data-theme="dark"] .structure-body .structure-item.tablink.active::before,
:root[data-theme="dark"] .structure-body .structure-item.tablink.active::after{
  background:color-mix(in srgb, #9fe3db 55%, transparent);
}

/* Die obere Hälfte des Strahls fehlte beim aktiven Eintrag. Schuld ist eine ältere Regel in
   style.css: "#navigation_s .active:before { display:none !important; content:none !important }".
   Sie stammt aus der Zeit, als :before der Marker am linken Rand war, und löscht das
   Pseudo-Element, aus dem heute das obere Stück des Strahls besteht. Hier gezielt zurückgeholt,
   die alte Regel bleibt für alles andere unangetastet.
   :not(:first-of-type), weil der erste Eintrag oben keinen Strahl hat: Dort hing sonst ein
   kurzes Stück Linie über dem ersten Punkt, meine Regel hob die Ausblendung wieder auf. */
#navigation_s .structure-body .structure-item.tablink.active:not(:first-of-type)::before,
.structure-body .structure-item.tablink.active:not(:first-of-type)::before{
  content:"" !important; display:block !important;
}
#navigation_s .structure-body .structure-item.tablink.active:first-of-type::before,
.structure-body .structure-item.tablink.active:first-of-type::before{
  content:none !important; display:none !important;
}

/* ---- Navigator (openQuickView in lernplan/index.php) ----
   Mittiges Fenster mit dunklem Hintergrund, links die Module, rechts deren Kapitel.
   Breit genug, um beides gleichzeitig zu sehen, auf schmalen Geräten untereinander. */
.nv-overlay{ position:fixed; inset:0; z-index:5000; display:none; align-items:center; justify-content:center; padding:24px; background:rgba(11,19,36,.55); -webkit-backdrop-filter:blur(2px); backdrop-filter:blur(2px); }
.nv-overlay.auf{ display:flex; }
.nv-box{ width:980px; max-width:100%; max-height:84vh; display:flex; flex-direction:column; background:var(--paper); border-radius:16px; box-shadow:0 30px 80px rgba(0,0,0,.34); overflow:hidden; }
.nv-head{ flex:none; display:flex; align-items:center; gap:10px; padding:14px 18px; border-bottom:1px solid var(--line); color:var(--muted); }
.nv-head input{ flex:1; border:0; outline:0; background:none; font:400 16px/1.3 var(--body); color:var(--ink); }
.nv-head input::placeholder{ color:var(--muted); }
.nv-esc{ flex:none; font:600 11px/1 var(--body); color:var(--muted); border:1px solid var(--line-2); border-radius:6px; padding:4px 7px; }
/* min-height:0 und overflow:hidden zusammen: Ohne beides wächst dieser Block in Safari mit
   seinem Inhalt und schiebt die Fußzeile aus der Box, die sie dann abschneidet. Sichtbar
   als Fußzeile, die beim Öffnen kurz da ist und verschwindet, sobald die Module geladen
   sind. flex-basis bleibt auto, mit 0 fiele die Box auf Kopf und Fußzeile zusammen, denn
   sie hat keine feste Höhe, sondern nur eine Obergrenze.
   grid-template-rows:minmax(0,1fr) gehört zwingend dazu: Ohne die Zeilenvorgabe ist die
   Rasterzeile inhaltshoch, die Spalten bekommen keine Grenze, scrollen deshalb nicht und
   werden stattdessen unten abgeschnitten. */
.nv-cols{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.25fr); grid-template-rows:minmax(0,1fr); min-height:0; overflow:hidden; flex:1 1 auto; }
/* Unten großzügiger, sonst endet die Spalte mitten im letzten Eintrag und es sieht aus,
   als ließe sich nicht weiterscrollen. overscroll-behavior hält das Scrollen im Fenster. */
.nv-col{ min-height:0; overflow-y:auto; overscroll-behavior:contain; padding:10px 10px 28px; scroll-padding-bottom:28px; }
.nv-col-mod{ border-right:1px solid var(--line); background:var(--tint); }
.nv-col-h{ display:flex; align-items:center; gap:9px; font:700 11.5px/1 var(--body); letter-spacing:.08em; text-transform:uppercase; color:var(--muted); padding:6px 8px 10px; }
.nv-open{ margin-left:auto; border:1px solid var(--line-2); background:#fff; color:var(--accent-tx,var(--accent)); font:600 11px/1 var(--body); letter-spacing:0; text-transform:none; padding:5px 10px; border-radius:999px; cursor:pointer; }
.nv-open:hover{ border-color:var(--accent); background:var(--accent-soft); }
.nv-fach{ display:flex; align-items:center; gap:8px; font:700 11px/1 var(--body); letter-spacing:.07em; text-transform:uppercase; color:var(--muted); padding:12px 10px 6px; }
.nv-dot{ width:8px; height:8px; border-radius:50%; background:var(--fc,var(--muted)); }
.nv-item{ display:flex; align-items:center; gap:11px; padding:9px 10px; border-radius:10px; cursor:pointer; color:var(--ink-2); font-size:15px; }
.nv-item:hover{ background:#fff; }
.nv-col-kap .nv-item:hover, .nv-item.aus{ background:var(--tint); }
.nv-item.ist-an{ background:#fff; color:var(--ink); font-weight:600; }
.nv-item.ist-hier{ color:var(--accent-tx,var(--accent)); font-weight:600; }
.nv-item.ist-gesperrt{ color:var(--muted); cursor:default; }
.nv-ic{ flex:none; width:30px; height:30px; border-radius:9px; display:inline-flex; align-items:center; justify-content:center; font-size:13px; color:var(--fc,var(--muted)); background:color-mix(in srgb, var(--fc,var(--muted)) 13%, #fff); }
.nv-ic-kap{ border-radius:50%; }
/* Symbol des Untertests im Kopf der Modulspalte, etwas kleiner als die Zeilen-Symbole */
.nv-ic-sek{ width:22px; height:22px; border-radius:7px; font-size:11px; }
.nv-txt{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.nv-txt small{ display:block; font-size:11.5px; color:var(--muted); font-weight:400; }
.nv-lock{ flex:none; font-size:11px; color:var(--muted); }
.nv-leer{ padding:18px 12px; color:var(--muted); font-size:14px; text-align:center; }
/* Fußzeile mit den Tastenhinweisen */
.nv-fuss{ flex:none; display:flex; flex-wrap:wrap; align-items:center; gap:6px 18px; padding:10px 18px; border-top:1px solid var(--line); background:var(--tint); color:var(--muted); font-size:12.5px; }
.nv-fuss kbd{ font:600 11px/1 var(--body); color:var(--ink-2); background:#fff; border:1px solid var(--line-2); border-radius:5px; padding:3px 6px; margin:0 1px; }
.nv-fuss-tipp{ margin-left:auto; }
@media (max-width:760px){ .nv-fuss-tipp{ display:none; } }

/* Verlauf am unteren Rand der Spalten, solange noch etwas kommt (navFade setzt .hat-mehr).
   Als sticky Pseudo-Element am Ende des Inhalts: klebt an der Unterkante des Scrollbereichs,
   ohne eigenen Container und ohne die Klickflächen zu stören. */
/* Flacher und weicher als zuvor: 34px deckten die unterste Zeile halb zu, der Verlauf soll
   nur andeuten, dass es weitergeht, nicht den Inhalt verschlucken. */
.nv-col::after{ content:""; display:block; position:sticky; bottom:-28px; height:22px; margin-top:-22px; opacity:0; transition:opacity .15s; pointer-events:none; }
.nv-col.hat-mehr::after{ opacity:1; }
.nv-col-mod::after{ background:linear-gradient(to bottom, rgba(245,247,250,0), rgba(245,247,250,.92)); }
.nv-col-kap::after{ background:linear-gradient(to bottom, rgba(255,255,255,0), rgba(255,255,255,.92)); }
:root[data-theme="dark"] .nv-col-mod::after{ background:linear-gradient(to bottom, rgba(15,20,32,0), var(--d-bg)); }
:root[data-theme="dark"] .nv-col-kap::after{ background:linear-gradient(to bottom, rgba(22,30,46,0), var(--d-surf)); }
:root[data-theme="dark"] .nv-fuss{ background:var(--d-bg); border-top-color:var(--d-bd); color:var(--d-tx2); }
:root[data-theme="dark"] .nv-fuss kbd{ background:var(--d-surf2); border-color:var(--d-bd); color:var(--d-tx); }
/* Check-up am Ende der Kapitelspalte, abgesetzt wie auf der Modulseite */
.nv-check{ margin-top:6px; border-top:1px solid var(--line); padding-top:7px; border-radius:0 0 10px 10px; }
.nv-ic-check{ color:var(--accent-tx,var(--accent)); background:var(--accent-soft); }
:root[data-theme="dark"] .nv-check{ border-top-color:var(--d-bd); }
:root[data-theme="dark"] .nv-ic-check{ color:#9fe3db; background:rgba(15,107,107,.3); }
@media (max-width:760px){
  .nv-cols{ grid-template-columns:1fr; grid-template-rows:minmax(0,1fr) minmax(0,1fr); }
  .nv-col-mod{ border-right:0; border-bottom:1px solid var(--line); }
  .nv-box{ max-height:90vh; }
}
:root[data-theme="dark"] .nv-box{ background:var(--d-surf); }
:root[data-theme="dark"] .nv-head{ border-bottom-color:var(--d-bd); }
:root[data-theme="dark"] .nv-head input{ color:var(--d-tx); }
:root[data-theme="dark"] .nv-col-mod{ background:var(--d-bg); border-right-color:var(--d-bd); }
:root[data-theme="dark"] .nv-item{ color:var(--d-tx2); }
:root[data-theme="dark"] .nv-item:hover, :root[data-theme="dark"] .nv-item.aus{ background:var(--d-surf2); }
:root[data-theme="dark"] .nv-item.ist-an{ background:var(--d-surf2); color:var(--d-tx); }
:root[data-theme="dark"] .nv-item.ist-hier{ color:#9fe3db; }
:root[data-theme="dark"] .nv-ic{ background:color-mix(in srgb, var(--fc,var(--muted)) 24%, var(--d-surf)); }
:root[data-theme="dark"] .nv-open{ background:var(--d-surf2); border-color:var(--d-bd); color:#9fe3db; }

/* Untertest über dem Modulnamen in der Kapitelleiste (kapitelNavigation.php) */
.structure-header .tt-sektion, .sidebar .tt-sektion{ display:flex; align-items:center; gap:8px; margin:0 0 10px; font:700 11px/1 var(--body); letter-spacing:.07em; text-transform:uppercase; color:var(--muted); }
/* Der Untertest sitzt als eigener, dezent grauer Streifen ganz oben, in beiden Leisten
   gleich hoch und gleich eingerückt. 40px Höhe, damit der Einklapp-Pfeil mit seinen 28px
   bei top:6px genau mittig darin steht. In der Kapitelleiste ziehen die negativen
   Seitenränder den Streifen über den Innenabstand des Kopfes hinaus auf volle Breite. */
.structure-header .tt-sektion, .sidebar .tt-sektion-mod{
  min-height:40px; box-sizing:border-box; padding:10px 20px; margin:0 0 12px;
  background:var(--tint); border-bottom:1px solid var(--line);
  /* Rechts bleibt Platz fuer den Einklapp-Pfeil. */
  padding-right:48px; overflow:hidden;
}
/* Der Name steckt in einem eigenen Element, weil Auslassungspunkte auf einem
   Flex-Container selbst nicht greifen: Der Text waere dort ein anonymes Flex-Item. */
.structure-header .tt-sektion-tx, .sidebar .tt-sektion-tx{
  min-width:0; overflow:hidden; white-space:nowrap; text-overflow:ellipsis;
}
.structure-header .tt-sektion{ margin-left:-20px; margin-right:-20px; margin-top:-14px; }
/* .sidebar bringt 2px Innenabstand oben mit; ohne diesen Ausgleich säße der Streifen in der
   Modulleiste 2px tiefer als in der Kapitelleiste und der Pfeil wäre nicht mehr mittig. */
.sidebar .tt-sektion-mod{ margin-top:-2px; }
:root[data-theme="dark"] .structure-header .tt-sektion, :root[data-theme="dark"] .sidebar .tt-sektion-mod{ background:var(--d-bg); border-bottom-color:var(--d-bd); }
/* Die Modulliste begann 30px unter dem Untertest-Streifen (12px Rand der Zeile,
   14px von .module, 4px von der ersten Fach-Überschrift). Das war zu viel Luft,
   jetzt sind es 12px. */
.sidebar .tt-sektion-mod{ margin-bottom:6px; }
.sidebar .module{ margin-top:0 !important; }
.sidebar .module .mod-group:first-child{ margin-top:6px; }

/* In der Modulleiste sitzt die Zeile ganz oben im Scrollbereich und braucht denselben
   seitlichen Rand wie die Fach-Überschriften darunter. */

.structure-header .tt-sektion-ic, .sidebar .tt-sektion-ic{ flex:none; width:20px; height:20px; border-radius:6px; display:inline-flex; align-items:center; justify-content:center; font-size:10px; color:var(--fc,var(--muted)); background:color-mix(in srgb, var(--fc,var(--muted)) 13%, #fff); }
:root[data-theme="dark"] .structure-header .tt-sektion, :root[data-theme="dark"] .sidebar .tt-sektion{ color:var(--d-tx2); }
:root[data-theme="dark"] .structure-header .tt-sektion-ic, :root[data-theme="dark"] .sidebar .tt-sektion-ic{ background:color-mix(in srgb, var(--fc,var(--muted)) 24%, var(--d-surf)); }

/* ---- Check-up-Karte auf der Modulseite ----
   Vorher: 5px petrolfarbene Kante links, 46px vollflächiger Kreis, farbiger Schlagschatten.
   Die Karte sprang damit stärker ins Auge als die Kapitelliste darüber, obwohl sie dasselbe
   Gewicht hat. Jetzt dieselbe ruhige Form wie die übrigen Karten, Petrol nur als Akzent. */
.checkup-card{ gap:16px !important; border:1px solid var(--line) !important; border-left:1px solid var(--line) !important; border-radius:14px !important; padding:16px 18px !important; box-shadow:none !important; }
.checkup-card:hover{ border-color:var(--line-2) !important; box-shadow:0 2px 10px rgba(15,27,51,.05) !important; }
.checkup-icon{ width:42px !important; height:42px !important; font-size:18px !important; background:var(--accent-soft) !important; color:var(--accent-tx,var(--accent)) !important; }
.checkup-label{ font-size:14.5px !important; color:var(--ink-2) !important; margin-bottom:9px !important; }
.checkup-label strong{ color:var(--ink) !important; }
.checkup-progress{ height:9px !important; background:var(--line) !important; }
.checkup-progress-bar, .checkup-progress-correct{ background:var(--accent) !important; }
.checkup-progress-wrong{ background:#e05252 !important; }
.checkup-btn{ background:var(--accent) !important; border-radius:10px !important; font-weight:600 !important; padding:10px 20px !important; }
.checkup-btn:hover{ background:var(--accent-2) !important; }

/* Fertig in Petrol, demselben Grün wie das Symbol und der Knopf der Check-up-Karte
   darunter. Vorher war es ein helles Mint, das neben der Karte wie eine Fremdfarbe wirkte.
   Verwechslungsgefahr besteht nicht: Angefangene Kapitel tragen ihre Fachfarbe. */
.checkup-card.is-done{ border-color:#cfe4e2 !important; box-shadow:none !important; }
.checkup-card.is-done .checkup-icon{ background:var(--accent) !important; color:#fff !important; }
.checkup-card.is-done .checkup-progress-bar, .checkup-card.is-done .checkup-progress-correct{ background:var(--accent) !important; }
.checkup-card.is-done .checkup-btn{ background:var(--accent) !important; }
.checkup-card.is-done .checkup-btn:hover{ background:var(--accent-2) !important; }
.kap-item.is-done .kap-icon{ background:var(--accent-soft) !important; color:var(--accent-tx,var(--accent)) !important; }
.kap-item.is-done .kap-progress-bar{ background:var(--accent) !important; }
.kap-item.is-done .kap-percent{ color:var(--accent-tx,var(--accent)) !important; }
:root[data-theme="dark"] .checkup-card{ background:var(--d-surf) !important; border-color:var(--d-bd) !important; }
:root[data-theme="dark"] .checkup-icon{ background:rgba(15,107,107,.3) !important; color:#9fe3db !important; }
:root[data-theme="dark"] .checkup-progress{ background:var(--d-surf2) !important; }
:root[data-theme="dark"] .kap-item.is-done .kap-icon{ background:rgba(15,107,107,.3) !important; color:#9fe3db !important; }
:root[data-theme="dark"] .kap-item.is-done .kap-progress-bar{ background:#9fe3db !important; }
:root[data-theme="dark"] .kap-item.is-done .kap-percent{ color:#9fe3db !important; }

/* ---- Menü-Symbol: Striche werden zum Kreuz, solange das Hauptmenü offen ist ----
   Beide Symbole liegen übereinander im selben Knopf, umgeschaltet wird über die Klasse am
   body, die htmMenueUmschalten() setzt. Gedreht und ausgeblendet statt getauscht, damit der
   Wechsel sichtbar ist und nicht springt. */
/* Der Knopf war inline-flex und sass damit auf der Grundlinie des umgebenden div.
   Die Unterlänge darunter zählte zur Zeilenhöhe und schob das Symbol optisch nach oben,
   dasselbe Muster wie beim Logo. display:flex nimmt die Zeilenbox weg, der gleichmässige
   Innenabstand ersetzt die alten 9px oben zu 13px unten aus style.css. */
.nav-left .menu{ display:flex !important; align-items:center; justify-content:center; padding:0 !important; }
/* Optischer Ausgleich zum Logo: Die Bildmarke beginnt links bei 0, der Knopf hat seine
   Fläche aussenherum. Ein kleiner Zug nach links rückt beide Symbole auf dieselbe
   gedachte Linie, ohne die Klickfläche zu verkleinern. */
.nav-left > div:has(> .menu){ margin-left:-6px; }
.nav-left > div:has(> .menu){ display:flex; align-items:center; }
.menu{ position:relative; width:44px; height:44px; }
.menu .menu-ic{ position:absolute; top:50%; left:50%; transition:opacity .18s ease, transform .18s ease; }
.menu .menu-ic-strich{ opacity:1; transform:translate(-50%,-50%) rotate(0deg); }
.menu .menu-ic-kreuz{ opacity:0; transform:translate(-50%,-50%) rotate(-90deg); }
body.htm-hauptmenue .menu .menu-ic-strich{ opacity:0; transform:translate(-50%,-50%) rotate(90deg); }
body.htm-hauptmenue .menu .menu-ic-kreuz{ opacity:1; transform:translate(-50%,-50%) rotate(0deg); }
@media (prefers-reduced-motion: reduce){ .menu .menu-ic{ transition:none; } }

/* ---- Notizen am rechten Rand (31.10.2026) ----
   Spalte neben dem Text, wie die Kommentarspalte in Word. Die Karten hängen absolut im
   #panel, das ist der Scroll-Container, dadurch wandern sie beim Scrollen mit dem Text mit.
   #panel hatte bisher gar keine Position (die top/left-Werte in style.css liefen deshalb
   ins Leere), relative ändert also nichts am Layout und macht es zum Bezugspunkt.
   Positionen und Überlappungen rechnet lernplan/highlight.js (randMalen). */
#panel{ position:relative; }
/* Steht die Spalte, wird Text plus Spalte als ein Block von 996px zentriert: Der Text
   rutscht nach links, die Karten sitzen rechts daneben. Ohne Notizen bleibt alles wie vorher. */
#panel.hat-notizrand .kap-crumb,
#panel.hat-notizrand .kap-head,
#panel.hat-notizrand .tabcontent{ margin-left:calc(50% - 508px) !important; margin-right:0 !important; }
/* Die Spalte ist ein sichtbarer Block (31.10.2026, Nutzer: „da muss ein Balken mit Notizen
   sein, als Block“): getönte Fläche mit Rahmen, nur so hoch wie Kopfzeile plus Karten, also
   bis zur Unterkante der letzten Notiz (Höhe setzt randMalen; Nutzer 31.10.: „nur so lang,
   wie viele Notizen da sind“). Oben eine klebende Kopfzeile „Notizen“ mit Anzahl. Die Karten
   bleiben auf Höhe ihrer Textstelle. 720px Text + 24px Luft + 272px Spalte = 1016px. */
#hlNotes{
  position:absolute; top:0; left:calc(50% + 236px); width:272px; box-sizing:border-box;
  background:var(--tint); border:1px solid var(--line); border-radius:12px; pointer-events:none; z-index:120;
}
/* Die Kopfzeile bleibt beim Scrollen oben stehen. Der Klebepunkt liegt am Innenrand des
   Panels, nicht bei 0: Sonst drueckt ihn die Klebebindung schon im Ruhezustand um diesen
   Innenabstand nach unten und ueber ihr bleibt eine Luecke offen, durch die beim Scrollen
   die Karten hindurchlaufen. Den Wert misst highlight.js am Panel. */
#hlNotes .hlnotes-kopf{
  position:sticky; top:var(--hl-kleb, 0px); z-index:2; pointer-events:auto;
  display:flex; align-items:center; gap:8px;
  padding:9px 14px; background:var(--tint); border-bottom:1px solid var(--line);
  border-radius:12px 12px 0 0;
  font:700 12px/1 var(--body); letter-spacing:.06em; text-transform:uppercase; color:var(--accent-tx,var(--accent));
}
/* Sobald sie klebt: oben eine feine Linie als Abschluss und keine Rundung mehr, dazu ein
   weicher Schatten, der zeigt, dass die Karten darunter durchlaufen. */
#hlNotes.klebt .hlnotes-kopf{
  border-top:1px solid var(--line); border-radius:0;
  box-shadow:0 6px 12px -8px rgba(15,27,51,.3);
}
:root[data-theme="dark"] #hlNotes.klebt .hlnotes-kopf{ border-top-color:var(--d-bd); }
#hlNotes .hlnotes-kopf i{ font-size:13px; }
#hlNotes .hlnotes-zahl{
  margin-left:auto; min-width:22px; height:22px; padding:0 7px; border-radius:11px; box-sizing:border-box;
  display:inline-flex; align-items:center; justify-content:center;
  background:#fff; border:1px solid var(--line); font:600 12px/1 var(--body); color:var(--ink-2); letter-spacing:0;
}
/* Verbindungslinie von der Markierung zur Karte (Nutzer 31.10.: „das muss dahin linken“):
   waagerecht vom Ende der Stelle bis zur Karte, bei nach unten geschobenen Karten mit
   Knick nach unten. Farbe = Markierungsfarbe, Werte setzt randMalen. */
#hlNotes .hlnote-linie{
  position:absolute; pointer-events:none; box-sizing:border-box;
  border-top:2px solid var(--c, var(--accent)); border-right:2px solid var(--c, var(--accent));
  border-top-right-radius:6px; opacity:.75;
  transition:top .18s ease, height .18s ease;
}
#hlNotes .hlnote-linie.gerade{ border-right:0; border-radius:0; }
:root[data-theme="dark"] #hlNotes, :root[data-theme="dark"] #hlNotes .hlnotes-kopf{ background:var(--d-surf); border-color:var(--d-bd); }
:root[data-theme="dark"] #hlNotes .hlnotes-zahl{ background:var(--d-surf2); border-color:var(--d-bd); color:var(--d-tx); }
/* Schalter in der Werkzeugleiste: Spalte weg, Text wieder mittig. Die Notizen bleiben
   gespeichert und sind über den Stift an der Markierung weiter erreichbar. */
body.notizen-aus #hlNotes{ display:none !important; }
body.notizen-aus #panel.hat-notizrand .kap-crumb,
body.notizen-aus #panel.hat-notizrand .kap-head,
body.notizen-aus #panel.hat-notizrand .kap-next.frei,
body.notizen-aus #panel.hat-notizrand .tabcontent{ margin-left:auto !important; margin-right:auto !important; }
#hlNotes .hlnote{
  position:absolute; left:10px; width:250px; pointer-events:auto; box-sizing:border-box;
  background:#fff; border:1px solid var(--line); border-left:3px solid var(--c, var(--accent));
  border-radius:10px; padding:10px 12px; cursor:pointer;
  box-shadow:0 1px 2px rgba(15,27,51,.05);
  transition:top .18s ease, box-shadow .12s, border-color .12s;
}
#hlNotes .hlnote:hover, #hlNotes .hlnote.zeig{ box-shadow:0 6px 18px rgba(15,27,51,.10); }
/* Aktive Karte nur dezent hervorheben: der farbige Streifen links sagt ohnehin, zu
   welcher Markierung sie gehört. Der kräftige Petrol-Rahmen wirkte wie ein Eingabefeld. */
#hlNotes .hlnote.aktiv{ box-shadow:0 4px 14px rgba(15,27,51,.10); background:var(--accent-soft); }
:root[data-theme="dark"] #hlNotes .hlnote.aktiv{ background:var(--d-surf2); }
/* Neue Karten kommen weich dazu statt zu springen. */
#hlNotes .hlnote{ animation:hlnoteRein .18s ease both; }
@keyframes hlnoteRein{ from{ opacity:0; transform:translateX(6px); } to{ opacity:1; transform:none; } }
@media (prefers-reduced-motion: reduce){ #hlNotes .hlnote{ animation:none; transition:none; } }
#hlNotes .hlnote.bearbeiten{ cursor:default; }
#hlNotes .hlnote-zitat::before{ content:"„"; }
#hlNotes .hlnote-zitat::after{ content:"“"; }
#hlNotes .hlnote-zitat{
  font:600 11.5px/1.45 var(--body); color:var(--muted); margin-bottom:5px; font-style:italic;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}
/* Ein kleiner Stift hinter dem Notiztext zeigt, dass sich die Karte bearbeiten laesst.
   Er haengt als Pseudo-Element am Text, nicht als eigener Knopf: Ein Klick in den Text
   oeffnet die Bearbeitung ohnehin, ein zusaetzliches Ziel waere nur Rauschen. */
#hlNotes .hlnote-text{ font:400 13.5px/1.55 var(--body); color:var(--ink-2); white-space:pre-wrap; overflow-wrap:anywhere; }
#hlNotes .hlnote-text::after{ content:"\f303"; font-family:"Font Awesome 6 Free"; font-weight:900;
  font-size:10px; margin-left:7px; color:var(--muted); opacity:.55; vertical-align:1px;
  white-space:nowrap; transition:opacity .12s, color .12s; }
#hlNotes .hlnote:hover .hlnote-text::after{ opacity:1; color:var(--accent-tx,var(--accent)); }
#hlNotes .hlnote.bearbeiten .hlnote-text::after{ content:none; }
#hlNotes .hlnote-text:empty::before{ content:"Notiz schreiben …"; color:var(--muted); font-style:italic; }
/* Karte im Bearbeiten-Zustand: ruhiges Eingabefeld, ein klarer Hauptknopf, die
   beiden Nebenaktionen als schlichte Schrift. Drei gleich schwere Kästen nebeneinander
   wirkten unruhig und liessen offen, was der normale Weg ist. */
#hlNotes .hlnote.bearbeiten{ box-shadow:0 8px 24px rgba(15,27,51,.12); background:#fff; }
#hlNotes textarea{
  display:block; width:100%; box-sizing:border-box; margin-top:6px; min-height:84px; resize:vertical;
  border:1px solid var(--line); border-radius:9px; padding:9px 11px;
  font:400 13.5px/1.55 var(--body); color:var(--ink); background:var(--tint);
  transition:background .12s, border-color .12s, box-shadow .12s;
}
#hlNotes textarea::placeholder{ color:var(--muted); }
#hlNotes textarea:focus{ outline:none; background:#fff; border-color:var(--accent); box-shadow:0 0 0 3px rgba(15,107,107,.12); }
#hlNotes .hlnote-row{ display:flex; align-items:center; gap:6px; margin-top:9px; }
/* Reine Symbolknöpfe: gleich grosse Flächen, damit die Reihe ruhig bleibt. */
#hlNotes .hlnote-btn{
  width:32px; height:32px; flex:none; display:inline-flex; align-items:center; justify-content:center;
  border:0; background:none; color:var(--muted); border-radius:9px; cursor:pointer;
  transition:background .12s, color .12s;
}
#hlNotes .hlnote-btn svg{ display:block; }
#hlNotes .hlnote-btn:hover{ background:var(--tint); color:var(--ink); }
#hlNotes .hlnote-btn.speichern{ background:var(--accent); color:#fff; }
#hlNotes .hlnote-btn.speichern:hover{ background:var(--accent-2); color:#fff; }
#hlNotes .hlnote-btn.loeschen{ margin-left:auto; color:#b3261e; }
#hlNotes .hlnote-btn.loeschen:hover{ background:#fdecec; color:#b3261e; }
/* Formeln in den Karten sollen die Zeile nicht sprengen */
#hlNotes .katex{ font-size:1em; }
#hlNotes .hlnote-text .katex-display{ margin:.3em 0; }
:root[data-theme="dark"] #hlNotes .hlnote.bearbeiten{ background:var(--d-surf); }
:root[data-theme="dark"] #hlNotes textarea{ background:var(--d-surf2); border-color:var(--d-bd); color:var(--d-tx); }
:root[data-theme="dark"] #hlNotes textarea:focus{ background:var(--d-surf); }
:root[data-theme="dark"] #hlNotes .hlnote-btn:hover{ background:var(--d-surf2); color:var(--d-tx); }
:root[data-theme="dark"] #hlNotes .hlnote-btn.loeschen{ color:#ff9a9c; }
:root[data-theme="dark"] #hlNotes .hlnote-btn.loeschen:hover{ background:rgba(224,82,82,.16); color:#ff9a9c; }
/* Die Stelle im Text, deren Karte gerade angeklickt oder überfahren wird */
#panel .hl.hl-fokus{ box-shadow:0 0 0 2px var(--accent); border-radius:3px; }
#panel .hl.hl-zeig{ box-shadow:0 0 0 2px var(--line-2); border-radius:3px; }
/* Steht die Karte am Rand, braucht es den Stift hinter der Stelle nicht mehr: Die Notiz
   ist ja sichtbar. Ohne Spalte (schmale Ansicht) bleibt er als einziger Hinweis stehen. */
#panel.hat-notizrand .hl.hl-has-note::after{ display:none; }
:root[data-theme="dark"] #hlNotes .hlnote{ background:var(--d-surf); border-color:var(--d-bd); }
:root[data-theme="dark"] #hlNotes .hlnote-text{ color:var(--d-tx); }
:root[data-theme="dark"] #hlNotes .hlnote-zitat{ color:var(--d-tx2); }
:root[data-theme="dark"] #hlNotes textarea{ background:var(--d-surf2); border-color:var(--d-bd); color:var(--d-tx); }
:root[data-theme="dark"] #hlNotes .hlnote-btn{ background:var(--d-surf2); border-color:var(--d-bd); color:var(--d-tx); }

/* Die Markierung des aktiven Eintrags deckt die ganze Zeilenbreite ab, der Strahl liegt
   darüber. Ein Verlauf, der erst hinter der Station begann, war hier zwischenzeitlich
   eingebaut und wurde wieder entfernt: Die Fläche soll durchgehen (31.10.2026). */

/* Knopf "Wichtige Biofakten": Pille mit Stern, der den Zustand zeigt. Vorher stand dort
   in beiden Zustaenden derselbe Umriss-Stern, nur die Beschriftung wechselte. */
#kapitelTools .kt-btn.kt-pf-btn{ width:auto !important; padding:0 14px 0 11px !important;
  gap:7px !important; border-radius:999px !important; border:1px solid transparent !important;
  font:600 12.5px/1 var(--body) !important; letter-spacing:-.01em; white-space:nowrap;
  background:#f1f3f6 !important; color:var(--muted) !important;
  transition:background .14s, color .14s, border-color .14s !important; }
#kapitelTools .kt-btn.kt-pf-btn:hover{ background:#e8ebf0 !important; color:var(--ink-2) !important; }
#kapitelTools .kt-btn.kt-pf-btn.active{ background:#fff6cc !important; color:#7a5b00 !important;
  border-color:#f0da85 !important; }
#kapitelTools .kt-btn.kt-pf-btn.active:hover{ background:#ffefa8 !important; }
#kapitelTools .kt-btn.kt-pf-btn .kt-pf-ic{ width:16px !important; height:16px !important; flex:none; }
.kt-pf-btn .kt-pf-an{ display:none; }
.kt-pf-btn.active .kt-pf-an{ display:inline-block; }
.kt-pf-btn.active .kt-pf-aus{ display:none; }
:root[data-theme="dark"] #kapitelTools .kt-btn.kt-pf-btn{ background:var(--d-surf2) !important;
  color:var(--d-tx2) !important; border-color:transparent !important; }
:root[data-theme="dark"] #kapitelTools .kt-btn.kt-pf-btn.active{ background:#5a5220 !important;
  color:#fff7d6 !important; border-color:#7d7232 !important; }

/* Profilmenü blendet sanft ein wie der Neuigkeiten-Kasten, statt hart aufzuspringen.
   Bewegt wird ueber translate, nicht ueber transform: Dort steht die Position, die
   Bootstrap per Popper setzt, eine eigene transform-Animation wuerde sie ueberschreiben
   und das Menue verschieben. */
@keyframes htmUdRein{ from{ opacity:0; translate:0 -6px; } to{ opacity:1; translate:0 0; } }
.user-dropdown.dropdown-menu.show{ animation:htmUdRein .18s ease both; }
@media (prefers-reduced-motion:reduce){ .user-dropdown.dropdown-menu.show{ animation:none; } }

/* ---- Dark Mode: verbleibende Einzelfaelle aus der Kontrastpruefung ----
   Nur Farben, keine Groessen oder Positionen. */
/* Helle Flaechen, die im Dark Mode hell geblieben waren */
:root[data-theme="dark"] .an-nr{ background:color-mix(in srgb, var(--accent) 28%, var(--d-surf)) !important; }
:root[data-theme="dark"] .htm-seg-btn.active{ background:var(--d-surf) !important; border-color:#2f8f8f !important; color:var(--accent-tx) !important; box-shadow:none !important; }
/* Text auf der vollflaechigen Markenfarbe */
:root[data-theme="dark"] .dash-stat:first-child .dash-stat-k{ color:#d7eeea !important; }
:root[data-theme="dark"] .fkt-stufe-emp{ color:#c7f0ea !important; }
/* Fachfarbe als Textfarbe auf dunklem Grund aufhellen */
:root[data-theme="dark"] .bookmark-card .bm-type.bm-type-fach{
  color:color-mix(in srgb, var(--fc) 55%, #ffffff) !important; }

/* Deaktivierte Knoepfe im Dark Mode: Die Flaeche war hell geblieben, die graue Schrift
   darauf kaum zu lesen. Nur Farben, Groesse und Zustandslogik bleiben unveraendert. */
:root[data-theme="dark"] #panel .btn-primary:disabled,
:root[data-theme="dark"] #panel button.btn-primary[disabled]{
  background:var(--d-surf2) !important; border-color:var(--d-bd) !important; color:#8d99ad !important; }
:root[data-theme="dark"] .nav-button.primary:disabled{ color:#8793a6 !important; }
/* Das kleine Info-Zeichen an den Merken-Karten: weisse Schrift auf heller Kugel. */
:root[data-theme="dark"] .bm-info-ic{ background:#5b6675 !important; }

/* Dunkelmodus: Kapitelkopf durchgehend dunkel
   Der Block mit Relevanz, Kapitelnummer und Kapiteltitel steht als .list-group-item auf
   --d-surf, also heller als die Spalte. Eine ältere Regel setzt ihn beim Darüberfahren auf
   transparent, wodurch die dunklere Spaltenfarbe durchkam: Der Kasten wurde beim Hover
   dunkler statt zu bleiben, wie er ist. Jetzt ist er in beiden Zuständen transparent und
   damit durchgehend so dunkel wie die Spalte. Gilt genauso für den Kopf der Check-up-Leiste,
   das ist derselbe Kasten in der anderen Ansicht. */
:root[data-theme="dark"] #navigation_s .structure-item.mint-host,
:root[data-theme="dark"] #navigation_s .structure-item.mint-host:hover,
:root[data-theme="dark"] #navigation_s .structure-item.cu-head,
:root[data-theme="dark"] #navigation_s .structure-item.cu-head:hover,
:root[data-theme="dark"] .structure-item.mint-host,
:root[data-theme="dark"] .structure-item.mint-host:hover,
:root[data-theme="dark"] .structure-item.cu-head,
:root[data-theme="dark"] .structure-item.cu-head:hover { background: transparent !important; }

/* Quanti-Guide: Bausteine sichtbar machen (261101-1pb). Erkennung in renderContent.js, quantiStruktur() */
#panel .tabcontent p.q-weg{ display:none; }
#panel .tabcontent h3.q-teil{ font-size:22px !important; margin:2.6em 0 .9em; padding:1.1em 0 0 14px; border-top:1px solid var(--line); position:relative; }
#panel .tabcontent h3.q-teil::before{ content:""; position:absolute; left:0; top:1.15em; bottom:.1em; width:4px; border-radius:2px; background:var(--accent); }
#panel .tabcontent h3.q-unter{ font-size:18px !important; }
#panel .tabcontent h3.q-probe{ font-size:16px !important; margin:1.5em 0 .45em; color:var(--accent-tx,var(--accent)); }
#panel .tabcontent .q-aufgabe{ margin:1.1em 0 1.8em; padding:18px 20px; border-radius:12px; background:var(--tint); border:1px solid var(--line); }
#panel .tabcontent .q-aufgabe > h3.q-aufgabe-k{ margin:0 0 .7em !important; font:700 11.5px/1 var(--body) !important; letter-spacing:.08em; text-transform:uppercase; color:var(--accent-tx,var(--accent)); }
#panel .tabcontent .q-aufgabe > p{ margin:.5em 0; }
#panel .tabcontent .q-aufgabe > p.q-opt{ margin:.4em 0; padding:7px 12px; background:var(--paper); border:1px solid var(--line); border-radius:8px; }
#panel .tabcontent .q-aufgabe > p.q-opt:first-of-type{ margin-top:.9em; }
#panel .tabcontent .q-buchst{ display:inline-block; min-width:2.3em; font-weight:700; color:var(--accent-tx,var(--accent)); }
#panel .tabcontent .q-opt-erkl{ position:relative; padding-left:2.6em; margin:.6em 0; }
#panel .tabcontent .q-opt-erkl .q-buchst{ position:absolute; left:0; }
#panel .tabcontent .q-regel{ margin:.8em 0; padding:12px 16px 12px 18px; background:var(--paper); border:1px solid var(--line); border-left:3px solid var(--accent); border-radius:10px; }
#panel .tabcontent .q-regel > p{ margin:.45em 0; }
#panel .tabcontent .q-regel > p:first-child{ margin-top:0; }
#panel .tabcontent .q-regel > p:last-child{ margin-bottom:0; }
#panel .tabcontent .q-regel-nr{ display:block; font:700 11.5px/1 var(--body) !important; letter-spacing:.08em; text-transform:uppercase; color:var(--accent-tx,var(--accent)) !important; margin-bottom:7px; }
#panel .tabcontent .q-regel .q-sep{ display:none; }
#panel .tabcontent .q-regel h1 + .q-regel{ margin-top:.4em; }
#panel .tabcontent .q-fehler{ margin:.7em 0; padding:2px 0 2px 14px; border-left:3px solid #d27a1f; }
#panel .tabcontent .q-fehler-nr{ font-weight:700; color:#b5641a; }
#panel .tabcontent .q-ergebnis{ margin:1.1em 0; padding:12px 16px; border-radius:10px; background:var(--accent-soft); color:var(--ink); }
#panel .tabcontent .q-ergebnis-k{ font-weight:700; color:var(--accent-tx,var(--accent)); }
#panel .tabcontent .q-check{ margin:1.1em 0; padding:12px 16px; border-radius:10px; background:var(--tint); border:1px dashed var(--line-2); }
#panel .tabcontent .q-check-k{ font-weight:700; }
#panel .tabcontent .q-schritt{ position:relative; padding-left:2.3em; }
#panel .tabcontent .q-nr{ position:absolute; left:0; top:.15em; min-width:1.65em; height:1.65em; padding:0 .3em; border-radius:999px; background:var(--accent-soft); color:var(--accent-tx,var(--accent)); font-weight:700; font-size:.82em; line-height:1.65em; text-align:center; }
#panel .tabcontent .q-schritt .q-sep{ display:none; }
#panel .tabcontent .q-spick{ margin:1.6em 0; padding:16px 20px; border-radius:12px; background:var(--paper); border:1px solid var(--accent-soft); border-left:3px solid var(--accent); }
#panel .tabcontent .q-spick > h3{ margin:0 0 .7em !important; font-size:17px !important; }
#panel .tabcontent .q-spick > p{ position:relative; margin:.45em 0; padding-left:1.1em; }
#panel .tabcontent .q-spick > p::before{ content:""; position:absolute; left:0; top:.72em; width:6px; height:6px; border-radius:50%; background:var(--accent); }
#panel .tabcontent .q-spick > p:has(.katex-display)::before{ display:none; }
:root[data-theme="dark"] #panel .tabcontent .q-regel, :root[data-theme="dark"] #panel .tabcontent .q-spick{ background:var(--d-surf2); border-color:var(--d-bd); border-left-color:#9fe3db; }
:root[data-theme="dark"] #panel .tabcontent .q-aufgabe > p.q-opt{ background:var(--d-surf); }
:root[data-theme="dark"] #panel .tabcontent .q-fehler-nr{ color:#e8a35f; }
:root[data-theme="dark"] #panel .tabcontent h3.q-teil::before{ background:#9fe3db; }
#panel .tabcontent .q-einzug{ margin-left:2.3em; }
#panel .tabcontent .q-fehler .q-sep{ font-weight:700; color:#b5641a; }
:root[data-theme="dark"] #panel .tabcontent .q-fehler .q-sep{ color:#e8a35f; }
#panel .tabcontent p.q-einzug:has(.katex-display){ margin-left:2.3em; }

/* Gegenspieler-Paare in Quanti Kap. 5 (261101-1xp) */
#panel .tabcontent .table-scroll:has(> table.q-paare){ margin:.7em 0 .2em; }
#panel .tabcontent table.q-paare{ border:0 !important; border-radius:0 !important; border-collapse:separate; border-spacing:0 8px; width:auto !important; background:transparent !important; }
#panel .tabcontent table.q-paare td{ border:0 !important; padding:0 !important; background:transparent !important; vertical-align:middle; }
#panel .tabcontent table.q-paare td:not(.q-pfeil){ min-width:9.5em; }
#panel .tabcontent table.q-paare td:not(.q-pfeil) > *, #panel .tabcontent table.q-paare td:not(.q-pfeil){ white-space:nowrap; }
#panel .tabcontent table.q-paare td:not(.q-pfeil){ padding:7px 14px !important; background:var(--accent-soft) !important; border-radius:9px; }
#panel .tabcontent table.q-paare td.q-pfeil{ padding:0 12px !important; font-size:20px; color:var(--accent-tx,var(--accent)); text-align:center; }
#panel .tabcontent table.q-paare .q-sym{ display:inline-block; min-width:1.6em; font-weight:700; font-size:1.15em; color:var(--accent-tx,var(--accent)); }
#panel .tabcontent table.q-paare{ font-size:inherit !important; }
#panel .tabcontent table.q-paare td:not(.q-pfeil){ padding:8px 16px !important; }
#panel .tabcontent table.q-paare .q-sym{ font-size:1.45em; line-height:1; min-width:1.5em; vertical-align:-0.08em; }
#panel .tabcontent table.q-paare td.q-pfeil{ font-size:24px; }
#panel .tabcontent table.q-paare{ border-collapse:separate !important; border-spacing:0 10px !important; margin:-4px 0 !important; }

/* Kurze Aufzählungszeilen im Quanti-Guide (261101-234) */
#panel .tabcontent p.q-punkt{ position:relative; margin:.35em 0; padding-left:1.25em; }
#panel .tabcontent p.q-punkt::before{ content:""; position:absolute; left:.2em; top:.72em; width:6px; height:6px; border-radius:50%; background:var(--accent); }
:root[data-theme="dark"] #panel .tabcontent p.q-punkt::before{ background:#9fe3db; }
#panel .tabcontent p.q-punkt.q-einzug{ margin-left:2.3em; }
#panel .tabcontent .q-aufgabe > h3.q-aufgabe-k .q-sep, #panel .tabcontent .q-regel .q-regel-nr .q-sep{ display:none; }

/* Stufen in der Guide-Liste (261101-2l6) */
.tt-kaplist .kap-stufe{ padding:16px 24px 6px; font:700 11.5px/1 var(--body); letter-spacing:.08em; text-transform:uppercase; color:var(--accent-tx,var(--accent)); border-top:1px solid var(--line); }
.tt-kaplist.ist-gekuerzt .kap-stufe.ist-mehr{ display:none !important; }

/* Simulation Antwortbogen (01.11.2026, Quick 261101-2j5)
   Eine Aufgabe je Ansicht, rechts der sticky Antwortbogen (unter 900px unter der Aufgabe),
   Zeitleiste im Kopf, Abgabe-Dialog, Zeit je Aufgabe in der Auswertung. */
#content.w-900:has(> .sim-ab){ max-width:1180px; }
.sim-ab{ display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:20px; align-items:start; scroll-margin-top:90px; }
.sim-ab .sim-q:not(.ist-dran), .sim-ab .sim-text-card:not(.ist-dran){ display:none; }
.sim-ab .sim-qnum::after{ content:" von " attr(data-von); }
.sim-ab .sim-q{ margin-bottom:16px; }

/* Frage und Antworten sichtbar trennen (nur in der Ein-Aufgaben-Ansicht): Frage etwas größer,
   Antworten unter einer Linie mit Beschriftung, jede Antwort als eigene umrandete Zeile. */
.sim-ab .sim-qtext{ font-size:calc(17px * var(--font-scale, 1)) !important; max-width:68ch; margin-bottom:22px; }
.sim-ab .sim-opts{ margin:0; padding-top:18px; border-top:1px solid #dbe4e4; display:flex; flex-direction:column; gap:6px; }
.sim-ab .sim-opts::before{ content:"Antwort wählen"; margin-bottom:4px; font:700 12px/1 var(--body); letter-spacing:.08em; text-transform:uppercase; color:#5d6b73; }
.sim-ab .sim-opt{ padding:11px 12px; border:1px solid #dbe4e4; border-radius:10px; gap:10px; transition:background .15s, border-color .15s; }
.sim-ab .sim-opt:not(.correct):not(.wrong){ background:#fff; }
.sim-ab .sim-opt:not(.fest):not(.aus):hover{ border-color:#c3dedb; }
.sim-ab .sim-opt.sel:not(.correct):not(.wrong){ background:#e6f2f1; border-color:#c3dedb; }
.sim-ab .sim-opt.correct{ border-color:#16a34a; }
.sim-ab .sim-opt.wrong{ border-color:#e5484d; }
.sim-ab .sim-opt.aus{ opacity:1; background:#fff; }
.sim-ab .sim-opt.aus .sim-otext, .sim-ab .sim-opt.aus .sim-ol{ color:#a2aeb2; text-decoration:line-through; }
.sim-ab .sim-opt .sim-kreuz{ margin-left:auto; }

.sim-ab-nav{ display:flex; justify-content:space-between; gap:10px; margin-top:4px; }
.sim-ab-btn{ padding:10px 16px; border-radius:10px; font:600 15px var(--body); border:1px solid var(--line); background:var(--paper); color:var(--ink); cursor:pointer; }
.sim-ab-btn:hover:not(:disabled){ border-color:var(--accent); }
.sim-ab-btn:disabled{ opacity:.45; cursor:default; }
.sim-ab-btn.primaer{ background:var(--accent); border-color:var(--accent); color:#fff; }
.sim-ab-btn.primaer:hover{ background:var(--accent-2); border-color:var(--accent-2); }
.sim-ab-btn[hidden]{ display:none; }

.sim-bogen{ position:sticky; top:84px; display:flex; flex-direction:column; max-height:calc(100vh - 160px); border:1px solid var(--line); border-radius:14px; background:var(--paper); padding:16px; }
.ab-kopf{ display:flex; justify-content:space-between; align-items:baseline; gap:8px; margin-bottom:10px; }
.ab-titel{ font:700 12px/1 var(--body); letter-spacing:.08em; text-transform:uppercase; color:var(--accent-tx,var(--accent)); }
.ab-kopf small{ font-size:13px; color:var(--muted); }
.ab-rows{ display:grid; gap:0; justify-items:start; overflow-y:auto; min-height:0; }
.ab-row{ display:flex; align-items:center; gap:5px; padding:1px 6px; border-radius:8px; }
.ab-row.cur{ background:var(--accent-soft); }
.ab-nr{ width:26px; padding:0; text-align:right; border:0; background:none; font:700 14px var(--body); font-variant-numeric:tabular-nums; color:var(--muted); cursor:pointer; }
.ab-nr:hover{ color:var(--accent); text-decoration:underline; }
.ab-row.cur .ab-nr{ color:var(--ink); }
.ab-bx{ width:28px; height:24px; padding:0; border:1px solid var(--line-2); border-radius:5px; background:var(--paper); color:var(--muted); font:600 12px var(--body); cursor:pointer; }
.ab-bx:hover{ border-color:var(--accent); }
.ab-bx.on{ background:var(--accent); border-color:var(--accent); color:#fff; }
.ab-bx.str{ text-decoration:line-through; opacity:.55; }
.ab-flag{ margin-left:2px; width:14px; text-align:center; font-size:13px; color:transparent; }
.ab-row[data-flag="rot"] .ab-flag{ color:#e5484d; }
.ab-row[data-flag="gelb"] .ab-flag{ color:#d9a406; }
.ab-row[data-flag="gruen"] .ab-flag{ color:#17995f; }
.ab-fuss{ margin-top:12px; padding-top:12px; border-top:1px dashed var(--line-2); display:flex; flex-direction:column; gap:10px; }
.ab-hinweis{ font-size:13px; color:var(--muted); }
.sim-bogen .sim-actions{ margin:0; }
.sim-bogen .sim-submit{ width:100%; }

#content:has(> .sim-ab) .sim-title-head{ flex:1; text-align:center; font-weight:600; }
.sim-ab-zeit{ position:absolute; left:0; right:0; bottom:-1px; height:3px; background:var(--line); }
.sim-ab-zeit > i{ display:block; height:100%; width:100%; background:var(--accent); transition:width 1s linear; }
.sim-ab-zeit.knapp > i{ background:#e5484d; }
.sim-timer.ab-knapp{ color:#e5484d; }

.sim-ab-scrim{ position:fixed; inset:0; display:grid; place-items:center; padding:16px; background:rgba(15,27,51,.45); z-index:1000; }
.sim-ab-dlg{ width:100%; max-width:440px; padding:26px; border-radius:16px; background:var(--paper); color:var(--ink); }
.sim-ab-dlg h3{ margin:0 0 8px; font-size:20px; }
.sim-ab-dlg p{ margin:0 0 14px; color:var(--muted); }
.ab-stat{ display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-bottom:14px; }
.ab-stat > div{ padding:10px 6px; border-radius:10px; background:var(--tint); text-align:center; font-size:13px; color:var(--muted); }
.ab-stat b{ display:block; font-size:22px; color:var(--ink); font-variant-numeric:tabular-nums; }
.ab-chips{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:14px; }
.ab-chip{ padding:4px 10px; border:0; border-radius:999px; background:var(--accent-soft); color:var(--accent-tx,var(--accent)); font:600 14px var(--body); cursor:pointer; }
.ab-dlg-b{ display:flex; justify-content:flex-end; gap:8px; flex-wrap:wrap; margin-top:6px; }

.sim-qzeit{ margin:0 auto 0 10px; font-size:13px; color:var(--muted); font-variant-numeric:tabular-nums; }

.ab-nr:focus-visible, .ab-bx:focus-visible, .ab-chip:focus-visible, .sim-ab-btn:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }

@media (max-width:900px){
  .sim-ab{ grid-template-columns:1fr; }
  .sim-bogen{ position:static; max-height:none; }
}
@media (prefers-reduced-motion:reduce){ .sim-ab-zeit > i{ transition:none; } }

:root[data-theme="dark"] .sim-bogen, :root[data-theme="dark"] .sim-ab-dlg{ background:var(--d-surf) !important; border-color:var(--d-bd) !important; color:var(--d-tx) !important; }
:root[data-theme="dark"] .ab-bx, :root[data-theme="dark"] .sim-ab-btn:not(.primaer){ background:var(--d-bg) !important; border-color:#38425a !important; color:var(--d-tx2) !important; }
:root[data-theme="dark"] .ab-bx.on{ background:var(--accent) !important; border-color:var(--accent) !important; color:#fff !important; }
:root[data-theme="dark"] .ab-stat > div{ background:var(--d-bg) !important; }
:root[data-theme="dark"] .ab-stat b{ color:var(--d-tx) !important; }
:root[data-theme="dark"] .sim-ab-zeit{ background:var(--d-bd) !important; }
:root[data-theme="dark"] .ab-chip{ background:var(--accent-soft) !important; color:var(--accent-tx) !important; }
:root[data-theme="dark"] .sim-ab .sim-opts{ border-top-color:var(--d-bd) !important; }
:root[data-theme="dark"] .sim-ab .sim-opts::before{ color:var(--d-tx2) !important; }
:root[data-theme="dark"] .sim-ab .sim-opt:not(.correct):not(.wrong){ background:var(--d-surf2) !important; border-color:var(--d-bd) !important; }
:root[data-theme="dark"] .sim-ab .sim-opt.sel:not(.correct):not(.wrong){ background:var(--accent-soft) !important; border-color:var(--accent) !important; }
:root[data-theme="dark"] .sim-ab .sim-opt:not(.fest):not(.aus):not(.sel):hover{ border-color:var(--accent) !important; }
:root[data-theme="dark"] .sim-ab .sim-opt.aus .sim-otext, :root[data-theme="dark"] .sim-ab .sim-opt.aus .sim-ol{ color:var(--d-tx2) !important; }

/* Antworten als eigene Fläche unten in der Aufgabenkarte (01.11.2026, Quick 261101-2j5, Nachtrag):
   Frage oben auf Weiß, Antworten darunter hellgrau bis an den Kartenrand. Karte hat 20px 22px Innenabstand. */
.sim-ab .sim-q .sim-opts{ margin:0 -22px -20px; padding:16px 22px 20px; background:#f4f7f8; border-top:1px solid #dbe4e4; border-radius:0 0 16px 16px; }
.sim-ab .sim-q:has(> .sim-expl:not([hidden])) .sim-opts{ margin-bottom:0; border-radius:0; }
:root[data-theme="dark"] .sim-ab .sim-q .sim-opts{ background:var(--d-bg) !important; }

/* Zurück/Weiter als eine verbundene Leiste (01.11.2026, Quick 261101-2j5, Nachtrag):
   zwei gleich breite Hälften, gesperrte Hälfte grau, Weiter in Petrol, „Zur Abgabe“ als Petrol-Fläche. */
.sim-ab-nav{ display:grid !important; grid-template-columns:1fr 1fr; gap:0 !important; margin-top:4px; border:1px solid var(--line); border-radius:12px; overflow:hidden; background:var(--paper); box-shadow:0 1px 3px rgba(20,33,61,.06); }
.sim-ab-nav .sim-ab-btn{ display:flex; align-items:center; gap:10px; border:0; border-radius:0; padding:14px 18px; background:var(--paper); color:var(--ink); font-weight:600; }
.sim-ab-nav .ab-zurueck{ justify-content:flex-start; }
.sim-ab-nav .ab-weiter{ justify-content:flex-end; border-left:1px solid var(--line); color:var(--accent); }
.sim-ab-nav .sim-ab-btn[hidden]{ display:none; }
.sim-ab-nav .sim-ab-btn i{ font-size:12px; }
.sim-ab-nav .sim-ab-btn:hover:not(:disabled){ background:var(--accent-soft); border-color:var(--line); }
.sim-ab-nav .sim-ab-btn:disabled{ opacity:1; background:#eef2f3; color:#9aa7ab; }
.sim-ab-nav .ab-weiter.ist-abgabe{ background:var(--accent); color:#fff; border-left-color:var(--accent); }
.sim-ab-nav .ab-weiter.ist-abgabe:hover{ background:var(--accent-2); }
.sim-ab-nav:has(.ab-weiter[hidden]){ grid-template-columns:1fr; }
:root[data-theme="dark"] .sim-ab-nav{ background:var(--d-surf) !important; border-color:var(--d-bd) !important; }
:root[data-theme="dark"] .sim-ab-nav .sim-ab-btn{ background:var(--d-surf) !important; border-color:var(--d-bd) !important; color:var(--d-tx) !important; }
:root[data-theme="dark"] .sim-ab-nav .ab-weiter:not(.ist-abgabe){ color:var(--accent-tx) !important; }
:root[data-theme="dark"] .sim-ab-nav .sim-ab-btn:disabled{ background:var(--d-bg) !important; color:var(--d-tx2) !important; }
:root[data-theme="dark"] .sim-ab-nav .ab-weiter.ist-abgabe{ background:var(--accent) !important; color:#fff !important; }
/* Weiter als Mint-Hälfte (Hauptaktion), Zur Abgabe bleibt Petrol-Vollfläche */
.sim-ab-nav .ab-weiter:not(.ist-abgabe){ background:#e6f2f1; color:#0f6b6b; border-left-color:#c3dedb; }
.sim-ab-nav .ab-weiter:not(.ist-abgabe):hover{ background:#d5eae7; }
:root[data-theme="dark"] .sim-ab-nav .ab-weiter:not(.ist-abgabe){ background:var(--accent-soft) !important; }
/* Antwortbogen etwas größer (Nutzer 01.11.): Kästchen 34×28, Nummer 15px, Zeilen mit 2px Luft */
.ab-rows{ gap:2px; }
.ab-row{ gap:6px; padding:1px 6px; }
.ab-nr{ width:28px; font-size:15px; }
.ab-bx{ width:34px; height:28px; font-size:13px; border-radius:6px; }

/* Grafiken im Quanti-Guide (Ausbau 01.11.2026). SVG im Text, Farben über die Design-Variablen */
#panel .tabcontent figure.q-grafik{ margin:1.6em 0 1.8em; }
#panel .tabcontent figure.q-grafik svg{ display:block; width:100%; max-width:640px; height:auto; }
#panel .tabcontent figure.q-grafik figcaption{ margin-top:.6em; max-width:640px; font-size:14.5px; line-height:1.5; color:var(--muted); }
#panel .tabcontent figure.q-grafik text{ font-family:var(--body); }
#panel .tabcontent .q-grafik .g-t{ fill:var(--ink); font-size:15px; font-weight:500; }
#panel .tabcontent .q-grafik .g-s{ fill:var(--muted); font-size:13px; font-weight:500; }
#panel .tabcontent .q-grafik .g-gross{ fill:var(--ink); font-size:20px; font-weight:700; }
#panel .tabcontent .q-grafik .g-acc{ fill:var(--accent-tx,var(--accent)); font-size:14px; font-weight:700; }
#panel .tabcontent .q-grafik .g-warn-t{ fill:#b5641a; font-size:14px; font-weight:700; }
#panel .tabcontent .q-grafik .g-ax{ stroke:var(--line-2); stroke-width:2; }
#panel .tabcontent .q-grafik .g-band{ fill:var(--accent-soft); }
#panel .tabcontent .q-grafik .g-band-warn{ fill:#d27a1f; fill-opacity:.16; }
#panel .tabcontent .q-grafik .g-dot{ fill:var(--accent); }
#panel .tabcontent .q-grafik .g-dot-aus{ fill:var(--muted); fill-opacity:.55; }
#panel .tabcontent .q-grafik .g-dot-warn{ fill:#d27a1f; }
#panel .tabcontent .q-grafik .g-box{ fill:var(--accent-soft); }
#panel .tabcontent .q-grafik .g-box2{ fill:var(--tint); stroke:var(--line-2); stroke-width:1.5; }
#panel .tabcontent .q-grafik .g-box-warn{ fill:#d27a1f; fill-opacity:.16; }
#panel .tabcontent .q-grafik .g-line{ stroke:var(--accent-tx,var(--accent)); stroke-width:2.2; fill:none; }
#panel .tabcontent .q-grafik .g-line-warn{ stroke:#d27a1f; stroke-width:2.2; fill:none; }
#panel .tabcontent .q-grafik .g-kopf{ fill:var(--accent-tx,var(--accent)); }
:root[data-theme="dark"] #panel .tabcontent .q-grafik .g-warn-t{ fill:#e8a35f; }
/* Antwortbogen: flacher, damit 20 Zeilen auch bei 900 px Höhe ohne Scrollen passen */
.ab-rows{ gap:1px; }
.ab-bx{ height:26px; }

/* Uhr als Pille mit Ring statt großer Zahl + Balken (01.11.2026, Quick 261101-2j5, Nachtrag) */
.sim-ab-zeit{ display:none !important; }
.ab-uhr{ display:inline-flex; align-items:center; gap:8px; padding:5px 14px 5px 6px; border:1px solid var(--line); border-radius:999px; background:var(--paper); }
.ab-uhr svg{ width:30px; height:30px; transform:rotate(-90deg); flex:none; }
.ab-uhr circle{ fill:none; stroke:#e1e9e9; stroke-width:4; }
.ab-uhr .ab-uhr-r{ stroke:var(--accent); stroke-linecap:round; transition:stroke-dasharray 1s linear; }
.ab-uhr #simTimer{ font-size:20px; line-height:1; }
.ab-uhr-l{ font:600 12px var(--body); color:var(--muted); }
.ab-uhr.knapp{ background:#fdeeee; border-color:#f5c2c2; }
.ab-uhr.knapp .ab-uhr-r{ stroke:#e5484d; }
.ab-uhr.knapp .ab-uhr-l{ color:#c4383d; }
@media (prefers-reduced-motion:reduce){ .ab-uhr .ab-uhr-r{ transition:none; } }
:root[data-theme="dark"] .ab-uhr{ background:var(--d-surf) !important; border-color:var(--d-bd) !important; }
:root[data-theme="dark"] .ab-uhr circle{ stroke:var(--d-bd); }
:root[data-theme="dark"] .ab-uhr .ab-uhr-r{ stroke:var(--accent-tx); }
:root[data-theme="dark"] .ab-uhr.knapp{ background:rgba(229,72,77,.15) !important; border-color:rgba(229,72,77,.4) !important; }
:root[data-theme="dark"] .ab-uhr.knapp .ab-uhr-r{ stroke:#e5484d; }
.ab-bx{ height:25px; }

/* Abgabe-Fenster als Übersicht (01.11.2026, Quick 261101-2j5, Nachtrag): Fortschrittsbalken,
   Nummernraster wie der Antwortbogen, Legende, Hinweis auf offene Aufgaben. */
.sim-ab-dlg{ max-width:460px; }
.ab-fort{ margin:2px 0 16px; }
.ab-fort-t{ font-size:14px; color:var(--muted); margin-bottom:7px; }
.ab-fort-t b{ color:var(--ink); font-variant-numeric:tabular-nums; }
.ab-fort-b{ height:6px; border-radius:6px; background:#e1e9e9; overflow:hidden; }
.ab-fort-b i{ display:block; height:100%; border-radius:6px; background:var(--accent); }
.ab-zellen{ display:grid; grid-template-columns:repeat(10, minmax(0,1fr)); gap:5px; margin-bottom:10px; }
.ab-chip.ab-zelle{ position:relative; height:34px; padding:0; border:1px solid #c9d5d7; border-radius:7px; background:var(--paper); color:var(--muted); font:600 13px var(--body); font-variant-numeric:tabular-nums; }
.ab-chip.ab-zelle:hover{ border-color:var(--accent); color:var(--accent); background:var(--paper); }
.ab-chip.ab-zelle.an{ background:var(--accent); border-color:var(--accent); color:#fff; }
.ab-zelle[data-flag]::after{ content:""; position:absolute; top:3px; right:3px; width:7px; height:7px; border-radius:50%; background:var(--fc); box-shadow:0 0 0 1.5px var(--paper); }
.ab-zelle[data-flag="rot"]{ --fc:#e5484d; } .ab-zelle[data-flag="gelb"]{ --fc:#d9a406; } .ab-zelle[data-flag="gruen"]{ --fc:#17995f; }
.ab-legende{ display:flex; flex-wrap:wrap; gap:6px 16px; margin-bottom:16px; font-size:12.5px; color:var(--muted); }
.ab-legende .lg{ display:inline-block; width:10px; height:10px; margin-right:6px; vertical-align:-1px; border:1px solid #c9d5d7; border-radius:3px; }
.ab-legende .lg.an{ background:var(--accent); border-color:var(--accent); }
.ab-legende .lg.fl{ width:8px; height:8px; border-radius:50%; background:#d9a406; border-color:#d9a406; }
.sim-ab-dlg .ab-warn{ margin-bottom:18px; padding:10px 12px; border-radius:10px; background:#fff6e5; color:#7a5200; font-size:14px; }
.sim-ab-dlg .ab-ok{ margin-bottom:18px; padding:10px 12px; border-radius:10px; background:var(--accent-soft); color:var(--accent); font-size:14px; font-weight:600; }
:root[data-theme="dark"] .ab-fort-b{ background:var(--d-bd) !important; }
:root[data-theme="dark"] .ab-fort-t b{ color:var(--d-tx) !important; }
:root[data-theme="dark"] .ab-chip.ab-zelle:not(.an){ background:var(--d-bg) !important; border-color:#38425a !important; color:var(--d-tx2) !important; }
:root[data-theme="dark"] .ab-chip.ab-zelle.an{ background:var(--accent) !important; border-color:var(--accent) !important; color:#fff !important; }
:root[data-theme="dark"] .sim-ab-dlg .ab-warn{ background:rgba(217,164,6,.14) !important; color:#f0c560 !important; }
:root[data-theme="dark"] .sim-ab-dlg .ab-ok{ background:var(--accent-soft) !important; color:var(--accent-tx) !important; }

/* Titel mit Untertest („Simulation 1 · Quantitative Probleme“), Untertest leiser */
.sim-title-ut{ font-weight:500; color:var(--muted); }
:root[data-theme="dark"] .sim-title-ut{ color:var(--d-tx2) !important; }
@media (max-width:600px){ .sim-title-ut{ display:none; } }

/* Handy (Prüfung 01.11.2026): Knopfleiste der „Als Nächstes“-Karte umbrechen, Grafiken lesbar, Formeln wischbar */
#panel .tabcontent .katex-display, #panel .exercise-group .katex-display{ overflow-x:auto; overflow-y:hidden; max-width:100%; }
@media (max-width: 600px){
  #panel .kap-next{ flex-direction:column; align-items:stretch; gap:12px; padding:16px; }
  #panel .kap-next-actions{ flex-wrap:wrap; justify-content:flex-end; }
  #panel .kap-next-actions > button{ flex:1 1 auto; justify-content:center; }
  #panel .tabcontent figure.q-grafik{ overflow-x:auto; -webkit-overflow-scrolling:touch; }
  #panel .tabcontent figure.q-grafik svg{ min-width:540px; }
}
@media (max-width: 600px){
  #panel .tabcontent figure.q-grafik{ overflow-x:visible; }
  #panel .tabcontent figure.q-grafik svg{ min-width:0; }
  #panel .tabcontent .q-grafik .g-t{ font-size:19px; }
  #panel .tabcontent .q-grafik .g-s{ font-size:17px; }
  #panel .tabcontent .q-grafik .g-acc, #panel .tabcontent .q-grafik .g-warn-t{ font-size:18px; }
  #panel .tabcontent .q-grafik .g-gross{ font-size:23px; }
}

/* ---- Seitenleiste: Lucide-Outline-Symbole (Quick 261101-5py) ----
   Nutzer: „das sieht so komisch aus … vllt die icons nicht füllen?“ FA-Solid-Glyphen waren
   unterschiedlich schwer (volle Flächen neben Strichformen), Untertest-Symbole bunt.
   Jetzt: ein Lucide-Sprite (theme/sb-icons.svg), gleiche Strichstärke, alle Symbole Petrol,
   Mitte jedes Symbols bei 25 px. Untertest-Kachel bleibt blass in der Untertest-Farbe. */
#navigation_p .sidebar-item svg.tt-ic.lu{ width:28px !important; height:28px !important; left:11px !important; padding:5px; box-sizing:border-box;
  stroke-width:1.75; color:var(--accent-tx,var(--accent)) !important; opacity:1; border-radius:8px; background:transparent; overflow:visible; }
#navigation_p .sidebar-item.sb-ut svg.tt-ic.lu{ background:color-mix(in srgb, var(--c) 12%, #fff); color:var(--accent-tx,var(--accent)) !important; }
#navigation_p .sidebar-item.sb-ut:hover svg.tt-ic.lu{ background:color-mix(in srgb, var(--c) 20%, #fff); }
#navigation_p .sidebar-item.sb-ut.active svg.tt-ic.lu,
#navigation_p .sidebar-item.sb-has-sub:has(+ .sb-sub.open) svg.tt-ic.lu{ background:var(--accent) !important; color:#fff !important; }
#navigation_p .sidebar-item.sidebar-vz svg.tt-ic.lu{ color:#fff !important; }
/* Aufklapp-Pfeil: style.css legt jedes svg in der Zeile absolut nach links, hier zurücknehmen. */
#navigation_p .sb-sub-toggle svg.lu{ position:static !important; transform:none !important; width:16px; height:16px; stroke-width:2; transition:transform .15s; }
#navigation_p .sb-sub-toggle.open svg.lu{ transform:rotate(180deg) !important; }
@media (max-height:820px){ #navigation_p .sidebar-item svg.tt-ic.lu{ width:26px !important; height:26px !important; left:12px !important; padding:4.5px; } }
:root[data-theme="dark"] #navigation_p .sidebar-item svg.tt-ic.lu{ color:#9fe3db !important; }
:root[data-theme="dark"] #navigation_p .sidebar-item.sb-ut svg.tt-ic.lu{ background:color-mix(in srgb, var(--c) 22%, var(--d-surf)); color:#9fe3db !important; }
:root[data-theme="dark"] #navigation_p .sidebar-item.sb-ut.active svg.tt-ic.lu,
:root[data-theme="dark"] #navigation_p .sidebar-item.sb-has-sub:has(+ .sb-sub.open) svg.tt-ic.lu{ background:var(--accent) !important; color:#fff !important; }
/* Nachtrag 261101-5py: Fach-Kacheln der Modulliste und Ein-/Ausklapp-Pfeile ebenfalls Lucide.
   Kachel blass in der Fachfarbe, Symbol Petrol (gesperrt grau), wie bei den Untertests. */
.sb-sub-ic svg.lu{ width:15px; height:15px; stroke-width:1.9; color:var(--accent-tx,var(--accent)); }
.sb-sub-item.is-locked .sb-sub-ic svg.lu{ color:var(--muted); }
:root[data-theme="dark"] .sb-sub-ic svg.lu{ color:#9fe3db; }
:root[data-theme="dark"] .sb-sub-item.is-locked .sb-sub-ic svg.lu{ color:var(--d-mut); }
.sb-toggle svg.lu, .sb-expand svg.lu{ width:18px; height:18px; stroke-width:2; }

/* Untertest-Seite Variante A (01.11.2026, Quick 261101-62k). Nutzer wählte aus drei Entwürfen
   (/preview/untertest-vorschlaege/) Variante A: Kacheln Guide/Simulationen statt Ring,
   Leiste „Weitermachen“, Eckdaten statt Wegweiser-Absatz, nummerierte Guide-Zeilen,
   Bereichsköpfe ohne getönten Streifen, Hinweis der Mini-Übung als Tipp.
   Gilt nur auf Seiten mit dem neuen Kopf (.tt-head-a); simulation.php nutzt dieselben
   .sim-*-Klassen und bleibt unberührt. Untertest-Farbe nur in Balken und Symbolen. */
.tt-stats{ display:flex; flex:none; background:#fff; border:1px solid var(--line); border-radius:12px; overflow:hidden; }
.tt-stat{ padding:12px 18px; min-width:132px; }
.tt-stat + .tt-stat{ border-left:1px solid var(--line); }
.tt-stat small{ display:block; font:700 11.5px/1.2 var(--body); letter-spacing:.07em; text-transform:uppercase; color:var(--muted); }
.tt-stat b{ display:block; margin-top:2px; font:700 22px/1.25 var(--display); color:var(--ink); font-variant-numeric:tabular-nums; }
.tt-stat-bar{ display:block; height:5px; margin-top:7px; border-radius:99px; background:var(--line); overflow:hidden; }
.tt-stat-bar i{ display:block; height:100%; border-radius:99px; background:var(--fc,var(--accent)); }

.tt-weiter{ display:flex; align-items:center; gap:18px; width:100%; margin:0 0 16px; padding:18px 22px;
  background:var(--accent); color:#fff; border:0; border-radius:14px; text-align:left; cursor:pointer; transition:background .15s; }
.tt-weiter:hover{ background:var(--accent-2); }
.tt-weiter:focus-visible{ outline:3px solid color-mix(in srgb, var(--accent) 40%, #fff); outline-offset:2px; }
.tt-weiter-ic{ width:44px; height:44px; flex:none; display:grid; place-items:center; border-radius:50%; background:rgba(255,255,255,.15); font-size:15px; }
.tt-weiter-t{ flex:1; min-width:0; display:flex; flex-direction:column; }
.tt-weiter-t small{ font:700 11.5px/1.2 var(--body); letter-spacing:.08em; text-transform:uppercase; opacity:.8; }
.tt-weiter-t b{ font:700 18px/1.3 var(--display); margin:2px 0 1px; }
.tt-weiter-t span{ font-size:14px; opacity:.85; }
.tt-weiter-btn{ flex:none; display:inline-flex; align-items:center; gap:8px; background:#fff; color:var(--accent); border-radius:10px; padding:10px 16px; font:700 14px/1 var(--body); }
@media (max-width:700px){
  .tt-stats{ align-self:stretch; }
  .tt-stat{ flex:1; min-width:0; }
  .tt-weiter{ flex-wrap:wrap; gap:12px 14px; padding:16px; }
  .tt-weiter-btn{ width:100%; justify-content:center; }
}

/* Eckdaten in der Einstiegsbox: weiße Kärtchen auf der getönten Fläche */
.est-box .tt-eck{ display:flex; flex-wrap:wrap; gap:8px; margin-top:14px; }
.tt-eck-item{ display:inline-flex; align-items:center; gap:8px; background:#fff; border-radius:10px; padding:6px 12px; font:600 13.5px/1.3 var(--body); color:var(--ink); }
.tt-eck-item i{ color:var(--fc,var(--accent)); font-size:13px; }

/* Bereichsköpfe: weiß mit neutraler Linie statt getöntem Streifen, Rahmen neutral */
#content:has(.tt-head-a) .tt-kaplist, #content:has(.tt-head-a) .sim-list, #content:has(.tt-head-a) .sim-card{ border-color:var(--line) !important; }
#content:has(.tt-head-a) .tt-kaplist > .sim-head, #content:has(.tt-head-a) .sim-list > .sim-head, #content:has(.tt-head-a) .sim-card > .sim-head{
  background:#fff; border-bottom-color:var(--line); }

/* Guide-Zeilen: Nummer bzw. Häkchen statt Ordner, Pfeil rechts, aktuelle Zeile markiert */
.tt-kaplist .kap-icon.tt-kap-nr{ width:32px !important; height:32px !important; flex:none; border-radius:50% !important; display:grid !important; place-items:center;
  background:#fff !important; border:2px solid var(--line); color:var(--muted) !important; font:700 13px/1 var(--body); }
.tt-kaplist .kap-item.is-done .tt-kap-nr{ background:var(--accent) !important; border-color:var(--accent); color:#fff !important; font-size:12px; }
.tt-kaplist .kap-item.is-aktiv{ background:color-mix(in srgb, var(--accent) 5%, #fff); }
.tt-kaplist .kap-item.is-aktiv .tt-kap-nr{ border-color:var(--accent); color:var(--accent) !important; }
.tt-kap-badge{ display:inline-block; margin-left:8px; padding:2px 8px; border-radius:99px; background:var(--accent-soft); color:var(--accent-tx,var(--accent)); font:700 11px/1.5 var(--body); vertical-align:2px; white-space:nowrap; }
.tt-kap-chev{ flex:none; color:var(--muted); font-size:12px; margin-left:4px; }
@media (max-width:600px){ .tt-kap-badge{ display:none; } }

/* Mini-Übung: Tipp statt Warnung */
.tt-tipp{ display:flex; gap:10px; align-items:flex-start; margin:0 0 16px; padding:10px 14px; border-radius:10px; background:var(--accent-soft); color:var(--ink); font-size:14px; line-height:1.55; }
.tt-tipp i{ color:var(--accent-tx,var(--accent)); margin-top:3px; }

:root[data-theme="dark"] .tt-stats{ background:var(--d-surf); border-color:var(--d-bd); }
:root[data-theme="dark"] .tt-stat + .tt-stat{ border-left-color:var(--d-bd); }
:root[data-theme="dark"] .tt-stat b{ color:var(--d-tx); }
:root[data-theme="dark"] .tt-stat-bar{ background:var(--d-bd); }
:root[data-theme="dark"] .tt-weiter-btn{ background:var(--d-surf); color:#9fe3db; }
:root[data-theme="dark"] .tt-eck-item{ background:var(--d-surf); color:var(--d-tx); }
:root[data-theme="dark"] #content:has(.tt-head-a) .tt-kaplist,
:root[data-theme="dark"] #content:has(.tt-head-a) .sim-list,
:root[data-theme="dark"] #content:has(.tt-head-a) .sim-card{ border-color:var(--d-bd) !important; }
:root[data-theme="dark"] #content:has(.tt-head-a) .tt-kaplist > .sim-head,
:root[data-theme="dark"] #content:has(.tt-head-a) .sim-list > .sim-head,
:root[data-theme="dark"] #content:has(.tt-head-a) .sim-card > .sim-head{ background:var(--d-surf); border-bottom-color:var(--d-bd); }
:root[data-theme="dark"] .tt-kaplist .kap-icon.tt-kap-nr{ background:var(--d-surf) !important; border-color:var(--d-bd); color:var(--d-tx2) !important; }
:root[data-theme="dark"] .tt-kaplist .kap-item.is-done .tt-kap-nr{ background:var(--accent) !important; border-color:var(--accent); color:#fff !important; }
:root[data-theme="dark"] .tt-kaplist .kap-item.is-aktiv{ background:rgba(15,107,107,.16); }
:root[data-theme="dark"] .tt-kaplist .kap-item.is-aktiv .tt-kap-nr{ border-color:#9fe3db; color:#9fe3db !important; }
:root[data-theme="dark"] .tt-kap-badge{ background:rgba(15,107,107,.3); color:#9fe3db; }
:root[data-theme="dark"] .tt-tipp{ background:rgba(15,107,107,.2); color:var(--d-tx); }
:root[data-theme="dark"] .tt-tipp i{ color:#9fe3db; }
/* Handy: Kapitelnamen brechen um statt abgeschnitten zu werden, der Balken weicht der Prozentzahl */
@media (max-width:600px){
  .tt-kaplist .kap-name{ white-space:normal !important; overflow:visible !important; text-overflow:clip !important; line-height:1.35; }
  .tt-kaplist .kap-progress{ display:none !important; }
  .tt-kaplist .kap-progress-wrap{ width:auto !important; min-width:0 !important; flex:none !important; }
}

/* Guide zurücksetzen (01.11.2026, Quick 261101-6px): leiser Knopf rechts im Guide-Kopf */
.tt-kaplist > .sim-head{ display:flex; align-items:center; }
.tt-reset{ margin-left:auto; flex:none; display:inline-flex; align-items:center; gap:7px; padding:7px 12px;
  background:#fff; border:1px solid var(--line); border-radius:999px; color:var(--ink-2); font:600 13px/1 var(--body); cursor:pointer; white-space:nowrap; transition:border-color .15s, color .15s; }
.tt-reset:hover{ border-color:var(--accent-line,#c3dedb); color:var(--accent-tx,var(--accent)); }
.tt-reset:disabled{ opacity:.6; cursor:default; }
@media (max-width:600px){ .tt-reset span{ display:none; } .tt-reset{ padding:8px 10px; } }
:root[data-theme="dark"] .tt-reset{ background:var(--d-surf2); border-color:var(--d-bd); color:var(--d-tx2); }
:root[data-theme="dark"] .tt-reset:hover{ color:#9fe3db; border-color:#9fe3db; }
/* HowTo Lernen (01.11.2026): Abschnittsleiste in Petrol (Brotkrume bekommt data-c=howto) */
#panel .kap-c-howto{--c:var(--accent)}

/* === Diagramme und Tabellen: Diagramme aus Daten (Präfix dg-, Quick 261101-7b7, 01.11.2026) ===
   Gilt in Abschnitten UND in Übungen. Schwarz/Grau, Linienarten statt Farben; Dunkelmodus über die Design-Variablen. */
figure.dg-grafik{ display:flex; flex-wrap:wrap; align-items:center; gap:10px 22px; margin:1.4em 0 1.6em; max-width:760px; }
figure.dg-grafik > svg{ display:block; flex:1 1 420px; min-width:0; max-width:540px; height:auto; overflow:visible; }
figure.dg-grafik text{ font-family:var(--body); fill:var(--ink); }
figure.dg-grafik .dg-tick{ font-size:13px; fill:var(--ink-2); font-variant-numeric:tabular-nums; }
figure.dg-grafik .dg-achse{ font-size:13.5px; font-weight:600; fill:var(--ink); }
figure.dg-grafik .dg-gitter{ stroke:var(--line); stroke-width:1; }
figure.dg-grafik .dg-ax{ stroke:var(--ink-2); stroke-width:1.2; fill:none; }
figure.dg-grafik .dg-reihe{ stroke:var(--ink); stroke-width:2; fill:none; stroke-linecap:round; stroke-linejoin:round; }
figure.dg-grafik .dg-linie-gestrichelt{ stroke-dasharray:7 5; }
figure.dg-grafik .dg-linie-gepunktet{ stroke-dasharray:.1 5; stroke-width:2.6; }
figure.dg-grafik .dg-linie-strichpunkt{ stroke-dasharray:10 4 .1 4; }
figure.dg-grafik .dg-punkt{ fill:var(--ink); stroke:var(--paper); stroke-width:2; }
figure.dg-grafik .dg-legende{ flex:0 1 auto; display:flex; flex-direction:column; gap:9px; font-size:14px; line-height:1.3; color:var(--ink); }
figure.dg-grafik .dg-leg{ display:flex; align-items:center; gap:8px; }
figure.dg-grafik .dg-leg svg{ width:40px; height:14px; flex:none; overflow:visible; }
figure.dg-grafik figcaption{ flex-basis:100%; margin:0; font-size:14px; line-height:1.5; color:var(--muted); }
@media (max-width: 600px){
  figure.dg-grafik > svg{ flex-basis:100%; max-width:none; }
  figure.dg-grafik .dg-tick{ font-size:18px; }
  figure.dg-grafik .dg-achse{ font-size:18px; }
  figure.dg-grafik .dg-legende{ flex-direction:row; flex-wrap:wrap; gap:6px 18px; }
}

/* === Diagramme und Tabellen, Teil 2: Flächen, Bereiche, Tabellen in Übungen (Präfix dg-, Quick 261101-7ti) === */
figure.dg-grafik .dg-fuell-1{ fill:var(--ink); stroke:var(--paper); stroke-width:1.5; }
figure.dg-grafik .dg-fuell-2{ fill:var(--ink); fill-opacity:.5; stroke:var(--paper); stroke-width:1.5; }
figure.dg-grafik .dg-fuell-3{ fill:var(--ink); fill-opacity:.2; stroke:var(--paper); stroke-width:1.5; }
figure.dg-grafik .dg-fuell-4{ fill:var(--paper); stroke:var(--ink); stroke-width:1.5; }
figure.dg-grafik .dg-bereich{ fill:var(--ink); fill-opacity:.07; }
figure.dg-grafik .dg-hilfslinie{ stroke:var(--muted); stroke-width:1.2; stroke-dasharray:4 4; fill:none; }
figure.dg-grafik .dg-wert{ font-size:12.5px; fill:var(--ink); font-variant-numeric:tabular-nums; }
figure.dg-grafik .dg-klein{ font-size:12px; fill:var(--muted); }
figure.dg-grafik .dg-buchstabe{ font-size:16px; font-weight:700; fill:var(--ink); }
figure.dg-grafik .dg-leg-flaeche{ width:16px; height:12px; flex:none; border-radius:2px; }
.dg-tab-scroll{ overflow-x:auto; -webkit-overflow-scrolling:touch; margin:1em 0 1.2em; max-width:100%; }
table.dg-tabelle{ border-collapse:collapse; font-size:15px; font-variant-numeric:tabular-nums; color:var(--ink); }
table.dg-tabelle th, table.dg-tabelle td{ border:1px solid var(--line-2); padding:6px 10px; text-align:right; vertical-align:top; }
table.dg-tabelle th:first-child, table.dg-tabelle td:first-child{ text-align:left; }
table.dg-tabelle thead th{ background:var(--tint); font-weight:600; color:var(--ink-2); }
table.dg-tabelle caption{ caption-side:bottom; text-align:left; font-size:13.5px; color:var(--muted); padding-top:6px; }
@media (max-width: 600px){
  figure.dg-grafik .dg-wert, figure.dg-grafik .dg-klein{ font-size:16px; }
  figure.dg-grafik .dg-buchstabe{ font-size:20px; }
  table.dg-tabelle{ font-size:14px; }
}

/* 261101-7dw: Fortschrittspunkte bei Übungen mit vielen Aufgaben (z. B. 8) passen auf schmalen Bildschirmen in die Leiste */
#panel .exercise-group .exercise-navigation button{ min-width:6px; }

/* Lesbarkeit der Kästen (01.11.2026): Nutzer fand die Schrift in den Boxen schwer lesbar.
   Ursachen: Zeilen mit ~115 Zeichen, Grau auf getönter Fläche, kleine hellgraue Untertitel.
   Jetzt: Fließtext in Textfarbe und auf ~70 Zeichen begrenzt, Tönung zurückgenommen,
   Untertitel 14 px in dunklerem Grau. Texte selbst unverändert. */
/* Nachtrag: Zeilenbegrenzung wieder raus (Nutzer: „schlechter geworden“), dafür statt flacher
   Tönung ein leichter Verlauf in der Untertest-Farbe, der nach links ins Weiß ausläuft (Farbe rechts). */
.est-box{ background:linear-gradient(285deg, color-mix(in srgb, var(--fc,var(--accent)) 11%, #fff) 0%, #fff 72%) !important;
  border:1px solid color-mix(in srgb, var(--fc,var(--accent)) 10%, var(--line)) !important; }
.est-box p{ color:var(--ink) !important; }
.sim-sub{ font-size:14px !important; color:var(--ink-2) !important; line-height:1.5 !important; }
.sim-list-sub{ font-size:14px !important; color:var(--ink-2) !important; }
:root[data-theme="dark"] .est-box p{ color:var(--d-tx) !important; }
:root[data-theme="dark"] .est-box{ background:linear-gradient(285deg, color-mix(in srgb, var(--fc,#9fe3db) 18%, var(--d-surf)) 0%, var(--d-surf) 72%) !important; border-color:var(--d-bd) !important; }
:root[data-theme="dark"] .sim-sub, :root[data-theme="dark"] .sim-list-sub{ color:var(--d-tx2) !important; }
/* Verlauf umgedreht (Farbe rechts): links ist der Kasten weiß, deshalb bekommen Symbolfeld und
   Eckdaten-Kärtchen dort einen Hauch der Untertest-Farbe, sonst verschwänden sie im Weiß. */
.est-box .est-ic, .est-box .tt-eck-item{ background:color-mix(in srgb, var(--fc,var(--accent)) 9%, #fff) !important; }
:root[data-theme="dark"] .est-box .est-ic, :root[data-theme="dark"] .est-box .tt-eck-item{ background:color-mix(in srgb, var(--fc,var(--accent)) 22%, var(--d-surf)) !important; }

/* Mini-Übung vorerst gesperrt (inert im Markup): Bedienelemente ausgegraut, Kopf bleibt lesbar */
.sim-card.tt-soon > :not(.sim-head){ opacity:.45; filter:grayscale(1); }

/* Simulations-Auswertung (Quick 261101-970): Ergebnis-Kasten im Kartenstil statt dunkler
   Fläche; „Nochmal nachlesen“ als Knopf unter der Erklärung. */
.sim-result{ display:grid; grid-template-columns:1fr auto; gap:4px 24px; align-items:center; text-align:left;
  background:var(--paper); color:var(--ink); border:1px solid var(--line); box-shadow:var(--shadow); border-radius:16px; padding:20px 24px; }
.sim-result .sim-score{ font:700 24px/1.2 var(--display); letter-spacing:-.01em; color:var(--ink); margin:0; }
.sim-result .sim-rhint{ font-size:14px; color:var(--ink-2); margin:0; }
.sim-result > .sim-rbtns, .sim-result > .sim-back{ grid-column:2; grid-row:1 / span 2; }
.sim-result .sim-rbtns{ justify-content:flex-end; }
.sim-result .sim-back, :root[data-theme="dark"] .sim-result .sim-back{ background:var(--paper); color:var(--ink); border:1px solid var(--line-2); transition:background .15s, border-color .15s; }
.sim-result .sim-back:hover{ border-color:var(--accent); background:var(--accent-soft); }
.sim-result .sim-back:last-child, :root[data-theme="dark"] .sim-result .sim-back:last-child{ background:var(--accent); color:#fff; border-color:var(--accent); }
.sim-result .sim-back:last-child:hover{ background:var(--accent-2); border-color:var(--accent-2); }
@media (max-width:640px){
  .sim-result{ grid-template-columns:1fr; padding:18px; }
  .sim-result > .sim-rbtns, .sim-result > .sim-back{ grid-column:1; grid-row:auto; margin-top:12px; justify-self:start; }
  .sim-result .sim-rbtns{ justify-content:flex-start; }
}

.sim-nachlesen{ display:flex; align-items:center; gap:4px 12px; flex-wrap:wrap; margin-top:14px; padding:11px 14px;
  background:var(--paper); border:1px solid var(--line); border-radius:10px; color:var(--ink); text-decoration:none; transition:background .15s, border-color .15s; }
.sim-nachlesen:hover{ border-color:var(--accent); background:var(--accent-soft); color:var(--ink); }
.sim-nl-h{ font-weight:700; color:var(--accent-tx, var(--accent)); white-space:nowrap; }
.sim-nl-h i{ margin-right:4px; }
.sim-nl-t{ flex:1; min-width:12em; color:var(--ink-2); }
.sim-nl-i{ font-size:12px; color:var(--muted); }
