init
This commit is contained in:
243
frontend/src/style.css
Normal file
243
frontend/src/style.css
Normal 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); }
|
||||
Reference in New Issue
Block a user