Berichtigt: Die Rechnung hat zwei ausdrueckliche Wuensche ueberfahren

Der Commit davor hat alle 45 Kachelfarben neu verteilt, um acht fast
gleiche Paare zu trennen. Das Ergebnis war rechnerisch besser und
praktisch falsch. pruef-kachelfarben hat sechs Fehler gemeldet:

  Ton 38  #ff1a1a -> #ff241e   „nur die soll knall rot sein!!!"
  Ton 44  #a8d8ff -> #90c3ff   „soll auch babyblau sein mit bissl lila"
  Ton 40, 10, 33          unter die Buntheitsgrenze von 0,12 gedrueckt
  und die Regenbogenkachel zeigte noch die 32 alten Farben

Beide Farben standen mit Datum, Zitat und Begruendung in der Pruefung.
Ich habe sie nicht gelesen, weil ich ein GLOBALES Ziel optimiert habe
-- „alle 45 moeglichst weit auseinander" -- und eine globale Rechnung
kennt keine Einzelfaelle.

=== DIE LEHRE IST NICHT „DIE RECHNUNG WAR FALSCH" ===

Sondern: Eine Gesamtloesung fuer ein LOKALES Problem bezahlt man mit
allem, was an den nicht betroffenen Stellen schon richtig war. Acht
Paare standen zu eng. Verschoben wurden 45.

Der zweite Anlauf (tools/_toene-reparieren.mjs) macht es umgekehrt:
Solange ein Paar zu eng steht, wird das engste genommen und EINER der
beiden auf die naechste erlaubte Farbe geschoben. Sonst nichts.

Und dabei kam das Beste des Tages heraus -- gemessen, nicht geahnt:
Von den 45 Toenen tragen nur 33 eine Kachel, zwoelf stehen bereit. In
JEDEM der acht zu engen Paare ist mindestens einer dieser zwoelf
dabei. Wer den Unbenutzten verschiebt, loest dasselbe Problem, ohne
dass sich fuer irgendjemanden auch nur eine Kachel veraendert.

  kleinster Abstand   0,0154  ->  0,0940
  Paare unter 0,09        14  ->  0
  veraendert                       14 von 45
  davon in Gebrauch                 4 -- und zwar um 0,003 bis 0,012

Vier Zehntausendstel OKLab sind nicht zu sehen. Es gibt also KEINE
Kachel, die ihre Farbe wechselt. Das ist mehr als Bequemlichkeit: Wer
zwei Jahre lang „das Tuerkise" angesteuert hat, sucht danach, wenn es
plötzlich rosa ist.

=== UND DIE WUENSCHE STEHEN JETZT DORT, WO GERECHNET WIRD ===

Die Liste FESTGELEGT ist von server/pruef-kachelfarben.mjs nach
tools/kachelton-regeln.mjs gewandert -- neben die Schwellen, aus
genau demselben Grund, aus dem die Schwellen dort stehen.

In der Pruefung konnte sie nur EINES: eine Abweichung melden, nachdem
sie passiert ist. Das hat sie getan, und das ist ihr Verdienst. Aber
eine Bedingung, die erst NACH dem Schaden spricht, ist die schwaechere
Form. Wer die Farben rechnet, soll gar nicht erst die Moeglichkeit
haben, sie zu verschieben -- das Werkzeug liest die Liste jetzt selbst
und setzt festgelegte Toene sogar zurueck, wenn es sie verschoben
vorfindet.

Dasselbe gilt fuer die Buntheitsgrenze: Sie kommt aus der Regeldatei,
und sie gilt nur fuer benutzte Toene -- so, wie die Pruefung sie
anwendet. Das ist nicht Nachgiebigkeit, sondern Rechnung: Mit
Buntheit >= 0,12 fuer ALLE 45 ist ein Mindestabstand von 0,09
nachweislich unmoeglich (Decke 0,0853). Die zwoelf unbenutzten duerfen
blasser sein und nehmen genau den Druck aus dem engen
Blau-Tuerkis-Bereich, an dem der erste Anlauf gescheitert ist.

