347 lines
16 KiB
CSS
347 lines
16 KiB
CSS
:root {
|
|
--bg: #10141a;
|
|
--panel: #171d26;
|
|
--karte: #1f2733;
|
|
--rand: #2c3646;
|
|
--text: #dce3ec;
|
|
--dim: #8b98a9;
|
|
--akzent: #4da3ff;
|
|
--gruen: #3fc380;
|
|
--gelb: #e8c34a;
|
|
--rot: #e06060;
|
|
--badge-gruen-bg: #1d3a2c;
|
|
--badge-gelb-bg: #3a331d;
|
|
--badge-rot-bg: #3a1d1d;
|
|
--badge-blau-bg: #1d2b3a;
|
|
--code-bg: #0d1117;
|
|
}
|
|
:root { --lese-text: #c9d2df; } /* Guide-Fließtext: weicher als --text */
|
|
:root[data-theme="light"] { --lese-text: #333747; }
|
|
:root[data-theme="sepia"] {
|
|
--bg: #f0e7d3;
|
|
--panel: #f9f2df;
|
|
--karte: #efe4c9;
|
|
--rand: #d9cba8;
|
|
--text: #443b2c;
|
|
--dim: #83765c;
|
|
--akzent: #7a5c2e;
|
|
--gruen: #4f7a42;
|
|
--gelb: #8f6b14;
|
|
--rot: #a6442e;
|
|
--badge-gruen-bg: #e2ecd5;
|
|
--badge-gelb-bg: #f0e6c2;
|
|
--badge-rot-bg: #f0d8cd;
|
|
--badge-blau-bg: #e8e0c8;
|
|
--code-bg: #ede3ca;
|
|
--lese-text: #443b2c;
|
|
}
|
|
:root[data-theme="light"] {
|
|
--bg: #f3f5f8;
|
|
--panel: #ffffff;
|
|
--karte: #eef1f5;
|
|
--rand: #d4dae2;
|
|
--text: #1c2430;
|
|
--dim: #5c6a7c;
|
|
--akzent: #1a73d6;
|
|
--gruen: #1d8a55;
|
|
--gelb: #9a7b12;
|
|
--rot: #c23b3b;
|
|
--badge-gruen-bg: #dcf2e6;
|
|
--badge-gelb-bg: #f6eecb;
|
|
--badge-rot-bg: #f6d9d9;
|
|
--badge-blau-bg: #dcebfa;
|
|
--code-bg: #f0f2f6;
|
|
}
|
|
* { box-sizing: border-box; }
|
|
body {
|
|
margin: 0;
|
|
background: var(--bg);
|
|
color: var(--text);
|
|
font: 14px/1.5 system-ui, sans-serif;
|
|
}
|
|
#app { height: 100vh; display: flex; }
|
|
button {
|
|
background: var(--akzent); color: #fff; border: 0; border-radius: 6px;
|
|
padding: 6px 14px; cursor: pointer; font: inherit;
|
|
}
|
|
button.sekundaer { background: var(--karte); color: var(--text); border: 1px solid var(--rand); }
|
|
button.klein { padding: 2px 8px; font-size: 12px; }
|
|
button:disabled { opacity: 0.4; cursor: default; }
|
|
input, select {
|
|
background: var(--karte); color: var(--text); border: 1px solid var(--rand);
|
|
border-radius: 6px; padding: 6px 10px; font: inherit;
|
|
}
|
|
|
|
/* Sidebar-Navigation */
|
|
.sidebar {
|
|
width: 220px; min-width: 220px; background: var(--panel);
|
|
border-right: 1px solid var(--rand); display: flex; flex-direction: column;
|
|
}
|
|
.sidebar .topics { flex: 1; overflow-y: auto; padding: 8px; }
|
|
.sidebar .topic-eintrag {
|
|
display: flex; align-items: center; gap: 6px; padding: 7px 10px;
|
|
border-radius: 6px; cursor: pointer; color: var(--dim);
|
|
}
|
|
.sidebar .topic-eintrag.aktiv { background: var(--karte); color: var(--text); }
|
|
.sidebar .neu { padding: 10px; border-top: 1px solid var(--rand); display: grid; gap: 6px; }
|
|
.kontextmenue {
|
|
position: fixed; background: var(--panel); border: 1px solid var(--rand);
|
|
border-radius: 8px; padding: 4px; box-shadow: 0 6px 24px rgba(0, 0, 0, 0.35);
|
|
}
|
|
.kontextmenue button {
|
|
display: block; width: 100%; text-align: left; background: none;
|
|
color: var(--text); border: 0; padding: 7px 12px; border-radius: 6px;
|
|
}
|
|
.kontextmenue button:hover:not(:disabled) { background: var(--karte); }
|
|
.kontextmenue button.rot { color: var(--rot); }
|
|
|
|
.hauptbereich { flex: 1; display: flex; flex-direction: column; overflow: hidden; }
|
|
.topbar {
|
|
display: flex; gap: 10px; align-items: center; flex-wrap: wrap;
|
|
padding: 8px 16px; background: var(--panel); border-bottom: 1px solid var(--rand);
|
|
}
|
|
.tabs { display: flex; gap: 4px; }
|
|
.tabs button { background: transparent; color: var(--dim); }
|
|
.tabs button.aktiv { background: var(--karte); color: var(--text); }
|
|
.inhalt { flex: 1; overflow: hidden; display: flex; flex-direction: column; }
|
|
.badge {
|
|
display: inline-block; padding: 1px 8px; border-radius: 10px;
|
|
font-size: 11px; background: var(--karte); color: var(--dim);
|
|
}
|
|
.badge.gruen { background: var(--badge-gruen-bg); color: var(--gruen); }
|
|
.badge.gelb { background: var(--badge-gelb-bg); color: var(--gelb); }
|
|
.badge.rot { background: var(--badge-rot-bg); color: var(--rot); }
|
|
.badge.blau { background: var(--badge-blau-bg); color: var(--akzent); }
|
|
|
|
/* Befunde/Agenten-Leiste über dem Board */
|
|
.leiste {
|
|
display: flex; gap: 6px; align-items: center; flex-wrap: wrap;
|
|
padding: 8px 12px; border-bottom: 1px solid var(--rand); background: var(--panel);
|
|
min-height: 40px; max-height: 130px; overflow-y: auto;
|
|
}
|
|
|
|
/* Board: Ebenen-Spalten links→rechts, Listen VOLLSTÄNDIG scrollbar */
|
|
.board { display: flex; gap: 10px; padding: 12px; overflow-x: auto; flex: 1; min-height: 0; }
|
|
.spalte {
|
|
min-width: 0; max-width: 320px; flex: 1; display: flex; flex-direction: column;
|
|
background: var(--panel); border: 1px solid var(--rand); border-radius: 8px;
|
|
}
|
|
.spaltekopf { padding: 8px 10px; border-bottom: 1px solid var(--rand); display: grid; gap: 6px; }
|
|
.spaltekopf .zeile { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
|
|
.spaltekopf .titel { font-weight: 600; font-size: 13px; flex: 1; }
|
|
.spaltekopf label { font-size: 12px; color: var(--dim); display: flex; gap: 4px; align-items: center; }
|
|
.spalte .liste { overflow-y: auto; flex: 1; padding: 8px; }
|
|
.karte {
|
|
background: var(--karte); border: 1px solid var(--rand); border-radius: 6px;
|
|
padding: 6px 9px; margin-bottom: 6px; font-size: 13px;
|
|
}
|
|
.karte .meta { color: var(--dim); font-size: 11px; margin-top: 2px; }
|
|
|
|
.seite { flex: 1; overflow-y: auto; padding: 20px; }
|
|
.seite.schmal { max-width: 900px; margin: 0 auto; }
|
|
|
|
/* Guide: Kapitel-Navigation + Lesetypografie (~70 Zeichen/Zeile, 17px) */
|
|
.guide-layout { flex: 1; display: flex; overflow: hidden; min-height: 0; }
|
|
.guide-nav {
|
|
width: 260px; min-width: 220px; overflow-y: auto; padding: 14px 10px;
|
|
border-right: 1px solid var(--rand); background: var(--panel); font-size: 13px;
|
|
}
|
|
.guide-nav .schalter-zeile {
|
|
display: flex; gap: 6px; align-items: center; padding: 2px 4px 10px;
|
|
}
|
|
.schalter { display: flex; border: 1px solid var(--rand); border-radius: 6px; overflow: hidden; }
|
|
.schalter button {
|
|
background: none; color: var(--dim); border: 0; border-radius: 0;
|
|
padding: 4px 9px; font-size: 12px; line-height: 1;
|
|
display: flex; align-items: center;
|
|
}
|
|
.schalter button.aktiv { background: var(--karte); color: var(--text); }
|
|
.schalter-solo {
|
|
background: none; color: var(--dim); border: 1px solid var(--rand);
|
|
border-radius: 6px; padding: 3px 9px; font-size: 12px;
|
|
}
|
|
.guide-nav .fortschritt {
|
|
color: var(--dim); font-size: 12px; padding: 0 8px 10px;
|
|
border-bottom: 1px solid var(--rand); margin-bottom: 8px;
|
|
}
|
|
.guide-nav a {
|
|
display: flex; justify-content: space-between; gap: 8px; align-items: baseline;
|
|
padding: 5px 8px; border-radius: 6px;
|
|
color: var(--dim); cursor: pointer; line-height: 1.35;
|
|
}
|
|
.guide-nav a .zeit { font-size: 11px; white-space: nowrap; opacity: 0.75; }
|
|
.guide-nav a:hover { color: var(--text); }
|
|
.guide-nav a.aktiv { background: var(--karte); color: var(--text); }
|
|
.seite.guide-text {
|
|
position: relative; max-width: 680px; margin: 0 auto;
|
|
scrollbar-width: none; /* Scrollbalken unsichtbar, Scrollen bleibt */
|
|
font-family: 'Inter Variable', system-ui, sans-serif;
|
|
font-size: 19px; line-height: 1.55; color: var(--lese-text);
|
|
hyphens: auto; -webkit-hyphens: auto;
|
|
}
|
|
/* Fokus-Modus: Navigation weg, Karten-Rahmen aufgelöst — reiner Artikel-Fluss */
|
|
.guide-layout.fokus .guide-nav { display: none; }
|
|
.guide-layout.fokus .guide-section {
|
|
border: 0; background: none; padding: 0 0 6px; margin-bottom: 4px;
|
|
}
|
|
body.vollbild .sidebar, body.vollbild .topbar { display: none; }
|
|
body.vollbild .nav-toggle { display: none; }
|
|
/* Eingeklappt: Themen-Sidebar + Topbar weg — die Kapitelübersicht bleibt.
|
|
Der Inhalt rückt nach unten, damit das fixe ☰ nichts überlappt. */
|
|
body.nav-zu .sidebar, body.nav-zu .topbar { display: none; }
|
|
body.nav-zu .hauptbereich { padding-top: 38px; }
|
|
.nav-toggle {
|
|
position: fixed; top: 6px; left: 8px; z-index: 40; /* über den mobilen Drawern */
|
|
background: none; color: var(--dim); border: 0; padding: 4px 8px; font-size: 16px;
|
|
}
|
|
.nav-toggle:hover { color: var(--text); }
|
|
.sidebar .topics { padding-top: 40px; } /* Platz für das fixe ☰ links oben */
|
|
.fokus-aus {
|
|
position: fixed; top: 10px; right: 16px; z-index: 5;
|
|
background: none; color: var(--dim); border: 0;
|
|
padding: 4px 8px; font-size: 16px; opacity: 0.6;
|
|
}
|
|
.fokus-aus:hover { opacity: 1; }
|
|
.seite.guide-text::-webkit-scrollbar { display: none; }
|
|
.guide-text .kapitel { scroll-margin-top: 8px; }
|
|
.guide-text .kapitel-titel { margin: 30px 0 2px; }
|
|
.guide-text .kapitel-meta { color: var(--dim); font-size: 13px; margin: 0 0 10px; }
|
|
.guide-section .antworten { margin-top: 10px; border-top: 1px solid var(--rand); padding-top: 8px; }
|
|
.guide-section .antworten summary { cursor: pointer; color: var(--dim); font-size: 14px; }
|
|
.guide-section .antworten .antwort { margin: 10px 0; }
|
|
.guide-section .antworten .frage { font-weight: 600; font-size: 14px; margin-bottom: 2px; }
|
|
.kapitel-platzhalter { border-left: 2px dashed var(--rand); margin: 8px 0 8px 4px; }
|
|
/* Kompakt-Ansicht: gleiche Lesetypografie wie der Fließtext, kein Grau-Kasten */
|
|
.guide-text .kompakt {
|
|
background: none; padding: 0; color: var(--lese-text);
|
|
font-size: 17px; line-height: 1.55;
|
|
}
|
|
.guide-text .kompakt li { margin: 5px 0; }
|
|
.guide-section {
|
|
background: var(--panel); border: 1px solid var(--rand); border-radius: 8px;
|
|
padding: 16px 22px; margin-bottom: 16px;
|
|
}
|
|
.guide-section .ziel { color: var(--akzent); font-size: 13px; }
|
|
:is(.markdown, .kompakt) .katex-display { overflow-x: auto; overflow-y: hidden; padding: 4px 0; }
|
|
.markdown blockquote {
|
|
margin: 12px 0; padding: 8px 14px; border-left: 3px solid var(--akzent);
|
|
background: var(--karte); border-radius: 0 6px 6px 0; color: var(--text);
|
|
}
|
|
.markdown blockquote p { margin: 4px 0; }
|
|
.markdown :is(code):not(.hljs) { background: var(--karte); padding: 1px 5px; border-radius: 4px; }
|
|
.markdown pre { background: var(--code-bg); padding: 10px; border-radius: 6px; overflow-x: auto; }
|
|
.markdown table { border-collapse: collapse; display: block; overflow-x: auto; max-width: 100%; }
|
|
.markdown td, .markdown th { border: 1px solid var(--rand); padding: 4px 10px; }
|
|
.markdown thead th { background: var(--karte); text-align: left; }
|
|
.markdown tbody tr:nth-child(even) { background: color-mix(in srgb, var(--karte) 45%, transparent); }
|
|
|
|
.flash {
|
|
background: var(--panel); border: 1px solid var(--rand); border-radius: 10px;
|
|
padding: 28px; max-width: 620px; margin: 40px auto; text-align: center;
|
|
}
|
|
.flash .frage { font-size: 18px; margin-bottom: 18px; }
|
|
.flash .antwort { background: var(--karte); border-radius: 8px; padding: 14px; margin: 14px 0; }
|
|
|
|
table.kennzahlen { border-collapse: collapse; width: 100%; font-size: 13px; }
|
|
table.kennzahlen th, table.kennzahlen td {
|
|
border-bottom: 1px solid var(--rand); padding: 5px 10px; text-align: right;
|
|
}
|
|
table.kennzahlen th:first-child, table.kennzahlen td:first-child { text-align: left; }
|
|
table.kennzahlen th { color: var(--dim); }
|
|
|
|
/* ── Mobil (≤768px): Navigationen als Drawer, Board mit Spalten-Snap ────────── */
|
|
:is(.markdown, .kompakt) .katex { max-width: 100%; overflow-x: auto; overflow-y: hidden; }
|
|
@media (max-width: 768px) {
|
|
.sidebar, .guide-nav {
|
|
position: fixed; top: 0; bottom: 0; left: 0; z-index: 30;
|
|
width: min(85vw, 320px); min-width: 0;
|
|
border-right: 1px solid var(--rand); box-shadow: 4px 0 24px rgba(0, 0, 0, 0.35);
|
|
background: var(--panel);
|
|
}
|
|
/* Guide-Tab: der Drawer zeigt die Kapitelliste, sonst die Themenliste */
|
|
body:has(.guide-nav) .sidebar { display: none; }
|
|
/* mobil versteckt ☰ nur die Drawer — die Topbar (Tabs!) bleibt sichtbar */
|
|
body.nav-zu .topbar { display: flex; }
|
|
body.nav-zu .hauptbereich { padding-top: 0; }
|
|
/* mobil heißt ☰-zu: ALLE Drawer weg — auch die Kapitelnav (Desktop behält sie) */
|
|
body.nav-zu .guide-nav { display: none; }
|
|
.sidebar .topics { padding-top: 44px; }
|
|
.guide-nav { padding-top: 44px; }
|
|
.topbar { padding-left: 40px; gap: 6px; }
|
|
.topbar .badge { display: none; }
|
|
.board { scroll-snap-type: x mandatory; padding: 8px; gap: 8px; }
|
|
.spalte { min-width: 86vw; max-width: 86vw; scroll-snap-align: start; }
|
|
.seite { padding: 12px; }
|
|
.seite.guide-text { max-width: 100%; padding: 14px 16px; }
|
|
.guide-section { padding: 12px 14px; }
|
|
.guide-text .kapitel-titel { margin-top: 20px; }
|
|
.flash { max-width: 100%; padding: 18px; margin: 16px auto; }
|
|
}
|
|
|
|
/* ── Lesemodus (Lern-Schritt 1) ─────────────────────────────────────────────── */
|
|
.lesemodus {
|
|
position: fixed; inset: 0; z-index: 1000; background: var(--bg);
|
|
display: flex; flex-direction: column; color: var(--text);
|
|
}
|
|
.lm-kopf, .lm-fuss {
|
|
display: flex; align-items: center; gap: 12px; padding: 10px 18px;
|
|
border-bottom: 1px solid var(--rand); background: var(--panel); flex: 0 0 auto;
|
|
}
|
|
.lm-fuss { border-top: 1px solid var(--rand); border-bottom: none; justify-content: space-between; }
|
|
.lm-fort { font-size: 13px; color: var(--dim); flex: 1; }
|
|
.lm-x { margin-left: auto; background: none; border: none; font-size: 18px; cursor: pointer; color: var(--dim); }
|
|
.lm-fuss button {
|
|
padding: 8px 18px; border: 1px solid var(--rand); border-radius: 6px;
|
|
background: var(--karte); color: var(--text); cursor: pointer; font-size: 14px;
|
|
}
|
|
.lm-fuss button:disabled { opacity: 0.4; cursor: default; }
|
|
.lm-buehne { flex: 1; overflow-y: auto; } /* Block-Scroll: Padding am Ende bleibt erhalten */
|
|
.lm-screen {
|
|
width: 100%; max-width: 760px; margin: 0 auto; padding: 40px 24px 96px;
|
|
font-family: 'Inter Variable', system-ui, sans-serif; /* Lesetypografie wie im Guide */
|
|
font-size: 19px; line-height: 1.55; color: var(--lese-text, var(--text));
|
|
}
|
|
.lm-label { font-size: 12px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--akzent); margin-bottom: 6px; }
|
|
.lm-titel { margin: 0 0 18px; }
|
|
.lm-intro { text-align: center; padding-top: 12vh; }
|
|
.lm-kapnr { color: var(--dim); font-size: 14px; margin-bottom: 8px; }
|
|
.lm-intro h1 { margin: 0 0 16px; }
|
|
.lm-introtext { color: var(--text); font-size: 17px; line-height: 1.6; }
|
|
.lm-stats { margin-top: 20px; color: var(--dim); font-size: 14px; }
|
|
/* Abrufprüfung */
|
|
.lm-abruf { display: flex; flex-direction: column; align-items: center; }
|
|
.lm-karte {
|
|
width: 100%; max-width: 560px; margin-top: 6vh; padding: 28px;
|
|
background: var(--karte); border: 1px solid var(--rand); border-radius: 12px; text-align: center;
|
|
}
|
|
.lm-frage { font-size: 20px; margin-bottom: 18px; }
|
|
.lm-antwort { font-size: 17px; color: var(--text); border-top: 1px solid var(--rand); padding-top: 16px; margin-bottom: 18px; }
|
|
.lm-karte-akt { display: flex; gap: 12px; justify-content: center; margin-top: 10px; }
|
|
.lm-karte-akt button { padding: 10px 22px; border-radius: 8px; border: 1px solid var(--rand); cursor: pointer; font-size: 15px; background: var(--panel); color: var(--text); }
|
|
.lm-richtig { background: #2f7d32 !important; border-color: #2f7d32 !important; color: #fff !important; }
|
|
.lm-falsch { background: #a23b3b !important; border-color: #a23b3b !important; color: #fff !important; }
|
|
.lm-rest { margin-top: 16px; color: var(--dim); font-size: 13px; }
|
|
.lm-bestanden { margin-top: 8vh; font-size: 18px; color: var(--akzent); text-align: center; }
|
|
.lm-ende { text-align: center; padding-top: 14vh; }
|
|
/* Prüfung (4er-Panels) */
|
|
.pf-frage { margin: 4vh 0 14px; }
|
|
.pf-hinweis { font-size: 14px; color: var(--dim); font-weight: 400; }
|
|
.pf-panel { display: flex; flex-direction: column; gap: 10px; }
|
|
.pf-aussage {
|
|
display: flex; gap: 12px; align-items: flex-start; cursor: pointer;
|
|
padding: 12px 14px; border: 1px solid var(--rand); border-radius: 10px;
|
|
background: var(--karte);
|
|
}
|
|
.pf-aussage input { margin-top: 5px; flex: 0 0 auto; }
|
|
.pf-aussage.gewaehlt { border-color: var(--akzent); }
|
|
.pf-aussage.pf-wahr { border-color: #2f7d32; background: color-mix(in srgb, #2f7d32 14%, var(--karte)); }
|
|
.pf-aussage.pf-falsch2 { border-color: #a23b3b; background: color-mix(in srgb, #a23b3b 12%, var(--karte)); }
|
|
.pf-feedback { margin-top: 14px; padding: 10px 14px; border-radius: 8px; font-size: 15px; }
|
|
.pf-fb-ok { background: color-mix(in srgb, #2f7d32 18%, transparent); }
|
|
.pf-fb-bad { background: color-mix(in srgb, #a23b3b 18%, transparent); }
|
|
.pf-akt { display: flex; gap: 14px; align-items: center; margin-top: 16px; }
|
|
.pf-akt button {
|
|
padding: 10px 22px; border: 1px solid var(--rand); border-radius: 8px;
|
|
background: var(--panel); color: var(--text); cursor: pointer; font-size: 15px;
|
|
}
|