/* ═══════════════════════════════════════════════════════════════════════════
 * LEHRGANG-APP · Design-System "Einsatz-Zentrale" · v2
 * ───────────────────────────────────────────────────────────────────────────
 * Design-Sprache: FW-Folien (rote Trennlinie, "112") + Rescue-Clean-Restraint.
 * Rot = RAL 3000 Feuerrot #A72920 (verifiziert, FW-Branding.md).
 *
 * v2-Prinzipien (Jason, 02.08.2026 — "kein Standard-KI-Look"):
 *   • KEINE border-left-Akzent-Streifen an Karten (KI-Klischee)
 *   • Kontrast über FLÄCHE: dunkle Anker-Karte im hellen Layout (u. umgekehrt)
 *   • Rote Linien nur als Folien-Zitat (Header-Linie, Sektions-Linie)
 *   • Dark/Light ueber Tokens (html[data-theme="dark"])
 *
 * AUFBAU:  1 Tokens · 2 Reset · 3 Layout · 4 Sidebar · 5 Topbar/Tabbar
 *          6 Karten+Stats · 7 Anker-Karte · 8 Planer · 9 Buttons/Badges
 *          10 Modal+Toast · 11 Login · 12 Animationen · 13 Responsive (ENDE!)
 * ═══════════════════════════════════════════════════════════════════════════ */

