Uhr: Stunden rot, Minuten silber, Sekunden babyblau -- alle drei als Reihen

Wunsch Filipe: "stunden soll rot sein, minuten schwarz/silber und die
sekunden babyblau. die punkte herum sollen eine mischung von rot
schwarz und babyblau sein. ich will auch dass die stunden und minuten
auch barren oder punkte sind und nicht so eine durchlaufende schleife."

ALLE DREI BAHNEN SIND JETZT REIHEN. Die Stunde bekommt zwoelf Balken
(ein Zifferblatt hat zwoelf), Minute und Sekunde sechzig. Die Glieder
sind verschieden lang -- Punkt (0,01 + runde Kappe), kurzer Balken
(1,7), langer Balken (5,5). Damit liest man die drei Bahnen auch dann
auseinander, wenn jemand Farben schlecht unterscheidet; Farbe allein
traegt eine Information nie.

VIER FUNDE BEIM NACHMESSEN, keiner davon war vorher sichtbar:

1. ABRUNDEN STATT RUNDEN. `Math.round` liess Minute und Stunde ab der
   HAELFTE einen Balken zu frueh aufleuchten: um 14:30 zeigte der
   Stundenring vier statt drei Balken, der Minutenring ab Sekunde 30
   einen zu viel. Die Uhr war damit die halbe Zeit ueber falsch --
   und ausgerechnet zur vollen Stunde, wo man hinsieht, richtig.
   Nachgerechnet: 10:30 -> 11, 14:30 -> 3, 23:59 -> 12, 00:00 -> 1.

2. DIE PERLENKOEPFE TRUGEN DIE ALTE ZUORDNUNG. Die drei Boegen waren
   getauscht, die drei Koepfe nicht: ein roter Kopf sass auf der
   blauen Sekundenreihe, ein silberner auf den roten Stundenbalken.
   Das sah nach einem Winkelfehler aus, obwohl alle drei auf die
   Zehntelgrad genau standen (354 / 161,9 / 343,0 bei 23:26:59,
   gemessen). Wer eine Farbe tauscht, tauscht sie an ALLEN Stellen:
   Bogen, Kopf, Schein, Kranz.

3. DER SCHEIN LAG DREIFACH UEBEREINANDER. Jeder Ring liegt dreimal im
   SVG (Schatten, Hauptlage, Kante); `.uhr__stunde` traf alle drei.
   Das rote Leuchten lief dadurch bis ueber die Ziffern, obwohl in der
   Regel nur 1,8 px stehen -- genau das Verschwommene, das Filipe nicht
   will. Jetzt `.uhr__ring > …`: nur die Hauptlage leuchtet, Schatten
   und Kante bleiben hart.

4. ZWEI TOTE FARBSCHICHTEN in heim.css (Sekunde rot / Minute blau /
   Stunde bronze). Sie wurden vom spaeteren Satz ueberschrieben und
   waren unsichtbar -- aber wer die Datei von oben liest, haelt sie
   fuer die geltende Regel und aendert die falsche Stelle. Entfernt
   statt stehengelassen: EINE Stelle entscheidet ueber eine Farbe.

Ausserdem: Der Kometenschweif ist raus (HTML und CSS, nicht
ausgeblendet). Eine Reihe zeigt ihre Richtung durch das letzte Glied;
ohne eigenes Muster haette er einen vollen Ring quer ueber die Punkte
gezogen. Der Punktkranz aussen mischt jetzt Rot, Babyblau und ein sehr
dunkles Blau im 18-Grad-Takt -- das Dunkel ist kein Loch, sonst zerfiele
der Ring aus dem Augenwinkel in zwei Haelften.

Gedaempft bleibt Pflicht: Die Sekunde laeuft dauernd und bekommt das
ruhigste Babyblau, die Stunde bewegt sich kaum und darf die kraeftigste
Farbe tragen. Die Auslieferungskennung ist auf allen 19 Seiten
hochgesetzt, sonst kaeme keine der Aenderungen an.

