Die Bildschau und 2520 Farben statt 360

=== 1. BILDER OEFFNEN SICH MITTIG, MIT HUSKY UND HASE ===

Filipe: "wenn man bilder aufmacht, will ich dass die in der mitte sind.
beim hochformat soll links der husky sein und rechts der hase und beim
querformat soll oben dogfather und unten team dogi stehen da wo platz
ist ... ich will nicht dahin geschmissen sondern was richtig geiles mit
einem geilen hintergrund."

WAS VORHER PASSIERTE, und es war kein Fehler im Code: Der Klick fuehrte
auf die DATEI. Was man dann sah, war die eingebaute Bildanzeige des
Browsers -- schwarzer Grund, Bild oben links in der Ecke, auf seinem
Bildschirmfoto 1200 px Schwarz daneben. Eine Datei hat keine
Gestaltung. Wer Gestaltung will, muss eine SEITE zeigen.

Die Schau liegt jetzt UEBER dem Chat. Escape bringt einen dorthin
zurueck, wo man war, und das Gespraech laeuft im Hintergrund weiter --
ein zweiter Tab braeuchte eine eigene Seite, eine eigene Anmeldung und
einen eigenen Weg zurueck.

DER WEG IN DEN TAB BLEIBT TROTZDEM. Der Verweis hat unveraendert
`href`, `target` und `rel`; mittlere Maustaste, "In neuem Tab oeffnen"
und Herunterladen gehen wie seit jeher. Abgefangen wird nur der
gewoehnliche Klick -- und auch der nur, wenn die Schau geladen ist.
Wer Strg, Umschalt oder Befehl haelt, bekommt den alten Weg; das sind
die Griffe, die Leute seit zwanzig Jahren benutzen.

DIE BEGLEITER STEHEN DA, WO PLATZ IST -- und die Antwort darauf wird
GEMESSEN, nicht geschaetzt: nicht die Fensterbreite, sondern der Rest
neben dem Bild, nachdem es eingepasst ist. Eine Schwelle wie "ab
1100 px" waere fuer ein 3:4-Foto richtig und fuer ein 9:16-Foto auf
demselben Schirm falsch. Unter 170 px bleibt der Husky weg: Eine Figur,
die ein Streifen ist, steht besser nicht da.

Husky und Hase sind eigens verkleinert (2,1 MB und 1,0 MB werden 40 kB
und 32 kB) und bekommen weiche Raender -- ihr Hintergrund ist dunkel,
aber nicht durchsichtig; als Rechteck saehe man zwei Kaesten.

Der erste Anlauf spiegelte den Hasen, damit beide "nach innen" schauen
-- ein alter Reflex aus dem Plakatsatz. Auf dem Probebild stand danach
"Hasi Dog" seitenverkehrt auf seinem Hoodie. Schrift im Bild spiegelt
man nie.