/* ── 1. TOKENS ───────────────────────────────────────────────────────────── */
:root{
  --rot:#A72920;             /* RAL 3000 — Buttons, Flaechen */
  --rot-dunkel:#8C1F18;
  --rot-ui:#A72920;          /* Linien, Punkte, 112 */
  --rot-text:#8C1F18;        /* rote TEXT-Akzente (Theme-abhaengig) */
  --rot-glas:rgba(167,41,32,.10);
  --rot-rand:rgba(167,41,32,.30);
  --anker:#1B1D21;           /* dunkle Anker-Flaeche (Sidebar, Hero) */
  --anker-2:#26292E;
  /* Reg 90: warme Off-White-Toene, KEIN grelles #FFF als Flaeche */
  --bg:#F3F2EF;
  --karte:#FBFAF7;
  --tinte:#1B1D21;
  --grau:#666C74;
  --linie:#E4E2DC;
  --chip-bg:#EFEEE9;
  --chip-txt:#54595F;
  --feld-bg:#F6F5F1;
  --glas-bg:rgba(244,243,241,.92);
  --gruen:#2E7D5B;
  --gruen-glas:rgba(46,125,91,.11);
  --folie:linear-gradient(165deg,#FBFBFA 0%,#ECEBE8 100%);
  --r:16px;
  --schatten:0 1px 2px rgba(27,29,33,.04),0 8px 24px rgba(27,29,33,.05);
  --tabbar-h:66px;
}
html[data-theme="dark"]{
  --rot-ui:#C9564A;
  --rot-text:#E08A80;
  --rot-glas:rgba(201,86,74,.14);
  --rot-rand:rgba(201,86,74,.38);
  --anker:#101214;
  --anker-2:#1A1D21;
  --bg:#16181B;
  --karte:#1E2125;
  --tinte:#EAE9E6;
  --grau:#9BA1A8;
  --linie:#2B2F34;
  --chip-bg:#282C31;
  --chip-txt:#B8BDC3;
  --feld-bg:#24282D;
  --glas-bg:rgba(22,24,27,.92);
  --gruen:#4CAF82;
  --gruen-glas:rgba(76,175,130,.14);
  --folie:linear-gradient(165deg,#1E2125 0%,#16181B 100%);
  --schatten:0 1px 2px rgba(0,0,0,.35),0 8px 24px rgba(0,0,0,.28);
}

/* ── 2. RESET + BASIS ────────────────────────────────────────────────────── */
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  font:16px/1.55 -apple-system,"Segoe UI",Roboto,Inter,system-ui,sans-serif;
  background:var(--bg);color:var(--tinte);min-height:100dvh;
}
a{color:var(--rot-text)}
button{font:inherit;cursor:pointer;color:inherit}
:focus-visible{outline:3px solid rgba(167,41,32,.45);outline-offset:2px;border-radius:6px}

/* ── 3. APP-LAYOUT ───────────────────────────────────────────────────────── */
.app{display:grid;grid-template-columns:256px 1fr;min-height:100dvh}
.main{display:flex;flex-direction:column;min-width:0}
.inhalt{flex:1;width:100%;max-width:1180px;padding:22px 26px 40px;margin:0 auto}

/* ── 4. SIDEBAR (Desktop, immer dunkel = Anker) ──────────────────────────── */
.side{
  background:var(--anker);color:#E8E7E4;display:flex;flex-direction:column;
  padding:20px 14px;position:sticky;top:0;height:100dvh;
}
.side-brand{display:flex;align-items:center;gap:11px;padding:4px 8px 20px}
.side-brand .name{font-weight:800;font-size:16.5px;letter-spacing:-.01em;line-height:1.2;color:#fff}
.side-brand .sub{font-size:11.5px;color:#9BA0A6;font-weight:600}
.emblem{flex-shrink:0}
.side-nav{display:flex;flex-direction:column;gap:3px}
.side-nav a,.side-nav button{
  display:flex;align-items:center;gap:12px;padding:11px 13px;border-radius:11px;
  color:#C9CCD1;text-decoration:none;font-weight:600;font-size:14.5px;
  background:none;border:none;text-align:left;width:100%;
}
.side-nav a:hover,.side-nav button:hover{background:rgba(255,255,255,.06);color:#fff}
.side-nav .on{background:var(--rot);color:#fff}
.side-nav .on:hover{background:var(--rot)}
.side-nav .ico{width:22px;text-align:center;font-size:17px}
.side-foot{margin-top:auto;display:flex;flex-direction:column;gap:10px}
.side-112{font-style:italic;font-weight:900;font-size:22px;color:#C9564A;letter-spacing:.02em;padding:0 8px}
.side-hinweis{font-size:10.5px;color:#7A7F86;line-height:1.45;padding:0 8px 4px}

/* ── 5. TOPBAR + TAB-BAR (Mobile) ────────────────────────────────────────── */
.topbar{
  position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:10px;
  background:var(--glas-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border-bottom:2px solid var(--rot-ui);              /* rote Folien-Linie */
  padding:10px 14px;padding-top:calc(10px + env(safe-area-inset-top,0px));
}
.topbar .titel{font-weight:800;font-size:15.5px;letter-spacing:-.01em;line-height:1.15}
.topbar .untertitel{font-size:11px;color:var(--grau);font-weight:600;font-variant-numeric:tabular-nums}
.topbar .sp{flex:1}
.zwoelf{font-style:italic;font-weight:900;font-size:19px;color:var(--rot-ui)}
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:60;
  display:grid;grid-template-columns:repeat(4,1fr);
  background:var(--glas-bg);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-top:1px solid var(--linie);
  padding-bottom:env(safe-area-inset-bottom,0px);height:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px));
}
.tabbar a,.tabbar button{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  text-decoration:none;color:var(--grau);font-size:10.5px;font-weight:700;
  background:none;border:none;min-height:48px;
}
.tabbar .ico{font-size:20px;line-height:1}
.tabbar .on{color:var(--rot-text)}
.theme-knopf{
  width:40px;height:40px;border-radius:11px;border:1px solid var(--linie);
  background:var(--karte);font-size:16px;display:grid;place-items:center;flex-shrink:0;
}
.side .theme-knopf{border-color:#2C3036;background:rgba(255,255,255,.05)}

/* ── 6. KARTEN + STATS ───────────────────────────────────────────────────── */
.karte{background:var(--karte);border:1px solid var(--linie);border-radius:var(--r);padding:18px;box-shadow:var(--schatten)}
.gruss{margin:14px 0 4px}
.gruss h1{font-size:clamp(21px,4.5vw,27px);letter-spacing:-.02em}
.gruss .datum-zeile{color:var(--grau);font-size:14px;margin-top:2px;font-variant-numeric:tabular-nums}
.uhr-chip{
  display:inline-flex;align-items:baseline;gap:8px;background:var(--karte);
  border:1px solid var(--linie);border-radius:999px;padding:6px 14px;
  box-shadow:var(--schatten);font-variant-numeric:tabular-nums;
}
.uhr-chip .zeit{font-weight:800;font-size:15px}
.uhr-chip .datum{font-size:12px;color:var(--grau);font-weight:600}
.avatar{
  width:38px;height:38px;border-radius:50%;flex-shrink:0;
  background:linear-gradient(150deg,var(--rot),var(--rot-dunkel));
  color:#fff;display:grid;place-items:center;font-weight:800;font-size:13.5px;
  border:2px solid var(--karte);box-shadow:var(--schatten);
}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:16px 0 22px}
.stat{min-width:0;overflow:hidden;background:var(--karte);border:1px solid var(--linie);border-radius:14px;padding:13px 15px;box-shadow:var(--schatten)}
.stat .k{font-size:11px;color:var(--grau);font-weight:700;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
.stat .v{font-size:22px;font-weight:800;letter-spacing:-.02em;margin-top:3px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
.stat .v small{font-size:12.5px;color:var(--grau);font-weight:600}
.balken{height:7px;border-radius:99px;background:var(--chip-bg);overflow:hidden;margin-top:10px}
.balken i{display:block;height:100%;background:linear-gradient(90deg,var(--rot),var(--rot-dunkel));border-radius:99px;transition:width 1s cubic-bezier(.2,.7,.2,1)}

/* ── 7. ANKER-KARTE "Nächster Kurstag" ───────────────────────────────────
 * Kontrast ueber FLAECHE (dunkle Karte im hellen Layout), kein Akzent-Streifen.
 * Farben fest — die Anker-Karte ist in beiden Themes dunkel. */
.hero-next{
  position:relative;overflow:hidden;
  background:linear-gradient(150deg,#212429 0%,#141619 100%);
  border:1px solid #2C3036;border-radius:var(--r);
  padding:20px 19px;box-shadow:var(--schatten);margin-bottom:22px;color:#EDECEA;
}
html[data-theme="dark"] .hero-next{background:linear-gradient(150deg,#272B31 0%,#191C20 100%);border-color:#33383E}
.hero-next .ober{font-size:11.5px;font-weight:800;color:#E08A80;text-transform:uppercase;letter-spacing:.08em;display:flex;align-items:center;gap:7px}
.puls{width:9px;height:9px;border-radius:50%;background:#C9564A;animation:puls 2s ease-out infinite}
.hero-next h2{font-size:clamp(18px,3.6vw,23px);letter-spacing:-.02em;margin:8px 0 3px;color:#F4F2EE}
.hero-next .meta{color:#A9AEB5;font-size:14px}
.hero-next .cd{
  position:absolute;right:19px;top:17px;text-align:center;
  background:rgba(255,255,255,.05);border:1px solid rgba(224,138,128,.30);
  border-radius:13px;padding:8px 14px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
}
.hero-next .cd .n{font-size:23px;font-weight:900;color:#E08A80;line-height:1;font-variant-numeric:tabular-nums}
.hero-next .cd .l{font-size:10px;color:#A9AEB5;font-weight:700;text-transform:uppercase;letter-spacing:.05em}
.ekg-mini{
  position:absolute;left:0;right:0;bottom:-6px;width:100%;height:44px;
  pointer-events:none;opacity:.5;
}
.ekg-mini path{
  fill:none;stroke:#E08A80;stroke-width:2;stroke-linecap:round;
  stroke-dasharray:110 490;stroke-dashoffset:600;
  animation:ekglauf 3s linear infinite;
}

/* ── 8. 5-TAGE-PLANER ────────────────────────────────────────────────────── */
.sek-titel{
  display:flex;align-items:center;gap:10px;font-size:12.5px;text-transform:uppercase;
  letter-spacing:.07em;color:var(--grau);font-weight:800;margin:4px 0 14px;
}
.sek-titel:after{content:"";flex:1;height:2px;background:var(--rot-ui);opacity:.85;border-radius:2px}
.plan{position:relative;padding-left:34px}
.plan:before{content:"";position:absolute;left:13px;top:10px;bottom:10px;width:2px;background:var(--linie)}
.tag{position:relative;margin-bottom:12px}
.tag .punkt{position:absolute;left:-27px;top:19px;width:14px;height:14px;border-radius:50%;background:var(--karte);border:3px solid var(--linie)}
.tag.fertig .punkt{border-color:var(--gruen);background:var(--gruen)}
.tag.next .punkt{border-color:var(--rot-ui);background:var(--rot-ui);box-shadow:0 0 0 5px var(--rot-glas)}
.tag-karte{background:var(--karte);border:1px solid var(--linie);border-radius:var(--r);padding:15px 17px;box-shadow:var(--schatten)}
.tag-kopf{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.tag-nr{font-size:11px;font-weight:900;letter-spacing:.08em;color:var(--grau);text-transform:uppercase}
.tag-titel{font-weight:800;font-size:16px;letter-spacing:-.01em}
.tag.next .tag-titel{color:var(--rot-text)}
.tag-datum{font-size:13px;color:var(--grau);font-variant-numeric:tabular-nums}
.tag-chips{margin-top:9px;display:flex;flex-wrap:wrap;gap:6px}
.chip{font-size:12px;padding:4px 11px;border-radius:999px;background:var(--chip-bg);color:var(--chip-txt);font-weight:600}

/* Modul-Karten (kurs.php): Desktop 2 Spalten, Mobile 1 Spalte (kein Text-Abriss) */
.module-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0 0 14px}
@media(max-width:700px){.module-grid{grid-template-columns:1fr}}

/* ── 9. BUTTONS + BADGES ─────────────────────────────────────────────────── */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:48px;padding:0 20px;border-radius:13px;font-weight:800;font-size:15px;
  border:1px solid var(--rot-rand);color:var(--rot-text);text-decoration:none;
  background:var(--rot-glas);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
}
.btn:hover{background:rgba(167,41,32,.18)}
.btn.voll{background:var(--rot);border-color:var(--rot);color:#fff}
.btn.voll:hover{background:var(--rot-dunkel)}
.badge{font-size:11px;font-weight:800;padding:3px 10px;border-radius:999px;text-transform:uppercase;letter-spacing:.04em;margin-left:auto}
.badge.fertig{background:var(--gruen-glas);color:var(--gruen)}
.badge.next{background:var(--rot-glas);color:var(--rot-text)}
.badge.plan{background:var(--chip-bg);color:var(--grau)}

/* ── 10. FEEDBACK-MODAL + TOAST ──────────────────────────────────────────── */
.modal-bg{
  position:fixed;inset:0;z-index:10000;background:rgba(10,11,13,.5);
  display:none;align-items:flex-end;justify-content:center;
  backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
}
.modal-bg.offen{display:flex}
.modal{
  background:var(--karte);color:var(--tinte);border-radius:20px 20px 0 0;width:100%;max-width:520px;
  max-height:88dvh;overflow:auto;padding:20px 18px calc(18px + env(safe-area-inset-bottom,0px));
  animation:hoch .28s cubic-bezier(.2,.8,.25,1);
}
.modal-kopf{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.modal-kopf h3{font-size:18px;letter-spacing:-.01em}
.modal-x{
  margin-left:auto;width:40px;height:40px;border-radius:11px;border:1px solid var(--rot-rand);
  background:var(--rot-glas);color:var(--rot-text);font-size:19px;font-weight:800;
}
.feld label{display:block;font-weight:700;font-size:13.5px;margin:13px 0 6px}
.feld input,.feld select,.feld textarea{
  width:100%;min-height:48px;padding:12px 14px;border:1px solid var(--linie);
  border-radius:12px;background:var(--feld-bg);font:inherit;color:inherit;
}
.feld textarea{min-height:110px;resize:vertical}
.art-wahl{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.art-wahl input{position:absolute;opacity:0;pointer-events:none}
.art-wahl label{
  display:flex;align-items:center;gap:8px;margin:0;padding:11px 12px;border-radius:11px;
  border:1px solid var(--linie);background:var(--feld-bg);font-weight:700;font-size:13.5px;cursor:pointer;min-height:48px;
}
.art-wahl input:checked + label{border-color:var(--rot-rand);background:var(--rot-glas);color:var(--rot-text)}
.art-wahl input:focus-visible + label{outline:3px solid rgba(167,41,32,.45);outline-offset:2px}
.toast{
  position:fixed;left:50%;transform:translateX(-50%);z-index:10500;
  bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px) + 14px);
  background:var(--anker);color:#fff;font-weight:700;font-size:14px;
  padding:12px 20px;border-radius:999px;box-shadow:0 10px 30px rgba(0,0,0,.3);
  animation:hoch .3s cubic-bezier(.2,.8,.25,1);
}

/* ── 11. LOGIN ───────────────────────────────────────────────────────────── */
.login-buehne{
  min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:var(--folie);padding:22px 16px calc(22px + env(safe-area-inset-bottom,0px));
}
.login-kopf{
  width:100%;max-width:430px;display:flex;align-items:center;gap:11px;margin-bottom:14px;
  padding-bottom:12px;border-bottom:2.5px solid var(--rot-ui);
}
.login-kopf .t{font-weight:800;font-size:15px;line-height:1.2}
.login-kopf .s{font-size:11.5px;color:var(--grau);font-weight:600}
.login-karte{
  width:100%;max-width:430px;background:var(--karte);border:1px solid var(--linie);
  border-radius:20px;padding:24px 22px;box-shadow:var(--schatten);
}
.login-karte h1{font-size:24px;letter-spacing:-.02em;color:var(--rot-text);line-height:1.25}
.login-karte .sub{color:var(--grau);font-size:14.5px;margin:8px 0 4px}
.login-fuss{width:100%;max-width:430px;text-align:center;color:var(--grau);opacity:.8;font-size:11px;margin-top:16px;line-height:1.5}
.fehler{background:var(--rot-glas);border:1px solid var(--rot-rand);color:var(--rot-text);padding:11px 13px;border-radius:11px;margin:12px 0;font-weight:600;font-size:14px}

/* ── 11b. FOLIEN-VIEWER ──────────────────────────────────────────────────── */
.viewer-kopf{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:6px 0 12px}
.viewer-kopf h1{font-size:clamp(18px,3.8vw,23px);letter-spacing:-.02em;min-width:0}
.viewer-zurueck{font-size:13.5px;font-weight:700;text-decoration:none;color:var(--grau)}
.viewer-zaehler{margin-left:auto;font-variant-numeric:tabular-nums;font-weight:800;font-size:14px;background:var(--karte);border:1px solid var(--linie);border-radius:999px;padding:6px 14px;box-shadow:var(--schatten)}
.viewer-progress{height:5px;border-radius:99px;background:var(--chip-bg);overflow:hidden;margin-bottom:14px}
.viewer-progress i{display:block;height:100%;background:var(--rot-ui);border-radius:99px;transition:width .3s ease}
.folie-rahmen{
  position:relative;background:var(--karte);border:1px solid var(--linie);border-radius:var(--r);
  box-shadow:var(--schatten);padding:10px;line-height:0;display:grid;place-items:center;
}
/* Ganze Folie IMMER komplett sichtbar — nie abgeschnitten, egal ob quer oder hoch */
.folie-rahmen img{max-width:100%;max-height:60dvh;width:auto;height:auto;object-fit:contain;border-radius:10px;background:#fff}
.fs-knopf{
  position:absolute;right:16px;top:16px;z-index:5;width:42px;height:42px;border-radius:11px;
  border:1px solid var(--linie);background:var(--glas-bg);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  font-size:17px;display:grid;place-items:center;
}
/* Vollbild-Modus (CSS, funktioniert auf allen Geraeten inkl. iOS) */
.vb #vBuehne{
  position:fixed;inset:0;z-index:20000;background:#0E0F11;
  display:flex;flex-direction:column;padding:12px 12px calc(12px + env(safe-area-inset-bottom,0px));
}
/* Fix 18.09.2026: Rahmen grid->flex + min-height:0, damit max-height:100% des Bildes auf die
   berechnete Rahmen-Hoehe aufloest. Vorher nahm die Grid-auto-row die intrinsische Bildhoehe an
   -> Folie im Querformat/Tablet abgeschnitten. object-fit:contain haelt sie immer komplett sichtbar. */
.vb .folie-rahmen{flex:1 1 0;min-height:0;background:transparent;border:none;box-shadow:none;padding:0;display:flex;align-items:center;justify-content:center;overflow:hidden}
.vb .folie-rahmen img{max-height:100%;max-width:100%;width:auto;height:auto;object-fit:contain}
.vb .fs-knopf{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2);color:#fff}
.vb .folie-nav{margin:10px 0 0;flex:0 0 auto}
.vb .folie-nav .btn{border-color:rgba(255,255,255,.22);color:#EDECEA;background:rgba(255,255,255,.08)}
.vb .folie-nav .btn.voll{background:var(--rot);border-color:var(--rot);color:#fff}
.vb .folie-nav .mitte{color:#8D939B}
.vb #vTipps,.vb-verstecken{display:none}
.vb #vTipps{display:none}
body.vb{overflow:hidden}
.folie-nav{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;margin:14px 0 6px}
.folie-nav .btn{min-height:52px}
.folie-nav .btn[disabled]{opacity:.35;pointer-events:none}
.folie-nav .mitte{display:grid;place-items:center;color:var(--grau);font-size:12.5px;font-weight:700}
.tipp{border-radius:14px;padding:13px 15px;margin-top:10px;font-size:14.5px;line-height:1.5;border:1px solid var(--linie);background:var(--karte);box-shadow:var(--schatten)}
.tipp .tk{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.06em;margin-bottom:5px}
.tipp.leitlinie{border-color:var(--rot-rand);background:var(--rot-glas)}
.tipp.leitlinie .tk{color:var(--rot-text)}
.tipp.merke .tk{color:var(--grau)}
.tipp.praxis{border-color:rgba(46,125,91,.3);background:var(--gruen-glas)}
.tipp.praxis .tk{color:var(--gruen)}
.viewer-fuss{color:var(--grau);opacity:.75;font-size:11.5px;margin-top:14px;line-height:1.5}
.deck-karte{display:flex;gap:13px;align-items:center;text-decoration:none;color:inherit;background:var(--karte);border:1px solid var(--linie);border-radius:var(--r);padding:16px;box-shadow:var(--schatten);transition:transform .15s,box-shadow .15s}
.deck-karte:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(27,29,33,.10)}
.deck-karte .gross{font-size:26px;line-height:1}
.deck-karte .t{font-weight:800;font-size:15.5px;letter-spacing:-.01em}
.deck-karte .s{color:var(--grau);font-size:13px;margin-top:2px}
.deck-karte .pfeil{margin-left:auto;color:var(--rot-text);font-weight:800}

/* ── 11c. ÜBERSICHT KOMPAKT-LISTE + KURSTAGE-STUNDENPLAN ─────────────────── */
.mini-plan{display:flex;flex-direction:column;gap:8px}
.mini-tag{
  display:flex;align-items:center;gap:11px;background:var(--karte);border:1px solid var(--linie);
  border-radius:13px;padding:11px 14px;box-shadow:var(--schatten);
}
.mini-tag .pkt{width:10px;height:10px;border-radius:50%;background:var(--linie);flex-shrink:0}
.mini-tag.fertig .pkt{background:var(--gruen)}
.mini-tag.next .pkt{background:var(--rot-ui);box-shadow:0 0 0 4px var(--rot-glas)}
.mini-tag .nr{font-size:11px;font-weight:900;color:var(--grau);text-transform:uppercase;letter-spacing:.06em;flex-shrink:0}
.mini-tag .tt{font-weight:800;font-size:14.5px;letter-spacing:-.01em;min-width:0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
.mini-tag.next .tt{color:var(--rot-text)}
.mini-tag .dt{margin-left:auto;font-size:12.5px;color:var(--grau);font-variant-numeric:tabular-nums;flex-shrink:0}

.ktag{margin-bottom:12px}
.ktag details{background:var(--karte);border:1px solid var(--linie);border-radius:var(--r);box-shadow:var(--schatten);overflow:hidden}
.ktag details[open]{border-color:var(--rot-rand)}
.ktag summary{
  list-style:none;cursor:pointer;display:flex;align-items:center;gap:11px;
  padding:15px 17px;font-weight:800;min-height:56px;
}
.ktag summary::-webkit-details-marker{display:none}
.ktag summary .pkt{width:12px;height:12px;border-radius:50%;background:var(--linie);flex-shrink:0}
.ktag.fertig summary .pkt{background:var(--gruen)}
.ktag.next summary .pkt{background:var(--rot-ui);box-shadow:0 0 0 4px var(--rot-glas)}
.ktag summary .meta{font-size:12.5px;color:var(--grau);font-weight:600}
.ktag summary .chev{margin-left:auto;color:var(--grau);transition:transform .2s;flex-shrink:0}
.ktag details[open] summary .chev{transform:rotate(90deg)}
.slot{display:grid;grid-template-columns:96px 1fr;gap:12px;padding:11px 17px;border-top:1px solid var(--linie)}
.slot .zeit{font-size:12.5px;font-weight:800;color:var(--grau);font-variant-numeric:tabular-nums;padding-top:2px}
.slot ul{margin:0;padding-left:16px;font-size:14px;line-height:1.6}
.slot.pause{background:var(--chip-bg);padding:7px 17px}
.slot.pause .zeit{color:var(--grau);font-weight:700}
.slot.pause .txt{font-size:12.5px;color:var(--grau);font-weight:700;padding-top:1px}
.slot.pruefung ul{color:var(--rot-text);font-weight:700}
.ktag .fuss{padding:11px 17px;border-top:1px solid var(--linie);font-size:12.5px;color:var(--grau)}

/* ── 11d. LERN-MODULE (Stepper, Anker, Takt, Ampel) ──────────────────────── */
.step-punkte{display:flex;gap:7px;justify-content:center;margin:4px 0 16px;flex-wrap:wrap}
/* .stp (nicht .sp! — .sp ist der Topbar-Spacer, Klassen-Kollision 02.08. gelernt) */
.stp{width:11px;height:11px;border-radius:50%;border:none;background:var(--linie);padding:0;transition:transform .2s,background .2s}
.stp.war{background:var(--rot-rand)}
.stp.an{background:var(--rot-ui);transform:scale(1.35)}
.stufe{display:none}
.stufe.an{display:block;animation:hoch .35s cubic-bezier(.2,.8,.25,1)}
.stufe-kopf{display:flex;align-items:center;gap:15px;margin-bottom:12px}
.buchstabe{
  width:64px;height:64px;flex-shrink:0;display:grid;place-items:center;
  font-size:32px;font-weight:900;color:var(--rot-text);
  background:var(--rot-glas);border:1.5px solid var(--rot-rand);border-radius:18px;
}
.stufe-name{font-weight:800;font-size:19px;letter-spacing:-.01em}
.stufe-frage{color:var(--grau);font-size:14px;margin-top:2px}
.tun-liste{margin:0 0 4px;padding:0;list-style:none}
.tun-liste li{
  background:var(--karte);border:1px solid var(--linie);border-radius:12px;
  padding:11px 14px;margin-bottom:8px;font-size:14.5px;box-shadow:var(--schatten);
}
.merk-anker{
  background:linear-gradient(150deg,#212429 0%,#141619 100%);
  border:1px solid #2C3036;border-radius:var(--r);padding:20px 19px;
  color:#EDECEA;box-shadow:var(--schatten);
}
html[data-theme="dark"] .merk-anker{background:linear-gradient(150deg,#272B31 0%,#191C20 100%);border-color:#33383E}
.merk-anker .ma-ober{font-size:11.5px;font-weight:800;color:#E08A80;text-transform:uppercase;letter-spacing:.08em}
.merk-anker h3{font-size:clamp(19px,4vw,24px);letter-spacing:-.02em;margin:7px 0 6px;color:#F4F2EE}
.merk-anker p{color:#A9AEB5;font-size:14.5px;line-height:1.6;margin:0}
.xbc-reihe{display:flex;gap:8px;justify-content:center;margin-top:16px;flex-wrap:wrap}
.xbc{
  width:46px;height:46px;display:grid;place-items:center;font-weight:900;font-size:20px;
  color:var(--rot-text);background:var(--karte);border:1px solid var(--linie);border-radius:13px;box-shadow:var(--schatten);
}
.takt-box{
  display:flex;align-items:center;gap:16px;background:var(--karte);
  border:1px solid var(--rot-rand);border-radius:var(--r);padding:15px 17px;
  margin-top:4px;box-shadow:var(--schatten);
}
.takt-titel{font-weight:800;font-size:15px}
.takt-sub{color:var(--grau);font-size:13px;margin-top:2px}
.takt-kreis{
  width:44px;height:44px;flex-shrink:0;border-radius:50%;
  background:radial-gradient(circle at 35% 35%,var(--rot),var(--rot-dunkel));
  animation:takt .545s ease-in-out infinite;   /* 0,545 s ≈ 110 Kompressionen/min */
}
@keyframes takt{0%,100%{transform:scale(.82)}45%{transform:scale(1.06)}}
.vital-karte{background:var(--karte);border:1px solid var(--linie);border-radius:var(--r);padding:15px 17px;margin-bottom:12px;box-shadow:var(--schatten)}
.vital-kopf{display:flex;align-items:center;gap:12px;margin-bottom:11px}
.vital-ico{font-size:23px}
.vital-name{font-weight:800;font-size:15.5px;letter-spacing:-.01em}
.vital-einheit{color:var(--grau);font-size:12.5px}
.vital-norm{margin-left:auto;font-weight:900;font-size:16px;color:var(--gruen);font-variant-numeric:tabular-nums;white-space:nowrap}
.ampel{display:flex;height:10px;border-radius:99px;overflow:hidden;gap:3px}
.ampel .a-tief,.ampel .a-hoch{flex:1;background:var(--rot-glas);border:1px solid var(--rot-rand);border-radius:99px}
.ampel .a-norm{flex:2.2;background:var(--gruen-glas);border:1px solid rgba(46,125,91,.35);border-radius:99px}
.ampel-label{display:flex;justify-content:space-between;gap:8px;font-size:11.5px;color:var(--grau);font-weight:700;margin-top:6px}
.ampel-label .gruen{color:var(--gruen)}

/* ── 11e. HERZ-MODUL (EKG-Wave, schlagendes Herz, Kaskade, Fluss, HMV) ──── */
.herz-buehne{display:grid;place-items:center;margin:10px 0 2px}
.herz-svg{width:108px;height:108px;animation:herzbeat .92s ease-in-out infinite;transform-origin:50% 60%}
.hz-koerper{fill:#C9564A;stroke:#E08A80;stroke-width:2}
.hz-teilung{fill:none;stroke:rgba(255,255,255,.35);stroke-width:2;stroke-linecap:round}
.hz-glanz{fill:rgba(255,255,255,.16)}
@keyframes herzbeat{0%,100%{transform:scale(1)}22%{transform:scale(1.07)}36%{transform:scale(1)}52%{transform:scale(1.045)}66%{transform:scale(1)}}
.ekg-wrap{margin:8px auto 14px;max-width:460px}
.ekg-wrap svg{width:100%;height:56px;display:block}
.ekg-schatten{fill:none;stroke:rgba(224,138,128,.22);stroke-width:2.5}
.ekg-pfad{
  fill:none;stroke:#E08A80;stroke-width:2.5;stroke-linecap:round;
  stroke-dasharray:110 490;stroke-dashoffset:600;
  animation:ekglauf 2.4s linear infinite;
  filter:drop-shadow(0 0 6px rgba(224,138,128,.55));
}
@keyframes ekglauf{to{stroke-dashoffset:0}}

.klappen-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:4px 0 10px}
@media(max-width:520px){.klappen-grid{grid-template-columns:1fr}}
.klappe{background:var(--karte);border:1px solid var(--linie);border-radius:13px;padding:11px 13px;box-shadow:var(--schatten)}
.kl-art{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--grau)}
.kl-name{font-weight:800;font-size:14.5px;margin:3px 0 1px;color:var(--rot-text)}
.kl-weg{font-size:12.5px;color:var(--grau)}

.rl-buehne{display:grid;place-items:center;margin:4px 0 10px}
.rl-buehne svg{width:150px;height:150px}
.rl-umriss{fill:var(--rot-glas);stroke:var(--rot-rand);stroke-width:2}
.rl-punkt{fill:var(--rot-ui);opacity:.25;animation:rlglow 2.6s ease-in-out infinite}
.rl-punkt.p1{animation-delay:0s}.rl-punkt.p2{animation-delay:.35s}.rl-punkt.p3{animation-delay:.65s}
.rl-punkt.p4{animation-delay:.95s}.rl-punkt.p5{animation-delay:.95s}
@keyframes rlglow{0%,55%,100%{opacity:.25;filter:none}12%{opacity:1;filter:drop-shadow(0 0 7px rgba(201,86,74,.8))}30%{opacity:.45}}
.rl-leiter{display:flex;flex-direction:column;gap:6px;margin:2px 0 10px}
.rl-zeile{display:flex;align-items:center;gap:10px;background:var(--karte);border:1px solid var(--linie);border-radius:11px;padding:9px 13px;font-size:14px;box-shadow:var(--schatten)}
.rl-dot{width:10px;height:10px;border-radius:50%;background:var(--rot-ui);flex-shrink:0;animation:rlglow 2.6s ease-in-out infinite}
.rl-dot.d1{animation-delay:0s}.rl-dot.d2{animation-delay:.35s}.rl-dot.d3{animation-delay:.65s}.rl-dot.d4{animation-delay:.95s}.rl-dot.d5{animation-delay:1.25s}
.rl-hz{margin-left:auto;font-weight:800;font-variant-numeric:tabular-nums;color:var(--grau);font-size:13px}
.rl-zeile:first-child .rl-hz{color:var(--rot-text)}
.quelle-fuss{color:var(--grau);opacity:.75;font-size:11.5px;margin-top:8px}

.weg-liste .w-blau{color:#2B4C7E}
.weg-liste .w-rot{color:var(--rot-ui)}

.hmv-karte{background:var(--karte);border:1px solid var(--rot-rand);border-radius:var(--r);padding:17px;margin-bottom:12px;box-shadow:var(--schatten);text-align:center}
.hmv-formel{font-size:13.5px;font-weight:700;color:var(--grau)}
.hmv-wert{font-size:42px;font-weight:900;letter-spacing:-.03em;color:var(--rot-text);line-height:1.15;font-variant-numeric:tabular-nums}
.hmv-wert small{font-size:16px;color:var(--grau);font-weight:700}
.hmv-karte input[type=range]{width:100%;margin:12px 0 6px;accent-color:#A72920;height:34px}
.hmv-skala{display:flex;justify-content:space-between;font-size:12px;color:var(--grau);font-weight:700}
.hmv-status{font-weight:800}

.fluss-buehne{display:grid;place-items:center;margin:4px 0 12px}
.fluss-buehne svg{width:min(300px,88%);height:auto}
.fl-label{font:800 11px -apple-system,'Segoe UI',sans-serif;fill:var(--grau);text-anchor:middle;letter-spacing:.08em}
.fl-herz{fill:#fff;font-size:12px}
.fl-herzbox{fill:#C9564A;stroke:#E08A80;stroke-width:2;rx:12}
.fl-pfad{fill:none;stroke-width:5;stroke-linecap:round;stroke-dasharray:3 9;animation:flfluss 1.6s linear infinite}
.fl-blau{stroke:#2B4C7E}
.fl-rot{stroke:#C9564A}
@keyframes flfluss{to{stroke-dashoffset:-24}}
.puls-chip{animation:none}

/* Qualifikations-Treppe (Rettungsmittel-Modul) */
.quali-treppe{display:flex;flex-direction:column;gap:8px;margin:4px 0 12px}
.quali-zeile{display:grid;grid-template-columns:128px 1fr auto;align-items:center;gap:10px;background:var(--karte);border:1px solid var(--linie);border-radius:11px;padding:10px 13px;box-shadow:var(--schatten)}
.q-name{font-weight:800;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.q-balken{height:9px;border-radius:99px;background:linear-gradient(90deg,var(--rot),var(--rot-dunkel));min-width:14px}
.q-balken.q-arzt{background:linear-gradient(90deg,#2B4C7E,#1E3A64)}
.q-std{font-size:12px;font-weight:800;color:var(--grau);font-variant-numeric:tabular-nums;white-space:nowrap}
@media(max-width:480px){.quali-zeile{grid-template-columns:104px 1fr auto}.q-name{font-size:12px}}

/* Quiz (Selbsttest) */
.q-zaehler{font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--grau)}
.q-frage{font-size:18px;font-weight:800;letter-spacing:-.01em;margin:8px 0 14px;line-height:1.4}
.q-antworten{display:flex;flex-direction:column;gap:9px}
.q-option{
  text-align:left;padding:13px 15px;min-height:50px;border-radius:12px;font-weight:600;font-size:14.5px;
  border:1px solid var(--linie);background:var(--feld-bg);transition:transform .12s;
}
.q-option:not(:disabled):hover{transform:translateY(-1px)}
.q-option:active{transform:scale(.98)}
.q-option.richtig{border-color:rgba(46,125,91,.5);background:var(--gruen-glas);color:var(--gruen);font-weight:800}
.q-option.falsch{border-color:var(--rot-rand);background:var(--rot-glas);color:var(--rot-text)}
.q-option:disabled{cursor:default;opacity:.92}

/* Stepper-Punkte: groessere Touch-Flaeche (V1-Audit #12), visuell klein */
.stp{position:relative}
.stp:after{content:"";position:absolute;inset:-8px}

/* Profil-Sheet (Avatar-Tap, mobiler Abmelden-Weg, V1-Audit #10) */
.avatar{cursor:pointer;border:none;padding:0;font:inherit}

/* Lehrgang-Switcher (Profil-Sheet + Übersicht) */
.kurs-wahl{
  display:flex;align-items:center;gap:10px;width:100%;text-align:left;
  padding:12px 14px;border-radius:12px;border:1px solid var(--linie);
  background:var(--feld-bg);font-weight:700;font-size:14px;min-height:50px;
}
.kurs-wahl:not(:disabled):hover{border-color:var(--rot-rand)}
.kurs-wahl.aktiv{border-color:rgba(46,125,91,.4);background:var(--gruen-glas);cursor:default}
.kurs-wahl .badge,.kurs-wahl span:last-child{white-space:nowrap;flex-shrink:0}


/* ── 11f. EMBLEM: Blaulicht-Wechselblinker (Doppelblitz wie am Fahrzeug) ── */
.emblem .bl-a,.emblem .bl-b{opacity:1}
.emblem .bl-a{animation:blaulicht 1.15s linear infinite}
.emblem .bl-b{animation:blaulicht 1.15s linear infinite .575s}
@keyframes blaulicht{
  0%,42%,100%{opacity:.22;filter:none}
  5%,17%{opacity:1;filter:drop-shadow(0 0 3.5px #59B0FF)}
  11%{opacity:.35}
}

/* ── 11g. EINFAHRT-SPLASH (nach Login: HLF fährt von rechts nach links) ─── */
.splash{
  position:fixed;inset:0;z-index:30000;
  background:linear-gradient(165deg,#1E2125 0%,#101214 100%);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;
  animation:sp-fade .45s ease 2.9s forwards;
}
@keyframes sp-fade{to{opacity:0;visibility:hidden}}
.sp-buehne{position:relative;width:min(560px,94vw);height:130px;display:flex;flex-direction:column;justify-content:flex-end;overflow:visible}
.sp-hlf{
  position:absolute;bottom:10px;left:50%;width:188px;height:auto;margin-left:-94px;
  transform:translateX(80vw) scaleX(-1);
  animation:sp-fahrt 2.75s cubic-bezier(.3,.65,.35,1) forwards;
  filter:drop-shadow(0 8px 16px rgba(0,0,0,.4));
}
@keyframes sp-fahrt{
  0%{transform:translateX(80vw) scaleX(-1)}
  40%,58%{transform:translateX(0) scaleX(-1)}
  100%{transform:translateX(-85vw) scaleX(-1)}
}
.sp-strasse{position:relative;height:4px;width:100%;overflow:hidden;border-radius:2px;background:#23262B}
.sp-strasse:before{
  content:"";position:absolute;inset:0;
  background:repeating-linear-gradient(90deg,#4A5058 0 30px,transparent 30px 52px);
  animation:sp-road .42s linear infinite;
}
@keyframes sp-road{to{transform:translateX(52px)}}
.sp-text{color:#A9AEB5;font-weight:800;font-size:14.5px;letter-spacing:.05em;animation:sp-puls 1.2s ease-in-out infinite}
@keyframes sp-puls{0%,100%{opacity:.55}50%{opacity:1}}
@media(prefers-reduced-motion:reduce){.splash{display:none}}

/* ── 12. ANIMATIONEN + BARRIEREFREIHEIT ──────────────────────────────────── */
@keyframes puls{0%{box-shadow:0 0 0 0 rgba(201,86,74,.35)}70%{box-shadow:0 0 0 11px rgba(201,86,74,0)}100%{box-shadow:0 0 0 0 rgba(201,86,74,0)}}
@keyframes hoch{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
.rein{opacity:0;transform:translateY(12px);animation:hoch .5s cubic-bezier(.2,.8,.25,1) forwards}
.rein.v1{animation-delay:.05s}.rein.v2{animation-delay:.12s}.rein.v3{animation-delay:.19s}.rein.v4{animation-delay:.26s}
@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
  .rein{opacity:1;transform:none}
}

/* ── 13. RESPONSIVE SICHTBARKEIT ─────────────────────────────────────────
 * MUSS als LETZTER Abschnitt stehen (CSS-Kaskade: gleiche Spezifitaet →
 * spaetere Regel gewinnt, Media-Query erhoeht sie NICHT). NICHT verschieben! */
@media(max-width:899px){
  .app{grid-template-columns:1fr}
  .side{display:none}
  .inhalt{padding:14px 14px calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px) + 24px)}
  .stats{grid-template-columns:1fr 1fr}
  .hero-next .cd{position:static;display:inline-flex;align-items:baseline;gap:7px;margin-top:10px;padding:6px 12px}
  .hero-next .cd .n{font-size:18px}
}
@media(min-width:900px){
  .topbar{display:none}
  .tabbar{display:none}
}
@media(min-width:640px){
  .modal-bg{align-items:center}
  .modal{border-radius:20px;padding:22px}
}
@media(min-width:900px){
  .toast{bottom:26px}
}
