Files
lernbar/src/app/globals.css
T
Florian WildeandClaude Opus 5 2babef9293 Baustein 10a: PWA, Offlinebetrieb, Druckansichten
Installierbar: Manifest, Symbole aus dem eigenen Zeichen erzeugt
(scripts/symbole.ts, kein Bilddienst), Verknuepfungen zu Lernmodus,
Berichtsheft und Handouts.

Offline gilt eine Regel, und die steht im Dienstarbeiter: Nur das
Lernmaterial liegt im Browserspeicher - Handouts, Merkkarten, Glossar,
die eigene Woche. Lernzielkontrollen, Berichtsheft, Bewertungen,
Feedbackgespraeche, Anhaenge und jedes PDF niemals. Das ist keine
Sparsamkeit: Was im Browsercache liegt, ist an der serverseitigen
Rechtepruefung vorbei.

Bewertungen ohne Netz gehen in eine Warteschlange und werden
nachgereicht. Die Schlange haengt an der Benutzerkennung, nicht am
Geraet - auf einem geteilten Werkstattgeraet bekaeme sonst der Zweite
die offenen Bewertungen des Ersten aufs Konto. Der Tag der Bewertung
kommt vom Geraet und wird auf heute gedeckelt (tagDerBewertung, 4
Tests): Eine vorgestellte Uhr darf das Wiederholen nicht wegstellen.

Druck: Wer die dunkle Fassung eingestellt hatte, druckte bisher schwarze
Flaechen. Im Druck wird jetzt die komplette helle Palette gesetzt, dazu
A4-Raender, keine Umbrueche mitten in Karten und Zeilen, aufgeklappte
details. Druckknoepfe bei Handout, Glossar und Auswertung.

Durchstich in scripts/pruefungen/baustein-10.mjs mit echtem Abschalten
des Netzes: 33 Pruefungen, darunter der Nachweis, dass nichts
Bewertungsrelevantes im Speicher landet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 15:47:06 +02:00