GEMESSEN: pruef-kachelfarben 26 Pruefungen, 0 Fehler (vorher 26 mit
6 Fehlern). pruef-kachel-universum 13 Pruefungen, 0 Fehler.
Regenbogenkachel mit tools/kachel-regenbogen.mjs neu geschrieben --
99 Punkte in drei Groessen, je 33 Farben.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-25 23:44:40 +02:00
co-authored by Claude Opus 5
parent 954426615f
commit 80988f2d23
3 changed files with 122 additions and 94 deletions
+4 -38
View File
@@ -53,44 +53,10 @@ const CSS = join(HIER, "..", "workspace", "assets", "css", "start.css");
const { GRUND, MINDEST_ABSTAND, MINDEST_BUNTHEIT } =
await import("../tools/kachelton-regeln.mjs");
/* Was festgelegt ist — mit dem Grund, aus dem es festgelegt wurde. */
const FESTGELEGT = [
/* BERICHTIGT AM 22.09.2026. Ich hatte screen5 und screen6 vertauscht
und das Rot auf "Draussen" gelegt. Filipe: "nicht die kachel
draussen soll rot sein sondern die kachel vertraulich melden nur
die soll knall rot sein!!!" */
{ ton: 38, kachel: "Vertraulich melden", hex: "#ff1a1a",
warum: "knalliges Rot -- wer den vertraulichen Weg sucht, soll ihn finden, ohne zu lesen" },
{ ton: 39, kachel: "Draußen",
warum: "die Farbe, die Regeln & Hilfe hatte -- ausdruecklicher Wunsch (screen5)" },
/* BABYBLAU IST PER DEFINITION BLASS (25.09.2026).
Filipe: „die hauptfarbe der kachel soll auch babyblau sein mit
bissl lila."
Diese Farbe haelt die Buntheitsgrenze von 0,12 NICHT (sie liegt
bei 0,074) -- und kann sie nicht halten, das liegt am Wort.
Nachgemessen mit `node tools/_babyblau-suchen.mjs`: Unter allen
Blautoenen im Umkreis des Wunsches gibt es KEINEN, der gleichzeitig
Buntheit >= 0,12 und Abstand >= 0,09 schafft -- der beste kommt
auf 0,075 Abstand. Der Blaubereich ist von den Toenen 15, 23, 26,
31, 41 und 43 besetzt.
DIE GRENZE WIRD DESHALB NICHT GESENKT, sondern hier BENANNT
ausgenommen. Eine gesenkte Grenze gaelte fuer alle 45 Toene und
liesse ab morgen jede blasse Farbe durch; eine benannte Ausnahme
gilt fuer genau diese eine und steht mit ihrem Grund da.
UND SIE IST NICHT GRATIS: Wer blass sein darf, muss dafuer beim
ABSTAND ueberdurchschnittlich sein -- das ist der Zweck, den die
Buntheitsregel nur stellvertretend misst. Gemessen 0,1125 zur
naechsten Farbe (Ton 15), das 7,3-Fache des engsten Paares, das im
Haus ohnehin steht. Die Bedingung dazu steht unten bei der
Pruefung und ist echt: Faellt der Abstand unter 0,10, wird diese
Zeile rot. */
{ ton: 44, kachel: "Support", hex: "#a8d8ff", blassErlaubt: 0.10,
warum: "Babyblau auf Wunsch -- blass, dafuer mit gemessenem Sicherheitsabstand" },
];
/* Was festgelegt ist, steht in tools/kachelton-regeln.mjs -- zusammen
mit den Schwellen und aus demselben Grund: Eine Regel, die an zwei
Orten steht, steht irgendwann in zwei Fassungen da. */
const { FESTGELEGT } = await import("../tools/kachelton-regeln.mjs");
let ok = 0, fehl = 0;
const pruef = (name, bedingung, zusatz = "") => {
+62
View File
@@ -49,3 +49,65 @@ export const HOECHST_BUNTHEIT = 0.30;
/* Nicht verhandelbar: Eine Kachelfarbe trägt auch Text und Zahlen. */
export const MINDEST_KONTRAST = 4.5;
/* =====================================================================
WAS FESTGELEGT IST -- und warum (hierher geholt am 25.09.2026)
Diese Liste stand in server/pruef-kachelfarben.mjs. Dort konnte sie
nur EINES: eine Abweichung melden, nachdem sie passiert ist.
Genau das ist am 25.09. passiert. Eine Rechnung hat die 45
Kachelfarben neu verteilt, um acht fast gleiche Paare zu trennen --
und dabei zwei ausdrueckliche Wuensche ueberfahren, weil sie sie
nicht kannte:
Ton 38 #ff1a1a „nur die soll knall rot sein!!!" -> #ff241e
Ton 44 #a8d8ff „soll auch babyblau sein" -> #90c3ff
Die Pruefung hat beides gefunden, und das ist ihr Verdienst. Aber
eine Bedingung, die erst NACH dem Schaden spricht, ist die
schwaechere Form: Wer die Farben rechnet, soll gar nicht erst die
Moeglichkeit haben, sie zu verschieben.
Deshalb steht sie jetzt hier, neben den Schwellen -- und beide
Seiten lesen sie von hier: die Pruefung, um zu melden, und das
Rechenwerkzeug, um sie festzuhalten.
===================================================================== */
export /* Was festgelegt ist — mit dem Grund, aus dem es festgelegt wurde. */
const FESTGELEGT = [
/* BERICHTIGT AM 22.09.2026. Ich hatte screen5 und screen6 vertauscht
und das Rot auf "Draussen" gelegt. Filipe: "nicht die kachel
draussen soll rot sein sondern die kachel vertraulich melden nur
die soll knall rot sein!!!" */
{ ton: 38, kachel: "Vertraulich melden", hex: "#ff1a1a",
warum: "knalliges Rot -- wer den vertraulichen Weg sucht, soll ihn finden, ohne zu lesen" },
{ ton: 39, kachel: "Draußen",
warum: "die Farbe, die Regeln & Hilfe hatte -- ausdruecklicher Wunsch (screen5)" },
/* BABYBLAU IST PER DEFINITION BLASS (25.09.2026).
Filipe: „die hauptfarbe der kachel soll auch babyblau sein mit
bissl lila."
Diese Farbe haelt die Buntheitsgrenze von 0,12 NICHT (sie liegt
bei 0,074) -- und kann sie nicht halten, das liegt am Wort.
Nachgemessen mit `node tools/_babyblau-suchen.mjs`: Unter allen
Blautoenen im Umkreis des Wunsches gibt es KEINEN, der gleichzeitig
Buntheit >= 0,12 und Abstand >= 0,09 schafft -- der beste kommt
auf 0,075 Abstand. Der Blaubereich ist von den Toenen 15, 23, 26,
31, 41 und 43 besetzt.
DIE GRENZE WIRD DESHALB NICHT GESENKT, sondern hier BENANNT
ausgenommen. Eine gesenkte Grenze gaelte fuer alle 45 Toene und
liesse ab morgen jede blasse Farbe durch; eine benannte Ausnahme
gilt fuer genau diese eine und steht mit ihrem Grund da.
UND SIE IST NICHT GRATIS: Wer blass sein darf, muss dafuer beim
ABSTAND ueberdurchschnittlich sein -- das ist der Zweck, den die
Buntheitsregel nur stellvertretend misst. Gemessen 0,1125 zur
naechsten Farbe (Ton 15), das 7,3-Fache des engsten Paares, das im
Haus ohnehin steht. Die Bedingung dazu steht unten bei der
Pruefung und ist echt: Faellt der Abstand unter 0,10, wird diese
Zeile rot. */
{ ton: 44, kachel: "Support", hex: "#a8d8ff", blassErlaubt: 0.10,
warum: "Babyblau auf Wunsch -- blass, dafuer mit gemessenem Sicherheitsabstand" },
];
+56 -56
View File
@@ -888,10 +888,10 @@ body.start > main { position: relative; z-index: 1; }
Unterschied), und jede Farbe haelt 4,5:1 gegen den dunklen Grund --
sie traegt auch Text. Wer sie neu rechnet: Das Werkzeug bricht ab,
wenn das Ergebnis schlechter waere als der alte Stand. */
[data-ton="1"] { --ton: #7b7ec3; } /* Dashboard */
[data-ton="2"] { --ton: #ff6078; } /* Zahlen */
[data-ton="3"] { --ton: #0fba0c; } /* LIVE */
[data-ton="4"] { --ton: #c9691e; } /* Chat */
[data-ton="1"] { --ton: #aa6c90; } /* Dashboard */
[data-ton="2"] { --ton: #d050a4; } /* Zahlen */
[data-ton="3"] { --ton: #18b803; } /* LIVE */
[data-ton="4"] { --ton: #c16302; } /* Chat */
/* TON 5 IST VON HAND GESETZT (09.09.2026, screen4).
Filipe: "ich will dass die kategorie eine farbe bekommt die extrem
@@ -925,22 +925,22 @@ body.start > main { position: relative; z-index: 1; }
gewünscht ("alle kacheln auf der ganzen website sollen sein wie auf
der startseite"). Was sie heraushebt, ist die Farbe, nicht eine
Sonderform. */
[data-ton="5"] { --ton: #ff09d5; } /* Schutz & Regeln -- Wunsch: extrem auffällig */
[data-ton="6"] { --ton: #b49fff; } /* Community */
[data-ton="7"] { --ton: #2a9375; } /* Reports */
[data-ton="8"] { --ton: #ab69ff; } /* Kalender */
[data-ton="9"] { --ton: #d24bc3; } /* Bibliothek */
[data-ton="10"] { --ton: #ea8d7e; } /* Steckbrief */
[data-ton="11"] { --ton: #d88d18; } /* Personen */
[data-ton="12"] { --ton: #8ae4ae; } /* Content */
[data-ton="13"] { --ton: #0fb47e; } /* Aufgaben */
[data-ton="14"] { --ton: #fcbd3f; } /* Technik */
[data-ton="15"] { --ton: #00dbf9; } /* Calls */
[data-ton="16"] { --ton: #1eb1c0; } /* Start-Check */
[data-ton="17"] { --ton: #c9cf09; } /* Agentur */
[data-ton="18"] { --ton: #b77ecf; } /* Automationen */
[data-ton="19"] { --ton: #06f08a; } /* Dateien */
[data-ton="20"] { --ton: #ff90bd; } /* Creator-Profile */
[data-ton="5"] { --ton: #fe04d8; } /* Schutz & Regeln -- Wunsch: extrem auffällig */
[data-ton="6"] { --ton: #b699fe; } /* Community */
[data-ton="7"] { --ton: #098f71; } /* Reports */
[data-ton="8"] { --ton: #ab68ff; } /* Kalender */
[data-ton="9"] { --ton: #ceae6e; } /* Bibliothek */
[data-ton="10"] { --ton: #fe667e; } /* Steckbrief */
[data-ton="11"] { --ton: #da8a06; } /* Personen */
[data-ton="12"] { --ton: #7eca8c; } /* Content */
[data-ton="13"] { --ton: #12b37e; } /* Aufgaben */
[data-ton="14"] { --ton: #ffbd4a; } /* Technik */
[data-ton="15"] { --ton: #9ce6bc; } /* Calls */
[data-ton="16"] { --ton: #28aeba; } /* Start-Check */
[data-ton="17"] { --ton: #cace02; } /* Agentur */
[data-ton="18"] { --ton: #9a86ca; } /* Automationen */
[data-ton="19"] { --ton: #08eb9f; } /* Dateien */
[data-ton="20"] { --ton: #d48a92; } /* Creator-Profile */
/* TON 21 IST VON HAND GESETZT (09.09.2026, screen6).
Filipe: "die farbe von dieser kategorie soll knall rot sein."
@@ -958,7 +958,7 @@ body.start > main { position: relative; z-index: 1; }
Kontrast auf dem dunklen Grund: 5,01:1 (noetig 4,5). Von sechs
geprueften Rottoenen hat dieser den groessten Abstand UND genug
Kontrast -- deshalb dieser und nicht der erstbeste. */
[data-ton="21"] { --ton: #cc6372; } /* Scout-Pipeline -- Wunsch: knallrot */
[data-ton="21"] { --ton: #d6525e; } /* Scout-Pipeline -- Wunsch: knallrot */
/* TON 22 -- TEAM-LAGE (09.09.2026).
@@ -975,13 +975,13 @@ body.start > main { position: relative; z-index: 1; }
Warm und hell ist kein Zufall: Diese eine Kachel gehoert der
Leitung. Zwischen den kuehlen Toenen der Arbeitsbereiche faellt ein
warmer auf, ohne lauter zu sein. */
[data-ton="22"] { --ton: #ffde93; } /* Team-Lage */
[data-ton="22"] { --ton: #fee0b2; } /* Team-Lage */
/* Ton 23 (10.09.2026, Ideen-Board). NICHT nach Gefuehl gewaehlt: Die
22 vorhandenen Toene sind dicht besetzt, deshalb wurde der Abstand zu
allen ausgerechnet. #5f8a9f hat mit 127 den zweitgroessten -- der
groesste war ein Graubraun, und eine graue Kachel zwischen bunten
sieht abgeschaltet aus. Gedeckt statt grell, wie alles hier. */
[data-ton="23"] { --ton: #15b4ff; } /* Ideen-Board */
[data-ton="23"] { --ton: #08b5fc; } /* Ideen-Board */
/* Ton 24 (10.09.2026, Eingang). Wieder gerechnet statt gewaehlt, und bei
23 belegten Toenen wird es eng: Der Abstand im CIELAB-Raum zum
@@ -994,7 +994,7 @@ body.start > main { position: relative; z-index: 1; }
schlechtesten zu fokussieren. Kraeftiges Gruen kam auf 39,5, hat aber
L* 81 und wuerde leuchten. Dieser Ton hat eine Leuchtdichte von 0,109
-- dunkel genug, um neben den anderen ruhig zu bleiben. */
[data-ton="24"] { --ton: #d524ff; } /* Eingang */
[data-ton="24"] { --ton: #d21afd; } /* Eingang */
/* TON 25 -- Rueckmeldung (10.09.2026).
@@ -1032,8 +1032,8 @@ body.start > main { position: relative; z-index: 1; }
Wenn eine achtundzwanzigste Kachel kommt, ist das der Zeitpunkt, an
dem die Kacheln Gruppenfarben brauchen statt Einzelfarben -- nicht
der, an dem man den naechsten Ton dazwischenquetscht. */
[data-ton="26"] { --ton: #0cfff0; } /* Eure Aufgaben (bis 19.09. "Entwicklung") */
[data-ton="27"] { --ton: #e469ff; } /* Talente */
[data-ton="26"] { --ton: #07fff1; } /* Eure Aufgaben (bis 19.09. "Entwicklung") */
[data-ton="27"] { --ton: #e871ff; } /* Talente */
/* =====================================================================
DIE SIEBEN TOENE DES TREFFS (11.09.2026)
@@ -1059,13 +1059,13 @@ body.start > main { position: relative; z-index: 1; }
Hand gewaehlte Farbfamilie im selben Blau bei 12,6. Die Rechnung war
also nicht Genauigkeitsspielerei, sondern der Unterschied zwischen
unterscheidbar und nicht. */
[data-ton="28"] { --ton: #009918; } /* Regeln & Hilfe */
[data-ton="29"] { --ton: #f91e81; } /* Highlights */
[data-ton="30"] { --ton: #a5ff96; } /* Wunschliste */
[data-ton="31"] { --ton: #2dcfb4; } /* Was ansteht */
[data-ton="32"] { --ton: #008dc0; } /* Mitmachen */
[data-ton="33"] { --ton: #f3b7ff; } /* Anschlagbrett */
[data-ton="34"] { --ton: #a2ae0c; } /* Der Treff */
[data-ton="28"] { --ton: #069511; } /* Regeln & Hilfe */
[data-ton="29"] { --ton: #f10778; } /* Highlights */
[data-ton="30"] { --ton: #a7ff98; } /* Wunschliste */
[data-ton="31"] { --ton: #0ed1d0; } /* Was ansteht */
[data-ton="32"] { --ton: #0687bc; } /* Mitmachen */
[data-ton="33"] { --ton: #f4acff; } /* Anschlagbrett */
[data-ton="34"] { --ton: #a2af10; } /* Der Treff */
/* DER 35. TON (11.09.2026) — für „Wer sieht was".
@@ -1091,18 +1091,18 @@ body.start > main { position: relative; z-index: 1; }
mit einer anderen geteilt. Zwei Dinge in einer Farbe heißt, dass die
Farbe nichts mehr sagt — und pruef-start-ansicht zählt genau das
nach ("34 Farben auf 35 Kacheln" war ihre Meldung). */
[data-ton="35"] { --ton: #ff8dfc; } /* Wer sieht was */
[data-ton="35"] { --ton: #fe8ebe; } /* Wer sieht was */
/* Der 36., nach derselben Rechnung: #7c2771, Abstand 29,7 zu den beiden
nächsten (#8e5b77 „Highlights", #2f2f7f „Wer sieht was"). Auch das
liegt über dem schwächsten Paar der vorhandenen Töne (24,9). */
[data-ton="36"] { --ton: #edf012; } /* Meldungen & Maßnahmen */
[data-ton="36"] { --ton: #eeef08; } /* Meldungen & Maßnahmen */
/* Der 37., nach derselben Rechnung: #46762e, Abstand 25,6 zum nächsten
Nachbarn — knapp über dem schwächsten Paar der ursprünglichen 34
(24,9). Bei 37 Tönen in einem augenschonenden Ausschnitt (kein Rot,
keine Neonsättigung) ist das die Grenze des Machbaren; wird es enger,
ist die nächste Frage nicht „noch ein Ton", sondern „braucht diese
Kachel wirklich eine eigene Farbe". */
[data-ton="37"] { --ton: #60ff0c; } /* Wie geht's dir? */
[data-ton="37"] { --ton: #61ff09; } /* Wie geht's dir? */
/* UNSERE SEITEN (19.09.2026) -- GESUCHT, NICHT GEWAEHLT.
Die Treff-Gruppe trug Grün (28, 30, 32), Magenta (29), Orange (31)
@@ -1120,7 +1120,7 @@ body.start > main { position: relative; z-index: 1; }
Ergebnis: OKLCH L=0.59 C=0.185 H=254. Abstand 0.310 zum nächsten
(Ton 33), Kontrast 4.51:1. Blau ist die einzige Ecke, die im Treff
noch frei war — das ist kein Zufall, sondern das Ergebnis. */
[data-ton="38"] { --ton: #ff241e; } /* Vertraulich melden -- KNALLROT, gesetzt 22.09.2026 (Kontrast 4,84:1) */
[data-ton="38"] { --ton: #ff1a1a; } /* Vertraulich melden -- KNALLROT, gesetzt 22.09.2026 (Kontrast 4,84:1) */
/* VERTRAULICH MELDEN (19.09.2026) -- ebenfalls abgesucht, nicht gewaehlt.
140 973 lesbare Kandidaten, gewonnen hat der mit dem groessten
Mindestabstand zu allen neun belegten Toenen: OKLCH L=0.77 C=0.130
@@ -1131,11 +1131,11 @@ body.start > main { position: relative; z-index: 1; }
sind. Mehr ist im lesbaren Bereich nicht zu holen; wer den naechsten
hinzufuegt, sollte das wissen und notfalls einen alten verschieben,
statt die Schwelle stillschweigend zu senken. */
[data-ton="39"] { --ton: #ff5aba; } /* Vertraulich melden */
[data-ton="40"] { --ton: #ffb190; } /* Entwicklung (die Auswertung) */
[data-ton="41"] { --ton: #7293ff; } /* Treff-Chat */
[data-ton="42"] { --ton: #908a03; } /* Material (Platzhalter, wird gerechnet) */
[data-ton="43"] { --ton: #0081fc; } /* Calls & Protokolle (gerechnet 22.09.2026) */
[data-ton="39"] { --ton: #ff57ba; } /* Vertraulich melden */
[data-ton="40"] { --ton: #ff9d82; } /* Entwicklung (die Auswertung) */
[data-ton="41"] { --ton: #6c8efe; } /* Treff-Chat */
[data-ton="42"] { --ton: #918a01; } /* Material (Platzhalter, wird gerechnet) */
[data-ton="43"] { --ton: #027afb; } /* Calls & Protokolle (gerechnet 22.09.2026) */
/* GEWUENSCHT UND NACHGEMESSEN (25.09.2026)
Filipe zum Bildschirmfoto der Support-Seite: „ich will dass du bitte
@@ -1162,7 +1162,7 @@ body.start > main { position: relative; z-index: 1; }
Ein Ton ist EINE Farbe: Er faerbt die Kachel auf der Wand, den Kopf
der Seite, das Wasserzeichen und jede Zahl darin. Das Lila ist die
zweite Stimme daneben und gilt nur auf der Support-Seite. */
[data-ton="44"] { --ton: #90c3ff; } /* Support (Wunschfarbe, nachgemessen 25.09.2026) */
[data-ton="44"] { --ton: #a8d8ff; } /* Support (Wunschfarbe, nachgemessen 25.09.2026) */
/* GERECHNET, NICHT GEWAEHLT (24.09.2026) -- mit
`node tools/kachel-farbe-einzeln.mjs 45 --schreiben`, das die Farbe
sucht, die von den 44 vorhandenen am weitesten entfernt liegt, ohne
@@ -1178,7 +1178,7 @@ body.start > main { position: relative; z-index: 1; }
(vorher hielt es eine zu blasse Farbe, weil ihr Abstand gut war).
Wer diesen Ton spaeter aufhellen will, muss den Abstand neu rechnen
-- nicht nach Gefuehl nachbessern. */
[data-ton="45"] { --ton: #fc690f; } /* Unterstützen (gerechnet 24.09.2026) */
[data-ton="45"] { --ton: #fe660e; } /* Unterstützen (gerechnet 24.09.2026) */
/* WARUM ES KEINEN TON 46 GIBT (25.09.2026)
Die Tuer ins andere Haus trug bis heute Ton 40 -- dieselbe Nummer
@@ -8565,13 +8565,13 @@ body.start .k-leiste .feldschild::after {
radial-gradient(4.82px 4.82px at 21.3px 22.8px, color-mix(in srgb, #07fff1 88%, #ffffff), color-mix(in srgb, #07fff1 88%, #ffffff) 34%, color-mix(in srgb, #07fff1 55%, transparent) 52%, transparent 100%),
radial-gradient(5.48px 5.48px at 50.6px 7.0px, color-mix(in srgb, #fe8ebe 88%, #ffffff), color-mix(in srgb, #fe8ebe 88%, #ffffff) 34%, color-mix(in srgb, #fe8ebe 55%, transparent) 52%, transparent 100%),
radial-gradient(6.57px 6.57px at 81.2px 6.7px, color-mix(in srgb, #72d512 88%, #ffffff), color-mix(in srgb, #72d512 88%, #ffffff) 34%, color-mix(in srgb, #72d512 55%, transparent) 52%, transparent 100%),
radial-gradient(4.71px 4.71px at 110.3px 23.0px, color-mix(in srgb, #6d8cfe 88%, #ffffff), color-mix(in srgb, #6d8cfe 88%, #ffffff) 34%, color-mix(in srgb, #6d8cfe 55%, transparent) 52%, transparent 100%),
radial-gradient(4.71px 4.71px at 110.3px 23.0px, color-mix(in srgb, #6c8efe 88%, #ffffff), color-mix(in srgb, #6c8efe 88%, #ffffff) 34%, color-mix(in srgb, #6c8efe 55%, transparent) 52%, transparent 100%),
radial-gradient(4.88px 4.88px at 154.3px 8.0px, color-mix(in srgb, #c16302 88%, #ffffff), color-mix(in srgb, #c16302 88%, #ffffff) 34%, color-mix(in srgb, #c16302 55%, transparent) 52%, transparent 100%),
radial-gradient(4.83px 4.83px at 185.7px 11.5px, color-mix(in srgb, #12b37e 88%, #ffffff), color-mix(in srgb, #12b37e 88%, #ffffff) 34%, color-mix(in srgb, #12b37e 55%, transparent) 52%, transparent 100%),
radial-gradient(4.33px 4.33px at 16.5px 42.0px, color-mix(in srgb, #ff57ba 88%, #ffffff), color-mix(in srgb, #ff57ba 88%, #ffffff) 34%, color-mix(in srgb, #ff57ba 55%, transparent) 52%, transparent 100%),
radial-gradient(5.17px 5.17px at 49.7px 52.7px, color-mix(in srgb, #a2af10 88%, #ffffff), color-mix(in srgb, #a2af10 88%, #ffffff) 34%, color-mix(in srgb, #a2af10 55%, transparent) 52%, transparent 100%),
radial-gradient(4.63px 4.63px at 82.5px 47.6px, color-mix(in srgb, #027afb 88%, #ffffff), color-mix(in srgb, #027afb 88%, #ffffff) 34%, color-mix(in srgb, #027afb 55%, transparent) 52%, transparent 100%),
radial-gradient(4.55px 4.55px at 105.1px 54.1px, color-mix(in srgb, #fd6401 88%, #ffffff), color-mix(in srgb, #fd6401 88%, #ffffff) 34%, color-mix(in srgb, #fd6401 55%, transparent) 52%, transparent 100%),
radial-gradient(4.55px 4.55px at 105.1px 54.1px, color-mix(in srgb, #fe660e 88%, #ffffff), color-mix(in srgb, #fe660e 88%, #ffffff) 34%, color-mix(in srgb, #fe660e 55%, transparent) 52%, transparent 100%),
radial-gradient(6.07px 6.07px at 149.6px 56.3px, color-mix(in srgb, #08eb9f 88%, #ffffff), color-mix(in srgb, #08eb9f 88%, #ffffff) 34%, color-mix(in srgb, #08eb9f 55%, transparent) 52%, transparent 100%),
radial-gradient(4.34px 4.34px at 182.8px 53.3px, color-mix(in srgb, #f4acff 88%, #ffffff), color-mix(in srgb, #f4acff 88%, #ffffff) 34%, color-mix(in srgb, #f4acff 55%, transparent) 52%, transparent 100%),
radial-gradient(5.58px 5.58px at 14.4px 89.8px, color-mix(in srgb, #cace02 88%, #ffffff), color-mix(in srgb, #cace02 88%, #ffffff) 34%, color-mix(in srgb, #cace02 55%, transparent) 52%, transparent 100%),
@@ -8586,7 +8586,7 @@ body.start .k-leiste .feldschild::after {
radial-gradient(4.52px 4.52px at 105.6px 108.9px, color-mix(in srgb, #d21afd 88%, #ffffff), color-mix(in srgb, #d21afd 88%, #ffffff) 34%, color-mix(in srgb, #d21afd 55%, transparent) 52%, transparent 100%),
radial-gradient(4.31px 4.31px at 150.4px 108.8px, color-mix(in srgb, #918a01 88%, #ffffff), color-mix(in srgb, #918a01 88%, #ffffff) 34%, color-mix(in srgb, #918a01 55%, transparent) 52%, transparent 100%),
radial-gradient(5.83px 5.83px at 189.4px 117.4px, color-mix(in srgb, #0687bc 88%, #ffffff), color-mix(in srgb, #0687bc 88%, #ffffff) 34%, color-mix(in srgb, #0687bc 55%, transparent) 52%, transparent 100%),
radial-gradient(4.38px 4.38px at 10.9px 139.1px, color-mix(in srgb, #ff6877 88%, #ffffff), color-mix(in srgb, #ff6877 88%, #ffffff) 34%, color-mix(in srgb, #ff6877 55%, transparent) 52%, transparent 100%),
radial-gradient(4.38px 4.38px at 10.9px 139.1px, color-mix(in srgb, #fe667e 88%, #ffffff), color-mix(in srgb, #fe667e 88%, #ffffff) 34%, color-mix(in srgb, #fe667e 55%, transparent) 52%, transparent 100%),
radial-gradient(6.29px 6.29px at 54.7px 155.9px, color-mix(in srgb, #a7ff98 88%, #ffffff), color-mix(in srgb, #a7ff98 88%, #ffffff) 34%, color-mix(in srgb, #a7ff98 55%, transparent) 52%, transparent 100%),
radial-gradient(6.12px 6.12px at 75.1px 154.0px, color-mix(in srgb, #ab68ff 88%, #ffffff), color-mix(in srgb, #ab68ff 88%, #ffffff) 34%, color-mix(in srgb, #ab68ff 55%, transparent) 52%, transparent 100%),
radial-gradient(6.08px 6.08px at 123.3px 154.7px, color-mix(in srgb, #ffbd4a 88%, #ffffff), color-mix(in srgb, #ffbd4a 88%, #ffffff) 34%, color-mix(in srgb, #ffbd4a 55%, transparent) 52%, transparent 100%),
@@ -8594,7 +8594,7 @@ body.start .k-leiste .feldschild::after {
radial-gradient(4.42px 4.42px at 177.4px 144.5px, color-mix(in srgb, #f10778 88%, #ffffff), color-mix(in srgb, #f10778 88%, #ffffff) 34%, color-mix(in srgb, #f10778 55%, transparent) 52%, transparent 100%),
radial-gradient(5.16px 5.16px at 17.7px 183.1px, color-mix(in srgb, #61ff09 88%, #ffffff), color-mix(in srgb, #61ff09 88%, #ffffff) 34%, color-mix(in srgb, #61ff09 55%, transparent) 52%, transparent 100%),
radial-gradient(4.80px 4.80px at 46.6px 182.2px, color-mix(in srgb, #b699fe 88%, #ffffff), color-mix(in srgb, #b699fe 88%, #ffffff) 34%, color-mix(in srgb, #b699fe 55%, transparent) 52%, transparent 100%),
radial-gradient(5.00px 5.00px at 80.1px 179.7px, color-mix(in srgb, #db8908 88%, #ffffff), color-mix(in srgb, #db8908 88%, #ffffff) 34%, color-mix(in srgb, #db8908 55%, transparent) 52%, transparent 100%),
radial-gradient(5.00px 5.00px at 80.1px 179.7px, color-mix(in srgb, #da8a06 88%, #ffffff), color-mix(in srgb, #da8a06 88%, #ffffff) 34%, color-mix(in srgb, #da8a06 55%, transparent) 52%, transparent 100%),
/* 4. DIE MITTLEREN — die Masse des Feldes. */
radial-gradient(3.21px 3.21px at 5.1px 5.6px, color-mix(in srgb, #07fff1 82%, #ffffff), color-mix(in srgb, #07fff1 82%, #ffffff) 34%, transparent 100%),
@@ -8603,10 +8603,10 @@ body.start .k-leiste .feldschild::after {
radial-gradient(2.86px 2.86px at 82.4px 14.9px, color-mix(in srgb, #cace02 82%, #ffffff), color-mix(in srgb, #cace02 82%, #ffffff) 34%, transparent 100%),
radial-gradient(2.96px 2.96px at 98.8px 9.3px, color-mix(in srgb, #12b37e 82%, #ffffff), color-mix(in srgb, #12b37e 82%, #ffffff) 34%, transparent 100%),
radial-gradient(2.65px 2.65px at 121.0px 14.2px, color-mix(in srgb, #b699fe 82%, #ffffff), color-mix(in srgb, #b699fe 82%, #ffffff) 34%, transparent 100%),
radial-gradient(2.49px 2.49px at 11.8px 26.8px, color-mix(in srgb, #ff6877 82%, #ffffff), color-mix(in srgb, #ff6877 82%, #ffffff) 34%, transparent 100%),
radial-gradient(2.49px 2.49px at 11.8px 26.8px, color-mix(in srgb, #fe667e 82%, #ffffff), color-mix(in srgb, #fe667e 82%, #ffffff) 34%, transparent 100%),
radial-gradient(2.92px 2.92px at 33.8px 37.3px, color-mix(in srgb, #eeef08 82%, #ffffff), color-mix(in srgb, #eeef08 82%, #ffffff) 34%, transparent 100%),
radial-gradient(2.47px 2.47px at 55.5px 38.6px, color-mix(in srgb, #08eb9f 82%, #ffffff), color-mix(in srgb, #08eb9f 82%, #ffffff) 34%, transparent 100%),
radial-gradient(2.55px 2.55px at 74.8px 28.0px, color-mix(in srgb, #6d8cfe 82%, #ffffff), color-mix(in srgb, #6d8cfe 82%, #ffffff) 34%, transparent 100%),
radial-gradient(2.55px 2.55px at 74.8px 28.0px, color-mix(in srgb, #6c8efe 82%, #ffffff), color-mix(in srgb, #6c8efe 82%, #ffffff) 34%, transparent 100%),
radial-gradient(2.43px 2.43px at 103.9px 38.4px, color-mix(in srgb, #f10778 82%, #ffffff), color-mix(in srgb, #f10778 82%, #ffffff) 34%, transparent 100%),
radial-gradient(2.62px 2.62px at 124.3px 27.3px, color-mix(in srgb, #918a01 82%, #ffffff), color-mix(in srgb, #918a01 82%, #ffffff) 34%, transparent 100%),
radial-gradient(2.61px 2.61px at 6.8px 55.0px, color-mix(in srgb, #069511 82%, #ffffff), color-mix(in srgb, #069511 82%, #ffffff) 34%, transparent 100%),
@@ -8616,7 +8616,7 @@ body.start .k-leiste .feldschild::after {
radial-gradient(2.89px 2.89px at 97.7px 59.0px, color-mix(in srgb, #18b803 82%, #ffffff), color-mix(in srgb, #18b803 82%, #ffffff) 34%, transparent 100%),
radial-gradient(3.29px 3.29px at 125.8px 57.6px, color-mix(in srgb, #a8d8ff 82%, #ffffff), color-mix(in srgb, #a8d8ff 82%, #ffffff) 34%, transparent 100%),
radial-gradient(2.52px 2.52px at 10.9px 83.0px, color-mix(in srgb, #ff57ba 82%, #ffffff), color-mix(in srgb, #ff57ba 82%, #ffffff) 34%, transparent 100%),
radial-gradient(2.37px 2.37px at 33.1px 72.6px, color-mix(in srgb, #db8908 82%, #ffffff), color-mix(in srgb, #db8908 82%, #ffffff) 34%, transparent 100%),
radial-gradient(2.37px 2.37px at 33.1px 72.6px, color-mix(in srgb, #da8a06 82%, #ffffff), color-mix(in srgb, #da8a06 82%, #ffffff) 34%, transparent 100%),
radial-gradient(3.21px 3.21px at 54.6px 78.8px, color-mix(in srgb, #a7ff98 82%, #ffffff), color-mix(in srgb, #a7ff98 82%, #ffffff) 34%, transparent 100%),
radial-gradient(3.43px 3.43px at 71.0px 71.9px, color-mix(in srgb, #08b5fc 82%, #ffffff), color-mix(in srgb, #08b5fc 82%, #ffffff) 34%, transparent 100%),
radial-gradient(3.16px 3.16px at 92.6px 70.6px, color-mix(in srgb, #f4acff 82%, #ffffff), color-mix(in srgb, #f4acff 82%, #ffffff) 34%, transparent 100%),
@@ -8624,7 +8624,7 @@ body.start .k-leiste .feldschild::after {
radial-gradient(2.50px 2.50px at 16.0px 101.8px, color-mix(in srgb, #61ff09 82%, #ffffff), color-mix(in srgb, #61ff09 82%, #ffffff) 34%, transparent 100%),
radial-gradient(2.80px 2.80px at 33.8px 102.3px, color-mix(in srgb, #0687bc 82%, #ffffff), color-mix(in srgb, #0687bc 82%, #ffffff) 34%, transparent 100%),
radial-gradient(2.52px 2.52px at 49.8px 93.9px, color-mix(in srgb, #e871ff 82%, #ffffff), color-mix(in srgb, #e871ff 82%, #ffffff) 34%, transparent 100%),
radial-gradient(2.87px 2.87px at 77.0px 95.8px, color-mix(in srgb, #fd6401 82%, #ffffff), color-mix(in srgb, #fd6401 82%, #ffffff) 34%, transparent 100%),
radial-gradient(2.87px 2.87px at 77.0px 95.8px, color-mix(in srgb, #fe660e 82%, #ffffff), color-mix(in srgb, #fe660e 82%, #ffffff) 34%, transparent 100%),
radial-gradient(2.37px 2.37px at 101.9px 95.3px, color-mix(in srgb, #72d512 82%, #ffffff), color-mix(in srgb, #72d512 82%, #ffffff) 34%, transparent 100%),
radial-gradient(3.42px 3.42px at 113.5px 91.8px, color-mix(in srgb, #0ed1d0 82%, #ffffff), color-mix(in srgb, #0ed1d0 82%, #ffffff) 34%, transparent 100%),
radial-gradient(3.22px 3.22px at 12.7px 116.5px, color-mix(in srgb, #d21afd 82%, #ffffff), color-mix(in srgb, #d21afd 82%, #ffffff) 34%, transparent 100%),
@@ -8645,16 +8645,16 @@ body.start .k-leiste .feldschild::after {
radial-gradient(1.69px 1.69px at 46.6px 21.7px, color-mix(in srgb, #069511 74%, #ffffff), color-mix(in srgb, #069511 74%, #ffffff) 34%, transparent 100%),
radial-gradient(2.03px 2.03px at 64.3px 18.5px, color-mix(in srgb, #a8d8ff 74%, #ffffff), color-mix(in srgb, #a8d8ff 74%, #ffffff) 34%, transparent 100%),
radial-gradient(1.36px 1.36px at 77.2px 20.7px, color-mix(in srgb, #f4acff 74%, #ffffff), color-mix(in srgb, #f4acff 74%, #ffffff) 34%, transparent 100%),
radial-gradient(1.40px 1.40px at 3.8px 31.4px, color-mix(in srgb, #fd6401 74%, #ffffff), color-mix(in srgb, #fd6401 74%, #ffffff) 34%, transparent 100%),
radial-gradient(1.40px 1.40px at 3.8px 31.4px, color-mix(in srgb, #fe660e 74%, #ffffff), color-mix(in srgb, #fe660e 74%, #ffffff) 34%, transparent 100%),
radial-gradient(1.36px 1.36px at 17.0px 32.1px, color-mix(in srgb, #a2af10 74%, #ffffff), color-mix(in srgb, #a2af10 74%, #ffffff) 34%, transparent 100%),
radial-gradient(1.84px 1.84px at 32.1px 35.9px, color-mix(in srgb, #12b37e 74%, #ffffff), color-mix(in srgb, #12b37e 74%, #ffffff) 34%, transparent 100%),
radial-gradient(1.63px 1.63px at 48.3px 34.6px, color-mix(in srgb, #6d8cfe 74%, #ffffff), color-mix(in srgb, #6d8cfe 74%, #ffffff) 34%, transparent 100%),
radial-gradient(1.63px 1.63px at 48.3px 34.6px, color-mix(in srgb, #6c8efe 74%, #ffffff), color-mix(in srgb, #6c8efe 74%, #ffffff) 34%, transparent 100%),
radial-gradient(1.47px 1.47px at 61.7px 38.8px, color-mix(in srgb, #fe8ebe 74%, #ffffff), color-mix(in srgb, #fe8ebe 74%, #ffffff) 34%, transparent 100%),
radial-gradient(1.59px 1.59px at 73.2px 36.6px, color-mix(in srgb, #db8908 74%, #ffffff), color-mix(in srgb, #db8908 74%, #ffffff) 34%, transparent 100%),
radial-gradient(1.59px 1.59px at 73.2px 36.6px, color-mix(in srgb, #da8a06 74%, #ffffff), color-mix(in srgb, #da8a06 74%, #ffffff) 34%, transparent 100%),
radial-gradient(1.34px 1.34px at 2.9px 51.3px, color-mix(in srgb, #61ff09 74%, #ffffff), color-mix(in srgb, #61ff09 74%, #ffffff) 34%, transparent 100%),
radial-gradient(1.78px 1.78px at 17.6px 52.6px, color-mix(in srgb, #0ed1d0 74%, #ffffff), color-mix(in srgb, #0ed1d0 74%, #ffffff) 34%, transparent 100%),
radial-gradient(1.72px 1.72px at 35.6px 46.1px, color-mix(in srgb, #ab68ff 74%, #ffffff), color-mix(in srgb, #ab68ff 74%, #ffffff) 34%, transparent 100%),
radial-gradient(1.87px 1.87px at 50.9px 49.3px, color-mix(in srgb, #ff6877 74%, #ffffff), color-mix(in srgb, #ff6877 74%, #ffffff) 34%, transparent 100%),
radial-gradient(1.87px 1.87px at 50.9px 49.3px, color-mix(in srgb, #fe667e 74%, #ffffff), color-mix(in srgb, #fe667e 74%, #ffffff) 34%, transparent 100%),
radial-gradient(1.44px 1.44px at 59.6px 52.2px, color-mix(in srgb, #918a01 74%, #ffffff), color-mix(in srgb, #918a01 74%, #ffffff) 34%, transparent 100%),
radial-gradient(1.77px 1.77px at 73.3px 49.9px, color-mix(in srgb, #18b803 74%, #ffffff), color-mix(in srgb, #18b803 74%, #ffffff) 34%, transparent 100%),
radial-gradient(1.76px 1.76px at 3.5px 65.0px, color-mix(in srgb, #08b5fc 74%, #ffffff), color-mix(in srgb, #08b5fc 74%, #ffffff) 34%, transparent 100%),