Files
lernbar/src/app/globals.css
T
Florian WildeandClaude Opus 5 7c4a051347 Baustein 7: Berichtsheft mit Vorschlaegen, Pruefung, Abzeichnen und PDF
- Taegliche Stichworte, je Tag ein eigenes Formular
- Wochenblatt mit Betrieb, Berufsschule und Sonstiges, je mit Stunden
- Vorschlaege aus Tagesnotizen, Aufgaben, Checklisten und Handouts
- Pruefung mitlaufend beim Tippen: fehlende Stunden, Floskeln,
  IP- und MAC-Adressen, E-Mail, Zugangsdaten, Kundennamen
- Warnung, keine Sperre - Einreichen ist immer moeglich
- Formulierungshilfe mit Taetigkeitsverben und Gegenueberstellungen
- Einreichen, zurueckgeben mit Anmerkung, abzeichnen; danach gesperrt
- Fehlende Wochen werden benannt und lassen sich nachtragen; die laufende
  Nummer richtet sich nach dem Zeitraum, nicht nach dem Anlegen
- PDF im IHK-Layout, einzeln oder als ganzer Zeitraum

Behoben: Im PDF-Kopffeld liefen die Spalten auseinander (dokument.y als
Bezugspunkt in der Schleife). Das Abzeichnen-Formular hatte keine action -
gefunden ueber die ESLint-Meldung zur ungenutzten Serveraktion.

55 neue Tests, insgesamt 241.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-10 23:09:54 +02:00

1549 lines
35 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 --- */
@media print {
.kopf,
.nicht-drucken {
display: none !important;
}
body { background: #fff; color: #000; font-size: 11pt; }
.huelle { max-width: none; padding: 0; }
.karte, .karte-grund { border: 1px solid #999; box-shadow: none; background: #fff; }
a { color: #000; text-decoration: none; }
}
/* 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; }
.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; }
}