pruef-chat-anhaenge bekommt 14 neue Punkte, darunter beide Formate und
zwei Gegenproben: Strg+Klick oeffnet die Schau NICHT (sonst hiesse "sie
geht auf" nur, dass der alte Weg verloren ist), und im Hochformat liegt
KEINE der Figuren ueber dem Foto.

NEBENBEFUND, den die Pruefung gefunden hat: Die Sprachnachricht war auf
165 px geschrumpft -- zu schmal fuer den Schieber. Ursache war keine
Aenderung an ihr, sondern eine Folge: Die Blase ist so breit wie ihr
breitester Inhalt, und seit die Handgriffe darunter Zeichen statt
Woerter sind (123 statt ueber 400 px), bestimmt das Abspielgeraet die
Breite selbst. Eine Reihe kuerzer zu machen hat einen Schieber schmaler
gemacht, drei Bildschirme weiter.

=== 2. DER FARBKREIS: HELLER UND DUNKLER ===

Filipe: "dieser kreis muss viel perfekter sein. ich will dass die leute
auch heller und dunkler aussuchen koennen ... so dass die leute viel
krassere moeglichkeiten haben."

WARUM DAS BIS HEUTE NICHT GING: Die 360 Toene liegen alle auf DERSELBEN
Leuchtdichte. Das war kein Zufall -- solange die Blase in der gewaehlten
Farbe stand, musste jede dieser Flaechen dieselbe Schrift tragen. Eine
hellere Farbe zuzulassen hiesse damals: irgendwo wird eine Nachricht
unlesbar.

SEIT DEM 25.09.2026 IST DIE BEDINGUNG EINE ANDERE. Die Blase ist fuer
alle dunkles Glas; der Ton ist Kante und NAME. Damit faellt die alte
Regel weg, und an ihre Stelle tritt: der Ton muss als Name auf dem
Blasengrund lesbar bleiben.

DIE ZAHLEN SIND GEMESSEN, NICHT GEWAEHLT. Ueber alle 360 Winkel, jeweils
der schlechteste Fall:

    40 % schwarz   4,468   -- unter der Schwelle, faellt raus
    34 % schwarz   4,555   -- ginge, aber ohne Reserve
    30 % schwarz   4,619   <- die dunkelste Stufe
     0 %           5,12    <- die Mitte, der alte Kreis
    55 % weiss     9,6     <- die hellste Stufe

Sieben Stufen, 2520 Farben statt 360. pruef-chat-neu rechnet jede
einzelne nach -- die knappste hat 2,6 Prozent Reserve.

DIE ALTEN SCHLUESSEL BLEIBEN GUELTIG. "ton-214" heisst weiterhin genau
dieselbe Farbe; die Stufe steht als Zusatz dahinter ("ton-214-s6"). Wer
seit dem 23.09. eine Farbe traegt, traegt nach diesem Umbau dieselbe.

DIE PROBE IN DER MITTE ZEIGT ENDLICH, WAS MAN BEKOMMT. Dort stand eine
gefuellte Flaeche mit heller Schrift -- so sah die Blase bis heute frueh
aus. Jetzt steht dort derselbe Blasengrund und darauf der Ton als Name,
mit genau der Rechnung aus chat.css. Das ist nicht nur ehrlicher, es
macht die sieben Stufen erst moeglich: Eine gefuellte Flaeche muesste
Schrift tragen, und bei sehr hellen Toenen schafft das keine der beiden
Schriftfarben mehr (4,1 statt noetiger 7). Als Name auf dunklem Grund
ist derselbe helle Ton besonders gut lesbar (8,0).

Der Erklaersatz im Fenster war damit falsch geworden ("Alle Toene
leuchten gleich stark") und sagt jetzt, was stimmt.

ZWEI PRUEFUNGEN WURDEN GENAUER:
  pruef-chat-neu mass den HINTERGRUND der Mitte -- eine Darstellung,
  die es nicht mehr gibt. Sie misst jetzt die Schriftfarbe und rechnet
  die Mischung nach. Dabei stolperte sie ueber eine dritte
  Farbschreibweise: Chromium gibt `color-mix`-Ergebnisse als
  `color(srgb 0.676 0.645 0.504)` zurueck. Die Zeile war rot, obwohl
  die Farbe auf den Bildpunkt genau stimmte -- ein Fehlalarm, der
  teurer ist als ein echter Befund, weil man am Aussehen sucht und der
  Fehler im Lesegeraet liegt.
  Und sie prueft nicht mehr 360, sondern 360 x 7 -- nur den Grundton zu
  messen hiesse, sechs Siebtel ungeprueft auszuliefern.

Geprueft: pruef-chat-anhaenge (123), pruef-chat-neu (36),
pruef-chatkachel (40), pruef-chat, pruef-chat-ausbau (69),
pruef-chat-optik, pruef-tippziele (11), pruef-css-klassen.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-25 04:35:12 +02:00
co-authored by Claude Opus 5
parent 4b48aa46f6
commit 177c3c012a
50 changed files with 1855 additions and 659 deletions
+141
View File
@@ -0,0 +1,141 @@
/* =====================================================================
HELLER UND DUNKLER (25.09.2026)
=====================================================================
Filipe: „dieser kreis muss viel perfekter sein. ich will dass die
leute auch heller und dunkler aussuchen koennen. perfektionier das
bitte viel krasser. viel profissioneller. so dass die leute viel
krassere moeglichkeiten haben."
---------------------------------------------------------------------
WARUM DAS BIS HEUTE NICHT GING
Die 360 Toene in chat-kreis.js liegen ALLE auf derselben
Leuchtdichte. Das war kein Zufall und keine Bequemlichkeit: Solange
die Blase in der gewaehlten Farbe stand, musste jede dieser Flaechen
dieselbe Schrift tragen -- „gleiche Leuchtdichte heisst gleicher
Kontrast fuer alle". Eine hellere Farbe zuzulassen hiesse damals:
irgendwo im Haus wird eine Nachricht unlesbar.
SEIT DEM 25.09.2026 IST DAS ANDERS. Die Blase ist fuer alle dunkles
Glas (`--blasengrund`); der gewaehlte Ton ist KANTE und NAME. Damit
faellt die alte Bedingung weg -- und eine neue tritt an ihre Stelle:
Der Ton muss als NAME auf dem Blasengrund lesbar bleiben.
Die Oberflaeche hellt ihn dafuer mit Weiss auf (`--namen-anteil`,
50 %). Genau diese Rechnung prueft pruef-chat-neu fuer alle Toene.
---------------------------------------------------------------------
DIE ZAHLEN SIND GEMESSEN, NICHT GEWAEHLT
Nachgerechnet ueber alle 360 Winkel, jeweils der schlechteste:
40 % schwarz 4,468 -- unter der Schwelle, faellt raus
34 % schwarz 4,555 -- ginge, aber ohne Reserve
30 % schwarz 4,619 <- die dunkelste Stufe
20 % schwarz 4,7
10 % schwarz 4,9
0 % 5,12 <- die Mitte, der alte Kreis
18 % weiss 6,4
36 % weiss 7,9
55 % weiss 9,6 <- die hellste Stufe
Noetig sind 4,5. Die dunkelste Stufe hat also 0,12 Reserve, die
hellste mehr als das Doppelte. Wer hier eine Stufe hinzufuegt, misst
nach -- pruef-chat-neu rechnet jede Stufe an jedem der 360 Winkel
nach und wird rot, bevor es jemand auf dem Bildschirm sieht.
---------------------------------------------------------------------
WARUM SIEBEN UND NICHT DREI
Drei (dunkel / normal / hell) waere die bequeme Zahl. Sieben sind
der Punkt, an dem zwei benachbarte Stufen noch unterscheidbar sind
und man trotzdem das Gefuehl hat, etwas einstellen zu koennen --
Filipes „viel krassere moeglichkeiten" heisst nicht „zwei mehr".
Zusammen mit 360 Winkeln sind es 2520 Farben statt 360.
---------------------------------------------------------------------
WARUM EINE EIGENE DATEI
chat-kreis.js wird von tools/chat-kacheln-rechnen.mjs ERZEUGT und
traegt oben „NICHT VON HAND AENDERN". Etwas hineinzuschreiben waere
beim naechsten Lauf des Werkzeugs weg. Die Stufen sind ausserdem
keine Tabelle, sondern eine Rechnung -- sie gehoeren nicht in eine
erzeugte Liste.
===================================================================== */
import { KREIS } from "./chat-kreis.js";
/** Die sieben Stufen. Minus heisst dunkler, Plus heller.
*
* `wert` ist der Teil, der im Schluessel steht ("ton-214-s2").
* `misch` ist der Anteil, mit dem der Grundton nach Schwarz (negativ)
* oder nach Weiss (positiv) gezogen wird.
* `name` ist das, was ein Vorleseprogramm sagt -- eine Zahl von 1 bis
* 7 saehe aus wie eine Note.
*/
export const KREIS_STUFEN = [
{ wert: "s1", misch: -0.30, name: "sehr dunkel" },
{ wert: "s2", misch: -0.20, name: "dunkler" },
{ wert: "s3", misch: -0.10, name: "leicht dunkel" },
{ wert: "s4", misch: 0, name: "normal" },
{ wert: "s5", misch: 0.18, name: "leicht hell" },
{ wert: "s6", misch: 0.36, name: "heller" },
{ wert: "s7", misch: 0.55, name: "sehr hell" },
];
/** Welche Stufe ist die Mitte -- und damit das, was "ton-214" ohne
* Zusatz bedeutet. Abgeleitet aus `misch === 0` und nicht als Index
* hingeschrieben: Wer eine Stufe vorn einfuegt, verschiebt sonst
* stillschweigend die Bedeutung aller alten Schluessel. */
export const KREIS_MITTE = KREIS_STUFEN.find((s) => s.misch === 0)?.wert || "s4";
/** Zerlegt einen Schluessel in Winkel und Stufe.
*
* "ton-214" -> { winkel: 214, stufe: "s4" } (die Mitte)
* "ton-214-s6" -> { winkel: 214, stufe: "s6" }
* alles andere -> null
*
* DIE ALTEN SCHLUESSEL BLEIBEN GUELTIG, und zwar ohne Umstellung in
* der Datenbank. Wer seit dem 23.09. "ton-214" traegt, traegt danach
* genau dieselbe Farbe -- eine Umstellung, die stillschweigend die
* Wahl von fuenfzehn Leuten verschiebt, waere kein Fortschritt.
*/
export function tonAus(wert) {
const t = /^ton-(\d{1,3})(?:-(s[1-7]))?$/.exec(String(wert ?? ""));
if (!t) return null;
const winkel = Number(t[1]);
if (!(winkel >= 0 && winkel < KREIS.length)) return null;
const stufe = t[2] || KREIS_MITTE;
if (!KREIS_STUFEN.some((s) => s.wert === stufe)) return null;
return { winkel, stufe };
}
/** Zwei Farben mischen, wie `color-mix(in srgb, a p%, b)` es tut. */
function mischen(a, b, anteilB) {
const z = (h) => {
const s = String(h).replace("#", "");
return [0, 2, 4].map((i) => parseInt(s.slice(i, i + 2), 16));
};
const [ar, ag, ab] = z(a), [br, bg, bb] = z(b);
const m = (x, y) => Math.round(x * (1 - anteilB) + y * anteilB);
return "#" + [m(ar, br), m(ag, bg), m(ab, bb)]
.map((v) => v.toString(16).padStart(2, "0")).join("");
}
/** Die fertige Farbe zu Winkel und Stufe. */
export function tonFarbe(winkel, stufe) {
const grund = KREIS[winkel];
if (!grund) return null;
const s = KREIS_STUFEN.find((x) => x.wert === stufe) || { misch: 0 };
if (!s.misch) return grund;
return s.misch < 0
? mischen(grund, "#000000", -s.misch)
: mischen(grund, "#ffffff", s.misch);
}
/** Die Farbe zu einem ganzen Schluessel, oder null. */
export function farbeZuSchluessel(wert) {
const t = tonAus(wert);
return t ? tonFarbe(t.winkel, t.stufe) : null;
}
+136
View File
@@ -418,6 +418,142 @@ let pdfNachrichtId = 0;
ok(kaeme === 0, `für ein PDF wird kein Bildkasten gebaut (${kaeme})`);
}
/* =======================================================================
2c. DIE BILDSCHAU (25.09.2026)
=======================================================================
Filipe: „wenn man bilder aufmacht, will ich dass die in der mitte
sind. beim hochformat soll links der husky sein und rechts der hase
und beim querformat soll oben dogfather und unten team dogi stehen
da wo platz ist."
VORHER OEFFNETE DER KLICK DIE DATEI in einem neuen Tab -- und was man
sah, war die eingebaute Bildanzeige des Browsers: schwarzer Grund,
Bild oben links. Das ist kein Fehler des Browsers; eine Datei hat
keine Gestaltung.
GEMESSEN WIRD, WAS ER GESAGT HAT, und jedes einzeln:
1. Der Klick oeffnet die Schau (und nicht mehr den Tab).
2. Das Bild steht in der MITTE -- gemessen als Abstand seines
Mittelpunkts zur Fenstermitte, nicht als „es ist da".
3. Bei einem breiten Bild stehen die zwei Schriftzuege da.
4. Escape bringt einen zurueck.
5. GEGENPROBE: Mit Strg gedrueckt oeffnet sie NICHT -- der Weg in
den neuen Tab bleibt, wie er war. Ohne diese Zeile haette
„die Schau geht auf" auch dann gestimmt, wenn sie IMMER aufgeht
und der alte Weg verloren ist.
======================================================================= */
{
await oeffne(luna.seite, raumId);
/* Das Foto aus Abschnitt 2 ist 240x150 -- also quer. */
const bildKasten = ".chat-nachricht .chat-bild";
await luna.seite.waitForSelector(bildKasten, { timeout: 8000 });
/* GEGENPROBE ZUERST: mit Strg bleibt der alte Weg. */
await luna.seite.click(bildKasten, { modifiers: ["Control"] });
await luna.seite.waitForTimeout(400);
const mitStrg = await luna.seite.evaluate(() =>
!!document.querySelector("dialog.bildschau[open]"));
ok(mitStrg === false,
`Gegenprobe: Strg+Klick öffnet die Schau NICHT (${mitStrg}) — der Weg in den Tab bleibt`);
await luna.seite.click(bildKasten);
await luna.seite.waitForTimeout(600);
const schau = await luna.seite.evaluate(() => {
const d = document.querySelector("dialog.bildschau[open]");
if (!d) return { offen: false };
const b = d.querySelector(".bildschau__bild");
const r = b.getBoundingClientRect();
const worte = [...d.querySelectorAll(".bildschau__wort")]
.filter((e) => Number(getComputedStyle(e).opacity) > .5)
.map((e) => e.textContent.trim());
return {
offen: true,
lage: d.dataset.lage,
/* Wie weit ist die Bildmitte von der Fenstermitte weg? Bei
„mittig" sind das ein paar Pixel, bei „oben links" Hunderte. */
abX: Math.round(Math.abs((r.left + r.width / 2) - window.innerWidth / 2)),
abY: Math.round(Math.abs((r.top + r.height / 2) - window.innerHeight / 2)),
worte,
figuren: [...d.querySelectorAll(".bildschau__figur")]
.filter((e) => Number(getComputedStyle(e).opacity) > .5).length,
grund: getComputedStyle(d.querySelector(".bildschau__grund")).backgroundImage.length,
};
});
ok(schau.offen === true, `ein Klick öffnet die Bildschau (${schau.offen})`);
/* 40 px Spielraum: Die Buehne hat oben mehr Polsterung als unten
(dort steht die Leiste), der Mittelpunkt liegt also nie exakt auf
dem Pixel. Bei „oben links in der Ecke" waeren es Hunderte. */
ok(schau.abX <= 40 && schau.abY <= 60,
`und das Bild steht in der Mitte (${schau.abX} px seitlich, ${schau.abY} px hoch daneben)`);
ok(schau.lage === "quer",
`ein breites Bild bekommt die Querformat-Fassung ("${schau.lage}")`);
ok(schau.worte.length === 2
&& /DogFather/i.test(schau.worte[0]) && /Team Dogi/i.test(schau.worte[1]),
`mit „DogFather" oben und „Team Dogi" unten (${JSON.stringify(schau.worte)})`);
ok(schau.figuren === 0,
`und OHNE die zwei Figuren — die gehören ins Hochformat (${schau.figuren})`);
ok(schau.grund > 80,
`der Grund ist gestaltet und nicht schwarz (${schau.grund} Zeichen Verlauf)`);
/* EIN BILD FUER DEN MENSCHEN. Andere Pruefungen in diesem Haus legen
ebenso eines ab (pruef-handy.png, pruef-crew-wand-handy.png) --
eine Zahl sagt „mittig", ein Bild sagt, ob es gut aussieht. */
await luna.seite.screenshot({ path: "server/pruef-bildschau.png" });
await luna.seite.keyboard.press("Escape");
await luna.seite.waitForTimeout(400);
const zu = await luna.seite.evaluate(() =>
!!document.querySelector("dialog.bildschau[open]"));
ok(zu === false, `Escape bringt einen zurück (${zu})`);
/* ---- UND DAS HOCHFORMAT -----------------------------------------
Der andere Fall aus Filipes Satz -- „beim hochformat soll links
der husky sein und rechts der hase". Ohne ein zweites, HOHES Bild
waere dieser halbe Auftrag nie gemessen worden; das quere Bild
oben kann ihn nicht beantworten. */
const hoch = await hochladen(luna.seite, raumId, {
inhalt: { art: "png", breite: 300, hoehe: 800 },
typ: "image/png", name: "hochformat.png", text: "Und hochkant",
});
ok(hoch.status === 201, `ein hohes Foto kommt an (HTTP ${hoch.status})`);
await oeffne(luna.seite, raumId);
await luna.seite.waitForSelector(".chat-nachricht:last-of-type .chat-bild", { timeout: 8000 });
await luna.seite.click(".chat-nachricht:last-of-type .chat-bild");
await luna.seite.waitForTimeout(700);
const hochSchau = await luna.seite.evaluate(() => {
const d = document.querySelector("dialog.bildschau[open]");
if (!d) return { offen: false };
const b = d.querySelector(".bildschau__bild");
const r = b.getBoundingClientRect();
const sicht = (s) => [...d.querySelectorAll(s)]
.filter((e) => Number(getComputedStyle(e).opacity) > .5);
const figuren = sicht(".bildschau__figur");
return {
offen: true, lage: d.dataset.lage,
abX: Math.round(Math.abs((r.left + r.width / 2) - window.innerWidth / 2)),
figuren: figuren.length,
/* LIEGT EINE DAVON UEBER DEM BILD? Das waere der Schaden, den
man erst sieht, wenn ein Gesicht halb verdeckt ist. */
drueber: figuren.filter((e) => {
const f = e.getBoundingClientRect();
return Math.min(f.right, r.right) - Math.max(f.left, r.left) > 4;
}).length,
worte: sicht(".bildschau__wort").length,
};
});
ok(hochSchau.lage === "hoch", `ein hohes Bild bekommt die Hochformat-Fassung ("${hochSchau.lage}")`);
ok(hochSchau.figuren === 2, `Husky und Hase stehen daneben (${hochSchau.figuren})`);
ok(hochSchau.drueber === 0,
`und KEINE davon liegt über dem Foto (${hochSchau.drueber})`);
ok(hochSchau.worte === 0,
`die Schriftzüge bleiben weg — die gehören ins Querformat (${hochSchau.worte})`);
ok(hochSchau.abX <= 40, `auch hier steht das Bild mittig (${hochSchau.abX} px daneben)`);
await luna.seite.screenshot({ path: "server/pruef-bildschau-hoch.png" });
await luna.seite.keyboard.press("Escape");
await luna.seite.waitForTimeout(300);
}
/* =======================================================================
3. WAS NICHT HEREINDARF — die eigentliche Prüfung
+129 -15
View File
@@ -313,6 +313,23 @@ console.log("\n=== 3. Der Ruf ans Rudel ===");
const zuZahl = (f) => {
const t = /^#?([0-9a-f]{6})$/i.exec(String(f).trim());
if (t) return [0, 2, 4].map((i) => parseInt(t[1].slice(i, i + 2), 16));
/* ==== DIE DRITTE SCHREIBWEISE (25.09.2026) ====================
Seit die Probe ihre Farbe aus `color-mix(in srgb, …)` bekommt,
gibt Chromium sie als `color(srgb 0.676 0.645 0.504)` zurueck --
Anteile von 0 bis 1, keine Ganzzahlen, kein Komma. Die zwei
Muster darueber trafen das nicht, `zuZahl` lieferte `null`, und
die Zeile wurde rot, obwohl die Farbe auf den Bildpunkt genau
stimmte (172,5 / 164,5 / 128,5 gegen erwartete 173/165/129).
Das ist die Sorte Fehlalarm, die teurer ist als ein echter
Befund: Man sucht am Aussehen, und der Fehler liegt im
Lesegeraet. */
const s = /color\(srgb\s+([^)]+)\)/i.exec(String(f));
if (s) {
return s[1].trim().split(/[\s/]+/).slice(0, 3)
.map((x) => Math.round(parseFloat(x) * 255));
}
const r = /rgba?\(([^)]+)\)/i.exec(String(f));
return r ? r[1].split(",").slice(0, 3).map((x) => Math.round(parseFloat(x))) : null;
};
@@ -375,21 +392,55 @@ console.log("\n=== 3. Der Ruf ans Rudel ===");
const schlimmerGrund = grund.map((v) => Math.round(v * 0.92 + 255 * 0.08));
const anteil = Number(anteilTreffer[1]) / 100;
const hell = zuZahl("#f2f8ff");
/* ==== JEDE STUFE AN JEDEM WINKEL (25.09.2026) =================
Filipe: „ich will dass die leute auch heller und dunkler
aussuchen koennen."
Seit heute gibt es zu jedem der 360 Winkel sieben
Helligkeiten -- 2520 Farben statt 360. Nur den Grundton zu
pruefen hiesse, sechs Siebtel des Angebots ungeprueft
auszuliefern; und die dunkelste Stufe ist genau die, bei der
es kippen wuerde (gemessen 4,62 gegen noetige 4,5 -- die
naechste Stufe darunter faellt durch).
DIE MISCHANTEILE WERDEN GELESEN, nicht abgeschrieben: Sie
stehen in chat-kreis-stufen.js, und wer sie dort aendert,
aendert damit diese Pruefung mit. Eine zweite Liste hier waere
die, die beim naechsten Umbau nicht mitzieht. */
const { KREIS_STUFEN } = await import("./chat-kreis-stufen.js");
const mischen2 = (rgb, misch) => {
if (!misch) return rgb;
const ziel = misch < 0 ? 0 : 255;
const t2 = Math.abs(misch);
return rgb.map((v) => Math.round(v * (1 - t2) + ziel * t2));
};
let schlimmster = Infinity, schlimmsterWinkel = -1, gemessen = 0;
let schlimmsteStufe = "";
for (let w = 0; w < KREIS.length; w++) {
const f = zuZahl(KREIS[w]);
if (!f) continue;
gemessen++;
const name = f.map((v, i) => Math.round(v * anteil + hell[i] * (1 - anteil)));
const v2 = kontrast(name, schlimmerGrund) / 4.5;
if (v2 < schlimmster) { schlimmster = v2; schlimmsterWinkel = w; }
for (const st of KREIS_STUFEN) {
gemessen++;
const ton = mischen2(f, st.misch);
const name = ton.map((v, i) => Math.round(v * anteil + hell[i] * (1 - anteil)));
const v2 = kontrast(name, schlimmerGrund) / 4.5;
if (v2 < schlimmster) {
schlimmster = v2; schlimmsterWinkel = w; schlimmsteStufe = st.wert;
}
}
}
/* DIE ANZAHL STEHT IN DER BEDINGUNG. Waere die Tabelle leer,
bliebe schlimmster auf Infinity und die Zeile waere gruen,
ohne eine einzige Farbe angesehen zu haben. */
ok(gemessen === 360 && schlimmster >= 1,
`alle ${gemessen} Toene des Rings sind als Name auf der Blase lesbar`
+ ` (knappster: Winkel ${schlimmsterWinkel}, Faktor ${schlimmster.toFixed(3)})`);
/* DIE ANZAHL STEHT IN DER BEDINGUNG -- und sie ist seit heute
360 mal die Zahl der Stufen. Waere die Stufenliste leer,
bliebe `gemessen` bei 0 und die Zeile waere gruen, ohne eine
einzige Farbe angesehen zu haben. */
ok(gemessen === 360 * KREIS_STUFEN.length && schlimmster >= 1,
`alle ${gemessen} Farben des Rings (360 Winkel x ${KREIS_STUFEN.length} `
+ `Helligkeiten) sind als Name auf der Blase lesbar (knappste: Winkel `
+ `${schlimmsterWinkel}, Stufe ${schlimmsteStufe}, Faktor ${schlimmster.toFixed(3)})`);
}
}
if (textRgb && leiseRgb) {
@@ -466,21 +517,84 @@ console.log("\n=== 3. Der Ruf ans Rudel ===");
const stand = await frida.seite.evaluate(() => {
const r = document.getElementById("kachelrad-ring");
const m = document.getElementById("kachelrad-mitte");
const p2 = document.querySelector(".kachelrad__probe");
const leiter = document.getElementById("kachelhell-leiter");
return { winkel: Number(r?.getAttribute("aria-valuenow")),
wort: r?.getAttribute("aria-valuetext") || "",
mitte: m ? getComputedStyle(m).backgroundColor : "" };
/* NICHT MEHR DER GRUND, SONDERN DIE SCHRIFT. Siehe unten. */
probe: p2 ? getComputedStyle(p2).color : "",
stufen: leiter ? leiter.children.length : 0,
stufeJetzt: leiter?.getAttribute("aria-valuenow") || "" };
});
ok(Math.abs((stand.winkel || 0) - 90) <= 2,
`nach dem Drehen auf drei Uhr steht der Ring bei ${stand.winkel} Grad (erwartet 90)`);
const erwartet = zuZahl(KREIS[stand.winkel] || "");
const gezeigt = zuZahl(stand.mitte);
/* ==== DIE PROBE MISST SEIT HEUTE ETWAS ANDERES (25.09.2026) =====
Hier stand: „die Mitte zeigt genau die Farbe dieses Winkels" --
gemessen am HINTERGRUND der Mitte. Das war richtig, solange die
Blase in der gewaehlten Farbe stand.
Seit dem 25.09.2026 ist die Blase fuer alle dunkles Glas, und
der gewaehlte Ton ist der NAME darauf. Die Probe zeigte damit
eine Darstellung, die es im Chat nicht mehr gibt -- und die
Pruefung haette sie festgehalten.
GEMESSEN WIRD JETZT DIE SCHRIFT der Probe: Sie muss genau die
Farbe tragen, die ein Name in der Blase traegt -- der Ton, mit
`--namen-anteil` nach #f2f8ff aufgehellt. Das ist dieselbe
Rechnung wie in chat.css, und sie wird hier NACHGERECHNET statt
abgeschrieben. */
const grundTon = zuZahl(KREIS[stand.winkel] || "");
const hell = zuZahl("#f2f8ff");
const anteil = 0.5; /* --namen-anteil; weiter unten aus dem CSS geprueft */
const erwartet = grundTon
? grundTon.map((v, i) => Math.round(v * anteil + hell[i] * (1 - anteil)))
: null;
const gezeigt = zuZahl(stand.probe);
ok(!!erwartet && !!gezeigt
&& Math.abs(erwartet[0] - gezeigt[0]) <= 1
&& Math.abs(erwartet[1] - gezeigt[1]) <= 1
&& Math.abs(erwartet[2] - gezeigt[2]) <= 1,
`die Mitte zeigt genau die Farbe dieses Winkels (${stand.mitte} gegen ${KREIS[stand.winkel]})`);
&& Math.abs(erwartet[0] - gezeigt[0]) <= 2
&& Math.abs(erwartet[1] - gezeigt[1]) <= 2
&& Math.abs(erwartet[2] - gezeigt[2]) <= 2,
`die Probe zeigt den Namen in genau dieser Farbe (${stand.probe} gegen `
+ `${erwartet ? "rgb(" + erwartet.join(", ") + ")" : "?"})`);
/* ==== UND DIE SIEBEN HELLIGKEITEN (25.09.2026) =================
Filipe: „ich will dass die leute auch heller und dunkler
aussuchen koennen … so dass die leute viel krassere
moeglichkeiten haben." */
ok(stand.stufen === 7,
`die Helligkeitsleiter hat sieben Stufen (${stand.stufen})`);
ok(stand.stufeJetzt === "4",
`und steht von sich aus in der Mitte (${stand.stufeJetzt})`);
/* EINE STUFE WAEHLEN UND NACHSEHEN, OB SIE ANKOMMT. Ohne das
waere „es gibt sieben Felder" ein Haken ueber Zierde: Sieben
Kaestchen, die nichts tun, sehen genauso aus. */
await frida.seite.click(".kachelhell__feld[data-stufe='s7']");
await frida.seite.waitForTimeout(700);
const hellStand = await frida.seite.evaluate(() => {
const p2 = document.querySelector(".kachelrad__probe");
const leiter = document.getElementById("kachelhell-leiter");
const an = leiter?.querySelector('[data-an="ja"]');
return { probe: p2 ? getComputedStyle(p2).color : "",
stufe: leiter?.getAttribute("aria-valuenow") || "",
markiert: an?.dataset.stufe || "" };
});
ok(hellStand.stufe === "7" && hellStand.markiert === "s7",
`eine hellere Stufe laesst sich waehlen (${hellStand.stufe}, ${hellStand.markiert})`);
const vorher2 = zuZahl(stand.probe), nachher2 = zuZahl(hellStand.probe);
ok(!!vorher2 && !!nachher2 && leucht(nachher2) > leucht(vorher2),
`und die Probe wird dabei wirklich heller `
+ `(${leucht(vorher2).toFixed(3)} auf ${leucht(nachher2).toFixed(3)})`);
await frida.seite.screenshot({ path: "server/pruef-farbkreis.png" });
/* Und zurueck in die Mitte, damit die Pruefungen danach mit dem
gewohnten Stand weiterarbeiten. */
await frida.seite.click(".kachelhell__feld[data-stufe='s4']");
await frida.seite.waitForTimeout(500);
ok(/\d+ Grad/.test(stand.wort) && stand.wort.length > 8,
`und sie wird vorgelesen als "${stand.wort}"`);
+29 -1
View File
@@ -51,6 +51,7 @@ import {
import { erwaehnteIds, rudelGerufen, RUDEL_WORT } from "./chat-erwaehnung.js";
import { KREIS, winkelAus } from "./chat-kreis.js";
import { KREIS_STUFEN, KREIS_MITTE, tonAus } from "./chat-kreis-stufen.js";
import { KATALOG, ERLAUBT, VORSCHLAG, FAVORITEN_MAX } from "./workspace-reaktionen.js";
/* Der Treff-Chat: eigener Raum, eigene Nachtruhe, keine Anrufe.
@@ -425,7 +426,20 @@ export function kachelPruefen(wert) {
Die alten Schluessel bleiben gueltig. Wer "veilchen" gewaehlt hat,
behaelt es -- eine Umstellung, die stillschweigend die Wahl von
fuenfzehn Leuten zuruecksetzt, waere kein Fortschritt. */
if (winkelAus(wert) !== null) return String(wert);
/* SEIT DEM 25.09.2026 GIBT ES ZU JEDEM WINKEL SIEBEN HELLIGKEITEN.
Filipe: „ich will dass die leute auch heller und dunkler
aussuchen koennen."
Der Schluessel heisst dann "ton-214-s6". Ohne Zusatz gilt die
Mitte -- die alten Schluessel bleiben damit Zeichen fuer Zeichen
gueltig und bedeuten dieselbe Farbe wie vorher.
`tonAus` ERSETZT `winkelAus` HIER, laesst es aber stehen: Es wird
an anderer Stelle noch gebraucht, und zwei Pruefungen fuer
denselben Schluessel waeren eine Gelegenheit, dass eine davon
mehr durchlaesst. */
if (tonAus(wert) !== null) return String(wert);
return CHAT_KACHELN.some((k) => k.wert === String(wert)) ? String(wert) : null;
}
@@ -1031,6 +1045,20 @@ chatRouter.get("/workspace/api/chat/kacheln", (req, res) => {
Kacheln -- also tragen sie auch dieselbe Schrift. Einmal
gerechnet und mitgeschickt, statt 360-mal dasselbe. */
kreis_schrift: schriftFuer(KREIS[0]),
/* DIE SIEBEN HELLIGKEITEN (25.09.2026).
Nicht 2520 fertige Farben, sondern 360 Grundtoene und sieben
Mischanteile: Der Browser mischt selbst, und zwar mit genau
den Zahlen, die hier stehen. Die ganze Tabelle zu schicken
waere 20 kB fuer etwas, das eine Zeile Rechnung ist.
DIE ZAHLEN KOMMEN TROTZDEM VOM SERVER und stehen nicht im
Browser: Sie sind aus der Kontrastrechnung hergeleitet (siehe
chat-kreis-stufen.js), und eine zweite Fassung im Browser
waere ab der naechsten Messung falsch -- unbemerkt, denn sie
lieferte ja weiter „irgendeine Farbe". */
kreis_stufen: KREIS_STUFEN,
kreis_mitte: KREIS_MITTE,
/* Die eigene WAHL, nicht der getragene Ton -- sonst stuende im
Waehler ein Haken bei einer Farbe, die niemand gewaehlt hat. */
meine: gewaehlteKachelFuer(req.person.id),
+5 -5
View File
@@ -16,15 +16,15 @@
verdeckt. Gefunden hat es pruef-struktur.
Richtig sind `gate.css` (die Farbwerte des Hauses) und `haus.css`. -->
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
<!-- Ohne diese drei nimmt ein iPhone einen Bildschirmausschnitt als
Symbol, Android zeichnet die Leiste weiss, und die Seite oeffnet
ausserhalb der App -- auf einer Seite, die genau erklaeren soll,
WARUM das Telefon nicht klingelt, ist das besonders unpassend. -->
<link rel="manifest" href="/workspace/crew.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<style>
/* Bewusst in der Seite und nicht in einer eigenen Datei: Diese Seite
soll auch dann noch etwas anzeigen, wenn genau das schiefgeht,
@@ -126,7 +126,7 @@
<script src="assets/js/anruf-probe.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/anruf-probe.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
</body>
</html>
+4 -4
View File
@@ -23,25 +23,25 @@
},
"icons": [
{
"src": "/assets/img/app-symbole/workspace-192.png?v=202609250404",
"src": "/assets/img/app-symbole/workspace-192.png?v=202609250435",
"sizes": "192x192",
"type": "image/png",
"purpose": "any"
},
{
"src": "/assets/img/app-symbole/workspace-512.png?v=202609250404",
"src": "/assets/img/app-symbole/workspace-512.png?v=202609250435",
"sizes": "512x512",
"type": "image/png",
"purpose": "any"
},
{
"src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609250404",
"src": "/assets/img/app-symbole/workspace-192-maskable.png?v=202609250435",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609250404",
"src": "/assets/img/app-symbole/workspace-512-maskable.png?v=202609250435",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
+274 -1
View File
@@ -4261,7 +4261,37 @@
}
/* ---- Die Sprachnachricht in der Blase ------------------------------ */
/* DIE SPRACHNACHRICHT BRAUCHT EINE MINDESTBREITE (25.09.2026).
Gefunden hat das pruef-chat-anhaenge, nicht ein Blick: „breit genug,
um den Schieber zu treffen (165 px)" -- verlangt sind 200.
URSACHE WAR EINE FOLGE, keine Aenderung an dieser Stelle: Die Blase
ist so breit wie ihr breitester Inhalt. Solange unter jeder
Nachricht fuenf WOERTER standen, war das die Handgriff-Reihe mit
ueber 400 px. Seit sie Zeichen sind (123 px), bestimmt das
Abspielgeraet selbst die Breite -- und das nimmt sich, was da ist.
Das ist die Sorte Nebenwirkung, die man nie vorhersieht und immer
misst: Eine Reihe kuerzer zu machen hat einen Schieber schmaler
gemacht, drei Bildschirme weiter.
240 UND NICHT 200: Die Zahl in der Pruefung ist die Untergrenze,
nicht das Ziel. Wer genau auf die Grenze baut, ist beim naechsten
Pixel wieder darunter.
KEIN `min(240px, 100%)` -- der erste Anlauf stand so da und hat
nichts getan. `100%` ist die Breite des Elternteils, und der ist ja
gerade der schmale: `min(240, 165)` ist 165. Eine Mindestbreite, die
sich am zu Schmalen orientiert, ist keine. Die feste Zahl zwingt die
Blase zu wachsen -- genau das ist gemeint.
AUF DEM HANDY WIRD SIE ZURUECKGENOMMEN (unten in der schmalen
Fassung): Dort ist die Blase selbst nur rund 250 px breit, und
240 px plus Polsterung passen nicht mehr hinein. */
.chat-ton {
min-width: 240px;
display: grid; gap: 6px;
/* So breit, dass der Schieber des Abspielgeräts bedienbar ist, und
nicht breiter als eine Blase am Handy. */
@@ -4533,7 +4563,92 @@
pointer-events: none;
box-shadow: 0 0 0 1px color-mix(in srgb, #000 45%, transparent);
}
.kachelrad__probe { opacity: .95; }
/* ==== DIE PROBE ZEIGT, WIE ES WIRKLICH AUSSIEHT (25.09.2026) ======
Hier stand eine gefuellte Flaeche mit heller Schrift darauf. So sah
die Blase bis zum 25.09. aus -- seither ist sie fuer alle dunkles
Glas, und der gewaehlte Ton ist der NAME darauf. Die Probe zeigte
also etwas, das es nicht mehr gibt.
Jetzt steht hier genau die Rechnung aus der Blase: derselbe
Blasengrund, und darauf der Ton, mit Weiss aufgehellt im selben
Verhaeltnis (`--namen-anteil`). Wer eine Farbe waehlt, sieht die
Schrift, die die anderen sehen werden.
UND ES IST DER GRUND, WARUM DIE SIEBEN HELLIGKEITEN GEHEN: Eine
gefuellte Flaeche muesste Schrift tragen, und bei sehr hellen Toenen
schafft das keine der beiden Schriftfarben mehr (gemessen 4,1 statt
noetiger 7). Als NAME auf dunklem Grund ist derselbe helle Ton
besonders gut lesbar (8,0). */
.kachelrad__mitte {
background: color-mix(in srgb, var(--blasengrund) 96%, transparent);
}
.kachelrad__probe {
opacity: 1;
font-weight: 800;
letter-spacing: .04em;
color: color-mix(in srgb,
var(--probe-ton, var(--akzent)) var(--namen-anteil, 50%), #f2f8ff);
}
/* ==== DIE HELLIGKEITSLEITER (25.09.2026) ==========================
Filipe: „ich will dass die leute auch heller und dunkler aussuchen
koennen … so dass die leute viel krassere moeglichkeiten haben."
SIEBEN FELDER IN IHRER ECHTEN FARBE, nicht sieben graue Kaestchen
mit Beschriftung: Man waehlt eine Farbe, also soll man Farben sehen.
Sie faerben sich beim Drehen am Ring mit.
EINE LEISTE UND KEIN ZWEITER KREIS: Farbton laeuft rund (359 grenzt
an 0), Helligkeit nicht -- sie hat ein dunkles und ein helles Ende.
Eine runde Form fuer etwas, das gerade verlaeuft, waere eine Form,
die luegt. */
.kachelhell {
margin: 14px auto 0;
max-width: 320px;
display: grid; gap: 7px;
}
.kachelhell__schild {
font-size: .74rem; font-weight: 700;
letter-spacing: .1em; text-transform: uppercase;
color: var(--text-still);
}
.kachelhell__leiter {
display: grid; grid-template-columns: repeat(7, 1fr);
gap: 4px;
padding: 5px;
border-radius: 14px;
background: rgba(0, 0, 0, .3);
box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, .9);
cursor: pointer;
}
.kachelhell__leiter:focus-visible { outline: 2px solid var(--akzent); outline-offset: 2px; }
/* 44 px hoch: Hier tippt man mit dem Daumen, und sieben Felder
nebeneinander sind ohnehin schon schmal. */
.kachelhell__feld {
height: 44px;
border-radius: 9px;
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .08);
transition: transform .14s ease, box-shadow .14s ease;
}
/* DIE WAHL STEHT HOEHER, sie ist nicht nur umrandet: Bei sieben
benachbarten Farbfeldern ist ein Rahmen mehr die achte Farbe. Ein
angehobenes Feld mit Lichtkante liest sich als „das hier". */
.kachelhell__feld[data-an="ja"] {
transform: translateY(-3px);
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, .5),
0 0 0 2px rgba(255, 255, 255, .85),
0 8px 16px -8px rgba(0, 0, 0, .9);
}
@media (prefers-reduced-motion: reduce) {
.kachelhell__feld { transition: none; }
}
@media (forced-colors: active) {
.kachelhell__feld { border: 1px solid CanvasText; }
.kachelhell__feld[data-an="ja"] { border: 3px solid Highlight; }
}
/* Ein Wechsel der Farbe soll nicht springen, aber auch nicht
nachlaufen -- 90 ms sind gerade so viel, dass es weich wirkt. */
@@ -5243,6 +5358,10 @@
-webkit-mask-size: 15px 15px;
mask-size: 15px 15px;
}
/* Die Mindestbreite der Sprachnachricht (240 px) gilt am Rechner.
Hier ist die Blase selbst nur rund 250 px breit -- 240 plus
Polsterung passen nicht mehr hinein und wuerden sie aufschieben. */
.chat-ton { min-width: 0; width: 100%; }
/* Die Uhrzeit gibt ihr Schild ab: Auf dem Handy zaehlt jede
Polsterung, und die Trennung zwischen Angabe und Knopf macht
hier ohnehin schon die Reihenfolge. */
@@ -5266,3 +5385,157 @@
Medienabfrage allein erhoeht die Spezifitaet nicht. */
.chat__kopf .chat__kopf-zeichen { display: none; }
}
/* =====================================================================
=====================================================================
DIE BILDSCHAU (25.09.2026)
=====================================================================
=====================================================================
Filipe: „wenn man bilder aufmacht, will ich dass die in der mitte
sind. beim hochformat soll links der husky sein und rechts der hase
und beim querformat soll oben dogfather und unten team dogi stehen
da wo platz ist. … ich will nicht dahin geschmissen sondern was
richtig geiles mit einem geilen hintergrund."
DER GRUND IST DREI SCHICHTEN, nicht eine Farbe: ein tiefer Verlauf,
drei weiche Lichter (violett, tuerkis, ein warmer Rest) und ein
Schleier ganz aussen. Zusammen unter zehn Prozent Deckung -- ein
Foto soll darauf liegen, nicht dagegen ankaempfen.
KEIN REINES SCHWARZ. Genau das zeigt der Browser von sich aus, und
genau daran hat Filipe es gemerkt. Schwarz ist keine Gestaltung,
sondern ihr Fehlen.
===================================================================== */
.bildschau {
width: 100vw; max-width: 100vw;
height: 100dvh; max-height: 100dvh;
padding: 0; margin: 0; border: 0;
background: none;
overflow: hidden;
color: var(--text, #e8f1fa);
}
.bildschau::backdrop { background: rgba(3, 4, 9, .86); backdrop-filter: blur(6px); }
.bildschau__grund {
position: absolute; inset: 0; z-index: 0;
background:
radial-gradient(70% 55% at 18% 8%, rgba(122, 92, 255, .16), transparent 66%),
radial-gradient(62% 52% at 84% 88%, rgba(38, 200, 196, .13), transparent 68%),
radial-gradient(48% 40% at 60% 46%, rgba(255, 176, 92, .06), transparent 70%),
linear-gradient(168deg, #0a0b14 0%, #070811 55%, #05060c 100%);
}
/* Ein Schleier von aussen nach innen -- er zieht den Blick in die
Mitte, ohne dass man ihn als Rahmen bemerkt. */
.bildschau__grund::after {
content: ""; position: absolute; inset: 0;
background: radial-gradient(120% 95% at 50% 50%, transparent 52%, rgba(0, 0, 0, .55) 100%);
}
/* ---- Die Buehne: das Bild sitzt in der MITTE ----------------------- */
.bildschau__buehne {
position: absolute; inset: 0; z-index: 2;
display: grid; place-items: center;
padding: 72px 4vw 56px;
}
.bildschau__bild {
max-width: 92vw; max-height: 82dvh;
width: auto; height: auto;
border-radius: 14px;
/* Ein feiner heller Saum trennt das Foto vom Grund, auch wenn seine
Raender selbst dunkel sind. Ohne ihn franst ein dunkles Foto in
den Hintergrund aus, und man sieht nicht mehr, wo es aufhoert. */
box-shadow:
0 0 0 1px rgba(255, 255, 255, .1),
0 40px 90px -40px rgba(0, 0, 0, .95),
0 0 90px -40px rgba(122, 92, 255, .5);
}
/* ---- Die Begleiter ------------------------------------------------- */
/* Sie liegen HINTER dem Bild (z-index 1 gegen 2) -- ein Husky, der
ueber einem Foto liegt, waere keine Zierde, sondern ein Hindernis. */
.bildschau__figur {
position: absolute; bottom: 0; z-index: 1;
height: min(78dvh, 720px);
width: auto;
opacity: 0;
pointer-events: none;
transition: opacity .32s ease;
}
.bildschau__figur--links { left: 0; }
/* NICHT SPIEGELN. Der erste Anlauf drehte den Hasen um, damit beide
„nach innen" schauen -- ein alter Reflex aus dem Plakatsatz. Auf dem
Probebild stand danach „Hasi Dog" seitenverkehrt auf seinem Hoodie.
Beide Figuren sehen ohnehin nach vorn; es gibt nichts zu spiegeln,
und Schrift im Bild spiegelt man nie. */
.bildschau__figur--rechts { right: 0; }
.bildschau[data-lage="hoch"] .bildschau__figur { opacity: .92; }
/* ---- Die zwei Schriftzuege ----------------------------------------- */
.bildschau__wort {
position: absolute; left: 0; right: 0; z-index: 1;
display: flex; align-items: center; justify-content: center; gap: 14px;
opacity: 0;
pointer-events: none;
transition: opacity .32s ease;
}
.bildschau__wort--oben { top: 18px; }
.bildschau__wort--unten { bottom: 16px; }
.bildschau[data-lage="quer"] .bildschau__wort { opacity: 1; }
.bildschau__zeichen { width: 34px; height: 34px; filter: invert(1) opacity(.72); }
/* GESPERRT UND GROSS: Ein Schriftzug ist kein Satz. Die Sperrung macht
aus zwei Woertern ein Zeichen -- man liest es nicht, man erkennt es. */
.bildschau__wort-text {
font-size: clamp(1.1rem, 2.6vw, 1.9rem);
font-weight: 800;
letter-spacing: .34em;
text-transform: uppercase;
color: rgba(232, 241, 250, .5);
text-shadow: 0 0 26px rgba(122, 92, 255, .45);
}
.bildschau__wort--unten .bildschau__wort-text {
font-size: clamp(.9rem, 2vw, 1.4rem);
letter-spacing: .42em;
color: rgba(232, 241, 250, .34);
}
/* ---- Die Leiste ---------------------------------------------------- */
.bildschau__leiste {
position: absolute; top: 0; left: 0; right: 0; z-index: 3;
display: flex; align-items: center; gap: 10px;
padding: 12px 14px;
background: linear-gradient(180deg, rgba(4, 5, 11, .78), transparent);
}
.bildschau__name {
flex: 1; min-width: 0;
font-size: .86rem; color: rgba(232, 241, 250, .7);
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/* 44 px hoch, auch am Rechner: Der Schliessen-Knopf ist der einzige
Weg heraus, den man SIEHT (Escape kennt nicht jeder). */
.bildschau__knopf {
flex: none;
min-height: 44px; padding: 0 14px;
display: inline-flex; align-items: center;
border: 1px solid rgba(255, 255, 255, .12);
border-radius: 999px;
background: rgba(255, 255, 255, .06);
color: var(--text, #e8f1fa);
font: inherit; font-size: .84rem; font-weight: 600;
text-decoration: none;
cursor: pointer;
}
.bildschau__knopf:hover { background: rgba(255, 255, 255, .13); }
.bildschau__knopf:focus-visible { outline: 2px solid #b9a7ff; outline-offset: 2px; }
.bildschau__zu { min-width: 44px; justify-content: center; padding: 0; font-size: 1rem; }
@media (prefers-reduced-motion: reduce) {
.bildschau__figur, .bildschau__wort { transition: none; }
}
/* Auf einem Telefon fuellt ein Foto den Schirm -- dort gibt es keinen
Platz fuer Begleiter, und die Schau sagt das ueber `data-lage`
ohnehin selbst. Hier bleibt nur die Buehne enger. */
@media (max-width: 620px) {
.bildschau__buehne { padding: 64px 12px 24px; }
.bildschau__bild { max-width: 96vw; max-height: 78dvh; }
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

+234
View File
@@ -0,0 +1,234 @@
/* =====================================================================
DIE BILDSCHAU (25.09.2026)
=====================================================================
Filipe: „wenn man bilder aufmacht, will ich dass die in der mitte
sind. beim hochformat soll links der husky sein und rechts der hase
und beim querformat soll oben dogfather und unten team dogi stehen
da wo platz ist. es soll richtig geil gemacht werden alles … ich
will nicht dahin geschmissen sondern was richtig geiles mit einem
geilen hintergrund."
---------------------------------------------------------------------
WAS VORHER PASSIERTE
Ein Klick auf ein Foto oeffnete die Datei selbst in einem neuen Tab.
Was man dann sah, war nicht unsere Seite, sondern die eingebaute
Bildanzeige des Browsers: schwarzer Grund, Bild oben links in der
Ecke, Dateiname in der Titelleiste. Auf Filipes Bildschirmfoto nimmt
das Foto die linke Haelfte ein, rechts sind 1200 px Schwarz.
Das ist kein Fehler im Browser -- er zeigt eine Datei, und eine
Datei hat keine Gestaltung. Wer Gestaltung will, muss eine SEITE
zeigen.
---------------------------------------------------------------------
WARUM EINE SCHAU IN DER SEITE UND KEIN ZWEITER TAB
Ein zweiter Tab braucht eine eigene Seite, eine eigene Anmeldung und
einen eigenen Weg zurueck. Die Schau liegt UEBER dem Chat: Man ist
mit Escape wieder da, wo man war, und das Gespraech laeuft im
Hintergrund weiter.
DER WEG IN DEN TAB BLEIBT TROTZDEM. Das Foto haengt weiterhin an
einem echten Verweis mit `target="_blank"` -- mittlere Maustaste,
„In neuem Tab oeffnen" und Herunterladen funktionieren wie vorher.
Abgefangen wird nur der GEWOEHNLICHE Klick. Ein Verweis, der kein
Verweis mehr ist, nimmt Leuten Wege weg, die sie seit Jahren kennen.
---------------------------------------------------------------------
WARUM `<dialog>` UND KEIN EIGENES DIV
`showModal()` bringt drei Dinge mit, die man sonst von Hand baut und
dabei vergisst: Escape schliesst, der Tastaturfokus bleibt drin, und
alles dahinter ist fuer Vorleseprogramme stumm. Drei eigene
Loesungen waeren drei Gelegenheiten fuer einen Fehler.
---------------------------------------------------------------------
DIE BEGLEITER
HOCHFORMAT: Husky links, Hase rechts. Dort ist der Platz -- ein
hohes Foto laesst links und rechts je ein Viertel des Bildschirms
frei.
QUERFORMAT: „DogFather" oben, „Team Dogi" unten. Dort ist der Platz
-- ein breites Foto laesst oben und unten Streifen frei.
SIE ERSCHEINEN NUR, WENN WIRKLICH PLATZ IST. Gemessen wird nicht die
Fensterbreite, sondern der Rest neben dem Bild: Ein hohes Foto auf
einem Telefon fuellt den Schirm, und ein Husky, der darueberliegt,
waere keine Zierde, sondern ein Hindernis.
SIE SIND LEISE. `aria-hidden` -- ein Vorleseprogramm soll nicht
„Grafik Husky" sagen, wenn jemand ein Foto ansehen will. Und sie
liegen HINTER dem Bild, nie darauf.
===================================================================== */
(function () {
'use strict';
var schau = null; // das <dialog>, einmal gebaut und wiederverwendet
var teile = null; // { bild, name, tab, husky, hase, oben, unten }
var zurueck = null; // wohin der Fokus nach dem Schliessen gehoert
function el(art, klasse, text) {
var e = document.createElement(art);
if (klasse) e.className = klasse;
if (text != null) e.textContent = text;
return e;
}
function bauen() {
if (schau) return;
schau = document.createElement('dialog');
schau.className = 'bildschau';
schau.setAttribute('aria-label', 'Bild ansehen');
/* DER HINTERGRUND IST EIN EIGENES STUECK und nicht der Grund des
Dialogs: Er soll sich unabhaengig vom Inhalt bewegen duerfen
(Verlauf, Schleier, Koernung), ohne dass der Inhalt etwas davon
erbt. */
var grund = el('div', 'bildschau__grund');
grund.setAttribute('aria-hidden', 'true');
schau.appendChild(grund);
/* Die Begleiter liegen HINTER dem Bild -- eigene Ebene, damit das
Bild in jedem Fall obenauf ist. */
var husky = el('img', 'bildschau__figur bildschau__figur--links');
husky.src = 'assets/img/schau-husky.webp';
husky.alt = '';
husky.setAttribute('aria-hidden', 'true');
husky.loading = 'lazy';
husky.decoding = 'async';
var hase = el('img', 'bildschau__figur bildschau__figur--rechts');
hase.src = 'assets/img/schau-hase.webp';
hase.alt = '';
hase.setAttribute('aria-hidden', 'true');
hase.loading = 'lazy';
hase.decoding = 'async';
schau.appendChild(husky);
schau.appendChild(hase);
/* Die zwei Schriftzuege fuers Querformat. */
var oben = el('div', 'bildschau__wort bildschau__wort--oben');
oben.setAttribute('aria-hidden', 'true');
var zeichen = el('img', 'bildschau__zeichen');
zeichen.src = 'assets/img/marke-husky.webp';
zeichen.alt = '';
oben.appendChild(zeichen);
oben.appendChild(el('span', 'bildschau__wort-text', 'DogFather'));
var unten = el('div', 'bildschau__wort bildschau__wort--unten');
unten.setAttribute('aria-hidden', 'true');
unten.appendChild(el('span', 'bildschau__wort-text', 'Team Dogi'));
schau.appendChild(oben);
schau.appendChild(unten);
var buehne = el('div', 'bildschau__buehne');
var bild = el('img', 'bildschau__bild');
bild.alt = '';
buehne.appendChild(bild);
schau.appendChild(buehne);
/* Die Leiste steht OBEN und nicht ueber dem Bild: Sie soll
erreichbar sein, ohne etwas zu verdecken. */
var leiste = el('div', 'bildschau__leiste');
var name = el('span', 'bildschau__name');
var tab = el('a', 'bildschau__knopf', 'Im Tab öffnen');
tab.target = '_blank';
tab.rel = 'noopener noreferrer';
var zu = el('button', 'bildschau__knopf bildschau__zu');
zu.type = 'button';
zu.setAttribute('aria-label', 'Bild schließen');
zu.title = 'Schließen (Esc)';
zu.textContent = '✕';
zu.addEventListener('click', function () { schau.close(); });
leiste.appendChild(name);
leiste.appendChild(tab);
leiste.appendChild(zu);
schau.appendChild(leiste);
/* EIN KLICK NEBEN DAS BILD SCHLIESST. Das erwartet jeder, der
schon einmal ein Foto angesehen hat. Ein Klick AUF das Bild
nicht -- sonst schliesst es sich, waehrend man hineinzoomt. */
schau.addEventListener('click', function (e) {
if (e.target === schau || e.target === grund || e.target === buehne) schau.close();
});
schau.addEventListener('close', function () {
/* Die Quelle loesen: Ein grosses Foto im Speicher zu halten,
nachdem niemand es mehr ansieht, ist Last ohne Zweck. */
teile.bild.removeAttribute('src');
if (zurueck && document.contains(zurueck)) {
try { zurueck.focus(); } catch (f) { /* egal */ }
}
zurueck = null;
});
document.body.appendChild(schau);
teile = { bild: bild, name: name, tab: tab, husky: husky, hase: hase,
oben: oben, unten: unten };
}
/** Hoch, quer oder fast quadratisch -- und ist ueberhaupt Platz?
*
* GEMESSEN WIRD DER REST NEBEN DEM BILD, nicht die Fensterbreite.
* Eine Schwelle wie „ab 1100 px zeigen" waere eine Rechnung von
* gestern: Sie stimmt fuer ein 3:4-Foto und ist bei einem 9:16-Foto
* auf demselben Schirm falsch. Dieses Haus ist an festen Breiten
* schon dreimal hereingefallen.
*/
function lageBestimmen(b, h) {
if (!(b > 0 && h > 0)) return 'keine';
var fb = window.innerWidth, fh = window.innerHeight;
/* So gross wird das Bild: es passt in 92 % Breite und 82 % Hoehe. */
var masz = Math.min(fb * 0.92 / b, (fh * 0.82) / h);
var zb = b * masz, zh = h * masz;
var restSeite = (fb - zb) / 2;
var restOben = (fh - zh) / 2;
if (h > b * 1.05) {
/* Eine Figur braucht rund 170 px, damit sie eine Figur ist und
kein Streifen. Weniger, und sie steht besser gar nicht da. */
return restSeite >= 170 ? 'hoch' : 'keine';
}
if (b > h * 1.05) {
/* Ein Schriftzug braucht rund 70 px Luft -- darunter klebt er am
Bildrand und sieht aus wie ein Versehen. */
return restOben >= 70 ? 'quer' : 'keine';
}
return restOben >= 70 ? 'quer' : 'keine';
}
function lageSetzen() {
if (!schau || !schau.open) return;
var b = teile.bild.naturalWidth, h = teile.bild.naturalHeight;
schau.dataset.lage = lageBestimmen(b, h);
}
/** Ein Bild gross ansehen.
* @param {{weg:string,name:string}} a das Bild
* @param {Element} [woher] wohin der Fokus zurueckgeht
*/
function zeigen(a, woher) {
if (!a || !a.weg) return;
bauen();
zurueck = woher || document.activeElement;
teile.bild.src = a.weg;
teile.bild.alt = a.name || 'Foto';
teile.name.textContent = a.name || '';
teile.tab.href = a.weg;
schau.dataset.lage = 'keine';
/* ERST WENN DAS BILD DA IST, steht sein Format fest. Vorher sind
naturalWidth und naturalHeight null -- und „null zu null" waere
weder hoch noch quer. Liegt es schon im Zwischenspeicher, ist
`complete` sofort wahr und die Zeile darunter greift. */
teile.bild.onload = lageSetzen;
if (teile.bild.complete) lageSetzen();
if (!schau.open) schau.showModal();
}
/* Dreht jemand das Telefon oder zieht das Fenster kleiner, aendert
sich der Platz -- und damit die Antwort auf „passt eine Figur
daneben". */
window.addEventListener('resize', lageSetzen);
window.Bildschau = { zeigen: zeigen };
})();
+225 -8
View File
@@ -57,6 +57,31 @@
/* Die 360 Farben des Rings, Index = Winkel. Kommt vom Server; hier
wird nichts gerechnet (Begruendung steht an der Route). */
let kreisToene = [];
/* Die sieben Helligkeiten und welche davon die Mitte ist. Beides
kommt vom Server (siehe chat-kreis-stufen.js). */
let kreisStufen = [{ wert: 's4', misch: 0, name: 'normal' }];
let kreisMitte = 's4';
/** Einen Grundton heller oder dunkler mischen.
*
* `misch` ist negativ fuer dunkler (Richtung Schwarz) und positiv
* fuer heller (Richtung Weiss) -- dieselbe Rechnung wie
* `color-mix(in srgb, …)` und wie `tonFarbe()` im Server. Sie steht
* hier ein zweites Mal, und das ist Absicht: Die ZAHLEN kommen vom
* Server, nur das Mischen selbst passiert im Browser. Eine Farbe,
* die 2520-mal ueber die Leitung geht, waere teurer als drei Zeilen
* Rechnung.
*/
function tonMischen(grund, misch) {
const s = String(grund).replace('#', '');
if (s.length !== 6) return grund;
const teile = [0, 2, 4].map((i) => parseInt(s.slice(i, i + 2), 16));
const ziel = misch < 0 ? 0 : 255;
const t = Math.abs(misch);
return '#' + teile
.map((v) => Math.round(v * (1 - t) + ziel * t).toString(16).padStart(2, '0'))
.join('');
}
let meineKachel = null;
let autoKachel = null;
@@ -86,9 +111,39 @@
Eine Sonderbehandlung an zehn Stellen waere neun Gelegenheiten
gewesen, eine davon zu vergessen. */
kreisToene = Array.isArray(d.kreis) ? d.kreis : [];
/* ==== DIE SIEBEN HELLIGKEITEN (25.09.2026) ==================
Filipe: „ich will dass die leute auch heller und dunkler
aussuchen koennen."
NICHT 2520 FERTIGE FARBEN, sondern 360 Grundtoene und sieben
Mischanteile -- die ganze Tabelle waere 20 kB fuer etwas, das
eine Zeile Rechnung ist.
DIE ZAHLEN KOMMEN VOM SERVER und stehen nicht hier: Sie sind
aus der Kontrastrechnung hergeleitet (chat-kreis-stufen.js),
und eine zweite Fassung im Browser waere ab der naechsten
Messung falsch -- unbemerkt, denn sie lieferte ja weiter
„irgendeine Farbe". Kommt nichts, bleibt es bei der einen
Mitte: der Kreis von gestern. */
kreisStufen = Array.isArray(d.kreis_stufen) && d.kreis_stufen.length
? d.kreis_stufen : [{ wert: 's4', misch: 0, name: 'normal' }];
kreisMitte = d.kreis_mitte || 's4';
kreisToene.forEach((farbe, winkel) => {
KACHEL_FARBE['ton-' + winkel] = farbe;
if (d.kreis_schrift) KACHEL_SCHRIFT['ton-' + winkel] = d.kreis_schrift;
/* Jede Stufe bekommt ihren eigenen Schluessel in derselben
Tabelle. Damit funktionieren ALLE Stellen, die eine Farbe
nachschlagen, unveraendert weiter -- dieselbe Ueberlegung
wie am 23.09., als der Kreis dazukam. */
for (const s of kreisStufen) {
if (!s.misch) continue;
KACHEL_FARBE['ton-' + winkel + '-' + s.wert] = tonMischen(farbe, s.misch);
}
/* Und der Schluessel MIT der Mitte zeigt auf dieselbe Farbe
wie der ohne -- sonst waere „ton-214" und „ton-214-s4"
zweierlei, und beide kaemen vor. */
KACHEL_FARBE['ton-' + winkel + '-' + kreisMitte] = farbe;
});
kachelKnopfZeigen();
} catch { /* ohne die Liste bleibt alles beim Standard -- kein Grund
@@ -300,8 +355,22 @@
zwischen zwei geprueften Werten liegt.
===================================================================== */
let radWinkel = 0;
/* Welche der sieben Helligkeiten gerade gilt. Der Ring bestimmt den
Farbton, die Leiter die Helligkeit -- zwei Achsen derselben
Farbe. */
let radStufe = 's4';
let radUhr = null;
/** Der Schluessel aus beidem. Die Mitte bekommt KEINEN Zusatz:
* „ton-214" ist seit dem 23.09. der gueltige Schluessel, und wer
* ihn traegt, soll nach diesem Umbau nicht ploetzlich einen anderen
* in der Datenbank stehen haben. */
function radSchluessel() {
return radStufe === kreisMitte
? 'ton-' + radWinkel
: 'ton-' + radWinkel + '-' + radStufe;
}
function radBauen() {
const ring = $('kachelrad-ring');
const rad = $('kachelrad');
@@ -318,8 +387,13 @@
Wer Babyblau traegt, hat keinen Winkel -- dann zeigt der Griff
auf den naechstgelegenen, ohne dass etwas umgestellt wird. */
const jetzt = KACHEL_FARBE[meineKachel] || KACHEL_FARBE[autoKachel] || null;
const t = /^ton-(\d{1,3})$/.exec(String(meineKachel || ''));
/* Der Schluessel darf seit dem 25.09.2026 eine Stufe tragen
("ton-214-s6"). Ohne Zusatz gilt die Mitte -- so wie der Server
es auch liest. */
const t = /^ton-(\d{1,3})(?:-(s[1-7]))?$/.exec(String(meineKachel || ''));
radWinkel = t ? Number(t[1]) : (jetzt ? naechsterWinkel(jetzt).winkel : 0);
radStufe = (t && t[2]) || kreisMitte;
leiterBauen();
radZeigen(radWinkel, { nurAnzeige: true });
}
@@ -333,24 +407,138 @@
ring.setAttribute('aria-valuenow', String(w));
/* EINE ZAHL IN GRAD SAGT NIEMANDEM ETWAS. Vorgelesen wird der
Farbname, den ein Mensch benutzt -- "Blaugruen, 190 Grad". */
ring.setAttribute('aria-valuetext', farbwort(w) + ', ' + w + ' Grad');
/* DIE HELLIGKEIT GEHOERT IN DEN VORLESETEXT. Ohne sie saegte eine
Sprachausgabe bei allen sieben Stufen dasselbe -- und man haette
kein Mittel, die Wahl zu hoeren. */
ring.setAttribute('aria-valuetext',
farbwort(w) + ', ' + w + ' Grad, ' + stufenName(radStufe));
if (mitte) {
const farbe = kreisToene[w];
mitte.style.background = farbe || '';
const s = KACHEL_SCHRIFT['ton-' + w];
mitte.style.color = (s && s.text) || '';
/* ==== DIE PROBE ZEIGT, WIE ES WIRKLICH AUSSIEHT (25.09.2026)
Hier stand eine gefuellte Flaeche in der gewaehlten Farbe mit
heller Schrift darauf. So sah die Blase bis zum 25.09. aus --
seither ist sie fuer alle dunkles Glas, und der gewaehlte Ton
ist der NAME darauf.
Die Probe zeigte also etwas, das es nicht mehr gibt. Jetzt
zeigt sie genau die Rechnung aus chat.css: der Ton, mit Weiss
aufgehellt (`--namen-anteil`), auf dem Blasengrund. Wer hier
eine Farbe waehlt, sieht die Schrift, die die anderen im Chat
sehen werden.
NEBENWIRKUNG, UND SIE IST DER GRUND, WARUM DIE HELLIGKEITEN
UEBERHAUPT GEHEN: Eine gefuellte Flaeche muesste Schrift
tragen -- und bei sehr hellen Toenen schafft das keine der
beiden Schriftfarben mehr (gemessen: 4,1 statt noetiger 7).
Als NAME auf dunklem Grund ist derselbe helle Ton dagegen
besonders gut lesbar (8,0). Die neue Probe ist damit nicht nur
ehrlicher, sie macht die sieben Stufen erst moeglich. */
const farbe = KACHEL_FARBE[radSchluessel()] || kreisToene[w];
mitte.style.background = '';
mitte.style.setProperty('--probe-ton', farbe || '');
}
if (!nurAnzeige) {
/* Die eigenen Blasen im Verlauf faerben sich mit -- man
entscheidet sich ja nicht fuer einen Fleck, sondern dafuer,
wie die eigenen Nachrichten aussehen. */
meineKachel = 'ton-' + w;
meineKachel = radSchluessel();
/* DIE LEITER FAERBT MIT. Ohne diese Zeile zeigten die sieben
Felder die Helligkeiten des Tons von vorhin -- man waehlt
Gruen und sieht sieben Rottoene darunter. */
leiterZeigen();
kachelKnopfZeigen();
eigeneKachelnFaerben();
auswahlMarkieren();
}
}
/** Der Name einer Helligkeitsstufe -- fuer Sprachausgabe und Titel. */
function stufenName(wert) {
return (kreisStufen.find((s) => s.wert === wert) || {}).name || 'normal';
}
/* ==== DIE HELLIGKEITSLEITER (25.09.2026) =========================
Filipe: „ich will dass die leute auch heller und dunkler aussuchen
koennen … so dass die leute viel krassere moeglichkeiten haben."
SIEBEN FELDER, JEDES IN SEINER ECHTEN FARBE -- nicht sieben graue
Kaestchen mit Beschriftung. Man waehlt eine Farbe; also soll man
Farben sehen. Die Felder faerben sich beim Drehen am Ring mit: Wer
den Farbton aendert, sieht sofort, wie die sieben Helligkeiten
DIESES Tons aussehen.
EINE LEISTE UND KEIN ZWEITER KREIS: Farbton laeuft rund (359 Grad
grenzt an 0), Helligkeit nicht -- sie hat ein dunkles und ein
helles Ende. Eine runde Form fuer etwas, das gerade verlaeuft,
waere eine Form, die luegt.
`role="slider"` AM GANZEN KASTEN und nicht sieben Knoepfe: Es ist
EIN Wert mit sieben Stufen. Sieben Knoepfe waeren sieben
Tabulatorschritte fuer eine Entscheidung. */
function leiterBauen() {
const leiter = $('kachelhell-leiter');
if (!leiter) return;
leiter.textContent = '';
kreisStufen.forEach((s, i) => {
const feld = el('span', 'kachelhell__feld');
feld.dataset.stufe = s.wert;
feld.title = s.name;
/* aria-hidden: Der Wert steht am Kasten (`aria-valuenow`), die
Felder sind seine Darstellung. Ohne das laese eine Sprachausgabe
sieben leere Felder vor. */
feld.setAttribute('aria-hidden', 'true');
feld.addEventListener('click', () => stufeWaehlen(i, true));
leiter.append(feld);
});
leiterZeigen();
}
/** Die Felder auf den aktuellen Farbton bringen und die Wahl zeigen. */
function leiterZeigen() {
const leiter = $('kachelhell-leiter');
if (!leiter) return;
const nr = Math.max(0, kreisStufen.findIndex((s) => s.wert === radStufe));
leiter.setAttribute('aria-valuenow', String(nr + 1));
leiter.setAttribute('aria-valuetext', stufenName(radStufe));
for (const feld of leiter.children) {
const s = kreisStufen.find((x) => x.wert === feld.dataset.stufe);
const grund = kreisToene[radWinkel];
if (s && grund) feld.style.background = s.misch ? tonMischen(grund, s.misch) : grund;
feld.dataset.an = feld.dataset.stufe === radStufe ? 'ja' : 'nein';
}
}
/** Eine Stufe waehlen -- ueber den Index, damit Pfeiltasten und
* Klick denselben Weg gehen. */
function stufeWaehlen(nr, sichern) {
const n = Math.max(0, Math.min(kreisStufen.length - 1, nr));
radStufe = kreisStufen[n].wert;
radZeigen(radWinkel);
leiterZeigen();
if (sichern) radSichern(0);
}
function leiterBedienen() {
const leiter = $('kachelhell-leiter');
if (!leiter) return;
leiter.addEventListener('keydown', (e) => {
const nr = kreisStufen.findIndex((s) => s.wert === radStufe);
let ziel = null;
if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') ziel = nr - 1;
else if (e.key === 'ArrowRight' || e.key === 'ArrowUp') ziel = nr + 1;
else if (e.key === 'Home') ziel = 0;
else if (e.key === 'End') ziel = kreisStufen.length - 1;
if (ziel === null) return;
e.preventDefault();
/* Mit einer halben Sekunde Ruhe speichern -- wer mit der Taste
durch die Stufen faehrt, soll nicht sieben Anfragen ausloesen.
Dieselbe Ueberlegung wie am Ring. */
stufeWaehlen(ziel, false);
radSichern(500);
});
}
/** Ein Wort fuer den Bereich, damit eine Sprachausgabe etwas sagen kann. */
function farbwort(w) {
const namen = [
@@ -367,7 +555,7 @@
/** Nach der Bewegung einmal speichern. */
function radSichern(verzoegerung = 0) {
clearTimeout(radUhr);
radUhr = setTimeout(() => kachelSetzen('ton-' + radWinkel), verzoegerung);
radUhr = setTimeout(() => kachelSetzen(radSchluessel()), verzoegerung);
}
function radBedienen() {
@@ -416,6 +604,7 @@
function kachelwahlBedienen() {
radBedienen();
leiterBedienen();
const knopf = $('kachel-oeffnen'), dlg = $('kachel-wahl'), zu = $('kachel-zu');
if (!knopf || !dlg) return;
knopf.addEventListener('click', () => { kachelwahlBauen(); dlg.showModal(); });
@@ -2257,6 +2446,34 @@
kasten.style.maxWidth = `${breit}px`;
}
/* ==== EIN KLICK OEFFNET DIE SCHAU (25.09.2026) ================
Filipe: „wenn man bilder aufmacht, will ich dass die in der
mitte sind."
Bis heute fuehrte der Verweis auf die DATEI, und was man dann
sah, war die eingebaute Bildanzeige des Browsers: schwarzer
Grund, Bild in der Ecke. Das ist kein Fehler des Browsers --
eine Datei hat keine Gestaltung.
DER VERWEIS BLEIBT EIN VERWEIS. `target`, `rel` und `href`
stehen unveraendert da; mittlere Maustaste, „In neuem Tab
oeffnen" und Herunterladen gehen wie seit jeher. Abgefangen
wird nur der gewoehnliche Klick -- und auch der nur, wenn die
Schau ueberhaupt geladen ist. Faellt die Datei aus, ist man
wieder beim alten Verhalten statt bei gar keinem.
`metaKey`, `ctrlKey`, `shiftKey` UND DIE MITTLERE TASTE sind
ausgenommen: Das sind die Griffe, mit denen Leute seit zwanzig
Jahren in einem neuen Tab oeffnen. Wer sie abfaengt, nimmt
etwas weg, das niemand vermisst -- bis er es braucht. */
kasten.addEventListener('click', (e) => {
if (e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;
if (!window.Bildschau) return;
e.preventDefault();
window.Bildschau.zeigen(a, kasten);
});
const bild = document.createElement('img');
bild.src = a.weg;
bild.alt = a.name || 'Foto';
+19 -19
View File
@@ -12,19 +12,19 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -391,22 +391,22 @@
<!-- TEXTFORM ZUERST (21.09.2026): Die Seite fragt beim Zeichnen nach
`window.Textform`. Kaeme sie spaeter, waere der erste Eintrag ohne
Gestaltung. Kein `defer`, damit sie wirklich vorher dasteht. -->
<script src="assets/js/textform.js?v=202609250404"></script>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/hochladen.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/textform.js?v=202609250435"></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/hochladen.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/zuteilung.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/zuteilung.js?v=202609250435" defer></script>
<!-- Der Vorlagenkatalog stand bis zum 23.09.2026 mitten in
aufgaben.js. Er bedient jetzt zwei Seiten und hat deshalb eine
eigene Datei; hier zeigt er den Creator-Katalog.
Vor aufgaben.js, weil die Seite ihn beim Start einrichtet. -->
<script src="assets/js/vorlagenbrett.js?v=202609250404" defer></script>
<script src="assets/js/aufgaben.js?v=202609250404" defer></script>
<script src="assets/js/vorlagenbrett.js?v=202609250435" defer></script>
<script src="assets/js/aufgaben.js?v=202609250435" defer></script>
</body>
</html>
+16 -16
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/automation.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/automation.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -168,15 +168,15 @@
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/automation.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/automation.js?v=202609250435" defer></script>
</body>
</html>
+17 -17
View File
@@ -7,14 +7,14 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -197,16 +197,16 @@
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/holen.js?v=202609250404" defer></script>
<script src="assets/js/befinden.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/holen.js?v=202609250435" defer></script>
<script src="assets/js/befinden.js?v=202609250435" defer></script>
</body>
</html>
+22 -22
View File
@@ -12,24 +12,24 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609250435" />
<!-- Wegen des Blocks „Willst du dazugehoeren?" auf dem Brett
„Mitmachen". Eine eigene Kopie der Regel hier waere die zweite
Stelle, an der dieselbe Sache anders aussieht. -->
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -304,19 +304,19 @@
<!-- TEXTFORM ZUERST (21.09.2026): Die Seite fragt beim Zeichnen nach
`window.Textform`. Kaeme sie spaeter, waere der erste Eintrag ohne
Gestaltung. Kein `defer`, damit sie wirklich vorher dasteht. -->
<script src="assets/js/textform.js?v=202609250404"></script>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/textform.js?v=202609250435"></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/checkliste.js?v=202609250404" defer></script>
<script src="assets/js/ampel.js?v=202609250404" defer></script>
<script src="assets/js/schulung.js?v=202609250404" defer></script>
<script src="assets/js/holen.js?v=202609250404" defer></script>
<script src="assets/js/bereich.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/checkliste.js?v=202609250435" defer></script>
<script src="assets/js/ampel.js?v=202609250435" defer></script>
<script src="assets/js/schulung.js?v=202609250435" defer></script>
<script src="assets/js/holen.js?v=202609250435" defer></script>
<script src="assets/js/bereich.js?v=202609250435" defer></script>
</body>
</html>
+19 -19
View File
@@ -7,17 +7,17 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -108,15 +108,15 @@
</main>
<!-- Der Fuß gehört zu jeder Seite - siehe pruef-css-klassen. -->
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/auskunft.js?v=202609250404" defer></script>
<script src="assets/js/bewerben.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/auskunft.js?v=202609250435" defer></script>
<script src="assets/js/bewerben.js?v=202609250435" defer></script>
</body>
</html>
+18 -18
View File
@@ -7,16 +7,16 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein - siehe treff-regeln.html. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -80,16 +80,16 @@
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/auskunft.js?v=202609250404" defer></script>
<script src="assets/js/bewerbungen.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/auskunft.js?v=202609250435" defer></script>
<script src="assets/js/bewerbungen.js?v=202609250435" defer></script>
</body>
</html>
+17 -17
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/calls.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/calls.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -89,15 +89,15 @@
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/ki.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/calls.js?v=202609250404" defer></script>
<script src="assets/js/ki.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/calls.js?v=202609250435" defer></script>
</body>
</html>
+76 -23
View File
@@ -12,26 +12,26 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<!-- aufgaben.css bringt die Dialog- und Formularstile mit (.dialog,
.neu__zeile, .dialog__knoepfe). Sie stehen dort seit dem
Aufgabenbrett; sie hierher zu kopieren hiesse, sie an zwei Stellen
zu pflegen. Dieselbe Lösung nutzen kalender.html und content.html.
Gemeldet von pruef-css-klassen.mjs, bevor jemand einen ungestylten
Dialog zu sehen bekam. -->
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/chat.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/chat.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -102,11 +102,23 @@
fuer dieselbe Sache. -->
<dialog class="nachfrage chat-kachelwahl" id="kachel-wahl">
<h2 class="nachfrage__titel">Deine Kachel</h2>
<!-- DER SATZ WAR SEIT HEUTE FALSCH (25.09.2026).
„Alle Töne leuchten gleich stark" stimmte, solange es
360 Farben auf einer Leuchtdichte gab. Mit den sieben
Helligkeiten stimmt es nicht mehr – und ein Satz, der
etwas verspricht, was man daneben anders sieht, ist
schlimmer als keiner.
WAS WEITERHIN STIMMT UND WICHTIGER IST: Jede der 2520
Farben bleibt als Name auf der Blase lesbar. Das ist
nachgerechnet (pruef-chat-neu), und genau das sagt der
neue Satz. -->
<p class="nachfrage__text">
So sehen deine Nachrichten für alle anderen aus. Dreh am Ring,
bis dir die Farbe gefällt – in der Mitte siehst du sofort, wie
es aussieht. Alle Töne leuchten gleich stark, damit die Schrift
überall gleich gut lesbar bleibt.
So sieht dein Name an deinen Nachrichten aus. Dreh am Ring
für den Farbton, tipp unten auf heller oder dunkler – in der
Mitte siehst du sofort, wie es aussieht. Jede der 2520
Farben bleibt lesbar, egal welche du nimmst.
</p>
<!-- ================================================================
@@ -146,6 +158,36 @@
</div>
</div>
<!-- ================================================================
HELLER UND DUNKLER (25.09.2026)
Filipe: „dieser kreis muss viel perfekter sein. ich will
dass die leute auch heller und dunkler aussuchen koennen.
perfektionier das bitte viel krasser. viel
profissioneller. so dass die leute viel krassere
moeglichkeiten haben."
EIN ZWEITER SCHIEBER UND KEIN ZWEITER KREIS: Farbton und
Helligkeit sind zwei Achsen derselben Farbe. Ein Rad für
die eine, eine Leiste für die andere – so erkennt man auf
einen Blick, was rund läuft und was von dunkel nach hell.
`role="slider"` wie der Ring darüber: Es ist ein Wert mit
sieben Stufen, keine Auswahl aus sieben Dingen. Wer mit
der Tastatur kommt, benutzt dieselben Pfeiltasten.
DIE STUFEN BAUT DAS SKRIPT, nicht diese Datei: Wie viele
es gibt und wie stark sie mischen, steht in
chat-kreis-stufen.js und kommt vom Server. Feste Felder
hier wären eine zweite Wahrheit, die bei der nächsten
Messung falsch wird. -->
<div class="kachelhell" id="kachelhell">
<span class="kachelhell__schild" id="kachelhell-schild">Helligkeit</span>
<div class="kachelhell__leiter" id="kachelhell-leiter" role="slider"
tabindex="0" aria-labelledby="kachelhell-schild"
aria-valuemin="1" aria-valuemax="7" aria-valuenow="4"></div>
</div>
<!-- Was auf dem Ring nicht vorkommt: Grau hat keinen Farbton,
und Babyblau ist die eine helle Kachel mit eigener,
dunkler Schrift. Beide gehören weiter dazu. -->
@@ -697,25 +739,36 @@
</form>
</dialog>
<script src="assets/js/bereiche.js?v=202609250404"></script>
<script src="assets/js/bereiche.js?v=202609250435"></script>
<!-- TEXTFORM VOR ALLEM ANDEREN (21.09.2026): chat.js und bereich.js
fragen beim Zeichnen nach `window.Textform`. Kaeme sie spaeter,
waere die erste gezeichnete Nachricht ohne Gestaltung -- und das
faellt nur dem auf, der genau hinsieht. KEIN `defer`, damit sie
wirklich vor den anderen dasteht. -->
<script src="assets/js/textform.js?v=202609250404"></script>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/hochladen.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404"></script>
<script src="assets/js/glocke.js?v=202609250404"></script>
<script src="assets/js/textform.js?v=202609250435"></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/hochladen.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435"></script>
<script src="assets/js/glocke.js?v=202609250435"></script>
<!-- ANRUF VOR CHAT (18.09.2026): anruf.js stellt `window.anrufStarten`
bereit, und chat.js baut die Knoepfe nur, wenn es das gibt.
Andersherum waere die Reihenfolge eine stille Abhaengigkeit --
die Knoepfe fehlten, und niemand wuesste warum. -->
<script src="assets/js/anruf.js?v=202609250404"></script>
<script src="assets/js/chat.js?v=202609250404"></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/anruf.js?v=202609250435"></script>
<!-- DIE BILDSCHAU (25.09.2026). Eigene Datei, weil sie nichts vom
Chat weiss: Sie bekommt einen Weg und einen Namen und zeigt ein
Bild. Jede andere Seite mit Fotos kann sie ebenso benutzen, ohne
dass etwas doppelt gebaut wird.
VOR chat.js und ohne `defer`: chat.js haengt den Klick an und
fragt dabei `window.Bildschau`. Kaeme die Schau spaeter, waere
sie beim ersten Foto noch nicht da -- und der erste Klick ginge
wie frueher in den Tab. Ein Fehler, der nur beim ERSTEN Mal
auftritt, ist der, den man nie nachstellen kann. -->
<script src="assets/js/bildschau.js?v=202609250435"></script>
<script src="assets/js/chat.js?v=202609250435"></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
</body>
</html>
+17 -17
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/content.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/content.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -179,15 +179,15 @@
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/checkliste.js?v=202609250404" defer></script>
<script src="assets/js/content.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/checkliste.js?v=202609250435" defer></script>
<script src="assets/js/content.js?v=202609250435" defer></script>
</body>
</html>
+6 -6
View File
@@ -36,15 +36,15 @@
<link rel="preload" as="image" href="assets/img/buehne/crew-gate-hoch-580.webp"
type="image/webp" media="(max-width: 899px)" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/crew-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/crew-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/crew-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/crew-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<!-- Diese Wand steht NUR auf der Adresse von Team Dogi (ueberall sonst
404, siehe crewWeiche). Sie darf das Haus deshalb direkt nennen
statt ueber den Platzhalter haus.css zu gehen -- und sie MUSS es:
Eine Zugangswand, die sich erst nach dem Umbiegen faerbt, waere
die eine Seite, auf der man das Umfaerben sieht. -->
<link rel="stylesheet" href="assets/css/crew-haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/crew-haus.css?v=202609250435" />
</head>
<body class="gate gate--crew">
@@ -459,7 +459,7 @@
<script src="assets/js/gate.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/gate.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
</body>
</html>
+4 -4
View File
@@ -23,25 +23,25 @@
},
"icons": [
{
"src": "/assets/img/app-symbole/crew-192.png?v=202609250404",
"src": "/assets/img/app-symbole/crew-192.png?v=202609250435",
"sizes": "192x192",
"type": "image/png",
"purpose": "any"
},
{
"src": "/assets/img/app-symbole/crew-512.png?v=202609250404",
"src": "/assets/img/app-symbole/crew-512.png?v=202609250435",
"sizes": "512x512",
"type": "image/png",
"purpose": "any"
},
{
"src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609250404",
"src": "/assets/img/app-symbole/crew-192-maskable.png?v=202609250435",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609250404",
"src": "/assets/img/app-symbole/crew-512-maskable.png?v=202609250435",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
+17 -17
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/dateien.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/dateien.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -108,15 +108,15 @@
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/hochladen.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/hochladen.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/dateien.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/dateien.js?v=202609250435" defer></script>
</body>
</html>
+18 -18
View File
@@ -7,14 +7,14 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -297,20 +297,20 @@
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/holen.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/holen.js?v=202609250435" defer></script>
<!-- VOR entwicklung.js: Die Seite richtet den Katalog beim Start ein,
also muss es ihn zu dem Zeitpunkt geben. Mit "defer" laufen beide
in Dokumentreihenfolge. -->
<script src="assets/js/vorlagenbrett.js?v=202609250404" defer></script>
<script src="assets/js/entwicklung.js?v=202609250404" defer></script>
<script src="assets/js/vorlagenbrett.js?v=202609250435" defer></script>
<script src="assets/js/entwicklung.js?v=202609250435" defer></script>
</body>
</html>
+15 -15
View File
@@ -7,13 +7,13 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/hilfe.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/hilfe.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -146,14 +146,14 @@
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/hilfe.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/hilfe.js?v=202609250435" defer></script>
</body>
</html>
+5 -5
View File
@@ -30,9 +30,9 @@
<link rel="preload" as="image" href="assets/img/buehne/gate-hoch-580.webp"
type="image/webp" media="(max-width: 899px)" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
</head>
<body class="gate">
@@ -427,7 +427,7 @@
<script src="assets/js/gate.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/gate.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
</body>
</html>
+17 -17
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/kalender.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/kalender.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -383,15 +383,15 @@
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/kalender.js?v=202609250404" defer></script>
<script src="assets/js/kalender-abo.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/kalender.js?v=202609250435" defer></script>
<script src="assets/js/kalender-abo.js?v=202609250435" defer></script>
</body>
</html>
+16 -16
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/leistung.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/leistung.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -444,13 +444,13 @@
</form>
</dialog>
<script src="assets/js/meldung.js?v=202609250404"></script>
<script src="assets/js/nachfrage.js?v=202609250404"></script>
<script src="assets/js/wahl.js?v=202609250404"></script>
<script src="assets/js/bereiche.js?v=202609250404"></script>
<script src="assets/js/kopf.js?v=202609250404"></script>
<script src="assets/js/glocke.js?v=202609250404"></script>
<script src="assets/js/leistung.js?v=202609250404"></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435"></script>
<script src="assets/js/nachfrage.js?v=202609250435"></script>
<script src="assets/js/wahl.js?v=202609250435"></script>
<script src="assets/js/bereiche.js?v=202609250435"></script>
<script src="assets/js/kopf.js?v=202609250435"></script>
<script src="assets/js/glocke.js?v=202609250435"></script>
<script src="assets/js/leistung.js?v=202609250435"></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
</body>
</html>
+16 -16
View File
@@ -12,13 +12,13 @@
vergessen wird. -->
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/material.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/material.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start" data-ton="42" data-buehne="studio">
@@ -138,14 +138,14 @@
<p class="m-laedt" id="laedt">Einen Moment …</p>
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/hochladen.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/material.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/hochladen.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/material.js?v=202609250435" defer></script>
</body>
</html>
+16 -16
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/personen.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/personen.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -453,14 +453,14 @@
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/personen.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/personen.js?v=202609250435" defer></script>
</body>
</html>
+18 -18
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -214,16 +214,16 @@
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/hochladen.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/hochladen.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/steckbrief.js?v=202609250404" defer></script>
<script src="assets/js/profil.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/steckbrief.js?v=202609250435" defer></script>
<script src="assets/js/profil.js?v=202609250435" defer></script>
</body>
</html>
+17 -17
View File
@@ -7,14 +7,14 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -134,14 +134,14 @@
Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen
Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen,
die seit dem 07.09. jede Seite danach absucht. -->
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/holen.js?v=202609250404" defer></script>
<script src="assets/js/rechte.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/holen.js?v=202609250435" defer></script>
<script src="assets/js/rechte.js?v=202609250435" defer></script>
</body>
</html>
+18 -18
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/report.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/report.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -106,17 +106,17 @@
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/ki.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/holen.js?v=202609250404" defer></script>
<script src="assets/js/report.js?v=202609250404" defer></script>
<script src="assets/js/ki.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/holen.js?v=202609250435" defer></script>
<script src="assets/js/report.js?v=202609250435" defer></script>
</body>
</html>
+16 -16
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/scouting.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/scouting.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -173,14 +173,14 @@
</div>
</div>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/scouting.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/scouting.js?v=202609250435" defer></script>
</body>
</html>
+16 -16
View File
@@ -12,21 +12,21 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<!-- Nur die Startseite: Begrüßungskachel, Uhr, Glockenmulde. Siehe
den Hinweis in start.css -- dort stand es bis zum 07.09.2026. -->
<link rel="stylesheet" href="assets/css/heim.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/heim.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -700,16 +700,16 @@
</p>
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/live.js?v=202609250404" defer></script>
<script src="assets/js/start.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/live.js?v=202609250435" defer></script>
<script src="assets/js/start.js?v=202609250435" defer></script>
</body>
</html>
+17 -17
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/startcheck.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -85,16 +85,16 @@
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/ki.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/startcheck.js?v=202609250404" defer></script>
<script src="assets/js/ki.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/startcheck.js?v=202609250435" defer></script>
</body>
</html>
+18 -18
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/profil.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -150,16 +150,16 @@
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/hochladen.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/hochladen.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/auskunft.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/steckbrief.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/auskunft.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/steckbrief.js?v=202609250435" defer></script>
</body>
</html>
+14 -14
View File
@@ -7,13 +7,13 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/support.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/support.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -123,16 +123,16 @@
(reading 'LEITUNG')" ab -- gemessen am 24.09.2026, als diese
Zeile beim Anlegen der Seite fehlte. Die Kopfleiste kam
trotzdem, deshalb sah man es nur in der Browserkonsole. -->
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<!-- wahl.js gehoert zu kopf.js: Der Sicht-Umschalter in der
Kopfleiste baut daraus seine Liste. pruef-css-klassen setzt das
seit dem 07.09.2026 durch -- damals fehlte es auf chat.html und
uebersicht.html, und heute hier. -->
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/support.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/support.js?v=202609250435" defer></script>
</body>
</html>
+18 -18
View File
@@ -7,18 +7,18 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609250435" />
<!-- Wegen des Kastens „Anfragen“ ueber der Liste. Eine eigene Kopie
der Regel hier waere die zweite Stelle, an der dieselbe Sache
anders aussieht. -->
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/bewerbung.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -111,15 +111,15 @@
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/holen.js?v=202609250404" defer></script>
<script src="assets/js/talente.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/holen.js?v=202609250435" defer></script>
<script src="assets/js/talente.js?v=202609250435" defer></script>
</body>
</html>
+16 -16
View File
@@ -7,20 +7,20 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/team.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/team.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -110,15 +110,15 @@
</main>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/holen.js?v=202609250404" defer></script>
<script src="assets/js/team.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/holen.js?v=202609250435" defer></script>
<script src="assets/js/team.js?v=202609250435" defer></script>
</body>
</html>
+17 -17
View File
@@ -7,20 +7,20 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/team.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/team.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<!-- `data-buehne` steht hier fest und nicht im Skript: Die Kachel zu
@@ -84,15 +84,15 @@
Kaputt ist dabei nichts -- er funktioniert. Genau deshalb faellt
es niemandem auf, und deshalb prueft pruef-css-klassen die
ABHAENGIGKEIT statt der Optik. Hier hat sie angeschlagen. -->
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/holen.js?v=202609250404" defer></script>
<script src="assets/js/teamlage.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/holen.js?v=202609250435" defer></script>
<script src="assets/js/teamlage.js?v=202609250435" defer></script>
</body>
</html>
+15 -15
View File
@@ -7,13 +7,13 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/bereich.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -112,15 +112,15 @@
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/teilen.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/teilen.js?v=202609250435" defer></script>
</body>
</html>
+16 -16
View File
@@ -7,14 +7,14 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -126,14 +126,14 @@
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/treff-moderation.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/treff-moderation.js?v=202609250435" defer></script>
</body>
</html>
+16 -16
View File
@@ -7,18 +7,18 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/treff.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein. Auf der Adresse des
Rudels biegt der Server genau diesen Dateinamen auf crew-haus.css
um, und die Seite kommt schon beim ERSTEN Abruf in Lila und
Babyblau an -- ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -248,14 +248,14 @@
Beim ersten Anlauf fehlte die Zeile auf genau diesen beiden neuen
Seiten. Gefunden hat das nicht das Auge, sondern pruef-css-klassen,
die seit dem 07.09. jede Seite danach absucht. -->
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/auskunft.js?v=202609250404" defer></script>
<script src="assets/js/treff-regeln.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/auskunft.js?v=202609250435" defer></script>
<script src="assets/js/treff-regeln.js?v=202609250435" defer></script>
</body>
</html>
+16 -16
View File
@@ -12,22 +12,22 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<!-- Formular- und Dialogstile: seit dem 07.09.2026 steht hier der
Dialog "Creator anlegen". -->
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/uebersicht.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -149,16 +149,16 @@
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/uebersicht.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/uebersicht.js?v=202609250435" defer></script>
</body>
</html>
+15 -15
View File
@@ -7,13 +7,13 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/unsere-seiten.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/unsere-seiten.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -335,14 +335,14 @@
</main>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/live.js?v=202609250404" defer></script>
<script src="assets/js/unsere-seiten.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/live.js?v=202609250435" defer></script>
<script src="assets/js/unsere-seiten.js?v=202609250435" defer></script>
</body>
</html>
+16 -16
View File
@@ -7,13 +7,13 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/unterstuetzen.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/unterstuetzen.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -106,17 +106,17 @@
<!-- bereiche.js VOR kopf.js: Dort steht `window.Bereiche`, und kopf.js
liest daraus die Leitungsrollen. Ohne sie stürzt jede Seite mit
„Cannot read properties of undefined (reading 'LEITUNG')" ab. -->
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/holen.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/holen.js?v=202609250435" defer></script>
<!-- Die Satz-Tafel. Ohne sie stand auf dieser Seite das Maschinenwort
des Servers (z.B. "nicht_gefunden") statt eines Satzes -- gemeldet
von pruef-meldungen, nicht beim Ansehen. -->
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/unterstuetzen.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/unterstuetzen.js?v=202609250435" defer></script>
</body>
</html>
+16 -16
View File
@@ -7,15 +7,15 @@
<meta name="robots" content="noindex, nofollow" />
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/werdegang.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/entwicklung.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/werdegang.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -144,14 +144,14 @@
</main>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/werdegang.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/werdegang.js?v=202609250435" defer></script>
</body>
</html>
+15 -15
View File
@@ -12,13 +12,13 @@
vergessen wird. -->
<link rel="manifest" href="/workspace/app.webmanifest" />
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/willkommen.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/willkommen.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<!-- KOERPERKLASSE "start", NICHT "gate" (berichtigt 21.09.2026).
`body.gate` ist die Anmeldewand: `display:flex; align-items:center`,
@@ -75,13 +75,13 @@
<p class="fehler" id="fehler" hidden></p>
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/willkommen.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/willkommen.js?v=202609250435" defer></script>
</body>
</html>
+17 -17
View File
@@ -12,20 +12,20 @@
Ton wie die Kopfleiste darunter (#06090f), damit Leiste und Seite
eine Flaeche sind statt zweier. -->
<meta name="theme-color" content="#06090f" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250404" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250404" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/wissen.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250404" />
<link rel="icon" type="image/png" href="/assets/img/app-symbole/workspace-32.png?v=202609250435" />
<link rel="apple-touch-icon" href="/assets/img/app-symbole/workspace-180.png?v=202609250435" />
<link rel="stylesheet" href="assets/css/gate.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/start.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/aufgaben.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/wissen.css?v=202609250435" />
<link rel="stylesheet" href="assets/css/module.css?v=202609250435" />
<!-- haus.css MUSS die letzte Stilvorlage sein (10.09.2026).
Auf der Agenturadresse ist sie leer -- das Haus hier IST der
Grundzustand. Auf der Adresse von Team Dogi biegt der Server
genau diesen Dateinamen auf crew-haus.css um, und die Seite
kommt schon beim ERSTEN Abruf in Lila und Babyblau an --
ohne Umfaerben im Browser, ohne Flackern. -->
<link rel="stylesheet" href="assets/css/haus.css?v=202609250404" />
<link rel="stylesheet" href="assets/css/haus.css?v=202609250435" />
</head>
<body class="start">
@@ -190,15 +190,15 @@
</main>
<script src="assets/js/meldung.js?v=202609250404" defer></script>
<script src="assets/js/hochladen.js?v=202609250404" defer></script>
<script src="assets/js/nachfrage.js?v=202609250404" defer></script>
<script src="assets/js/meldung.js?v=202609250435" defer></script>
<script src="assets/js/hochladen.js?v=202609250435" defer></script>
<script src="assets/js/nachfrage.js?v=202609250435" defer></script>
<script src="assets/js/wahl.js?v=202609250404" defer></script>
<script src="assets/js/bereiche.js?v=202609250404" defer></script>
<script src="assets/js/installieren.js?v=202609250404" defer></script>
<script src="assets/js/kopf.js?v=202609250404" defer></script>
<script src="assets/js/glocke.js?v=202609250404" defer></script>
<script src="assets/js/wissen.js?v=202609250404" defer></script>
<script src="assets/js/wahl.js?v=202609250435" defer></script>
<script src="assets/js/bereiche.js?v=202609250435" defer></script>
<script src="assets/js/installieren.js?v=202609250435" defer></script>
<script src="assets/js/kopf.js?v=202609250435" defer></script>
<script src="assets/js/glocke.js?v=202609250435" defer></script>
<script src="assets/js/wissen.js?v=202609250435" defer></script>
</body>
</html>