This commit is contained in:
team3
2026-07-10 15:43:11 +02:00
commit 0a41166cca
72 changed files with 7772 additions and 0 deletions

243
frontend/src/style.css Normal file
View File

@@ -0,0 +1,243 @@
: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: 265px; 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 */
body.nav-zu .sidebar, body.nav-zu .topbar { display: none; }
body.nav-zu .guide-nav { padding-top: 44px; }
.nav-toggle {
position: fixed; top: 6px; left: 8px; z-index: 20;
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; }
.markdown .gelernt { opacity: 0.45; } /* niedrigere Level = schon gelernt */
.guide-text .kapitel { scroll-margin-top: 8px; }
.guide-text .kapitel-titel { margin: 30px 0 6px; }
.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; }
.markdown .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; }
.markdown td, .markdown th { border: 1px solid var(--rand); padding: 4px 10px; }
.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); }