diff options
| -rw-r--r-- | FASSUNGEN.txt | 57 | ||||
| -rw-r--r-- | src/main/java/eu/mulk/aendggner/synopse/HtmlRenderer.java | 56 | ||||
| -rw-r--r-- | src/main/resources/eu/mulk/aendggner/web/favicon.svg | 8 | ||||
| -rw-r--r-- | src/main/resources/eu/mulk/aendggner/web/style.css | 55 |
4 files changed, 123 insertions, 53 deletions
diff --git a/FASSUNGEN.txt b/FASSUNGEN.txt index 24baaf6..6803806 100644 --- a/FASSUNGEN.txt +++ b/FASSUNGEN.txt @@ -39,6 +39,11 @@ dass die Fundstelle des Bundesrechts das Norm-XML ausschließlich als Archiv ausgibt; ohne dessen Auspacken bliebe die Einführung eine Anleitung zum Zwischenschritt von Hand. +Endlich wird das Erscheinungsbild demjenigen angeglichen, was das Erzeugnis +darstellt: Es tritt fortan schwarzweiß auf wie ein Gesetzblatt. Dabei hat sich +ergeben, dass die Farbe in der Synopse nicht bloß schmückte, sondern trug; ihre +Abschaffung hat deshalb einen Mangel der Auszeichnung offengelegt und behoben. + Artikel 1 Anbieterkennzeichnung und Datenschutzerklärung @@ -182,6 +187,50 @@ Einführung in der Browserfassung nicht hinzu, sodass Hell- und Dunkelfassung ohne Zutun stimmen. +Artikel 7 +Gestaltung in Schwarzweiß + +(1) Das Stilblatt der Seiten (style.css) wird auf reine Graustufen umgestellt. Die + bisherige Schmuckfarbe — ein warmes Braun — entfällt ersatzlos; an ihre Stelle + tritt die Textfarbe. Die Abrundung der Kästen, Felder und Knöpfe entfällt + gleichfalls; gedrucktes Papier trägt keine runden Ecken. + +(2) Weil die Schmuckfarbe bislang kenntlich machte, was anklickbar ist, werden die + Verweise fortan unterstrichen. Der Knopf kehrt beim Überfahren Grund und + Schrift um; die bisherige Aufhellung wäre an einem schwarzen Knopf ohne + Wirkung geblieben. + +(3) Die beiden allein stehenden Rotwerte entfallen. Die drei Zustände der Meldung + unterscheiden sich nunmehr durch matten Text (Arbeit), kräftigen Rahmen + (Fertigstellung) und doppelt starken Rahmen nebst Fettung (Fehler); der + Hinweis bei abgeschaltetem JavaScript trägt denselben starken Rahmen. Die + Beschriftungen bleiben, wie sie waren, und benennen den Zustand ohnehin. + +(4) Das eingebettete Stilblatt der Synopse (HtmlRenderer) wird ebenso umgestellt. + Streichung und Einfügung werden nicht mehr durch Rot und Grün geschieden, + sondern durch Durchstreichung und Unterstreichung, jeweils auf gemeinsamer + Hinterlegung, sowie durch die Spalte, in der sie stehen. + +(5) Dabei wird ein Mangel behoben: Die Einfügung hob die ihr vom Browser + zugedachte Unterstreichung bisher ausdrücklich auf. Damit war der grüne Grund + das einzige Merkmal, an dem sie zu erkennen war; wer Farben nicht oder anders + wahrnimmt oder die Synopse schwarzweiß ausdruckte, sah eine Einfügung + überhaupt nicht. Die Unterstreichung wird wiederhergestellt. + +(6) Die Abzeichen an den Normköpfen werden gleichfalls durch die Form geschieden: + „neu“ gefüllt, „aufgehoben“ gerahmt und durchgestrichen, „geändert“ schlicht + gerahmt, sämtlich in Versalien mit Sperrung. Sie sind ohnehin beschriftet; die + Farbe war dort von jeher bloße Verdopplung. + +(7) Dem Körper der Synopse werden Schrift- und Grundfarbe ausdrücklich zugewiesen. + Der klebende Spaltenkopf übernahm seinen Grund bisher durch Vererbung und + hatte mithin keinen verlässlichen. Für den Druck wird die Hinterlegung + festgelegt, damit sie nicht fortfällt. + +(8) Das Tabellenzeichen (favicon.svg) wird nachgezogen. Es führt die Werte + ausgeschrieben, weil ein Tabellenzeichen keine Stilblattgrößen erbt. + + Schlussbestimmung Die vorstehenden Änderungen sind durch die Prüfung sämtlicher Testfälle @@ -198,6 +247,14 @@ Befehlszeile, und keine Beanstandung hinterlassen; die Erforderlichkeit der Freigabe für eingebettete Stile ist dadurch belegt, dass die Synopse ohne sie unformatiert erscheint. +Die Umstellung des Erscheinungsbildes ist in Augenschein genommen worden, und +zwar in Hell- und in Dunkelfassung: die Startseite nebst den drei Zuständen der +Meldung, die Anbieterkennzeichnung sowie eine über die Befehlszeile erzeugte +Synopse des Gebäudeenergiegesetzes (achtundsechzig angewandte Befehle, +einundfünfzig zur manuellen Prüfung, siebenundvierzig geänderte Normen, mithin +dasselbe wie zuvor). Streichung, Einfügung und die drei Abzeichen sind dabei +ohne Farbe auseinanderzuhalten. + ════════════════════════════════════════════════════════════════════════════════ Fassung vom 15. August 2026, diff --git a/src/main/java/eu/mulk/aendggner/synopse/HtmlRenderer.java b/src/main/java/eu/mulk/aendggner/synopse/HtmlRenderer.java index 834423a..84446c1 100644 --- a/src/main/java/eu/mulk/aendggner/synopse/HtmlRenderer.java +++ b/src/main/java/eu/mulk/aendggner/synopse/HtmlRenderer.java @@ -206,23 +206,24 @@ public final class HtmlRenderer { private static final String CSS = """ + /* Schwarz auf Papier wie ein Gesetzblatt. Streichung und Einfügung unterscheiden + sich deshalb nicht durch Farbe, sondern durch Form: durchgestrichen gegen + unterstrichen, dazu die Spalte, in der sie stehen. */ :root { color-scheme: light dark; - --del-bg: #ffd7d7; - --del-fg: #8b0000; - --ins-bg: #d7f5d7; - --ins-fg: #005f00; - --rand: #ccc; - --dezent: #666; + --fg: #111; + --bg: #fff; + --rand: #bbb; + --dezent: #595959; + --hinterlegung: #ececec; } @media (prefers-color-scheme: dark) { :root { - --del-bg: #5a1f1f; - --del-fg: #ffb3b3; - --ins-bg: #1f4a1f; - --ins-fg: #b3ffb3; - --rand: #555; - --dezent: #aaa; + --fg: #e6e6e6; + --bg: #141414; + --rand: #4a4a4a; + --dezent: #a0a0a0; + --hinterlegung: #333; } } body { @@ -231,13 +232,15 @@ public final class HtmlRenderer { max-width: 90rem; margin: 0 auto; padding: 1rem 2rem; + color: var(--fg); + background: var(--bg); } header h1 { margin-bottom: 0.2rem; } .langue { font-style: italic; margin-top: 0; } .quelle, .statistik, .gliederung, .ursachen { color: var(--dezent); font-size: 0.9rem; } .entwurfshinweis { border: 1px solid var(--rand); - border-left: 4px solid var(--del-fg); + border-left: 4px solid var(--fg); padding: 0.5rem 0.75rem; margin: 0.6rem 0; font-size: 0.95rem; @@ -267,32 +270,41 @@ public final class HtmlRenderer { font-size: 0.95rem; } del, .alt del { - background: var(--del-bg); - color: var(--del-fg); + background: var(--hinterlegung); + color: inherit; text-decoration: line-through; } ins, .neu ins { - background: var(--ins-bg); - color: var(--ins-fg); - text-decoration: none; + background: var(--hinterlegung); + color: inherit; + text-decoration: underline; } .leer { color: var(--dezent); font-style: italic; } + /* Gerahmte Kästchen in Versalien; die drei Arten trennt die Form, nicht die Farbe. + Beschriftet sind sie ohnehin. */ .badge { font-family: system-ui, sans-serif; font-size: 0.7rem; font-weight: normal; - border-radius: 0.6rem; + text-transform: uppercase; + letter-spacing: 0.06em; + border: 1px solid var(--rand); + color: var(--dezent); padding: 0.1rem 0.55rem; vertical-align: middle; } - .neu-badge { background: var(--ins-bg); color: var(--ins-fg); } - .aufgehoben-badge { background: var(--del-bg); color: var(--del-fg); } - .geaendert-badge { border: 1px solid var(--rand); color: var(--dezent); } + .neu-badge { background: var(--fg); color: var(--bg); border-color: var(--fg); } + .aufgehoben-badge { text-decoration: line-through; } + /* .geaendert-badge trägt bereits den schlichten Rahmen aus .badge. */ section.manuell { margin-top: 2rem; } section.manuell li { margin-bottom: 0.7rem; } .originaltext { color: var(--dezent); font-size: 0.85rem; } @media print { .vergleich { break-inside: avoid; } + /* Ohne diese Festlegung wirft der Druck die Hinterlegung weg; Durchstreichung + und Unterstreichung überstehen ihn ohnehin. */ + :root { --hinterlegung: #e4e4e4; } + del, ins, .neu-badge { -webkit-print-color-adjust: exact; print-color-adjust: exact; } } """; } diff --git a/src/main/resources/eu/mulk/aendggner/web/favicon.svg b/src/main/resources/eu/mulk/aendggner/web/favicon.svg index 4f6a847..5b19c76 100644 --- a/src/main/resources/eu/mulk/aendggner/web/favicon.svg +++ b/src/main/resources/eu/mulk/aendggner/web/favicon.svg @@ -1,9 +1,9 @@ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" role="img" aria-label="ÄndGgner"> - <!-- Farben wie in style.css: heller Grund, brauner Akzent. Ein Favicon erbt keine + <!-- Farben wie in style.css: Papier, Haarlinie, schwarzes Zeichen. Ein Favicon erbt keine CSS-Variablen, deshalb stehen die Werte hier ausgeschrieben. --> - <rect width="32" height="32" rx="6" fill="#fdfdfb"/> - <rect x="0.75" y="0.75" width="30.5" height="30.5" rx="5.25" fill="none" stroke="#d8d3c4" + <rect width="32" height="32" fill="#fff"/> + <rect x="0.75" y="0.75" width="30.5" height="30.5" fill="none" stroke="#bbb" stroke-width="1.5"/> - <text x="16" y="17" fill="#6b4423" font-family="Georgia, 'Times New Roman', serif" + <text x="16" y="17" fill="#111" font-family="Georgia, 'Times New Roman', serif" font-size="22" text-anchor="middle" dominant-baseline="central">§</text> </svg> diff --git a/src/main/resources/eu/mulk/aendggner/web/style.css b/src/main/resources/eu/mulk/aendggner/web/style.css index c9d6db1..d770551 100644 --- a/src/main/resources/eu/mulk/aendggner/web/style.css +++ b/src/main/resources/eu/mulk/aendggner/web/style.css @@ -1,19 +1,18 @@ +/* Schwarz auf Papier wie ein Gesetzblatt: keine Buntheit, nur Graustufen. */ :root { color-scheme: light dark; - --fg: #1b1b1b; - --bg: #fdfdfb; - --muted: #5a5a54; - --accent: #6b4423; - --border: #d8d3c4; + --fg: #111; + --bg: #fff; + --muted: #595959; + --border: #bbb; } @media (prefers-color-scheme: dark) { :root { - --fg: #e8e6df; - --bg: #1c1b18; - --muted: #a6a296; - --accent: #c99a6c; - --border: #3a382f; + --fg: #e6e6e6; + --bg: #141414; + --muted: #a0a0a0; + --border: #4a4a4a; } } @@ -62,8 +61,10 @@ address { margin: 0.5rem 0; } +/* Ohne Schmuckfarbe trägt allein die Unterstreichung das Klick-Signal. */ a { - color: var(--accent); + color: var(--fg); + text-decoration: underline; } .field { @@ -93,7 +94,6 @@ input[type="file"] { width: 100%; padding: 0.4rem; border: 1px solid var(--border); - border-radius: 4px; background: transparent; color: inherit; } @@ -102,22 +102,23 @@ button { font: inherit; font-weight: bold; padding: 0.6rem 1.5rem; - border: 1px solid var(--accent); - border-radius: 4px; - background: var(--accent); + border: 1px solid var(--fg); + background: var(--fg); color: var(--bg); cursor: pointer; } +/* Umkehr statt brightness(): Ein schwarzer Knopf wird davon nicht heller. */ button:hover { - filter: brightness(1.1); + background: var(--bg); + color: var(--fg); } +/* Warnung ohne Rot: der doppelt starke Rahmen trägt das Gewicht. */ .noscript { margin: 0 0 2rem; padding: 1rem; - border: 1px solid #a33; - border-radius: 6px; + border: 2px solid var(--fg); font-size: 0.875rem; } @@ -127,13 +128,12 @@ button:hover { margin: 0 0 1.75rem; padding: 0.75rem 1rem; border: 1px solid var(--border); - border-radius: 6px; font-size: 0.875rem; } .einfuehrung summary { font-weight: bold; - color: var(--accent); + text-decoration: underline; cursor: pointer; } @@ -164,7 +164,6 @@ button:hover { margin-top: 2rem; padding: 1rem; border: 1px solid var(--border); - border-radius: 6px; font-size: 0.875rem; color: var(--muted); } @@ -178,18 +177,19 @@ footer { } footer a { - color: var(--accent); + color: var(--muted); } .nebenquelle { font-size: 0.8125rem; } +/* Die drei Zustände unterscheiden sich ohne Farbe: matter Text, kräftiger Rahmen, + doppelt starker Rahmen mit Fettung. */ .meldung { margin-top: 1.25rem; padding: 0.75rem 1rem; border: 1px solid var(--border); - border-radius: 6px; font-size: 0.9375rem; } @@ -198,15 +198,16 @@ footer a { } .meldung.fertig { - border-color: var(--accent); + border-color: var(--fg); } .meldung.fehler { - border-color: #a33; - color: #a33; + border: 2px solid var(--fg); + font-weight: bold; } +/* grayscale() ist an einem grauen Knopf wirkungslos. */ button[disabled] { - filter: grayscale(0.6); + opacity: 0.5; cursor: progress; } |