1941 lines
45 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* ---------------------------------------------------------------------------
Lern-Bar – Gestaltung
Leitfarbe dunkles Petrol, Akzent warmes Bernstein, Karten sehr helles
Blaugrau. Nur Systemschriften, keine Zeichensätze von außen.
--------------------------------------------------------------------------- */
:root {
color-scheme: light;
--petrol: #1f4e5f;
--petrol-hell: #2c6b81;
--petrol-dunkel: #163a47;
--bernstein: #d98a2b;
--bernstein-dunkel: #a9660f;
--grund: #ffffff;
--flaeche: #edf3f5;
--flaeche-kraeftig: #dde8ec;
--rand: #c8d8de;
--rand-zart: #dde8ec;
--text: #16242a;
--text-leise: #4d646d;
--text-auf-petrol: #f2f8fa;
--gut: #1d6f4a;
--gut-flaeche: #e2f2ea;
--warnung: #8a5a00;
--warnung-flaeche: #fbf0dc;
--fehler: #9b2226;
--fehler-flaeche: #fbe9e9;
--radius: 10px;
--radius-klein: 6px;
--schatten: 0 1px 2px rgb(22 36 42 / 8%), 0 2px 8px rgb(22 36 42 / 5%);
--schrift: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
--schrift-fest: ui-monospace, "Cascadia Mono", "Segoe UI Mono", Consolas, "Liberation Mono", monospace;
--breite: 1120px;
}
:root[data-thema="dunkel"] {
color-scheme: dark;
--petrol: #7fc0d4;
--petrol-hell: #a3d4e3;
--petrol-dunkel: #0f2a34;
--bernstein: #e5a552;
--bernstein-dunkel: #f0bd7c;
--grund: #0e1b21;
--flaeche: #16272f;
--flaeche-kraeftig: #1e343e;
--rand: #2c4652;
--rand-zart: #233b45;
--text: #e6eef1;
--text-leise: #a3b8c0;
--text-auf-petrol: #0e1b21;
--gut: #6cc79a;
--gut-flaeche: #14332a;
--warnung: #e3b264;
--warnung-flaeche: #33290f;
--fehler: #f08a8d;
--fehler-flaeche: #35191b;
--schatten: 0 1px 2px rgb(0 0 0 / 40%), 0 2px 8px rgb(0 0 0 / 30%);
}
@media (prefers-color-scheme: dark) {
:root:not([data-thema="hell"]) {
color-scheme: dark;
--petrol: #7fc0d4;
--petrol-hell: #a3d4e3;
--petrol-dunkel: #0f2a34;
--bernstein: #e5a552;
--bernstein-dunkel: #f0bd7c;
--grund: #0e1b21;
--flaeche: #16272f;
--flaeche-kraeftig: #1e343e;
--rand: #2c4652;
--rand-zart: #233b45;
--text: #e6eef1;
--text-leise: #a3b8c0;
--text-auf-petrol: #0e1b21;
--gut: #6cc79a;
--gut-flaeche: #14332a;
--warnung: #e3b264;
--warnung-flaeche: #33290f;
--fehler: #f08a8d;
--fehler-flaeche: #35191b;
--schatten: 0 1px 2px rgb(0 0 0 / 40%), 0 2px 8px rgb(0 0 0 / 30%);
}
}
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
-webkit-text-size-adjust: 100%;
}
body {
margin: 0;
background: var(--grund);
color: var(--text);
font-family: var(--schrift);
font-size: 16px;
line-height: 1.6;
min-height: 100dvh;
}
h1,
h2,
h3,
h4 {
line-height: 1.25;
margin: 0 0 0.5em;
font-weight: 650;
letter-spacing: -0.01em;
}
h1 { font-size: 1.65rem; }
h2 { font-size: 1.3rem; }
h3 { font-size: 1.08rem; }
p { margin: 0 0 1em; }
a {
color: var(--petrol);
text-underline-offset: 2px;
}
a:hover { color: var(--petrol-hell); }
:focus-visible {
outline: 3px solid var(--bernstein);
outline-offset: 2px;
border-radius: 3px;
}
hr {
border: 0;
border-top: 1px solid var(--rand-zart);
margin: 1.5rem 0;
}
code, kbd, samp, pre {
font-family: var(--schrift-fest);
font-size: 0.92em;
}
code {
background: var(--flaeche);
padding: 0.1em 0.35em;
border-radius: var(--radius-klein);
}
/* --- Grundbausteine --- */
.huelle {
max-width: var(--breite);
margin: 0 auto;
padding: 1.25rem 1rem 4rem;
}
.karte {
background: var(--flaeche);
border: 1px solid var(--rand-zart);
border-radius: var(--radius);
padding: 1rem 1.15rem;
}
.karte-grund {
background: var(--grund);
border: 1px solid var(--rand);
border-radius: var(--radius);
padding: 1rem 1.15rem;
box-shadow: var(--schatten);
}
.leise {
color: var(--text-leise);
font-size: 0.9rem;
}
.stapel > * + * { margin-top: 1rem; }
.stapel-eng > * + * { margin-top: 0.5rem; }
.reihe {
display: flex;
gap: 0.75rem;
flex-wrap: wrap;
align-items: center;
}
.raster {
display: grid;
gap: 1rem;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}
/* --- Bedienelemente --- */
.knopf {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 0.45rem;
min-height: 44px;
padding: 0.55rem 1.1rem;
border-radius: var(--radius-klein);
border: 1px solid transparent;
background: var(--petrol);
color: var(--text-auf-petrol);
font: inherit;
font-weight: 600;
cursor: pointer;
text-decoration: none;
transition: background-color 0.12s ease;
}
.knopf:hover { background: var(--petrol-hell); color: var(--text-auf-petrol); }
.knopf:disabled { opacity: 0.55; cursor: not-allowed; }
.knopf-zweit {
background: transparent;
color: var(--petrol);
border-color: var(--rand);
}
.knopf-zweit:hover { background: var(--flaeche-kraeftig); color: var(--petrol); }
.knopf-akzent { background: var(--bernstein); color: #26170a; }
.knopf-akzent:hover { background: var(--bernstein-dunkel); color: #26170a; }
.knopf-still {
background: transparent;
color: var(--text-leise);
border-color: transparent;
padding: 0.4rem 0.6rem;
min-height: 38px;
font-weight: 500;
}
.knopf-still:hover { background: var(--flaeche); color: var(--text); }
label {
display: block;
font-weight: 600;
font-size: 0.92rem;
margin-bottom: 0.3rem;
}
input[type="text"],
input[type="email"],
input[type="password"],
input[type="date"],
input[type="number"],
input[type="search"],
select,
textarea {
width: 100%;
min-height: 44px;
padding: 0.5rem 0.7rem;
border: 1px solid var(--rand);
border-radius: var(--radius-klein);
background: var(--grund);
color: var(--text);
font: inherit;
}
textarea {
min-height: 6rem;
resize: vertical;
line-height: 1.5;
}
input:disabled,
textarea:disabled,
select:disabled {
background: var(--flaeche);
color: var(--text-leise);
}
.feld + .feld { margin-top: 0.9rem; }
.hinweis {
border-radius: var(--radius-klein);
padding: 0.7rem 0.9rem;
border: 1px solid;
font-size: 0.95rem;
}
.hinweis-fehler { background: var(--fehler-flaeche); border-color: var(--fehler); color: var(--fehler); }
.hinweis-warnung { background: var(--warnung-flaeche); border-color: var(--warnung); color: var(--warnung); }
.hinweis-gut { background: var(--gut-flaeche); border-color: var(--gut); color: var(--gut); }
/* --- Kopfzeile --- */
.kopf {
background: var(--petrol-dunkel);
color: #f2f8fa;
border-bottom: 3px solid var(--bernstein);
}
:root[data-thema="dunkel"] .kopf { background: #0b2029; }
.kopf-innen {
max-width: var(--breite);
margin: 0 auto;
padding: 0.6rem 1rem;
display: flex;
align-items: center;
gap: 1rem;
flex-wrap: wrap;
}
.marke {
font-weight: 700;
font-size: 1.1rem;
color: #f2f8fa;
text-decoration: none;
letter-spacing: -0.01em;
white-space: nowrap;
}
.marke:hover { color: #fff; }
.marke .marke-akzent { color: #e5a552; }
.hauptnavigation {
display: flex;
gap: 0.15rem;
flex-wrap: wrap;
flex: 1;
}
.hauptnavigation a {
color: #cfe2e9;
text-decoration: none;
padding: 0.45rem 0.7rem;
border-radius: var(--radius-klein);
font-size: 0.95rem;
font-weight: 500;
white-space: nowrap;
}
.hauptnavigation a:hover { background: rgb(255 255 255 / 12%); color: #fff; }
.hauptnavigation a[aria-current="page"] {
background: rgb(255 255 255 / 16%);
color: #fff;
box-shadow: inset 0 -2px 0 #d98a2b;
}
.kopf-rechts {
display: flex;
align-items: center;
gap: 0.5rem;
margin-left: auto;
}
.kopf-knopf {
background: transparent;
border: 1px solid rgb(255 255 255 / 25%);
color: #e3eef2;
border-radius: var(--radius-klein);
min-height: 38px;
padding: 0.3rem 0.65rem;
font: inherit;
font-size: 0.9rem;
cursor: pointer;
}
.kopf-knopf:hover { background: rgb(255 255 255 / 12%); }
/* --- Fortschritt --- */
.balken {
height: 10px;
background: var(--flaeche-kraeftig);
border-radius: 999px;
overflow: hidden;
border: 1px solid var(--rand-zart);
}
.balken > span {
display: block;
height: 100%;
background: var(--petrol);
border-radius: 999px;
}
/* --- Status-Marken: nie nur Farbe, immer auch ein Zeichen --- */
.marke-status {
display: inline-flex;
align-items: center;
gap: 0.35rem;
font-size: 0.82rem;
font-weight: 650;
padding: 0.15rem 0.55rem;
border-radius: 999px;
border: 1px solid var(--rand);
background: var(--grund);
color: var(--text-leise);
white-space: nowrap;
}
.marke-status[data-ton="gut"] { color: var(--gut); border-color: var(--gut); background: var(--gut-flaeche); }
.marke-status[data-ton="warnung"] { color: var(--warnung); border-color: var(--warnung); background: var(--warnung-flaeche); }
.marke-status[data-ton="fehler"] { color: var(--fehler); border-color: var(--fehler); background: var(--fehler-flaeche); }
/* --- Tabellen --- */
.tabelle-huelle { overflow-x: auto; }
table.tabelle {
border-collapse: collapse;
width: 100%;
font-size: 0.95rem;
}
table.tabelle th,
table.tabelle td {
text-align: left;
padding: 0.5rem 0.7rem;
border-bottom: 1px solid var(--rand-zart);
vertical-align: top;
}
table.tabelle th {
font-weight: 650;
background: var(--flaeche);
white-space: nowrap;
}
/* --- Anmeldung --- */
.anmeldung {
min-height: 100dvh;
display: grid;
place-items: center;
padding: 1.5rem 1rem;
background: linear-gradient(160deg, var(--flaeche) 0%, var(--grund) 60%);
}
.anmeldung-karte {
width: min(420px, 100%);
background: var(--grund);
border: 1px solid var(--rand);
border-radius: var(--radius);
padding: 1.75rem;
box-shadow: var(--schatten);
}
/* --- Sprungmarke --- */
.sprung {
position: absolute;
left: -9999px;
top: 0;
background: #d98a2b;
color: #26170a;
padding: 0.6rem 1rem;
z-index: 100;
border-radius: 0 0 var(--radius-klein) 0;
font-weight: 650;
}
.sprung:focus { left: 0; }
/* --- Druck --- */
@page {
size: A4;
margin: 16mm 14mm;
}
@media print {
/* Wer die dunkle Fassung eingestellt hat, druckt sonst schwarze Flächen aus.
Deshalb hier die komplette helle Palette noch einmal – und zwar stärker
als `[data-thema="dunkel"]`, sonst gewinnt die Einstellung. */
:root,
:root[data-thema="dunkel"],
:root[data-thema="hell"] {
color-scheme: light;
--petrol: #1f4e5f;
--petrol-hell: #2c6b81;
--petrol-dunkel: #163a47;
--bernstein: #a9660f;
--bernstein-dunkel: #a9660f;
--grund: #ffffff;
--flaeche: #f2f2f2;
--flaeche-kraeftig: #e6e6e6;
--rand: #999999;
--rand-zart: #cccccc;
--text: #000000;
--text-leise: #444444;
--text-auf-petrol: #ffffff;
--gut: #1d6f4a;
--gut-flaeche: #ffffff;
--warnung: #8a5a00;
--warnung-flaeche: #ffffff;
--fehler: #9b2226;
--fehler-flaeche: #ffffff;
--schatten: none;
}
.kopf,
.netzleiste,
.sprung,
.nicht-drucken {
display: none !important;
}
body { background: #fff; color: #000; font-size: 10.5pt; }
.huelle { max-width: none; padding: 0; }
.karte, .karte-grund { border: 1px solid #999; box-shadow: none; background: #fff; }
/* Verweise auf dem Papier: Der Text zählt, die Adresse nützt niemandem.
Ausgenommen bleibt, was ohnehin nur als Text gedruckt wird. */
a { color: #000; text-decoration: none; }
/* Nichts mitten in einer Karte oder Zeile umbrechen – ein halber
Checklistenschritt auf der nächsten Seite ist beim Abheften ärgerlich. */
.karte,
.karte-grund,
li,
tr,
figure,
blockquote,
pre {
break-inside: avoid;
page-break-inside: avoid;
}
h1, h2, h3 {
break-after: avoid;
page-break-after: avoid;
}
/* Kein Waisenkind und kein Hurenkind. */
p, li { orphans: 3; widows: 3; }
/* Aufgeklappt drucken: Was zugeklappt ist, fehlt sonst auf dem Papier,
ohne dass man es merkt. */
details { display: block !important; }
details > summary { display: block; font-weight: 650; }
details > *:not(summary) { display: revert !important; }
}
/* Nur für Bildschirmleser sichtbar */
.nur-lesehilfe {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
/* --- Handouts --- */
.handout-kuerzel {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 2.6rem;
padding: 0.1rem 0.5rem;
border-radius: var(--radius-klein);
background: var(--petrol);
color: var(--text-auf-petrol);
font-weight: 700;
font-size: 0.85rem;
letter-spacing: 0.02em;
flex-shrink: 0;
}
.handout-kuerzel-gross {
font-size: 1rem;
padding: 0.25rem 0.7rem;
}
.handout-kachel {
display: block;
height: 100%;
background: var(--flaeche);
border: 1px solid var(--rand-zart);
border-radius: var(--radius);
padding: 0.9rem 1rem;
text-decoration: none;
color: var(--text);
}
.handout-kachel:hover {
background: var(--flaeche-kraeftig);
border-color: var(--rand);
color: var(--text);
}
.handout-treffer {
display: flex;
gap: 0.75rem;
align-items: flex-start;
background: var(--flaeche);
border: 1px solid var(--rand-zart);
border-radius: var(--radius);
padding: 0.8rem 1rem;
text-decoration: none;
color: var(--text);
}
.handout-treffer:hover {
background: var(--flaeche-kraeftig);
color: var(--text);
}
.handout-worum {
font-size: 1.05rem;
color: var(--text-leise);
margin: 0;
}
.handout-zuordnung dl {
margin: 0;
display: grid;
gap: 0.6rem;
}
.handout-zuordnung dt {
font-size: 0.78rem;
text-transform: uppercase;
letter-spacing: 0.06em;
color: var(--text-leise);
font-weight: 650;
margin-bottom: 0.2rem;
}
.handout-zuordnung dd {
margin: 0;
display: flex;
flex-wrap: wrap;
gap: 0.35rem;
}
.zuordnung-marke {
display: inline-flex;
gap: 0.35rem;
align-items: baseline;
background: var(--grund);
border: 1px solid var(--rand);
border-radius: var(--radius-klein);
padding: 0.15rem 0.5rem;
font-size: 0.87rem;
}
.zuordnung-marke strong {
color: var(--petrol);
}
.fliesstext > *:first-child { margin-top: 0; }
.fliesstext > *:last-child { margin-bottom: 0; }
.fliesstext ul,
.fliesstext ol {
padding-left: 1.3rem;
margin: 0 0 1em;
}
.fliesstext li + li { margin-top: 0.4rem; }
.fliesstext table {
border-collapse: collapse;
width: 100%;
font-size: 0.94rem;
}
.fliesstext th,
.fliesstext td {
border: 1px solid var(--rand-zart);
padding: 0.45rem 0.65rem;
text-align: left;
vertical-align: top;
}
.fliesstext th {
background: var(--flaeche);
font-weight: 650;
}
.merksatz {
border-left: 5px solid var(--bernstein);
background: var(--warnung-flaeche);
border-radius: 0 var(--radius) var(--radius) 0;
padding: 0.9rem 1.1rem;
}
.merksatz-kennzeichnung {
display: block;
font-size: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.08em;
font-weight: 700;
color: var(--warnung);
margin-bottom: 0.2rem;
}
.merksatz p {
margin: 0;
font-size: 1.08rem;
font-weight: 600;
}
.pruefungsfrage {
border: 1px solid var(--rand);
border-radius: var(--radius);
background: var(--grund);
}
.pruefungsfrage > summary {
cursor: pointer;
padding: 0.7rem 1rem;
font-weight: 650;
list-style: none;
display: flex;
align-items: center;
gap: 0.5rem;
min-height: 44px;
}
.pruefungsfrage > summary::-webkit-details-marker { display: none; }
.pruefungsfrage > summary::before {
content: "▸";
color: var(--petrol);
font-size: 0.9rem;
}
.pruefungsfrage[open] > summary::before { content: "▾"; }
.pruefungsfrage[open] > summary { border-bottom: 1px solid var(--rand-zart); }
.pruefungsfrage > div { padding: 0.9rem 1rem; }
a.glossarbegriff {
color: inherit;
text-decoration: underline dotted var(--petrol);
text-decoration-thickness: 1.5px;
text-underline-offset: 3px;
cursor: help;
}
a.glossarbegriff:hover {
color: var(--petrol);
text-decoration-style: solid;
}
/* --- Glossar --- */
.glossar {
display: grid;
gap: 0.75rem;
margin: 0;
}
.glossar-eintrag {
scroll-margin-top: 1rem;
}
.glossar-eintrag dt {
font-weight: 700;
font-size: 1.05rem;
margin-bottom: 0.3rem;
}
.glossar-langform {
display: block;
font-weight: 400;
font-size: 0.85rem;
color: var(--text-leise);
}
.glossar-eintrag dd { margin: 0; }
.glossar-eintrag:target {
outline: 3px solid var(--bernstein);
outline-offset: 2px;
}
@media print {
.pruefungsfrage > div { display: block !important; }
.handout-zuordnung { border: 1px solid #999; }
a.glossarbegriff { text-decoration: none; }
}
/* --- Wochenplan --- */
.wochen-nummer {
display: inline-flex;
align-items: center;
padding: 0.2rem 0.7rem;
border-radius: var(--radius-klein);
background: var(--petrol);
color: var(--text-auf-petrol);
font-weight: 700;
font-size: 0.9rem;
}
.wochen-nummer-klein { font-size: 0.8rem; padding: 0.1rem 0.5rem; }
.leitfrage {
font-size: 1.1rem;
font-style: italic;
color: var(--petrol);
margin: 0 0 0.3rem;
}
:root[data-thema="dunkel"] .leitfrage { color: var(--petrol-hell); }
.offen-liste {
list-style: none;
margin: 0;
padding: 0;
border-top: 1px solid var(--rand-zart);
}
.offen-liste li {
display: flex;
justify-content: space-between;
gap: 0.75rem;
padding: 0.45rem 0;
border-bottom: 1px solid var(--rand-zart);
}
.offen-liste li::before {
content: "○";
color: var(--text-leise);
margin-right: 0.4rem;
}
.offen-liste li > span:first-of-type { flex: 1; }
/* Steht neben einem Eintrag „bestätigt", darf davor kein offener Kreis
stehen – das Zeichen soll den Zustand sagen, nicht ihm widersprechen. */
.offen-liste li[data-erledigt="ja"]::before {
content: "✓";
color: var(--gut);
}
/* --- Netzzustand ------------------------------------------------------- */
/* Schmale Leiste unter der Kopfzeile. Sie schiebt den Inhalt herunter, statt
ihn zu überdecken – eine schwebende Meldung verdeckt auf dem Handy genau
die Zeile, die man gerade lesen will. */
.netzleiste {
background: var(--warnung-flaeche);
border-bottom: 1px solid var(--bernstein);
color: var(--text);
font-size: 0.85rem;
line-height: 1.4;
padding: 0.5rem 1rem;
text-align: center;
}
.netzleiste-gut {
color: var(--gut);
font-weight: 600;
}
.wochentage {
list-style: none;
margin: 0;
padding: 0;
display: grid;
gap: 0.6rem;
}
.wochentag {
border: 1px solid var(--rand-zart);
border-left: 4px solid var(--rand);
border-radius: var(--radius);
background: var(--flaeche);
padding: 0.7rem 0.9rem;
}
.wochentag-heute {
border-left-color: var(--bernstein);
background: var(--warnung-flaeche);
}
.wochentag-kopf {
display: flex;
align-items: center;
gap: 0.6rem;
flex-wrap: wrap;
margin-bottom: 0.4rem;
}
.wochentag-inhalt {
display: grid;
gap: 0.5rem;
grid-template-columns: 1fr;
}
@media (min-width: 720px) {
.wochentag-inhalt { grid-template-columns: 1fr 1fr; gap: 1.25rem; }
}
.wochentag-marke {
display: block;
font-size: 0.72rem;
text-transform: uppercase;
letter-spacing: 0.07em;
font-weight: 700;
color: var(--text-leise);
margin-bottom: 0.15rem;
}
.theorie-liste {
list-style: none;
margin: 0;
padding: 0;
}
.theorie-liste li {
display: flex;
align-items: center;
gap: 0.4rem;
flex-wrap: wrap;
}
.theorie-liste li + li { margin-top: 0.3rem; }
/* --- Planliste zum Umsortieren --- */
.planliste {
list-style: none;
margin: 0;
padding: 0;
display: grid;
gap: 0.5rem;
}
.planliste-wartet { opacity: 0.6; pointer-events: none; }
.planzeile {
display: flex;
align-items: flex-start;
gap: 0.6rem;
background: var(--flaeche);
border: 1px solid var(--rand-zart);
border-radius: var(--radius);
padding: 0.7rem 0.8rem;
}
.planzeile-gezogen { opacity: 0.45; }
.planzeile-ziel {
border-color: var(--bernstein);
box-shadow: inset 0 3px 0 var(--bernstein);
}
.planzeile-griff {
cursor: grab;
color: var(--text-leise);
font-size: 1.2rem;
line-height: 1.4;
user-select: none;
padding-top: 0.1rem;
}
.planzeile-inhalt { flex: 1; display: grid; gap: 0.25rem; }
.planzeile-titel {
font-weight: 650;
text-decoration: none;
}
.planzeile-titel:hover { text-decoration: underline; }
.planzeile-notiz {
margin: 0.2rem 0 0;
font-size: 0.9rem;
background: var(--warnung-flaeche);
border-left: 3px solid var(--bernstein);
padding: 0.3rem 0.6rem;
border-radius: 0 var(--radius-klein) var(--radius-klein) 0;
}
.planzeile-knoepfe {
display: flex;
flex-direction: column;
gap: 0.15rem;
}
.planzeile-knoepfe .knopf { min-height: 34px; padding: 0.1rem 0.5rem; }
.ankreuzfeld {
display: flex;
gap: 0.6rem;
align-items: flex-start;
font-weight: 400;
cursor: pointer;
}
.ankreuzfeld input[type="checkbox"] {
width: 20px;
height: 20px;
margin-top: 0.2rem;
flex-shrink: 0;
accent-color: var(--petrol);
}
.ankreuzfeld > span:last-child { font-weight: 600; font-size: 0.95rem; }
@media print {
.planzeile-griff,
.planzeile-knoepfe { display: none; }
}
/* --- Merkkarten: Lernmodus --- */
.lernmodus {
display: flex;
flex-direction: column;
gap: 0.9rem;
min-height: calc(100dvh - 8rem);
}
.lernmodus-kopf {
display: flex;
align-items: center;
justify-content: space-between;
gap: 0.75rem;
}
.lernkarte {
flex: 1;
display: flex;
flex-direction: column;
gap: 0.9rem;
width: 100%;
min-height: 46vh;
text-align: left;
font: inherit;
color: var(--text);
background: var(--grund);
border: 2px solid var(--rand);
border-radius: var(--radius);
padding: 1.25rem;
cursor: pointer;
box-shadow: var(--schatten);
}
.lernkarte-offen {
cursor: default;
border-color: var(--petrol);
}
.lernkarte-herkunft {
display: flex;
align-items: center;
gap: 0.5rem;
flex-wrap: wrap;
}
.lernkarte-frage {
font-size: 1.35rem;
font-weight: 650;
line-height: 1.35;
}
.lernkarte-trenner {
display: block;
border-top: 2px dashed var(--rand);
margin: 0.2rem 0;
}
.lernkarte-antwort {
font-size: 1.15rem;
line-height: 1.55;
}
.lernkarte-hinweis {
margin-top: auto;
text-align: center;
color: var(--text-leise);
font-size: 0.95rem;
line-height: 1.7;
}
.bewerten {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 0.5rem;
}
.bewerten-knopf {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 0.1rem;
min-height: 76px;
padding: 0.6rem 0.4rem;
border-radius: var(--radius);
border: 2px solid;
font: inherit;
cursor: pointer;
background: var(--grund);
}
.bewerten-knopf:disabled { opacity: 0.5; cursor: wait; }
.bewerten-text { font-weight: 700; font-size: 1.05rem; }
.bewerten-erklaerung { font-size: 0.78rem; opacity: 0.85; text-align: center; }
.bewerten-taste {
position: absolute;
top: 0.3rem;
right: 0.45rem;
font-size: 0.7rem;
opacity: 0.55;
font-family: var(--schrift-fest);
}
.bewerten-nochmal { border-color: var(--fehler); color: var(--fehler); background: var(--fehler-flaeche); }
.bewerten-unsicher { border-color: var(--warnung); color: var(--warnung); background: var(--warnung-flaeche); }
.bewerten-sitzt { border-color: var(--gut); color: var(--gut); background: var(--gut-flaeche); }
.lernmodus-fuss { text-align: center; margin: 0; }
.lernmodus-rueckmeldung {
text-align: center;
min-height: 1.4rem;
margin: 0;
font-size: 0.9rem;
color: var(--text-leise);
}
/* Auf Geräten ohne Tastatur die Tastenhinweise weglassen. */
@media (hover: none) and (pointer: coarse) {
.nur-am-rechner { display: none; }
}
.bewertung-bilanz {
list-style: none;
margin: 0;
padding: 0;
display: flex;
justify-content: center;
gap: 1.75rem;
}
.bewertung-bilanz strong { display: block; font-size: 1.6rem; }
.bewertung-bilanz span { font-size: 0.85rem; color: var(--text-leise); }
/* --- Fächerübersicht --- */
.faecher { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.4rem; }
.faecher li {
display: grid;
grid-template-columns: 1.6rem minmax(7rem, auto) 1fr 2.5rem;
align-items: center;
gap: 0.6rem;
font-size: 0.92rem;
}
.fach-nummer {
display: inline-flex;
align-items: center;
justify-content: center;
width: 1.6rem;
height: 1.6rem;
border-radius: 50%;
background: var(--flaeche-kraeftig);
font-weight: 700;
font-size: 0.8rem;
}
.fach-name { color: var(--text-leise); }
.fach-balken {
display: block;
height: 8px;
background: var(--flaeche-kraeftig);
border-radius: 999px;
overflow: hidden;
}
.fach-balken > span { display: block; height: 100%; background: var(--petrol); }
.fach-zahl { text-align: right; font-variant-numeric: tabular-nums; }
@media (max-width: 520px) {
.faecher li { grid-template-columns: 1.6rem 1fr 2.5rem; }
.fach-name { display: none; }
}
/* --- Feinschliff fürs Handy --- */
/* Ohne das legt der Browser beim Antippen eine blaue Fläche über die Karte. */
.lernkarte,
.bewerten-knopf,
.knopf,
.kopf-knopf,
.hauptnavigation a {
-webkit-tap-highlight-color: transparent;
}
.lernkarte:focus-visible {
outline: 3px solid var(--bernstein);
outline-offset: 3px;
}
@media (max-width: 640px) {
/* Die Kopfzeile bleibt einzeilig: Marke links, Bedienung rechts,
die Navigation darunter in einer Zeile zum Schieben. */
.kopf-innen {
gap: 0.5rem 0.75rem;
padding: 0.5rem 0.75rem;
}
.hauptnavigation {
order: 3;
flex: 1 0 100%;
flex-wrap: nowrap;
overflow-x: auto;
scrollbar-width: none;
margin: 0 -0.75rem;
padding: 0 0.75rem;
}
.hauptnavigation::-webkit-scrollbar { display: none; }
.hauptnavigation a { padding: 0.35rem 0.55rem; font-size: 0.9rem; }
.kopf-rechts { gap: 0.35rem; }
.kopf-rechts > .leise { display: none; }
.huelle { padding: 1rem 0.85rem 3rem; }
h1 { font-size: 1.4rem; }
h2 { font-size: 1.15rem; }
.lernmodus { min-height: calc(100dvh - 6rem); }
.lernkarte { min-height: 40vh; padding: 1rem; }
.lernkarte-frage { font-size: 1.2rem; }
.bewerten { gap: 0.4rem; }
.bewerten-knopf { min-height: 84px; }
}
/* --- Praxisaufgaben --- */
.aufgaben-nummer {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 2.8rem;
padding: 0.15rem 0.55rem;
border-radius: var(--radius-klein);
background: var(--bernstein);
color: #26170a;
font-weight: 700;
font-size: 0.85rem;
flex-shrink: 0;
}
.aufgaben-nummer-gross { font-size: 1rem; padding: 0.25rem 0.75rem; }
.aufgabenliste { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.5rem; }
.aufgabenzeile {
display: flex;
align-items: center;
gap: 0.75rem;
background: var(--flaeche);
border: 1px solid var(--rand-zart);
border-radius: var(--radius);
padding: 0.75rem 0.9rem;
text-decoration: none;
color: var(--text);
}
.aufgabenzeile:hover { background: var(--flaeche-kraeftig); color: var(--text); }
.aufgaben-titel { flex: 1; font-weight: 650; }
.statuswahl { display: flex; gap: 0.4rem; flex-wrap: wrap; }
.kriterienliste { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.4rem; }
.kriterienliste li {
display: grid;
grid-template-columns: 1.2rem 1fr;
gap: 0.5rem;
align-items: start;
padding: 0.35rem 0;
border-bottom: 1px solid var(--rand-zart);
}
.kriterienliste li[data-erfuellt="ja"] { color: var(--gut); }
.kriterienliste li[data-erfuellt="ja"] > span:first-child { font-weight: 700; }
.kriterien {
border: 1px solid var(--rand);
border-radius: var(--radius-klein);
padding: 0.75rem 0.9rem;
margin: 0;
}
.kriterien legend { font-weight: 650; padding: 0 0.35rem; font-size: 0.95rem; }
.kriterium { padding: 0.3rem 0; }
.kriterium + .kriterium { border-top: 1px solid var(--rand-zart); }
.notiz-anzeige {
white-space: pre-wrap;
background: var(--grund);
border: 1px solid var(--rand-zart);
border-radius: var(--radius-klein);
padding: 0.6rem 0.8rem;
margin: 0;
line-height: 1.55;
}
/* --- Anhänge --- */
.anhangliste {
list-style: none;
margin: 0;
padding: 0;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
gap: 0.75rem;
}
.anhangliste li { display: grid; gap: 0.3rem; }
.anhang-kachel {
display: grid;
gap: 0.3rem;
text-decoration: none;
color: var(--text);
background: var(--grund);
border: 1px solid var(--rand);
border-radius: var(--radius);
padding: 0.5rem;
}
.anhang-kachel:hover { border-color: var(--petrol); color: var(--text); }
.anhang-kachel img {
width: 100%;
height: 110px;
object-fit: cover;
border-radius: var(--radius-klein);
background: var(--flaeche);
}
.anhang-symbol {
display: grid;
place-items: center;
height: 110px;
border-radius: var(--radius-klein);
background: var(--flaeche-kraeftig);
font-weight: 700;
letter-spacing: 0.05em;
color: var(--text-leise);
}
.anhang-name {
font-size: 0.88rem;
font-weight: 600;
overflow-wrap: anywhere;
}
input[type="file"] {
width: 100%;
padding: 0.5rem;
border: 1px dashed var(--rand);
border-radius: var(--radius-klein);
background: var(--grund);
color: var(--text);
font: inherit;
min-height: 44px;
}
/* --- Checklisten --- */
.laufzeile {
display: flex;
align-items: center;
gap: 0.75rem;
flex-wrap: wrap;
background: var(--flaeche);
border: 1px solid var(--rand-zart);
border-radius: var(--radius);
padding: 0.65rem 0.9rem;
}
.laufzeile-haupt {
flex: 1 1 240px;
display: grid;
gap: 0.1rem;
text-decoration: none;
color: var(--text);
}
.laufzeile-haupt:hover { color: var(--petrol); }
.laufzeile-titel { font-weight: 650; }
.laufzeile-stand {
display: flex;
align-items: center;
gap: 0.6rem;
}
.laufzeile-stand .balken { flex-shrink: 0; }
.gruppenstand { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.35rem; }
.gruppenstand li {
display: grid;
grid-template-columns: 1fr 70px 3rem;
align-items: center;
gap: 0.6rem;
font-size: 0.9rem;
}
.gruppenstand .leise { text-align: right; font-variant-numeric: tabular-nums; }
.schrittliste { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.35rem; }
.schrittliste li {
display: flex;
gap: 0.7rem;
align-items: flex-start;
background: var(--flaeche);
border: 1px solid var(--rand-zart);
border-radius: var(--radius-klein);
padding: 0.55rem 0.7rem;
}
.schrittliste li[data-erledigt="ja"] {
background: var(--gut-flaeche);
border-color: var(--gut);
}
.schrittliste li[data-erledigt="ja"] .schritt-text { color: var(--gut); }
.schritt-haken { flex-shrink: 0; }
.hakenknopf {
width: 30px;
height: 30px;
border-radius: var(--radius-klein);
border: 2px solid var(--rand);
background: var(--grund);
color: var(--gut);
font-size: 1.05rem;
font-weight: 700;
line-height: 1;
cursor: pointer;
display: grid;
place-items: center;
padding: 0;
}
.hakenknopf:hover:not(:disabled) { border-color: var(--petrol); }
.hakenknopf[aria-pressed="true"] { border-color: var(--gut); background: var(--gut-flaeche); }
.hakenknopf:disabled { opacity: 0.55; cursor: not-allowed; }
.schritt-inhalt { flex: 1; display: grid; gap: 0.25rem; }
.schritt-text { line-height: 1.45; }
.schritt-notiz > summary {
cursor: pointer;
font-size: 0.85rem;
color: var(--text-leise);
list-style: none;
padding: 0.15rem 0;
min-height: 28px;
display: inline-flex;
align-items: center;
gap: 0.3rem;
}
.schritt-notiz > summary::-webkit-details-marker { display: none; }
.schritt-notiz > summary::before { content: "+"; font-weight: 700; }
.schritt-notiz[open] > summary::before { content: "−"; }
.schritt-notiz > form { margin-top: 0.35rem; }
.schritt-bemerkung {
margin: 0;
font-size: 0.88rem;
font-style: italic;
color: var(--text-leise);
border-left: 3px solid var(--rand);
padding-left: 0.6rem;
}
@media (max-width: 640px) {
.hakenknopf { width: 38px; height: 38px; }
.laufzeile-stand { width: 100%; justify-content: space-between; }
.gruppenstand li { grid-template-columns: 1fr 60px 3rem; }
}
@media print {
.schritt-notiz > summary { display: none; }
.schritt-notiz[open] > form { display: none; }
.hakenknopf { border-color: #666; }
}
/* --- Berichtsheft --- */
.tagesnotizen {
display: grid;
gap: 0.6rem;
grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
}
.tagesnotiz {
display: grid;
gap: 0.35rem;
background: var(--flaeche);
border: 1px solid var(--rand-zart);
border-left: 4px solid var(--rand);
border-radius: var(--radius-klein);
padding: 0.6rem 0.7rem;
}
.tagesnotiz-heute { border-left-color: var(--bernstein); background: var(--warnung-flaeche); }
.tagesnotiz-kopf {
display: flex;
align-items: center;
gap: 0.4rem;
flex-wrap: wrap;
font-size: 0.9rem;
}
.tagesnotiz textarea { min-height: 4.5rem; font-size: 0.92rem; }
.tagesnotiz-fuss {
display: flex;
align-items: center;
gap: 0.4rem;
}
.tagesnotiz-fuss label { margin: 0; font-size: 0.82rem; white-space: nowrap; }
.tagesnotiz-fuss input { width: 5rem; min-height: 38px; }
.blattliste { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.45rem; }
.blattzeile-link {
display: flex;
align-items: center;
gap: 0.85rem;
background: var(--flaeche);
border: 1px solid var(--rand-zart);
border-radius: var(--radius);
padding: 0.7rem 0.9rem;
text-decoration: none;
color: var(--text);
}
.blattzeile-link:hover { background: var(--flaeche-kraeftig); color: var(--text); }
.blatt-zeitraum { flex: 1; font-weight: 650; }
.blatt-nr {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 3.4rem;
padding: 0.15rem 0.55rem;
border-radius: var(--radius-klein);
background: var(--petrol);
color: var(--text-auf-petrol);
font-weight: 700;
font-size: 0.82rem;
flex-shrink: 0;
}
.blatt-nr-gross { font-size: 0.95rem; padding: 0.25rem 0.7rem; }
/* Zeilen im Wochenblatt */
.blattzeile {
display: grid;
grid-template-columns: 1fr 6rem 2.5rem;
gap: 0.6rem;
align-items: start;
}
.blattzeile:has(.blattzeile-lernfeld) { grid-template-columns: 6rem 1fr 6rem 2.5rem; }
.blattzeile textarea { min-height: 3.6rem; }
.blattzeile-stunden label { font-size: 0.8rem; }
.zeile-weg { margin-top: 1.1rem; min-height: 38px; padding: 0.2rem 0.5rem; font-size: 1.1rem; }
@media (max-width: 640px) {
.blattzeile,
.blattzeile:has(.blattzeile-lernfeld) { grid-template-columns: 1fr 5rem; }
.zeile-weg { grid-column: 2; margin-top: 0; justify-self: end; }
.blattzeile-lernfeld { grid-column: 1 / -1; }
}
/* Vorschläge */
.vorschlagsliste { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.4rem; }
.vorschlag {
display: grid;
grid-template-columns: auto 1fr auto;
grid-template-areas: "quelle text plus" "quelle herkunft plus";
gap: 0.15rem 0.6rem;
width: 100%;
text-align: left;
font: inherit;
color: var(--text);
background: var(--grund);
border: 1px solid var(--rand);
border-radius: var(--radius-klein);
padding: 0.55rem 0.7rem;
cursor: pointer;
align-items: center;
}
.vorschlag:hover { border-color: var(--petrol); background: var(--flaeche); }
.vorschlag-quelle {
grid-area: quelle;
align-self: start;
font-size: 0.7rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.04em;
padding: 0.15rem 0.4rem;
border-radius: 3px;
background: var(--flaeche-kraeftig);
color: var(--text-leise);
white-space: nowrap;
}
.vorschlag-quelle[data-quelle="tagesnotiz"] { background: var(--warnung-flaeche); color: var(--warnung); }
.vorschlag-quelle[data-quelle="aufgabe"] { background: var(--gut-flaeche); color: var(--gut); }
.vorschlag-text { grid-area: text; font-weight: 600; line-height: 1.4; }
.vorschlag .leise { grid-area: herkunft; font-size: 0.8rem; }
.vorschlag-plus { grid-area: plus; font-size: 1.3rem; color: var(--petrol); font-weight: 700; }
/* Warnungen */
.warnliste { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.4rem; }
.warnliste li {
display: grid;
grid-template-columns: 1.4rem 1fr;
gap: 0.5rem;
align-items: start;
font-size: 0.93rem;
line-height: 1.45;
}
.warnzeichen {
display: grid;
place-items: center;
width: 1.4rem;
height: 1.4rem;
border-radius: 50%;
font-weight: 700;
font-size: 0.8rem;
}
.warnliste li[data-schwere="warnung"] .warnzeichen { background: var(--fehler-flaeche); color: var(--fehler); }
.warnliste li[data-schwere="hinweis"] .warnzeichen { background: var(--flaeche-kraeftig); color: var(--text-leise); }
.warnliste em { color: var(--text-leise); font-style: italic; }
.feldwarnung { list-style: none; margin: 0.25rem 0 0; padding: 0; display: grid; gap: 0.15rem; }
.feldwarnung li { font-size: 0.83rem; line-height: 1.35; padding-left: 0.9rem; position: relative; }
.feldwarnung li::before { content: "•"; position: absolute; left: 0; }
.feldwarnung li[data-schwere="warnung"] { color: var(--fehler); }
.feldwarnung li[data-schwere="hinweis"] { color: var(--text-leise); }
textarea[aria-invalid="true"] { border-color: var(--fehler); }
/* Leseansicht */
.leseliste { list-style: none; margin: 0; padding: 0; }
.leseliste li {
display: flex;
justify-content: space-between;
gap: 1rem;
padding: 0.45rem 0;
border-bottom: 1px solid var(--rand-zart);
line-height: 1.45;
}
.leseliste li:last-child { border-bottom: 0; }
.leseliste .leise { white-space: nowrap; font-variant-numeric: tabular-nums; }
/* Formulierungshilfe */
.formulierungshilfe > summary {
cursor: pointer;
list-style: none;
min-height: 44px;
display: flex;
align-items: center;
gap: 0.4rem;
}
.formulierungshilfe > summary::-webkit-details-marker { display: none; }
.formulierungshilfe > summary::before { content: "▸"; color: var(--petrol); }
.formulierungshilfe[open] > summary::before { content: "▾"; }
.verbgruppen { display: grid; gap: 0.6rem; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.gegenueberstellung { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.9rem; }
.gegenueberstellung li {
border-left: 3px solid var(--rand);
padding-left: 0.75rem;
}
.gegenueberstellung p { margin: 0 0 0.25rem; line-height: 1.45; }
.gegenueberstellung .schlecht { color: var(--text-leise); text-decoration: line-through solid var(--fehler) 1px; }
.gegenueberstellung .schlecht .marke-status { text-decoration: none; }
.gegenueberstellung .gut { font-weight: 500; }
@media print {
.tagesnotizen, .vorschlagsliste, .formulierungshilfe { display: none; }
}
/* --- Lernzielkontrollen --- */
.kontrollliste { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.45rem; }
.kontrollzeile {
display: flex;
align-items: center;
gap: 0.8rem;
flex-wrap: wrap;
background: var(--flaeche);
border: 1px solid var(--rand-zart);
border-radius: var(--radius);
padding: 0.7rem 0.9rem;
text-decoration: none;
color: var(--text);
}
a.kontrollzeile:hover { background: var(--flaeche-kraeftig); color: var(--text); }
.kontrollzeile-gesperrt { opacity: 0.72; }
.kontrollzeile-haupt {
display: flex;
align-items: center;
gap: 0.8rem;
flex: 1 1 260px;
text-decoration: none;
color: var(--text);
}
.kontrollzeile-haupt:hover { color: var(--petrol); }
.kontroll-titel { flex: 1; font-weight: 650; }
.kontroll-woche {
display: inline-flex;
align-items: center;
padding: 0.15rem 0.6rem;
border-radius: var(--radius-klein);
background: var(--petrol);
color: var(--text-auf-petrol);
font-weight: 700;
font-size: 0.8rem;
white-space: nowrap;
flex-shrink: 0;
}
.kontroll-woche-gross { font-size: 0.92rem; padding: 0.25rem 0.7rem; }
.kontrolle-kopf {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
flex-wrap: wrap;
}
.speicherstand { font-variant-numeric: tabular-nums; }
.note-anzeige {
display: grid;
place-items: center;
width: 2.6rem;
height: 2.6rem;
border-radius: var(--radius-klein);
background: var(--petrol);
color: var(--text-auf-petrol);
font-size: 1.5rem;
font-weight: 700;
}
.note-vorlaeufig { background: var(--flaeche-kraeftig); color: var(--text-leise); }
.fragenliste { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; counter-reset: frage; }
.fragenliste > li {
background: var(--grund);
border: 1px solid var(--rand);
border-radius: var(--radius);
padding: 0.9rem 1rem;
}
.frage-kopf {
display: grid;
grid-template-columns: 1.9rem 1fr auto;
gap: 0.6rem;
align-items: start;
margin-bottom: 0.6rem;
}
.frage-nummer {
display: grid;
place-items: center;
width: 1.9rem;
height: 1.9rem;
border-radius: 50%;
background: var(--petrol);
color: var(--text-auf-petrol);
font-weight: 700;
font-size: 0.9rem;
}
.frage-text { margin: 0; font-weight: 600; line-height: 1.45; padding-top: 0.2rem; }
.frage-punkte {
white-space: nowrap;
font-size: 0.85rem;
color: var(--text-leise);
font-variant-numeric: tabular-nums;
padding-top: 0.3rem;
}
.korrektur-spalten {
display: grid;
gap: 0.8rem;
grid-template-columns: 1fr;
}
@media (min-width: 760px) {
.korrektur-spalten { grid-template-columns: 1fr 1fr; }
}
.musterloesung {
background: var(--gut-flaeche);
border-color: var(--gut);
}
.korrektur-bewertung {
display: flex;
gap: 0.75rem;
align-items: flex-end;
margin-top: 0.7rem;
flex-wrap: wrap;
}
.korrektur-bewertung input[type="number"] { width: 7rem; }
.ergebnis-balken { display: grid; gap: 0.35rem; }
@media print {
.kontrolle-kopf { position: static !important; }
}
/* --- Auswertung --- */
.abdeckungsgruppe > summary {
cursor: pointer;
list-style: none;
min-height: 40px;
display: flex;
align-items: center;
gap: 0.4rem;
}
.abdeckungsgruppe > summary::-webkit-details-marker { display: none; }
.abdeckungsgruppe > summary::before { content: "▸"; color: var(--petrol); }
.abdeckungsgruppe[open] > summary::before { content: "▾"; }
.abdeckungsliste { list-style: none; margin: 0.6rem 0 0; padding: 0; display: grid; gap: 0.35rem; }
.abdeckungsliste li {
display: flex;
align-items: flex-start;
gap: 0.7rem;
flex-wrap: wrap;
padding: 0.5rem 0.6rem;
border-radius: var(--radius-klein);
background: var(--grund);
border: 1px solid var(--rand-zart);
border-left: 4px solid var(--rand);
}
.abdeckungsliste li[data-stufe="abgedeckt"] { border-left-color: var(--gut); }
.abdeckungsliste li[data-stufe="angefangen"] { border-left-color: var(--bernstein); }
.abdeckungsliste li[data-stufe="ohne_inhalt"] { border-left-color: var(--fehler); background: var(--fehler-flaeche); }
.abdeckung-kuerzel {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 2.6rem;
padding: 0.1rem 0.5rem;
border-radius: var(--radius-klein);
background: var(--flaeche-kraeftig);
font-weight: 700;
font-size: 0.82rem;
flex-shrink: 0;
}
.abdeckung-titel { flex: 1 1 260px; font-weight: 600; line-height: 1.4; }
.nachweisliste { display: flex; flex-wrap: wrap; gap: 0.25rem; margin-top: 0.3rem; }
.nachweis {
font-size: 0.75rem;
font-weight: 600;
padding: 0.05rem 0.4rem;
border-radius: 3px;
background: var(--flaeche);
color: var(--text-leise);
cursor: help;
}
.nachweis[data-erledigt="ja"] { background: var(--gut-flaeche); color: var(--gut); }
.verlaufsliste { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.45rem; }
.verlaufsliste li {
display: flex;
align-items: center;
gap: 0.8rem;
flex-wrap: wrap;
background: var(--flaeche);
border: 1px solid var(--rand-zart);
border-radius: var(--radius);
padding: 0.6rem 0.9rem;
}
.verlauf-titel { flex: 1 1 200px; font-weight: 650; }
.verlauf-balken { display: flex; align-items: center; gap: 0.5rem; flex: 0 1 180px; }
.verlauf-balken .balken { flex: 1; }
.note-klein { width: 2rem; height: 2rem; font-size: 1.1rem; }
/* --- Feedbackgespräch --- */
.gespraechsliste { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.45rem; }
.gespraechszeile {
display: flex;
align-items: center;
gap: 0.85rem;
flex-wrap: wrap;
background: var(--flaeche);
border: 1px solid var(--rand-zart);
border-radius: var(--radius);
padding: 0.7rem 0.9rem;
text-decoration: none;
color: var(--text);
}
.gespraechszeile:hover { background: var(--flaeche-kraeftig); color: var(--text); }
.gespraech-inhalt { flex: 1 1 220px; font-weight: 650; }
.gespraech-datum {
display: inline-flex;
align-items: center;
padding: 0.15rem 0.6rem;
border-radius: var(--radius-klein);
background: var(--petrol);
color: var(--text-auf-petrol);
font-weight: 700;
font-size: 0.82rem;
white-space: nowrap;
flex-shrink: 0;
}
.gespraech-datum-gross { font-size: 0.95rem; padding: 0.25rem 0.7rem; }
.kriterienbogen { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.6rem; }
.kriterienbogen > li {
display: grid;
gap: 0.4rem;
background: var(--grund);
border: 1px solid var(--rand);
border-radius: var(--radius);
padding: 0.75rem 0.9rem;
}
.kriterienbogen > li[data-abweichung="ja"] { border-color: var(--bernstein); background: var(--warnung-flaeche); }
.kriterium-kopf { display: grid; gap: 0.1rem; }
.kriterium-kopf .leise { font-size: 0.85rem; }
.stufenwahl {
display: flex;
gap: 0.35rem;
border: 0;
margin: 0;
padding: 0;
}
.stufenwahl:disabled { opacity: 0.6; }
.stufe {
margin: 0;
cursor: pointer;
font-weight: 400;
}
.stufe input { position: absolute; opacity: 0; width: 0; height: 0; }
.stufe > span {
display: grid;
place-items: center;
width: 2.4rem;
height: 2.4rem;
border-radius: var(--radius-klein);
border: 2px solid var(--rand);
background: var(--grund);
font-weight: 700;
}
.stufe input:checked + span {
border-color: var(--petrol);
background: var(--petrol);
color: var(--text-auf-petrol);
}
.stufe input:focus-visible + span { outline: 3px solid var(--bernstein); outline-offset: 2px; }
.kriterium-fuss {
display: flex;
align-items: center;
gap: 0.6rem;
flex-wrap: wrap;
font-size: 0.85rem;
}
@media print {
.abdeckungsgruppe > summary { display: none; }
.abdeckungsgruppe[open] .abdeckungsliste { margin-top: 0; }
.stufe input:checked + span { border-color: #000; }
}