Geprueft: pruef-start-ansicht (alles in Ordnung), pruef-css-klassen
(alles in Ordnung), Segmentzahlen und Perlenwinkel im Browser
nachgemessen, Bildschirmfoto bei vierfacher Aufloesung.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-08 23:30:56 +02:00
co-authored by Claude Opus 5
parent e04d7afea7
commit 12c40256f7
21 changed files with 400 additions and 374 deletions
+110 -89
View File
@@ -1090,38 +1090,52 @@
transform: rotate(0deg);
transition: transform .12s cubic-bezier(.34, 1.56, .64, 1);
}
/* DER ABSTAND FOLGT DER BAHN, DIE FARBE FOLGT DER BAHN -- und beides
muss beim Farbtausch mitgehen. Am 08.09.2026 habe ich genau das
vergessen: Die drei BOEGEN waren getauscht (Stunde rot, Minute
silber, Sekunde babyblau), die drei KOEPFE trugen weiter die alte
Zuordnung. Im Bildschirmfoto sass dadurch ein roter Kopf auf der
blauen Sekundenreihe und ein silberner auf den roten Stundenbalken
-- es sah nach einem Rechenfehler bei den Winkeln aus, obwohl alle
drei auf die Zehntelgrad genau standen (354 / 161,9 / 343,0 bei
23:26:59, nachgemessen). Wer eine Farbe tauscht, tauscht sie an
ALLEN Stellen, die sie tragen -- Bogen, Kopf, Schein, Kranz. */
/* AUSSEN, BABYBLAU: der Kopf der Sekundenpunkte. Am groessten, weil er
der einzige ist, der sich sichtbar bewegt. */
.uhr__perle::before {
content: "";
position: absolute; top: 4.2%; left: 50%;
width: 7px; height: 7px; margin-left: -3.5px;
border-radius: 50%;
background:
radial-gradient(circle at 36% 32%, #fff 0%, #ff9aa2 38%, #ff2f42 72%, #8e1b26 100%);
radial-gradient(circle at 36% 32%, #fff 0%, #d8efff 34%, #7ec8f2 70%, #1d5a80 100%);
box-shadow:
0 0 6px 1px rgba(255, 70, 90, .75),
0 0 14px 3px rgba(255, 70, 90, .35),
inset 0 0 0 .5px rgba(255, 255, 255, .5);
0 0 6px 1px rgba(126, 200, 242, .75),
0 0 13px 3px rgba(110, 180, 235, .3),
inset 0 0 0 .5px rgba(255, 255, 255, .55);
}
/* Die Kappen der beiden anderen Ringe. Sie sitzen auf DEREN Bahn --
der Abstand von der Mitte ist der einzige Unterschied, alles andere
erbt von der Perle. Die Farbe folgt dem Ring: Minute babyblau,
Stunde poliertes Silber. */
/* MITTE, SILBER: der Kopf der Minutenbalken. Poliertes Metall, kein
Licht -- er ist der Bezug, an dem man die anderen beiden misst. */
.uhr__perle--minute::before {
top: 12.6%;
width: 6px; height: 6px; margin-left: -3px;
background: radial-gradient(circle at 36% 32%, #fff 0%, #cfe9ff 36%, #4aa8f0 72%, #17527f 100%);
box-shadow:
0 0 5px 1px rgba(90, 180, 255, .7),
inset 0 0 0 .5px rgba(255, 255, 255, .55);
}
.uhr__perle--stunde::before {
top: 21.4%;
width: 5.4px; height: 5.4px; margin-left: -2.7px;
background: radial-gradient(circle at 34% 30%, #ffffff 0%, #dfe8f2 34%, #8b98a8 70%, #3d4653 100%);
background: radial-gradient(circle at 34% 30%, #ffffff 0%, #e6edf6 34%, #97a4b4 70%, #414b58 100%);
box-shadow:
0 0 4px 1px rgba(220, 235, 255, .45),
inset 0 0 0 .5px rgba(255, 255, 255, .6);
}
/* INNEN, ROT: der Kopf der Stundenbalken. Der kleinste Punkt in der
kraeftigsten Farbe -- er bewegt sich am wenigsten und darf deshalb
auffallen, ohne zu stoeren. */
.uhr__perle--stunde::before {
top: 21.4%;
width: 5.4px; height: 5.4px; margin-left: -2.7px;
background: radial-gradient(circle at 36% 32%, #fff 0%, #ffb0b6 38%, #ff4257 72%, #7e1a24 100%);
box-shadow:
0 0 5px 1px rgba(255, 80, 95, .6),
inset 0 0 0 .5px rgba(255, 255, 255, .5);
}
@media (prefers-reduced-motion: reduce) {
/* Kein Nachfedern -- der Sprung bleibt, das Schwingen geht. */
@@ -1238,22 +1252,23 @@
endet dann nie dort, wo er soll. U = 2 * pi * r, ausgerechnet und
nicht geschaetzt. */
.uhr__sekunde {
stroke: url(#uhr-rot);
stroke: url(#uhr-sekunde-farbe);
stroke-width: 2.6;
stroke-dasharray: 285.88; /* r = 45.5 */
stroke-dashoffset: 285.88;
}
/* MITTE: die Minute in Blau. */
/* MITTE: die MINUTE in Schwarzsilber -- der ruhige Bezug zwischen
den beiden farbigen Bahnen. */
.uhr__minute {
stroke: url(#uhr-blau);
stroke: url(#uhr-minute-farbe);
stroke-width: 3;
stroke-dasharray: 241.90; /* r = 38.5 */
stroke-dashoffset: 241.90;
}
/* INNEN: die STUNDE in Schwarzsilber. Am breitesten und am ruhigsten --
/* INNEN: die STUNDE in Rot. Am breitesten und am ruhigsten --
sie bewegt sich in fuenf Minuten um ein halbes Grad. */
.uhr__stunde {
stroke: url(#uhr-silber);
stroke: url(#uhr-stunde-farbe);
stroke-width: 3.6;
stroke-dasharray: 197.92; /* r = 31.5 */
stroke-dashoffset: 197.92;
@@ -1616,43 +1631,15 @@
Schein liegt deshalb bei 45 bis 55 Prozent Deckkraft und wird NICHT
animiert -- ein pulsierendes Leuchten am Bildrand ist genau das, was
die Hausregel verbietet. */
/* DIE SEKUNDE GLUEHT SCHWAECHER ALS DIE ANDEREN BEIDEN, und das ist
Absicht: Sie ist die laengste Bahn, die hellste Farbe und die
einzige, die sich sichtbar bewegt. Mit demselben Schein wie Minute
und Stunde zog sie im Bildschirmfoto den ganzen Blick auf sich --
ein roter Reifen, neben dem die Uhrzeit selbst zurueckstand.
Nachgesehen, nicht gerechnet. */
.uhr__sekunde {
stroke-width: 3;
filter:
drop-shadow(0 0 1.5px rgba(255, 118, 132, .8))
drop-shadow(0 0 6px rgba(255, 70, 90, .3));
}
.uhr__minute {
stroke-width: 3.4;
filter:
drop-shadow(0 0 2px rgba(120, 200, 255, .95))
drop-shadow(0 0 8px rgba(70, 165, 245, .48));
}
.uhr__stunde {
stroke-width: 4;
filter:
drop-shadow(0 0 2px rgba(255, 214, 160, .9))
drop-shadow(0 0 9px rgba(214, 154, 82, .45));
}
/* Die Perle am Ende jeder Bahn ist die Spitze -- dort schaut man hin.
Sie bekommt denselben Schein wie ihre Bahn, nur staerker, und einen
weissen Kern: Das ist der Unterschied zwischen einem farbigen Punkt
und einem Licht. */
.uhr__perle::before {
box-shadow:
0 0 0 1px rgba(255, 255, 255, .5),
0 0 6px 1px currentColor,
0 0 14px 2px currentColor;
}
.uhr__perle--minute::before { color: rgba(99, 184, 245, .85); }
.uhr__perle--stunde::before { color: rgba(226, 176, 108, .8); }
/* Die Strichbreiten und Scheine der drei Bahnen stehen NICHT hier,
sondern gesammelt am Dateiende unter "DIE DREI FARBEN, NEU VERTEILT".
Hier stand bis zum 08.09.2026 ein zweiter, vollstaendiger Satz davon
(Sekunde rot, Minute blau, Stunde bronze). Er wurde vom spaeteren
Satz ueberschrieben und war damit unsichtbar -- aber wer die Datei
von oben liest, haelt ihn fuer die geltende Regel und aendert die
falsche Stelle. Genau das ist mir heute schon einmal passiert
(zwei Groessenregeln 3600 Zeilen auseinander). Deshalb entfernt
statt stehengelassen: EINE Stelle entscheidet ueber eine Farbe. */
@media (prefers-reduced-motion: reduce) {
/* Kein Leuchten ohne Not: Wer weniger Bewegung will, will meist auch
@@ -1696,23 +1683,6 @@
dadurch exakt eine Vierteldrehung neben ihren Boegen -- im Bild oben
links, waehrend die Boegen oben rechts endeten. Die Rechnung war
richtig, die Drehung eine zu viel. */
.uhr__spur-bahn {
fill: none;
stroke-linecap: round;
opacity: .95;
}
.uhr__spur-bahn[data-spur="sekunde"] {
stroke: #ffd2d6; stroke-width: 3;
filter: drop-shadow(0 0 3px rgba(255, 120, 134, .85));
}
.uhr__spur-bahn[data-spur="minute"] {
stroke: #d8efff; stroke-width: 3.4;
filter: drop-shadow(0 0 3px rgba(130, 205, 255, .8));
}
.uhr__spur-bahn[data-spur="stunde"] {
stroke: #ffe9c9; stroke-width: 4;
filter: drop-shadow(0 0 3px rgba(233, 190, 130, .75));
}
/* DIE KOEPFE GLEITEN, STATT ZU SPRINGEN.
@@ -1882,19 +1852,7 @@
letzten Punkt, und den setzt die Perle. */
/* ---- 4. Schaerfe statt Nebel ------------------------------------- */
.uhr__sekunde {
filter: drop-shadow(0 0 1.5px rgba(255, 92, 108, .9));
}
.uhr__minute {
filter: drop-shadow(0 0 1.5px rgba(120, 200, 255, .9));
}
.uhr__stunde {
filter: drop-shadow(0 0 1.5px rgba(255, 205, 145, .85));
}
.uhr__spur-bahn[data-spur="minute"],
.uhr__spur-bahn[data-spur="stunde"] {
filter: drop-shadow(0 0 1.5px rgba(255, 255, 255, .5));
}
/* (Die Scheine selbst: siehe Dateiende, ein Satz fuer alle drei.) */
/* Auch die Perlen: harte Kante, enger Schein. Ein Lichtpunkt ist
scharf -- was leuchtet, hat einen Rand. */
.uhr__perle::before {
@@ -1902,3 +1860,66 @@
0 0 0 1px rgba(255, 255, 255, .75),
0 0 4px 0 currentColor;
}
/* ===================================================================
DIE DREI FARBEN, NEU VERTEILT (08.09.2026)
Filipe: "stunden soll rot sein, minuten schwarz/silber und die
sekunden babyblau. die punkte herum sollen eine mischung von rot
schwarz und babyblau sein."
Die Zuordnung ist nicht beliebig, sie folgt der Geschwindigkeit:
Die SEKUNDE laeuft dauernd und bekommt das ruhigste Babyblau --
staendige Bewegung in Signalrot ermuedet. Die STUNDE bewegt sich
kaum und darf deshalb die kraeftigste Farbe tragen. Die MINUTE
dazwischen in Schwarzsilber: Sie ist der Bezug, an dem man die
beiden anderen misst, und Metall draengt sich nicht vor.
Die Glieder sind ausserdem verschieden LANG -- Punkt, kurzer Balken,
langer Balken. Damit liest man die drei Bahnen auch dann
auseinander, wenn jemand Farben schlecht unterscheidet. Farbe allein
traegt eine Information nie. */
/* DER SCHEIN GEHOERT AN EINE LAGE, NICHT AN DREI.
Jeder Ring liegt dreifach im SVG: Schattenlage (0,55 nach unten),
Hauptlage, Kantenlage (0,4 nach oben). `.uhr__stunde` trifft alle
drei -- der Schein wurde damit DREIMAL uebereinander gerechnet. Im
Bildschirmfoto lief das rote Leuchten deshalb bis ueber die Ziffern
und liess die ganze Uhr weich aussehen, obwohl in der Regel nur
1,8 px stehen. Genau das, was Filipe nicht will ("es soll nichts
verschwommen aussehen ... im gegenteil, richtig scharf").
Mit `>` bekommt nur die Hauptlage den Schein. Schatten und Kante
bleiben hart -- sie sind Koerper, kein Licht. Das ist derselbe
Gedanke wie im Kommentar oben ("KEIN Weichzeichner, nirgends: Die
Tiefe entsteht aus dem Versatz"), nur war er an dieser Stelle nicht
durchgehalten. */
.uhr__ring > .uhr__sekunde { filter: drop-shadow(0 0 1.4px rgba(126, 200, 242, .85)); }
.uhr__ring > .uhr__minute { filter: drop-shadow(0 0 1.2px rgba(220, 232, 246, .6)); }
.uhr__ring > .uhr__stunde { filter: drop-shadow(0 0 1.4px rgba(255, 92, 104, .8)); }
.uhr__schatten .uhr__sekunde, .uhr__schatten .uhr__minute, .uhr__schatten .uhr__stunde,
.uhr__kante .uhr__sekunde, .uhr__kante .uhr__minute, .uhr__kante .uhr__stunde { filter: none; }
/* Die Koepfe tragen die Farbe ihrer Bahn -- sonst zeigte ein blauer
Punkt auf eine rote Reihe. */
.uhr__perle::before { color: rgba(126, 200, 242, .9); }
.uhr__perle--minute::before { color: rgba(226, 236, 248, .85); }
.uhr__perle--stunde::before { color: rgba(255, 92, 104, .9); }
/* ---- Der Punktkranz: rot, schwarz, babyblau im Wechsel -----------
Drei Farben in einem `repeating-conic-gradient`: je 6 Grad ein
Punkt, dazwischen die Luecke. Die Reihenfolge Rot - Blau - Dunkel
wiederholt sich alle 18 Grad, also zwanzigmal auf dem Ring.
Das Dunkel ist kein Loch, sondern ein sehr dunkles Blau: Ein echter
Zwischenraum haette den Kranz in zwei Haelften zerfallen lassen,
sobald man ihn aus dem Augenwinkel sieht. So bleibt der Ring ein
Ring und hat trotzdem drei Toene. */
.uhr__leds {
background: repeating-conic-gradient(from -1.5deg,
rgba(255, 90, 102, .70) 0deg 3deg, transparent 3deg 6deg,
rgba(126, 200, 242, .70) 6deg 9deg, transparent 9deg 12deg,
rgba(120, 150, 185, .34) 12deg 15deg, transparent 15deg 18deg);
filter: drop-shadow(0 0 2px rgba(150, 170, 210, .4));
}